笔记: 随机梯度下降参数求解实现

本文深入探讨了随机梯度下降(SGD)算法在优化参数求解中的作用。通过实例,解释了SGD如何通过迭代更新模型权重来最小化损失函数,从而提高预测准确性。同时,讨论了SGD相对于批量梯度下降的优势,如计算效率高,适合大规模数据集。文章还提及了动量法和学习率调整等策略,以改善SGD的收敛性能。
"""
随机梯度下降

描述:每次选取一个样本参与梯度计算
场景:一元线性回归
"""

import numpy as np

np.random.seed(1)
X = 2 * np.random.rand(100, 1)
Y = 4 + 3 * np.random.randn(100, 1)
X = np.c_[np.ones((100, 1)), X]
m = 100  # 样本数
theta = np.random.randn(2, 1)
learning_rate = 0.001
n_epochs = 10000  # 随机梯度下降次数

if __name__ == "__main__":

    for epoch in range(n_epochs):
        for i in range(m):
            random_index = np.random.randint(m)
            xi = X[random_index:random_index+1]
            yi = Y[random_index:random_index+1]
            gradients = xi.T.dot(xi.dot(theta) - yi)
            # 统计更新theta
            theta -= learning_rate * gradients


    print(theta)

[[ 4.65856506]
 [-0.47926501]]
虽然没调参,但这个是真不稳...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值