2 NN

时间:2024-04-01 17:59:51

2.5单层神经网络训练:增量规则

  • 神经网络以权重的形式存信息
  • 为了能用新的信息训练神经网络,权重应变
  • 把根据给定的信息来修正权重的系统性方法叫学习规则。
  • 训练是神经网络系统地存储信息的唯一方法
    • 学习规则是神经网络研究中的重要组成

  • 本节涉及增量规则
  • 它是典型的单层神经网络的学习规则。
  • 它不适合多层神经网络的训练,但是非常有助于研究神经网络
    学习规则这一重要概念。

  • 2-11所示的单层
  • did_i为输出节点i的正确输出

2 NN

  • 增量规则按如下调整权重
  • 如果一个输入节点对输出节点的误差有贡献
    • 那么这两个节点间的权重应当以输入值x和输出值误差成比例地调整

2 NN

  • 学习率决定每次权重的改变量。
  • 太大,则输出就会在真解的周围徘徊(震荡);
  • 相反,如果该值太小,则趋近真解的计算过程就会非常慢

  • 如图2-12的单层神经网络,三输入,一输出
  • 这里假设输出节点没有偏差,线性**函数,
    • 即将加权和直接传递到输出节点

2 NN

  • 权重下标的第一位数字(“1”),它表示输入要到达的节点的编号。
  • 输入节点2与输出节点1之间的权重表示为w12w_{12}
  • 用这种记号可更容易地矩阵运算,
  • 与节点i相关的权重位于权重矩阵的第i行。

2 NN

2.6广义增量规则

  • 2.5节的增量规则已经过时。
  • 对于任意一个**函数,都可以用下面的式子来表示增量规则

2 NN

  • 除用δi\delta_i代替eie_i外,其他与2.5节中的增量规则一致

  • 式(2.3)中

2 NN

2 NN

  • 2.3节所用的线性**函数
  • 该函数的导数=1,
  • 将该值代入方程(2.4)得到

2 NN

  • 将上式代入方程(2.3),
  • 则生成与表示增量规则的方程(2.2),
  • 表明,方程(2.2)只对线性**函数是有效的。

  • 现用 Sigmoid**函数来推导增量规则。
  • Sigmoid函数的定义(见图2-14)

2 NN

2 NN

  • 将该导数代入(2.4)得

2 NN

  • 再次将上面代入(2.3)中,得到 Sigmoid函数的增量规则为

2 NN

  • 复杂,但它仍然保持:
    • 与输出节点误差
    • 输入节点值成正比

2.7随机梯度下降算法、批量算法和小批量算法

  • 权重更新值Δwij\Delta w_{ij}所用的原理。
  • 有三种典型的算法可用于神经网络的监督学习

2.7.1随机梯度下降算法

  • SGD计算每个训练数据的误差并随机调整权重。
  • 100个训练数据点,则SGD算法将进行100次权重调整
  • 图2-15展示用SGD算法计算出的权重更新值
    • 是如何与全部训练数据相关联的

2 NN

  • SGD对每一个数据点都调整权重,所以训练过程中,神经网络的性能是变化的
  • “随机”一词即暗含了训练过程的随机性。
  • SGD计算权重更新值的公式为

2 NN

  • 表明2.5节和2.6节中所有的増量规则都是基于SGD算法

2.7.2批量算法

  • 在batch算法中,
  • 对每一个权重,使用全部训练数据分别计算出它的权重更新值,然后用这些权重更新值的平均值来调整该权重。
  • 批量算法每次都用到所有的训练数据,最后只更新权重一次。
  • 图2-16描述批量算法的权重更新值的计算和训练过程。

2 NN

2 NN

2.7.3小批量算法

  • minibatch是SGD算法与批量的混合形式。
  • 它选出一部分数据集,用批量算法训练这个数据集。
  • 它就是用选出的数据集来计算一次权重更新值,然后再用平均权重更新值来调整该NN。
  • 从100个训练数据点中任意选出20,那么将批量算法应用到这20个数据点上
  • 为完成所有训练数据点的训练,总共要进行5次权重调整
  • 图2-17展示小批量算法是如何选择训练数据和计算权重更新值

2 NN

  • 确定出合适的小批量数据点的个数时,小批量算法可以兼得这两种
    算法的优势:SGD算法的高速度和批量算法的稳定性。
  • 正是这个原因,小批量算法才常常被应用于需要处理大量数据的深度学习模型。

  • 用“轮”( epoch)来解释SGD、批量和小批量
  • 第2.5节简要地介绍了“轮”,现在总结为:
    • 轮数是全部训练数据都参与训练的循环次数
  • 批量算法中,神经网络的训练循环次数等于图2-18所示的一轮

2 NN

  • 用小批量时,每一轮训练的次数取決于每个小批量数据点个数的选择
  • 总共有N个训练数据,每一轮训练的次数将会是大于1且小于N的数,
    • 1对应于批量算法,N对应于SGD算法。

2.8示例:增量规则

  • 如图2-19,Sigmoid函数作为输出节点的**函数

2 NN

  • 如图2-20的4个数
  • 每个数据对的最后一个粗体数字为正确输出。

2 NN

  • 将前面用Sigmoid函数的增量规则即方程(2.5)作为学习规则。
  • 可把方程(2.5)分解为几个等式,然后再按步骤进行重新排列,即

2 NN

  • 用SGD和批量算法来实现增量规则

  • 这是一个单层NN,且只包含简单训练数据,代码不复杂。

  • 下面两节中的代码清晰地看到SGD与批量之间的差别。

  • SGD算法直接训练每一个数据点,并不需要对权重更新值进行加法或者求平均值运算,所以SGD算法的代码比批量算法的代码简单