卷积神经网络的训练

卷积神经网络的训练比全连接网络复杂,主要涉及卷积层和Pooling层。误差项传递和权重梯度计算是训练关键,包括卷积层的误差项传递、filter权重梯度计算,以及Pooling层的误差项传递。卷积层误差项传递考虑了步长、输入深度和filter数量,而Pooling层没有学习参数,只需传递误差项。
摘要由CSDN通过智能技术生成

卷积神经网络的训练

全连接神经网络相比,卷积神经网络的训练要复杂一些。但训练的原理是一样的:利用链式求导计算损失函数对每个权重的偏导数(梯度),然后根据梯度下降公式更新权重。训练算法依然是反向传播算法。

我们先回忆一下上一篇文章零基础入门深度学习(3) - 神经网络和反向传播算法介绍的反向传播算法,整个算法分为三个步骤:

  1. 前向计算每个神经元的输出值 aj j 表示网络的第 j 个神经元,以下同);
  2. 反向计算每个神经元的误差项 δj δj 在有的文献中也叫做敏感度(sensitivity)。它实际上是网络的损失函数 Ed 对神经元加权输入 netj 的偏导数,即 δj=Ednetj
  3. 计算每个神经元连接权重 wji 梯度 wji 表示从神经元 i 连接到神经元 j 的权重),公式为 Edwji=aiδj ,其中, ai 表示神经元 i 的输出。

最后,根据梯度下降法则更新每个权重即可。

对于卷积神经网络,由于涉及到局部连接下采样的等操作,影响到了第二步误差项 δ 的具体计算方法,而权值共享影响了第三步权重 w 梯度的计算方法。接下来,我们分别介绍卷积层和Pooling层的训练算法。

卷积层的训练

对于卷积层,我们先来看看上面的第二步,即如何将误差项 δ 传递到上一层;然后再来看看第三步,即如何计算filter每个权值 w 梯度

卷积层误差项的传递
最简单情况下误差项的传递

我们先来考虑步长为1、输入的深度为1、filter个数为1的最简单的情况。

假设输入的大小为3*3,filter大小为2*2,按步长为1卷积,我们将得到2*2的feature map。如下图所示:

在上图中,为了描述方便,我们为每个元素都进行了编号。用 δl1i,j 表示第 l1 层第 j 行第 j 列的误差项;用 wm,n 表示filter第 m 行第 n 列权重,用 wb 表示filter的偏置项;用 al1i,j 表示第 l1 层第 i 行第 j 列神经元的输出;用 netl1i,j 表示第 l1 行神经元的加权输入;用 δli,j 表示第 l 层第 j 行第 j 列的误差项;用 fl1 表示第 l1 层的激活函数。它们之间的关系如下:

netlal1i,j=conv(Wl,al1)+wb=fl1(netl1i,j)(17)(18)

上式中, netl Wl al1 都是数组, Wl 是由 wm,n 组成的数组, conv 表示卷积操作。

在这里,我们假设第 l 中的每个 δl 值都已经算好,我们要做的是计算第 l1 层每个神经元的误差项 δl1

根据链式求导法则:

δl1i,j=Ednetl1i,j=Edal1i,jal1i,jnetl1i,j(19)(20)

我们先求第一项 Edal1i,j 。我们先来看几个特例,然后从中总结出一般性的规律。

例1,计算 Edal11,1 al11,1 仅与 netl1,1 的计算有关:

netj1,1=w1,1al11,1+w1,2al11,2+w2,1al12,1+w2,2al12,2+wb

因此:

Edal11,1=Ednetl1,1netl1,1al11,1=δl1,1w1,1(21)(22)

例2,计算 Edal11,2 al11,2 netl1,1 netl1,2 的计算都有关:

netj1,1=w1,1al11,1+w1,2al11,2+w2,1al12,1+w2,2al12,2+wbnetj1,2=w1,1al11,2+w1,2al11,3+w2,1al12,2+w2,2al12,3+wb

因此:

Edal11,2=Ednetl1,1ne
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值