สวัสดีครับทุกคน สำหรับเพื่อนๆ ที่เพิ่งเริ่มต้นศึกษา AI และ Deep Learning อาจจะมีข้อสงสัยต่างๆ มากมายในหลายๆ ประเด็น ในบทความนี้เราจะพยายามสรุปคำถาม-คำตอบความเข้าใจขั้นพื้นฐาน เพื่อให้เพื่อนๆ ได้ความกระจ่างและเริ่มต้นศึกษาได้อย่างมั่นใจครับ
บทความนี้เป็นบทความเดียวกันกับหน้า https://thaikeras.com/2018/guide-tour-series/ เพียงแต่นำมาโพสต์ซ้ำในบอร์ดเพื่อให้ Google Search index ได้ง่ายขึ้น และเผื่อเพื่อนๆ ท่านใดมีคำถามเพิ่มเติมก็ถามได้เลยครับ
--------------------------------------------
วงการ 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 เพิ่มเติมได้ในบทความนี้ครับ
machine พยายามเรียนรู้ “ความรู้” จาก “ข้อมูล” ซึ่งความรู้ที่ได้อาจไม่ถูกต้อง 100% ขออุปมาอุปมัยเสมือน เราพาเด็กเล็กไปเที่ยวสวยสาธารณะ และเห็นต้นไม้นับร้อยต้น
ภาพต้นไม้นับร้อยต้นนี้ คือ “ข้อมูล” ที่ให้เด็กสร้าง “ความรู้” เกี่ยวกับต้นไม้ (machine ก็เช่นเดียวกัน)
- เด็กบางคนอาจได้ “ความรู้” ว่า “ต้นไม้ทุกต้นมีใบสีเขียว”
- เด็กบางคนอาจได้ “ความรู้” ว่า “ต้นไม้ส่วนใหญ่มีใบสีเขียว แต่นานๆ ทีบางต้นก็มีใบสีเหลืองได้”
- เด็กบางคนอาจได้ “ความรู้” ว่า “ต้นไม้ A มีใบสีเขียวดอกสีชมพู ต้นไม้ B มีใบสีเขียว ดอกสีขาว ฯลฯ”
ซึ่งความรู้เหล่านี้อาจไม่ถูกต้อง 100% (ทั้งนี้เพราะข้อมูลที่เห็นเพียงต้นไม้ในสวนสาธารณะเท่านั้น) โดยทั่วไป คุณภาพของความรู้ขึ้นอยู่กับ
- ปริมาณข้อมูลที่ให้ machine ได้เรียนรู้ (อาจเทียบได้กับความขยัน ศึกษามากก็ควรจะรู้มาก)
- การออกแบบ learning pipeline ของ data scientists / AI engineers อาจเทียบได้กับความสามารถของผู้สอน ถ้าผู้สอนเก่งมาก เด็กก็จะเรียนรู้ได้ดี ในทางตรงกันข้ามถ้าผู้สอนออกแบบไม่ดี เด็กจะเก่งแต่ท่องจำและความรู้ที่ได้จะไม่สามารถใช้งานได้จริง ซึ่งเป็นเรื่องที่สำคัญมากและได้อธิบายอย่างละเอียดที่บทความนี้ครับ
กล่าวโดยสรุป การออกแบบ learning pipeline ครอบคลุมตั้งแต่เรื่อง training / validation split (การแบ่งกลุ่มข้อมูลเพื่อสอน และทดสอบ ) , metric specification (การออกแบบการวัดผล), การออกแบบโมเดลจากโจทย์ที่มีประสิทธิภาพ ซึ่งเรื่องเหล่านี้ต้องอาศัยประสบการณ์อย่างมากและมักไม่มีในหนังสือเรียน ซึ่งพวกเราจะเรียนรู้ได้จากการแก้ไขปัญหาจริงและจาก top scientists ระดับโลกบน Kaggle ครับ
งานด้านโปรแกรมมิ่งทั่วไปผ่าน Keras และการใช้งาน Open Source อื่นๆ อาจไม่ต้องการคณิตศาสตร์มากเท่าใดนักขอเพียงเพื่อนๆ มีความเข้าใจในหลักการพื้นฐานของสถาปัตยกรรม Neural Networks ประเภทต่างๆ ว่าข้อมูลที่ต้องใช้สอนเป็นอย่างไร และผลลัพธ์จาก Networks เหล่านั้นให้อะไรบ้าง
อย่างไรก็ดี สำหรับผู้ที่สนใจจะพัฒนาตัวเองไปเป็นระดับ AI Master ซึ่งต้องมีการดัดแปลงสถาปัตยกรรม Neural Networks ให้เหมาะสมและมีประสิทธิภาพสูงสำหรับงานเฉพาะด้านนั้น ควรต้องเข้าใจคณิตศาสตร์พื้นฐานบางอย่างเป็นอย่างดีเลยครับ
โดยคณิตศาสตร์พื้นฐานที่ควรรู้นั้น Andrew Ng ผู้ซึ่งเป็นปรมาจารย์ท่านนึงในวงการ ได้ให้คำตอบเรื่องนี้ไว้ในกระทู้นี้ครับ
ซึ่งสรุปได้ย่อๆ ว่าเพื่อให้เข้าใจ Deep Learning อย่างลึกซึ้งและประยุกต์ใช้งานได้อย่างถูกต้อง เพื่อนๆ ก็ต้องรู้คณิตศาสตร์บ้างแต่เป็นเพียงคณิตศาสตร์พื้นฐานระดับปริญญาตรีเท่านั้น ไม่จำเป็นต้องเป็นคณิตศาสตร์ขั้นสูง หรือต้องจบสายคณิตศาสตร์มาแต่อย่างใดครับ
ซึ่ง Andrew แนะนำให้แม่น 3 วิชานี้เป็นหลักครับ : Linear Algebra (ความรู้เกี่ยวกับเมตริกซ์และ Linear Space), Multivariable Calculus (หาอนุพันธ์และกฎลูกโซ่) และ Probability & Statistics ซึ่งทั้งหมดนี้เพื่อนๆ ที่ีไม่มั่นใจสามารถเรียนและทบทวนจากอาจารย์ที่ขึ้นชื่อว่าสอนได้ดีมากที่สุดคนนึงของโลกที่นี้ครับ
Data Science และ Big Data อาจพูดได้ว่าเป็นแขนงที่เกือบจะเป็นเรื่องเดียวกับ Machine Learning หรือการวิเคราะห์ข้อมูลด้วยสถิติทั้งหลาย (อาจไม่จำเป็นต้องจำต้องเป็น Deep Learning) เพียงแต่ว่าในศาสตร์ของ Data Science และ Big Data นั้นจะเน้นเรื่องการประมวลผล จัดเก็บ และจัดเตรียมข้อมูลที่มีปริมาณมหาศาลเป็นพิเศษ ในขณะที่ฝั่ง Machine Learning มักจะสมมติว่าข้อมูลสอนถูกจัดเตรียมมาให้แล้วโดยอัตโนมัติ นอกจากนี้งานด้าน Big Data อาจยุ่งเกี่ยวกับการเซ็ตระบบเพื่อใช้เครื่องคอมพิวเตอร์จำนวนหลายเครื่องร่วมกับคำนวณข้อมูลปริมาณมหาศาลเหล่านี้
อนึ่ง เพื่อนๆ สามารถลองเรียนรู้ Data Science Project แบบปฏิบัติจริงได้ทีนี่ครับ
ในการจะเข้าใจลึกซึ้ง ต้องเรียนที่คอร์สที่ดีที่สุดในโลก (เรียนได้ฟรี) บน 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 ได้เป็นต้น
จริงๆ แล้ว AI ในอุดมคติจะมีโมดูลอื่นๆ นอกจาก Learning ด้วย เช่น Knowledge Base, Decision Making และอื่นๆ แต่เนื่องจากงานวิจัย Deep Learning นั้นได้ผลลัพธ์ที่ดีมากๆ ในช่วง 10 ปีที่ผ่านมา ทำให้กลบข่าวงานวิจัยด้านอื่นไปแทบจะหมดสิ้น
ดูวิดิโอ "ส่วนประกอบของ AI" (ภาษาไทย) ที่นี่ครับ
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" (ภาษาไทย) เพิ่มเติมที่นี่ครับ