CNN(Convolutional Neural Network)卷积神经网络
技术向:一文读懂卷积神经网络http://blog.csdn.net/stdcoutzyx/article/details/41596663
CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。由于CNN的特征检测层通过训练数据进行学习,所以在使用CNN时,避免了显示的特征抽取,而隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度
2.1 局部感知
2.2 参数共享
卷积核相同的参数,多几个卷积核,产生多幅图片,多个通道。
权值共享呢?我们可以这100个参数(也就是卷积操作)看成是提取特征的方式,该方式与位置无关。这其中隐含的原理则是:图像的一部分的统计特性与其他部分是一样的。这也意味着我们在这一部分学习的特征也能用在另一部分上,所以对于这个图像上的所有位置,我们都能使用同样的学习特征。
2.3 多卷积核
下图展示了在四个通道上的卷积操作,有两个卷积核,生成两个通道。其中需要注意的是,四个通道上每个通道对应一个卷积核,先将w2忽略,只看w1,那么在w1的某位置(i,j)处的值,是由四个通道上(i,j)处的卷积结果相加然后再取激活函数值得到的。
2.4 Down-pooling
为了解决这个问题,首先回忆一下,我们之所以决定使用卷积后的特征是因为图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在另一个区域同样适用。因此,为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平均值 (或最大值)。这些概要统计特征不仅具有低得多的维度 (相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。这种聚合的操作就叫做池化 (pooling),有时也称为平均池化或者最大池化 (取决于计算池化的方法)
2.5 多层卷积
3 ImageNet-2010网络结构
数据并行是指在不同的GPU上,模型结构相同,但将训练数据进行切分,分别训练得到不同的模型,然后再将模型进行融合。而模型并行则是,将若干层的模型参数进行切分,不同的GPU上使用相同的数据进行训练,得到的结果直接连接作为下一层的输入。
最形象的卷积神经网络详解:从算法思想到编程实现https://zhuanlan.zhihu.com/p/25249694
这式子的含义是:遍览从负无穷到正无穷的全部 s 和 t值,把 g 在 位置上的值乘上 f 在 (s, t) 位置上的值之后“加和”(积分意义上)到一起,就是为 c 在 (x, y) 位置上的值。说白了卷积就是一种“加权求和”。以 (x, y)为中心,把 g 距离中心 位置上的值乘上 f 在 (s, t) 的值,最后加到一起。把卷积公式写成离散形式就更清楚了:
离散卷积操作,又叫滤波。称作卷积核或滤波器。
该滤波器把图像的边缘检测出来了。它就是 Sobel算子。图像模糊、边缘检测等等都是人们设计出来的、有专门用途的滤波器。如果搞一个 9×9的随机滤波器,会是什么效果呢?
这时我们不禁要想,如果不是由人来设计一个滤波器,而是从一个随机滤波器开始,根据某种目标、用某种方法去逐渐调整它,直到它接近我们想要的样子,可行么?这就是卷积神经网络(ConvolutionalNeural Network, CNN)的思想了。可调整的滤波器是CNN的“卷积”那部分;如何调整滤波器则是CNN的“神经网络”那部分
上式最后是这个式子的向量形式。P 是输入向量,W是权值向量,b是偏置值标量。f称为“激活函数”。激活函数可以采用多种形式。例如 Sigmoid函数。
最简单的就是“多层全连接前向神经网络”。它的输入连接到网络第一层的每个神经元。前一层的每个神经元的输出连接到下一层每个神经元的输入。最后一层神经元的输出就是整个神经网络的输出。
上标 i表示第 i层。是输出向量,n元,因为第 i层有 n个神经元。第 i层的输入,即第 i -1层的输出,是 m元向量。权值矩阵 W是 n×m矩阵:n个神经元,每个神经元有 m个权值。W乘以第 i -1层输出的 m向量,得到一个 n向量,加上 n元偏置向量 b,再对结果的每一个元素施以激活函数 f,最终得到第 i 层的 n元输出向量。
把一个训练样本输入给神经网络,计算输出与正确输出的(向量)差的模平方(自己与自己的内积)。再把全部 n个样本的差的模平方求平均,得到 e:
称为均方误差 mse。e越小则神经网络的输出与正确输出越接近。神经网络的行为就与想要的行为越接近。
经典的神经网络的训练算法是反向传播算法(Back Propagation, BP)。BP算法属于优化理论中的梯度下降法(Gradient Descend)。将误差 e作为全部权值和全部偏置值的函数。算法的目的是在自变量空间内找到 e的全局极小点。
三、卷积神经网络
这个神经网络不就是一个卷积滤波器么?只不过卷积核的参数未定,需要我们去训练——它是一个“可训练滤波器”。
在 CNN中,这样的滤波器层叫做卷积层。一个卷积层可以有多个滤波器,每一个叫做一个channel ,或者叫做一个feature map 。可以给卷积层的输出施加某个激活函数:Sigmoid、Tanh等等。激活函数也构成CNN的一层——激活层,这样的层没有可训练的参数。
还有一种层叫做Pooling层(池化层)。它也没有参数,起到降维的作用。将输入切分成不重叠的一些n x n区域。每一个区域就包含 n x n个值。从这 n x n个值计算出一个值。计算方法可以是求平均、取最大 max等等。假设 n = 2,那么 4个输入变成一个输出。输出图像就是输入图像的 1/4大小。若把 2维的层展平成一维向量,后面可再连接一个全连接前向神经网络。
通过把这些组件进行组合就得到了一个 CNN。它直接以原始图像为输入,以最终的回归或分类问题的结论为输出,内部兼有滤波图像处理和函数拟合,所有参数放在一起训练。这就是卷积神经网络。
四:栗子
优化算法采用随机梯度下降 SGD。SGD 是梯度下降的一个变体。它并不是用全体样本计算 e的梯度,而是每次迭代使用随机选择的一部分样本来计算。学习速率 LR初始为 0.01 ,每次迭代以 1e-6 的比例衰减。以 0.9 比例设置冲量。
论文ImageNet Classification with Deep Convolutional Neural Networks
ReLU修正线性单元http://www.cnblogs.com/neopenx/p/4453161.html ??
它的一个平滑解析函数为f(x)=ln(1+ex),被称之为softplusfunction,softplus的微分就是logistic function:f′(x)=ex/(ex+1)=1/(1+e−x)。另外一种函数叫做softmax function或者normalizedexponential是logistic function的一个泛化,如下:
一. CNN简介
CNN(卷积神经网络)是传统神经网络的变种,CNN在传统神经网络的基础上,引入了卷积和pooling。与传统的神经网络相比,CNN更适合用于图像中,卷积和图像的局部特征相对应,pooling使得通过卷积获得的feature具有空间不变性