CNN详解——反向传播过程
admin
2024-01-22 14:21:38
0

CNN的反向传播过程,从原理上讲,与普通的反向传播相同(都使用了链式法则),从具体形式上讲,CNN的反向传播公式又比较特殊,这是因为CNN独有的4个特点:

  1. 局部感知:卷积核和图像卷积时,每次卷积核所覆盖的像素只是一小部分。这一小部分也叫做感受野。
  2. 权值共享:同一层的每个感受野被卷积时,卷积参数都是相同的。
  3. 多卷积核:同一层的每个感受野可能被多个不同的卷积核分别进行卷积,输出多个通道(每个卷积核的结果是一个通道)。
  4. 池化:下采样过程,图像经过池化后,大小会缩小一定倍数。

一般的反向传播

一般的反向传播(即全连接网络)的公式如下:

δ(l)i∂J(θ)∂w(l)ij∂J(θ)∂b(l)i=g′(z(l)i)∑j=1Sl+1δ(l+1)jw(l)ji=δ(l+1)ia(l)j=δ(l+1)iδ i ( l ) = g ′ ( z i ( l ) ) ∑ j = 1 S l + 1 δ j ( l + 1 ) w j i ( l ) ∂ J ( θ ) ∂ w i j ( l ) = δ i ( l + 1 ) a j ( l ) ∂ J ( θ ) ∂ b i ( l ) = δ i ( l + 1 )


向量形式的表达如下:

δ(l)∂J(θ)∂W(l)∂J(θ)∂b(l)=(W(l))Tδ(l+1)∘g′(z(l))=δ(l+1)(a(l))T=δ(l+1)δ ( l ) = ( W ( l ) ) T δ ( l + 1 ) ∘ g ′ ( z ( l ) ) ∂ J ( θ ) ∂ W ( l ) = δ ( l + 1 ) ( a ( l ) ) T ∂ J ( θ ) ∂ b ( l ) = δ ( l + 1 )


详细推导过程见 反向传播算法的公式推导

反向传播公式的分析

1、对于敏感度的传播: δ(l)i=g′(z(l)i)∑Sl+1j=1δ(l+1)jw(l)ji δ i ( l ) = g ′ ( z i ( l ) ) ∑ j = 1 S l + 1 δ j ( l + 1 ) w j i ( l ) ,可以直接根据链式法则去解释它:
(1)根据前向传播规则, δ(l)i δ i ( l ) 的改变,先影响了此节点的输出值,然后影响了下一层所有的 δ(l+1)j δ j ( l + 1 ) 。
(2)根据链式法则,此节点由输入到输出,其梯度需要乘以 g′(z(l)i) g ′ ( z i ( l ) ) 。
(3)然后根据多元函数的链式法则,由节点输出到下一层所有节点的输入,其梯度等于所有下一层节点的敏感度的加权和,权值即为对应的 w(l)ji w j i ( l ) 。
总结:
要求一个点的敏感度,只需要看这个点如果变化了,会影响到下一层的哪些点,然后累加上这些点的敏感度*权值。权值越大,下一个点的变化量就会越大,最后传播到最后一层的变化量就会越大,如同蝴蝶效应,因此对于此点的导数就越大,因此需要乘以权值,而不是除以。如果从这一层的输入到下一层的输入需要串联一个激活函数,则需要乘以这个激活函数的导数。
2、同理,可以分析W的求导公式 ∂J(θ)∂w(l)ij=δ(l+1)ia(l)j ∂ J ( θ ) ∂ w i j ( l ) = δ i ( l + 1 ) a j ( l ) :
w(l)ij w i j ( l ) 的变化只会影响到下一层的第 i 个节点的输入值,且变化值会被放大 a(l)j a j ( l ) 倍,因此为 δ(l+1)ia(l)j δ i ( l + 1 ) a j ( l ) 。
3、同理,可以分析W的求导公式 ∂J(θ)∂b(l)i=δ(l+1)i ∂ J ( θ ) ∂ b i ( l ) = δ i ( l + 1 ) :
b(l)i b i ( l ) 的变化只会影响到下一层的第 i 个节点的输入值,且没有放大倍数,因为偏置的输入永远是1。

CNN的反向传播

由于CNN一般包含了多个(卷积层 − − > 池化层)的组合,我们将分别对两种层的反向传播进行分析。

1、卷积层

在一个卷积层,前一层的特征图被多个卷积核所卷积,然后通过一个激活函数,最后组成了输出的特征图。每一个输出特征图可能是多个输入特征图的组合的卷积结果。因此,如果第 l−1 l − 1 层经过卷积后到达第 l l 层,则前向传播过程为

xlj=f(∑i∈Mjxl−1i∗klij+blj)x j l = f ( ∑ i ∈ M j x i l − 1 ∗ k i j l + b j l )


其中,
(1) f f 为激活函数。
(2) Mj M j 为第 j j 个卷积核所作用的第 l−1 l − 1 层的特征图的集合,集合大小即为第 l l 层第 j j 个卷积核的卷积层数。
(3) xlj x j l 为第 l l 层第 j j 通道的输出特征图(是一个矩阵)。
(4) klij k i j l 为第 l−1 l − 1 层到第 l l 层的第 j j 个卷积核、且只取与第 l−1 l − 1 层第 i i 个通道相连接的卷积层(也是一个矩阵)。
(5) blj b j l 为第 l−1 l − 1 层到第 l l 层的第 j j 个卷积核的偏置。
(6) ∗ ∗ 表示卷积作用。
注意, ∑i∈Mjxl−1i∗klij ∑ i ∈ M j x i l − 1 ∗ k i j l 的结果是一个矩阵,后面的加法表示矩阵上的每一个元素都加上 blj b j l ,然后每一个元素被激活函数作用,最后仍然是一个矩阵。
对于卷积层的反向传播,根据上述反向传播公式的分析,很容易理解公式:

δl−1j(uv)=f′(ul−1j(uv))∑i∈AjB(δli)∗rot180(klji)δ j ( u v ) l − 1 = f ′ ( u j ( u v ) l − 1 ) ∑ i ∈ A j B ( δ i l ) ∗ r o t 180 ( k j i l )


解释:
(1) δl−1j(uv) δ j ( u v ) l − 1 为第 l−1 l − 1 层第 j j 个通道第 u u 行第 v v 列的输入的梯度。
(2) ul−1j(uv) u j ( u v ) l − 1 为第 l−1 l − 1 层第 j j 个通道第 u u 行第 v v 列的输入。
(3) Aj A j 为卷积范围包括第 l−1 l − 1 层第 j j 个通道的卷积核的集合,集合大小不定。
(4) δli δ i l 为第 l l 层第 i i 个通道的输入的梯度。
(5) B(δli) B ( δ i l ) 为 δli δ i l 的局部块,这个局部块里的每个位置的输入都是卷积得到的,卷积过程都与 ul−1j(uv) u j ( u v ) l − 1 有关。
(6) rot180(.) r o t 180 ( . ) 表示将矩阵旋转180度,即既进行列翻转又进行行翻转。

∂J∂klij(uv)=δlj(uv)∗P(xl−1i)∂ J ∂ k i j ( u v ) l = δ j ( u v ) l ∗ P ( x i l − 1 )


解释:
(1) klij(uv) k i j ( u v ) l 为第 l−1 l − 1 层到第 l l 层的第 j j 个卷积核中与第 l−1 l − 1 层第 i i 个通道相连接的卷积层上的第 u u 行第 v v 列的值。
(2) δlj(uv) δ j ( u v ) l 为第 l l 层第 j j 个通道第 u u 行第 v v 列的输入的梯度。
(3) xl−1i x i l − 1 为第 l−1 l − 1 层第 i i 通道的输出特征图。
(4) P(xl−1i) P ( x i l − 1 ) 为 xl−1i x i l − 1 的局部块,这个局部块中的每个元素都会在卷积过程中直接与 klij(uv) k i j ( u v ) l 相乘。

∂J∂blj=∑u,v(δlj)uv∂ J ∂ b j l = ∑ u , v ( δ j l ) u v


解释:
(1) blj b j l 为第 l−1 l − 1 层到第 l l 层的第 j j 个卷积核的偏置。
(2) δlj δ j l 为第 l l 层第 j j 个通道的输入的梯度。

2、池化层

如果对第 l l 层进行池化得到第 l+1 l + 1 层,则前向传播过程为:

xl+1j=f(βl+1jdown(xlj)+bl+1j)x j l + 1 = f ( β j l + 1 d o w n ( x j l ) + b j l + 1 )


其中:
(1) down(.) d o w n ( . ) 是一个下采样方法。典型地,此方法会将每一个独立的 n*n 块中的元素进行相加,这样输出图像的长和宽都比原图小了 n 倍。
(2)每一个下采样之后的特征图都乘以了 β β 并加上偏置 b b ,且不同的特征层的乘子和偏置不同,用下标 j 区分。
反向传播公式为:

δlj=βl+1j(f′(ulj)∘up(δl+1j))δ j l = β j l + 1 ( f ′ ( u j l ) ∘ u p ( δ j l + 1 ) )


解释:
(1) δlj δ j l 为第 l l 层第 j j 个通道的输入的梯度,是一个矩阵。
(2) up(δl+1j) u p ( δ j l + 1 ) 为上采样操作,将每个元素在两个维度上都展开 n 次,n 为 down(.) d o w n ( . ) 下采样时缩小的倍数。其中一种方法是所有展开的元素都与原元素相同,即 up(x)=x⊗1n×n u p ( x ) = x ⊗ 1 n × n 。

∂J∂bl+1j=∑u,v(δl+1j)uv∂ J ∂ b j l + 1 = ∑ u , v ( δ j l + 1 ) u v


解释:
(1) bl+1j b j l + 1 为下采样结果传递到第 l+1 l + 1 层后第 j j 个特征层需要乘以的因子。
(2) bl+1j b j l + 1 影响了 δl+1j δ j l + 1 上的所有点,因此需要累加。

∂J∂βl+1j=∑u,v(δl+1j∘dl+1j)uv∂ J ∂ β j l + 1 = ∑ u , v ( δ j l + 1 ∘ d j l + 1 ) u v


解释:
(1) dl+1j=down(xlj) d j l + 1 = d o w n ( x j l ) ,为下采样结果。
(2) βl+1j β j l + 1 影响了 δl+1j δ j l + 1 上的所有点,因此需要累加,且被下采样后的结果放大了,因此需要乘以下采样结果。

参考

[1] Bouvrie J. Notes on convolutional neural networks[J]. 2006.

相关内容

热门资讯

智慧吴江app安卓系统,安卓系... 你知道吗?最近吴江地区掀起了一股智慧风潮,一款名为“智慧吴江app”的应用在安卓系统上大受欢迎。这款...
苹果系统听歌app安卓,跨平台... 你有没有发现,无论是走在街头还是坐在家里,音乐总是能瞬间点燃我们的心情?而在这个音乐无处不在的时代,...
安卓系统卡顿根源,性能瓶颈与优... 手机用久了是不是感觉越来越卡?是不是每次打开应用都要等半天,甚至有时候直接卡死?别急,今天就来跟你聊...
电脑系统怎么装安卓系统,电脑系... 你有没有想过,把安卓系统装在你的电脑上,是不是就像给电脑穿上了时尚的新衣呢?想象你可以在电脑上直接使...
安卓系统华为手环app,健康管... 你有没有发现,现在的生活越来越离不开智能设备了?手机、平板、手表……这些小玩意儿不仅让我们的生活变得...
switch lite刷安卓系... 你有没有想过,你的Switch Lite除了玩那些可爱的任天堂游戏,还能干些什么呢?没错,今天我要给...
想买华为但是安卓系统,尽享安卓... 最近是不是也被华为的新款手机给迷住了?看着那流畅的线条和强大的性能,是不是心动了呢?但是,一想到安卓...
怎么拷安卓系统文件,安卓系统文... 你有没有想过,手机里的那些安卓系统文件,其实就像是一扇通往手机世界的秘密通道呢?想要深入了解你的安卓...
安卓系统移植按键失灵,安卓系统... 最近你的安卓手机是不是也遇到了按键失灵的尴尬情况呢?这可真是让人头疼啊!别急,今天就来给你详细解析一...
安卓系统更新管理在哪,全面解析... 你有没有发现,你的安卓手机最近是不是总在提醒你更新系统呢?别急,别急,今天就来手把手教你,安卓系统更...
安卓系统哪里出的,从诞生地到全... 你有没有想过,我们每天离不开的安卓系统,它究竟是从哪里冒出来的呢?是不是觉得这个问题有点儿像是在问星...
最好的电脑安卓系统,最佳电脑安... 亲爱的电脑迷们,你是否在寻找一款既能满足你工作需求,又能让你畅享娱乐的电脑操作系统呢?今天,我要给你...
安卓系统保密性,守护隐私的坚实... 你知道吗?在这个信息爆炸的时代,保护个人隐私变得比以往任何时候都重要。尤其是对于安卓系统用户来说,了...
苹果系统下载安卓版本,安卓版本... 你有没有想过,为什么苹果系统的手机那么受欢迎,却还有人想要下载安卓版本呢?这背后可是有着不少故事呢!...
安卓系统如何下载carplay... 你是不是也和我一样,对安卓系统上的CarPlay功能充满了好奇?想象在安卓手机上就能享受到苹果Car...
退回安卓系统的理由,揭秘安卓系... 你有没有想过,为什么有些人会选择退回到安卓系统呢?这可不是一件简单的事情,背后可是有着不少原因哦!让...
安卓机系统互通吗,共创智能生态 你有没有想过,你的安卓手机里的应用和电脑上的安卓应用是不是可以无缝对接呢?是不是有时候觉得手机上的某...
安卓源码 添加系统应用,系统应... 你有没有想过,手机里的那些系统应用是怎么来的?是不是觉得它们就像天外来物,神秘又神奇?其实,只要你愿...
安卓系统能否播放flv,全面解... 你有没有想过,你的安卓手机里那些珍贵的FLV视频文件,到底能不能顺利播放呢?这可是个让人挠头的问题,...
奔驰c系安卓系统,智能驾驶体验... 你有没有发现,最近开奔驰C系的小伙伴们都在悄悄地谈论一个新玩意儿——安卓系统!没错,就是那个我们手机...