神经网络入门:从理论到Python实现
1. 损失函数的随机梯度下降
在神经网络中,要计算梯度并应用梯度下降法,通常需要在训练集的每个点上评估损失函数及其对网络参数的导数,这在大多数情况下计算成本过高。因此,我们采用随机梯度下降(SGD)技术。
1.1 小批量样本的选择
运行SGD时,首先从训练集中选择一些样本,这些样本组成一个小批量(mini - batch)。每个小批量的长度固定,称为小批量大小。对于像手写数字识别这样的分类问题,选择与标签数量相同数量级的批量大小是个不错的做法,这样可以确保每个标签在小批量中都有代表。
1.2 前向传播与损失计算
对于一个具有 $l$ 层的前馈神经网络和大小为 $k$ 的小批量输入数据 $x_1, \ldots, x_k$,可以计算神经网络的前向传播,并计算该小批量的损失。对于该批次中的每个样本 $x_j$,可以评估损失函数相对于网络中任何参数的梯度。第 $i$ 层的权重梯度和偏置梯度分别称为 $\Delta_jW_i$ 和 $\Delta_jb_i$。
1.3 参数更新规则
通过减去该批次的累积误差来更新参数,其中 $a > 0$ 表示学习率,这是在训练网络之前指定的一个值。使用小批量是在梯度准确性和计算效率之间的一种折衷。由于小批量样本是随机选择的,所以这种方法被称为随机梯度下降。虽然在梯度下降中理论上可以保证接近局部最小值,但在SGD中并非如此。不过,经过足够的迭代,通常可以接近一个(局部)最小值。
1.4 优化器
计算(随机)梯度是由微积分的基本原理定义的,但使用梯度更新参数的方式并非如此。像S
超级会员免费看
订阅专栏 解锁全文
1918

被折叠的 条评论
为什么被折叠?



