迁移学习:如何以及为什么只重新训练网络的最后一层?

机器算法验证 机器学习 神经网络 反向传播 迁移学习
2022-03-19 06:19:13

这段视频中,Andrew Ng 教授谈到了迁移学习:

根据你拥有的数据量,你可能只是重新训练网络的新层,或者你可以重新训练这个神经网络的更多层。

他所指的新层是为替换原始输出层而添加的层。

此时吴教授说:

如果您有足够的数据,您还可以重新训练网络其余部分的所有层。

  1. 在迁移学习中,只训练最后几层时,反向传播的应用方式有什么不同吗?

  2. 如果微调数据集很小,为什么要避免保留迁移学习网络的所有层?即,(如果我理解正确的话),为什么不想将正常的反向传播应用到输入层?

1个回答

如果微调数据集很小,为什么要避免保留迁移学习网络的所有层?即,(如果我理解正确的话),为什么不想将正常的反向传播应用到输入层?

如果新数据集很小,将训练限制在新层的原因是为了避免过度拟合。整个网络包含更多参数,并且在小数据情况下,找到适合训练集但不能很好泛化的解决方案的可能性更高。

迁移学习背后的想法是,原始网络已经学习了一种内部表示,该表示也适用于新任务。这种表示由我们从原始网络保留的最后一层的输出给出。通过仅训练新层,我们只需保留该表示并学习如何为新任务处理它。因为新层包含的参数比整个网络少,所以过拟合的风险更小。

在迁移学习中,只训练最后几层时,反向传播的应用方式有什么不同吗?

如何计算梯度或如何使用梯度更新参数没有区别。唯一的区别是早期层的参数是固定的,因此不需要计算梯度的这些分量。