CNN笔记

CNN

CNN简介

卷积神经网络(Convolutional Nerural Networks, 简称CNN或者ConvNet)。

结构

一般典型的CNN神经网络都具有如下的层次结构,从输入数据的开始,经历卷积层、线性整流层、池化层、全连接层到最后的损失函数层,最后就是数据的输出。

  • LeNet-5结构

LeNet-5

  • AlexNet结构

    AlexNet

卷积层Convolutional layer

卷积层这一层结构主要是与卷积有关的,要理解卷积层,就需要弄明白卷积是什么和卷积的作用是什么这个两个问题

卷积是什么

卷积是泛函分析中的一种数学算子,通过两个函数f和g生成第三个函数,用于表征函数f与g经过反转和平移的重叠部分的面积。看看简单的定义式

convolution

理解的关键需要抓住定义中反转、平移、重叠和面积这四个关键词。

图解其运算过程

convolution-imageshow1

convolution-imageshowtext

参考维基百科卷积

以上便是卷积的定义和解释了,但是这只是一维连续的信号(函数f和g)的卷积的定义和理解,图像信号是二维且离散的,那仍需要理解一番二维的离散卷积。

卷积有什么作用

在卷积神经网络里面,卷积是一种局部的操作,通过一定大小的卷积核作用于局部图像,从而获取图像的局部特征信息。

convolutioin-filter1

convolution-filter

car

线性整流层ReLU layer

线性整流层是卷积神经网络中非常关键的一层,它解决了线性的网络不能学习异或的问题。

池化层Pooling layer

最大池化示意图

max-pooling

全连接层Fully connected layer

全连接层即前后两层的神经元都两两相连

fullconnecte

fullconnecte2

损失函数层Loss layer

三大核心思想

局部感知Local field

局部感知,从字面上理解就是针对数据的局部(图像部分区域)提取特征,这是相对于普通的多层感知器而言的。再普通的多层感知器当中,隐藏层的节点会连见到数据的每一部分(图像的每一个像素点)上,这可以理解为“全局感知”了。而在卷积神经网络之中,每个隐藏层的节点只是连接到数据某个足够小的局部(图像的某个足够小的像素点上),这个过程成,形象地说是在模仿了人眼在看东西的时候,目光总是聚焦在某一个相对很小的局部。不过它最大效果是相比多层感知器,卷积神经网络的局部感知思想大大减少了需要训练的权值参数。

例如,对于一个1000 x 1000的输入图像来说,假如下一个隐藏层的神经元数目为10^6个,普通多层感知采用全连接的方式,权值参数为1000 x 1000 x 10^6 = 10^12个。而卷积神经网络采用局部感知,假设局部感知的区域大小为10 x 10,即下层的神经元只与10 x 10的局部图像连接,此时需要的权值参数为 10 x 10 x 10 ^6 = 10^8。一对比,权值权值参数减少了4个数量级。

cnn-local-feild

如图所示,全局感知(全连接)与局部感知(卷积局部操作)的对比,每一根连线代表一个权值参数,相比之下局部感知所需权值参数少很多。

2d-convolution

这个局部感知的思想是与结构中的卷积层相对应的,通过卷积操作,把全连接变成局部连接,大大减少权值参数的数量,同时因为网络是多层的,可以提取数据(图像)的高阶特征,加上神经元之间交互相连作用,使得局部感知的方式在网络中也可以获取一个全局关系。

权值共享Shared weights

局部感知使得权值参数减少了很多,但是参数的数量还是很大的。权值共享在局部感知的基础之上更进一步地减少了权值参数的数量。

权值共享:不同地数据(图像)或者相同地数据(图像)公用一个卷积核,减少重复地卷积核。因为同一张图像可能会出现相同的特征,因此学习出来的权值参数(卷积核)就会有重复的。

cnn-weights-share1

如图所示,没有权值共享,那么就需要多一个激活函数。

cnn-weights-share2

使用权值共享,则减少权值参数,加快计算速度。权值参数共享也是在结构中的卷积层实现的。

下采样Subsampling

在卷积神经网络之中,每经过一层网络,图像的大小都经过“压缩”一遍,再进入下一层的卷积网络,这个操作实际为一个下采样(也称降采样)。下采样对应网络结构中的池化层(Pooling layer)

pooling操作好处有:

  • 网络没必要对原图进行处理,下采样减小图像规模,网络得到的统计特征具有更低的维度,减少计算量。
  • 参数减少,减少过拟合的可能性
  • invariance(不变性),这种不变性包括translation(平移),rotation(旋转),scale(尺度)

应用

图像识别Image recognition

卷积神经网络通常在图像识别的相关任务中有所应用,从最开始的手写数字识别,到后来的图像分类,到目标检测,图像的语义分割再到最后实例分割,CNN都发挥着重要作用。

视频分析Video analysis

视频分析相比图像识别分析相对要难一些,CNN也被应用于视频分析之中。视频分析涵盖视频结构化分析、目标检测以及跟踪、行为识别、动作时识别和情感语义分析等。

自然语言处理Nature language processing

卷积神经网络也常被用于自然语言处理。 CNN的模型被证明可以有效的处理各种自然语言处理的问题,如语义分析[[、搜索结果提取、句子建模 、分类、预测、和其他传统的NLP任务等。

药物发现Drug discovery

卷积神经网路已在药物发现中使用。卷积神经网络被用来预测的分子与蛋白质之间的相互作用,以此来寻找靶向位点,寻找出更可能安全和有效的潜在治疗方法。

围棋Go

最典型的例子就是Google的alpha go了。

经典模型

LeNet

LeNet-5

AlexNet

AlexNet

VGG

GoogLeNet

ResNet

微调Fine-tuning

卷积神经网络(例如Alexnet、VGG网络)在网络的最后通常为softmax分类器。微调一般用来调整softmax分类器的分类数。例如原网络可以分类出2种图像,需要增加1个新的分类从而使网络可以分类出3种图像。微调(fine-tuning)可以留用之前训练的大多数参数,从而达到快速训练收敛的效果。例如保留各个卷积层,只重构卷积层后的全连接层与softmax层即可。

一些重要概念的理解

神经元

学生物的时候学过,人体中含有神经网络,复杂的网络由一个一个神经元构成。

humain_brains

如图所示,神经元含有一些重要的结构,例如通过突触感知刺激信号,然后传入神经元胞体内,神经元就被激活,然后可以发出信号传递到下一个神经元。受这个启发,人工的神经网络中的神经元结构也蕴含了这些思想。

neuron

如图所示,a为为一系列的数据,w为权重系数,b为偏置。可以参考人体神经元去理解,数据a好比生物体中的信号,每条权值系数的线w相当于神经元的突触,偏置可以理解为控制输入信号的强弱吧。激活函数就相当于神经元的胞体吧,数据输入进去激活函数,好比神经元被激活,输出的数据就是向下一个神经元发出的信号。

neuron1

以上是一个神经元的工作过程。

neuron_network

然后多个神经元连接就构成了人工的神经网络。与生物中的神经网络还是有相似之处的。

前馈网络

百度百科这么解释

前馈神经网络(feedforward neural network),简称前馈网络,是人工神经网络的一种。在此种神经网络中,各神经元从输入层开始,接收前一级输入,并输出到下一级,直至输出层。整个网络中无反馈,可用一个有向无环图表示。

前馈神经网络采用一种单向多层结构。其中每一层包含若干个神经元,同一层的神经元之间没有互相连接,层间信息的传送只沿一个方向进行。其中第一层称为输入层。最后一层为输出层.中间为隐含层,简称隐层。隐层可以是一层。也可以是多层

结构设置

对于前馈神经网络结构设计,通常采用的方法有3类:直接定型法、修剪法和生长法。

直接定型法设计一个实际网络对修剪法设定初始网络有很好的指导意义;修剪法由于要求从一个足够大的初始网络开始,注定了修剪过程将是漫长而复杂的,更为不幸的是,BP训练只是最速下降优化过程,它不能保证对于超大初始网络一定能收敛到全局最小或是足够好的局部椎小。因此,修剪法并不总是有效的,生长法似乎更符合人的认识事物、积累知识的过程,具有自组织的特点,则生长法可能更有前途,更有发展潜力

分类

单层前馈神经网络
多层神经网络

特点

前馈神经网络结构简单,应用广泛,能够以任意精度逼近任意连续函数及平方可积函数.而且可以精确实现任意有限训练样本集。从系统的观点看,前馈网络是一种静态非线性映射.通过简单非线性处理单元的复合映射,可获得复杂的非线性处理能力。从计算的观点看.缺乏丰富的动力学行为。大部分前馈网络都是学习网络,其分类能力和模式识别能力一般都强于反馈网络。

常见前馈网络

感知网络器

感知器(又叫感知机)是最简单的前馈网络,它主要用于模式分类,也可用在基于模式分类的学习控制和多模态控制中。感知器网络可分为单层感知器网络和多层感知器网络

BP网络

BP网络是指连接权调整采用了反向传播(Back Propagation)学习算法的前馈网络。与感知器不同之处在于,BP网络的神经元变换函数采用了S形函数(Sigmoid函数),因此输出量是0~1之间的连续量,可实现从输入到输出的任意的非线性映射

RBF

RBF网络是指隐含层神经元由RBF神经元组成的前馈网络。RBF神经元是指神经元的变换函数为RBF(Radial Basis Function,径向基函数)的神经元。典型的RBF网络由三层组成:一个输入层,一个或多个由RBF神经元组成的RBF层(隐含层),一个由线性神经元组成的输出层

多层感知

反向传播

梯度下降法

感受野

感受野(receptive filed)原指听觉、视觉等神经系统中一些神经元的特性,即神经元值接受其所支配的刺激区域内的信号。再卷积神经网络中的感受野指特征图(feature map)中的一个点受原图像影响的区域为多大。

receptive-filed

监督学习与无监督学习

机器学习中包含三类学习方法,监督学习、无监督学习以及半监督学习。

监督学习Supervised learning

通过已有的一部分输入数据与输出数据之间的对应关系,生成一个函数,将输入映射到合适的输出,例如分类

无监督学习Unsupervised learning

直接对输入数据集进行建模,例如聚类

半监督学习Semi-supervise learning

综合利用有类标的数据和没有类标的数据,来生成合适的分类函数

过拟合与欠拟合

fitting

其实一张图可以总结,使用参数较少导致欠拟合,使用参数过多会导致过拟合。

拟合fitting

百度百科的解释为

形象的说,拟合就是把平面上一系列的点,用一条光滑的曲线连接起来。因为这条曲线有无数种可能,从而有各种拟合方法。拟合的曲线一般可以用函数表示,根据这个函数的不同有不同的拟合名字。

常用的拟合方法有如最小二乘曲线拟合法等,在MATLAB中也可以用polyfit 来拟合多项式。拟合以及插值还有逼近是数值分析的三大基础工具,通俗意义上它们的区别在于:拟合是已知点列,从整体上靠近它们;插值是已知点列并且完全经过点列;逼近是已知曲线,或者点列,通过逼近使得构造的函数无限靠近它们

过拟合overfitting

维基百科的解释为

统计学中,过拟合(英语:overfitting,或称过度拟合现象是指在拟合一个统计模型时,使用过多参数

对比于可获取的数据总量来说,一个荒谬的模型只要足够复杂,是可以完美地适应数据。过拟合一般可以视为违反奥卡姆剃刀原则。

当可选择的参数的自由度超过数据所包含信息内容时,这会导致最后(拟合后)模型使用任意的参数,这会减少或破坏模型一般化的能力更甚于适应数据。过拟合的可能性不只取决于参数个数和数据,也跟模型架构与数据的一致性有关。此外对比于数据中预期的噪声或错误数量,跟模型错误的数量也有关。

欠拟合underfitting

欠拟合则与过拟合相反,使用了过少的参数,导致没有很好的拟合曲线。

分类与回归

来自知乎的回答

分类和回归的区别在于输出变量的类型。

定量输出称为回归,或者说是连续变量预测;
定性输出称为分类,或者说是离散变量预测。

举个例子:

预测明天的气温是多少度,这是一个回归任务;

预测明天是阴、晴还是雨,就是一个分类任务。

回答链接

classification-and-regression

文献参考

卷积神经网络CNN详解

维基百科-卷积

维基百科-卷积神经网络

-------------本文结束感谢您的阅读-------------