ตัวอย่างการเขียนโปรแกรม ของ การเคลื่อนลงตามความชัน

จากตัวอย่างข้างต้น เราสามารถเขียนโปรแกรมภาษา 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 ที่ทำให้ฟังก์ชันมีค่าต่ำที่สุด

ใกล้เคียง

การเคลื่อนที่ (ฟิสิกส์) การเคหะแห่งชาติ (ประเทศไทย) การเคลื่อนที่แบบบราวน์ การเคลื่อนที่แบบโพรเจกไทล์ การเคลื่อนไหวของกลุ่มแอลจีบีที การเคลื่อนที่แบบฮาร์มอนิกอย่างง่าย การเคลื่อนย้ายเรลิก การเคลื่อนถอยของวิษุวัต การเคลื่อนไหวเอง การเคลื่อนลงตามความชัน