误差反向传播-4|学习笔记

简介: 快速学习误差反向传播-4

开发者学堂课程【神经网络概览及算法详解误差反向传播-4】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/40/detail/932


误差反向传播-4

 

内容介绍:

一、BP 网络训练步骤

二、再谈激活函数的特点  

三、误差曲面存在的问题

四、标准 BP 算法存在的问题

五、标准BP算法改进

 

一、BP 网络训练步骤

BP 神经网络的一般训练步骤:

初始化:网络结构(网络层数、输入输出及隐藏层节点个)、权值矩阵、阈值选择某个样本k参加训练:

计算样本对应的各层的输入和输出

利用期望输出与实际输出,计算误差函数对输出层的各神经元的偏导

利用期望输出与实际输出,计算误差函数对隐层层的各神经元的偏导

利用公式修正隐藏层到输出层的权重:

利用公式修正输入层到隐藏层的权重:

判断是否需要继续训练:

是否达到最大循环次数

全局误差是否满足期望

结束训练,得到神经网络模型

image.png

//虽然用一个样本来训练整个网络,但是网络的好坏不能用一个样本来评判,要用所有的输入样本,都用当前的权重算一下总的误差是不是能接受,如果能接受,训练结束。如果不能接受,返回上一步,继续挑选下一个样本,继续训练,直到满足两个条件之一,得到最终的网络模型。

 

二、再谈激活函数的特点  

一个好的激活函数通常会具有的特点:

非线性:导数不能是常数,否则网络会退化成单层网络

处处可微:或者说几乎处处可微,保证能计算梯度,从而进行参数优化

计算简单:降低计算难度和复杂程度

非饱和性:饱和指在某些区间内,梯度接近于零(梯度消失),使得参数无法继续更新,即无法收敛

单调性:即导数符号不变(朝一个方向变化),避免梯度方向经常变化导致的不易收敛

有限的输出范围:面对不同范围的输入也会保持输出的稳定性,但有时会导致梯度消失

....….

//实际上还有其他的要求,后续学习复杂的神经网络的时候,也会回忆激活函数相关的特点。

 

三、误差曲面存在的问题

误差曲面E=F(XP,w,v,dP)通常维数比较多,形状比较复杂,当存在以下两种情况时,对梯度法最小化损失函数有比较大的影响:

存在平坦区域:即image.png,当ok或者1-0k趋近于0时,无论E的取值或

者变化如何,梯度基本不变,即权值更新变慢,也称作激活函数的饱和区

存在多个局部最小值:其特点是梯度为0,使得限于局部最小值而不能自拔

image.png

 

四、标准 BP 算法存在的问题  

常见的问题

1.容易陷入局部最小,得不得到全局最优值

2.饱和区导致训练次数多,但是收敛缓慢

3.设计网络时,关键信息选取无明确依据

隐层数

隐层节点

数学习速率

4.训练顺序对训练有影响,有“遗忘”的特点

//不同样本的先后顺序对权重的影响不一样,所以训练顺序有影响

 

五、标准BP算法改进

1.增加动量项  

标准 BP算法在更新权重时,只考虑了当前状态下的误差梯度,而未考虑之前的梯度变化情

况,导致训练过程震荡,收敛过慢,为了提高训练速度,在权值调整公式中增加一项,用来保留之前的权重更新的信息,即权重更新公式变为:

image.png

其中,aW(t-1)被称作动量项。从前一次的权重更新的量中取一部分叠加到当前的更新量中,从而增加了之前梯度变化的影响。

α被称作动量系数,其取值一般在(0,1)之间。

动量项反映了以前积累的权重调整经验,使权重调整有了“记忆”

动量项对当前调整起到了阻尼的作用。当误差变化起伏剧烈时,动量项可以减小震荡趋势,提高训练速度。

2. 自适应调节学习率

标准 BP算法中的η称作学习率、学习速率、步长等,通常定为常数,在权重更新中起到了较大的作用,该值选择不合适,会严重影响学习过程和学习结果。

结合误差曲面,当在平坦区时,希望学习率大一些,达到同样的训练效果的同时,可以减少训练次数

当在误差变化剧烈的区域,希望学习率小一些,以免步子过大,迈过理想值,从而引起不合理的震荡

可在学习过程中适当调整学习率,方法很多,如:

设置初始学习率η

经过一批权值调整步骤后,如果总误差上升,说明学习率大了,需要减小,则: η(t+1)=βη(t)

如果总误差下降,说明学习率小了,可以增加,则: η(t+1)=θη(t)

image.png

3. 陡度因子

进入误差曲面的平坦区,通常是因为神经元进入了激活函数的饱和区,如果能设法在饱和区内对激活函数进行调整,比如压缩神经元的净输入,使其输出退出饱和区,就可以脱离当前的平坦区。可以在原激活函数中引入陡度因子: λ

当有ΔE接近0,而dk-ok较大时,进入平坦区,此时,令λ>1,netk坐标被压缩倍,激活函数

的敏感区变长,一些绝对值较大的netk退出饱和区,当λ=1时,恢复原状,当λ<1时,更快进入饱和区。

image.png

相关文章
WK
|
3月前
|
机器学习/深度学习 算法
什么是损失函数和损失函数关于参数的梯度
损失函数是机器学习中评估模型预测与真实值差异的核心概念,差异越小表明预测越准确。常见损失函数包括均方误差(MSE)、交叉熵损失、Hinge Loss及对数损失等。通过计算损失函数关于模型参数的梯度,并采用梯度下降法或其变种(如SGD、Adam等),可以优化参数以最小化损失,提升模型性能。反向传播算法常用于神经网络中计算梯度。
WK
103 0
|
6月前
|
算法
梯度下降算法(二)
梯度下降法中,学习率选择至关重要。0.3的学习率导致无法找到最小值且产生震荡,而0.01则使结果接近最优解(2.99998768)。当学习率进一步减小至0.001,点远离最低点。通过迭代次数增加至1000次,可更接近最低点(2.999999999256501)。梯度下降用于最小化损失,学习率控制参数更新步长,需平衡收敛速度和稳定性。迭代次数和初始点也影响模型性能,合适的初始化能加速收敛并避开局部极小值。
|
6月前
|
机器学习/深度学习 存储 算法
梯度下降算法(一)
梯度下降是一种迭代优化算法,用于找到多变量函数的最小值。它不直接求解方程,而是从随机初始点开始,沿着梯度(函数增大幅度最大方向)的反方向逐步调整参数,逐步逼近函数的最小值。在单变量函数中,梯度是导数,而在多变量函数中,梯度是一个包含所有变量偏导数的向量。通过计算梯度并乘以学习率,算法更新参数以接近最小值。代码示例展示了如何用Python实现梯度下降,通过不断迭代直到梯度足够小或达到预设的最大迭代次数。该过程可以类比为在雾中下山,通过感知坡度变化来调整前进方向。
|
6月前
|
机器学习/深度学习 算法
损失函数
【6月更文挑战第14天】损失函数。
52 2
|
7月前
|
机器学习/深度学习 算法 调度
多元线性回归梯度下降法
梯度下降法是一种通用的优化算法,尤其适用于机器学习中找到最优解。与解析解法不同,它不局限于特定情况,能在数据规模较大时依然有效。该方法通过迭代逐步接近最优解,每次迭代利用损失函数的梯度信息调整参数。学习率是控制参数更新幅度的关键因素,太大会导致发散,太小则收敛慢。全量梯度下降每次使用所有样本更新,收敛稳定但速度慢;随机梯度下降每次仅用一个样本,速度快但可能产生较大波动;小批量梯度下降取两者之间,以一定的样本批量进行更新,兼顾速度和稳定性。
90 1
|
7月前
|
机器学习/深度学习 算法
反向传播原理的梯度下降算法
反向传播原理的梯度下降算法
“交叉熵”反向传播推导
“交叉熵”反向传播推导
141 0
|
机器学习/深度学习 人工智能 数据可视化
F(x)构建方程 ,梯度下降求偏导,损失函数确定偏导调整,激活函数处理非线性问题
F(x)构建方程 ,梯度下降求偏导,损失函数确定偏导调整,激活函数处理非线性问题
154 0
F(x)构建方程 ,梯度下降求偏导,损失函数确定偏导调整,激活函数处理非线性问题
|
机器学习/深度学习 算法 开发者
误差反向传播算法-1|学习笔记
快速学习误差反向传播算法-1
误差反向传播算法-1|学习笔记
|
机器学习/深度学习 算法 开发者
误差反向传播算法-2|学习笔记
快速学习误差反向传播算法-2
误差反向传播算法-2|学习笔记