神经网络及卷积神经网络的训练——反向传播算法

神经网络的训练过程,就是通过已有的样本,求取使代价函数最小化时所对应的参数。代价函数测量的是模型对样本的预测值与其真实值之间的误差,最小化的求解一般使用梯度下降法(Gradient Decent)或其他与梯度有关的方法。其中的步骤包括:

  1. 初始化参数。
  2. 求代价函数关于参数的梯度。
  3. 根据梯度更新参数的值。
  4. 经过迭代以后取得最佳参数,从而完成神经网络的训练。
    其中最重要的步骤就是求梯度,这可以通过反向传播算法(back propagation)来实现。

单个神经元的训练

单个神经元的结构如下图。假设一个训练样本为 (x,y) 。在下图中, x 是输入向量,通过一个激励函数 hw,b(x) 得到一个输出 a a 再通过代价函数得到 J

f(W,b,x)=a=sigmoid(ixiwi+b) (公式1)
J(W,b,x,y)=12yhw,b(x)2 (公式2)

这里激励函数以使用sigmoid为例,当然也可以使用其他的比如tanh或者rectived linear unit函数。要求的参数为 W b

通过定义变量 z=ixiwi+b 可以将激励函数看做是两部分,如下图右图所示。第一部分是仿射求和得到 z , 第二部分是通过sigmoid得到 a
这里写图片描述

训练过程中,要求代价函数 J 关于 W b 的偏导数。先求 J 关于中间变量 a z 的偏导:

δ(a)=aJ(W,b,x,y)=(ya) (公式3)
δ(z)=zJ(W,b,x,y)=Jaaz=δ(a)a(1a) (公式4)

公式(4)中根据sigmoid函数的定义 σ(z)=11+ez 可得 az=a(1a)

再根据链导法则,可以求得 J 关于 W b 的偏导数,即得 W b 的梯度。

WJ(W,b,x,y)=WJ=JzzW=δ(z)xT (公式5)

bJ(W,b,x,y)=bJ=Jzzb=δ(z) (公式6)

在这个过程中,先求 J/a ,进一步求 J/z ,最后求得 J/W J/b 。结合上图及链导法则,可以看出这是一个将代价函数的增量 J 自后向前传播的过程,因此称为反向传播(back propagation)。

多层神经网络的训练

多层网络的一个例子如下图。
这里写图片描述
假设第 l+1 层的输入和输出分别是 al al+1 , 参数为 Wl b

  • 9
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值