本文记录的是台湾大学李宏毅老师对CNN卷积神经网络的讲解,图解非常易懂。涉及到的知识点:
卷积神经网络如何运用到图片分类问题感受野 Receptive Field步长Stride填充Padding参数共享share parameter最大池化MaxPoolingCNN全过程仅个人理解学习
引言CNN卷积神经网络最初主要是用于计算机视觉和图像处理中,比如图像分类:
最终的分类数绝对维度:
在模型中交叉熵的使用:最终通过概率分布求得每个类的概率值,最大值所在类作为最终的输出。
图片组成图片一般是有RGB组成的,通常是3维:(height, width,channels)。
在输入卷积神经网络之前需要将3维的向量拉直,变成一维向量(flatten操作):
拉直之后喂入全连接层:
CNN概念-感受野什么是感受野卷积神经网络CNN中存在一个概念:感受野Receptive Field。
感受野:用来表示网络内部的不同位置的神经元对原始图像的感受范围的大小。
上图解释:上面右边的一个神经元关注自己的范围(左边红色框)
感受野作用单个神经元将自己感受野内的内容拉直成3*3*3的27维向量
然后将27维的向量作为输入和权重W做內积,并加上偏置bias;这个隐藏层的结果作为下个隐藏层的输入。
也就是说,每个神经元只考虑值得感受野
感受野如何确定?不同的感受也允许有重叠部分;多个神经元Neuron共用同一个感受野;感受野设置下面是一种经典的设置方式:查看全部通道channels
高和宽合起来叫做kernel_size,常见的设置是3*3
通常一个感受也不是只有一个神经元关注,通常是多个。比如常见的64个或者128个:
CNN概念-步长stride上面介绍的单个感受野,不同的感受野之间具有什么关系?将上面的红色部分向右移动stride个单位。
下面的图形中步长是2,移动2个单位。常见值是1或者2。
在移动的过程中发现不同的感受野之间有重叠部分(交集)。
CNN概念-填充padding在感受野不断移动的过程中,可能出现超出边界的现象,如何处理?
使用Padding填充方法。常见的填充方法:
填充现有数据的均值全部填充0填充边界的相同值除了水平移动,还可以垂直移动:
这样感受也能够扫描一张图片的全部区域。
CNN概念-参数共享在不同的图片中,鸟嘴(某个特征)可能出现在不同的位置:
即便不同位置,但肯定是有某个神经元的感受也能够扫描到。
问题来了:相同的特征在不同的位置,需要在不同的位置使用不同的神经元吗?
李宏毅老师举例子:台湾大学教务处为什么会推大型的课程?假设每个院系都需要编程(机器学习)相关的课程,那么需要在每个院系都开设这门课吗?
回答:不需要。只需要开一门大课,让不同院系的学生都可以修课。避免重复
类比图像处理,在不同感受野的神经元上可以实现共享参数:
什么是共享参数?就是两个神经元(感受野区域不同)的参数是完全相同的:
注意右侧两个神经元不同输入下的颜色
虽然两个Neuron的weight相同,但是输入不同,也就是说最终输出是不同的:
CNN特点Fully Connected Layer:全连接层;决定看整张图片还是部分Receptive Field:感受野,不需要全部图片,通过部分区域能够识别分类Parameter Sharing:参数共享;不同的Neuron之间共享相同的参数当感受野 + 参数共享 之后就构成了卷积层Convolutional LayerCNN概念-Filter过滤器在卷积中存在不同的Filters,大小通常是3*3*chanels的
黑白:channels=1彩色:channels=3问题:每个Filter如何去图像中抓取某个特征pattern?
以Filter1为例:
依次向右和向下移动,得到不同的值:
在图片的不同位置上什么值最大?可以通过过滤器来判断:
CNN概念-特征图Feature Map使用Filter2的结果:
通过Filter和原图的內积得到的结果组成了特征图 Feature Map
这个Feature Map就可以看成是一张新的图片,具有64个channels(假设有64个Filters)
Convolution由来对比两种不同方式下的颜色:在单个感受野生成的列向量对应的权重和Fliters中的数值是一一对应。
不同的神经元能够实现参数共享share parameters,从而作用域不同的感受野区域。
参数共享的过程其实就是一个Filter不断地扫过整张图片,这个过程也就是Convolution。
笔记:
不同的神经元Neuron能共享参数共享的参数其实就是FilterFilter不断扫描图片的过程就是卷积CNN概念-池化Pooling在图片的处理,对图片的欠采样(缩放)不改变图片的本质:
池化有多种方式,最常用的Max Pooling:
1、 假设我们通过Filter先生成了一个Feature Map特征图(可以看做一个新图片)
2、将特征图进行分组
下面是以2*2为例:
3、MaxPooling选择最大的值
所以一般在做完卷积之后会再做pooling的过程,将图片变小;二者一般是交替repeat使用:
池化的缺陷:池化的作用是将图片变小,做了subsampling之后减小运算量。当图片本身就细微的时候,池化削弱了原信息,导致网络可能表现得更差。
池化的缺陷:池化的作用是将图片变小,做了subsampling之后减小运算量。当图片本身就细微的时候,池化削弱了原信息,导致网络可能表现的更差。
CNN全过程对图片不断地进行卷积和池化再经过Flatten:将矩阵拉直成一维向量再将向量喂入全连接层FCL最后加入一个softmax层,得到概率分布的结果,最后确定类别。来自:李宏毅老师-卷积神经网络
版权声明:本文由艺术留学网整理发布,如需转载请注明出处。