CNN(卷积神经网络)算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CNN(卷积神经网络)算法相关的知识,希望对你有一定的参考价值。

参考技术A 基础知识讲解:
卷积:通过两个函数f 和g 生成第三个函数的一种数学算子,表征函数f 与g经过翻转和平移的重叠部分函数值乘积对重叠长度的积分。
前馈神经网络:各神经元分层排列,每个神经元只与前一层的神经元相连,接收前一层的输出,并输出给下一层.各层间没有反馈。
卷积神经网络:是一类包含卷积计算且具有深度结构的前馈神经网络
卷积核:就是图像处理时,给定输入图像,输入图像中一个小区域中像素加权平均后成为输出图像中的每个对应像素,其中权值由一个函数定义,这个函数称为卷积核。
下采样:对于一个样值序列间隔几个样值取样一次,这样得到新序列就是原序列的下采样。
结构介绍
输入层:用于数据输入
卷积层:利用卷积核进行特征提取和特征映射
激励层:非线性映射,卷积是线性映射,弥补不足
池化层:进行下采样,对特征图稀疏处理,减少数据运算量
全连接层:在CNN的尾部进行重新拟合,减少特征信息的损失

输入层:
在CNN的输入层中,(图片)数据输入的格式 与 全连接神经网络的输入格式(一维向量)不太一样。CNN的输入层的输入格式保留了图片本身的结构。
对于黑白的 28×28 的图片,CNN的输入是一个 28×28 的的二维神经元:
而对于RGB格式的28×28图片,CNN的输入则是一个 3×28×28 的三维神经元(RGB中的每一个颜色通道都有一个 28×28 的矩阵)

卷积层:

左边是输入,中间部分是两个不同的滤波器Filter w0、Filter w1,最右边则是两个不同的输出。
ai.j=f(∑m=02∑n=02wm,nxi+m,j+n+wb)
wm,n:filter的第m行第n列的值
xi,j: 表示图像的第i行第j列元素
wb:用表示filter的偏置项
ai,j:表示Feature Map的第i行第j列元素
f:表示Relu激活函数

激励层:
使用的激励函数一般为ReLu函数:
f(x)=max(x,0)
卷积层和激励层通常合并在一起称为“卷积层”。

池化层:
当输入经过卷积层时,若感受视野比较小,布长stride比较小,得到的feature map (特征图)还是比较大,可以通过池化层来对每一个 feature map 进行降维操作,输出的深度还是不变的,依然为 feature map 的个数。
池化层也有一个“池化视野(filter)”来对feature map矩阵进行扫描,对“池化视野”中的矩阵值进行计算,一般有两种计算方式:
Max pooling:取“池化视野”矩阵中的最大值
Average pooling:取“池化视野”矩阵中的平均值

训练过程:
1.前向计算每个神经元的输出值aj( 表示网络的第j个神经元,以下同);
2.反向计算每个神经元的误差项σj,σj在有的文献中也叫做敏感度(sensitivity)。它实际上是网络的损失函数Ed对神经元加权输入的偏导数
3.计算每个神经元连接权重wi,j的梯度( wi,j表示从神经元i连接到神经元j的权重)
1.最后,根据梯度下降法则更新每个权重即可。
参考: https://blog.csdn.net/love__live1/article/details/79481052

算法CNN(卷积神经网络)详解!

CNN的概念

卷积神经网络(Convolutional Neural Networks / CNNs / ConvNets)与普通神经网络非常相似,它们都由具有可学习的权重和偏置常量(biases)的神经元组成。每个神经元都接收一些输入,并做一些点积计算,输出是每个分类的分数。

CNN的结构层次

基础的CNN由卷积(convolution), 激活(activation), and 池化(pooling)三种结构组成。CNN输出的结果是每幅图像的特定特征空间

卷积

考虑一个大小为5×5的图像,和一个3×3的卷积核。这里的卷积核共有9个参数,每个参数相当于卷积核中的数与图像中对应的数乘积之和

池化

池化(pooling),是一种降采样操作(subsampling),主要目标是降低feature maps的特征空间,或者可以认为是降低feature maps的分辨率。因为feature map参数太多,而图像细节不利于高层特征的抽取。 目前主要的池化操作:

  1. 最大值池化 Max pooling:如上图所示,2 * 2的max pooling就是取4个像素点中最大值保留
  2. 平均值池化 Average pooling: 如上图所示, 2 * 2的average pooling就是取4个像素点中平均值值保留
  3. L2池化 L2 pooling: 即取均方值保留

全连接层

全连接层相当于一个“分类器”,起到对整个图像进行一个特征提取的作用 全连接层和卷积层可以相互转换:

  • 对于任意一个卷积层,要把它变成全连接层只需要把权重变成一个巨大的矩阵,其中大部分都是0 除了一些特定区块,而且好多区块的权值还相同
  • 相反地,对于任何一个全连接层也可以变为卷积层。比如,一个K=4096的全连接层,输入数据体的尺寸是7∗7∗512,这个全连接层可以被等效地看做一个F=7,P=0,S=1,K=4096的卷积层。换言之,我们把 filter size 正好设置为整个输入层大小

CNN的架构

堆叠几个卷积和整流层,再加一个池化层,重复这个模式知道图片已经被合并得比较小了,然后再用全连接层控制输出

以上是关于CNN(卷积神经网络)算法的主要内容,如果未能解决你的问题,请参考以下文章

深度学习算法实践12---卷积神经网络(CNN)实现

卷积神经网络 CNN BP算法推导

基于蜜蜂优化算法优化的卷积神经网络(CNN)图像分类

卷积神经网络(CNN)反向传播算法公式详细推导

卷积神经网络(CNN)反向传播算法公式详细推导

CNN-卷积神经网络简单入门