当前位置:首页 > 人工智能 > 正文内容

微积分梯度算法

root2个月前 (02-26)人工智能190
import numpy as np
# 损失函数:均方误差(MSE)
def mse_loss(y_true, y_pred):
    return np.mean((y_true - y_pred) ** 2)

# 梯度计算:损失函数对参数w的偏导数
def compute_gradient(X, y, w):
    # L = (1/n) * Σ(y - wX)²
    # dL/dw = -(2/n) * Σ(y - wX) * X
    n = len(y)
    # 计算样板在向量方向的预估值,w是X的同列数的一维数组
    predictions = X.dot(w)
    # 计算实际值y和预测值的差值,并计算出X每列特在在本次计算时的损失量,即X的行列转行并进行差值进行点积
    gradient = -(2/n) * X.T.dot(y - predictions)
    return gradient

# 参数更新:沿梯度反方向移动,y是实际值,X是样本,w是向量即预测的评分体系,learning_rate是学习率,iterations是迭代次数
def gradient_descent(X, y, w, learning_rate, iterations):
    for i in range(iterations):
        # 计算本地迭代的梯度情况
        grad = compute_gradient(X, y, w)
        # 根据梯度情况调整向量值,每次调整的比例是学习度
        w = w - learning_rate * grad
        if i % 100 == 0:
        # 计算函数损失,也就是向量调整到什么情况,方差越小向量越准确,即按照向量方向进行预测越贴近实际值
            loss = mse_loss(y, X.dot(w))
            print(f"Iteration {i}: loss = {loss:.4f}")
    return w

扫描二维码推送至手机访问。

版权声明:本文由一叶知秋发布,如需转载请注明出处。

本文链接:https://zhiqiu.top/?id=265

标签: AI
分享给朋友:
返回列表

没有更早的文章了...

没有最新的文章了...

相关文章