一、卷积神经网络基础
- 卷积层用于提取特征,后面的全连接层用于对提取的特征做非线性转换,表现为分类器 。
- 卷积层有移动不变性(Translation-Invariant.),这是由于卷积的原因,所以无论特征在图像的那个地方都能被提取。但是对于MLP(多层感知机)而言,要保证这些特征分布的位置大致相同。
- 全连接层尝试学习全局特征或模式,它可以表现为一个很好的分类器。
1.Convolutional Layer
卷积层可以被认为是CNN的眼睛。 该层中的神经元寻找特定的特征。 如果他们找到了他们正在寻找的功能,他们会产生很高的激活。
- 卷积操作(单通道):
- 卷积操作(多通道):用一个
k
∗
k
∗
c
k*k*c
k∗k∗c的滤波器,最终输出为多个通道的叠加
- 如果需要输出为n个通道,则选择n个filter,此时有: n ∗ k ∗ k ∗ c + n n*k*k*c + n n∗k∗k∗c+n个参数,k为滤波器尺寸,c为图像通道数,n为滤波器个数,+n指的是每个滤波器的偏置b。
2. 卷积如何做到大视野的
- 前几层的网络看的区域都比较小,只能检测一些小的如边缘的特征。到更深的网络,神经元从图像的较大部分和各种其他神经元获取信息。 因此,后期层的神经元可以学习更复杂的特征。
3. 我的理解
- 卷积层用于提取特征
- 特征通过flatten拉直转成多维度的特征向量
- 特征向量经过全连接层进行特征转换(线性?非线性),转换到线性空间进行线性二分类?
二、 迁移学习与预训练
- 迁移学习
迁移学习是将别人以及训练好的网络(权重不变)拿过来用,以InceptionV3为例,具体使用的时候保留InceptionV3的全部卷积层的参数,只要替换全连接层。应用的时候,将自己的图像全部通过InceptionV3的网络,将计算的特征存到本地,然后自己搭建一层全连接层。读入本地存好的特征作为输入,之后对全连接层进行训练。 - 预训练网络
将在大数据集上训练得到的weights作为特定任务(小数据集)的初始化权重,重新训练该网络(根据需要,修改全连接层输出);至于训练的方式可以是:1.微调所有层2.固定网络前面几层权重,只微调网络的后面几层,这样做有两个原因:A. 避免因数据量小造成过拟合现象;B.CNN前几层的特征中包含更多的一般特征(比如,边缘信息,色彩信息等),这对许多任务来说是非常有用的,但是CNN后面几层的特征学习注重高层特征,也就是语义特征,这是针对于数据集而言的,不同的数据集后面几层学习的语义不同。