เมนูนำทาง
การเคลื่อนลงตามความชัน ตัวอย่างการเขียนโปรแกรมจากตัวอย่างข้างต้น เราสามารถเขียนโปรแกรมภาษา Python เพื่อหาค่า x {\displaystyle x} ที่ทำให้ f ( x ) = x 2 − 4 x {\displaystyle f(x)=x^{2}-4x} มีค่าต่ำที่สุดโดยใช้อัลกอริทึมการเคลื่อนลงตามความชันได้ดังนี้
1 def gradient(x, n_iter, alpha): 2 J = [] 3 def compute_cost(x): 4 """ 5 ฟังก์ชันที่เราต้องการทำให้มีค่าต่ำที่สุด 6 """ 7 J = x ** 2 - 4 * x 8 return J 9 10 def compute_grad(x):11 """12 ฟังก์ชันคำนวณหาความชันเมื่อได้รับค่า x13 """14 grad = 2 * x - 415 return grad16 17 # n_iter เป็นจำนวนครั้งที่เราอัพเดทค่า x จนไปถึงจุดต่ำที่สุด18 for i in range(n_iter):19 x = x - alpha * compute_grad(x)20 J.append(compute_cost(x)) 21 return x, J[-1]
นอกจากจะใช้วิธีการทั่วไปแล้ว เรายังสามารถใช้ไลบรารี่ Pytorch (เวอร์ชัน 0.4.1) ร่วมกับ autograd เพื่อคำนวณหาค่า x {\displaystyle x} ที่ทำให้ f ( x ) = x 2 − 4 x {\displaystyle f(x)=x^{2}-4x} มีค่าต่ำที่สุดได้เช่นกัน โดย autograd สามารถประมาณความชันได้โดยที่เราไม่ต้องคำนวณหาความชันของฟังก์ชันด้วยตัวเอง
import torchx = 10 * torch.ones(1)x.requires_grad_(True) # ตั้งค่าให้ x สามารถคำนวณหา gradient ได้out = torch.sum(x * x - 4 * x) # cost functionprint(x) # สมมติค่าเริ่มต้นที่ x = 10# gradient descentalpha = 0.02for _ in range(1000): out.backward(retain_graph=True) # calculate gradient using x.data.sub_(alpha * x.grad.data) # x = x - alpha * f'(x) x.grad.data.zero_() # setting gradient back to zero againprint(x) # สุดท้ายแล้วจะได้ค่า x = 2 ที่ทำให้ฟังก์ชันมีค่าต่ำที่สุด
เมนูนำทาง
การเคลื่อนลงตามความชัน ตัวอย่างการเขียนโปรแกรมใกล้เคียง
การเคลื่อนที่ (ฟิสิกส์) การเคหะแห่งชาติ (ประเทศไทย) การเคลื่อนที่แบบบราวน์ การเคลื่อนที่แบบโพรเจกไทล์ การเคลื่อนไหวของกลุ่มแอลจีบีที การเคลื่อนที่แบบฮาร์มอนิกอย่างง่าย การเคลื่อนย้ายเรลิก การเคลื่อนถอยของวิษุวัต การเคลื่อนไหวเอง การเคลื่อนลงตามความชันแหล่งที่มา
WikiPedia: การเคลื่อนลงตามความชัน https://lukkiddd.com/%E0%B9%80%E0%B8%94%E0%B8%B4%E... https://tupleblog.github.io/gradient-descent-part1...