Deep Learning 理论知识
CNN 卷积神经网络
目录
1.为什么使用CNN
对于一张图片,一个神经元不用了解整张图,通过一小部分特征就可以分辨图中存在的某些特定pattern。
Connecting to small region with less parameter
The same patterns appear in different regions.
Do almost the same thing. They can use the same set of parameters.
对图片subsampling 并不会改变对象,我们可以通过对图像subsampling压缩图像,在神经网络中使用更少的参数达到相同的效果。
CNN整个过程:
中间的卷积,池化,可以重复不断叠加。
2.CNN – Convolution
对于一个 6 *6的图像我们使用 3 *3的卷积核来进行特征提取,卷积核可以多个。
我们设置步长stride = 1,也就是每个卷积核移动的步长为1格,对于第一个卷积核,将图像上对应大小的像素值与卷积核进行乘积求和,得到右边的结果记录下来。
卷积核扫描一遍整个图像后得到右边的结果,可以看到左上角和左下角数值为3,也就说明了原图像的左上角和左下角存在与卷积核特征相对应的特征,即斜对角的数值都为1,因此我们提取了原图像斜对角为1这个特征,并传入下一层神经网络。
通过不同的卷积核可以提取不同的特征。得到feature map。
CNN – Colorful image
对于彩色图片,存在R,G,B 3个维度,因此采用的卷积核也是同样3个维度来采样。
Convolution v.s. Fully Connected
相比于全联接,卷积核使用相同的weight对input data不同的地方进行神经元的输入,获得的feature map 可以看作是一个个神经元,作为输入连接下一层的神经网络,由于卷积核是固定的,扫面整个图像,因此他比全联接会使用更少的参数。
2.CNN – Max Pooling
经过池化层,一般使用maxpooling,就是将最大的值保留下来,这里选用2*2矩阵进行池化得到以下结果:
通过卷积和池化,我们等于获得了一个全新的图像,这个每个卷积核输出的图像都包含原图里的某些特征。
3.CNN – Flatten
全联接层
3.CNN – in Keras
3.CNN – What does CNN learn?
For each filter:
参考:NTU深度学习