Intro to Machine Learning (Ep.2/2)

Intro to Machine Learning (Ep.2/2)
Created by Leonardo.ai

อ่าน Ep.1 ได้ที่ https://www.nerd-data.com/intro_ml_ep1/


Part 2 : Reinforcement Learning (RL)

  • ในที่สุด เราก็มีบางอย่างที่ใกล้เคียง AI 
  • ในบทความหลายฉบับ บอกว่า RL คือ สิ่งที่อยู่ระหว่าง Supervised และ Unsupervised แต่จริง ๆ แล้วมันไม่มีอะไรเกี่ยวข้องกันเลย
  • RL ถูกใช้ในกรณีที่ เมื่อปัญหาของเราไม่เกี่ยวข้องกับ ข้อมูล แต่เราอยู่ในสิ่งแวดล้อม / สถานการณ์ เช่น โลกของวีดีโอเกมส์ เมืองสำหรับระบบขับรถด้วยตนเอง (Self-driving car)
  • เราไม่ได้ใช้ความรู้เกี่ยวกับกฎบนถนนทั้งหมดในโลก สอนระบบขับรถอัตโนมัติด้วยตนเอง
  • ไม่ว่าเราจะเก็บรวบรวมข้อมูลเท่าใด เราก็ยังไม่สามารถคาดการณ์สถานการณ์ที่เป็นไปได้ทั้งหมด ดังนั้น เป้าหมาย คือ ลดข้อผิดพลาด ไม่ใช่คาดการณ์ การเคลื่อนที่ของรถ
  • การอยู่รอดในสภาพแวดล้อมเป็นแนวคิดหลักของ RL โยนหุ่นยนต์ เข้าสู่สภาพแวดล้อมจริง "ลงโทษเมื่อทำผิดพลาด" และ "ให้รางวัลเมื่อทำถูกต้อง"
  • วิธีที่มีประสิทธิภาพมากขึ้น คือ สร้างเมืองเสมือนจริง และปล่อยให้รถยนต์ที่ขับขี่ด้วยตนเอง เรียนรู้เทคนิคทั้งหมดที่นั่นก่อน
  • มี 2 วิธีการ ที่แตกต่างกัน คือ 1. Model-Based และ 2. Model-Free 
    1. Mode-Based คือ ระบบรถยนต์ ต้องจดจำแผนที่ทั้งหมด เป็นวิธีที่ล้าสมัย เพราะจริง ๆ ไม่สามารถใส่แผนที่ทั้งหมดบนโลกได้ 
    2. Model-Free คือ ระบบรถยนต์ ไม่จำเป็นต้องจดจำแผนที่ทั้งหมด แต่พยายามรับมือกับสถานการณ์ โดยพยายามทำให้ได้ Reward มากที่สุด
  • Machine เคยเอาชนะ แชมป์โลก Go (หมากล้อม) ความหลากหลายของวิธีการเล่น มากกว่า จำนวน Atom ใน universe นั่นหมายถึง Machine ไม่ได้จดจำวิธีการทั้งหมด แต่มันเลือกวิธีที่ดีสุด ในการเดินหมากแต่ละสถานการณ์
  • เบื้องหลัง คือ Q-Learning (และอนุพันธ์ของมัน SARSA & DQN) Q ย่อจาก Quality (คุณภาพ) ซึ่งหุ่นยนต์ เรียนรู้ที่จะปฏิบัติ ให้ได้คุณภาพดีที่สุดในแต่ละสถานการณ์ และในแต่ละการปฏิบัติจะถูกจดจำไว้ คล้าย ๆ กับ กระบวนการของ Markov

(Routine) Markov Process

  • Genetic Algorithm เป็นที่นิยมมาก เสมือนการให้หุ่นยนต์จำนวนหนึ่งเข้าไปในสภาพแวดล้อมเดียวกัน และให้มันพยายามที่จะบรรลุเป้าหมายจนกว่าพวกมันจะตาย จากนั้นเราเลือกอันที่ดีที่สุด มีการผสมกัน ให้ยีนกลายพันธุ์ และ Re-run โดยการจำลองสภาพแวดล้อมขึ้นมาอีก หลังจากผ่านไปหลายพันปีเราจะได้ สติปัญญา (Intelligence) ที่ฉลาด และ อาจเป็นวิวัฒนาการที่ดีที่สุด
  • Genetic Algorithm เป็นส่วนหนึ่งของ RL 

Part 3 : Ensemble Methods

ใช้หลาย ๆ algorithms เพื่อเรียนรู้ และแก้ไขข้อผิดพลาดซึ่งกันและกัน

นำไปใช้กับ

    • เหมาะกับวิธีดั้งเดิม (แต่ทำงานได้ดีขึ้น)
    • ระบบค้นหา (Search System)
    • Computer Vision
    • การตรวจจับวัตถุ (Object Detection)
  • Algorithms ที่นิยม : Random Forest, Boosting
  • สำหรับวิธีการปัจจุบันที่ทันสมัย Ensemble และ Neural Network (NN) เป็นสองวิธีหลัก ที่ให้ผลลัพธ์ แม่นยำ และ ใช้อย่างแพร่หลาย
  • อย่างไรก็ตาม NN เป็นคำที่อยู่ในความสนใจมากกว่า คำว่า "Boosting" หรือ "Bagging" (Ensemble)
  • หากเราใช้ Algorithms ที่ไม่มีประสิทธิภาพ และให้มันแก้ไขข้อผิดพลาดซึ่งกันและกัน (แนวทางของ Ensemble) คุณภาพโดยรวมของระบบจะสูงกว่า Algorithm ที่ดีที่สุดอันเดียว
  • ผลลัพธ์จะดียิ่งขึ้น หากเราใช้ Algorithms ซึ่งคาดการณ์ผลลัพธ์ที่แตกต่างกันอย่างมาก เช่น Regression และ Decision Trees โดยที่ Algorithms เหล่านี้ จะ Sensitive มาก แม้มี Outliers เพียงค่าเดียวก็อาจทำให้ Model ผิดพลาดได้
  • จริง ๆ แล้ว เราสามารถใช้ Algorithms ใด ๆ เพื่อสร้าง Ensemble แต่ไม่ควรใช้ Algorithms อย่าง Bayes หรือ KNN

มี 3 วิธี ในการสร้าง Ensembles

  1. Stacking
  2. Bagging
  3. Boosting 

Stacking

  • Output ของ Models หลาย ๆ ตัว ถูกส่งผ่านเป็น Input เพื่อการตัดสินใจขั้นสุดท้าย 
  • การผสม Algorithms "เดียวกัน" กับ ข้อมูล "เดียวกัน" จะไม่มีประโยชน์ ต้อง "แตกต่าง" กัน การเลือก Algorithms นั้นขึ้นอยู่กับเรา แต่อย่างไรก็ตาม ในการตัดสินใจขั้นสุดท้าย Regression คือ ตัวเลือกที่ดี
  • "Stacking" ได้รับความนิยมในทางปฏิบัติน้อยกว่า "Bagging" และ "Boosting"
การทำงานแบบ Stacking Reference : https://vas3k.com/blog/machine_learning/

Bagging

  • BAGGING ย่อจาก "Bootstrap AGGregatING" วิธีนี้จะใช้ Algorithms เดียวกัน แต่ Train กับข้อมูลชุดย่อย (Subset) ต่าง ๆ กัน
  • ข้อมูลชุดย่อย จากการสุ่ม อาจนำมาใช้ซ้ำ เช่น จากชุดเช่น "1-2-3" สามารถเป็นชุดย่อย "2-2-3", "1-2-2", "3-1-2" ฯลฯ เราใช้ชุดข้อมูลใหม่เหล่านี้ ในการ Train Algorithm เดียวกัน ผลลัพธ์ Output ที่ได้หลาย ๆ ครั้ง จะถูกเลือกคำตอบสุดท้ายโดยการ Voting
  • Bagging ที่รู้จักกันดี คือ "Random Forest" ซึ่งใช้วิธี Bagging กับ "Decision Tree"
  • ในบางงาน หากต้องการประมวลผลแบบ Real time การใช้ Random Forest ที่มีความแม่นยำน้อยกว่า NN เพียงเล็กน้อย อาจมีความเหมาะสมมากกว่า (เพราะทำงานได้เร็วกว่า)
การทำงานแบบ Bagging Reference : https://vas3k.com/blog/machine_learning/

Boosting

  • Boosting Algorithm จะถูก Train ทีละลำดับ ในการทำงานลำดับต่อไป จะให้ความสนใจกับข้อมูลส่วนที่ผิดพลาดก่อนหน้านี้ ทำซ้ำไปเรื่อย ๆ จนกว่าผลลัพธ์เป็นที่น่าพอใจ
  • เช่นเดียวกับ Bagging เราใช้ข้อมูลชุดย่อย (แต่ไม่ใช่การสร้างแบบสุ่ม) 
  • ในแต่ละข้อมูลชุดย่อย ข้อมูลที่ Algorithm ก่อนหน้าไม่สามารถดำเนินการได้ จะถูกนำไป Train ด้วย Algorithm ใหม่ เพื่อ เรียนรู้ / แก้ไข ข้อผิดพลาดของก่อนหน้านี้
  • ข้อดี คือ ทำให้ความถูกต้องสูงขึ้น ข้อเสีย คือ ไม่ใช่การทำงานแบบขนาน (Parallel) ทำให้ทำงานช้ากว่า Stacking, Bagging แต่ยังเร็วกว่า เมื่อเทียบกับ NN
  • ปัจจุบันมีเครื่องมือ Boosting ที่นิยม 3 ตัว คือ CatBoost, LightGBM, XGBoost

Note : CatBoost ย่อจาก Category Boosting

การทำงานแบบ Boosting Reference : https://vas3k.com/blog/machine_learning/

Part 4 : Neural Network (NN) & Deep Learning (DL)

ตัวอย่างที่นำมาใช้

    • ใช้แทน Algorithms ทั้งหมดข้างต้น
    • การระบุวัตถุ (Object Identification) บนภาพและวิดีโอ
    • การจำแนกเสียง / การสังเคราะห์เสียง
    • การประมวลผลภาพ 
    • การถ่ายโอนรูปแบบ (Style Transfer)
    • เครื่องแปลภาษา
  • สถาปัตยกรรมที่นิยม : Perceptron, Convolutional Neuron Network (CNN), Recurrent Neuron Network (RNN), Auto-encoders
  • NN นั้นเป็นชุดของ เซลล์ประสาท (Neurons) ที่เชื่อมต่อ (Connect) ระหว่างกัน 
  • Neurons เป็นฟังก์ชั่น ที่มี Input จำนวนมาก แต่ Output เพียงหนึ่งเดียว หน้าที่ของมัน คือ การรับข้อมูล Input ทั้งหมด ดำเนินการผ่านฟังก์ชัน และส่งผลลัพธ์ไปยัง Output
  • ตัวอย่างเซลล์ประสาทอย่างง่าย เช่น ถ้าผลรวมตัวเลขทั้งหมดจาก Input มีค่ามากกว่า N ให้ผลลัพธ์ "เป็น 1" นอกนั้น ผลลัพธ์ "เป็น 0"
  • การเชื่อมต่อ เหมือนเป็นช่องทางระหว่างเซลล์ประสาท เชื่อมต่อ Output ของเซลล์ประสาทหนึ่งกับ Input ของอีกเซลล์หนึ่ง เพื่อสามารถส่งตัวเลขต่อ ๆ กันได้
  • แต่ละการเชื่อมต่อมีพารามิเตอร์ตัวหนึ่ง คือ  น้ำหนัก (Weight) เป็นเหมือนความแรงของการเชื่อมต่อสัญญาณ เมื่อเลข 10 ผ่านการเชื่อมต่อที่มีน้ำหนัก 0.5 มันจะกลายเป็น 5
  • การที่ Network เรียนรู้ คือ น้ำหนักจะถูกปรับ ในระหว่างการ Train Model
Single Neuron Reference : https://vas3k.com/blog/machine_learning/
  • เงื่อนไขของ Network คือ Neurons จะถูกเชื่อมโยงด้วยลำดับ Layers (ไม่ใช่การสุ่ม) 
  • ภายใน Layer เดียวกันจะไม่เชื่อมต่อกัน แต่เชื่อมต่อกับ Neurons ของ Layers ถัดไปและก่อนหน้า ข้อมูลใน Network จะไปในทิศทางเดียว จาก Input ของ Layer แรกไปยัง Output สุดท้าย
  • หากเรากำหนด จำนวน Layers และ weight ที่เหมาะสม โดยใช้ Input ภาพเลข 4 ที่เขียนด้วยลายมือ 
  • Pixel สีดำ จะทำการ Activate ใช้งาน Neurons ที่เกี่ยวข้องต่อไปเรื่อย ๆ จนกระทั่งให้ผลลัพธ์ Output เป็น 4 อย่างถูกต้อง
Multi-Layer Perceptron (MLP) Reference : https://vas3k.com/blog/machine_learning/
  • ในการเขียน Program ไม่มีใครเขียน Neurons ที่เชื่อมต่อกัน แต่จะคำนวณบนพื้นฐานของ Matrices
  • Network ที่มีหลาย Layers และมีการเชื่อมต่อระหว่าง Neurons ทุกตัวเรียกว่า (Multi Layer) Perceptron - MLP ถือเป็นสถาปัตยกรรมที่ง่ายที่สุด แต่ไม่ค่อยนำไปใช้งานจริง  
  • หลังจากที่เราสร้าง Network เราจะกำหนดวิธีการที่เหมาะสมเพื่อให้ Neurons ตอบสนองอย่างถูกต้องกับสัญญาณ Input ดังนั้น เราต้องมีข้อมูลตัวอย่าง ของ Input และ Output ที่เหมาะสม 
  • ในช่วงเริ่มต้น Weights ทั้งหมด จะถูกกำหนดแบบสุ่ม หลังจากที่ใส่ Input ตัวเลขมันจะให้ผลลัพธ์แบบสุ่มเพราะ Weights ยังไม่ถูกต้อง และเราเปรียบเทียบว่าผลลัพธ์นี้แตกต่างจากสิ่งที่ถูกต้องมากแค่ไหน และกลับไปบอกทุก ๆ Neurons ว่า ทำงานได้ ดี /แย่ แค่ไหน?
  • หลังจากนับแสน ๆ รอบของ “infer-check-punish” เราหวังว่า Weights จะได้รับการแก้ไข / ปรับ ให้เหมาะสม วิธีนี้ เรียกว่า Back-propagation
  • NN ที่ผ่านการ train มาอย่างดี สามารถใช้แทน Algorithms ใด ๆ (และทำงานได้แม่นยำยิ่งขึ้น) ทำให้ได้รับความนิยม 
  • ในที่สุด เราก็มีสถาปัตยกรรมของสมองมนุษย์ การรวบรวม Layers จำนวนมากและสอนพวกมันเกี่ยวกับข้อมูลที่เป็นไปได้ที่พวกมันคาดหวัง จากนั้น ก็เกิด AI Winter (AI ไม่ได้รับความสนใจ) เนื่องจาก Network ที่มี Layers จำนวนมาก ไม่มีพลังในการคำนวณที่เป็นไปได้ในเวลานั้น ทุกวันนี้ PC ที่มี GeForce ยังมีประสิทธิภาพสูงกว่า Data Center ในช่วงเวลานั้น 
  • แต่ ในปี 2012 NN ได้รับชัยชนะในการแข่งขัน ImageNet และเป็นที่รู้จักไปทั่วโลก 
  • ความแตกต่างของ DL กับ NN ดั้งเดิม คือ DL เป็นวิธี Train แบบใหม่ที่สามารถรองรับ Networks ที่ใหญ่กว่าได้
  • ในทางปฏิบัติ Libraries ยอดนิยมของ DL คือ  Keras, TensorFlow & PyTorch 

ส่วนถัดไป มี DL 2 ประเภทหลัก ที่จะอธิบาย คือ I) CNN และ II) RNN

CNN (Convolutional Neuron Network)

  • CNN ถูกนำไปใช้ เช่น ค้นหาวัตถุบนรูปภาพ / วิดีโอ ใช้ในการจำแนกใบหน้า การถ่ายโอนสไตล์ การสร้าง / ปรับปรุงภาพ การสร้าง Effects เช่น ภาพช้า และ การปรับปรุงคุณภาพของภาพ 
  • ทุกวันนี้ CNN ถูกนำมาใช้กับ ข้อมูลรูปภาพ / วิดีโอ แม้กระทั่งใน iPhone ของเรา
  • การทำงานกับรูปภาพ ความยากคือการดึง Features ออกมา หากรูปภาพ ต้องมีการกำหนด Features ด้วยมือ (Handcrafting Features) เพื่อนำไปใช้ Train เช่น นี่คือ ส่วน หู / หาง แมว 
Detectron example
Detectron2 by Facebook (Meta) Reference https://ai.meta.com/tools/detectron2/
  • การกำหนด Features ด้วยมือ อาจมีปัญหามากมาย
    1. หาก “หูแมว” ตกลงมา หรือ มัน “หันหลัง” ให้กล้อง : เราจะมีปัญหา NN จะไม่เห็นอะไรเลย
    2. หากให้เราลองกำหนด 10 Features ของแมวที่แตกต่างจากสัตว์อื่น คงทำไม่ได้ แต่ หากเราเห็นแค่เงาสีดำพุ่งผ่าน ตอนกลางคืน - เราจะบอกได้ว่า คือ แมว เนื่องจากมนุษย์ไม่ได้ดูเพียง รูปแบบหู จำนวนขา และ Features ที่แตกต่างกัน ดังนั้นจึงไม่สามารถอธิบายได้กับ Machine
  • Machine จำเป็นต้องเรียนรู้ Features ต่าง ๆ ด้วยตัวเอง ดังนี้ : แบ่งภาพทั้งหมดออกเป็นบล็อกขนาด 8 x 8 pixels และ กำหนดประเภทของเส้นที่โดดเด่น เช่น แนวนอน [-] แนวตั้ง [|] หรือ แนวทแยงมุม [/]
  • Output จะเป็นตารางที่มีเส้นหลายแบบ แสดงถึงขอบวัตถุบนภาพ ซึ่งเป็น features ที่ง่ายที่สุด และ เราเราสามารถสร้างบล็อก 8 x 8 ได้ไปอีกเรื่อย ๆ เพื่อเพิ่มความซับซ้อนของ features
  • การดำเนินการนี้เรียกว่า Convolution สามารถถูกนำไปใช้ใน Layers ของ NN
Manual Feature Selection vs CNN Reference : https://vas3k.com/blog/machine_learning/

RNN (Recurrent Neural Network)

  • สถาปัตยกรรม ที่นิยมเป็นอันดับ 2 คือ RNN ใช้ใน การแปลภาษาด้วยเครื่อง (Machine Translation) การจำแนกเสียง (Voice Recognition) การสังเคราะห์เสียง (Voice Synthesis) เช่น Amazon Alexa หรือ Google Assistant สามารถพูดได้อย่างชัดเจน (ด้วยสำเนียงที่ถูกต้อง)
  • ด้วย Neural Net ทำให้ Voice Assistant ในปัจจุบันกำลังพยายามพูดทั้งวลี / ประโยค แทนที่จะเป็นทีละตัว เหมือนเมื่อก่อน เราสามารถนำข้อความที่เปล่งเสียงออกมา Train NN เพื่อสร้างเสียงที่ใกล้เคียงกับคำพูดดั้งเดิม
  • กล่าวคือ เราใช้ข้อความเป็น Input และ เสียงของมันเป็น Output ที่ต้องการ
  • เราสามารถ train Perceptron เพื่อสร้างเสียงที่เป็นเอกลักษณ์เหล่านี้ แต่จะจำคำตอบก่อนหน้าได้อย่างไร? ดังนั้น การเพิ่มหน่วยความจำให้กับแต่ละ Neuron เพื่อใช้เป็นข้อมูลเพิ่มเติม ในการทำงานครั้งต่อไป เช่น Neuron รู้ว่ามีเสียงสระ ก็บอกได้ว่า เสียงต่อไปควรจะเป็นอะไรดี
  • นี่คือวิธีของ RNNs
RNN Reference : https://vas3k.com/blog/machine_learning/
  • ปัญหาอันหนึ่ง คือ เมื่อ Neurons จดจำผลลัพธ์ทั้งหมด ที่ผ่านมา จำนวน Connection ใน Networks จะมีขนาดใหญ่มาก จนทำให้ไม่สามารถปรับ Weight ได้ทัน 
  • เมื่อ NN ไม่สามารถลืมของเก่า มันก็ไม่สามารถเรียนรู้สิ่งใหม่ (คล้าย ๆ กับคน)
  • วิธีแก้ในตอนแรก คือ ให้ Neurons  จดจำแค่เพียง ผลลัพธ์ล่าสุดไม่เกิน 5 รายการ
  • แต่วิธีที่ดีกว่า คือ การใช้เซลล์พิเศษ (คล้ายกับหน่วยความจำ) แต่ละเซลล์สามารถบันทึกหมายเลข (Read / Reset ได้)  เรียกว่า Long and Short Term Memory (LSTM)
  • ดังนั้น Neurons สามารถตั้งค่าสถานะในเซลล์นั้น เช่น "มันเป็นพยัญชนะในคำ ครั้งต่อไป ให้ใช้กฎการออกเสียงที่แตกต่างกัน" เมื่อไม่ต้องการตั้งค่าสถานะในเซลล์ จะถูก Reset โดยเหลือเพียง Connection แบบ "Long term" ของ Perceptron เท่านั้น กล่าวคือ NN ได้รับการ Train ไม่เพียงแค่เรียนรู้ Weight แต่ยังสามารถตั้งค่าสถานะในเซลล์ได้

ข้อสรุปสงครามระหว่าง "Machine"

  • คำถามที่ว่า "เมื่อ Machine ฉลาดกว่าเรา และทำให้ทุกคนเป็นทาส?"
  • จริง ๆ แล้ว คำว่า "ฉลาดกว่า" เป็นสิ่งที่วัดได้ยาก แม้เราจะคิดว่ามนุษย์ ฉลาดสุด ในบรรดาสัตว์ แต่ ในบางเรื่องมนุษย์ ไม่สามารถเอาชนะสัตว์ได้ เช่น กระรอกสามารถจดจำสถานที่ ที่ซ่อนอยู่นับพันด้วยถั่ว 
  • ดังนั้นความฉลาดเป็นชุดของทักษะที่แตกต่าง ไม่ใช่การวัดเพียงอย่างเดียว
  • สิ่งที่น่าสนใจ คือ เราเชื่อว่าสมองมนุษย์นั้นจำกัด แต่ความก้าวหน้าทางเทคโนโลยีถูกพัฒนาไปแบบก้าวกระโดด
  • หากต้องการคูณเลข 1,680 กับ 950 จะไม่มีใครคูณในใจ ถ้าให้เครื่องคิดเลข เราจะทำได้ใน 2 วินาที หมายความว่า เครื่องคิดเลขเพิ่งขยายขีดความสามารถของสมองเรา ใช่หรือไม่?
  • ดังนั้น เราจะขยายมันต่อด้วยเครื่องอื่น ได้หรือไม่? เช่น การใช้บันทึกย่อในโทรศัพท์ เพื่อที่เราไม่ต้องจำข้อมูล ก็เหมือนเรากำลังขยายขีดความสามารถของสมองด้วยเครื่องมือนั่นเอง

ข้อมูลอ้างอิง Machine Learning for Everyone https://vas3k.com/blog/machine_learning/