“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 ไปแก้ปัญหาที่เกิดขึ้นจริงในโลกของธุรกิจ หลังจากเราเห็นภาพรวมของ Deep Learning กันมาแล้วก็ถึงเวลาลงลึกด้านวิชาการกันบ้าง (ขั้นตอนนี้อาจจะเป็นยาขมของใครหลายๆคน แต่หากผ่านไปได้ยาขมก็จะกลายเป็นขนมหวานทันที) เมื่อตัดสินใจลงลึกด้าน Deep Learning แล้ว ก็คงหนีไม่พ้นคณิตศาสตร์หรือสูตรการคำนวณต่างๆ หากใครมาจากสายโปรแกรมเมอร์อาจจะคิดว่า Deep Learning ก็แค่เรียกใช้ library มาสร้าง model แล้วก็นำไปใช้งานได้ แบบนั้นมันง่ายไปครับ ในชีวิตจริงหรือโลกของธุรกิจจะเจอกับปัญหาที่แตกต่างกันไปในแต่ละโดเมน ดังนั้นการที่เราเข้าใจถึงทฤษฎีและสามารถนำประยุกต์ใช้ได้จึงจะเป็นเรื่องดี แต่!!!….. เราก็คงไม่ไปรือตำราพีชคณิตสมัยเรียนมหาวิทลัยมานั่งอ่านกันใหม่ แต่เราจะดึงมาเฉพาะส่วนสำคัญๆ ที่จำเป็นเท่านั้นครับ :)
อัลกอริทึม feed-forward neural networks ข้อมูลจะถูกส่งไปเพียงหนึ่งทิศทาง กล่าวคือไปข้างหน้าจาก input node ส่งผ่านไปยัง hidden nodes และก็จะส่งไปต่อยัง output nodes เมื่อได้ผลลัพธ์ออกมาก็จะนำมาคำนวณผลลัพธ์กับค่าเป้าหมาย เพื่อหาค่าผิดพลาด (error) การทำงานข้างต้นเป็นรูปแบบการทำงานอย่างง่าย หรือเพียงแค่ 1 layer แต่ถ้าหากเป็น Neural networks แบบหลาย layer จะมีการใช้อัลกอริทึมแบบ Backwardpropagation (ส่งค่าแบบย้อนกลับ) เพื่อใช้ปรับปรุงค่าน้ำหนักของเครือข่าย และอัลกอริทึมที่บทบาทในการปรับค่าให้เหมาะสมที่สุดก็คือ Gradient Descent
ถ้าเป็นในมหาวิทยาลัย เมื่อเรียนทฤษฎีกันจนสมองบวมแล้ว ก็ถึงเวลาเข้า workshop ลงมือปฏิบัติกัน ขั้นตอนนี้หากใครมีพื้นฐานด้านโปรแกรมมิ่งบ้างแล้วก็อาจจะสบายหน่อย แต่หากใครยังเขียนโปรแกรมไม่เป็นก็อาจจะต้องไปลงคอร์สออนไลน์ที่สอนเขียนโปรแกรมแล้ว ซึ่งเราจะใช้ Deep learning library ที่นิยมในปัจจุบันมา implement ตัวอย่างเช่น
สำหรับวิธีการใช้งาน รวมถึง tutorial สำหรับ library ต่างๆ สามาถหาอ่านได้ตามอินเตอร์เน็ตหรือลงเรียนคอร์สที่มีทั้งฟรีและเสียเงินครับ ;) Computer Vision เป็นสาขาที่ว่าด้วยเรื่องเกี่ยวกับการพัฒนาให้คอมพิวเตอร์สามารถรับรู้หรือมองเห็นได้เหมือนกับตาของมนุษย์ และอัลกอริทึมที่นิยมในสายนี้ก็คือ convolutional neural networks
ขั้นตอนที่ 5 เป็นการทำให้คอมพิวเตอร์มองเห็นโลกมนุษย์ได้ สำหรับขั้นตอนนี้ก็เป็นการทำให้คอมพิวเตอร์สามารถเข้าใจภาษาของมนุษย์ เพื่อที่จะได้สื่อสารและเข้าใจโลกใบนี้ได้มากยิ่งขึ้น
หากมาถึงขั้นนี้ได้ แสดงว่าคุณก็พร้อมแล้วที่จะออกสู่ทะเลกว้าง ปัจจุบันสาขา Deep Learning ยังมีหัวข้ออีกมากมายที่ให้ได้ศึกษาหรือนำมาพัฒนาต่อยอดได้อย่างหลากหลาย หรือจะลองศึกษาหัวข้อเชิงประยุกต์อื่นๆ เช่น Self-Driving Car เป็นต้น บทความนี้ไม่ได้รวมรวบหัวข้อของ Deep Learning ไว้ได้อย่างครบถ้วน แต่พอจะเป็นแนวทางและมุมมองในภาพรวมให้กับผู้ที่กำลังจะเริ่มต้นหรือผู้ที่มีความสนในสาขา Deep Learning ได้ศึกษาเพิ่มต่อไป หากมีข้อผิดพลาดหรือเนื้อหาที่อยากเพิ่มเติม หรือท่านใดอยากที่จะแชร์ประสบการณ์ยินดีรับฟังเสมอครับ :) UPDATE Jun 20, 2017 :ปรับปรุงและแก้ไขข้อผิดพลาดใน Step ที่ 3 ขอบคุณ Woratana Perth สำหรับข้อมูลและการแจ้งเตือนข้อผิดพลาด |