微调的正确方法 - 训练一个完全连接的层作为一个单独的步骤

数据挖掘 神经网络 深度学习
2022-02-20 06:06:05

我正在将 Fine Tuning 与 caffenet 一起使用,效果非常好,但后来我在关于 Fine Tuning 的 Keras 博客文章中读到了这个(他们使用经过训练的 VGG16 模型):

“为了进行微调,所有层都应该从经过适当训练的权重开始:例如,您不应该在预训练的卷积基础之上随机初始化全连接网络。这是因为由触发的大梯度更新“随机初始化的权重会破坏卷积基中的学习权重。在我们的例子中,这就是为什么我们首先训练顶级分类器,然后才开始微调卷积权重。”

因此,作为微调中的一个单独步骤,他们将最后一层的输出保存在全连接层之前(“瓶颈特征”),然后他们在这些特征上训练一个“小型全连接模型”,然后才将新的在整个网络之上训练全连接层并训练“最后一个卷积块”。

这总是进行微调的正确方法吗?

谢谢

1个回答

首先,您可以通过将层设置为可训练或不可训练来自动执行此操作。通过将此超参数选择为 false,您可以冻结图层。我们知道前几层是特征提取,并且在您执行微调时假设原始问题和您的问题是相关的,因此特征也应该是相同的。什么是正确的做法?很难找到一个直接而绝对的答案,这主要取决于原始问题和新问题。事实上,我更喜欢使用不同的学习率来微调整个网络。您可以对卷积层使用较小的学习率,对全连接层使用较大的学习率。