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

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

开发者学堂课程【机器学习算法 :误差反向传播算法-4】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/535/detail/7243


误差反向传播算法-4

 

内容介绍

一、BP 网络训练步骤

二、再谈激活函数的特点

三、误差曲面存在的问题

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

五、标准 BP 算法改进:增加动量项

六、标准 BP 算法改进:自适应调节学习率

七、标准 BP 算法改进:陡度因子

 

一、BP 网络训练步骤

1.BP 神经网络的一般训练步骤︰

初始化:网络结构(网络层数、输入输出及隐藏层节点个数)、权值矩阵、阈值

(1)选择某个样本 k 参加训练∶

  • 计算隐藏层输出

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

  • 计算输出层输出

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

  • 计算误差

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

  • 根据误差更新权重

根据以下两个式子更新权重。

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

图片9.png 

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

图片10.png

(2)完成以上后,判断是否需要继续训练∶

£ 是否达到最大循环次数(所设置的循环次数)

□全局误差是否满足期望

全局误差的计算:

图片11.png

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

注意:

虽然使用的是一个样本来训练网络,但网络的好坏不能用一个样本来评判,要使用所有的输入样本都用当前的权重来计算一遍,然后查看总体的误差是否可以接受,若能够接受训练结束,若无法接受,返回上一步,继续挑拣下一个样本,参加训练,直到满足两个条件之一,得到最后的神经网络模型。

2.图例如下

图片12.png  

二.再谈激活函数的特点

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

  • 非线性:导数不能是常数,否则网络会退化成单层网络。若在对函数求导时返回值为常数,为一个直线,即为退化了,多层网络返回了一个单层网络。
  • 处处可微:或者说几乎处处可微,保证能计算梯度,从而进行参数优化
  • 计算简单:降低计算难度和复杂程度
  • 非饱和性∶饱和指在某些区间内,梯度接近于零(梯度消失),使得参数无法继续更新,即无法收敛
  • 单调性:即导数符号不变(朝一个方向变化),避免梯度方向经常变化导致的不易收敛
  • 有限的输出范围∶面对不同范围的输入也会保持输出的稳定性,但有时会导致梯度消失

 

三、误差曲面存在的问题

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

1. 存在平坦区域:

每次更新权重w时,都会用原有的权重 w-△w,若 △w 十分小,则权重的更新就十分慢。

图片13.png

当 ok 或者 1-ok 趋近于0时,无论 E 的取值或者变化如何,梯度基本不变,即权值更新变慢,也称作激活函数的饱和区

图片14.png

2. 存在多个局部最小值:

其特点是梯度为0,使得限于局部最小值而不能自拔。实际上若陷入某个趋度为0的地方,取得的值即为局部的最小值,而非全局的最小值。

 图片15.png

 

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

1.常见的问题

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

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

□设计网络时,关键信息选取无明确依据,如:难以确定几层隐层数合适以及节点个数。同时输入也并不确定,如:输入时每个样本有5个输入值,并非输出就是5个,因为可能需要做拓冲扩展,扩展之后可能就是10个。

  • 隐层数
  • 隐层节点数
  • 学习速率

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

在训练模型时,对于样本的输入顺序对权重的影响是不一样的,所以也有影响。

 

五、标准 BP 算法改进:增加动量项

标准BP算法在更新权重时,只考虑了当前状态下的误差梯度,而未考虑之前的梯度变化情况,导致训练过程震荡,收敛过慢,为了提高训练速度,在权值调整公式中增加一项,用来保留之前的权重更新的信息,即权重更新公式变为:

△w(t) = ηδx + αw(t-1)

即在原来的 △w 的基础上增加一项更新之前的权重变为 αW(t- 1),加上 α,使得可以调节 α 参数,使得式子更加合理。

其中,αW(t- 1) 被称作动量项,从前一次的权重更新的量中取一部分叠加到当前的更新量中,从而增加了之前梯度变化的影响。简单来说,就是使得它变化更加稳定,减少过度震荡。动量项实际上就是解决了“遗忘”问题。

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

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

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

 

六、标准 BP 算法改进:自适应调节学习率

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

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

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

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

设置初始学习率η

经过一批权值调整步骤后,

如果总误差上升,说明学习率大了,需要减小,则:

η(t+ 1 )=βη(t)

如果总误差下降,说明学习率小了,可以增加,则:

η(t+ 1 )=θ(t)

 

七、标准 BP 算法改进:陡度因子

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

图片16.png 

当有 △E 接近0,而 dk-ok 较大时,进入平坦区,此时,令 λ>1,  netk 坐标被压缩入倍,激活函数的敏感区变长,一些绝对值较大的 netk 退出饱和区,当 λ=1 时,恢复原状,当 λ<1 时,更快进入饱和区。

图片17.png

由图可以看出,λ=1 时,为中间黑色曲线;λ<1 为上方红色曲线;λ>1 为下方蓝色曲线。可以看出,在饱和区时,它们的变化都不明显。

相关文章
|
机器学习/深度学习 人工智能 算法
深度学习入门:理解神经网络与反向传播算法
【9月更文挑战第20天】本文将深入浅出地介绍深度学习中的基石—神经网络,以及背后的魔法—反向传播算法。我们将通过直观的例子和简单的数学公式,带你领略这一技术的魅力。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你打开深度学习的大门,让你对神经网络的工作原理有一个清晰的认识。
|
11月前
|
机器学习/深度学习 算法 前端开发
图解前向、反向传播算法,一看就懂!
前向传播是神经网络中信息从输入层经过隐藏层传递到输出层的过程。每个神经元接收前一层的输出,通过加权求和和激活函数处理后传递给下一层,最终生成预测结果。此过程涉及输入信号、加权求和、激活函数应用等步骤。前向传播用于生成预测结果,在训练阶段与真实标签比较以计算损失函数,并在推理阶段直接生成预测值。反向传播则利用链式法则计算损失函数相对于权重的梯度,调整参数以减小误差,从而优化模型性能。两者结合实现神经网络的有效训练和预测。
|
机器学习/深度学习 人工智能 自然语言处理
深度学习还不如浅层网络?RL教父Sutton持续反向传播算法登Nature
【9月更文挑战第24天】近年来,深度学习在人工智能领域取得巨大成功,但在连续学习任务中面临“损失可塑性”问题,尤其在深度强化学习中更为突出。加拿大阿尔伯塔大学的研究人员提出了一种名为“持续反向传播”的算法,通过选择性地重新初始化网络中的低效用单元,保持模型的可塑性。该算法通过评估每个连接和权重的贡献效用来决定是否重新初始化隐藏单元,并引入成熟度阈值保护新单元。实验表明,该算法能显著提升连续学习任务的表现,尤其在深度强化学习领域效果明显。然而,算法也存在计算复杂性和成熟度阈值设置等问题。
280 2
WK
|
机器学习/深度学习 监控 算法
反向传播算法是如何工作的
反向传播算法通过最小化损失函数优化神经网络。首先,输入数据经由前向传播得到预测结果,并计算损失;接着,反向传播计算各参数的梯度,并利用梯度下降法更新权重和偏置。这一过程反复进行,直至满足停止条件。算法具备高效性、灵活性及可扩展性,能处理复杂模式识别与预测任务,适用于不同类型与规模的神经网络,显著提升了模型的预测准确性和泛化能力。
WK
555 3
|
机器学习/深度学习 算法
**反向传播算法**在多层神经网络训练中至关重要,它包括**前向传播**、**计算损失**、**反向传播误差**和**权重更新**。
【6月更文挑战第28天】**反向传播算法**在多层神经网络训练中至关重要,它包括**前向传播**、**计算损失**、**反向传播误差**和**权重更新**。数据从输入层流经隐藏层到输出层,计算预测值。接着,比较预测与真实值计算损失。然后,从输出层开始,利用链式法则反向计算误差和梯度,更新权重以减小损失。此过程迭代进行,直到损失收敛或达到训练次数,优化模型性能。反向传播实现了自动微分,使模型能适应训练数据并泛化到新数据。
316 2
|
机器学习/深度学习 人工智能 算法
反向传播算法
深度学习中,反向传播是神经网络训练的关键,它通过计算损失函数对参数的梯度来调整网络权重,减少预测与真实值的差距。该过程包括:1) 前向传播,输入数据通过网络;2) 计算损失,评估预测输出与实际值的偏差;3) 反向传播,利用链式法则计算所有参数的梯度;4) 参数更新,使用梯度下降法更新权重。这一循环不断迭代,提高模型性能。反向传播使得神经网络能适应复杂任务,推动了现代机器学习的发展。
|
机器学习/深度学习 算法 PyTorch
神经网络反向传播算法
神经网络中的反向传播算法是用于训练的关键步骤,通过计算损失函数梯度更新权重。它始于前向传播,即输入数据通过网络得出预测输出,接着计算预测与实际值的误差。反向传播利用链式法则从输出层开始逐层计算误差,更新每一层的权重和偏置。例如,一个包含隐藏层的网络,初始权重随机设定,通过反向传播计算损失函数梯度,如sigmoid激活函数的网络,调整权重以减小预测误差。在Python的PyTorch框架中,可以使用`nn.Linear`定义层,`optimizer`进行参数优化,通过`backward()`计算梯度,`step()`更新参数。
|
机器学习/深度学习 算法 BI
机器学习笔记(一) 感知机算法 之 原理篇
机器学习笔记(一) 感知机算法 之 原理篇
|
人工智能 算法 C++
c++算法学习笔记 (17) 质数
c++算法学习笔记 (17) 质数
|
人工智能 算法 C++
c++算法学习笔记 (18) 约数
c++算法学习笔记 (18) 约数

热门文章

最新文章