误差反向传播(BP)及梯度下降算法详解

摘要

在机器学习算法中,误差反向传播和梯度下降是模型收敛的关键技术,作者将以单隐层模型为例说明误差反向传播和梯度下降的工作原理。

各种算法的单隐层模型结构大同小异

正向传播

假设:主要模型参数有3个,输入层到隐含层的权重W,隐含层的偏置B,隐含层到输出层的权重beta,为了计算方便引入一个中间参数H表示隐含层的输出,

H=G(XW +B)      式(1)

 其中G(x)为激活函数,为模型提供非线性映射的能力,常见的有sigmoid,tanh,relu等,以sigmoid为例进行说明:

G(x)=\frac{1}{1+e^{-x}}      式(2)

模型输出O:

O=H\beta =G(XW +B)\beta      式(3)

数据相关参数有训练集的输入特征为X;模型拟合的实际输出为O;训练集对应标签为Y,则有模型误差E:

E=\frac{1}{k}\sum_{i=1}^{k} \frac{1}{2}*(O_{row(i)}-Y_{row(i)})^{2}      式(4)

其中k为训练数据的个数,误差E是一个维数与标签相同的向量,取所有训练数据误差的平均值作为最终误差。模型训练过程就是不断调整模型参数,使得训练误差最小化,若模型结构合理,泛化性能够强,获得的训练模型即可在实际测试数据中使用。(在这发表一下自己的观点,不一定对,觉得有毛病的可以相互交流一下:许多人认为机器学习模型是一个黑匣子,我觉得实则不然,在训练之前的模型可以说他是一个黑匣子,但是训练完成之后,实际上一个模型可以用具体的公式来描述了,且公式中所有参数都是已知,是一个实实在在明明白白的模型)

为什么用梯度下降

如式(4)所示,误差是可以计算的,是一个关于和X,W,B,beta以及Y有关的函数,其中,X,Y为训练集中已知数据,即误差E可以表示为E=f(W,B,beta)。模型的训练过程将转换为数学问题:求解函数f(W,B,beta)的最小值(实际上往往求得是局部最小值,也就是极小值)。自变量有3个的多元函数,求极值就必须要映入一个概念(重点来了):梯度,梯度实际上是一个向量,表示的是函数在自变量空间中,值增加最快的方向,沿着梯度方向走,就可以走到函数的极大值点,而我们的目标是求函数的极小值,道理是一样的,我往梯度的反方向走就可以走到梯度的极小值点了。这就是所谓的梯度下降了。那么梯度在怎么求呢,其实就是对每个因变量求偏导:

\bigtriangledown E=[\frac{ \partial E}{\partial W},\frac{ \partial E}{\partial B},\frac{ \partial E}{\partial \beta }]      式(5)

误差反向传播和梯度下降的协同工作


先以最简单的beta为例,讲解如何进行误差反向传播和梯度下降进行参数的学习,在变量beta空间上,误差的梯度为:

\bigtriangledown E_{\beta }=\frac{ \partial E}{\partial \beta },结合公式1-4可得,求beta偏导式,H可看做一个常数矩阵:

\bigtriangledown E_{\beta_{lj}}=\frac{ \partial E}{\partial \beta }=\frac{1}{k}\sum_{i=1}^{k}H_{(il)}(H_{(il)}\beta_{lj}-Y_{(lj)})      式(6)

式6中,l\in [1,L],j\in [1,m],m为输出层节点数,即分类问题中的类别个数,k为训练数据的个数(如果实在不好理解的话,建议试试用当训练数据仅一个的时候代入就很清晰明了了)。

式6可以转换成简化版的矩阵形式:

\bigtriangledown E_{\beta}=\frac{ \partial E}{\partial \beta }=\frac{1}{k}H^{T}(H\beta-Y)      式(7)

式(7)就是就是误差反向传播的过程了,输出层的误差传播到了隐含层,那么梯度下降呢?其实很简单,就是让对应参数沿着梯度的反方向进行更新即可:

\beta _{t+1}=\beta _{t}-\eta\cdot \bigtriangledown E_{\beta}      式(8)

其中t表示当前时刻,t+1即表示下一步更新后,\eta即所谓的学习率,表示参数更新的步长,学习率太大可能难以收敛,学习率太小则收敛速度较慢,这需要根据具体的网络和应用情况进行选择。


beta的参数更新方式已经得到了,那么B和W其实步骤是一样的,只是求偏导难度更大一些而已。打公式比较费时,这里就不敲了,贴一张手写图吧(这里不一定对,请大神指正):

 

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值