反向传播算法

之前提到神经网络在训练过程中需要根据预测输出和实际输出去调整权重和阈值,但是没有具体说明这个过程,在回归模型中我们往往会采用梯度下降法,这里介绍一种神经网络比较常用的方法,反向传播算法,本质上我觉得它还是梯度下降法。

首先我们采用实际输出矢量(actual output vector)和期望输出矢量(desired output vector)的欧式距离作为损失函数(一个简单例子):

E p = 1 M ∑ j = 1 M ( y d p j − y a p j ) 2 E_p = \frac{1}{M} \sum_{j=1}^M (y_{dpj} - y_{apj})^2 Ep=M1j=1M(ydpjyapj)2

然后我们考虑一种最简单的情况,激活函数使用sigmoid函数,神经网络的隐藏层只有一层,包含两个神经元,最后就是一个包含一个神经元的输出层,再假设输入层有两个神经元(两个输入):

我们把两个隐藏层的神经元的表达式都写出来:

F 1 ( x 1 , x 2 ) = 1 1 + e w 11 x 1 + w 12 x 2 + θ 1 F_1(x_1, x_2) = \frac{1}{1+e^{w_{11} x_1 + w_{12} x_2 +\theta _1}} F1(x1,x2)=1+ew11x1+w12x2+θ11

F 2 ( x 1 , x 2 ) = 1 1 + e w 21 x 1 + w 22 x 2 + θ 2 F_2(x_1, x_2) = \frac{1}{1+e^{w_{21} x_1 + w_{22} x_2 +\theta _2}} F2(x1,x2)=1+ew21x1+w22x2+θ21

然后把两个神经元的输出作为输出层神经元的输入,得到:

y a p j = F 3 ( x 1 , x 2 ) = 1 1 + e w 31 F 1 ( x 1 , x 2 ) + w 32 F 2 ( x 1 , x 2 ) + θ 3 y_{apj} = F_3(x_1, x_2) = \frac{1}{1+e^{w_{31} F_1(x_1, x_2) + w_{32} F_2(x_1, x_2) +\theta _3}} yapj=F3(x1,x2)=1+ew31F1(x1,x2)+w32F2(x1,x2)+θ31

最后我们得到了神经网络的输出的完整表达式,其中包含了输入x1、x2,以及各个权重w,事实上,这个比较复杂的表达式已经完整了表示了整个神经网络结构,如果我们把这个表达式代进损失函数里,就能得到一个包含了所有权重的损失函数的表达式,这时候,我们就可以利用梯度下降法的思想,通过损失函数对权重求偏导,得到权重的迭代公式:

w i j n e w = w i j o l d − η ∂ E p ∂ w i j w_{ij} ^{new} = w_{ij} ^{old} - \eta \frac{\partial E_p}{\partial w_{ij}} wijnew=wijoldηwijEp

只要我们通过这个表达式更新权重,那么损失函数就会不断降低了。

想浏览更多关于数学、机器学习、深度学习的内容,可浏览本人博客

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值