ของฟรีไม่มีในโลก..! สิ่งที่มือใหม่หัดใช้ Machine Learning ควรรู้

ว่าด้วยทฤษฎี No Free Lunch กับการใช้งาน Machine Learning ที่ต้องพึงระลึกไว้

TL;DR

  • No Free Lunch (NFL) Theorem เป็นทฤษฎีที่ว่าด้วยเรื่องประสิทธิภาพของอัลกอริทึม (Algorithm) ที่ว่า ไม่มีอัลกอริทึมตัวไหนที่ดีกว่าตัวไหนเลย
  • หากนำอัลกอริทึมทุกตัวไปลองแก้ไขปัญหาที่มีทั้งโลกแล้วจะพบว่า ค่าประสิทธิภาพเฉลี่ยของทุกปัญหาของอัลกอริทึมตัวนั้น ๆ จะมีค่าใกล้เคียงกับอัลกอริทึมตัวอื่น ๆ นั่นหมายความว่า หากอัลกอริทึมนั้นมีประสิทธิภาพสูงกับการแก้โจทย์ปัญหาประเภทหนึ่ง การนำอัลกอริทึมเดิมไปแก้โจทย์ปัญหาอีกประเภทหนึ่งนั้น จะพบว่ามีประสิทธิภาพแย่ลงอย่างเห็นได้ชัด

No Free Lunch Theorem คืออะไร

No Free Lunch (NFL) Theorem หรือ ทฤษฎี ของฟรีไม่มีในโลก นั้น ถูกคิดขึ้นมาโดย David Wolpert และ William Macready จาก Paper ที่ชื่อ The Lack of A Priori Distinctions Between Learning Algorithms ซึ่งเป็นทฤษฎีที่ว่าด้วยประสิทธิภาพ (Performance) ของอัลกอริทึมหรือโมเดลประเภทต่าง ๆ และได้รับผลลัพธ์ที่ว่า

“หากนำอัลกอริทึมสองตัวไปลองแก้ไขปัญหาทั้งหมดในโลกนี้จะพบว่า เมื่อคำค่าประสิทธิภาพในการแก้ไขปัญหาทุกปัญหามาหาค่าเฉลี่ยแล้ว ค่าประสิทธิภาพเฉลี่ยของอัลกอริทึมทั้งสองตัวนี้จะมีค่าใกล้เคียงกัน” ดังรูปที่ 1

“state[s] that any two (optimization) algorithms are equivalent when their performance is averaged across all possible problems”.

รูปที่ 1 รูปแสดงค่าประสิทธิภาพของอัลกอริทึม A และอัลกอริทึม B ในการนำไปใช้แก้ปัญหาประเภทต่าง ๆ Credit: https://www.kdnuggets.com/2019/09/no-free-lunch-data-science.html

หากพิจารณาไปทีละอัลกอริทึม จากรูปจะเห็นว่า อัลกอริทึม A มีประสิทธิภาพที่ดีมากสำหรับการแก้ปัญหา 3 ปัญหาแรก แต่สำหรับปัญหาอื่นพบว่า มีประสิทธิภาพที่ต่ำกว่าอีกอัลกอริทึมทั้งหมด ส่วนอัลกอริทึม B นั้น จากรูปจะเห็นว่า ประสิทธิภาพที่ดีที่สุดของมันมีค่ามากกว่าค่าเฉลี่ยเพียงเล็กน้อยเท่านั้น เช่นเดียวกันกับค่าที่ต่ำที่สุดที่ยังสามารถเกาะกลุ่มอยู่กับค่าเฉลี่ยได้

แล้วอัลกอริทึมไหนมันดีกว่ากัน ?

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

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

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

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

แล้วมันเกี่ยวกับ Machine Learning ยังไง ?

รูปที่ 2 Photo by Markus Winkler on Unsplash

สำหรับการทำ Machine Learning แล้ว มีสิ่งหนึ่งที่ถูกเรียกว่า Learning Algorithm และอัลกอริทึมนี้เอง จะถูกนำไปเรียนรู้ข้อมูลที่กำหนดไว้ โดยผลลัพธ์ที่ได้จากการเรียนรู้ตรงนั้น มักจะถูกเรียกสั้น ๆ ว่า โมเดล

ถ้าเกิดมีคำถามแบบเดียวกันว่า แล้วโมเดลไหนล่ะดีที่สุด ? ตรงนี้ต้องขอย้อนกลับไปก่อนว่า แล้วโมเดลนั้นคืออะไร ?

โมเดลคืออะไร ?

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

ขอยกตัวอย่างโดยใช้ข้อมูลชุดหนึ่ง โดยข้อมูลชุดนี้จะถูกเลือกออกมา (Sampling) ทั้งหมด 4 จุด (แทนด้วยจุดสีแดง) และทำการสร้างโมเดล (แทนด้วยเส้นสีฟ้า) เพื่อแสดงความสัมพันธ์ของข้อมูลออกมา 2 โมเดล ดังรูปที่ 3

ขอถามว่า โมเดลไหนดีที่สุด…

รูปที่ 3 รูปแสดง model 1 และ model 2

หากไม่มีการตั้งสมมติฐานของข้อมูลที่เหมาะสมแล้ว ก็คงตอบได้ทันทีเลยว่า… ตอบไม่ได้ เพราะยังไงซะ ค่าประสิทธิภาพเฉลี่ยของโมเดลทั้งสองนั้นมีค่าใกล้เคียงกัน ตามทฤษฎี No Free Lunch แต่ถ้ามีการตั้งคำถามใหม่ว่า โมเดลไหนดีที่สุด ถ้าจะเอาไปทำนายราคาบ้าน

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

แล้วถ้าข้อมูลที่เราได้มา เป็นไฟฟ้ากระแสสลับล่ะ ?

รูปที่ 4 รูปแสดง Sine Wave

แน่นอน… สมมติฐานก็จะเปลี่ยน ซึ่งเปลี่ยนไปตาม ความเข้าใจในข้อมูล ชุดนั้น และถ้าใช้ model 2 สำหรับข้อมูลไฟฟ้ากระแสสลับนี้ ก็จะได้ค่าประสิทธิภาพของโมเดลที่ดีกว่า

ทีนี้ตอบได้หรือยังว่า โมเดลไหนดีที่สุด ? หากยึดตามทฤษฎี No Free Lunch

อ่าว… แล้วถ้าทฤษฎีนี้มันเป็นจริงเนี่ย แล้วผลลัพธ์การแข่งขันใน Kaggle ล่ะ จะอธิบายเรื่องนี้ได้ยังไง

นั่นสิ ทำไมโมเดลที่ชนะใน Kaggle ถึงได้มีแต่โมเดลหน้าเดิม ๆ

คำถามนี้เป็นคำถามที่ปรากฎในเว็บไซต์ Quora ซึ่งถามว่า

If Wolpert’s “No free lunch” theorem is true, how come most Kaggle competitions winners use either XGBoost for structured data or NN for unstructured?

ตอนแรกก็ไม่งง มาถึงคำถามนี้ปุ๊ป งงทันที… แต่ทั้งนี้ทั้งนั้น ก็ไม่ต้องเป็นกังวล เพราะมีคนมาไขข้อสงสัยเป็นที่เรียบร้อยแล้ว และคำตอบที่ได้ก็คือ

มีบ่อยครั้งที่ทฤษฎีนี้ถูกนำไปใช้คลาดเคลื่อน…

จากประโยคในทฤษฎีที่บอกว่า

“หากนำอัลกอริทึมสองตัวไปลองแก้ไขปัญหาทั้งหมดในโลกนี้แล้วจะพบว่า เมื่อนำค่าประสิทธิภาพในการแก้ไขปัญหาทุกปัญหามาหาค่าเฉลี่ยแล้ว ค่าประสิทธิภาพเฉลี่ยของอัลกอริทึมทั้งสองตัวนี้จะมีค่าใกล้เคียงกัน”

“state[s] that any two (optimization) algorithms are equivalent when their performance is averaged across all possible problems”.

บ่อยครั้งนั้นจะถูกตีความว่า

“ไม่มีอัลกอริทึมไหนเลยที่สามารถใช้งานได้กับทุกปัญหา”

“there’s no algorithm that works optimally for all problems”.

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

แล้วอีกอย่างหนึ่งคือ คำตอบก็อยู่ในคำถามแล้วนะ เพราะคุณบอกเองว่า โมเดล XGBoost นั้น ชอบใช้แก้ปัญหาที่เป็น Structured Data และโมเดลจำพวก Neural Network นั้น ชอบใช้แก้ปัญหาที่เป็น Non-Structured Data :-)

ส่งท้าย

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

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

Note

  • ใครอยากดูการพิสูจน์ในเชิงคณิตศาสตร์ต่อ สามารถไปดู Paper ได้ที่ The Lack of A Priori Distinctions Between Learning Algorithms ได้เลย
  • อีก 1 ประโยคที่ดูมีความหมายคล้ายคลึงกันก็คือ All Model are wrong but some are useful หรือที่แปลว่า ทุกโมเดลมันผิดหมดนั่นแหละ แต่ว่าบางโมเดลมันก็ยังมีประโยชน์นะ (ในเงื่อนไขที่ว่า ต้องมีการตั้งวัตถุประสงค์การใช้งานที่ชัดเจน)
  • หากมีข้อผิดพลาดหรือข้อเสนอแนะประการใดสามารถแนะนำได้โดยการกด Respond และเขียนความคิดเห็นไว้ได้เลยครับ ขอบคุณทุกความคิดเห็นนะครับ

--

--

PCP
ป้า ๆ ขอคุยเรื่อง Data หน่อย

Data scientist | เขียนไปบ่นไป ความในใจของคนสาย Data | My linktree https://cutt.ly/vwFqTLKu | (╯°□°)╯︵ ┻━┻