Deep Learning มันทำงานอย่างไรกันนะ?

บทความนี้แปลจาก “Want to know how Deep Learning works? Here’s a quick guide for everyone.”

Twitter เจ้าของบทความ

รูปภาพจาก: Datanami

ช่วงปีสองปีที่ผ่านมานี้หัวข้อที่ได้รับความสนใจมากที่สุดคงหนีไม่พ้น Artificial Intelligence(AI) และ Machine Learning(ML) เนื่องจากความสามารถของมันที่มีประโยชน์อย่างมหาศาลต่อหลายวงการ

ในยุคปัจจุบัน AI เป็นคำที่ถูกใช้ค่อนข้างบ่อย คุณมักจะได้ยิน Developer มากมายกล่าวว่าเขาต้องการที่จะเรียนรู้ “AI” แม้กระทั่งผู้บริหารหลายคนก็อาจจะพูดว่าเขาต้องการที่จะนำ AI มาประยุกต์ใช้กับองค์กรของเขา แต่ทว่าหลายครั้งผู้คนเหล่านี้กลับไม่รู้ความหมายของ AI เลยด้วยซ้ำ

บทความนี้จะอธิบายถึงพื้นฐานของคำว่า AI และ ML และที่สำคัญคุณจะเข้าใจว่า Deep Learning(DL) นั้นทำงานอย่างไร เนื่องจากบทความนี้ตั้งใจเขียนเพื่อให้ทุกคนสามารถอ่านได้ เพราะฉะนั้นจะไม่มีคณิตศาสตร์ยาก ๆ ปรากฎในบทความนี้

บางคนคงเคยได้ยินคำศัพท์ Deep Learning, Neural Networks, Deep Neural Networks และคงสงสัยว่ามันต่างกันอย่างไร ขอให้ทราบไว้ว่าคำศัพท์เหล่านี้ต่างหมายถึงสิ่งเดียวกัน และมันคือ Subset หรือประเภทหนึ่งของ ML

ความเป็นมา

เรื่องที่ต้องเข้าใจเป็นอันดับแรกคือความหมายของ AI และ ML

Artificial Intelligence vs Machine Learning

Artificial Intelligence เป็นการนำความฉลาดของมนุษย์ไปใส่ไว้ในคอมพิวเตอร์

ในงานวิจัย AI ชิ้นแรกนั้น นักวิจัยพยายามที่จะทำให้คอมพิวเตอร์มีความฉลาดคล้ายคลึงกับมนุษย์ โดยให้คอมพิวเตอร์ลองทำงานที่มีความจำเพาะเจาะจงบางอย่าง เช่น การเล่นเกมส์

นักวิจัยใส่ข้อมูลกฎเกณฑ์ต่าง ๆ ของเกมส์ที่คอมพิวเตอร์ต้องทำตาม คอมพิวเตอร์จึงรู้ว่าในการเดินเกมส์แต่ละครั้ง มีความเป็นไปได้ที่จะเกิดสิ่งใดขึ้นบ้าง

Machine Learning หมายถึงความสามารถของเครื่องที่สามารถเรียนรู้สิ่งต่าง ๆ ได้จากข้อมูลที่มีอยู่ โดยที่เราไม่ต้องเขียนโค้ดอธิบายกฎเกณฑ์ต่าง ๆ ของสิ่งนั้น

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

Supervised Learning vs Unsupervised Learning

Supervised Learning เกี่ยวข้องกับการใช้ข้อมูลที่มี inputs และระบุ outputs ที่คาดหวังจาก input นั้น ๆ ไว้ชัดเจน

เมื่อคุณเทรน AI (ฝึกสอน AI) ด้วย supervised learning คุณต้องใส่ input และบอกผลลัพธ์จาก input เหล่านั้น

เมื่อเทรนเสร็จแล้ว AI ก็จะสามารถทำนายผลจากข้อมูลได้ หากผลลัพธ์ที่ได้นั้นผิด ตัว AI ก็จะพยายามแก้ไขตัวมันเองไปเรื่อย ๆ ตามข้อมูลที่เราป้อนให้มัน จนกระทั่งมันไม่มีข้อผิดพลาดอีก

ตัวอย่างของ supervised learning คือการพยากรณ์อากาศ AI จะเรียนรู้ข้อมูลจากอดีต เช่นความดัน, ความชื้น, แรงลม และผลลัพธ์ของมันก็คืออุณหภูมิในแต่ละช่วงเวลา

Unsupervised Learning เป็นการเทรนของ machine learning โดยไม่มีการระบุผลลัพธ์ของ Input ที่ใช้ในการเทรน

เมื่อคุณเทรน AI โดยใช้ unsupervised learning มันคือการให้ AI ตัดสินใจแบ่งกลุ่มข้อมูลด้วยตัวมันเอง

ตัวอย่างหนึ่งของ unsupervised learning คือการทำนายพฤติกรรมของ user สำหรับเว็บ e-commerce การเรียนรู้แบบนี้ คุณไม่ต้องระบุ output ให้กับ input AI จะแบ่งกลุ่มข้อมูลด้วยตัวมันเอง และหลังจากที่แบ่งกลุ่ม user เสร็จเรียบร้อย AI ก็จะบอกคุณว่า user แต่ละคนมีแนวโน้มที่จะซื้อสินค้าประเภทใดบ้าง

แล้ว Deep Learning มันทำงานอย่างไร?

ตอนนี้คุณมีความรู้พื้นฐานเพียงพอแล้วที่จะเรียนรู้ว่า Deep Learning คืออะไร และมันทำงานอย่างไร

Deep Learning เป็นกระบวนการหนึ่งของ machine learning มันทำให้เราสามารถเทรน AI และทำนายผลข้อมูลจากข้อมูลที่ป้อนลงไปได้

ทั้ง Supervised และ Unsupervised สามารถใช้ในการเทรนได้

เราจะเรียนรู้ว่า deep learning ทำงานอย่างไร ผ่าน “airplane ticket price estimation” ซึ่งเป็นโมเดล AI ที่จะใช้ในการทำนายราคาตั๋วเครื่องบิน โดยเราจะเทรนข้อมูลชุดนี้โดยใช้ supervised learning

เราต้องการทำนายราคาตั๋วเครื่องบินจากข้อมูลเหล่านี้

  • สนามบินต้นทาง (Origin Airport)
  • สนามบินปลายทาง (Destination Airport)
  • วันที่เดินทาง (Departure Date)
  • สายการบิน (Airline)

Neural networks

ตอนนี้เราลองมาดูกันว่า AI ตัวนี้มันคิดอย่างไร

คล้าย ๆ กับสมองของสัตว์ใน Neural Network จะมีเซลล์ประสาท(neurons) ซึ่งมันจะถูกแสดงด้วยสัญลักษณ์วงกลมในแผนภาพ ซึ่ง neuron เหล่านี้จะมีการเชื่อมต่อถึงกัน

ภาพจาก: CS231n

Neuron จะถูกแบ่งเป็น 3 ชั้นได้แก่

  1. Input Layer
  2. Hidden Layer(s) — สามารถมีมากกว่า 1 layer ได้
  3. Output Layer

Input layer จะเป็นตัวรับข้อมูลเข้ามา ในกรณีของเราจะมี neuron อยู่ 4 ตัวใน input layer ได้แก่ สนามบินต้นทาง(Origin Airport), สนามบินปลายทาง(Destination Airport), วันที่เดินทาง(Departure Date), และ สายการบิน(Airline) โดยแต่ละ neuron ใน input layer จะทำการส่งข้อมูลไปให้ neuron ใน hidden layer แรก

Hidden layers จะทำการคำนวณทางคณิตศาสตร์กับ input ที่เราป้อนเข้ามา ความท้าทายของการสร้าง neural networks คือการตัดสินใจว่าเราจะให้มี hidden layers กี่ชั้น และจะให้มีneuron ในแต่ละ layer จำนวนเท่าใด

คำว่า Deep ของ Deep Learning หมายถึงการที่เรามีมากกว่า 1 hidden layer นั่นเอง

Output layer จะให้ผลลัพธ์ของการทำนายออกมา ในกรณีของเราก็จะเป็นราคาตั๋วเครื่องบินนั่นเอง

แล้วมันคำนวณราคาอย่างไร?

ตรงนี้เป็นจุดเริ่มต้นความมหัศจรรย์ของ Deep Learning

ในแต่ละการเชื่อมต่อระหว่าง neuron จะมีการถ่วงน้ำหนักไว้อยู่(weight) โดย weight เหล่านี้เป็นสิ่งที่เอาไว้ใช้บอกความสำคัญของ input แต่ละตัว โดยค่าเริ่มต้นของ weight ทั้งหมดนั้นจะถูกตั้งไว้แบบสุ่ม

เมื่อเราทำนายราคาตั๋วเครื่องบิน วันที่การเดินทาง(Departure Date) เป็นหนึ่งในปัจจัยหลักที่ส่งผลต่อราคา เพราะฉะนั้นวันที่การเดินทาง ตอนเชื่อมไปหา neuron ใน hidden layer แรก ก็จะมีน้ำหนักมากนั่นเอง

ภาพจาก: CodeProject

แต่ละ Neuron ของ Hidden layer จะมี Activation Function อยู่ใน Neuron ด้วย ฟังก์ชันพวกนี้ยากที่จะเข้าใจเพราะค่อนข้างจะเกี่ยวข้องกับหลักการทางคณิตศาสตร์

ถ้าจะพูดให้เข้าใจง่าย ๆ จุดประสงค์ของ Activation Function ก็เพื่อเป็นการปรับ(standardize) ผลลัพธ์จาก neuron

เมื่อเรานำข้อมูลที่เรามีไปผ่านในทุก ๆ layer ของ neural network มันก็จะให้ผลลัพธ์ ในที่นี้ก็จะเป็นราคาตั๋วเครื่องบินออกมาทาง output layer

มันก็ไม่ได้ซับซ้อนอะไรมากใช่ไหมครับ 😉

Training the Neural Network

การเทรน AI เป็นส่วนที่ยากที่สุดของ Deep Learning เพราะว่า

  1. คุณต้องมีข้อมูลจำนวนมาก
  2. คอมพิวเตอร์ของคุณต้องมีพลังในการประมวลผลสูงมาก

อย่างในกรณีศึกษาของเรานั้นเราต้องมีข้อมูล Origin Airport, Destination Airport, Departure Date, Airline, และ ราคาตั๋วจำนวนมากมาใช้ในการเทรน AI

ในการเทรน AI นั้นเราต้องใส่ input จากข้อมูลที่เรามี และเปรียบเทียบผลลัพธ์ราคาตั๋วที่เราได้มาจาก AI กับราคาตั๋วจริงจากข้อมูลที่เรามี แต่ AI มันยังไม่ได้ถูกเทรนสักครั้งเลย เพราะฉะนั้นผลลัพธ์มันก็จะผิด

เมื่อเราใส่ข้อมูลทั้งหมดที่เรามีลงไปแล้ว เราสามารถสร้างฟังก์ชันเพื่อแสดงความผิดพลาดที่เกิดขึ้นจากผลลัพธ์ของ AI เทียบกับผลลัพธ์จริง ฟังก์ชันนี้เราจะเรียกมันว่า Cost Function

ค่าของ Cost Function นั้นโดยปรกติแล้วหากมีค่ามากจะหมายถึงมีความผิดพลาดสูง แต่หากมีค่าน้อยก็จะหมายถึงมีความผิดพลาดน้อยนั่นเอง เราจึงต้องการให้ค่านี้มีค่าน้อย ๆ

เราจะลด Cost Function อย่างไร ?

เราสามารถลด cost function ได้จากการปรับเปลี่ยน weight ระหว่าง neuron โดยเราอาจจะให้มันสุ่มเปลี่ยน weight ไปเรื่อย ๆ จนกระทั่ง cost function มีค่าน้อย ๆ แต่ทว่าวิธีนี้มันไม่ดีเท่าไหร่หรอกนะ

แทนที่เราจะใช้วิธีสุ่มค่า weight ไปเรื่อย ๆ เราจะใช้เทคนิคนึงชื่อว่า Gradient Descent

Gradient Descent เป็นเทคนิคที่เราใช้ในการหาค่าต่ำสุดของฟังก์ชัน ในกรณีของเรา เรากำลังหาค่าต่ำสุดของ cost function นั่นเอง

มันทำงานโดยการเปลี่ยน weight ไปทีละนิด ๆ หลังจากเราใส่ข้อมูลเข้าไปใน AI ครบในแต่ละรอบ การคำนวณนั้นมันจะทำการดิฟ(derivative or gradient) cost function จากผลลัพธ์ที่ได้มาจาก weight ชุดเดิม และเราก็จะเห็นว่ามันกำลังเคลื่อนที่ไปในทิศทางใด

ภาพจาก: Sebastian Raschka

การที่เราจะทำให้ cost function มีค่าน้อย ๆ นั้นเราต้องนำข้อมูลของเราไปเข้า AI หลาย ๆ รอบ ตรงนี้เป็นเหตุผลว่าทำไมเราถึงต้องการพลังในการประมวลผลของคอมพิวเตอร์สูงมาก

การอัพเดท weight โดยใช้ gradient descent นั้นมันจะทำอย่างอัตโนมัติเมื่อเราเริ่มเทรน ตรงนี้มันเป็นความมหัศจรรย์ของ Deep Learning!

เมื่อเราเทรนข้อมูลให้ airplane ticket price estimator AI เสร็จแล้ว เราก็จะสามารถใช้มันในการทำนายราคาตั๋วเครื่องบินในอนาคตได้

สรุป

  • Deep learning ใช้ Neural Network เพื่อเลียนแบบความฉลาดของสัตว์
  • ใน Neural Network จะมี layer อยู่ 3 ชั้น ได้แก่ Input Layer, Hidden Layer(s), Output Layer
  • ในแต่ละ neuron จะเชื่อมต่อกันโดยมี weight คอยถ่วงน้ำหนักค่า input ที่ได้รับมา เพื่อบอกความสำคัญของมัน
  • แต่ละ Neuron จะมี Activation Function เพื่อปรับ(standardize) ผลลัพธ์ที่ออกมาจาก neuron ของตนเอง
  • ในการเทรน Neural Network คุณต้องมีข้อมูลจำนวนมหาศาล
  • การเทรนข้อมูลโดยการใส่ข้อมูลเข้าไปในแต่ละรอบจะได้ผลลัพธ์ออกมา ซึ่งเราสามารถนำผลลัพธ์นั้นไปคำนวณ cost function เพื่อดูว่า AI มันให้ผลลัพธ์ผิดพลาดไปจากผลลัพธ์จริงมากน้อยแค่ไหน
  • หลังจากการเทรนข้อมูลในแต่ละรอบ weight ระหว่าง neuron จะถูกปรับโดยใช้ Gradient Descent เพื่อลด cost function

สำหรับผู้ที่ต้องการศึกษาด้าน ML/DL ต่อในเชิงลึกแนะนำให้ศึกษาจาก Youtube Playlist ชุดนี้ (ภาษาไทย)โดยผู้สอนคืออาจารย์เอกพล ช่วงสุวนิช อาจารย์ประจำภาควิชาวิศวกรรมคอมพิวเตอร์ จุฬาลงกรณ์มหาวิทยาลัย บรรยายในคาบเรียน Pattern Recognition(1/2560) แนะนำให้ทำการบ้านตามเพื่อเสริมความเข้าใจด้วยนะครับ

หวังว่าหลังอ่านบทความนี้ ผู้อ่านจะเข้าใจว่า Deep Learning ทำงานอย่างไรกันมากขึ้นนะครับ

การแปลบทความในครั้งนี้ของผมมีจุดประสงค์เพื่อฝึกฝนและขัดเกลาทักษะภาษาอังกฤษของตนเอง โดยแปลจากบทความยอดนิยมบน Medium (ได้รับอนุญาตจากเจ้าของบทความแล้ว)

หากบทความนี้มีข้อผิดพลาดประการใด สามารถแจ้งให้แก้ไขได้ทุกเมื่อเลยครับ

Source: Deep Learning on Medium