CNN中卷积核与卷积运算的前向推导与推导过程

CNN神经网络算法是常用的模式识别算法,该算法通过卷积运算将图片特征存储到多个卷积核中,卷积核通过算法的反向传输一步步逼近于图片特征,最常用的反向传导方法是BP反向传导方法,采用最速下降法,将结果误差传递到每一个过程参数中,对于该方法在后面会做专门的介绍,本文主要介绍CNN神经网络中卷积步骤的前向与反向传导过程。

为何会专门开这个题目来讨论,因为在很多的博文中,只是很随意介绍该算法的过程,更多的是通过抄袭而来,让很多的读者感到困惑,另外,由于matlab中的conv2函数是严格按照卷积运算而来,因此很多人会困惑翻转问题,因此本博文将仔细介绍下整个卷积过程与反向卷积过程。后面将会推出关于卷积意义的探讨。

1、卷积过程

根据离散二维卷积公式,有:

其中A为被卷积矩阵,K为卷积核,B为卷积结果,该公式中,三个矩阵的排序均从0开始,即A矩阵的序号如下所示:

由于该矩阵的序号排列方式与我们平时的书写方式不同,为了方便,我将上面卷积公式改写成下面的公式,后面的分析也用该公式进行分析:

该公式所用矩阵就是我们所熟悉的从A11开始的矩阵了:

现在对于上面卷积过程进行分析:我们用来做例子的A矩阵为m*m(3*3)二维矩阵,K为n*n(2*2)的二维矩阵。

卷积过程先将卷积核旋转180°,被卷积矩阵扩展到(m+n)*(m+n)大小,将扩展部分用0代替,其序号用负数代替,即如下所示:

即有B11=A00*K22+A01*K21+A10*K12+A11*K11(1)

同理:

B12=A01*K22+A02*K21+A11*K12+A12*K11

B13=A02*K22+A03*K21+A12*K12+A13*K11

B14=A03*K22+A04*K21+A13*K12+A14*K11

B21=A10*K22+A11*K21+A20*K12+A21*K11

B22=A11*K22+A12*K21+A21*K12+A22*K11

B23=A12*K22+A13*K21+A22*K12+A23*K11

B24=A13*K22+A14*K21+A23*K12+A24*K11

B31=A20*K22+A21*K21+A30*K12+A31*K11

B32=A21*K22+A22*K21+A31*K12+A32*K11

B33=A22*K22+A23*K21+A32*K12+A33*K11

B34=A23*K22+A24*K21+A33*K12+A34*K11

B41=A30*K22+A31*K21+A40*K12+A41*K11

B42=A31*K22+A32*K21+A41*K12+A42*K11

B43=A32*K22+A33*K21+A42*K12+A43*K11

B44=A33*K22+A34*K21+A43*K12+A44*K11

以上便是整个卷积计算过程,在Matlab中可用conv2函数进行卷积计算:

B=conv2(A,K,’full’);

Conv2函数的第一个输入参数为被卷积矩阵,第二个为卷积核,第三个参数可输入卷积输出形式,总共有三个:‘full’,‘same’和‘valid’,用下面的例子便可以看出这三个的区别:

A=[1 2 3

4 5 6

7 8 9];

K=[1 2

3 4];

B=conv2(A,K,'full')

C=conv2(A,K,'same')

D=conv2(A,K,'valid')

输出结果为:

B =

1     4    7    6

7    23   33   24

19  53   63  42

21   52  59   36

C =

23   33   24

53   63   42

52   59   36

D =

23   33

53   63

‘full’的输出结果为n+m-1,’same’的输出结果为m,’valid’的输出结果为m-n+1。在CNN算法的前向过程,其卷积是’valid’型卷积,因此我们只对’valid’型卷积的反向推导过程进行推导,另外两种类型的推导类似。

2、卷积过程的反向推导

假设最终误差E传递到B处的误差为C,B11的误差为C11,B12的误差为C12......,当其前向运算为’valid’类型时则其误差矩阵可表示为以下C矩阵:

(a)对A矩阵进行求导

根据矩阵传递规则,有下面传递性质:

现将上面公式组(1)进行组合,举例对A22进行求导:

B11+B12+B13+B14+B21+B22+B23+B24+B31+B32+B33+B34+B41+B42+B43+B44=A00*K22+A01*K21+A10*K12+A11*K11+A01*K22+A02*K21+A11*K12+A12*K11+A02*K22+A03*K21+A12*K12+A13*K11+A03*K22+A04*K21+A13*K12+A14*K11+A10*K22+A11*K21+A20*K12+A21*K11+A11*K22+A12*K21+A21*K12+A22*K11+A12*K22+A13*K21+A22*K12+A23*K11+A13*K22+A14*K21+A23*K12+A24*K11+A20*K22+A21*K21+A30*K12+A31*K11+A21*K22+A22*K21+A31*K12+A32*K11+A22*K22+A23*K21+A32*K12+A33*K11+A23*K22+A24*K21+A33*K12+A34*K11+A30*K22+A31*K21+A40*K12+A41*K11+A31*K22+A32*K21+A41*K12+A42*K11+A32*K22+A33*K21+A42*K12+A43*K11

E=C22+C23+C32+C33

则有:

同理,可对A矩阵其他成员进行求导,可得出规律是:矩阵A的误差是矩阵B的误差C与卷积核K’(K’是卷积核K旋转180°的矩阵)的卷积。

因此当matlab中,输入的前向函数为:B=conv2(A,K,’valid’);

其对A误差的反向传递为:

(b)对卷积核K矩阵进行求导

与对A求导原理相同,现对K11进行求导如下:

则有:

K的其他成员的求导同样可以用该方式求取,为了方便我们观察,我们再对K22求导:

我们可以总结规律:

当matlab中,输入的前向函数为:

B=conv2(A,K,’valid’);

其对K的反向函数为:

由于网上多个编辑的版本,导致有时候在是否转动180°的问题上犯困难,因此

应为其前向与反向统一公式

另外,我也给出了另外一种习惯的前向反向公式:

当个输入前向函数为:

B=conv2(A,rot90(K,2),’valid’);

其对A的反向函数为:

对K的反向函数为:

若有matlab编程或者算法研究等技术需求,可加QQ(3141104423)或者加QQ群(479888200)交流平台

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

推荐阅读更多精彩内容