Introduction to Machine learning

Visarut Junsone
Lazy-Dev
Published in
2 min readMar 10, 2020

หลังจากที่ห่างหายไปนานจากการเขียน blog ครั้งนี้กลับมาเริ่มเขียนอีกครั้งแล้ว เนื่องจากไม่ค่อยได้เรียนรู้อะไรใหม่ๆ ที่เจ๋งๆ ซักเท่าไหร่ แต่ตอนนี้ เราได้หัวข้อมาแล้ว เรียนจบแล้วด้วย ซึ่งนั้นก็คือ Machine Learning นั้นเอง

ลิ้งค์สำหรับคนอยากไปเรียนเอง → https://www.coursera.org/learn/machine-learning

What is Machine Learning?

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

ในที่นี้จะพูดถึงนิยามอยู่ 2 อย่างด้วยกัน

นิยามแรก นิยามโดย Arthur Samuel ว่า

The field of study that gives computers the ability to learn without being explicitly programmed.

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

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

นิยามที่สอง นิยามโดย Tom Mitchell

A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.

คือโปรแกรมคอมพิวเตอร์ที่สามารถเรียนรู้จาก ประสบการณ์ (experience E) โดยอ้างอิงจากการทำงานของ งาน (tasks T) และ วัดประสิทธิภาพได้ (performance P) ถ้าประสิทธิภาพที่ถูกวัดในงานนั้นๆ ได้ จะสามารถนำไปพัฒนา ประสบการณ์ (experience E)

**สำหรับคนที่อ่านนิยามภาษาอังกฤษเข้าใจอยู่แล้วไม่ต้องอ่านที่ผมแปลนะ น่าจะ งงไปกันใหญ่

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

ถึงจุดๆนี้คิดว่าผู้อ่านคงจะเข้า Machine learning เพิ่มขึ้นมาบ้างแล้วละ

ใน การแก้ปัญหาด้วย Machine learning นั้น ทั่วๆไปแล้วจะถูกแบ่งเป็น 2 แบบหลักๆ ซึ่งคือ Supervised learning และ Unsupervised learning

Supervised learning

ใน supervised learning นั้น เป็นการ หาความสัมพันธ์ระหว่าง Input และ output จากข้อมูลที่เรามี ทั้ง Input และ Output
สรุปเป็นคำเข้าใจง่ายกว่า
เป็นการเรียนรู้เพื่อหาผลลัพธ์จากข้อมูลที่เรามี ซึ่งมีทั้ง ข้อมูลต้นทางและผลลัพธ์

มี data set รู้ input และ output เพื่อคาดเดาผลลัพธ์

แต่เดี๋ยวก่อน ยังไม่จบแค่นี้ เจ้า supervised learning ก็ยังมีการจัดหมวดย่อยลงไปอีกเป็น regression และ classification

Regression

regression จะเป็นการคาดเดาผลลัพท์จาก continuous output นั้นหมายถึงเรากำลังที่พยายามที่ map ค่า input กับ continuous function

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

ตัวอย่างเช่น — การคาดเดาราคาบ้านโดนมี Data set เกี่ยวกับขนาดบ้านและราคาบ้าน โดยใช้ continuous function ง่ายๆ เช่น สมการเส้นตรง จาก ขนาดบ้าน วาดกราฟ เทียบ กับราคาบ้านที่มีจาก Data set

ตัวอย่างเช่น — การคาดเดาอายุจากรูปที่ได้รับ

Classification

classification ค่อนข้างที่จะตรงกันข้างกับ regression มันเป็นการคาดเดาผลลัพท์จาก discrete output นั้นหมายถึงเรากำลังที่พยายามที่ map ค่า input กับการจัดหมวดหมู่

ตัวอย่างเช่น — ใช้ Data set เกี่ยวกับขนาดบ้านและราคาบ้าน เพื่อหาหมวดหมู่ที่ ขายบ้าน ราคา “มากกว่า”หรือ “น้อยกว่า” ราคาที่ต้องการ

ตัวอย่างเช่น — การคาดเดาผู้ป่วยที่มีเนื้องอก ว่าเป็น “เนื้อดี” หรือ “เนื้อร้าย”

Unsupervised learning

Unsupervised learning นั้นสามารถช่วยเราในการแก้ปัญหาที่ เราไม่รู้ว่าผลลัพท์เป็นรูปแบบไหน แต่เรามี Data set ของ input ซึ่งเราสามารถนำส่วนนี้มาหาโครงสร้างของข้อมูล โดยที่เราไม่จำเป็นต้องรู้ผลลัพท์มาก่อน

เราสามารถทำได้โดยการจัดกลุ่ม (clustering) ข้อมูล ตามความสัมพันธ์ระหว่างตัวแปรในข้อมูล

Clustering

ตัวอย่างเช่น — เรามีก้อนหิน 1,000,000 ก้อน ที่มีลักษณะที่แตกต่างกัน และเราต้องการให้คอมพิวเตอร์เรียนรู้ที่จะแบ่งกลุ่มก้อนหินเหล่านี้ เช่น แบ่งด้วยสี ขนาด อื่นๆ

Non-Clustering

ตัวอย่างเช่น — “Cocktail Party Algorithm” ที่ช่วยให้เราสามารถหาโครงสร้างของข้อมูลในสภาพแวดล้อมที่วุ่นวายมากๆได้ เช่น เราอยู่ใน Cocktail Party ที่มีคนอยู่มากมาย และมีสองคนในนั้นมี microphone บันทึกเสียงเป็น Data ไว้ ภายในเสียงเราจะได้ยินเสียงของคนที่ถือ microphone และ เสียงโดยรอบด้วย ซึ่งเราต้องการให้คอมพิวเตอร์เรียนรู้จาก ข้อมูลเสียงเพื่อแยกเสียงของผู้ถือ microphone ออกมาให้เป็นเสียงที่ชัดเจน และแยกจากเสียงอื่นๆ

--

--

Visarut Junsone
Lazy-Dev

I’m Full-Stack Developer. ReactJS Golang C# Javascript C++ PHP and learning a lot more. Not lazy as it name. “Lazy-Dev”