BP算法

神经元模型

仿照生物的神经元模型,神经元接收到来自n个其他神经元的输入信号,这些输入信号带有犬只连接,神经元接收到的总输入值与神经元的阈值进行比较,然后通过激活函数产生神经元的输出。
如下图所示:

  • 输入为 [x1,x2,x3,...,xn] [ x 1 , x 2 , x 3 , . . . , x n ]
  • 输出为 y=f(Ni=1wixiθ) y = f ( ∑ i = 1 N w i x i − θ )

其中典型的激活函数有四种sigmod, softmax, tanh, relu。现在的深度学习里面用的激活函数一般是Relu.具体总结可以看我上一篇博客激活函数的选择

感知机模型

感知机被视为最简单形式的前馈神经网络,是一种二元线性分类器,是神经网络和支持向量机的基础。 感知机由两层神经元组成,输入层接受并处理外界信息,然后传递给输出层。如图所示:

其中 x1 x 1 , x2 x 2 表示的是输入, y y 表示的是输出,θ是阈值, w1 w 1 , w2 w 2 表示的是权值。所以有:

y=f(w1x1+w2x2θ) y = f ( w 1 x 1 + w 2 x 2 − θ )

一般的,对于给定训练数据集,权值 wi(i=1,2,...,n) w i ( i = 1 , 2 , . . . , n ) 以及阈值 θ θ 可通过学习得到。感知机的学习规则非常简单,对于训练样例 (x,y) ( x , y ) ,若当前感知机的输出为 y^ y ^ ,感知机的权值将这样调整:

wiwi+wi w i ← w i + △ w i

wi=η(yy^)xi △ w i = η ( y − y ^ ) x i

其中 η(0,1) η ∈ ( 0 , 1 ) 称为学习率,其中可以出如果对于样例 (x,y) ( x , y ) 预测正确,即 y^=y y ^ = y ,则感知机不会发生变化,否则根据错误程度进行调整。需要注意的是,感知机只有输出层有激活函数处理,其学习能力非常有限。

BP算法

对于包含隐含层的神经网络,就可以成为多层网络。

现在来看看BP算法。
对于给定数据集 D={(x1,y1),(x2,y2),...,(xm,ym)} D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } ,其中 xiRd,yiRl x i ∈ R d , y i ∈ R l

一些变量的解释:

  • vih v i h 表示的是输出层第 i i 个神经元与隐含层第h个神经元的连接权值
  • whj w h j 表示的是隐含层第 h h 个神经元与输出层第j个神经元的连接权值
  • αh=di=1vihxi α h = ∑ i = 1 d v i h x i 表示为隐含层第 h h 个神经元的输入
  • βj=h=1qwhjbh表示的是输出层第 j j 个神经元的输入
  • bh表示隐含层第 h h 个神经元的输出

下图为一个拥有d个输入神经元,l个输出神经元和q个隐含神经元的多层前馈神经网络。

对于训练样例 (xk,yk) ( x k , y k ) ,假定神经网络的的输出为 y^k=(y^k1,y^k2,...,y^kl) y ^ k = ( y ^ 1 k , y ^ 2 k , . . . , y ^ l k ) ,所以有:

y^kj=f(βjθj) y ^ j k = f ( β j − θ j )

网络的误差为

Ek=12j=1l(y^kjykj)2 E k = 1 2 ∑ j = 1 l ( y ^ j k − y j k ) 2

任意参数的更新估计式为

vv+v v ← v + △ v

下面以隐含层到输出层的连接权 whj w h j 来进行推导

BP算法基于梯度下降的策略,以目标的负梯度方向对参数进行调整,对于误差 Ek E k 和给定学习率 η η ,有:

whj=ηEkwhj △ w h j = − η ∂ E k ∂ w h j

whj w h j 是先影响输出层第 j j 个神经元,然后再进一步影响输出y^jk的。所以有

Ekwhj=Eky^kjy^kjβjβjwhj ∂ E k ∂ w h j = ∂ E k ∂ y ^ j k ∂ y ^ j k ∂ β j ∂ β j ∂ w h j

其中有

βjwhj=bh ∂ β j ∂ w h j = b h

其中激活函数为sigmod函数所以有 f(x)=11+ex f ( x ) = 1 1 + e − x
对于sigmoid函数有

f(x)=f(x)(1f(x)) f ′ ( x ) = f ( x ) ( 1 − f ( x ) )

所以有

y^kj=f(βjθ) y ^ j k = f ( β j − θ )

因此令

gj=Eky^kjy^kjβj g j = − ∂ E k ∂ y ^ j k ∂ y ^ j k ∂ β j

=(y^kjykj)y^kj(1y^kj) = − ( y ^ j k − y j k ) y ^ j k ( 1 − y ^ j k )

综合得:

w=ηg(j)bh △ w = η g ( j ) b h

类似的能够得到

θ=ηgj △ θ = − η g j

v=ηehgj △ v = η e h g j

γ=ηeh △ γ = − η e h

其中 eh e h 表示的是隐含层的梯度。其实根据前面的结构图,我们能够得到公式 bh=f(dj=1wjhxjγh) b h = f ( ∑ j = 1 d w j h x j − γ h )

所以有

eh=Ekbhbhah e h = − ∂ E k ∂ b h ∂ b h ∂ a h

=j=1lEkβjβjbhf(ahγh) = − ∑ j = 1 l ∂ E k ∂ β j ∂ β j ∂ b h f ′ ( a h − γ h )

=j=1lgjwhjbh(1bh) = − ∑ j = 1 l g j w h j b h ( 1 − b h )

上述流程图总结如下。

BP算法的目标是最小化训练集上的累计误差

E=1mk=1mEk E = 1 m ∑ k = 1 m E k

参考文献

1.什么是学习率,以及他是如何影响深度学习的?

2.机器学习,周志华

3.统计学习方法,李航

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值