误差逆传播(BP)算法初介绍
https://www.bilibili.com/video/BV19K4y1L7ao
正向传播FP就损失
反向传播BP回传误差
根据误差修改权重
继续迭代至最优
算法推导
梯度下降简介
梯度下降就是从起点开始,沿着梯度 的方向,按照步长 的大小,一步一步地走到谷底
梯度的理解
- 梯度分为正梯度方向和负梯度方向(可以理解为求最大值和最小值)
谷底的理解(以负梯度为例)
步长的理解
第一,步长长度太小
第二,步长太大
值得注意的是,步长太大,很可能跨过最低点,运气好的话可能会不断震荡到最小值,如果运气不好的话,可能会震荡到发散
学习率的理解
- 学习率可以理解为控制步长的一个参数
- 在学习率的调解下,最终达到最优解,如下图所示
BP算法可能导致的过拟合问题的处理方法
过拟合
- 简单理解为在训练集上拟合程度很高,但是测试集上拟合程度很低
第一种解决办法——“早停”策略
- 将数据分为训练集和测试集,训练集用来计算梯度、更新连接权和阈值,测试集用来估计误差
- 如果训练集误差降低但测试集误差升高就停止训练
第二种解决方法——“正则化”策略
- 在误差目标函数中添加一个用于描述网络复杂度的部分,比如连接权和阈值的平方和,添加之后,训练过程会偏好比较小的连接权和阈值,使得输出更加“光滑”,从而缓解过拟合问题
全局最小和局部最小
如何跳出局部最小,接近全局最小?
方法一
- 用多组不同的参数初始化神经网络,按照标准训练后,取其中最小的解作为最终参数(理解为可能陷入多个不同的局部最小,从中选择全局最小)
方法二
-
模拟退火技术:在每一步都以一定的概率接受比当前解更差的结果,有助于跳出局部最小,但是同时也可能跳出全局最小
方法三
- 使用随机梯度下降,即在计算梯度的时候加入了随机因素,即使陷入局部最小点,计算出的梯度也不是零,有机会跳出局部最小