7 ขั้นตอนในการเรียนรู้ Deep Learning สำหรับผู้เริ่มต้น
“Deep Learning” หรือ “การเรียนรู้เชิงลึก” เป็นสาขาหนึ่งของ Machine Learning หากใครยังไม่ทราบว่า Deep Learning คืออะไรสามารถอ่านบทความ “Deep Learning คืออะไร”
แต่หากใครทราบแล้วและอยากที่จะลงลึงในสาขา Deep Learning แต่ไม่รู้ว่าจะเริ่มต้นอย่างไร วันนี้เรามี 7 ขั้นตอนสำหรับผู้ที่สนใจจะเริ่มต้นเรียนรู้ Deep Learing มาฝากกันครับ
Step 1: Deep Learning 101
หากเข้ามหาวิทยาลัยปี 1 ก็จะพบวิชาที่มีรหัส 101 เต็มไปหมด แน่นอนครับว่าวิชาที่ลงเรียนนั้นเป็นวิชาพื้นฐานเบื้องต้น หรือ Fundamental นั่นเองครับ และเนื้อหาเกี่ยวกับ Deep Learning ก็มีมากมายที่สามารถหาอ่านได้ในอินเตอร์เน็ต ซึ่งผมจะขอรวบรวมเป็น resource ให้ได้ไปศึกษาต่อกันเองครับ (แต่ถ้าหากมีเวลาจะพยายามเขียนเป็นบทความภาษาไทยและรวบรวมไว้ให้ได้อ่านกันครับ)
เมื่อพอเข้าใจความหมายของ Deep Learning กันแล้ว ก็แนะนำให้อ่านบทแรกของหนังสือ Neural Networks and Deep Learning เขียนโดย Michael Nielsen ลองศึกษาตัวอย่างการทำ Deep Learning ให้อ่านตัวเลขที่เขียนด้วยลายมือ
อันนี้แถมให้ครับ หากมีเวลาก็อ่านกันเพลินๆได้ “Applying deep learning to real-world problems” โดยบทความนี้จะแชร์ประสบการณ์ในการนำ Deep Learning ไปแก้ปัญหาที่เกิดขึ้นจริงในโลกของธุรกิจ
Step 2: Getting Technical
หลังจากเราเห็นภาพรวมของ Deep Learning กันมาแล้วก็ถึงเวลาลงลึกด้านวิชาการกันบ้าง (ขั้นตอนนี้อาจจะเป็นยาขมของใครหลายๆคน แต่หากผ่านไปได้ยาขมก็จะกลายเป็นขนมหวานทันที)
เมื่อตัดสินใจลงลึกด้าน Deep Learning แล้ว ก็คงหนีไม่พ้นคณิตศาสตร์หรือสูตรการคำนวณต่างๆ หากใครมาจากสายโปรแกรมเมอร์อาจจะคิดว่า Deep Learning ก็แค่เรียกใช้ library มาสร้าง model แล้วก็นำไปใช้งานได้ แบบนั้นมันง่ายไปครับ
ในชีวิตจริงหรือโลกของธุรกิจจะเจอกับปัญหาที่แตกต่างกันไปในแต่ละโดเมน ดังนั้นการที่เราเข้าใจถึงทฤษฎีและสามารถนำประยุกต์ใช้ได้จึงจะเป็นเรื่องดี
แต่!!!….. เราก็คงไม่ไปรือตำราพีชคณิตสมัยเรียนมหาวิทลัยมานั่งอ่านกันใหม่ แต่เราจะดึงมาเฉพาะส่วนสำคัญๆ ที่จำเป็นเท่านั้นครับ :)
- Linear Algebra Review (Machine Learning Course) โดย Andrew Ng
- Algebra Review and Reference โดย Zico Kolter และ Chuong Do
- Calculus 1: Introduction to the Derivative of a Function โดย Professor Leonard
- Sigmoid function
- Quoc Le’s Lectures on Deep Learning
Step 3: Backpropagation and Gradient Descent
อัลกอริทึม feed-forward neural networks ข้อมูลจะถูกส่งไปเพียงหนึ่งทิศทาง กล่าวคือไปข้างหน้าจาก input node ส่งผ่านไปยัง hidden nodes และก็จะส่งไปต่อยัง output nodes เมื่อได้ผลลัพธ์ออกมาก็จะนำมาคำนวณผลลัพธ์กับค่าเป้าหมาย เพื่อหาค่าผิดพลาด (error)
การทำงานข้างต้นเป็นรูปแบบการทำงานอย่างง่าย หรือเพียงแค่ 1 layer แต่ถ้าหากเป็น Neural networks แบบหลาย layer จะมีการใช้อัลกอริทึมแบบ Backwardpropagation (ส่งค่าแบบย้อนกลับ) เพื่อใช้ปรับปรุงค่าน้ำหนักของเครือข่าย และอัลกอริทึมที่บทบาทในการปรับค่าให้เหมาะสมที่สุดก็คือ Gradient Descent
- Lecture Notes: Some notes on gradient descent โดย Marc Toussaint
- A Step by Step Backpropagation Example โดย Matt Mazur
- Neural Networks and the Backpropagation Algorithm
- Neural Networks Demystified
Step 4: Getting Practical
ถ้าเป็นในมหาวิทยาลัย เมื่อเรียนทฤษฎีกันจนสมองบวมแล้ว ก็ถึงเวลาเข้า workshop ลงมือปฏิบัติกัน
ขั้นตอนนี้หากใครมีพื้นฐานด้านโปรแกรมมิ่งบ้างแล้วก็อาจจะสบายหน่อย แต่หากใครยังเขียนโปรแกรมไม่เป็นก็อาจจะต้องไปลงคอร์สออนไลน์ที่สอนเขียนโปรแกรมแล้ว
ซึ่งเราจะใช้ Deep learning library ที่นิยมในปัจจุบันมา implement ตัวอย่างเช่น
- TensorFlow เป็น library ที่พัฒนาโดย Google แบบ open source สำหรับการใช้งานด้าน Machine Learning
- Theano เป็นอีกหนึ่ง library ด้าน Machine Learning ที่พัฒนาด้วยภาษา Python น่าสนใจอีกตัวหนึ่ง พัฒนาโดยมหาวิทยาลัย Montreal
- Caffe พัฒนาโดย Berkeley Vision and Learning Center (BVLC) แห่งมหาวิทยาลัย University of California, Berkeley
- Keras เป็น Neural Networks API ที่เขียนด้วย python จัดว่าเป็น library ที่ใช้งานง่ายตัวหนึ่ง ที่สามารถใช้ TensorFlow, CNTK หรือ Theano ในการช่วยทำงาน
- Torch เป็น Machine Learning ที่พัฒนาด้วยภาษา Lua
สำหรับวิธีการใช้งาน รวมถึง tutorial สำหรับ library ต่างๆ สามาถหาอ่านได้ตามอินเตอร์เน็ตหรือลงเรียนคอร์สที่มีทั้งฟรีและเสียเงินครับ ;)
Step 5: Convolutional Neural Nets and Computer Vision
Computer Vision เป็นสาขาที่ว่าด้วยเรื่องเกี่ยวกับการพัฒนาให้คอมพิวเตอร์สามารถรับรู้หรือมองเห็นได้เหมือนกับตาของมนุษย์ และอัลกอริทึมที่นิยมในสายนี้ก็คือ convolutional neural networks
- Deep learning with computer vision tutorial โดย Yoshua Bengio
- Convolutional Neural Networks with TensorFlow
- Training LeNet on MNIST with Caffe
- Convolutional Neural Networks (LeNet) ด้วย Theano
- (แถมสำหรับขาโหด) ImageNet Classification with Deep Convolutional Neural Networks เป็น paper เป็นการเทรนด์ โดยใช้ Deep Convolutional Neural Network ในการจำแนกรูปภาพขนาดใหญ่กว่า 1.2 ล้านรูป
Step 6: Recurrent Nets and Language Processing
ขั้นตอนที่ 5 เป็นการทำให้คอมพิวเตอร์มองเห็นโลกมนุษย์ได้ สำหรับขั้นตอนนี้ก็เป็นการทำให้คอมพิวเตอร์สามารถเข้าใจภาษาของมนุษย์ เพื่อที่จะได้สื่อสารและเข้าใจโลกใบนี้ได้มากยิ่งขึ้น
- Recurrent Neural Networks ด้วย TensorFlow
- Recurrent Neural Networks ด้วย Theano
- Implementing a CNN for text classification in TensorFlow
- Convolutional Neural Networks for Sentence Classification (paper)
Step 7: Go Beyond
หากมาถึงขั้นนี้ได้ แสดงว่าคุณก็พร้อมแล้วที่จะออกสู่ทะเลกว้าง ปัจจุบันสาขา Deep Learning ยังมีหัวข้ออีกมากมายที่ให้ได้ศึกษาหรือนำมาพัฒนาต่อยอดได้อย่างหลากหลาย หรือจะลองศึกษาหัวข้อเชิงประยุกต์อื่นๆ เช่น Self-Driving Car เป็นต้น
บทความนี้ไม่ได้รวมรวบหัวข้อของ Deep Learning ไว้ได้อย่างครบถ้วน แต่พอจะเป็นแนวทางและมุมมองในภาพรวมให้กับผู้ที่กำลังจะเริ่มต้นหรือผู้ที่มีความสนในสาขา Deep Learning ได้ศึกษาเพิ่มต่อไป หากมีข้อผิดพลาดหรือเนื้อหาที่อยากเพิ่มเติม หรือท่านใดอยากที่จะแชร์ประสบการณ์ยินดีรับฟังเสมอครับ :)
UPDATE Jun 20, 2017 :ปรับปรุงและแก้ไขข้อผิดพลาดใน Step ที่ 3 ขอบคุณ Woratana Perth สำหรับข้อมูลและการแจ้งเตือนข้อผิดพลาด