假设我知道我想针对我的特定问题使用 ResNet-101 架构。有在 ImageNet 上训练的 ReseNet-101 模型。
使用这些预训练模型并仅重置最后(少数)层以匹配特定数量的类是否有任何缺点,或者这应该是默认选项吗?
请不要简单地发布您的直觉……我也有直觉,但我想知道。
假设我知道我想针对我的特定问题使用 ResNet-101 架构。有在 ImageNet 上训练的 ReseNet-101 模型。
使用这些预训练模型并仅重置最后(少数)层以匹配特定数量的类是否有任何缺点,或者这应该是默认选项吗?
请不要简单地发布您的直觉……我也有直觉,但我想知道。
根据我的经验,不仅仅是ImageNet,如果你有足够的数据,最好从头开始训练你的网络。有很多原因我可以解释为什么。
首先,我不知道你是否有过这种经验,但我已经训练CNNs了超过 2500 万个参数的复杂网络。达到95%准确度后,收敛后,我将学习率更改为更大的数字,以找到另一个可能的局部最小值。直到今天我还没有找到任何答案,但是每当我这样做时,我的准确性一直在显着下降,即使经过数千个时代,它也从未改善过。
另一个问题是,无论何时使用迁移学习,您的训练数据都应该有两种选择。首先,您的预测试模型使用的训练数据的分布应该类似于您在测试期间将要面对的数据,或者至少不会有太大的变化。其次,迁移学习的训练数据的数量应该不会过度拟合模型。如果您有少量标记的训练数据,并且您的典型预训练模型ResNet具有数百万个参数,则必须通过选择适当的评估指标和代表真实分布的良好测试数据来了解过度拟合人口。
下一个问题是您不能放心地移除层以减少参数数量。基本上,正如您自己所知,层数是一个超参数,对于如何选择没有共识。如果您从第一层中删除卷积层,再次根据经验,您将不会有很好的学习,因为架构的性质会发现低级特征。此外,如果您删除第一层,您的密集层就会出现问题,因为可训练参数的数量会以这种方式发生变化。密集连接层和深度卷积层可能是减少的好点,但可能需要时间来确定要减少多少层和神经元以避免过度拟合。
如果你没有足够的数据并且已经有一个预训练的模型,你可以做一些可以帮助你的事情。对于这种情况,我将我的答案分为两部分:
如果是这种情况,您可以忘记所有全连接层并替换新的。基本上他们所做的只是对网络发现的特征进行分类以降低错误率。关于卷积层,您必须考虑两个要点:
池化层尝试总结本地邻域中的信息,并对输入进行更高的表示。假设池化层的输入有鼻子、眼睛、眉毛等。您的池化层以某种方式尝试检查它们是否存在于附近。因此,池化层之后的卷积层通常会保留可能与您的任务无关的信息。这种解释有一个缺点。如 Jason Yosinski等人,信息可能分布在不同的激活图中。在通过深度可视化理解神经网络中研究了这种性质,您可以在其中阅读迄今为止最有趣的结论之一是在某些层似乎是令人惊讶的局部。例如,我们在 conv4 和 conv5 上看到了文本、鲜花、水果和面孔的检测器,而不是在所有层上找到分布式表示。这些结论可以从实时可视化或优化图像中得出(或者,最好同时使用两者),并为未来的研究提出几个方向,这些可视化表明进一步研究学习表示的确切性质——无论它们是本地到单个通道或分布在多个...。部分解决方案可以是保留第一层,这些层找到通常在不同数据分布之间共享的低级特征,并删除找到更高抽象的更深的卷积层。
如前所述,卷积层的主要问题是它们发现的信息可能分布在不同的激活图中。因此,您无法确定通过删除图层是否可以获得更好的性能。
如果是这种情况,您可以使用此处描述的技术来可视化激活。他们已经表明,虽然人脸不是 中的标签ImageNet,但一些内部激活图会被人脸激活。其他标签也可以看到这种观察结果。例如,用于确定场景中是否包含汽车的网络通常对道路和树木有感觉。下图显示了针对图像的哪些部分激活了输出的哪些部分。当您没有足够的数据并且您必须使用迁移学习时,这可以为您提供帮助。
根据这里的答案 标准分类设置是输入分布 和标签分布 . 域适应:何时训练和测试之间的变化。迁移学习:何时训练和测试之间的变化。换句话说,在 DA 中,输入分布发生了变化,但标签保持不变;在 TL 中,输入分布保持不变,但标签会发生变化。因此,对于上述解决方案,也可以考虑域适应问题。
如果您的数据与 Imagenet 中的数据有很大不同,我不会这样做。通常情况并非如此,因为 Imagenet 有很多代表许多不同事物的图像。但是,假设您的数据来自望远镜拍摄的照片。在这种情况下,即使是在 Imagenet 上训练的模型的最基本特征(第一层)也不会对您的模型有用,在这种情况下,使用随机初始化从头开始训练模型可能更方便。您可以做的一件事,并且它可能会更好地工作,就是使用 Imagenet 模型作为您的初始参数并更新网络的所有参数。
但是,在大多数情况下,您的图像看起来像是 Imagenet 的一个子集,因为迁移学习是一项非常强大的技术。
我在被问到大约一年后发现了这个问题,我仍然认为没有任何研究对此进行过全面测试。
当大多数人讨论迁移学习时,他们想到的是:
“在我的数据上使用 [插入流行的 google/ facbook AI/microsoft 架构] 时,imagenet 权重会帮助我获得更好的准确性(或至少加快训练速度)吗?”
实际上,如果我有手臂骨骼的医学图像,并且我之前已经在腿骨上训练过一个模型,那么迁移学习可能比使用 imagenet 权重更适用……所以说“从头开始更好”或“迁移学习更好”有点毫无意义,因为您可能无法获得比 imagenet 更相关的迁移学习权重。
早期的层总是包含“简单”的特征,这些特征可能总是在某种程度上可以转移到任何其他视觉问题上;提供图像中感兴趣对象的比例与原始数据没有太大差异。但是直接回答这个问题:不,从先前训练的网络转移权重没有“已证明”的缺点。