[ปักหมุด] Kaggle คือสุดยอดห้องแล็บสำหรับเรียนรู้ AI และ Data Science ! (อัพเดต ตุลาคม 2020)  

  RSS
The Neural Engineer
(@neural-engineer)
EfficientNet

Kaggle.com คือ สนามแข่งขัน AI / Machine Learning / Data Science ระดับโลก 

มี Google อยู่เบื้องหลัง จินตนาการง่ายๆ ว่า Kaggle นั้นคล้ายๆ องค์กร PGA ที่เป็นผู้จัดแข่งขันกอล์ฟสำหรับมืออาชีพในระดับนานาชาติ และผู้เข้าแข่งขันใน Kaggle ก็เปรียบเสมือนนักกอล์ฟชั้นนำจากทั่วโลก ที่จะลงแข่งพร้อมๆ กัน และเก็บคะแนน สะสมแต้ม ชิงเงินรางวัล จัดอันดับโลก เพียงแต่นี่ไม่ใช่การแข่งกอล์ฟ แต่เป็นการแข่งเขียนโปรแกรม AI ที่เข้มข้น ดุเดือด ตื่นเต้น สนุกสนาน ชิงรางวัล พร้อมทั้งเป็นแหล่งเรียนรู้สายปฏิบัติที่ดีที่สุด ที่ทุกคนเข้าร่วมได้โดยไม่มีข้อจำกัดและไม่มีค่าใช้จ่าย!

อัพเดต ตุลาคม 2020: เลื่อนลงไปจะเจอบทความที่เพิ่มเนื้อหาใหม่ คู่มือเริ่มต้น Kaggle เพื่อเติบโตในเส้นทาง DS / ML! ในเดือนตุลาคม 2020 ครับ

อ้างอิง
Posted : 26/12/2018 1:01 pm chakkrit ถูกใจ
The Neural Engineer
(@neural-engineer)
EfficientNet

จุดเด่นของ Kaggle

ซึ่งผมจะทยอยขยายความ มีดังนี้ครับ

1) เป็นการเรียนรู้ภาคปฏิบัติ เขียนโปรแกรมของจริง ปัญหาจริงจากองค์กรระดับโลก 

2) เลือกเรียนรู้ได้หลายรูปแบบ ตามความถนัด เช่น

  •  โหมดแข่งจริง ลงแข่งในสนามระดับโลก แข่งกับนักวิทยาศาสตร์ และนักวิจัย AI มือวางระดับโลก แบบหมัดต่อหมัด 
  •  โหมดฝึกซ้อม สามารถเอาการแข่งขันในอดีต ทั้งข้อมูล หรือศึกษา solution ต่างๆ ที่นักวิทยาศาสตร์ AI เก่งๆ ท่านอื่นได้ทำไว้แล้ว

3) สามารถเรียนรู้ได้ฟรี โดยไม่มีค่าใช้จ่าย มิหนำซ้ำ Kaggle ยังให้ใช้เครื่องที่มี GPU ประสิทธิภาพสูง (ปกติต้องซื้อหรือเช่าราคาแพง) อย่างฟรีๆ โดยมีข้อจำกัด คือ รัน 1 ครั้งได้ 9 ชม. (ข้อมูล ณ สิ้นปี 2018 ซึ่งอาจเปลี่ยนแปลงในอนาคต)  ซึ่งเพียงพอมากสำหรับโหมดฝึกซ้อม และโหมดแข่งขันบางประเภท ซึ่งการได้ใช้งาน GPU ฟรีๆ นั้นสุดยอดมากๆ

Workshop และ Lab ของ ThAIKeras เองก็ใช้ทรัพยากรของ Kaggle เช่นเดียวกันครับ

4) ไม่เพียงแข่งขันเท่านั้น ยังพูดคุยแลกเปลี่ยนความรู้กับนัก AI ระดับโลกนี้ได้อีกด้วย นับว่าเป็น AI Community ที่ดีที่สุดในโลกแห่งหนึ่ง และการพูดคุยกับนัก AI ระดับโลกเหล่านี้เป็นประสบการณ์ที่หาได้ยากยิ่ง

5) Kaggle เป็นแหล่งรวม Datasets หรือ ชุดข้อมูล สำหรับฝึกสอน Machine Learning ที่ใหญ่ที่สุดในโลกแห่งหนึ่ง มีข้อมูลทุกประเภทไม่ว่าจะเป็น Datasets ในหมวดหมู่ Finance, Business, Physics, Biology, Sports, News, และ Datasets ทุกๆ อย่างที่เราคิดได้ เพื่อนๆ จะเจออะไรเด็ดๆ แน่นอน 🙂

เราสามารถใช้ข้อมูลเหล่านี้เพื่อฝึกสอนระบบ AI ของเราได้ฟรีๆ (สมัยก่อนข้อมูลดีๆ นั้นหาได้ยาก หรือต้องจ่ายเงินแสนแพงเพื่อซื้อข้อมูลมาฝึก AI) โดยจะใช้ข้อมูลหลายชุดมารวมกันก็ได้ และข้อมูลส่วนใหญ่ยังมี Script ที่ใช้จัดการข้อมูลเหล่านี้เบื้องต้น (Load & Clean) เสร็จเรียบร้อยหมดแล้ว (หรืออาจมี starter model ไว้เรียบร้อย) ประหยัดเวลาของเราไปอย่างมาก

ตอบกลับอ้างอิง
Posted : 26/12/2018 1:14 pm chakkrit ถูกใจ
The Neural Engineer
(@neural-engineer)
EfficientNet

เป็นแหล่งเรียนรู้ภาคปฏิบัติ ของจริง แก้ปัญหาจริงจากองค์กรระดับโลก

ผู้อยู่เบื้องหลัง Kaggle. Kaggle ก่อตั้งโดยสองหนุ่มหัวใส Anthony Goldbloom และ Ben Hamner ซึ่งมีไอเดียที่จะสร้างเว็บไซต์ที่จะเป็นคนกลางในการจัดการแข่งขันด้าน AI ประเภทต่างๆ โดยผู้เกี่ยวข้องทุกฝ่าย ต่างก็ Win-Win ดังนี้

1) Sponsor ผู้จัดการแข่งขัน จะเป็นผู้นำปัญหา AI ในองค์กรของตนเอง ที่ต้องการแก้ด้วยปัญญาประดิษฐ์ มาสร้างเป็นปัญหาที่เหมาะสมในการแข่งขัน  Sponsor จะเป็นผู้กำหนดและจ่ายเงินรางวัล (โดยปกติเงินรางวัลจะอยู่ที่ราวๆ หลักล้านบาท แบ่งให้กับผู้ชนะการแข่งขันลำดับต้นๆ)  

นั่นก็คือ Sponsor จะทำหน้าที่จ่ายเงินให้กับ Kaggle และให้รางวัลผู้เข้าแข่งขัน เตรียมการแข่งขัน ออกกติกา ในขณะเดียวกัน เมื่อจบการแข่งขันก็จะได้ Solution ของปัญหาจากนัก AI เก่งๆ ทั่วโลกไปเป็นการตอบแทน

2) ผู้เข้าแข่งขัน จะได้เขียนโปรแกรม AI เพื่อแก้ปัญหาจริง บนข้อมูลจำนวนมหาศาลที่ปกติแล้ว จะไม่สามารถเข้าถึงได้ (ข้อมูลมักเป็นความลับของแต่ละบริษัท) นับเป็นโอกาสทองที่หาได้ยากยิ่ง  

นอกจากนี้ระบบการแข่งขันบน Kaggle จะเป็นลักษณะแข่งตลอดทั้งปี เพื่อเก็บคะแนน และจัดอันดับโลกเหมือนเทนนิส และกอล์ฟ ซึ่งก็เหมือนวงการเหล่านั้นที่นักกีฬาระดับโลกต่างแข่งกันเพื่อเป็นที่หนึ่ง นักวิจัย AI ระดับโลกทั้งหลายต่างก็ต้องการท้าทายตัวเอง เพื่อจะขึ้นไปให้ถึงมือวางอันดับต้นๆ ของโลกกันทั้งสิ้น

หลักจากที่ Kaggle ประสบความสำเร็จอย่างมากมาย ดึงดูด Sponsor ดังๆ และ นักวิจัย AI ระดับสุดยอดได้จากทั่วโลก Google ก็เข้ามา take over เว็บ Kaggle ไปในปี 2017 นี่เองครับ

 


 

เรียนรู้จากคอร์สออนไลน์อื่นๆ กับเรียนรู้จาก Kaggle เลือกอันไหนดี ?

ไม่อยากให้มองว่าต้องเลือกเลยครับ แหล่งเรียนรู้ระดับสุดยอดอย่าง Coursera.org หรือ Cs231n นั้นจะเติมพื้นฐานด้าน Concepts เราให้แน่น (ดูรีวิวที่นี่ครับ :  https://thaikeras.com/2018/11/11/onlinecourses/  ) และทำให้เรามาลงมือภาคปฏิบัติที่ Kaggle ได้อย่างเต็มรูปแบบครับ

ตอบกลับอ้างอิง
Posted : 26/12/2018 1:53 pm chakkrit ถูกใจ
The Neural Engineer
(@neural-engineer)
EfficientNet

ตัวอย่างการแข่งขันบน Kaggle

A) เรียนรู้จำภาพวาด Doodle 50 ล้านภาพที่วาดโดยผู้เล่น Doodle ทั่วโลก https://www.kaggle.com/c/quickdraw-doodle-recognition

การแข่งขันครั้งนี้ เป็นการแข่งที่เน้นกระบวนท่า 1 ในแก่นหลักของ Deep Learning นั้นคือการ “ทำให้ AI เข้าใจรูปภาพได้” โดย Deep Learning นั้นก็มีจุดกำเนิดมาจากกระบวนท่าไม้ตายนี้นี่เอง (ดูรายละเอียดในบทความ https://thaikeras.com/2018/11/13/rise-of-dl/ ) เดิม Deep Learning นั้นมักถูกฝึกให้เข้าใจรูปภาพวัตถุในโลกความเป็นจริง การแข่งขันครั้งนี้มีจุดประสงค์เพื่อท้าทาย ความเป็นไปได้ใหม่ๆ ว่า “แล้ว AI สามารถเข้าใจรูปภาพ(ห่วยๆ) ที่เกิดจากลายมือของมนุษย์ที่แทบดูไม่รู้เรื่อง และประกอบไปด้วยเส้นไม่กี่เส้นได้หรือไม่”  การแข่งขันคร้ังนี้ประสบความสำเร็จ โดยมีผู้เข้าแข่งขันทั้งหมด 1300 กว่าทีมจากทั่วโลก และเหล่าผู้ชนะลำดับต้นๆ (100 อันดับแรก) ต่างก็สามารถเข้าใจรูปวาดเหล่านี้ได้มากกว่าหรือเท่ากับ 94% 

ทีม ThAIKeras เองก็ลงแข่งในการแข่งขันนี้ด้วย เป็นการแข่งขันครั้งแรกของทีมเรา และได้อันดับ 94 ของโลกครับ

ดูผลการแข่งขันได้ที่นี่ครับ https://www.kaggle.com/c/quickdraw-doodle-recognition/leaderboard

ตอบกลับอ้างอิง
Posted : 26/12/2018 1:56 pm chakkrit ถูกใจ
The Neural Engineer
(@neural-engineer)
EfficientNet

เหรียญรางวัลบน Kaggle.com

Kaggle นอกจากจัดอันดับโลกของนักวิจัย AI ที่เข้าร่วมแข่งขันจากทั่วโลกแล้ว ยังมีการมอบเหรียญและป้ายเกียรติยศให้กับผู้ที่เข้าร่วมแข่งขันอีกด้วย โดยเหรียญและป้ายจะมีทั้งหมดสามหมวดหมู่ ได้แก่

1) หมวดการแข่งขัน (Competition)

2) หมวดการสอน (Kernel)

3) หมวดการพูดคุยแลกเปลี่ยนความรู้ (Discussion)

รูปข้างล่างเป็นตัวอย่างของนักวิจัย AI มือวางระดับท้อปของโลกชาวสิงคโปร์ (Heng Cherkeng) ซึ่งจะเห็นว่าปัจจุบันในแง่การแข่งขัน Heng อยู่อันดับที่ 50 ของโลก (ระดับ Master) ในแง่หมวดการสอนนั้น Heng ไม่ได้ถูกจัดอันดับ ส่วนในแง่หมวดพูดคุยแลกเปลี่ยนความรู้นั้นอยู่อันดับสองของโลก (ระดับ Grandmaster)

อันดับ เหรียญรางวัลและป้ายเกียรติยศมีไว้เพื่ออะไร?

ก็เหมือนนักกีฬาระดับโลก ไม่ว่าจะเป็น Roger Federer, Rafael Nadal, Tiger Woods หรือแม้แต่น้องเมย์ รัชนก อินทนนท์ (นักแบดมินตันสาวมือวางระดับต้นของโลกชาวไทย) เกียรติยศและเหรียญรางวัลเหล่านี้แสดงถึงความสามารถ ประสบการณ์ และความภูมิใจในสาขาอาชีพตนเอง นักกีฬาทุกคนต่างก็ฝึกฝนเพื่อให้ไต่อันดับขึ้นไปในให้ถึงจุดสูงสุดของวงการ  ในวงการ Data Science และ AI นั้นก็เช่นเดียวกัน 

แน่นอนครับ ข้อมูลเหล่านี้จะแสดงถึง Profile อันยอดเยี่ยมของนักวิจัย AI แต่ละคน เป็น Resume ที่ดีที่สุดที่ไม่จำเป็นต้องไปตกแต่งให้ดูสวยงามกว่าความเป็นจริง ถ้าคุณได้สักเหรียญรางวัลหนึ่งบน Kaggle.com ก็แสดงถึงความยอดเยี่ยมในสาขาอาชีพนี้เรียบร้อยแล้ว และบริษัทยักษ์ใหญ่ทั่วโลกต่างก็มองหามือวิจัยชั้นเยี่ยมบน Kaggle.com แห่งนี้ (สังเกตว่า Heng ก็ระบุตนเองว่าเป็น Freelancer ที่พร้อมจะรับทุกงาน)

 

จะได้เกียรติยศเหล่านี้มาได้อย่างไร

Kaggle จะแบ่ง Level ของนักวิจัย AI เป็น 5 ระดับ คือ Novice (มือใหม่) Contributor (ผู้เข้าร่วม) Expert (ผู้เชี่ยวชาญ) Master (ระดับอาจารย์) และ GrandMaster (ระดับปรมาจารย์) โดยในโลกนี้มีนักวิจัย AI ที่ลงทะเบียนกับ Kaggle กว่า 1 แสนคน มีระดับ Master ขึ้นไปเพียงราว 1% นิดๆ เท่านั้น (ข้อมูลเดือนกรกฎาคม 2019) นับว่าเป็น Rank ที่สูงมากๆ

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

https://www.kaggle.com/progression

สำหรับหมวดหมู่การแข่งขันนั้น สรุปคร่าวๆ ได้ดังนี้

ผู้เข้าแข่งขันที่ติด Top 10% จะได้เหรียญทองแดง Top 5% จะได้เหรียญเงิน และเพียง Top 0.5%-1% เท่านั้นที่จะได้เหรียญทอง (หลายๆ ครั้ง Top1% ก็ยังไม่ได้ทอง และไม่กี่คนแรกของเหรียญทอง ที่จะได้เงินรางวัล แล้วแต่ Sponsor ผู้จัดการแข่งขันจะกำหนด)

ถ้าคุณสะสมได้อย่างน้อย 2 เหรียญทองแดง Kaggle จะถือว่าคุณเป็นระดับ Expert ถ้าคุณได้อย่างน้อย 1 เหรียญทองและ 2 เหรียญเงินคุณก็ถือว่าเป็นระดับ Master ส่วนระดับ Grandmaster นั้นคุณต้องเคยได้อย่างน้อย 5 เหรียญทอง และ 1 ในนั้นต้องเป็นการได้เหรียญทองแบบเดี่ยวๆ โดยที่ไม่ได้ร่วมมือกับคนอื่นอีกด้วย ซึ่งตั้งแต่ก่อตั้ง Kaggle มาราว 10 ปีมีการแข่งขันหลายร้อยการครั้ง Grandmaster ในโลกมีราวๆ 0.1% เท่านั้น ดูมือวางอันดับโลกปัจจุบันได้ที่นี่ครับ

https://www.kaggle.com/rankings

ตอบกลับอ้างอิง
Posted : 27/12/2018 4:19 am chakkrit ถูกใจ
The Neural Engineer
(@neural-engineer)
EfficientNet

ระบบ Kernel บน Kaggle

Kernel คืออะไร?

Kernel เป็นทั้ง programming editors ที่คุณสามารถใช้เขียนโปรแกรมได้ เป็นทั้ง Word Processor ที่คุณก็สามารถเขียนเอกสารสวยๆ ได้

นอกจากนี้ Kernel ยังเป็น AI Virtual Machine ประสิทธิภาพสูงแบบมี GPU ในตัว ที่คุณสามารถรันโปรแกรมที่เขียนไว้ได้อย่างมีประสิทธิภาพ ทั้งหมดนี้ให้คุณใช้งานได้ฟรีๆ

ใครสามารถใช้ได้?

ทุกคนสามารถใช้ Kaggle Kernel ได้ เพียงแค่สมัครสมาชิกเว็บ Kaggle.com เท่านั้น

Resources บน Kernel

VM ของ Kaggle นั้นประกอบไปด้วย GPU รุ่น P-100  RAM 13GB  Input-HDD 100GB Output-HDD 5GB

นอกจากนี้ เจ้า VM ตัวนี้ยังมี machine learning และ data science library อย่างเพียบพร้อม เช่น Tensorflow, Keras, Pytorch, Panda, Gensim, Plotly, Bokeh, etc.  เรียกได้ว่ามีทุก libraries ที่สำคัญๆ ครบแน่นอน ไม่ต้องเสียเวลามาลงโปรแกรม

คุณสมบัติสุดเจ๋ง อีกอย่างก็คือ kernel จะลิงก์กับ kaggle datasets และ databases โดยตรง นั่นคือเราสามารถเลือกนำ datasets อันทรงคุณค่านับหมื่นรายการมาใช้งานได้ทันที โดยไม่ต้องเสียเวลาค้นหาและโหลดมาจากแหล่งข้อมูลภายนอก

Limitation

อย่างไรก็ดี ในปัจจุบันการใช้งาน Kernel ยังมีข้อจำกัดอยู่เช่นกัน เนื่องจากว่าเราสามารถใช้งาน Kernel ได้ต่อเนื่องเพียง 9 ชั่วโมงเท่านั้น (เพิ่มจาก 6 ชม. ในปีก่อนหน้า) ก็หวังว่าในอนาคต ข้อจำกัดนี้จะน้อยลงเรื่อยๆ นะครับ

(ล่าสุด กรกฎาคม 2019 ทาง Kaggle ได้อีเมลติดต่อทีมงานเราซึ่งเป็นหนึ่งในทีมที่ใช้งาน Kernels เยอะมากๆ ว่าอาจจะลดเวลาลง ก็นับว่าเป็นข่าวร้ายนิดๆ แบบไม่เป็นทางการครับ)

ตอบกลับอ้างอิง
Posted : 27/12/2018 4:25 am
The Neural Engineer
(@neural-engineer)
EfficientNet

การแชร์ความรู้ด้วย Kernel และเหรียญรางวัลเกียรติยศ

Kaggle เป็นสังคมที่สนับสนุนการเรียนรู้อย่างจริงจัง ดังนั้นเหรียญรางวัลและเกียรติยศจึงไม่ได้มีเพียงแต่ประเภทการแข่งขันเท่านั้น แต่ยังมีเหรียญรางวัล อันดับโลก และ user level สำหรับผู้ที่เผยแพร่ความรู้ระดับสุดยอดด้วย kernel อีกด้วย

สังเกตว่าในรูปกระทู้ข้างบน Heng นั้นแม้นจะเป็นมือวางอันดับต้นๆ ของโลกในแง่การแข่งขันและการพูดคุยแลกเปลี่ยนความรู้ แต่ไม่ถูกจัดอันดับในการสอนหรือแชร์ความรู้ด้วย kernel รูปข้างบนในกระทู้นี้คือ Heads or Tails (ชื่อเล่นที่คนเรียกกันคือ H/T ) ผู้ซึ่งเป็น kernel grandmaster คนแรกของโลก (ปัจจุบันณ เวลาที่เขียนกระทู้นี้มี Grandmaster เพียง 5 คนเท่านั้น) 

การเผยแพร่ความรู้บน kernel นั้นทำได้ง่ายๆ เหมือนการเขียนโปรแกรมปกติเลยครับ เพียงแต่ทำให้เป็นลักษณะของบทความที่มีคำอธิบายประกอบเพื่อสอนได้ ทั้งนี้ด้วยความสามารถของ kernel ที่เป็น word processor ในตัว

การจะได้เหรียญรางวัลในการเผยแพร่ความรู้ Kernel นั้นหลักๆ คือต้องได้รับการโหวตจากเพื่อนๆ ใน kaggle ด้วยกัน ณ เวลาที่เขียนมีกติกาดังนี้ครับ

เหรียญทองแดง - 5 votes เหรียญเงิน - 20 votes เหรียญทอง - 50 votes

และถ้าเราได้รับเหรียญทองแดงทั้งหมด 5 เหรียญทองแดงเราจะได้เลื่อน level เป็น Kernel Experts, 10 เหรียญเงินเป็น Kernel Masters, และ 15 เหรียญทองเพื่อเป็นระดับปรมาจารย์ Kernel Grandmaster ซึ่งมีเพียงไม่กี่คนในโลกเท่านั้น

 

ตอบกลับอ้างอิง
Posted : 27/12/2018 4:46 am
The Neural Engineer
(@neural-engineer)
EfficientNet

Tricks ของการใช้ Kernel ในการแข่งขัน Kaggle (reuse data / results / fork / parallel) 

รอติดตามอ่านได้ในกระทู้ในอนาคตครับ

ตอบกลับอ้างอิง
Posted : 05/01/2019 3:18 pm
The Neural Engineer
(@neural-engineer)
EfficientNet

บทความนี้เป็นบทความที่ดีมากๆ ครับ :

 

เราควรใช้งาน Kaggle เพื่ออะไร?  เพื่อเหรียญรางวัล เพื่อไต่อันดับโลก หรือเพื่อพัฒนาตนเอง?

https://towardsdatascience.com/how-to-farm-kaggle-in-the-right-way-b27f781b78da

ตอบกลับอ้างอิง
Posted : 28/02/2019 3:18 am
The Neural Engineer
(@neural-engineer)
EfficientNet

ตอนนี้ Kaggle Notebook สามารถโหลดไฟล์โน้ตบุคจาก URL เช่น Github ได้แล้วครับ! โดยสามารถกดตรง File Menu เพื่อเลือก option "Load from URL" ได้ทันที กดดูตัวอย่าง gif ตามลิงก์ข้างล่างนี้ครับ ?

ตอบกลับอ้างอิง
Posted : 21/05/2020 1:43 am
The Neural Engineer
(@neural-engineer)
EfficientNet

อัพเดตบนความปี 2020 ครับ:

คู่มือเริ่มต้น Kaggle เพื่อเติบโตในเส้นทาง DS / ML!

สวัสดีครับเพื่อนๆ เนื่องจากมีอาจารย์ที่เคารพนับถือวานให้ทีมงานไปบรรยายเรื่อง "เส้นทางเติบโตใน  Data Science / Machine learning (DS / ML) ด้วย Kaggle" เราจึงขอเขียนสรุปเป็นบทความเพื่อเป็นประโยชน์กับเพื่อนๆ ด้วยครับ  

**เนื้อหา**

  1. Kaggle คืออะไร
  2. ลงแข่ง Kaggle แล้วได้ประโยชน์อันใดหรือไม่
  3. ร่วมแข่ง Kaggle เริ่มต้นอย่างไร
  4. พัฒนาประสิทธิภาพของโมเดลให้ดีขึ้นระหว่างแข่งอย่างไร
  5. ความแตกต่างสำคัญของการแข่งบน Kaggle Vs. ตำรา Vs. การทำโปรเจกต์ในชีวิตจริง

 

1. Kaggle คืออะไร?

Kaggle ซึ่งเป็นบริษัทลูกของ Google ได้สร้างหลายปรากฏการณ์ที่ผมเชื่อว่าเป็นส่วนหนึ่งที่ช่วยผลักดันให้วงการ DS และ ML ของทั้งโลกให้ก้าวไกลไปอีกหลายขั้น

1.1 Kaggle คือ ที่ที่เปลี่ยน DS/ML โปรเจกต์ระดับโลกในแต่ละศาสตร์ (วิทยาศาสตร์ สังคมศาสตร์ ธุรกิจ การแพทย์ ฯลฯ) มาเป็น "การแข่งขัน" ของมืออาชีพทั่วโลก เป็นศูนย์กลางการจัด ranking และมีเงินรางวัล เฉกเช่นเดียวกับ สมาคมกีฬาอาชีพอื่นๆ (กอล์ฟ เทนนิส สนุกเกอร์ ฯลฯ)

โดยทั่วไปจะมีโปรเจกต์การแข่งขันพร้อมๆ กันอยู่ 3-5 งานอยู่ตลอดเวลา เมื่อการแข่งขันหนึ่งใกล้จบก็จะมีการแข่งขันแปลกใหม่ เข้ามาทันที โดยนอกจากการแข่งขันด้าน Supervised Learning แล้ว ยังมีการแข่งขันด้าน Reinforcement Learning, Generative ML (เช่น GANs) รวมทั้ง Optimization อีกด้วย ในแต่ละการแข่งขันมีระยะเวลาราวๆ 1-3 เดือน

เราเคยเขียนบทความเกี่ยวกับการแข่งขันบน Kaggle อย่างละเอียดไว้แล้วที่นี่ครับ  : http://bit.ly/thaikeras-kaggle

 

1.2 Kaggle คือที่ๆ ให้คุณใช้ GPU / TPU คุณภาพสูงราคาแพง เทียบเท่าเครื่องหลักแสน เพื่อรันงานต่างๆ ได้ฟรี! (เดือนก่อนเราเพิ่งเขียนบทความเทียบ/ใช้ร่วมกับ Colab ที่นี่ครับ  : https://bit.ly/thaikeras-tfrc-grant )

 

1.3 Kaggle คือหนึ่งในที่ๆ รวม Datasets ครบครันที่สุดในโลก

 

1.4 ด้านอื่นๆ เช่น free online courses , แหล่งพูดคุยกับ DS ระดับโลก , หางานที่เกี่ยวกับ DS/ML

.

 

2. ลงแข่งขันใน Kaggle แล้วได้อะไร?

ขอสรุปเป็น 8 ข้อจากมุมมองส่วนตัวครับ

 

2.1 ได้เงินรางวัลสำหรับผู้ชนะอันดับ 1-5 โดยเงินรางวัลผู้ชนะส่วนใหญ่ราวๆ 1-3แสนบาท ในการแข่งขันใหญ่เงินรางวัลจะมีมูลค่าถึง 1 ล้านบาทหรือมากกว่า อย่างไรก็ดีในแต่ละการแข่งขันจะมีผู้เข้าแข่งเก่งๆ จากทั่วโลกหลายพันทีมดังนั้น ประเด็นนี้อาจตัดออกไปได้ในทางปฏิบัติ 🙂

2.2 ได้มีส่วนร่วมทำโปรเจกต์ใหญ่ๆ ที่ีมีนัยสำคัญต่อโลก (Significance) เช่น โปรเจกต์ช่วยออกแบบวัคซีน RNA ของ Covid-19 ที่เพิ่งจบลงไปสดๆ ร้อนๆ เป็นต้น

2.3 ได้เรียนรู้การเขียนโค้ด เทคนิค และโมเดลใหม่ๆ (เชิงกว้าง) ทั้งทฤษฎีและปฏิบัตินับไม่ถ้วนในระหว่างการแข่งขัน โดยเป็นการแชร์ความรู้กันระหว่าง Data Scientists ระดับโลกที่ลงแข่งด้วยกัน ที่แน่ๆ เราจะได้ลิ้มลอง State of the Arts หรือโมเดลที่ดีที่สุดในด้านต่างๆ เช่น

  • Vision : Object detection , segmentation หรือ video models
  • Sequence & Language : Transformers
  • อื่นๆ : เช่น Graph neuron networks, GANs, Reinforcement Learning

 

2.4 ได้ประสบการณ์จริงเชิงลึก การออกแบบโมเดล ML เพื่อช่วยงานเฉพาะทางแต่ละด้านที่เราสนใจ นอกจากนี้ถ้าอยู่ระดับบนตารางบ่อยๆ จะได้ฝึกการออกแบบกลยุทธการแข่งขันตลอด 1-3 เดือนอีกด้วย

โดยสิ่งสำคัญที่มักไม่เจอในตำราเรียน แต่สำคัญอย่างมากบน Kaggle คือการออกแบบ "pipeline" เช่น

  • Data pipeline : การทำความเข้าใจข้อมูลและที่มาของข้อมูล การ preprocess ข้อมูล และการทำ data augmentation เพื่อเพิ่มปริมาณข้อมูลอย่างมีคุณภาพ
  • Validation pipeline: การศึกษา metrics ที่เกี่ยวข้องเชิงลึก ออกแบบระบบทดสอบอย่างไรเพื่อจะให้ใกล้เคียงกับการนำไปใช้จริงขั้นสุดท้ายมากที่สุด
  • Prediction pipeline: การนำโมเดลที่แม่นยำหลายๆ โมเดลมาร่วมกันทำนายเพื่อให้ผลทำนายแม่นยิ่งขึ้นไปอีกด้วยเทคนิคเช่น Ensemble หรือ Stacking

จากสองข้อข้างบน เมื่อคุณได้เข้าร่วมโปรเจกต์หรือการแข่งขันตั้งแต่ต้นจนจบ คุณจะพบว่า "ทักษะการเขียนโปรแกรม" ในด้าน DS/ML ของคุณจะเพิ่มขึ้นสูงแบบแทบไม่เชื่อตัวเอง

 

2.5 เป็น portfolio เพื่อนำไปสู่การทำงานในสายงานนี้ เพราะนอกจากเงินรางวัล Kaggle ยังมอบคะแนนเพื่อจัดลำดับ ranking (แบบเดียวกับเทนนิส กอล์ฟ ฯลฯ) เหรียญรางวัลเหรียญทอง เหรียญเงิน และเหรียญทองแดงให้กับผู้เข้าแข่งขันที่ทำคะแนนได้ระดับบนๆ อีกด้วย และเหรียญรางวัลบน Kaggle ถือว่าได้รับการยอมรับจากบริษัทชั้นนำหลายบริษัท  

บริษัทเช่น NVIDIA เพิ่งจะสร้างทีม Kaggle โดยรับ Kaggle Grandmasters โดยเฉพาะ  ( https://www.glassdoor.com/job-listing/senior-deep-learning-data-scientist-rapids-ai-nvidia-JV_IC1147439_KO0,45_KE46,52.htm?jl=3523010135 ) ส่วนที่ญี่ปุ่นก็มีบริษัท Data ชั้นนำชื่อ DeNA ที่อนุญาตพนักงานให้แข่ง Kaggle ได้ถึง 50% ของเวลาทำงาน ( https://dena.ai/en/kaggle/ )

โดยมีผู้เข้าแข่งขันนับไม่ถ้วนที่เป็นนักเรียน และ Data Scientists ทั้งฝึกหัดและมืออาชีพ ซึ่งมาสร้างชื่อเสียงบน Kaggle และได้เข้าไปทำงานกับบริษัทยักษ์ใหญ่ทั่วโลก  (ส่วนใหญ่เป็นคนจีน และอินเดียที่มาหาโอกาสให้ตัวเอง ส่วนคนไทยถือว่ามีน้อยมาก อาจเป็นเพราะว่า Data Scientists เก่งๆ ในไทยสามารถหางานทำได้ง่ายดายอยู่แล้ว หรือ Supply < Demand นั่นเอง)

นอกจากนี้ยังมีหลายๆ คนต่อยอดนำโปรเจกต์บน Kaggle ไปเป็นงานของตัวเองบน GitHub รวมทั้งสร้าง startup ใหม่ๆ ขึ้นมามากมาย (ที่เห็นเยอะคือ startup ด้านการแพทย์)

นอกจากนี้การแข่งขันบน Kaggle มีรสชาติของความเป็นกีฬาอยู่มากทำให้เราได้ฝึกฝน "จิตใจ" อีกด้วย

 

2.6 Team-Spirit : ในแต่ละงาน เราสามารถร่วมทีมกับเพื่อนร่วมทีมทั่วโลกได้ ทำให้เราเรียนรู้การทำงานเป็นทีมอย่างมืออาชีพ การต่อสู้ร่วมกันแบบเดียวกับกีฬา เช่น  รวมทั้งแลกเปลี่ยนวัฒนธรรมกับเพื่อนทั่วโลกได้ เนื่องจากทีมระดับบนที่เข้าร่วมใน Kaggle จะเข้าร่วมแบบจริงจังมาก เมื่อ join ทีมคุณอาจจะพบว่าคุณและเพื่อนๆ คุยและทำงานแบบไม่ได้หลับนอน ยิ่งกว่างานในชีวิตจริงเสียอีก

โดยการคุยงานมักจะคุยกันผ่าน Slack เนื่องจากแบ่งเป็นหมวดหมู่หัวข้อได้เป็นระเบียบ  มีการ Edit ได้ชัดเจน รวมทั้ง share files ขนาดใหญ่ได้

 

2.7 ฝึกความแข็งแกร่งของจิตใจ บนการแข่งขันที่ยาวนานแบบมาราธอน -- เนื่องจากเป้าหมายของผู้เข้าแข่งระดับบนทุกคนคือเหรียญทอง การแข่งขันระดับบนตารางตลอด 1-3 เดือนนั้นจะว่าไปดุเดือด กดดัน และเครียดมาก ซึ่งมองในมุมกลับก็คือการฝึกฝนจิตใจของเราให้มีความแข็งแกร่งทนรับความกดดันระดับสูงได้นั่นเอง

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

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

กล่าวโดยสรุป ได้ประโยชน์เยอะมากๆๆๆ โดยเฉพาะสำหรับน้องๆ รุ่นใหม่ๆ นับว่าเป็นโอกาสในการก้าวหน้าของสาขาอาชีพ DS/ML เลยครับ

 

 

3. เริ่มต้นร่วมแข่ง Kaggle เริ่มต้นอย่างไร

มี 3 ขั้นตอนเริ่มต้นง่ายๆ ดังนี้ครับ

  1. ดูการแข่งขันบน Domain ที่ถูกใจ - ดูประเภทการแข่งขัน
  2. อ่านกติกา รายละเอียดข้อมูล การวัดผลให้เข้าใจ
  3. หา Starter notebook

ก่อนอื่นให้ไปที่ https://www.kaggle.com/c/ ก็จะเจอการแข่งทั้งหมดในปัจจุบัน (รูปแนบ)

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

ณ ปัจจุบันที่เขียนบทความมีการแข่งที่น่าสนใจมากๆ เช่น

 - simulation การแข่งขันฟุตบอล จัดร่วมกับ Manchester City โดยต้องใช้ Reinforcement Learning (Google Research Football)

  • การตรวจสอบภาวะ "ลิ่มเลือดอุดตันในปอดจากภาพ CT Scan" (Pulmonary Embolism Detection) ของสมาคมแพทย์ที่อเมริกา
  • ทำนายการเคลื่อนไหวของรถบนท้องถนน เพื่อพัฒนาระบบ Self-driving car level-5 (Lyft motion prediction)
  • แบ่งประเภทของยาตามปฏิกริยาของโมเลกุลยากับโปรตีนเป้าหมายร่วมกับ MIT (Mechanism of Action Prediction)
  • แปลงภาพถ่ายเป็นภาพวาดสไตล์ Monet ด้วย CycleGAN (I'm Something of a Painter myself - งานนี้ไม่มีเหรียญรางวัล แต่มีรางวัล TPU Quota ให้)

 

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

 - Problem Description : ปัญหาคืออะไร มีเป้าหมายอะไร โมเดลไปเพื่ออะไร

  • Data Description : ทำความเข้าใจ Data ให้ชัดเจนว่ามีขนาดเท่าใด เป็นประเภทใด (รูปภาพ ข้อความ หรือตาราง หรืออื่นๆ) และเราต้องทำนายอะไร นั่นคือต้องทำความเข้าใจ Input-Output ของโมเดลให้ชัดเจน
  • Evaluation : มีการวัดผลด้วยสมการอะไร
  • Timeline : ระยะเวลาของการแข่งขันยาวนานเท่าใด

 

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

 

4. พัฒนาประสิทธิภาพของโมเดลให้ดีขึ้นระหว่างแข่งอย่างไร

ตรงนี้เป็นความลับของผู้เข้าแข่งขันแต่ละทีมครับ  😀 อย่างไรก็ดีหลักการง่ายๆ ก็คือ

  1. ติดตาม Public Notebooks -  เพื่อศึกษาโค้ดใหม่ๆ ที่ผู้เข้าแข่งขันแต่ละคนจะแชร์เพิ่มตลอดการแข่งขันครับ (ยกเว้นสัปดาห์สุดท้ายที่เป็นธรรมเนียมปฏิบัติที่จะหยุดแชร์โน้ตบุคคะแนนดีๆ) หลายๆ การแข่งขัน เช่น OpenVaccine เพื่อออกแบบ Vaccine Covid-19 ที่เพิ่งจบไป แค่ศึกษาโน้ตบุคเยี่ยมๆ ที่แชร์กันหลายไอเดียมากมาย ก็ต้องทำงานหนักหลายสัปดาห์เลยครับ
  2. Public Discussions - ที่จะมีการพูดคุย วิเคราะห์มุมมองปัญหา และ data รวมทั้ง metric อยู่ตลอดเวลา หลายๆ ครั้งเราจะได้ไอเดียเจ๋งๆ จาก discussions ของผู้เข้าแข่งระดับบนครับ
  3. Team Up -  เมื่อเราคิดว่าเราได้ลองทุกสิ่งทุกอย่างไปแล้ว ก็อาจจะถึงเวลาที่จะร่วมทีมกับผู้เล่นคนอื่นๆ เพื่อเปิดมุมองไอเดีย และโค้ดใหม่ๆ และพูดคุยหาความคิดสร้างสรรค์ใหม่ๆ ในทีมกันครับ

 

 

***ข้อห้ามในการแข่งขัน***

อย่างไรก็ดีมีข้อห้ามสำคัญสองข้อในการแข่งขัน ซึ่งถ้าคุณฝ่าฝืนอาจจะทำให้เราถูกแบนจากการแข่งขัน หรือถูกแบน account ไปเลยก็ได้ นั่นคือ "Multiple accounts" และ "Private Sharing" ครับ

 

  • Multiple account : เนื่องจากชั่วโมง GPU/TPU ของแต่ละ account ถูกจำกัดที่ราวๆ 30 ชม./ สัปดาห์ หลายๆ คนเลยคิดว่าสมัครหลาย accounts จะได้ชม. เพิ่ม อย่างไรก็ดีทาง Kaggle ไม่อนุญาตและสามารถตรวจเจอกรณีนี้ได้ตลอด และจะแบนจากการแข่งขันทันทีไม่ยกเว้นครับ
  • Private Sharing : แชร์ข้อมูล การสร้างโมเดล ฯลฯ ให้กับผู้เข้าแข่งขันคนอื่นที่ไม่ได้อยู่ในทีมเดียวกัน กรณีนี้ทาง Kaggle มักตรวจสอบได้จากการที่อันดับของเราเคลื่อนไหวไปในทิศเดียวกับผู้เล่นคนอื่นที่ไม่ได้อยู่ในทีมตลอดการแข่งขันครับ

 

5. ความแตกต่างสำคัญของ Kaggle กับ …

5.1 การศึกษาจากตำรา Machine Learning

5.2 การทำ Project จริง

 

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

5.1 สิ่งนอกตำราเรียนใน Kaggle - สำคัญที่สุดที่นึกออกตอนนี้คือเรื่องของ "Assumption" ครับ ในทฤษฎี จะพูดเสมอว่า assumption ที่สำคัญที่สุดของ Machine Learning Model คือ training distribution จะต้องเหมือนหรือคล้ายกับ test distribution มิเช่นนั้นเราจะไม่สามารถการันตีประสิทธิภาพของโมเดลได้

แต่ในชีวิตจริงถ้ามันหลีกเลี่ยงไม่ได้ที่ข้อมูล train และ test มันจะไม่เหมือนกันล่ะ?? ยกตัวอย่างในปัญหา detect ระบบกระแสไฟฟ้าขัดข้อง training data มาจากระบบไฟฟ้าเมืองหนึ่ง ในขณะที่ test data มาจากอีกเมือง  ส่วนปัญหา Covid Vaccine ที่เพิ่งจบไป training data คือ RNA ความยาว 91 bases ทั้งหมด ในขณะที่ test data ซึ่งเป็นโมเลกุลอีกกลุ่มนึงและมีกำหนดจะทดลองในเวลาถัดมานั้นมีความยาว 130 bases ทั้งหมด เป็นต้น

การแก้ปัญหาที่ทฤษฎีบอกว่าแก้ไม่ได้นี้ เป็นการฝึกให้เราคิดนอกกรอบ และเฟรมปัญหาใหม่ๆ กลับมาอยู่ในรูปแบบที่เราทำได้ครับ

นอกจากนี้ data บน Kaggle แม้จะผ่านการ process มาระดับนึงแล้ว แต่มักจะไม่ใช่ data ที่มีคุณภาพดีที่สุดที่จะนำไปฝึกสอนโมเดล จึงต้องทำ EDA, Visualization, preprocessing และ transforming ข้อมูลเพื่อให้ได้ข้อมูลที่สมเหตุผลที่สุด ซึ่งไม่เหมือนในตำรามักจะสมมติว่าเรามี data ที่ดีที่สุดอยู่แล้วครับ

 

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

ตอบกลับอ้างอิง
Posted : 27/10/2020 8:14 am
The Neural Engineer
(@neural-engineer)
EfficientNet

ข้อเสียหลักๆ ของ Kaggle มีเช่นเดียวกันครับ

นั่นคือ บางครั้งการหมกมุ่นกับ Kaggle ทำให้เราจับจ้องภาพเล็กของงานด้าน Data Science / AI มากเกินไป

เนื่องจากยิ่งขึ้นสู่ระดับสูงเท่าไร ยิ่งต้องทุ่มเทเวลามาก ในการเพิ่มประสิทธิภาพในหลัก เสี้ยวเปอร์เซนต์ 

ยกตัวอย่างเช่น ในหลายๆ การแข่งขัน เพื่อให้ได้เหรียญทอง อาจต้องทุ่มเวลาหลักเดือน เพื่อทำให้ความแม่นยำเพิ่มขึ้นในหลัก 0.1%

ซึ่งประสิทธิภาพที่เพิ่มนี้ แม้จะมีนัยยะในทางสถิติในบางครั้ง ในมักไม่มีนัยยะมากในโลกแห่งความเป็นจริง

การโฟกัสภาพเล็กนี้มีข้อดีตรงที่ ทำให้เราเรียนรู้เทคนิคขั้นสูง รวมทั้งเทคนิคแปลกๆ ได้มากมาย

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

ดังนั้นเพื่อนๆ ต้องสมดุลย์ระหว่างภาพเล็กกับภาพใหญ่ของ Kaggle ตามความเหมาะสมของแต่ละคนให้ดีครับ

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

ตอบกลับอ้างอิง
Posted : 20/08/2021 3:19 am
Share:

Please Login or Register