卷积神经网络的反向传播

1.DNN的反向传播

首先回顾深度神经网络(DNN)的反向传播

forward:a^L=\sigma (z^L)=\sigma( w^La^{L-1}+b^L)

Loss Function:J=\frac{1}{2} ||a^L-y||^2

backward:

w的梯度:

b的梯度:

令:\delta^L=\frac{\partial J}{\partial z^L} =(a^L-y)\odot \sigma

已知\delta^L,推导上一层\delta^{L-1}

2.CNN的前向传播

2.1卷积层

(1)单通道(极简情况)

为了简单起见,设输入X为3* 3,单通道,卷积核K为2*2,输出Y为2*2,单通道。XconvK=Y,即:

在计算时会转化为:

所以,卷积运算最终转化为矩阵运算。即X、K、Y变形在之后对应矩阵变为XC、KC、YC,则YC=XC\cdot KC

Y和K只要reshape一下就可以了,但X需要特别处理,这个处理过程叫im2col(image to column),就是把卷积窗口中的数拉成一行,每行k^2列,共(X.w-k+1)(X.h-k+1)行。

(2)多通道(实际情况)

下面是一张被广泛引用的说明图,图中显示的输入是3通道(3层,比如R、G、B共3个channel),输出是2通道(channel),于是总共有3*2=6个卷积核,每个核有4个元素,3*4=12,所以6个卷积核排成一个12*2的核矩阵,即为权重矩阵,把这6个KC的组合(权重矩阵)记为WC。

图中最底下一行表示两个矩阵乘积运算,就是卷积层的前向传播算法。实际编码时还会加上偏置,而且还要考虑Batchs。

如图中所示,如果输入的维度为B,H,W,C_{in},那么WC_{[k,k,C_{in},C_{out}]}\implies WC_{[k*k*C_{in},C_{out}]}

上图中显示的乘法维度是:X_{[B,(H-k+1)*(W-k+1),k*k*C_{in}]}\cdot WC_{[k*k*C_{in},C_{out}]}=Y_{[B,(H-k+1)*(W-k+1),C_{out}]}

最后将Y_{[B,(H-k+1)*(W-k+1),C_{out}]}\implies reshpe\implies Y_{[B,(H-k+1),(W-k+1),C_{out}]}即可

2.2池化层

池化(Pooling):也称为欠采样或下采样。主要用于特征降维,压缩数据和参数的数量,减小过拟合,同时提高模型的容错性。主要有:

Max Pooling:最大池化

Average Pooling:平均池化

3.CNN的反向传播

3.1池化层

池化层的反向传播比较容易理解,我们以最大池化举例,上图中,池化后的数字6对应于池化前的红色区域,实际上只有红色区域中最大值数字6对池化后的结果有影响,权重为1,而其它的数字对池化后的结果影响都为0。假设池化后数字6的位置误差为\delta 误差反向传播回去时,红色区域中最大值对应的位置误差即等于\delta ,而其它3个位置对应的\delta 误差为0。因此,在卷积神经网络最大池化前向传播时,不仅要记录区域的最大值,同时也要记录下来区域最大值的位置,方便误差的反向传播。

而平均池化就更简单了,由于平均池化时,区域中每个值对池化后结果贡献的权重都为区域大小的倒数,所以误差反向传播回来时,在区域每个位置的误差都为池化后误差\delta 除以区域的大小。

3.2 卷积层

由前面的前向传播可知卷积核的计算为:YC=XC\cdot KC

记:

在反向传播中,\delta 是从后面一层(一般是激活函数层或池化层)传过来的,是一个已知量,在此基础上求\nabla K,\nabla X,\nabla b

1.求\nabla K

\nabla KC= XC^T\nabla YC

\nabla KC只需要reshape一下就可以得到\nabla K

2.求\nabla X

根据反向传播公式,\nabla XC = \nabla YC \cdot  KC^T

但是从\nabla XC 还原到\nabla X并非易事,im2col的逆映射计算复杂度高得不能接受,要计算\nabla X还得另寻它途。

下面是新的计算方式的推导:

根据前向传播:

可以计算每个x_{ij}的导数:

所以:

3.求\nabla b

我们的b是一个列向量,它给卷积结果的每一个通道都加上同一个标量。因此,在反向传播时,它的导数等于卷积结果的\delta 误差在每一个通道上将所有\delta 误差进行求和的结果,即:\nabla b = \sum_{x} \sum_{y}\delta

总结

由于简书有些公式支持的不好,所以有些地方我用了截图,如果有读不懂的,可以在评论区回复邮箱,我把word版发给你们。另外,如果大家发现我有地方写得不对或者有疑问的,麻烦评论,我会回复并改正

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343