文章目录
2.5单层神经网络训练:增量规则
- 神经网络以权重的形式存信息
- 为了能用新的信息训练神经网络,权重应变
- 把根据给定的信息来修正权重的系统性方法叫学习规则。
- 训练是神经网络系统地存储信息的唯一方法
- 学习规则是神经网络研究中的重要组成
- 本节涉及增量规则
- 它是典型的单层神经网络的学习规则。
- 它不适合多层神经网络的训练,但是非常有助于研究神经网络
学习规则这一重要概念。
- 2-11所示的单层
- 为输出节点i的正确输出
- 增量规则按如下调整权重
- 如果一个输入节点对输出节点的误差有贡献
- 那么这两个节点间的权重应当以输入值x和输出值误差成比例地调整
- 学习率决定每次权重的改变量。
- 太大,则输出就会在真解的周围徘徊(震荡);
- 相反,如果该值太小,则趋近真解的计算过程就会非常慢
- 如图2-12的单层神经网络,三输入,一输出
- 这里假设输出节点没有偏差,线性**函数,
- 即将加权和直接传递到输出节点
- 权重下标的第一位数字(“1”),它表示输入要到达的节点的编号。
- 输入节点2与输出节点1之间的权重表示为。
- 用这种记号可更容易地矩阵运算,
- 与节点i相关的权重位于权重矩阵的第i行。
2.6广义增量规则
- 2.5节的增量规则已经过时。
- 对于任意一个**函数,都可以用下面的式子来表示增量规则
- 除用代替外,其他与2.5节中的增量规则一致
- 式(2.3)中
- 2.3节所用的线性**函数
- 该函数的导数=1,
- 将该值代入方程(2.4)得到
- 将上式代入方程(2.3),
- 则生成与表示增量规则的方程(2.2),
- 表明,方程(2.2)只对线性**函数是有效的。
- 现用 Sigmoid**函数来推导增量规则。
- Sigmoid函数的定义(见图2-14)
- 将该导数代入(2.4)得
- 再次将上面代入(2.3)中,得到 Sigmoid函数的增量规则为
- 复杂,但它仍然保持:
- 与输出节点误差
- 输入节点值成正比
2.7随机梯度下降算法、批量算法和小批量算法
- 权重更新值所用的原理。
- 有三种典型的算法可用于神经网络的监督学习
2.7.1随机梯度下降算法
- SGD计算每个训练数据的误差并随机调整权重。
- 100个训练数据点,则SGD算法将进行100次权重调整
- 图2-15展示用SGD算法计算出的权重更新值
- 是如何与全部训练数据相关联的
- SGD对每一个数据点都调整权重,所以训练过程中,神经网络的性能是变化的
- “随机”一词即暗含了训练过程的随机性。
- SGD计算权重更新值的公式为
- 表明2.5节和2.6节中所有的増量规则都是基于SGD算法
2.7.2批量算法
- 在batch算法中,
- 对每一个权重,使用全部训练数据分别计算出它的权重更新值,然后用这些权重更新值的平均值来调整该权重。
- 批量算法每次都用到所有的训练数据,最后只更新权重一次。
- 图2-16描述批量算法的权重更新值的计算和训练过程。
2.7.3小批量算法
- minibatch是SGD算法与批量的混合形式。
- 它选出一部分数据集,用批量算法训练这个数据集。
- 它就是用选出的数据集来计算一次权重更新值,然后再用平均权重更新值来调整该NN。
- 从100个训练数据点中任意选出20,那么将批量算法应用到这20个数据点上
- 为完成所有训练数据点的训练,总共要进行5次权重调整
- 图2-17展示小批量算法是如何选择训练数据和计算权重更新值
- 确定出合适的小批量数据点的个数时,小批量算法可以兼得这两种
算法的优势:SGD算法的高速度和批量算法的稳定性。 - 正是这个原因,小批量算法才常常被应用于需要处理大量数据的深度学习模型。
- 用“轮”( epoch)来解释SGD、批量和小批量
- 第2.5节简要地介绍了“轮”,现在总结为:
- 轮数是全部训练数据都参与训练的循环次数
- 批量算法中,神经网络的训练循环次数等于图2-18所示的一轮
- 用小批量时,每一轮训练的次数取決于每个小批量数据点个数的选择
- 总共有N个训练数据,每一轮训练的次数将会是大于1且小于N的数,
- 1对应于批量算法,N对应于SGD算法。
2.8示例:增量规则
- 如图2-19,Sigmoid函数作为输出节点的**函数
- 如图2-20的4个数
- 每个数据对的最后一个粗体数字为正确输出。
- 将前面用Sigmoid函数的增量规则即方程(2.5)作为学习规则。
- 可把方程(2.5)分解为几个等式,然后再按步骤进行重新排列,即
-
用SGD和批量算法来实现增量规则
-
这是一个单层NN,且只包含简单训练数据,代码不复杂。
-
下面两节中的代码清晰地看到SGD与批量之间的差别。
-
SGD算法直接训练每一个数据点,并不需要对权重更新值进行加法或者求平均值运算,所以SGD算法的代码比批量算法的代码简单