在 Python 中从头开始实现神经网络优化器

原文:towardsdatascience.com/genai-with-python-build-agents-from-scratch-complete-tutorial-4fc1e084e2ec

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/33c7bd449f6c957c0cf40bc22064b082.png

LukasPexels上的照片

本文将提供常见非凸优化器的简短数学表达式及其从头开始的 Python 实现。理解这些优化算法背后的数学将使你在训练复杂的机器学习模型时获得新的视角。本文的结构如下。首先,我将讨论特定的优化算法;然后,我将给出数学公式并提供 Python 代码。所有算法都是通过纯 NumPy 实现的。以下是我们将讨论的非凸优化算法

  • 随机梯度下降(SGD)

  • SGDMomentum

  • AdaGrad

  • RMSprop

  • Adam

让我们从最简单的一个开始,随机梯度下降(SGD)。

随机梯度下降(SGD

SGD 是一种迭代、非凸和一阶优化算法,它作用在可微分的误差曲面上。它是对梯度下降的随机估计,其中训练数据是随机化的。它是一种计算稳定的、数学上已确立的优化算法。SGD 背后的直觉是我们对目标函数相对于我们可以优化的参数求偏导数,从而得到其梯度,这显示了误差损失的递增方向。因此,我们取该梯度的负值,以便在损失不再增加的地方前进。为了确保稳定和较少振荡的优化,我们引入了学习率参数ŋ,然后将梯度与ŋ相乘。最后,从我们可以优化的参数中迭代地减去获得的价值。以下是 SGD 更新公式和 Python 代码。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e03150c87e213c9af2d648c3af919571.png

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值