Babel Coder

[Machine Learning#1] Machine Learning คืออะไร? รู้จักประเภทต่างๆของ Machine Learning

beginner

ค่ำคืนหนึ่งที่หมอกลงจัด คุณเดินอยู่ชายป่าที่ระงมด้วยเสียงหมาหอน สองมือกุมแน่นที่ iPhone 6+ ที่ยังผ่อนอิอ้อนไม่หมด ทันใดนั้นสัตว์ประหลาดสีเหลืองอ่อนแก้มแดงเป็นแป๊ะยิ้มก็โผล่มากลางจอ ก่อนที่คุณจะเลือกขว้าง Pokemon Ball ออกไป คุณทราบได้อย่างไรว่านั่นคือ Pikachu?

Pikachu

ใช่แล้วครับคุณกำลังเล่น Pokemon Go อยู่ แน่นอนว่าตัวเกมได้บอกคุณอยู่แล้วว่า Pokemon ที่คุณเห็นนั้นเป็นตัวอะไร แต่ถ้าเป็นเครื่องคอมพิวเตอร์หละ? เราจะทำอย่างไรให้มันแยกแยะได้ด้วยตนเองว่าลักษณะแบบไหนคือ Pokemon ชนิดใด?

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

บทความนี้จึงจะแนะนำให้รู้จักกับ Machine Learning หรือแปลเป็นภาษาไทยฉบับราชบัณฑิตไม่ได้กล่าวไว้ว่า “การเรียนรู้ของเครื่องจักร” มาดูกันซิว่าคอมพิวเตอร์ของเราสามารถเรียนรู้อะไรได้บ้าง

สารบัญ

Machine Learning คืออะไร?

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

Machine Learning นั้นเป็นการรวมของศาสตร์หลายแขนงไม่ว่าจะเป็น วิทยาการคอมพิวเตอร์, วิศวกรรม และโดยเฉพาะอย่างยิ่ง… สถิติ นอกจากนี้มันยังเชื่อมโยงกับองค์ความรู้ปลายทางที่เราต้องการนำไปประยุกต์ใช้ เช่น ชีววิทยา เคมี หลักการตลาด เป็นต้น

ตัวอย่างการใช้งานของ Machine Learning

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

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

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

สารพัดศัพท์น่ารู้ใน Machine Learning

เนื่องจากผู้อ่านกำลังคลั่ง Pokemon Go มากจึงอยากสร้างระบบเพื่อรับข้อมูลเกี่ยวกับโปเกมอนซักตัวเข้ามา เพื่อให้ระบบแยกแยะว่าลักษณะดังกล่าวคือโปเกมอนชนิดใด โปเกมอนชนิดเดียวกันมักมีลักษณะร่วมเดียวกัน แต่ข้อมูลบางอย่างก็ไม่เหมือนกันเช่นน้ำหนัก ตัวไหนกินเยอะก็อ้วนหน่อย ตัวไหนกินน้อยก็ผอมเป็นไม้เสียบลูกชิ้น (ว่าแต่โปเกมอนมันกินด้วยหรอ - -")

น้ำหนัก (kg) ส่วนสูง (m) ประเภท ชื่อ
8.5 0.6 Fire Charmander
9.1 0.65 Fire Charmander
2.9 0.3 Bug Caterpie
1.8 0.3 Flying Pidgey
6.0 0.4 Electric Pikachu
6.9 0.7 Grass / Poison Bulbasaur

จากตารางข้างบนพบว่าเมื่อเราพิจารณาถึงโปเกมอนตัวหนึ่งๆ เราจะใช้น้ำหนัก ส่วนสูง และประเภทเป็นตัวแยก เรียกสิ่งเหล่านี้ที่ใช้เป็นตัววัดว่า features หรือ attributes แต่ละแถวของตารางเราได้จากการเก็บตัวอย่างโปเกมอนที่เกิดขึ้นจริงตามธรรมชาติ ตัวอย่างโปเกมอนที่เราไปสำรวจมาเหล่านี้เรียกว่า instances โดยแต่ละ instance ต้องประกอบด้วย features ที่เราต้องการใช้วัดด้วย

จุดประสงค์ของโปรแกรมเราคือเมื่อเราจับโปเกมอนตัวใหม่ได้ ระบบต้องจำแนกได้ว่าโปเกมอนตัวนั้นคือตัวอะไร การเรียนรู้ของเครื่องจักรเพื่อจำแนกประเภทเราเรียกว่า classification

มีหลายอัลกอริทึมเพื่อใช้สอนคอมพิวเตอร์ในการทำ classification แต่โดยพื้นฐานแล้วเราต้องมีชุดข้อมูลนึงก่อน โดยชุดข้อมูลนี้ได้จากการเก็บตัวอย่างจริง แล้วส่งให้คอมพิวเตอร์เพื่อให้มันเรียนรู้ที่จะแยกประเภทได้โดยอาศัยการเรียนรู้จากข้อมูลที่มีอยู่ ข้อมูลที่เราใส่เข้ามาแรกเริ่มเพื่อให้เครื่องจักรเรียนรู้นี้เรียกว่า training set แน่นอนว่ามันต้องมีคุณภาพด้วย

จากตัวอย่างของเราจะได้ว่าเรามีตัวอย่างทั้งหมด 6 ตัวหรือ 6 training examples นั่นเอง แต่ละตัวอย่างจะระบุชัดเจนว่ามันคือประเภทอะไร เช่น ถ้าน้ำหนัก 8.5 kg, สูง 0.6 m, ประเภท Fire จะเป็น Charmander ไอ้เจ้า Charmander นี่ละครับคือ target variable หรือสิ่งที่เราอยากจะให้คอมพิวเตอร์ของเราบอกได้ว่าสิ่งที่เรากำลังจะป้อนให้มันต่อไปนี้มีประเภทเป็นอะไร

เมื่อเราออกแบบอัลกอริทึมเสร็จแล้วก็ถึงเวลาต้องทดสอบกัน เราลองใส่ข้อมูลให้คอมพิวเตอร์แล้วดูซิว่ามันแยกประเภทได้ถูกต้องไหม ข้อมูลที่เราใส่เพื่อทดสอบความแม่นยำของอัลกอริทึมเรานี่หละครับเรียกว่า test set เมื่อโปรแกรมของเรามีความแม่นยำเพียงพอแล้วเราจึงบอกได้ว่าคอมพิวเตอร์เราเรียนรู้จากข้อมูลที่มีหรือมี knowledge representation แล้ว

ประเภทของ Machine Learning

ประเภทของ machine learning สามารถจำแนกตามหน้าที่และขอบเขตปัญหาได้หลักๆ คือ supervised learning, unsupervised learning และ reinforcement learning

Supervised Learning

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

จะเห็นได้ว่า classification ต้องอาศัยการสอนก่อน คือสอนให้มันรู้จักข้อมูลจากตัวอย่างจริงก่อน ว่าถ้ามีน้ำหนัก ส่วนสูง ประเภทแบบนี้ จะมี target variable แบบไหน ลักษณะการทำงานที่ต้องอาศัย traning examples นี่หละครับที่เราเรียกว่า supervised learning

อีกหนึ่งตัวอย่างของ supervised learning คือ regression ในปัญหาแบบ classification ผลลัพธ์ที่ได้จะเป็นอะไรที่จำกัดครับ เช่น โปเกมอนที่เป็นไปได้มีแค่ Charmander, Caterpie, Pidgey, Pikachu และ Bulbasaur เท่านั้น จะเป็นอื่นไม่ได้ จะเป็น Charmanderkachu (เอา Charmander มาร่วมร่างกับ Pikachu) ก็ไม่ได้เช่นกัน แต่สำหรับปัญหาแบบ regression นั้นผลลัพธ์จะอยู่ในช่วงๆหนึ่งและเป็นตัวเลขครับ

ตัวอย่างปัญหาแบบ regression เช่น ปี 2560 อยากทราบว่าราคาบ้านเดี่ยวของโครงการหมู่บ้าน “ขายทำไม” จะมีราคากลางเท่าไหร่ เพื่อนๆจะสังเกตได้ว่าผลลัพธ์ที่คอมพิวเตอร์ตอบกลับมาเป็นตัวเลขใช่ไหมครับ เป็นทศนิยมก็ได้ ไม่ได้มีลักษณะค่าจำเพาะแบบ classification

Unsupervised Learning

Unsupervised learning นั้นตรงกันข้ามกับ supervised learning ครับ การเรียนรู้แบบนี้จะไม่มีการระบุผล (target variable) ที่ต้องการไว้ก่อน ให้คอมพิวเตอร์หาความสัมพันธ์จากข้อมูลเอาเอง จึงกล่าวได้ว่าการเรียนรู้ประเภทนี้เป็นการเรียนรู้แบบไม่มีผู้สอนนั่นเอง

ตัวอย่างของ unsupervised learning เช่นการแบ่งกลุ่มข้อมูลหรือที่เรียกเป็นภาษาฝรั่งว่า clustering กระบวนการแบ่งกลุ่มข้อมูลนี้เป็นการจัดวัตถุต่างๆให้อยู่ในกลุ่มที่เหมาะสม โดยวัตถุในกลุ่มเดียวกันจะคล้ายกัน และแตกต่างจากวัตถุในกลุ่มอื่น clustering ต่างจาก classification ตรงที่ classification นั้นเรารู้ประเภทเป้าหมายล่วงหน้า แต่ clustering เราไม่รู้กลุ่มล่วงหน้า

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

Reinforcement Learning

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

สำหรับบทความนี้จะเป็นเพียงการแนะนำเรื่องของ Machine Learning แบบคร่าวๆ บทความหน้าเราจะเริ่มต้นมารู้จักกับวิธีจำแนกประเภทข้อมูลอย่างง่ายๆด้วย k-Nearest Neighbors กันครับ


แสดงความคิดเห็นของคุณ


JungKo7 เดือนที่ผ่านมา

Pokemon Go ก็มา