CNN

一、引入CNN的缘由
neural network参数太多,容易过拟合,计算量太大。从这个缺点出发,提出改进。能否利用一些prior knowledge减少整个模型的参数呢?于是CNN诞生了!
二、CNN设计理念
任何的创新工作都离不开已有的成就,让我们回顾一下fully forward network ,neuron之间采用全连接(导致模型参数多的原因),我们能否不采用全连接方式呢?自然模型参数也就少了。hidden layer 的neuron个数最好也别太多。更深层次来探究一下,神经网络在做什么?每个neuron都是一个logistic regression ,根据样本提取特征,以形成classifier;而下一hidden layer在上一个hidden layer的输出结果继续提取特征。这里想说每个neuron是个classifier ,代表一种特征。
CNN_第1张图片
由于CNN最常被使用在图像领域,对图像分析,可以分析得出pattern(特征)是局部的,pattern(特征)可能出现在在图像的不同位置,对图像做subsampling不影响图像辩识效果。我们正是根由这三点来设计CNN,CNN模型包含卷积层(体现pattern只与部分输入有关、权值共享)、池化层(subsampling)。
CNN_第2张图片

CNN_第3张图片三、CNN具体实现
整体架构:
CNN_第4张图片分部分讨论:
卷积层:
使用filter表示权值(一个filter是一个特征),filter与输入图像的部分像素点做点积运算(可以找到图像中与pattern相似的部分 ,由于采用stride方式遍历整个图像,因此可以实现我们第二个要求,pattern可出现在图像的不同位置),多个filter与图像做点积运算的结果构成feature map。实际上,filter个数决定了hidden layer有效neuron个数 (权值不同),(卷积层+池化层)个数决定了hidden layer层数。
CNN_第5张图片CNN_第6张图片这里要注意,选取的filter的高默认要和池化层输出的高相同。
CNN_第7张图片与全连接神经网络比较,参数少,能有效地检测出pattern的特征很明显:
CNN_第8张图片CNN_第9张图片CNN_第10张图片池化层:
CNN_第11张图片
CNN_第12张图片CNN_第13张图片CNN_第14张图片四、逆向理解CNN都做了什么
这里分别选择不同的优化目标:某个filter和(权值和),fully forward network的隐藏层输入,最后输出结果,对输入图像做梯度下降,来看看最佳的图像以理解CNN都学到了什么。
CNN_第15张图片
CNN_第16张图片
CNN_第17张图片CNN_第18张图片
五、
CNN_第19张图片CNN_第20张图片CNN_第21张图片

你可能感兴趣的:(CNN)