Python实现加速梯度下降法:代码示例与解析
当然可以!以下是一个使用Python编写的加速梯度下降法的简单示例代码:
import numpy as np
def accelerated_gradient_descent(X, y, learning_rate=0.01, beta=0.9, num_iterations=100):
num_samples, num_features = X.shape
theta = np.zeros(num_features) # 初始化参数
v = np.zeros(num_features) # 初始化速度变量
for i in range(num_iterations):
grad = compute_gradient(X, y, theta) # 计算梯度
v = beta * v + (1 - beta) * grad # 更新速度变量
theta = theta - learning_rate * v # 更新参数
return theta
def compute_gradient(X, y, theta):
num_samples = X.shape[0]
gradient = np.dot(X.T, (np.dot(X, theta) - y)) / num_samples
return gradient
# 示例使用
X = np.array([[1, 2], [3, 4], [5, 6]]) # 特征矩阵(假设有3个样本,每个样本有2个特征)
Y = np.array([3, 6, 9]) # 目标变量
theta_optimal = accelerated_gradient_descent(X, Y, learning_rate=0.01, beta=0.9, num_iterations=100)
print('Optimal parameters:', theta_optimal)
在上述代码中,我们定义了accelerated_gradient_descent函数来执行加速梯度下降法。该函数接受特征矩阵X、目标变量y,以及学习率(learning_rate)、动量参数(beta)、迭代次数(num_iterations)等参数。在每次迭代中,我们计算梯度并更新速度变量和参数。最后,函数返回学习到的最优参数。
compute_gradient函数用于计算梯度,其中使用了矩阵乘法和向量运算来实现梯度的计算。
示例部分展示了如何使用上述函数来进行简单的加速梯度下降法求解。您可以根据自己的需求调整参数和数据,运行代码并查看最优参数的输出。
希望这个示例对您有帮助!如有其他问题,请随时提问。
原文地址: https://www.cveoy.top/t/topic/0fu 著作权归作者所有。请勿转载和采集!