1 简介
简称:CNN,convolutional neural network
应用场景:图像识别与分类(CNN),看图说话(CNN+RNN)等
优越性:和多层感知机相比,cnn可以识别独特的模式,可以自动从数据中提取特征。一般机器学习需要特征工程,cnn可以自动识别,极大代替或取代了特征工程
和多层感知机原理不同点:层包含卷积层,池化层。但也是一种前馈神经网络
输入与输出:输入可为图像,输出为目标分类个数(比如图像目标分5类,则输出可定义有5个输出单元)
2 概念
用例子说明:识别图像里的数字是几,数字0-9,用cnn,则输出有10个单元,输入image为28x28像素彩色图片,每个像素为0-255的灰度值
2.1 识别手写数字流程简介
可简单理解为从一个图像提取出多个简单的小图像(因为要模式识别,多个模式,提取特征),然后从这些小图像输出预测
第一层卷积运算后,变成了28x28x4的结果,可以理解为4张28x28的图像
第二层池化运算后,变成了14x14x4的结果,可理解为4张14x14的图像(变小了)(卷积和池化运算原理后面说)
第二层卷积和池化类似,卷积后图像多了,池化后尺寸小了
第五层可理解为将第四层池化运算后的结果拉伸为1维向量(可以看成特征)
第六层为感知机的隐层,经过隐层计算得到输出。本例为分类问题,输出为各分类概率,加和为1
cnn和mlp(多层感知机)工作流程也一样,包括前馈运算和反馈学习阶段(比如梯度下降)。
2.2 卷积运算
卷积是数学概念,定义为一个卷积核函数在输入信号上序列化的积分计算,比较抽象,看个例子
卷积运算原理和人眼识别物体原理差不多。比如一个图片有很多物品,目标找到图片中所有的鞋子,人眼判断会经历这些流程:1扫描图片:需要看完整个图片,才能知道有多少鞋子 2模式识别,人眼能看出鞋子是因为大脑知道鞋子长什么样,脑海会有一个关于鞋子的模板图案 3模式匹配:扫描图片过程,当看到和鞋子模式高度匹配的地方,就记下这个位置的下标。扫描完成后,所有下标所在位置大概率会有鞋子
卷积核可以看作上例中的鞋子模板,鞋子模板和原始图像匹配的结果叫特征图,是一个二维的灰度图,再看个书里的例子
2.2.1 数学上的卷积运算
接上图,用一个卷积核扫描完原始图像一遍,即可看作完成一次卷积运算
卷积运算结果是特征图尺寸会比原始图像尺寸小,如果不像让特征图尺寸变化,可以在原始图像四周加padding(边距)
可以用多个卷积核(多个模式)对原始图像识别,对应会有数量和卷积核数量相等的特征图生成
卷积运算会越来越小,是因为特征图有一定尺寸,经过卷积运算就会减小
卷积运算越来越厚是因为模式(或特征,或卷积核)越来越多,比如需要从图像识别出多个类别的有用信息
2.3 池化运算
可以理解为对卷积运算得到的特征图取粗粒度信息。即以一定尺寸窗口对特征图扫描,将窗口对应的像素进行运算,比如有取最大,取平均等运算。和卷积不同的是,池化运算的扫描是无重叠的扫描。
比如对一个图像的首行进行取最大池化运算:
2.4 立体卷积核
对于第二个卷积层,其输入是有厚度的特征图。此时如何选择第二层卷积层的卷积核?卷积核需要有核输入特征图厚度一致的卷积核,然后窗口大小自己取。此时卷积核变成一个三维的长方体
2.5 超参数与参数
超参数:即训练过程人为指定值的参数,不会变化的参数,比如网络层数,每层神经元个数,都是训练前指定好的
参数数量和mlp相比:参数数量少很多,如果mlp全连接,因为笛卡积会导致参数很多
池化层没参数:只有固定的运算,指定窗口大小,除此之外不需要参数
2.6 其他
2.6.1 反向传播算法
cnn也用反向传播算法(BP),怎么使用:只要可微分,就可以用pytorch的backward反向求导
cnn优越性在哪:1 可实现各种图像运算。比如锐化,模糊图像,都可看作特定权重的cnn运算。也就是说,可以用cnn实现图像运算 2 池化运算可以提取大尺度特征,可以理解为整体特征(一座山在山