ข้ามไปที่เนื้อหาหลัก

ประสบการณ์การเรียน Deep Learning ผ่านบริการบทเรียนออนไลน์แบบเปิด

ผมเริ่มสนใจในเรื่องการเรียนรู้เชิงลึกหรือ Deep Learning นั้น เริ่มต้นมาจากการที่ได้ดูถ่ายทอดสดการแข่งขันเกมโกะระหว่างปัญญาประดิษฐ์อย่าง AlphaGo กับมนุษย์นักเล่นโกะระดับแชมป์โลกอย่าง Lee Sedol และ Ke Jie โดยผลการแข่งขันปรากฎว่าฝ่ายมนุษย์พ่ายแพ้ให้กับทางปัญญาประดิษฐ์ไปทั้งสองคน

หลังจากวันนั้นผมก็ได้ไปศึกษาเพิ่มเติมเกี่ยวกับตัว AlphaGo จนได้พบว่าวิธีการที่สอนให้ปัญญาประดิษฐ์เรียนรู้กฎกติกาวิธีการเล่นเกมโกะ นั่นคือการเรียนรู้ที่เรียกว่า Deep Learning

ปัญญาประดิษฐ์ (Artificial Intelligence) เป็นวิชาที่แตกแขนงออกไปหลายหลายสาขาวิชา สาขาแขนงหนึ่งนั้นมีชื่อว่าการเรียนรู้ของเครื่อง (Machine Learning) ซึ่งเป็นวิชาเกี่ยวกับการทำให้เครื่องคอมพิวเตอร์สามารถเรียนรู้จากข้อมูลที่ป้อนให้และทำนายผลลัพธ์ออกมาได้ และวิธีการเรียนรู้ยังสามารถแตกแขนงออกมาอีกหลายวิธี แต่วิธีที่ถูกนำมาใช้กับ Deep Learning นั้นเรียกว่าวิธีการเรียนรู้แบบโครงข่ายประสาทเทียม (Artificial Neural Networks)

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

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

ตัวอย่างที่มีการนำเอา Deep Learning ไปประยุกต์ใช้งานในปัจจุบัน ตัวอย่างเช่น
  • คอมพิวเตอร์วิทัศน์ (Computer Vision) ถูกใช้งานเกี่ยวกับเรื่องรถยนต์ขับเคลื่อนอัตโนมัติ (Self-Driving Car) ในส่วนการประมวลผลสภาพท้องถนนเพื่อบังคับให้รถเคลื่อนที่ไปตามเส้นทาง
  • การประมวลผลภาษาธรรมชาติ (Natural Language Processing) ถูกใช้งานเกี่ยวกับการแปลภาษาอย่างในโปรแกรม Google Translate ให้ผลลัพธ์ใกล้เคียงกับที่มนุษย์เป็นผู้แปลภาษา
  • ระบบแนะนำ (Recommender System) ถูกใช้งานในส่วนการแนะนำสิ่งที่มีลักษณะใกล้เคียงกับสิ่งที่ลูกค้ากำลังสืบค้นอยู่ อย่างในเว็บไซต์ Amazon
ในช่วง 2 -3 ปีที่ผ่านมา Deep Learning เป็นหัวข้อที่ได้รับความนิยมขึ้นมาก จึงทำให้มีหลายเว็บไซต์ที่ให้บริการบทเรียนออนไลน์ผลิตเนื้อหาการสอน Deep Learning ออกมา ตัวอย่างเช่น
  1. Deep Learning Specialization โดย Coursera
  2. Deep Learning Nanodegree Foundation โดย Udacity
  3. Deep Learning Explained โดย EdX
  4. Deep Learning in Python โดย DataCamp
แต่ละเว็บไซต์มีรูปแบบวิธีการสอนและค่าเล่าเรียนที่แตกต่างกันออกไป ในฐานะที่ผมเคยผ่านประสบการณ์การเรียนรู้มาแล้วในหลักสูตร Deep Learning Specialization ของทาง Coursera และหลักสูตร Deep Learning Nanodegree Foundation ของทาง Udacity จึงอยากจะแบ่งปันประสบการณ์ที่ได้เรียนรู้เพื่อเป็นประโยชน์ให้แก่ผู้ที่สนใจจะได้มีแนวทางในการตัดสินใจสมัครเข้าศึกษาต่อไป

Deep Learning Nanodegree Foundation

หลักสูตร Deep Learning Nanodegree Foundation ของทาง Udacity นั้นปกติค่าเล่าเรียนอยู่ที่ $599 (ประมาณ 19,500 บาท) ต่อ 1 เทอม (ระยะเวลา 4 เดือน) แต่ช่วงที่ผมสมัครเข้าศึกษาอยู่ในช่วง Udacity Discovery Week พอดี ซึ่งทาง Udacity มีส่วนลดทำให้ค่าเล่าเรียนลดลงเหลือ $399 (ประมาณ 13,000 บาท)

ถึงจะมีส่วนลดค่าเล่าเรียนลงมาแล้ว ผมก็ยังรู้สึกว่าค่าเล่าเรียนแพงมาก แต่เมื่อพิจารณาถึงเนื้อหาที่จะได้เรียนในหลักสูตรเรื่อยลงมาจนถึงหัวข้อเกี่ยวกับ Generative Adversarial Networks ซึ่งยังไม่มีหลักสูตรของเว็บไซต์บริการบทเรียนออนไลน์อื่นเปิดสอน และปัจจัยสำคัญที่สุดคือการที่ Udacity ได้ผู้ที่คิดค้นอัลกอริทึมนี้มาเป็นผู้สอนเอง ทำให้ง่ายต่อการตัดสินใจยอมจ่ายเงินเพราะนี่เป็นโอกาสที่ไม่สามารถหาได้จากที่อื่นอีกแล้ว

ภายในหลักสูตรประกอบด้วย 5 บทเรียนหลักและ 1 บทเรียนเสริม ในหลักสูตรนี้ผู้เข้าศึกษาจะต้องทำโปรเจ็คทั้งหมด 5 โปรเจ็คให้ผ่านภายในระยะเวลา 4 เดือน จึงจะมีสิทธิจบหลักสูตรได้ มิฉะนั้นจะต้องจ่ายเงินลงเรียนซ้ำในการเปิดหลักสูตรรอบถัดไป

วิธีการเรียนจะเป็นการดูการบรรยายผ่านทางวิดีโอและอ่านเนื้อหาบทเรียนในเว็บไซต์เป็นส่วนใหญ่ แต่จะมีการตอบคำถามหรือแบบทดสอบเขียนโปรแกรมภาษาไพทอน เพื่อทดสอบความเข้าใจเป็นระยะ โดยเนื้อหาการเรียนทั้งหมดบรรยายเป็นภาษาอังกฤษ

หากผู้เรียนมีข้อสงสัยเกี่ยวกับการเรียน ทาง Udacity เตรียมช่องทางสื่อสารผ่านการใช้โปรแกรม Slack ให้ผู้เรียนสามารถซักถามข้อสงสัยได้โดยตรงกับผู้ช่วยสอน (ในช่วง Office Hours) หรือใช้เพื่อพูดคุยซักถามกันเองระหว่างเพื่อนร่วมรุ่นที่เรียนในหลักสูตรจากทั่วโลก

บทที่ 1 Introductions

บทเกริ่นนำกล่าวถึงพื้นฐานของ Deep Learning อย่างง่าย พร้อมการแนะนำโปรแกรม Anaconda ซึ่งเป็นโปรแกรมที่รวบรวมไลบรารีสำหรับใช้เขียนภาษาไพทอนที่เน้นงานทางด้าน Data science เป็นหลักและวิธีการใช้งาน Jupyter Notebooks เครื่องมือสำหรับเขียนโปรแกรมในการทำโปรเจ็ค

บทที่ 2 Neural Networks

บทนี้เริ่มสอนการลงมือเขียนโปรแกรม Neural Networks ด้วยไลบรารีพื้นฐานของภาษาไพทอนอย่าง NumPy เพื่อให้เข้าใจถึงหลักวิธีการทำงานของโปรแกรม ซึ่งในบทนี้มีโปรเจ็คให้ทำส่งด้วย [Project1:Your first neural network]

บทที่ 3 Convolutional Neural Networks

บทนี้จะเรียนรู้เกี่ยวกับ Convolutional Neural Networks ซึ่งเป็นอัลกอริทึมหลักสำหรับการใช้วิเคราะห์ภาพถ่าย และโปรเจ็คที่ต้องทำส่งคือการเขียนโปรแกรมโดยใช้งานไลบรารี TensorFlow เพื่อให้คอมพิวเตอร์สามารถเรียนรู้ที่จะวิเคราะวัตถุในภาพจากชุดข้อมูล CIFAR-10 และทำนายได้ว่าภาพนั้นเป็นภาพของอะไร [Project2:Image Classification]

บทที่ 4 Recurrent Neural Networks

บทนี้จะเรียนรู้เกี่ยวกับ Recurrent Neural Networks ซึ่งเป็นอัลกอริทึมสำหรับการใช้วิเคราะห์ข้อมูลที่มีลักษณะเรียงเป็นลำดับต่อเนื่องกันเช่นข้อมูลตัวอักษร โดยในบทนี้ผู้เรียนต้องทำโปรเจ็คส่งจำนวน 2 โปรเจ็ค

โปรเจ็คที่หนึ่งผู้เรียนต้องเขียนโปรแกรมเพื่อสั่งให้คอมพิวเตอร์เขียนบทละคร The Simpsons ขึ้นมาใหม่โดยให้เรียนรู้จากบทละครดั้งเดิม [Project3:TV Script Generation]

โปรเจ็คที่สองผู้เรียนต้องเขียนโปรแกรมเพื่อสั่งให้คอมพิวเตอร์แปลภาษาอังกฤษเป็นภาษาฝรั่งเศสโดยให้เรียนรู้จากรูปประโยคที่มีอยู่ [Project4:Language Translation]

บทที่ 5 Generative Adversarial Networks

บทเรียนนี้ได้ Ian Goodfellow ผู้คิดค้นอัลกอริทึม Generative Adversarial Networks (GANs) มาสอนด้วยตัวเอง โดย GANs พัฒนามาจากหลักของการเล่นเกมส์มีกติกาคือ เกมส์จะแข่งขันกัน 2 ฝ่าย ฝ่ายใดชนะก็จะได้คะแนนไป ส่วนฝ่ายที่แพ้ก็จะไม่ได้คะแนน เมื่อนำเอามาประยุกต์ใช้กับ Deep Learning ผู้เรียนจะต้องสร้างโปรแกรมขึ้นมา 2 ชุด

โปรแกรมชุดแรกเป็นโปรแกรมสำหรับสร้างเนื้อหาขึ้นมาให้ใกล้เคียงกับเนื้อหาจริงมากที่สุด เพื่อหลอกฝ่ายตรงข้ามให้หลงเชื่อ ถ้าสามารถหลอกได้สำเร็จได้ก็จะได้คะแนน แต่ถ้าหลอกไม่สำเร็จก็จะต้องเรียนรู้พัฒนาตัวเองให้สามารถสร้างเนื้อหาที่จะหลอกฝ่ายตรงข้ามให้สำเร็จให้ได้

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

เนื่องจากบทความทางวิชาการเรื่อง GANs นั้นเป็นเรื่องเกี่ยวกับรูปภาพ ฉะนั้นโปรเจ็คที่ผู้เรียนต้องทำคือเขียนโปรแกรมเพื่อสั่งให้คอมพิวเตอร์สร้างใบหน้ามนุษย์โดยเรียนรู้จากชุดข้อมูลใบหน้าของคนดังให้ได้ [Project5:Face Generation]

บทเสริม Additional Lessons

บทเรียนเสริมนี้ไม่มีผลต่อการจบการศึกษา แต่เป็นเรื่องน่าสนใจที่ไม่ได้รวมอยู่ในบทเรียนหลัก เช่น การเรียนแบบเสริมกำลัง (Reinforcement Learning) หรือบทเรียนสอนวิธีใช้งาน TensorBoard ที่มีอยู่ในไลบรารี TensorFlow เป็นต้น

วิธีการวัดผล

เมื่อผู้เรียนทำโปรเจ็คเสร็จแล้ว ผู้เรียนจะต้องอัพโหลดไฟล์เข้าสู่กระบวนการตรวจโปรเจ็ค โดยทุกโปรเจ็คจะถูกตรวจโดยผู้ช่วยสอน ถ้าโปรเจ็คที่ส่งไปนั้นยังสามารถปรับปรุงให้มีประสิทธิภาพที่ดีขึ้นได้ ทางผู้ช่วยสอนจะให้คำแนะนำและส่งกลับมาให้ปรับปรุง เมื่อปรับปรุงตามคำแนะนำเสร็จก็อัพโหลดไฟล์ส่งไปตรวจตามกระบวนการเดิม ซึ่งสามารถส่งได้ไม่จำกัดครั้งจนกว่าผู้เรียนจะผ่านโปรเจ็คนั้น

เมื่อผู้เรียนส่งโปรเจ็คผ่านครบทั้ง 5 โปรเจ็คแล้ว ระบบจะแสดงปุ่มสำหรับขอรับใบประกาศขึ้นมา เมื่อได้รับใบประกาศแล้วก็ถือว่าผู้เรียนได้จบหลักสูตร Deep Learning Nanodegree Foundation เป็นที่เรียบร้อย

ตัวอย่างใบประกาศที่ได้รับเมื่อจบหลักสูตร Deep Learning Nanodegree Foundation

และสิทธิพิเศษสำหรับผู้ที่จบหลักสูตรนี้จะได้รับการการันตีให้สามารถเข้าเรียนในหลักสูตรขั้นสูงโดยเลือกได้ตามความสนใจจาก 3 หลักสูตร ดังนี้
  1. Self-Driving Car Engineer Nanodegree
  2. Artificial Intelligence Nanodegree
  3. Robotic Software Engineer Nanodegree
ผมใช้สิทธิเพื่อการเข้าศึกษาต่อในหลักสูตร Artificial Intelligence Nanodegree โดยปัจจุบันกำลังศึกษาอยู่ในเทอมที่หนึ่งของหลักสูตรรอบเดือนธันวาคม 2017 ที่ผ่านมา

Deep Learning Specialization

หลักสูตร Deep Learning ของทาง Coursera เรียกว่า Deep Learning Specialization ในชุดวิชานี้ประกอบด้วย 5 หลักสูตร ผลิตเนื้อหาโดย deeplearning.ai สอนโดย Andrew Ng ผู้ร่วมก่อตั้งเว็บไซต์ Coursera และยังเป็นผู้เชี่ยวชาญทางด้านการเรียนรู้ของเครื่องและการเรียนรู้เชิงลึก

ในการเรียนชุดวิชานี้หากต้องการทำแลปและรับใบประกาศเมื่อเรียนจบหลักสูตร ผู้เรียนจะต้องจ่ายค่าหลักสูตร $49.00 (ประมาณ 1,500 บาท) ต่อเดือน แต่หากไม่ต้องการรับใบประกาศก็สามารถเข้าไปเรียนได้ฟรี

หลักสูตรที่ 1 Neural Networks and Deep Learning

สอนพื้นฐานเกี่ยวกับพัฒนา Neural Networks และการนำมาประยุกต์เพื่อพัฒนาเป็น Deep Learning
  • WEEK 1: Introduction to deep learning
  • WEEK 2: Neural Networks Basics
  • WEEK 3: Shallow neural networks
  • WEEK 4: Deep Neural Networks

วิธีการวัดผล

ผู้เรียนต้องทำข้อสอบและทำแลปโดยการเขียนโปรแกรมตามโจทย์ที่ได้รับ ซึ่งคะแนนผ่านเกณฑ์ 80% จึงจะได้รับใบประกาศ

ตัวอย่างใบประกาศที่ได้รับเมื่อจบหลักสูตร Neural Networks and Deep Learning

หลักสูตรที่ 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization

ต่อเนื่องจากบทที่แล้ว โดยบทนี้จะเน้นสอนการปรับปรุงขั้นตอนวิธีเพื่อเพิ่มประสิทธิภาพของ Deep Learning
  • WEEK 1: Practical aspects of Deep Learning
  • WEEK 2: Optimization algorithms
  • WEEK 3: Hyperparameter tuning, Batch Normalization and Programming Frameworks

วิธีการวัดผล

ผู้เรียนต้องทำข้อสอบและทำแลปโดยการเขียนโปรแกรมตามโจทย์ที่ได้รับ ซึ่งคะแนนผ่านเกณฑ์ 80% จึงจะได้รับใบประกาศ

ตัวอย่างใบประกาศที่ได้รับเมื่อจบหลักสูตร Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization

หลักสูตรที่ 3 Structuring Machine Learning Projects

ต่อเนื่องจากบทที่แล้ว โดยบทนี้จะยกตัวอย่างกรณีศึกษาของการนำเอา Deep Learning ไปใช้งานจริง
  • WEEK 1: ML Strategy (1)
  • WEEK 2: ML Strategy (2)

วิธีการวัดผล

ผู้เรียนต้องทำข้อสอบให้คะแนนผ่านเกณฑ์ 80% จึงจะได้รับใบประกาศ (ไม่มีแลป)

ตัวอย่างใบประกาศที่ได้รับเมื่อจบหลักสูตร Structuring Machine Learning Projects

หลักสูตรที่ 4 Convolutional Neural Networks

ยังไม่ได้เข้าเรียนเนื่องจากทาง deeplearning.ai เพิ่งจะเปิดหลักสูตรเมื่อช่วงเดือนธันวาคม 2017

หลักสูตรที่ 5 Sequence Models

ยังไม่ได้เข้าเรียนเนื่องจากยังไม่มีการเปิดหลักสูตร

จากที่ผมได้เข้าเรียนในหลักสูตรที่ 1–3 ของชุดวิชา Deep Learning Specialization แล้วสรุปได้ว่าเนื้อหาที่เรียนไปทั้งหมดนั้น เทียบเท่าได้กับบทที่ 2 Neural Networks ของ Deep Learning Nanodegree Foundation เพียงบทเดียวเท่านั้น แต่การอธิบายเนื้อหาของ Deep Learning Specialization จะลงลึกในรายละเอียดกว่ามาก ช่วยให้คลายความสงสัยในจุดที่ Deep Learning Nanodegree Foundation บอกแต่วิธีใช้งานแต่ไม่ได้อธิบายถึงหลักการและที่มาที่ไปของการเลือกใช้วิธีนั้น

สรุปการเรียนรู้

ในส่วนตัวผมมีความเห็นว่าสำหรับผู้เริ่มต้นที่เคยเขียนโปรแกรมภาษาอื่นมาบ้าง แต่ยังไม่เคยเขียนภาษาไพทอนมาก่อนเลย ควรจะเริ่มเรียนจากหลักสูตร Deep Learning Specialization ของ Coursera ก่อน เพราะนอกจากจะสามารถเข้าไปเรียนได้ฟรีแล้ว ผู้สอนอย่าง Andrew Ng ออกแบบวิธีอธิบายเนื้อหาได้ละเอียดและเป็นขั้นเป็นตอนดีมาก ความรู้ที่จำเป็นอย่างวิชาคณิตศาสตร์ก็จะสอนทบทวนให้ด้วย

ส่วน Deep Learning Nanodegree Foundation ของ Udacity นั้น เหมาะสำหรับคนที่มีประสบการณ์เขียนโปรแกรมภาษาไพทอนมาแล้ว เพราะการสอนจะรวบรัดเหมือนเรียนสรุปเนื้อหา เนื้อหาส่วนใดที่ไม่ได้อธิบายก็จะแปะลิงก์ให้ผู้เรียนไปศึกษาเพิ่มเติมเอง โปรเจ็คที่ต้องทำส่งจะมีความยากกว่าเนื้อหาที่เรียนมาก และที่สำคัญที่สุดคือค่าเล่าเรียนแพงมากเมื่อเทียบกับเว็บไซต์เจ้าอื่น แต่ก็มีข้อดีเฉพาะตัวของ Udacity คือเนื้อหาของหลักสูตรครอบคลุมและมีความทันสมัย มีการปรับหลักสูตรอยู่ตลอดเวลา นอกจากนี้การที่มีพาร์ทเนอร์มาร่วมออกแบบหลักสูตรทำให้ผู้เรียนมีโอกาสที่จะได้เข้าไปทำงานในบริษัทของพาร์ทเนอร์หลังจากที่จบหลักสูตรอีกด้วย

ความคิดเห็น

  1. อ่านบทความแล้วได้รับความรู้มาก ชื่นชมภูเก่งมากคะ และอยากบอกน้องๆด้วยว่าการเรียนรู้มีได้หลายช่องทาง และทฤษฎีต่างๆได้เปลี่ยนแปลงจากที่เราเคยเรียนรู้มา จำเป็นต้องค้นคว้าความรู้ใหม่ๆ อยู่ตลอดเวลา การถ่ายทอดประสบการณ์และความรู้ใหม่ให้เพื่อนเป็นสิ่งที่ดีมากๆคะ

    ตอบลบ

แสดงความคิดเห็น