浅谈卷积神经网络

学号:20031211597

姓名:邹志强

原文链接:https://blog.csdn.net/qq_37635772/article/details/107760263

【嵌牛导读】浅谈卷积神经网络

【嵌牛鼻子】卷积神经网络

【嵌牛正文】

1、卷积神经网络CNN (Convolutional Neural Network):被广泛应用于图像识别、语音识别等场合,在图像识别比赛中,基于深度学习的方法几乎都以CNN为基础。CNN中新增卷积层(Convolution层)和池化层(Pooling层),连接顺序变成了“Convolution-Relu-Pooling(有时可以省略)”,而输出层的前一层依旧使用“Affine-ReLU”组合。

2、全连接:神经网络相邻层的所有神经元之间都有连接,输出的数量可以任意决定,比如Affine层。全连接层所存在的问题忽视了数据的形状,无法利用与形状相关的信息,例如三维数据被拉平成一维数据,图像是3维形状包含着重要的空间信息(空间上邻近的像素为相似的值、RGB的各个通道之间分别有密切联系、相距较远的像素之间没有什么关联),3维形状中可能隐藏有值得提取的本质模式。

3、特征图:卷积层的输入输出数据称为特征图,输入数据称为输入特征图,输出数据称为输出特征图。卷积层会以3维数据的形式接收输入数据,并同样以3维数据的形式输出至下一层。

4、卷积运算:卷积层进行的处理就是卷积运算,相当于图像处理中的“滤波器运算”,对输入数据应用滤波器进行处理,输入数据和滤波器都有高长方向上的维度,卷积运算时以一定间隔滑动滤波器的窗口并应用,将滤波器各个位置的元素与输入的对应元素相乘,然后再进行求和(乘积累加运算),最后再将这个结果保存到输出对应位置,将这个过程在所有位置都进行一遍就可以得到卷积运算的最终结果。

在全连接的神经网络中,除了权重参数,还存在偏置,CNN中滤波器的参数对应之前的权重,然后再将结果加上偏置(通常只有1个,会被加到应用了滤波器的所有元素上)得到输出结果。

5、填充:在进行卷积层处理之前,有时要向输入数据的周围填入固定的数据(比如0),进行输出大小的调整,一般是为了保持输入输出数据的空间大小一致,是卷积运算中经常会用到的处理,“幅度为1的填充”是指用幅度为1像素的0填充周围的空间。

6、步幅:应用滤波器的位置间隔,通常增大步幅后,输出大小会变小,而增大扩充后,输出大小会变大。假设输入大小为(H,W),滤波器大小为(FH,FW),输出大小为(OH,OW),填充为P,步幅为S,输出大小可以用以下公式计算。


虽然只要代入值就可以计算输出大小,但是所设定的值需使公式分别可以除尽,无法除尽时要采取报错等对策,根据深度学习框架的不同,有时也会向最接近的整数四舍五入。

7、3维数据的卷积运算:除了高、长方向之外,还需要处理通道方向,滤波器的通道数只能设定为和输入数据的通道数相同的值。当通道方向上有多个特征图时,会按照通道进行输入数据和滤波器的卷积运算,并将结果相加得到最终输出。

如果要在通道方向上拥有多个卷积运算的输出,要考虑使用多个滤波器(权重),通过应用FN个滤波器(权重数据按照(output_channel,input_channel,height,width)顺序书写),输出特征图也生成FN个,再将这FN个特征图汇集到一起,就得到形状为(FN,OH,OW)的输出方块,最后传给下一层,这个过程表示CNN的处理流。进行追加偏置的加法运算处理时,偏置的形状是(FN,1,1),可以基于Numpy的广播功能加以实现。

8、批处理:能够实现高效化和学习时对mini-batch的对应,卷积运算与批处理结合需要将各层间传递的数据保存为4维数据(batch_num,channel,height,width),在批处理版的数据流中,各个数据的开头会添加批用的维度,数据作为4维形状在各层间传递,批处理将N次处理汇总成1次进行。

9、池化层:池化是缩小高、长方向上空间的运算,比如有一个4x4的原空间,进行2x2区域集约成1个元素,缩小空间大小,一般来说,池化的窗口大小会和步幅设定成相同的值,步幅设为2,“2x2”表示目标区域的大小,“Max池化”是获取目标区域最大值的运算,取值结束向前移动步幅为2继续取值。

池化层的特征

没有要学习的参数——池化只是从目标区域中取最大值或者平均值(Max池化/Average池化),不存在要学习的参数;

通道数不发生变化——经过池化运算,输入数据和输出数据的通道数不会发生变化,计算按照通道独立进行;

对微小位置变化具有鲁棒性(健壮性)——输入数据发生微小偏差时,池化仍会返回相同的结果。

10、卷积层的实现:CNN中各层间传递的数据是4维数据,比如10个高为28、长为28,通道数为1的数据形状是(10,1,28,28),看上去比较复杂,这时使用im2col技巧可以使问题变简单。im2col是一个函数,功能是将输入数据展开以适合滤波器(权重),对于输入数据,会将应用滤波器的区域(3维方块)横向展开为1列,这个展开处理会在所有应用滤波器的地方进行。

im2col(input_data,filter_h,filter_w,stride=1,pad=0)

input_data——由(数据量N,通道C,高H,长W)4维数组构成的输入数据

filter_h——滤波器的高

filter_w——滤波器的长

stride——步幅

pad——填充

在实际运算中,滤波器的应用区域几乎是重叠的,使用im2col展开后,展开后的元素个数会多于原方块的元素个数,因此im2col的实现比普通实现消耗更多的内存,但是汇总成一个大矩阵进行计算又比较方便(比如线性代数库中矩阵计算的实现已经高度最优化)。使用im2col展开输入数据后,只需将卷积层的滤波器纵向展开为1列,并计算两个矩阵的乘积,最后输出结果是2维矩阵,还需要进行进一步转换,转换成4维数组。

通过reshape(FN,-1)将参数指定为-1,会自动计算-1维度上的元素个数,以使多维数组的元素个数前后一致;transpose会更改多维数组的轴的顺序,可以将输出大小转换为合适的形状。另外在进行卷积层的反向传播时,要注意必须进行im2col的逆处理。

11、池化层的实现:池化层的实现也使用im2col展开输入数据,池化情况下在通道方向上是独立的,按通道单独展开,展开之后只需求各行的最大值并转换为合适的形状即可。

步骤

①展开输入数据;

②求各行的最大值(可以使用np.max方法,指定axis参数并在这个参数指定的各个轴方向上求最大值);

③转换为合适的输出大小。

池化层的backward处理可以参考ReLU层的实现中使用的max的反向传播。

12、CNN的实现:网络构成为“Convolution-ReLU-Pooling-Affine-ReLU-Affine-Softmax”,实现为名为SimpleConvNet的类,超参数通过名为conv_param的字典传入。

参数

input_dim——输入数据的维度(通道,高,长);

conv_param——卷积层的超参数(字典),关键字为(filter_num,filter_size,stride,pad);

hidden_size——隐藏层(全连接)的神经元数量;

output_size——输出层(全连接)的神经元数量;

weight_int_std——初始化时权重的标准差。

参数的梯度通过误差反向传播法(将正向传播和反向传播组装在一起)求出,各层已经实现了正向传播和反向传播功能,所以只需要以合适顺序调用即可,最后把各个权重参数的梯度保存在grads字典中。卷积层和池化层是图像识别中必备的模块,CNN可以有效读取图像中的某种特性从而实现高精度识别。

13、CNN的可视化:学习前的滤波器是随机进行初始化的,所以黑白浓淡没有规律可循,通过学习,使得滤波器变成了有规律的图像,这些有规律的滤波器通过观察边缘(颜色变化的分界线)和斑块(局部的块状区域)从而做出响应。

在堆叠了多层的CNN中,随着层次加深,提取的信息也会越来越抽象,神经元从简单的形状向高级信息变化,比如AlexNet网络结构堆叠了多层卷积层和池化层,最后经过全连接层输出结果,对于中间数据会连续应用卷积运算。

14、代表性CNN

LeNet——1998年首次提出的CNN元祖,是进行手写数字识别的网络,有着连续的卷积层和池化层,最后经过全连接层输出结果。激活函数采用sigmoid函数,并且使用子采样(subsampling)缩小中间数据的大小;现在主流CNN主要采用ReLU函数并进行Max池化。

AlexNet——是引发深度学习热潮的导火索,网络结构叠加多个卷积层和池化层,最后经过全连接层输出结果,区别主要是:①激活函数使用ReLU、②使用局部正规化的LRN层、③使用Dropout

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

推荐阅读更多精彩内容