深度迁移学习
一、深度学习
1)ImageNet Classification with Deep Convolutional Neural Networks
主要思想:
该神经网络有6000万个参数和650,000个神经元,由五个卷积层,以及某些卷积层后跟着的max-pooling层,和三个全连接层,还有排在最后的1000-way的softmax层组成。使用了非饱和的神经元和一个非常高效的GPU关于卷积运算的工具。
1、采用了最新开发的正则化方法,称为“dropout”。
2、采用ReLU来代替传统的tanh引入非线性,;
3、采用2块显卡来进行并行计算,减少了更多显卡需要主机传递数据的时间消耗,在结构上,部分分布在不同显卡上面的前后层节点之间无连接,从而提高了训练速度;
4、同层相邻节点的响应进行局部归一化提高了识别率(top5错误率降低1.2%);
5、有交叠的pooling(top5错误率降低0.3%);
体系架构:
(1)ReLU
训练带ReLUs的深度卷积神经网络比带tanh单元的同等网络要快好几倍。如下图,带ReLU的四层卷积神经网络(实线)在CIFAR-10数据集上达到25%训练误差率要比带tanh神经元的同等网络(虚线)快六倍。
(2)在多个GPU上训练
(3)局部响应归一化
具体见Very Deep Convolutional Networks for Large-Scale Image Recognition
(4)重叠Pooling
每个网格间隔距离为s,而每一次进行降采样将从网格中心为中心,采样z*z个像素。如果s=z,则与传统方法相同,而如果s<z,则会进行重复采样。本文章将s=2,z=3,成功的将Top-1和Top-5的错误率分别降低了0.4%和0.3%(与s=2,z=2相比)。而且,在实验中发现,采用重叠采样将会略微更难产生过拟合。
(5)总体结构
该网络包括八个带权层;前五层是卷积层,剩下三层是全连接层。最后一个全连接层的输出被送到一个1000-way的softmax层,其产生一个覆盖1000类标签的分布。
响应归一化层跟在第一、第二个卷积层后面。最大Pooling层,跟在响应归一化层以及第五个卷积层之后。ReLU非线性应用于每
个卷积层及全连接层的输出。第一个卷积层利用96个大小为11×11×3、步长为4个像素的核,来对大小为224×224×3的输入图像进行滤波。第二个卷积层是256个大小为5×5×48,第三、第四和第五个卷积层彼此相连,没有任何介于中间的pooling层与归一化层。第三个卷积层有384个大小为3×3×256的核,第四个卷积层拥有384个大小为3×3×192的核,第五个卷积层拥有256个大小为3×3×192的核。全连接层都各有4096个神经元。
(6)防止过拟合
•数据增强
数据增强的第一种形式由生成图像转化和水平反射组成。该网络通过提取五个224×224的碎片(四个边角碎片和中心碎片)连同它们的水平反射(因此总共是十个碎片)做出了预测,并在这十个碎片上来平均该网络的softmax层做出的预测。
数据增强的第二种形式包含改变训练图像中RGB通道的强度。遍及整个ImageNet训练集的RGB像素值集合中执行PCA。对于每个训练图像,我们成倍增加已有主成分,比例大小为对应特征值乘以一个从均值为0,标准差为0.1的高斯分布中提取的随机变量。
•Dropout
(7)学习的详细过程
使用随机梯度下降法和一批大小为128、动力为0.9、权重衰减为0.0005的样例来训练。
我们用一个均值为0、标准差为0.01的高斯分布初始化了每一层的权重。我们用常数1初始化了第二、第四和第五个卷积层以及全连接隐层的神经元偏差。在其余层用常数0初始化神经元偏差。
对于所有层都使用了相等的学习率,在整个训练过程中手动调整的。当验证误差率在当前学习率下不再提高时,就将学习率除以10。学习率初始化为0.01,在终止前降低三次。
2)Very Deep Convolutional Networks for Large-Scale Image Recognition
主要思想:
解决ConvNet 结构设计中“深度”这个重要问题。提出用3*3的卷积增加网络的深度,当层数增加到16-19层时,分类准确度得到明显提升。网络具有很强的泛化能力。
主要步骤:
(1)主要结构
•输入是固定大小的224*224RGB图像。
•唯一的预处理是减均值。
•网络由3*3的卷积层栈组成,有些地方也利用了1*1的卷积过滤器。卷积层的stride固定为1,对3*3的卷积层padding 为1,以保持空间分辨率不变。
•通过5个Max-pooling通过2*2的窗口,stride为2进行空间池化。
•卷积层栈后面跟的是3个Fully_connected层。前2个是4096 way,第3个是1000 way。最后一层是softmax。
•隐藏层都用ReLU进行非线性化。
•在所有的网路中,除一个用了LRN外,其他都没有用。因为在ILSVRC 数据库上不能增强性能,但是导致了内存和计算时间的消耗。
注:
LRN(Local Response Normalization)局部响应归一化
对任意的卷积核(kernel),选取左右临近(adjacent)的n个卷积核,将它们在同一个位置上卷积的结果进行求和。i表示第i个核在位置(x,y)运用激活函数ReLU后的输出,n是同一位置上临近的kernal map的数目,N是kernal的总数。参数K,n,alpha,belta都是超参数,一般设置k=2,n=5,aloha=1*e-4,beta=0.75。
(2)配置
•5个网络(A-E),配置完全一样,除了深度,层数从11层到16层。conv 层的channel开始是64,在每一个max-pooling 后增加一倍,直到达到512。
其中,文中使用3*3卷积核,2个3*3的卷积层栈相当于一个5*5的卷积,而3个则相当于一个7*7的卷积。一是,用了3个非线性修正层,使得决策函数具有更强的判别能力;二是,减少了参数的数量,假设一个3层的3*3卷积层栈,输入输出都是C个channel,则需要的参数是3(3*3*C*C)=27*C*C,而一个7*7的卷积层,则需要参数7*7*C*C=49*C*C。
1*1卷积层是一种在不影响conv感受野的前提下增加决策函数非线性能力的一种方式。
(3)训练
•训练采用带momentum的 mini-batch 梯度下降优化多项式逻辑回归目标函数。batch size 256,momentum 0.9。
•训练的正则化处理:权重衰减(L2惩罚因子设置为5*10^(-4)),前两个全连接层dropout radio设置为0.5。学习率设置为0.01,当验证精确度停止提高时,下降为原来的0.1,一共下降3次,在370k(74 epochs)迭代后停止。
•浅层的网络(A)上采用随机初始化参数的方法进行训练,然后,当训练较深网络结构时,前4个卷积层和最后3个全连接层采用net A的参数。作者没有降低预初始化层的学习率,而是允许在学习过程中改变。
•对于随机初始化,从0均值,方差为0.01的正态分布中采样。biase初始化为0。
•第一种是针对单尺度训练,固定S。(两个固定值S=256,S=384)第二种方法是设置多尺度训练,让训练图像的S在[Smin,Smax]范围内随机,本文采用Smin=256,Smax=512。
(4)测试
采用multi-crops和dense evaluation,multi-crops比dense evaluation略好,两种方法的结合效果比单独使用任意一种都好,可能由于卷积边界的不同处理方式导致的互补,前者是zero-padding,后者是邻域值padding。
3)Going deeper with convolutions
主要思想:
目的:提升深度神经网络的性能。
一般方法带来的问题:增加网络的深度与宽度。
带来两个问题:
(1)参数增加,数据不足的情况容易导致过拟合
(2)计算资源要求高,而且在训练过程中会使得很多参数趋向于0,浪费计算资源。
解决方法:使用稀疏连接替代稠密结构。
存在问题:计算机的基础结构在遇到稀疏数据计算时会很不高效,使用稀疏矩阵会使得效率大大降低。
目标:设计一种既能利用稀疏性,又可以利用稠密计算的网络结构。
Inception 模型:
主要思路是用密集成分来近似最优的局部稀疏结构。分析前一层的相关性,然后将高相关的神经元聚类。这些类作为下一层的神经元,并且和前一层的神经元相连接。
1、采用不同大小的卷积核意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合;
2、卷积核大小采用1、3和5,主要是为了方便对齐。
3、使用5x5的卷积核仍然会带来巨大的计算量。在3*3 和 5*5 卷积前采用1x1卷积核来进行降维。
4、Inception里面嵌入pooling
5、高层次提取高抽象性的特征,空间集中性会降低,因此3x3和5x5的卷积核在更高层会比较多。
6、保持低层为传统卷积方式不变,只在较高的层开始用Inception模块。
GoogLeNet(22层):
网络中所有的卷积,包括Inception 中的卷积,都使用 ReLU激活函数,输入图像是 224*224 的 RGB图像,做减均值预处理。#3×3 reduce 和 #5×5 reduce 代表在 3×3 和5×5卷积之前进行的 1×1的降维处理层,这些降维层也使用 ReLU激活函数。
通过训练来提升这些中间层的分类器效果,增加回传的梯度强度。在训练时,这些分类器的误差加入到系统总体误差,(乘以一个0.3的系数)。整个网络额外的结构(包括辅助分类器)如下:
1)一个 5*5 的均值池化,步长3,这样网络(4a)的输出就是4×4×512 ,网络(4d)的输出就是4×4×528
正则化包括dropout2)128个 1*1 卷积用于降维,使用 ReLU激活函数
3)一层1024个神经元的全链接层,使用 ReLU激活函数
4)一个 dropout 层, 70% 概率
5)一个 softmax 线性层作为分类器
训练:
训练采用随机梯度下降,冲量momentum:0.9,固定学习率每8个epochs减小4%。
4)Deep Residual Learning for Image Recognition
主要思想:
•作者根据输入将层表示为学习残差函数,能够通过增加相当的深度来提高准确率。
•核心是解决了增加深度带来的副作用(退化问题),这样能够通过单纯地增加网络深度,来提高网络性能。
残差学习:
将H(x)看作一个由部分堆叠的层(并不一定是全部的网络)来拟合的底层映射,其中x是这些层的输入。假设多个非线性层能够逼近复杂的函数,这就等价于这些层能够逼近复杂的残差函数, H(x)−x (假设输入和输出的维度相同)。所以我们明确的让这些层来估计一个残差函数:F(x):=H(x)−x 而不是H(x)。因此原始函数变成了:F(x)+x。
恒等映射:
图中的例子包含两层,ℱ=W2σ(W1x),其中σ代表ReLU,为了简化省略了偏置项。之后我们再执行另一个非线性操作(例如, σ)。
在公式1中,x和F的维度必须相同。如果不相同(例如, 当改变了输入/输出的通道),我们可以通过shortcut连接执行一个线性映射Ws 来匹配两者的维度(Eq.2):
但恒等映射已足够解决退化问题,并且是经济的,因此Ws只是用来解决维度不匹配的问题。
网络结构:
在传统网络的基础上,我们插入shortcut连接,将网络变成了对应的残差版本。如果输入和输出的维度相同时,可以直接使用恒等shortcuts (Eq.1)(实线部分)。当维度增加时(Fig.3中的虚线部分),考虑两个选项:
(A) shortcut仍然使用恒等映射,在增加的维度上使用0来填充,这样做不会增加额外的参数;
(B) 使用Eq.2的映射shortcut来使维度保持一致(通过1*1的卷积)。
对于这两个选项,当shortcut跨越两种尺寸的特征图时,均使用stride为2的卷积。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论