一文读懂卷积神经网络CNN(学习笔记)

一文读懂卷积神经网络CNN(学习笔记)

来源:机器学习算法与自然语言处理

作者:白雪峰

本文为图文结合,建议阅读10分钟。

本文为大家解读如何简单明了的解释卷积,并且分享了学习中的一些方法案例。

首先文章的提纲为:

  • CNN栗子镇楼

  • What is CNN

什么是卷积

什么是池化

  • Why CNN

  • 对CNN的其他一些理解

  • CNN实现(接口)

1、CNN栗子(A Beginning Glimpse of CNN)

  1. Modern CNN since Yann LeCun

一文读懂卷积神经网络CNN(学习笔记)

2.

一文读懂卷积神经网络CNN(学习笔记)

上面是最经典和开始的两篇CNN的结构图

2、What is CNN?

神经网络?卷积?

2.1 什么是卷积?

卷积的定义

  • 其连续的定义为:

一文读懂卷积神经网络CNN(学习笔记)

  • 特点:

一文读懂卷积神经网络CNN(学习笔记)

2.2 离散卷积的栗子:

  • 丢骰子时加起来要等于4的概率是多少?

一文读懂卷积神经网络CNN(学习笔记)

  • 二维离散的卷积

一文读懂卷积神经网络CNN(学习笔记)

  • 计算的动图如下

一文读懂卷积神经网络CNN(学习笔记)

2.3 用到二维图像上:

  • 关于卷积中常用到的一些概念:神经网络的卷积是对应位相乘,现在是信号相乘。

一文读懂卷积神经网络CNN(学习笔记)

一文读懂卷积神经网络CNN(学习笔记)

上面移动的小矩阵有两种叫法,一种叫做滤波器filter,一种加法叫做卷积核Kernel,是相同的东西只是不同的叫法。

一文读懂卷积神经网络CNN(学习笔记)

2.4、用到神经网络中

一文读懂卷积神经网络CNN(学习笔记)

我们其实需要学习的就是里面的线上面对应的权值,比如上面绿色的代表3*1的卷积核大小,只是这里用神经网络的结构表示出来了。

2.5、卷积的细节

  • filter/Kernel size,number

  • 假设神经网络的输入是6*6的image,

一文读懂卷积神经网络CNN(学习笔记)

其中每一个卷积核代表提取不同的特征,多个卷积核提取的特征然后进行组合(这样更强大),一同送入到后续的结构。

  • 下面来一个更通俗的解释:

一文读懂卷积神经网络CNN(学习笔记)

  • 每个人代表一个卷积核来进行提取不同的特征,一个人是弱小的,但是一组人就强大了,他们有着不同的知识(权重),这样类比来理解,就会好理解很多。

  • Stride

The step size you take the filter to sweep the image

一文读懂卷积神经网络CNN(学习笔记)

  • Zero-padding

  • A way not to ignore pattern on border

  • New image is smaller than the original image

一文读懂卷积神经网络CNN(学习笔记)

  • Channel

一文读懂卷积神经网络CNN(学习笔记)

2.6 池化(pooling)

一文读懂卷积神经网络CNN(学习笔记)

  • Max pooling 例子:

一文读懂卷积神经网络CNN(学习笔记)

  • Pooling is unsensitive to local translation.(局部不变性)

  • "If we translation the input by a small amount ,the values of mosts of the pooled outputs do not change."

  • 图像往左或者往右移动,pooling 的结果是不变的

一文读懂卷积神经网络CNN(学习笔记)

2.7 flatten

一文读懂卷积神经网络CNN(学习笔记)

2. 8 Convolution v.s. Fuly Connected

一文读懂卷积神经网络CNN(学习笔记)

一文读懂卷积神经网络CNN(学习笔记)

一文读懂卷积神经网络CNN(学习笔记)

2.9 The whole CNN

一文读懂卷积神经网络CNN(学习笔记)

  • So as the whole,CNN is conposed of

  • Convolution

  • Nonlinearity:e.g.ReLU

  • Pooling

  • FC Layers

一文读懂卷积神经网络CNN(学习笔记)

3. Why CNN

  • Some patterns are much smaller whole image.

一文读懂卷积神经网络CNN(学习笔记)

  • The same patterns appear in different regions

一文读懂卷积神经网络CNN(学习笔记)

  • Subsampling the pixels will not change the object

一文读懂卷积神经网络CNN(学习笔记)

一文读懂卷积神经网络CNN(学习笔记)

4. 对CNN的其他一些理解

4.1 关于接受域(receptive field)

  • 称在底层中影响上层输出单元s的单元合集为s的接受域(receptive field)。

一文读懂卷积神经网络CNN(学习笔记)

  • 处于卷积网络更深的层中的单元,它们的接受域要比处在浅层的单元的接受的域更大。如果网络还包含类似步幅卷积或者池化之类的结构特征,这种效应会加强。这意味着在卷积网络中尽管直接连接都是很稀疏的,但处在更深的层中的单元可以间接地链接到全部或者大部分输入图像。(表现性能)

一文读懂卷积神经网络CNN(学习笔记)

4.2 卷积与池化作为一种无限强的先验

首先,弱先验具有较高的熵值,因此自由性较强,强先验具有较低的熵值,这样的先验在决定参数最终取值时可以起着非常积极的作用。

把卷积网络类比成全连接网络,但对于网络的权重具有无限强的先验。

  • 所有隐藏单元的权重是共享的。

  • 除了一些连续的小单元的权重外,其他的权重都是0.

  • 池化也是一个无限强的先验:每个单元都具有对少量平移的不变性。

卷积和池化可能导致欠拟合!任何其他先验类似,卷积和池化只有当先验的夹着合理且正确时才有用。如果一项任务依赖于保存精确的空间信息,那么在所有的特征上使用池化将会增大训练误差。

根据实际需求选取先验

5. CNN in Pytorch

  • pytorch的相关接口

一文读懂卷积神经网络CNN(学习笔记)

  • LeNet in PyTorch

一文读懂卷积神经网络CNN(学习笔记)

参考:

如何通俗易懂得解释卷积(马同学知乎答案)

李宏毅老师slides

相关推荐