เดินลงเขาด้วย Gradient Descent Algorithm

lukkiddd
lukkiddd
Published in
2 min readMar 19, 2017

หมายเหตุ: บทความนี้เป็นบทความที่อ่านแล้วนำมาสรุปตามความเข้าใจส่วนตัว หากมีข้อผิดพลาดประการใด แสดงความคิดเห็นบอกได้เลยครับ :D

Optimization คืออะไร

Optimization คือการหาจุดที่เหมาะสมที่สุด (Optimal Point) สำหรับปัญหาใดปัญหาหนึ่ง ยกตัวอย่างเช่น

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

ในบทความนี้ก็จะพูดถึงหนึ่งใน Algorithm สำหรับการทำ Optimization ตัวนึงที่ชื่อว่า Gradient Descent ซึ่งเป็น Algorithm ที่ใช้ค่อนข้างบ่อยในเรื่อง Machine Learning ครับ

Gradient Descent คืออะไร

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

หากเรามองเป็นภาพสามมิติ ก็จะเป็นเหมือนกราฟด้านล่างนี้

[Lecture 2 | Machine Learning (Stanford) — YouTube] (https://www.youtube.com/watch?v=5u4G23_OohI)

จากภาพ พื้นที่สีแดงคือยอดเขา (สูงมาก) และสีน้ำเงินคือบ่อน้ำ (ต่ำมาก) จะเห็นว่า หากเรายืนอยู่คนละจุดกัน ก็จะทำให้เราไปเจอบ่อน้ำคนละบ่อกัน ซึ่งไอบ่อน้ำเนี่ยเราเรียกมากว่า local minima ส่วนบ่อน้ำที่ต่ำที่สุดในโจทย์ของเราคือ global minima ครับ

นอกจากนี้เจ้า Gradient Descent ยังถูกแบ่งเป็นหลายแบบอีกด้วย

แบ่งตามการใช้งานข้อมูล

  • Full Batch Gradient Descent Algorithm — คำนวนข้อมูลทั้งหมดทีเดียว
  • Stochastic Gradient Descent Algorithm — คำนวนแค่บางส่วน (sample)

แบ่งตาม Differentiation technique

  • First order differentiation
  • Second order differentiation

ความยากของการใช้ Gradient Descent

บางทีการใช้งาน Gradient Descent อาจจะไม่ได้เหมาะกับข้อมูลทุกรูปแบบเสมอไป โดยอาจจะมีเหตุผลหลัก ๆ ที่เราต้องคำนึงก่อนเลือกใช้ดังนี้

  • Data Challenges — ถ้าข้อมูลที่เราใช้มันเป็นปัญหาประเภท non-convex มันจะทำให้เราติดอยู่ใน local minima ทำให้ไปไม่ถึง Global minima นั่นเอง
  • Implementation Challenges — ถ้าเครื่องที่เราใช้มี memory ไม่เพียงพอ หรือปัญหาทางด้าน hardware/software ที่ใช้ ทำให้การคำนวนมีความผิดพลาด ก็ทำให้เราไม่ได้ Global minima ที่แท้จริงเช่นกัน

อ่านเพิ่มเติม:

--

--