Posted on Leave a comment

Artificial Intelligent, Machine Learning, Deep Learning ต่างกันอย่างไร?

Artificial Intelligent (AI), Machine Learning (ML), Deep Learning (DL) เป็นคำที่ได้ยินกันบ่อย สื่อถึงความฉลาดของเครื่องจักร แต่มันต่างกันอย่างไรล่ะ ลองอ่านกันดูนะครับ

ที่จริงแล้ว แต่ละคำมีความหมายและขอบเขตที่แตกต่างกันนิดหน่อยคือ AI เป็นการพูดถึงภาพรวมกว้าง ๆ ของเครื่องจักรที่แสดงออกเหมือนว่าฉลาด มีความสามารถในการแก้ปํญหาที่ซับซ้อนได้ โดยมี ML เป็นหนึ่งในเทคนิคหนึ่งที่ใช้ทำให้ AI ดูฉลาด ส่วน DL ก็เป็นส่วนหนึ่งของ ML อีกที ดังนั้น ทั้ง AI, ML และ DL จึงมีขอบเขตและความสัมพันธ์เป็นลักษณะดังรูป

รูปที่ 1 แสดงถึง ML เป็นส่วนหนึ่งของ AI และ DL ก็เป็นส่วนหนึ่งของ ML

นี่เป็นเพียงภาพความสัมพันธ์คร่าว ๆ เท่านั้น หากต้องการความกระจ่างมากขึ้น คงต้องทำความรู้จักและเข้าใจแต่ละอย่างให้มากขึ้นอีกหน่อย ดังนี้

ถ้าแปลกันตรงตัวก็คือ “ปัญญาประดิษฐ์” นั่นเอง ปัญญาประดิษฐ์เป็นแนวคิดกว้าง ๆ ว่า เป็นคอมพิวเตอร์ หรือหุ่นยนต์ หรือเครื่องจักร สามารถแสดงการแก้ไขปัญหาได้เหมือนมนุษย์ ซึ่งต้องเน้นว่า เป็นการ “แสดง” ออกที่เหมือนมนุษย์ ไม่ใช่ “คิด” ได้เหมือนมนุษย์ โดยที่มีหลายเทคนิคที่ทำให้ เครื่องจักรสามารถแสดงออก หรือแก้ปัญหาได้ เหมือนหรือคล้ายมนุษย์ เช่น rule-based system หรือ expert system ซึ่งเป็นการที่โปรแกรมเมอร์ เขียนโปรแกรมกำหนดไว้หมดแล้วว่า เงื่อนไขแบบไหน หรือสถานการณ์ไหน ต้องเลือกอะไร หรือทำอะไร

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

นอกจาก rule-based system แล้วยังมีเทคนิคอื่น ๆ ที่ช่วยให้เครื่องจักรแสดงออกถึงความฉลาดคล้ายมนุษย์ และเทคนิคหนึ่งที่สำคัญและพูดถึงก่อนบ่อยก็คือ machine learning นั่นเอง

เป็นเทคนิคหนึ่งในการทำให้เครื่องจักรดูมีความสามารถในการแก้ปัญหาได้ฉลาดเหมือนมนุษย์ โดยมีความแตกต่างจาก rule-based system ที่สำคัญคือ แทนที่จะให้ผู้เชี่ยวชาญ หรือโปรแกรมเมอร์กำหนดเงื่อนไขต่าง ๆ ให้ชัดเจนแต่แรก แต่เป็นการให้เครื่องจักรหาเงื่อนไขที่เหมาะสมเอง ผ่านกระบวนการเรียนรู้ 

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

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

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

รูปที่ 2 แสดงความสัมพันธ์ของความเร็วลม และความสูงของคลื่น

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

สิ่งที่นักวิทยาศาสตร์ต้องทำก็คือ สร้างโมเดลทางคณิตศาสตร์ให้สอดคล้องกับข้อมูล เพื่อใช้เป็นเกณฑ์ในการบอกค่าความสูงของคลื่นที่ความเร็วลมต่าง ๆ จากข้อมูลเราเห็นว่า ความสัมพันธ์ค่อนข้างเป็นเส้นตรง ดังนั้นเราจะใช้โมเดลทางคณิตศาสตร์ (สมการ) ของเส้นตรงเพื่อเป็นตัวแทนของความสัมพันธ์นี้ ก็จะได้ดังสมาการที่ 1

y = ax + b ————– ( 1 )

  • x คือ ความเร็วลมชายฝั่ง
  • y คือ ค่าความสูงของคลื่นในทะเล
  • a และ b คือพารามิเตอร์ของโมเดล

เมื่อเราเลือกโมเดลทางคณิตศาสตร์มาแล้ว เราก็ต้องหาค่าพารามิเตอร์ a และ b เพื่อให้ได้สมาการเส้นตรงที่สมบูรณ์ ดังรูปที่ 3 

รูปที่ 3 แสดงถึงโมเดลทางคณิตศาสตร์ ที่แสดงถึงความสัมพันธ์ของข้อมูล

แต่ใครจะเป็นคนหาหาพารามิเตอร์นี้ล่ะ จากกราฟ การจะหาพารามิเตอร์ก็ไม่ยาก หาจุดตัดแกน x และ แกน y ก็น่าจะได้ประมาณว่า a น่าจะเป็น 0.5 และ b น่าจะเป็น 2 แต่ถ้าเราเป็นคนหาพารามิเตอร์ให้กับคอมพิวเตอร์ ก็เท่ากับว่านี่เป็นระบบ expert system คือเราหาให้ทุกอย่าง กำหนดทุกอย่าง เครื่องจักรไม่ต้องเรียนรู้อะไร เอาหละ เราจะไม่หาพารามิเตอร์ให้ แต่เราจะให้คอมพิวเตอร์หาพารามิเตอร์ที่เหมาะสมเอง โดยให้คอมพิวเตอร์เลือกค่าพารามิเตอร์เริ่มต้นออกมา เช่น a เป็น 1และ b เป็น -1 ก็จะได้กราฟเส้นตรงออกมาเป็นเส้นสีแดงดังรูปที่ 4 

รูปที่ 4 แสดงถึงโมเดลทางคณิตศาสตร์ที่มีพารามิเตอร์ยังไม่ดีพอ (สีแดง) และโมเดลเป้าหมายที่ต้องการ (สีเขียว)

แล้วเราก็ต้องให้ตัวชี้วัดว่า พารามิเตอร์ที่คอมพิวเตอร์เลือกหรือหามาได้นั้นดีเพียงพอแล้วหรือยัง และก็ให้วิธีการปรับปรุงค่าพารามิเตอร์ให้ดีขึ้น แล้วให้คอมพิวเตอร์ปรับปรุงค่าพารามิเตอร์ที่ดีขึ้นไปเรื่อย ๆ จนกว่าจะได้พารามิเตอร์ที่ทำให้ได้เส้นตรงที่เราพอใจ (เส้นสีเขียว) ซึ่งเราเรียกกระบวนการปรับปรุงพารามิเตอร์จนกว่าจะได้พารามิเตอร์ที่ดีจนน่าพอใจนี้ว่า  “การเรียนรู้” ซึ่งเป็นที่มาของคำว่า machine learning นั่นเอง 

ดังนั้น หน้าที่ของนักวิทยาศาสตร์ตอนนี้ก็คือ 

  1. วิเคราะห์ข้อมูลเพื่อเหลือโมเดลให้เหมาะสมกับข้อมูล จากนั้น ให้คอมพิวเตอร์หาพารามิเตอร์ที่เหมาะสมให้กับโมเดล โดย
  2. เขียนโปรแกรมให้คอมพิวเตอร์ปรับปรุงพารามิเตอร์เหล่านั้น
  3. คิดวิธีประเมินว่า พารามิเตอร์ที่ได้นั้น ดีพอแล้วหรือยัง

ส่วนเทคนิคในการเรียนรู้นั้นก็มีหลายแบบ ไม่ว่าจะเป็น decision tree, random forest, SVM และอื่น ๆ ส่วนตัวที่โดดเด่นและพูดถึงกันมาก (คงเดาได้ไม่ยาก) นั่นก็คือ Deep Learning นั่นเอง

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

รูปที่ 5 แสดงถึงลักษณะของโมเดลคณิตศาสตร์ ที่แสดงลักษณะคล้าย neuron

จากรูปเป็นตัวอย่าง neuron ที่มี 3 input และมีพารามิเตอร์คือ 4 ตัว คือ w1, w2, w3 และ b และเราก็จะได้โมเดลคณิตศาสตร์เป็นสมาการที่ 2 ดังนี้

y = w1x1 + w2x2 + w3x3 + b ————– ( 2 )

นี่เป็นเพียงตัวอย่างหนึ่งเท่านั้น จะเห็นว่าก่อนหน้านี้ในสมาการที่ 1 มี input ตัวเดียว มีพารามิเตอร์ 2 ตัวคือ a และ b แต่ตอนนี้เริ่มซับซ้อนขึ้น คือมี input 3 ตัว และมีพารามิเตอร์ 4 ตัว

นอกจากนี้ ถ้านำ neuron หลาย ๆ ตัวมาเรียงกันเป็นแพ (layer) แล้วเอาแต่ละแพมาซ้อนกันเป็นชั้น ๆ ก็จะได้โมเดลคณิตศาสตร์ที่ซับซ้อนมากยิ่งขึ้น แล้วจะเห็นว่าข้อมูลมีการส่งต่อเพื่อประมวลผลต่อไปหลายชั้น ดังนั้นเราจึงเรียกโครงสร้างนี้ว่า Deep neural network และการใช้โครงสร้างนี้ในการเรียนรู้ ก็เรียกว่า deep learning นั่นเอง 

รูปที่ 6 แสดงถึงการเรียงตัวของ neuron ที่มีลักษณะเป็นชั้น ๆ หลาย ๆ ชั้นซ้อนกัน

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

หวังว่าผู้อ่านจะเห็นภาพในใจมากขึ้นนะครับ แล้วพบกันใหม่ ขอบคุณครับ

ใส่ความเห็น