Skip to content

เรียนรู้ Machine learning ลุยเขียนโค้ดก่อนเลยดีไหม?

ผมเป็นคนนึงที่ถ้าจะศึกษาอะไรมักจะลงมือก่อนเพราะคิดว่าทำไปเรียนรู้ไป เดี๋ยวก็เข้าใจเอง ติดตรงไหนค่อยไปอ่านใน document ตอนที่ศึกษา machine learning ก็เหมือนกัน คือรู้มาบ้างว่ามันคืออะไร concept เป็นยังไง ก็ตั้งโจทย์ขึ้นมาแล้วก็ download พวก machine learning library ของภาษาที่อยากเขียนมาลองทำตาม sample code, document ไปเรื่อยๆ ซึ่งก็แน่นอนว่าได้ผลลัพธ์ตาม document อยู่แล้ว

สำหรับอะไรที่มันตรงไปตรงมาหรือเป็นความรู้เฉพาะอย่าง programming language เราสามารถลงมือเขียนเลยได้ เขียนบ่อยๆ เดี๋ยวก็เขียนเป็น (เขียนเป็นกับเขียนได้ดีคนละเรื่องนะ) แต่กับ machine learning แล้วผมรู้สึกว่ามันทำแบบนั้นไม่ได้ เพราะเป็นสาขาวิชาประยุกต์เลยมีพื้นฐานหลายอย่างที่เราต้องรู้ก่อนลงมือทำ เลยอยากบันทึกสิ่งที่เกิดขึ้นระหว่างที่ผมเรียนรู้ machine learning เสียหน่อย

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

ข้อมูลแบบนี้ควรใช้อัลกอริทึมไหนดี?

อัลกอริทึมพวกนี้ทำงานยังไง?

แต่ละอัลกอริทึมมีข้อดี-ข้อเสียแตกต่างกันยังไง?

ข้อมูลแบบนี้จะเลือก feature ไหนมา train ดีล่ะ?

พารามิเตอร์พวกนี้คืออะไร?

จะปรับพารามิเตอร์พวกนี้ยังไง?

จะทำยังไงให้ได้ความแม่มยำสูงสุด?

แล้วความแม่นยำที่เราวัดได้ทำไมได้ผลแย่ตอนทดสอบกับข้อมูลจริง?

train แล้วช้ามากจะ optimize ยังไงดี?

อ่าน paper แล้วไม่เข้าใจเลย math อะไรก็ไม่รู้?

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

  • ดูกราฟและพล็อตกราฟให้เป็น
  • ทบทวน linear algebra, discrete math, calculus จริงๆ พวกนี้เราเคยเรียนมาก่อนสมัยมัธยม มหาลัยแล้วหละ   สิ่งที่เราบ่นว่าเรียนไปก็ไม่ได้ใช้ เช่น เส้นตรง, matrix, vector, probability, set, logic, combination, graph, partial derivative etc.
  • พื้นฐานวิชาสถิติ probability, conditional probability, normal distribution etc.
  • การวัดผลเช่นพวก cross-validation, confusion matrix เพื่อดู error แบบต่างๆ, precision, recall, F1 score etc.
  • อาจจะมี information theory ด้วยก็ได้

ถ้าเราเข้าใจเรื่องพวกนี้ก็พอจะเชื่อมโยงสิ่งต่างๆ ได้แล้ว ยกเว้นว่าถ้าอัลกอริทึมนั้นใช้ math ที่ซับซ้อนขึ้นไปอีกก็ต้องตามไปศึกษาเพิ่มเติมเองถ้าอยากรู้

ส่วนอีกอย่างที่ผมเจอไม่ว่าจะใช้อัลกอริทึมใดๆ ก็ตามมักจะมีขั้นตอนที่คล้ายกันดังนี้

  • พล็อตกราฟเพื่อดูรูปแบบข้อมูลที่มี
  • หาสมการ hypothesis
  • หาสมการ cost function
  • optimize cost function นั้นซะเพื่อให้ได้ model ที่ fit กับข้อมูลที่ใช้ train
  • tune parameters ให้เหมาะสม เช่นการทำ cross-validation เพื่อดูว่า model ของเรา under fit หรือ over fit หรือไม่ (ไว้จะเขียนถึงเรื่องนี้ทีหลัง)

แม้ว่าการสร้างระบบ machine learning จะใช้ programming เป็นหลักแต่ภาษาคือเครื่องมือครับ พื้นฐานเหล่านี้สำคัญกับการเรียนรู้ machine learning มากๆ ค่อยเก็บเล็กผสมน้อย connect the dot ไปเรื่อยๆ ก็น่าจะเกิดองค์ความรู้ของเราเองจนสามารถพลิกแพลงให้เข้ากับข้อมูลที่เรามีได้

 

Be First to Comment

Leave a Reply

Your email address will not be published.