神经网络推导

5 篇文章 0 订阅
2 篇文章 0 订阅

BP神经网络算法(单变量版本)

网络结构定义

输入变量 Xm X m ,其中 m=1,2,3,...,Ninput m = 1 , 2 , 3 , . . . , N i n p u t
要预测的变量 tm t m ,其中 m=1,2,3,...,Ninput m = 1 , 2 , 3 , . . . , N i n p u t
设置三层网络结构,前两层为隐藏层,最后一层为输出层
第一层共有I个神经元,第二层共有J个神经元,第三层共有K个神经元。

前向传播

第一层

Wim W i m ,表示 第一层神经网络第 i i 个神经元和第m个输入变量之前的权重。
bi b i ,表示 第一层神经网络第 i i 个神经元的偏置。
neti(1)=m=1NinputWimXm+bi,其中 net(1)i n e t i ( 1 ) 表示第一层神经网络中第 i i 个神经元的输出。
第一层的激活函数设为f(1),则经过激活函数激活后第 i i 个神经元的输出为

yi(1)=f(1)(neti(1))

第二层

Wji W j i ,表示 第二层神经网络第 j j 个神经元和第i个第一层神经网络的神经元输出之间的权重。
bj b j ,表示 第二层神经网络第 j j 个神经元的偏置。
netj(2)=i=1IWjiyi(1)+bj,其中 net(2)j n e t j ( 2 ) 表示第二层神经网络中第 j j 个神经元的输出。
第二层的激活函数设为f(2),则经过激活函数激活后第 j j 个神经元的输出为

yj(2)=f(2)(netj(2))

第三层(输出层)

Wkj W k j ,表示 第三层神经网络第 k k 个神经元和第j个第二层神经网络的神经元输出之间的权重。
bk b k ,表示 第三层神经网络第 k k 个神经元的偏置。
netk(3)=j=1JWkjyj(2)+bk,其中 net(3)k n e t k ( 3 ) 表示第三层神经网络中第 k k 个神经元的输出。
第三层的激活函数设为f(3),则经过激活函数激活后第 k k 个神经元的输出为

yk(3)=f(3)(netk(3))

经过前向传播已经可以用来输出结果了。
但是怎么来训练这个神经网络呢?这里就要用到神经网络的反向传播!!

反向传播(Back-Propagation)-求导

要使用反向传播首先需要定义损失函数(loss function)。现在针对不同的领域损失函数的定义有非常多,这里用到最简单的均方差(Mean squared error-MSE)来训练分类任务的神经网络
均方差的定义

1ll=1nt(y(3)ktk)2 1 l ∑ l = 1 n t ( y k ( 3 ) − t k ) 2

nt表示分类任务最后类别的数目。如果是抛硬币那么nt=2(正面和反面)。
PS:如果是分类问题,需要将这里的t_m进行one-hot编码。并且输出层神经元的个数与nt的大小相同。

输出层推导

根据链式法则(chain-rule),求权重的导数

lossWkj=lossnet(3)knet(3)kWkj=lossnet(3)ky(2)j ∂ l o s s ∂ W k j = ∂ l o s s ∂ n e t k ( 3 ) ⋅ ∂ n e t k ( 3 ) ∂ W k j = ∂ l o s s ∂ n e t k ( 3 ) ⋅ y j ( 2 )

lossnet(3)k=net(3)k(1llnt(y(3)ktk)2)=1lnet(3)k(lnt(f(3)(net(3)k)tk)2) ∂ l o s s ∂ n e t k ( 3 ) = ∂ ∂ n e t k ( 3 ) ( 1 l ∑ l n t ( y k ( 3 ) − t k ) 2 ) = 1 l ∂ ∂ n e t k ( 3 ) ( ∑ l n t ( f ( 3 ) ( n e t k ( 3 ) ) − t k ) 2 )

=1lnet(3)k((f(3)(net(3)k)tk)2)=2l(f(3)(net(3)k)tk)(f(3)(net(3)k)1) = 1 l ∂ ∂ n e t k ( 3 ) ( ( f ( 3 ) ( n e t k ( 3 ) ) − t k ) 2 ) = 2 l ( f ( 3 ) ( n e t k ( 3 ) ) − t k ) ⋅ ( f ( 3 ) ′ ( n e t k ( 3 ) ) ⋅ 1 )

其中设 lossnet(3)k=δ(3)=2l(f(3)(net(3)k)tk)(f(3)(net(3)k)1) ∂ l o s s ∂ n e t k ( 3 ) = δ ( 3 ) = 2 l ( f ( 3 ) ( n e t k ( 3 ) ) − t k ) ⋅ ( f ( 3 ) ′ ( n e t k ( 3 ) ) ⋅ 1 )

lossWkj=δ(3)y(2)j → ∂ l o s s ∂ W k j = δ ( 3 ) ⋅ y j ( 2 )

同理可得

lossbk=lossnet(3)knet(3)kbk=lossnet(3)k=δ(3) ∂ l o s s ∂ b k = ∂ l o s s ∂ n e t k ( 3 ) ⋅ ∂ n e t k ( 3 ) ∂ b k = ∂ l o s s ∂ n e t k ( 3 ) = δ ( 3 )

这里就求得了最后一层相关权重和偏置的导数了。

第二层隐藏层推导

与输出层的求导非常相似,也是使用链式法则(chain-rule),求第二层隐藏层权重的导数

lossWji=lossnet(2)jnet(2)jWji=lossnet(2)jy(1)i ∂ l o s s ∂ W j i = ∂ l o s s ∂ n e t j ( 2 ) ⋅ ∂ n e t j ( 2 ) ∂ W j i = ∂ l o s s ∂ n e t j ( 2 ) ⋅ y i ( 1 )

lossnet(2)j=net(2)j(1llnt(y(3)ktk)2)=1lnet(2)j(lnt(f(3)(net(3)k)tk)2) ∂ l o s s ∂ n e t j ( 2 ) = ∂ ∂ n e t j ( 2 ) ( 1 l ∑ l n t ( y k ( 3 ) − t k ) 2 ) = 1 l ∂ ∂ n e t j ( 2 ) ( ∑ l n t ( f ( 3 ) ( n e t k ( 3 ) ) − t k ) 2 )

=1lnet(2)j((f(3)(net(3)k)tk)2)=1lnet(2)j(f(3)(j=1JWkjy(2)j+bk)tk)2 = 1 l ∂ ∂ n e t j ( 2 ) ( ( f ( 3 ) ( n e t k ( 3 ) ) − t k ) 2 ) = 1 l ∂ ∂ n e t j ( 2 ) ( f ( 3 ) ( ∑ j = 1 J W k j y j ( 2 ) + b k ) − t k ) 2

=1lnet(2)j(f(3)(j=1JWkjf(2)(net(2)j)+bk)tk)2 = 1 l ∂ ∂ n e t j ( 2 ) ( f ( 3 ) ( ∑ j = 1 J W k j f ( 2 ) ( n e t j ( 2 ) ) + b k ) − t k ) 2

=2lf(3)(j=1JWkjf(2)(net(2)j)+bk)tk)f(3)(j=1JWkjf(2)(net(2)j)+bk)j=1JWkjf(2)(net(2)j)1 = 2 l ⋅ f ( 3 ) ( ∑ j = 1 J W k j f ( 2 ) ( n e t j ( 2 ) ) + b k ) − t k ) ⋅ f ( 3 ) ′ ( ∑ j = 1 J W k j f ( 2 ) ( n e t j ( 2 ) ) + b k ) ⋅ ∑ j = 1 J W k j f ( 2 ) ′ ( n e t j ( 2 ) ) ⋅ 1

=δ(3)kj=1JWkjf(2)(net(2)j)=j=1J(Wkjδ(3)k)f(2)(net(2)j) = δ k ( 3 ) ⋅ ∑ j = 1 J W k j f ( 2 ) ′ ( n e t j ( 2 ) ) = ∑ j = 1 J ( W k j ⋅ δ k ( 3 ) ) ⋅ f ( 2 ) ′ ( n e t j ( 2 ) )

!!!注意 δ(3)kJj=1Wkjf(2)(net(2)j) δ k ( 3 ) ⋅ ∑ j = 1 J W k j f ( 2 ) ′ ( n e t j ( 2 ) ) 这个式子 (************还需要配图说明)
其中设 lossnet(2)j=δ(2)=Jj=1(Wkjδ(3)k)f(2)(net(2)j) ∂ l o s s ∂ n e t j ( 2 ) = δ ( 2 ) = ∑ j = 1 J ( W k j ⋅ δ k ( 3 ) ) ⋅ f ( 2 ) ′ ( n e t j ( 2 ) )

lossWji=δ(2)y(1)i → ∂ l o s s ∂ W j i = δ ( 2 ) ⋅ y i ( 1 )

同理可得

lossbj=lossnet(2)jnet(2)jbj=lossnet(2)j=δ(2) ∂ l o s s ∂ b j = ∂ l o s s ∂ n e t j ( 2 ) ⋅ ∂ n e t j ( 2 ) ∂ b j = ∂ l o s s ∂ n e t j ( 2 ) = δ ( 2 )

第一层隐藏层推导

与第二层隐藏层推导一样,也是使用链式法则(chain-rule),求第一层隐藏层权重的导数

lossWim=lossnet(1)inet(1)iWim=lossnet(1)iXm ∂ l o s s ∂ W i m = ∂ l o s s ∂ n e t i ( 1 ) ⋅ ∂ n e t i ( 1 ) ∂ W i m = ∂ l o s s ∂ n e t i ( 1 ) ⋅ X m

其中设 lossnet(1)i=δ(1)=Ii=1(Wjiδ(2)j)f(1)(net(1)i) ∂ l o s s ∂ n e t i ( 1 ) = δ ( 1 ) = ∑ i = 1 I ( W j i ⋅ δ j ( 2 ) ) ⋅ f ( 1 ) ′ ( n e t i ( 1 ) )

lossWim=δ(1)Xm → ∂ l o s s ∂ W i m = δ ( 1 ) ⋅ X m

同理可得

lossbi=lossnet(1)inet(1)ibi=lossnet(1)i=δ(1) ∂ l o s s ∂ b i = ∂ l o s s ∂ n e t i ( 1 ) ⋅ ∂ n e t i ( 1 ) ∂ b i = ∂ l o s s ∂ n e t i ( 1 ) = δ ( 1 )

神经网络中所有需要求解的导数都已经完成。接下来只要进行反向传播更新便可以训练该神经网络了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值