Pus*_*dev 4 theano deep-learning keras tensorflow
我在回顾中阅读了很多论文,但有一点我不明白,卷积层中的过滤器是如何初始化的?因为,例如,在第一层,过滤器应检测边缘等.但如果它随机初始化,它可能不准确?对于下一层和高级功能也是如此.另一个问题是,这些过滤器的价值范围是多少?
非常感谢你!
您可以随机初始化过滤器,也可以在其他数据集上预先过滤它们.
一些参考:
http://deeplearning.net/tutorial/lenet.html:
请注意,随机初始化的滤波器非常像边缘检测器!
请注意,我们使用与MLP相同的权重初始化公式.权重从[-1 /扇入,1 /扇入]范围内的均匀分布中随机采样,其中扇入是隐藏单元的输入数量.对于MLP,这是下面图层中的单位数.但是,对于CNN,我们必须考虑输入要素图的数量和感受域的大小.
http://cs231n.github.io/transfer-learning/:
转学习
在实践中,很少有人从头开始训练整个卷积网络(随机初始化),因为拥有足够大小的数据集是相对罕见的.相反,通常在非常大的数据集(例如ImageNet,其包含具有1000个类别的120万个图像)上预先训练ConvNet,然后使用ConvNet作为感兴趣的任务的初始化或固定特征提取器.三种主要的转学习方案如下:
- ConvNet作为固定特征提取器.在ImageNet上预先训练一个ConvNet,删除最后一个完全连接的层(该层的输出是ImageNet等不同任务的1000个等级分数),然后将其余的ConvNet视为新数据集的固定特征提取器.在AlexNet中,这将为包含紧接在分类器之前的隐藏层的激活的每个图像计算4096-D向量.我们将这些功能称为CNN代码.如果这些代码在ImageNet上的ConvNet训练期间也被阈值化(通常是这种情况),那么这些代码是ReLUd(即阈值为零)对性能很重要.为所有图像提取4096-D代码后,为新数据集训练线性分类器(例如线性SVM或Softmax分类器).
- 微调ConvNet.第二种策略是不仅在新数据集上替换和重新训练ConvNet之上的分类器,而且还通过继续反向传播来微调预训练网络的权重.可以微调ConvNet的所有层,或者可以保留一些早期层(由于过度拟合问题)并且仅微调网络的某些更高级别部分.这是因为观察到ConvNet的早期特征包含更多通用特征(例如边缘检测器或颜色斑点检测器),这些特征应该对许多任务有用,但后来的ConvNet层逐渐变得更加特定于类的细节.包含在原始数据集中.例如,对于包含许多犬种的ImageNet,ConvNet的代表性功能的很大一部分可以用于特定于区分狗品种的特征.
预训练模型.由于现代ConvNets需要2-3周的时间来训练ImageNet上的多个GPU,因此通常会看到人们发布他们的最终ConvNet检查点,以便其他可以使用网络进行微调的人获益.例如,Caffe库有一个 模型动物园,人们可以在这里共享网络权重.
何时以及如何微调?您如何确定应在新数据集上执行哪种类型的转移学习?这是几个因素的函数,但最重要的两个因素是新数据集的大小(小或大),以及它与原始数据集的相似性(例如ImageNet类似于图像和类的内容,或者非常不同,例如显微镜图像).请记住,ConvNet功能在早期层中更通用,而在后续层中更具原始数据集特性,以下是导航4种主要场景的一些常用经验法则:
- 新数据集很小,与原始数据集类似.由于数据很小,因为过度拟合问题而对ConvNet进行微调并不是一个好主意.由于数据与原始数据类似,我们希望ConvNet中的更高级别功能也与此数据集相关.因此,最好的想法可能是在CNN码上训练线性分类器.
- 新数据集很大,与原始数据集类似.由于我们有更多的数据,我们可以更有信心,如果我们试图通过整个网络进行微调,我们就不会过度配备.
- 新数据集很小但与原始数据集非常不同.由于数据很小,因此最好只训练线性分类器.由于数据集非常不同,因此最好从网络顶部训练分类器,其中包含更多数据集特定的功能.相反,在网络早期的某个地方训练SVM分类器可能会更好.
- 新数据集很大,与原始数据集非常不同.由于数据集非常大,我们可以预期我们可以从头开始训练ConvNet.然而,在实践中,使用来自预训练模型的权重进行初始化通常仍然是有益的.在这种情况下,我们将有足够的数据和信心来微调整个网络.
实用建议.在执行转移学习时,还需要注意以下几点:
- 来自预训练模型的约束.请注意,如果您希望使用预训练网络,则可能会对可用于新数据集的体系结构略有限制.例如,您不能随意从预训练网络中取出Conv图层.但是,一些变化是直截了当的:由于参数共享,您可以轻松地在不同空间大小的图像上运行预训练网络.这在Conv/Pool层的情况下是显而易见的,因为它们的前向函数独立于输入体积空间大小(只要步幅"适合").在FC层的情况下,这仍然适用,因为FC层可以转换为卷积层:例如,在AlexNet中,第一个FC层之前的最终合并卷的大小为[6x6x512].因此,查看此体积的FC层相当于具有感知字段大小为6x6的卷积层,并且应用填充为0.
- 学习率.与用于计算新数据集的类别得分的新线性分类器的(随机初始化的)权重相比,通常使用较小的学习速率来对微调的ConvNet权重进行微调.这是因为我们期望ConvNet权重相对较好,因此我们不希望太快和太多地扭曲它们(特别是当它们上面的新线性分类器正在通过随机初始化进行训练时).
其他参考文献
- CNN功能现成的:一个令人震惊的识别基准训练SVMs来自ImageNet预训练的ConvNet的功能,并报告几个最先进的结果.
- DeCAF在2013年报告了类似的发现.本文中的框架(DeCAF)是基于Python的C++ Caffe库的前身.
- 深度神经网络中的特征如何可转移?详细研究转移学习绩效,包括关于层协同适应的一些不直观的发现.
归档时间: |
|
查看次数: |
879 次 |
最近记录: |