คำถามที่พบบ่อยเกี่ย...
 

[ปักหมุด] คำถามที่พบบ่อยเกี่ยวกับพื้นฐานของ AI, Deep Learning และ Keras (อัพเดต 2020)  

  RSS
The Neural Engineer
(@neural-engineer)
Boltzmann Machine

สวัสดีครับทุกคน สำหรับเพื่อนๆ ที่เพิ่งเริ่มต้นศึกษา AI และ Deep Learning อาจจะมีข้อสงสัยต่างๆ มากมายในหลายๆ ประเด็น ในบทความนี้เราจะพยายามสรุปคำถาม-คำตอบความเข้าใจขั้นพื้นฐาน เพื่อให้เพื่อนๆ ได้ความกระจ่างและเริ่มต้นศึกษาได้อย่างมั่นใจครับ

บทความนี้เป็นบทความเดียวกันกับหน้า https://thaikeras.com/2018/guide-tour-series/ เพียงแต่นำมาโพสต์ซ้ำในบอร์ดเพื่อให้ Google Search index ได้ง่ายขึ้น และเผื่อเพื่อนๆ ท่านใดมีคำถามเพิ่มเติมก็ถามได้เลยครับ

--------------------------------------------

AI, Machine Learning และ Deep Learning คืออะไร เกี่ยวข้องกันอย่างไร ต่างกันอย่างไร?
เกี่ยวข้องกันอย่างมากจนเกือบจะเป็นเรื่องเดียวกัน สามารถอ่านคำตอบอย่างละเอียดได้ที่บทความนี้ครับ
 
จะเริ่มต้นพัฒนาระบบ AI ยากไหม? ต้องเตรียมตัวอะไรบ้าง ต้องรู้อะไรบ้าง? การเตรียมตัวประกอบไปด้วย 4 เรื่องหลักๆ คือ ความรู้พื้นฐาน, อุปกรณ์ hardware, ส่วน programming platforms และ ข้อมูลที่จะนำมาสอนระบบ AI โดยคำอธิบายอย่างละเอียดอยู่ในบทความนี้ครับ

เมื่อไรและเหตุการณ์ใดที่ทำให้ Deep Learning และ AI พลิกโฉมจากงานวิจัยธรรมดาในมหาวิทยาลัย กลายเป็นกระแสระดับโลก และ Deep Learning นั้นแก้ปัญหาอะไรได้บ้าง?
อ่านได้ในบทความนี้ครับ

อนาคตของ AI / Deep Learning จะมีทิศทางอย่างไร
ทิศทางอนาคตของ Deep Learning นั้นเราสามารถติดตามได้จากงานวิจัยของแล็บชั้นนำทั่วโลกในบทความนี้ครับ

วงการ Machine Learning ก่อนที่จะวิวัฒนาการมาเป็น Deep Learning เป็นอย่างไร?

จริงๆ แนวคิดเรื่อง neuron หรือโมเดลที่จำลองสมองมนุษย์บน computer ซึ่งเป็นแก่นของ Deep Learning นั้นมีมาตั้งแต่ยุคต้นๆ ของ AI ตั้งแต่สมัย 1960 และแนวคิดหลักๆ ในการ optimize Neural Networks (Backpropagation) ก็ตีพิมพ์ในช่วง 1980

อย่างไรก็ดี ช่วงระหว่างปี 1960-2000 แนวคิด Neural Networks ยังไม่โดดเด่นเหนือแนวคิดอื่น ทำให้แนวคิดอื่นที่เรียบง่ายกว่า เช่น ต้นไม้ตัดสินใจ (Decision Tree) หรือ มีคณิตศาสตร์ที่รองรับมากกว่า เช่น Support Vector Machine เป็นที่นิยมมากกว่า โดยประสิทธิภาพความแม่นยำนั้นไม่ต่างจาก (Shallow) Neural Networks มาก

แต่เมื่อนักวิจัยสามารถ implement Deep Learning บน GPU ได้สำเร็จในปี 2012 ก็เป็นที่ประจักษ์ชัดเจนว่า Deep Neural Networks นั้นมีศักยภาพสูงกว่าโมเดลอื่นๆ โดยเฉพาะในกรณีที่ input ซับซ้อนมากๆ เช่น รูปภาพ เสียง ภาษา ฯลฯ เพื่อนๆ ดูช่วงระหว่างรอยต่อในปี 2012 เพิ่มเติมได้ในบทความนี้ครับ

 
This topic was modified 6 months ago by The Neural Engineer
อ้างอิง
Posted : 01/05/2020 8:41 am
The Neural Engineer
(@neural-engineer)
Boltzmann Machine
ความรู้ที่ machine เรียนรู้ได้จากเทคนิก machine learning เชื่อถือได้มากน้อยแค่ไหน?

machine พยายามเรียนรู้ “ความรู้” จาก “ข้อมูล” ซึ่งความรู้ที่ได้อาจไม่ถูกต้อง 100% ขออุปมาอุปมัยเสมือน เราพาเด็กเล็กไปเที่ยวสวยสาธารณะ และเห็นต้นไม้นับร้อยต้น

ภาพต้นไม้นับร้อยต้นนี้ คือ “ข้อมูล” ที่ให้เด็กสร้าง “ความรู้” เกี่ยวกับต้นไม้ (machine ก็เช่นเดียวกัน)

  • เด็กบางคนอาจได้ “ความรู้” ว่า “ต้นไม้ทุกต้นมีใบสีเขียว”
  • เด็กบางคนอาจได้ “ความรู้” ว่า “ต้นไม้ส่วนใหญ่มีใบสีเขียว แต่นานๆ ทีบางต้นก็มีใบสีเหลืองได้”
  • เด็กบางคนอาจได้ “ความรู้” ว่า “ต้นไม้ A มีใบสีเขียวดอกสีชมพู ต้นไม้ B มีใบสีเขียว ดอกสีขาว ฯลฯ”

ซึ่งความรู้เหล่านี้อาจไม่ถูกต้อง 100% (ทั้งนี้เพราะข้อมูลที่เห็นเพียงต้นไม้ในสวนสาธารณะเท่านั้น) โดยทั่วไป คุณภาพของความรู้ขึ้นอยู่กับ

  1. ปริมาณข้อมูลที่ให้ machine ได้เรียนรู้ (อาจเทียบได้กับความขยัน ศึกษามากก็ควรจะรู้มาก)
  2. การออกแบบ learning pipeline ของ data scientists / AI engineers อาจเทียบได้กับความสามารถของผู้สอน ถ้าผู้สอนเก่งมาก เด็กก็จะเรียนรู้ได้ดี ในทางตรงกันข้ามถ้าผู้สอนออกแบบไม่ดี เด็กจะเก่งแต่ท่องจำและความรู้ที่ได้จะไม่สามารถใช้งานได้จริง ซึ่งเป็นเรื่องที่สำคัญมากและได้อธิบายอย่างละเอียดที่บทความนี้ครับ

กล่าวโดยสรุป การออกแบบ learning pipeline ครอบคลุมตั้งแต่เรื่อง training / validation split (การแบ่งกลุ่มข้อมูลเพื่อสอน และทดสอบ ) , metric specification (การออกแบบการวัดผล), การออกแบบโมเดลจากโจทย์ที่มีประสิทธิภาพ ซึ่งเรื่องเหล่านี้ต้องอาศัยประสบการณ์อย่างมากและมักไม่มีในหนังสือเรียน ซึ่งพวกเราจะเรียนรู้ได้จากการแก้ไขปัญหาจริงและจาก top scientists ระดับโลกบน Kaggle ครับ

ตอบกลับอ้างอิง
Posted : 01/05/2020 8:47 am
The Neural Engineer
(@neural-engineer)
Boltzmann Machine
อยากพัฒนาระบบ AI ด้วย Deep Learning, เราจำเป็นต้องเก่งคณิตศาสตร์ไหม

งานด้านโปรแกรมมิ่งทั่วไปผ่าน Keras และการใช้งาน Open Source อื่นๆ อาจไม่ต้องการคณิตศาสตร์มากเท่าใดนักขอเพียงเพื่อนๆ มีความเข้าใจในหลักการพื้นฐานของสถาปัตยกรรม Neural Networks ประเภทต่างๆ ว่าข้อมูลที่ต้องใช้สอนเป็นอย่างไร และผลลัพธ์จาก Networks เหล่านั้นให้อะไรบ้าง

อย่างไรก็ดี สำหรับผู้ที่สนใจจะพัฒนาตัวเองไปเป็นระดับ AI Master ซึ่งต้องมีการดัดแปลงสถาปัตยกรรม Neural Networks ให้เหมาะสมและมีประสิทธิภาพสูงสำหรับงานเฉพาะด้านนั้น ควรต้องเข้าใจคณิตศาสตร์พื้นฐานบางอย่างเป็นอย่างดีเลยครับ

โดยคณิตศาสตร์พื้นฐานที่ควรรู้นั้น Andrew Ng ผู้ซึ่งเป็นปรมาจารย์ท่านนึงในวงการ ได้ให้คำตอบเรื่องนี้ไว้ในกระทู้นี้ครับ

ซึ่งสรุปได้ย่อๆ ว่าเพื่อให้เข้าใจ Deep Learning อย่างลึกซึ้งและประยุกต์ใช้งานได้อย่างถูกต้อง เพื่อนๆ ก็ต้องรู้คณิตศาสตร์บ้างแต่เป็นเพียงคณิตศาสตร์พื้นฐานระดับปริญญาตรีเท่านั้น ไม่จำเป็นต้องเป็นคณิตศาสตร์ขั้นสูง หรือต้องจบสายคณิตศาสตร์มาแต่อย่างใดครับ

 

ซึ่ง Andrew แนะนำให้แม่น 3 วิชานี้เป็นหลักครับ : Linear Algebra (ความรู้เกี่ยวกับเมตริกซ์และ Linear Space), Multivariable Calculus (หาอนุพันธ์และกฎลูกโซ่) และ Probability & Statistics ซึ่งทั้งหมดนี้เพื่อนๆ ที่ีไม่มั่นใจสามารถเรียนและทบทวนจากอาจารย์ที่ขึ้นชื่อว่าสอนได้ดีมากที่สุดคนนึงของโลกที่นี้ครับ

ตอบกลับอ้างอิง
Posted : 01/05/2020 8:48 am
The Neural Engineer
(@neural-engineer)
Boltzmann Machine
Data Science, Big Data เกี่ยวข้องหรือแตกต่างกันกับ AI อย่างไร

Data Science และ Big Data อาจพูดได้ว่าเป็นแขนงที่เกือบจะเป็นเรื่องเดียวกับ Machine Learning หรือการวิเคราะห์ข้อมูลด้วยสถิติทั้งหลาย (อาจไม่จำเป็นต้องจำต้องเป็น Deep Learning) เพียงแต่ว่าในศาสตร์ของ Data Science และ Big Data นั้นจะเน้นเรื่องการประมวลผล จัดเก็บ และจัดเตรียมข้อมูลที่มีปริมาณมหาศาลเป็นพิเศษ ในขณะที่ฝั่ง Machine Learning มักจะสมมติว่าข้อมูลสอนถูกจัดเตรียมมาให้แล้วโดยอัตโนมัติ นอกจากนี้งานด้าน Big Data อาจยุ่งเกี่ยวกับการเซ็ตระบบเพื่อใช้เครื่องคอมพิวเตอร์จำนวนหลายเครื่องร่วมกับคำนวณข้อมูลปริมาณมหาศาลเหล่านี้

อนึ่ง เพื่อนๆ สามารถลองเรียนรู้ Data Science Project แบบปฏิบัติจริงได้ทีนี่ครับ

ตอบกลับอ้างอิง
Posted : 01/05/2020 8:48 am
The Neural Engineer
(@neural-engineer)
Boltzmann Machine
หุ่นยนต์กับ AI เหมือนหรือต่างกันอย่างไร
ถ้าเปรียบเทียบหุ่นยนต์เป็นมนุษย์แล้วนั้น AI ก็เสมือนเป็นสมองของหุ่นยนต์นั่นเอง ที่ผ่านมานั้นเราได้ยินคำว่า AI มากกว่าคำว่า “หุ่นยนต์” เป็นเพราะว่าเทคโนโลยีส่วนอื่นๆ ยังไม่พัฒนามากเหมือน AI เช่น การทำให้หุ่นยนต์เคลื่อนไหว เดิน ลุกนั่ง จับของ ได้เหมือนหรือดีกว่าคน ยังทำได้ไม่ดีนัก

ในอนาคต หุ่นยนต์หรือ AI จะมาแย่งงานมนุษย์หรือไม่?
เรื่องของเทคโนโลยี ที่มาทำงานแทนมนุษย์เกิดขึ้นมานานแล้ว ตั้งแต่สมัยยุคกำเนิดเครื่องจักรเมื่อ 2-300 ปีก่อน ที่เครื่องจักรในโรงงานมาแย่งงานมนุษย์ไป เมื่อตอนนั้นก็มีความกลัวเช่นเดียวกับวันนี้ อย่างไรก็ดีเมื่อเทคโนโลยีเพิ่ม เกิดสิ่งใหม่ๆ เพิ่ม ก็ทำให้มนุษย์สามารถทำงานในสาขาที่ขาดแคลนและต้องการทักษะมากขึ้นเช่น ปัจจุบันเรามีแพทย์ วิศวกร สถาปนิก หรือนักวิจัยมากกว่าสมัยก่อนมากและทำให้สังคมของเราเจริญขึ้นมากมาย นอกจากนี้เทคโนโลยียังก็ให้เกิดงานหรืออาชีพใหม่ๆ ขึ้นมากมายที่ไม่มีในสมัยก่อน อาทิเช่น นักออกแบบเครื่องจักร นักออกแบบเว็บไซต์ นักวิเคราะห์ข้อมูลเว็บไซต์ พ่อค้าแม่ค้าออนไลน์ เป็นต้น ในยุค AI ก็เช่นเดียวกันยังมีอะไรใหม่ๆ ให้เราทำอีกเยอะ ซึ่งต้องอาศัยจินตนาการและพลังของคนรุ่นใหม่อย่างพวกเราครับ
ตอบกลับอ้างอิง
Posted : 01/05/2020 8:49 am
The Neural Engineer
(@neural-engineer)
Boltzmann Machine
โมเดลมีเยอะไปหมดสับสน VGG, ResNet, Inception, EfficientNet, UNet, RCNN, LSTM, GRU, Transformers, BERT, RoBerta, RoBerta-XLM, T5, BART, etc.

ในการจะเข้าใจลึกซึ้ง ต้องเรียนที่คอร์สที่ดีที่สุดในโลก (เรียนได้ฟรี) บน coursera จาก Andrew Ng เลยครับ https://www.coursera.org/specializations/deep-learning

ถ้าจำเป็นต้องรีบใช้แบบไม่มีเวลาเรียน ให้ทำความเข้าใจแบบหลักวิศวกรรม นั่นคือหลัก input-output

หลักการคือต้องเข้าใจว่า input และ output ของโมเดลต่างๆ ครับ หลายๆ โมเดลนั้นมี input/output แบบเดียวกัน ใช้แทนกันได้ ก็อาจจะสนใจเฉพาะโมเดลที่ประสิทธิภาพสูงสุดในกลุ่มก็พอ เช่น สนใจ EfficientNet โดยไม่ต้องสนใจ VGG, ResNet, Inception เป็นต้น ทั้งนี้บางโมเดลมีขนาดใหญ่ อาจต้องใช้ GPU ที่มี Memory มากพอ ก็ต้องเลือกขนาดของโมเดลให้เหมาะสมด้วยครับ

ตัวอย่าง

Input : ข้อมูลแบบตาราง excel , Output : ตัวเลข -- ใช้ multi-layers neural networks แบบพื้นฐานที่สุด หรือใช้เทคนิก Machine Learning อื่นๆ ที่ไม่ใช่ Deep Learning เช่น Decision Tree, SVM, Boosting

Input : รูปภาพ , Output : ตัวเลข หรือ รหัสจำแนกประเภท -- VGG, ResNet, Inception, EfficientNet

Input : รูปภาพ , Output : รูปภาพที่แสดงจุดสำคัญ (Mask) -- UNet, Mask-RCNN, PSP-Net

Input : ข้อมูลที่เป็นลำดับ (เช่น time series, texts หรือ เสียง) , Output : ตัวเลข หรือ รหัสจำแนกประเภท -- LSTM, GRU, Transformers, BERT, RoBerta

Input : ข้อมูลที่เป็นลำดับ (เช่น time series, texts หรือ เสียง) , Output : ข้อมูลที่เป็นลำดับ (เหมือน input) เช่น งานแปลภาษา หรือย่อความ หรือเปลี่ยนเสียง-- Encoder-Decoder เช่น Bart, T5

นอกจากนี้เรายังสามารถนำโมเดลข้างต้นมาเรียงต่อกันเองได้ตามความคิดสร้างสรรค์ของเราคล้ายการเล่น LEGO เช่น ถ้า input เราเป็น video ซึ่งเป็นทั้งภาพและลำดับ เราก็สามารถนำ EfficientNet มารวมกับ LSTM ได้เป็นต้น

ตอบกลับอ้างอิง
Posted : 01/05/2020 8:49 am
The Neural Engineer
(@neural-engineer)
Boltzmann Machine
ต้นกำเนิดของ AI เป็นอย่างไร นับจนถึงวันนี้เรามาไกลแล้วแค่ไหน?
ดูวิดิโอ "ประวัติย่อของ AI" (ภาษาไทย) นับแต่ยุค "ความฝันอันแรงกล้า" ของ อลัน ทัวริง มาร์วิน มินสกี้ ยุคตกต่ำฤดูหนาวของ AI จนถึงยุค Deep Learning ปัจจุบันอย่างย่อๆ ที่นี่ครับ
 
AI ประกอบไปด้วยอะไรบ้าง ทำไมทุกคนพูดถึงกันแต่ "Machine Learning"

จริงๆ แล้ว AI ในอุดมคติจะมีโมดูลอื่นๆ นอกจาก Learning ด้วย เช่น Knowledge Base, Decision Making และอื่นๆ แต่เนื่องจากงานวิจัย Deep Learning นั้นได้ผลลัพธ์ที่ดีมากๆ ในช่วง 10 ปีที่ผ่านมา ทำให้กลบข่าวงานวิจัยด้านอื่นไปแทบจะหมดสิ้น

ดูวิดิโอ "ส่วนประกอบของ AI" (ภาษาไทย) ที่นี่ครับ

 
AI ฉลาดกว่ามนุษย์จริงหรือ ?? ANI คืออะไร AGI คืออะไร?

AI ฉลาดกว่ามนุษย์? อาจต้องตอบว่า ณ ปี 2020 "จริงบางส่วน" ก่อนอื่นเราต้องแยกความฉลาดเป็นสองแบบ คือแบบ "เฉพาะทาง" กับแบบ "ทั่วไป"

ความฉลาดเฉพาะทาง (หรือบางครั้งเรียก ปัญญาประดิษฐ์ "แบบแคบ" - Artificial Narrow Intelligence [ANI] ) หมายถึง AI ที่ Focus งานใดงานหนึ่งเพียงงานเดียว เช่น การเล่นเกมส์ การแก้โจทย์ปัญหา การดูฟิล์ม X-Ray การแปลภาษา การจำหน้าคน เป็นต้น งานเหล่านี้เราเห็นบ่อยในข่าวและงานวิจัยใหม่ๆ ต้องยอมรับว่าในหลายงาน AI นั้นเก่งใกล้เคียงผู้เชี่ยวชาญที่เป็นมนุษย์แล้ว

และเนื่องจากธรรมชาติของคอมพิวเตอร์นั้นทำงาน "ไม่ผิดพลาด" ทำให้ในแง่ของการเล่นเกมส์นั้น AI เก่งกว่ามนุษย์ ดูบทความ "วิเคราะห์ 20 ปีหลังเหตุการณ์ประวัติศาสตร์ “AI” ชนะ “แชมป์โลกหมากรุก” ได้เป็นครั้งแรกในประวัติศาสตร์มนุษยชาติ " ที่นี่ครับ

อย่างไรก็ดี เมื่อไรก็ตามที่ต้องรวมความรู้หลายๆ ด้านเข้าด้วยกัน มักพบได้ว่า AI นั้น "โง่" อย่างไม่ได้เรื่อง ตัวอย่างเช่น แม้แต่ ChatBot ที่ได้ชื่อว่าเก่งที่สุดในปี 2019 อย่าง DiabloGPT ก็ยังคุยกับเราไม่รู้เรื่อง ตอบคำถามไม่ตรงคำถามตลอดเวลา แสดงให้เห็นว่า AI รู้เฉพาะข้อมูลแคบๆ ที่ถูกสอนมาเท่านั้น ลองเล่น Chatbot จากมหาลัยชั้นนำของโลกได้ที่นี่ครับ http://visualchatbot.cloudcv.org/

การจะสร้าง AI ให้มีความรู้หลากหลายเหมือนมนุษย์นั้น เร่ียกว่า Artificial General Intelligence หรือ AGI ซึ่งทางทีม ThaiKeras ได้มีโอกาสเข้าร่วมงาน Conference AI ที่ได้ชื่อว่าดีที่สุดอย่าง ICLR ปี 2020 นักวิจัยทั่วโลกยังเห็นตรงกันว่ายังต้องพัฒนาอีกหลายสิบปีครับ

ดูวิดิโอ "ANI vs. AGI" (ภาษาไทย) เพิ่มเติมที่นี่ครับ

 

ตอบกลับอ้างอิง
Posted : 01/05/2020 8:50 am
The Neural Engineer
(@neural-engineer)
Boltzmann Machine
Keras คืออะไร และทำไมต้อง Keras?

ดั้งเดิมนั้น Keras คือ programming platform ที่ช่วยให้เราเรียนรู้วิธีการเขียน Deep Learning ได้อย่างง่ายดายและรวดเร็วที่สุดครับ จึงเป็นที่มาของชื่อเว็บของเรา ที่ต้องการให้เพื่อนๆ ชาวไทยสามารถเรียนรู้การเขียนโปรแกรม deep learning ได้โดยไม่เสียเวลา

ล่าสุดตั้งแต่ปี 2019 มานั้น ทาง Tensorflow ซึ่งเป็น platform มาตรฐานจาก google โดยตรง ได้ตัดสินใจผลักดัน Keras ให้เป็น API มาตรฐานของ Tensorflow (ตั้งแต่ version 2.0) โดยสมบูรณ์ ดังนั้นด้วยการสนับสนุนและพัฒนาจากทีม google โดยตรง เราจึงมั่นใจได้ว่าการฝึกเขียน Keras นั้นจะไม่ล้าสมัยแน่นอน

Tensorflow เกี่ยวข้องกับ Keras อย่างไร?

Tensorflow คือ Programming Platform ที่ทาง Google พัฒนาขึ้นด้วยตนเองจึงมีประสิทธิภาพสูง รวมทั้งคุณภาพของเอกสารการใช้งานต่างๆ นั้นก็เพียบพร้อม

อย่างไรก็ดี การใช้งาน Tensorflow นั้นค่อนข้างซับซ้อนและต้องอาศัยเวลาในการเรียนรู้พอสมควร ในเวลาต่อมา F. Chollet ซึ่งก็เป็นนักวิจัยที่ Google Lab จึงได้คิดพัฒนา platform ใหม่ที่เรียกว่า Keras ขึ้นมาเพื่อเอาไว้เรียกใช้งาน Tensorflow ในเบื้องหลังและให้พวกเราเขียนโปรแกรมผ่าน Keras ได้โดยแทบจะไม่ต้องยุ่งกับ Tensorflow อนึ่ง ปัจจุบัน Google ประกาศสนับสนุน Keras อย่างเป็นทางการ (ตั้งแต่ Tensorflow 2.0 เป็นต้นมา) ทำให้ Keras จะพัฒนาควบคู่ไปพร้อมกับ Tensorflow ทำให้ผู้ใช้ไม่ต้องกลัวว่าจะล้าสมัยครับ

ควรเขียนโปรแกรมด้วยภาษาอะไรดี??
ถึงแม้นจริงๆ แล้ว Deep Learning จะสามารถเขียนได้ด้วยหลากหลายภาษา แต่เราแนะนำ Python ครับเนื่องจากเป็นภาษาที่นักวิจัยทั่วโลกนิยมใช้มากที่สุด ทำให้ทั้ง open source software tools, documents และ community ก็ยิ่งใหญ่ตามไปด้วย Python มีทั้งโมดูลคณิตศาสตร์ (Numpy) วิทยาศาสตร์และสถิติ (SciPy) และการจัดการข้อมูลที่ครบเครื่อง (Pandas) นอกจากนี้ทั้ง Tensorflow และ Keras ก็ยังพัฒนาเพื่อใช้กับ Python เป็นหลักอีกด้วยครับ
 
ต้องมีความรู้ด้านโปรแกรมมิ่งมากแค่ไหนเพื่อที่จะ Implement ระบบ Deep Learning / AI
อย่างน้อยควรต้องมีพื้นฐานความชำนาญ Python และ Numpy ครับ ลองดูพื้นฐานที่จำเป็นใน Python & Numpy Workshop ของเราได้ที่นี่ครับ จากนั้นสามารถต่อยอดการเขียนโปรแกรม Deep Learning ด้วย Keras ในเว็บของเราได้เลยครับ
ตอบกลับอ้างอิง
Posted : 01/05/2020 8:52 am
The Neural Engineer
(@neural-engineer)
Boltzmann Machine
จะเรียนรู้ Python, Numpy และโมดูลอื่นๆ ที่เกี่ยวข้องได้ที่ไหน
 
การแข่งขันบน Kaggle คืออะไร? Kaggle ช่วยให้เราเรียนรู้ AI ได้ง่ายขึ้นอย่างไร?
คำตอบอยู่ใน กระทู้นี้ ครับ
 
GPU คืออะไร จำเป็นไหม มีรุ่นอะไรที่พอใช้ได้บ้าง? TPU คืออะไร ?

สมัยก่อนเราคิดว่า CPU (จากค่ายดัง Intel / AMD) คือสมองของคอมพิวเตอร์ ในช่วงปี 2008 นักวิจัยได้ค้นพบว่า GPU ที่อยู่ใน Graphic Card (ปกติใช้ช่วยทำให้แสดงผลกราฟฟิกสวยงาม ใช้เล่นเกมส์) สามารถนำมาช่วยให้การเรียนรู้ของ Machine Learning ทำได้เร็วขึ้นมาก และประสบความสำเร็จในปี 2012 กับการประยุกต์ใช้ในโมเดล AlexNet (บทความนี้ครับ)

ปัจจุบัน (อัพเดตเมษายน 2020) GPU จากค่าย NVIDIA จึงกลายเป็นส่ิงที่ขาดไม่ได้ในการสร้างโมเดล Deep Learning โดย Cards ที่เราหาซื้อได้ทั่วไปคือ GTX 1080 , GTX 2070 และ GTX 2080 สามารถใช้งานได้ดี ได้ในปัญหาส่วนใหญ่ครับ รุ่นที่กำกับว่า ti เช่น 2080ti จะมีหน่วยความจำและประสิทธิภาพเพิ่มขึ้นและราคาก็จะเพิ่มขึ้นตามมา

ในกรณีที่เราเช่า Cloud บน GCP ของ Google หรือ AWS ของ Amazon รุ่น GPU จะมีให้เลือกไล่ตามประสิทธิภาพจากน้อยไปมากคือ K80, P100, T4, V100 เป็นต้น แนะนำให้ใช้ตั้งแต่รุ่น P100 ขึ้นมาครับ

ส่วน TPU คือ Hardware ที่ Google ออกแบบเองเพื่อมาใช้ทดแทน GPU โดย TPU รุ่น V3-8 ที่ให้ใช้ฟรีบน Kaggle มีความเร็วราวๆ V100 4-8 ตัวรวมกัน (ค่าเช่าเป็นแสนต่อเดือน) นับว่าเป็นโอกาสทองที่พวกเราจะได้ใช้ Hardware ระดับสูงฟรีๆ ครับ โดย TPU จะใช้งานง่ายที่สุดบน TF2.x และ Keras เนื่องจาก Google เป็นผู้ออกแบบเอง

โดยทาง ThaiKeras มองว่า TPU เป็นอนาคตของวงการนี้แน่นอนครับ และทีมงานก็กำลังศึกษาให้เชี่ยวชาญเพื่อจะแชร์ความรู้ให้เพื่อนๆ ต่อไปในอนาคต

ผู้สนใจสามารถเริ่มหัดใช้ TPU ฟรีๆ ได้ที่นี่ครับ https://www.kaggle.com/c/flower-classification-with-tpus/

ตอบกลับอ้างอิง
Posted : 01/05/2020 8:52 am
The Neural Engineer
(@neural-engineer)
Boltzmann Machine
Keras+Tensorflow vs. Pytorch ?

ในปี 2020 นั้นเริ่มแน่ชัดแล้วว่ามีเพียง Keras+Tensorflow และ Pytorch เท่านั้นที่เป็นทางเลือกของ Machine Leraning Engineers มืออาชีพ โดย Keras นั้นใช้งานได้ง่ายที่สุด ในขณะที่ Pytorch จะอนุญาตให้เรา control training flow ได้ง่ายกว่าซึ่งเหมาะสำหรับนักวิจัย แต่ก็ไม่มี official API ที่ง่ายเหมือน Keras

แม้นจะมีนักวิจัยพยายามออกแบบ API สำหรับ Pytorch เช่น Catalyst, Lightning เป็นต้น แต่ API เหล่านี้ยังไม่ได้รวมกับ Pytorch อย่างเป็นทางการเหมือน Keras+Tensorflow ดังนั้น ซึ่งอาจเกิดประเด็นที่นักวิจัยอาจเลิกพัฒนา API เหล่านี้ในอนาคต

สำหรับประสิทธิภาพในแง่ของความเร็วนั้นบน GPU, ส่วนใหญ่Tensorflow มักสูสีกับ Pytorch ในขณะที่ Keras จะช้ากว่าเล็กน้อย อย่างไรก็ดีปัจจุบัน Google / Kaggle มี Hardware TPU ที่เร็วกว่า GPU ในท้องตลาดนับสิบเท่า และสามารถใช้งานได้ง่ายดายด้วย Keras เนื่องจากออกแบบมาพร้อมๆ กัน

ในแง่ของคุณภาพความแม่นยำของโมเดล Keras, Pytorch มักให้ผลใกล้เคียงกัน ดังจะเห็นได้จากผู้ชนะบน Kaggle มักมีทั้งผู้ใช้ Keras / Pytorch สลับกันไป

 

ตอบกลับอ้างอิง
Posted : 01/05/2020 8:53 am
The Neural Engineer
(@neural-engineer)
Boltzmann Machine
อยากเริ่มฝึก Deep Learning และ Keras เร็วที่สุดแบบ "งบน้อย"

อย่างที่เกริ่นในบทความนี้ เราต้องมี GPU, Libraries และ Data ถึงจะเริ่มต้นฝึกได้ และโชคดีมากๆ ที่ในปัจจุบันเรามี ทางเลือกฟรีๆ 2 ทางใช้ร่วมกันได้ และมีทางเลือกประหยัดมากๆ อีก 1 ทาง

  • เริ่มต้นบน Kaggle ซึ่งมี GPU และ Libraries ครบกดปุ่มเดียว เริ่มเขียนได้เลย ส่วน Dataset ก็มีให้โหลดเข้าง่ายๆ กดคลิ้กๆ เลือกเอาจากหลายหมื่น Datasets นอกจากนี้ยังมีเพื่อนๆ จากทั่วโลกคอยพูดคุยช่วยเหลือตลอด เรียกได้ว่าแค่ที่นี่ที่เดียวก็เรียนรู้ได้ตลอดชีวิต โดย GPU ใช้ได้ 30 ชม.ต่อสัปดาห์
  • Colab ซึ่งมี Libraries และ GPU ให้ใช้ฟรีเช่นกัน โดยใช้งานได้ต่อเนื่อง 12 ชั่วโมงและไม่มี limit เหมือน Kaggle แต่ก็จะหลุดบ่อยหน่อย และไม่มี Datasets ให้โหลดเข้าง่ายๆ เหมือน Kaggle (แต่ก็ใช้เทคนิกพิสดารโหลดมาจาก Kaggle ได้นะครับ)
  • Colab Pro จ่ายเพียง 300 บาทต่อเดือน ได้อัพเกรด spec ของ Colab และลดปัญหาใช้งานแล้วหลุดบ่อยลงไปได้

 

เมื่อได้เครื่องที่ถูกใจแล้ว ก็สามารถเริ่มต้นจาก Keras Workshops ต่างๆ ของ ThaiKeras เราได้ครับ ซึ่งมีทั้ง Workshops บน images, texts, NLP และ signal งานด้านการแพทย์ งานศิลปะ หรือพื้นฐาน numpy ให้ได้ฝึกกันตามถนัด

https://thaikeras.com/category/workshop/

อย่างไรก็ดีเพื่อนๆ ควรจะมีพื้นฐาน Machine Learning ก่อนเล็กน้อยนั่นคือรู้จักโมเดลต่างๆ เพื่อจะได้เข้าใจโค้ดใน workshops ได้อย่างกระจ่างครับ โดยลองเรียนในคอร์สที่เราแนะนำครับ

https://thaikeras.com/2019/onlinecourses/

ตอบกลับอ้างอิง
Posted : 01/05/2020 8:53 am
The Neural Engineer
(@neural-engineer)
Boltzmann Machine
มีเว็บภาษาไทยอื่นๆ แนะนำไหม?
ตอนนี้มีเพื่อนๆ คนไทยเก่งๆ ช่วยกันเผยแพร่ความรู้หลายแห่งเลยครับ ส่วนใหญ่ที่เห็นจะอยู่ในรูปแบบ Facebook pages หรือ Group ในที่นี่ขอรวบรวมไว้สำหรับกลุ่มที่เน้นไปทาง Deep Learning หรือ application เฉพาะทางมากหน่อยครับ

  • Facebook สอนหน่อย เป็นเพจที่น้องแอดมินน่ารัก มีความตั้งใจที่จะถ่ายทอดความรู้ Deep Learning ตั้งแต่พื้นฐานให้อยู่ในภาษาไทยง่ายๆ ที่นักเรียนม.ปลาย (วัดตามพื้นคณิตศาสตร์) อ่านเข้าใจ
  • Facebook เนิร์ด ML เป็นเพจที่เจาะเปเปอร์บทความวิจัยที่สำคัญหรือที่น่าสนใจในวงการเป็นเรื่องๆ ไปในแต่ละโพสต์
  • Facebook Group Colab Thailand เป็นกลุ่มที่แชร์ความรู้เกี่ยวกับการใช้งาน Colab ซึ่งมี GPU VM ชั้นเยี่ยมให้เราใช้ฟรีๆ (หรือประหยัดถ้าใช้ Pro) แอดมินกลุ่มแชร์ความรู้ตลอดเวลา ยอดเยี่ยมครับ
  • Facebook Group Data Science Bangkok เป็นกลุ่มที่ Data Scientists คนไทยเก่งๆทั้งหลายมาแชร์ความรู้กันครับ
  • Facebook Group Thai NLP สำหรบคนรัก NLP ภาษาไทยโดยเฉพาะครับ 😀
ตอบกลับอ้างอิง
Posted : 01/05/2020 8:53 am
The Neural Engineer
(@neural-engineer)
Boltzmann Machine
การเขียนโปรแกรมบน Cloud เป็นอย่างไร, Virtual Machine คืออะไร ?

ในสมัยใหม่นี้ การเขียนโปรแกรมแตกต่างไปจากสมัยไม่กี่ปีก่อน ที่เราจำเป็นต้องซื้อเครื่องคอมพิวเตอร์ ลงโปรแกรมเพื่อเขียนโปรแกรม และ setup tools/libraries ต่างๆ ที่เกี่ยวข้องกับการเขียนโปรแกรมในเครื่องของเรา เพราะเราไม่ต้องทำอะไรพวกนั้นแล้ว เริ่มเขียนได้ทันทีขอแค่มีอินเตอร์เน็ต!!

เริ่มได้ยังไง ในเมื่อเราไม่มีเครื่อง ?

การเขียนโปรแกรมสมัยใหม่ เรียกว่าเขียนบน Cloud นั่นคือ ผู้ให้บริการ Cloud เช่น Google, Amazon หรือ Kaggle นั้นได้ setup เครื่องและสิ่งจำเป็นทั้งหมดให้เราแล้ว สิ่งที่เราทำเพียงแค่เข้า web แล้วเราก็สามารถเริ่มเขียนผ่านเว็บได้ทันที “เสมือน” เรามีเครื่องที่ setup เสร็จแล้ว (คำว่า “เสมือน“ นี้ จึงเป็นที่มาของคำว่า “Virtual Machine”) โดย web browser จะส่งข้อมูลที่เราเขียนไปยัง cloud และส่ง output จาก cloud มาให้เราที่ browser นั่นเอง

บน Kaggle นั้นนอกจากให้เราใช้ VM ฟรีๆ แล้ว ยังเป็น VM คุณภาพสูงที่มี GPU/TPU ในตัว (ปี 2020) ซึ่งจริงๆ แล้วค่าเช่าแพงมากๆ นอกจากนี้เรายังสามารถก้อปปี้โปรแกรมของคนอื่นที่เขียนเสร็จแล้ว มาเขียนต่อบน VM ของเราเอง ซึ่งทำให้การเขียนโปรแกรมนั้นง่ายขึ้นกว่าสมัยก่อนนับสิบเท่า ดังนั้น ยุคนี้นับเป็นยุคทองของการเขียนโปรแกรมอย่างแท้จริงครับ

ตอบกลับอ้างอิง
Posted : 11/05/2020 6:02 am
The Neural Engineer
(@neural-engineer)
Boltzmann Machine

อยากได้บทความเริ่มต้น สำหรับมือใหม่จริงๆ ในการเริ่มเขียนโปรแกรม

เราจะรวมบทความภาษาไทยสำหรับมือใหม่ไว้ที่นี่ และจะทยอยอัพเดตครับผม

https://medium.com/@NakarinSTK/%E0%B9%80%E0%B8%A3%E0%B8%B4%E0%B9%88%E0%B8%A1%E0%B8%95%E0%B9%89%E0%B8%99-deep-learning-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-keras-b13edc47b1b3

ตอบกลับอ้างอิง
Posted : 25/05/2020 1:12 am
Share:

Please Login or Register