要使用 Python 實現梯度下降法求極小值,首先需要定義一個目標函數和它的梯度。然后編寫梯度下降算法來迭代更新參數,直到滿足停止條件(比如迭代次數達到一定值或者參數變化小于某個閾值)為止。
以下是一個簡單的示例代碼,以求解目標函數 f(x) = x^2 的極小值為例:
import numpy as np
# 定義目標函數和梯度函數
def f(x):
return x**2
def gradient(x):
return 2*x
# 梯度下降算法
def gradient_descent(learning_rate, max_iter, epsilon):
x = 10 # 初始值
for i in range(max_iter):
grad = gradient(x)
x_new = x - learning_rate * grad
if abs(x_new - x) < epsilon:
break
x = x_new
return x
# 設置超參數
learning_rate = 0.1
max_iter = 1000
epsilon = 1e-5
# 調用梯度下降算法求解極小值
result = gradient_descent(learning_rate, max_iter, epsilon)
print("極小值為:", result)
print("目標函數在極小值處的取值為:", f(result))
在上面的代碼中,我們首先定義了目標函數 f(x) = x^2 和它的梯度函數 gradient(x) = 2*x。然后編寫了梯度下降算法 gradient_descent,在每一次迭代中更新參數 x,直到滿足停止條件為止。最后調用 gradient_descent 函數求解目標函數的極小值。
你可以根據實際需求修改目標函數、梯度函數、超參數等來求解不同的函數的極小值。希望對你有幫助!