Gradient descent

Gradient Descent คือ อะไร EP.2

จากบทความที่แล้ว ถ้าเราต้องการสมการ Linear Regression ที่สามารถประมาณราคาบ้านได้แม่นยำที่สุด เราจำเป็นจะต้องทำให้ค่า Cost Function ต่ำที่สุดโดยการใช้ Gradient Descent

ในบทความนี้เราจะมาดูกันว่า

  • Gradient Descent คือ อะไร
  • แล้วสมการ Gradient Descent มีตัวแปรอะไรบ้าง
  • Derivative และ Partial Derivative เกี่ยวข้องกับ Gradient Descent อย่างไร

ซึ่งหากเพื่อนๆยังไม่ทราบว่า Linear Regression และ Cost Function คืออะไร สามารถเข้าไปอ่านในบทความนี้ได้เลยค่ะ (Linear Regression for Machine Learning EP.1)

Gradient Descent คืออะไร

Gradient Descent คือ Algorithm ที่ใช้ในการช่วย Minimize Cost Function () โดยทั่วไปหากเราต้องการ Minimize Cost Function เราจะแทนค่า ไปเรื่อยๆ หากข้อมูลมีจำนวนมากการแทนค่าไปเรื่อยๆอาจจะต้องใช้เวลาเป็นวันๆกว่าจะหาค่าที่ทำให้ Cost Function ต่ำที่สุดได้ แต่สมการ Gradient นี่แหละจะช่วยให้เราหาค่าได้ง่ายเพียงแค่พริบตาเดียว! 

และ Gradient ไม่ได้ช่วยแค่ Minimize Cost Function ในสมการ Linear Regression เพียงอย่างเดียว แต่มันสามรถช่วย Minimize Cost Function ในสมการ Regression แบบอื่นได้ด้วย! 

ก่อนที่เราจะไปดูว่าสมการ Gradient เป็นอย่างไร เรามาดูหลักการทำงานคร่าวๆของมันก่อนนะคะ

gradient Descent

ก่อนอื่นให้เรานึกถึงว่าเราอยู่บนภูเขาสูง ภูเขามันก็เชื่อมกันหลายๆลูก ทีนี้เราต้องการลงเขาเพื่อที่จะกลับบ้าน แล้วเราจะลงไปยังไง? การที่เราจะลงไปได้มันขึ้นอยู่กับ

  • จุดเริ่มต้นที่เราเลือกอยู่ จุดเริ่มต้นคนละอัน ปลายทางก็คนละอัน จะเห็นได้ว่าจุดเริ่มต้น  A และ B มีปลายทางที่ต่างกัน เราจะแทนค่าแต่ละจุดด้วย
  • ขนาดการก้าวขาของเรา ในที่นี้เราจะเรียกว่า Learning Rate ()

ทีนี้เราลองเอาคำพูดมาแปลงเป็นสมการสิ! จะได้สมการ Gradient Descent ดังนี้

อะไรเนี่ย! สมการอะไรไม่เห็นรู้เรื่องเลย ไม่ต้องกลัวค่ะ เดี๋ยวเราจะอธิบายทีละตัว อย่างละเอียด รับรองว่าเข้าใจง่ายแน่นอน

Gradient Descent

j=Feature Index Number 

  • หมายถึงการที่เราเลือกค่า  มา 1 คู่ แบบ Simultaneous (คือเลือกมาพร้อมกัน เช่น คู่อันดับ 2,1 ) 

Assignment Operator

  • เป็นภาษาที่ใช้สำหรับคอมพิวเตอร์ ความหมายคือ ด้านซ้ายมือของ Assignment Operator คือผลลัพท์จากคำสั่งที่กระทำด้านขวามือ (ไม่ใช่เครื่องหมายเท่ากับในคณิตศาสตร์นะคะ อย่าสับสน)

Derivative

คือ ความชันของเส้นตรงที่สัมผัสจุดใดๆบนเส้นโค้ง (Tangent Point) โดยทั่วไป ถ้าหากสมการเป็นเส้นตรง เราสามารถหาความชันเส้นตรงได้โดยใช้สูตร แต่ในกรณีนี้ เราต้องการหาความชันของเส้นโค้ง ดังนั้นเราต้องใช้การ Derivative หรือการ “ดิ๊ฟ” ที่เราเคยได้ยินมาในแคลคูลัสเข้ามาหาความชันของเส้นโค้งนี้

เราจะมาธิบายเพิ่มเติมนะคะ เพื่อให้เข้าใจเรื่อง Derivative มากขึ้น ยกตัวอย่างเช่น เราต้องการที่จะ Minimize Cost Function เราจะดูการทำงานของ Gradient เมื่อดูแค่ 1 Parameter คือ  เมื่อคือจำนวนจริงใดๆ

Gradient descent

จากรูปจะเห็นได้ว่า Slope ตรง Tangent Point มีค่าเป็นบวก(+) ดังนั้นเมื่อเราดิ๊ฟ Cost Function จะทำให้ค่าที่ได้เป็นบวกและเมื่อนำค่าที่ได้ไปคูณกับ ซึ่งมีค่าเป็นลบ ผลที่ได้ทั้งหมดคือ จะมีค่าลดลง และเราก็แทนค่า ที่ได้จากครั้งที่แล้ว จากนั้นดิ๊ฟไปเรื่อยๆก็จะทำให้ค่า ลดลงไปจนถึงจุด Local Minimum (L) 

 

ในกรณีที่ Slope ของ Tangent Point เป็นลบ(-) เมื่อดิ๊ฟ Cost Function ค่าที่ได้จึงเป็นลบ เมื่อนำไปคูณกับ ที่มีค่าเป็นลบเหมือนกัน ผลที่ได้คือค่า มีค่าเพิ่มขึ้น เมื่อทำการดิ๊ฟไปเรื่อยๆ ก็จะทำให้ค่า มีค่าเพิ่มขึ้นเรื่อยๆ(เลื่อนไปด้านขวา)จนไปถึงจุด Local Minimum (L)

ส่วน Partial Derivative คือการหาความชันเหมือนกับ Derivative แต่จะใช้เมื่อมี 2 Parameter () ขึ้นไปในสมการ ยกตัวอย่าง

จากนั้นเราก็เลือกค่า () มา 1 คู่ (Simultaneous) เช่น (2,1) จากนั้นก็แทนค่าลงในสมการ ก็จะได้ค่า Cost Function มา 1 ค่า เมื่อนำไปพล็อตกราฟจะได้จุดบนกราฟ 3 มิติเพราะมี Parameter 2 ตัวดังรูป

เมื่อเราก้าวเดินไปเรื่อยๆ จนเข้าใกล้ค่า Local Minimum (L) แล้ว ขนาดการก้าวจะเล็กลงเรื่อยๆเนื่องจากค่า Derivative มันลดลง 

มันจะหยุดเดิน เมื่อ Derivative=0 (Slope = 0)หรือ ถึงจุดที่ค่า Derivative มันเล็กมากๆ จนแทบไม่เปลี่ยนแปลงเราก็สามารถหยุดได้ ถึงแม้ว่า Derivative มันจะไม่เท่ากับ 0

Learning Rate

  • Learning Rate () คือ ขนาดของการก้าว ซึ่งเป็นค่าคงที่ ( Fixed Learning Rate) เมื่อเราได้มีการกำหนดค่า(สมมุติ) j=0, j=1 แล้ว (Simultaneous Update) 

ในการที่เราจะเลือกค่า นั้น ถ้าเราเลือก

  1. Learning Rate มีค่าน้อย หมายถึง ขนาดก้าวเราเล็ก ก็จะทำให้จำเป็นต้องก้าวหลายก้าวกว่าจะลงเขาได้ แถมช้าด้วย
  2. Learning Rate มีค่ามาก หมายถึง ขนาดก้าวยาวมาก มันอาจจะทำให้เราก้าวเลยจุด Local Minimum (L) ไป กลายเป็น Divergence ออกจากจุด Local minimum (คือก้าวขึ้นเขาอีกลูกไปซะงั้น)

ทั้งนี้การเลือก Learning Rate นั้นขึ้นอยู่กับ Range ของ Training Set ที่เราใช้ หาก Range สูง อาจจะต้องเลือกขนาดที่ใหญ่ แต่เหมาะสมกับข้อมูล

Convergent Criteria 

  • เมื่อเราทำ Derivative ไปเรื่อยๆ มันจะเริ่มลู่เข้าสู่จุด Local Minimum คือจุดที่ Slope=0 โดยเราจะเริ่มรู้ว่ามันลู่เข้า เมื่อเวลาเราทำ Derivative แล้วค่ามันไม่ค่อยเปลี่ยนไปมากหรือเปลี่ยนไปน้อยมาก จนแทบไม่เปลี่ยนแปลงเราก็สามารถหยุดได้ ถึงแม้ว่า Derivative มันจะไม่เท่ากับ 0 (ก็มันเปลี่ยนแปลงน้อย อาจจะต้องทำ Derivative อีกเป็นพันเป็นหมื่นครั้งก็ได้ ซึ่งมันคงเสียเวลามาก เราก็สามาถหยุดได้)

เพื่อนๆคงจะพอเข้าใจที่มาของสมการ Gradient บ้างแล้ว ในบทความต่อไปเราจะมาดูกันว่า เราจะ Apply Gradient Descent กับ Linear Regression อย่างไร และมันจะช่วยหา สมการ Linear Regression ที่แม่นยำที่สุดได้อย่างไร ไปดูกันต่อเลยค่ะ (เรื่อง Gradient Descent Algorithm EP.3 )

อัพเดทเรื่อง Machine Learning ได้ก่อนใครที่นี้ !!