在ULMFit 论文中,作者提出了一种逐渐解冻的策略,以应对灾难性遗忘。也就是说,当模型开始根据下游任务进行微调时,存在忘记较低层信息的危险。虽然谷歌的 BERT也是一种预训练的语言模型,它利用微调来处理下游任务,但作者并没有提到这种现象。为什么会这样?BERT 对它免疫吗?或者它是否以另一种方式处理这个问题?
BERT 如何处理灾难性遗忘?
数据挖掘
深度学习
nlp
迁移学习
2022-01-21 21:28:16
2个回答
据我所知,在微调(本质上是受控的再训练)期间,没有任何神经网络可以避免灾难性的遗忘。
关键是不要为更长的时期或更高的学习率微调预训练模型。这确保了从较低层学到的知识或多或少保持完整,同时也帮助模型从用于微调的新数据中学习,如下所述:https ://github.com/huggingface/transformers/issues /1019
为了避免过度拟合微调数据(这是 ULMFiT 的作者在提到灾难性遗忘时所关注的),通常对 BERT 采取这些措施:
- 训练多个 BERT 模型(随机重启),并选择具有最佳验证性能的模型。
- Adam优化器中的偏差补偿被省略了,导致了所谓的“BERTAdam”。这变成了 BERT 微调不稳定性的主要来源之一,如On the Stability of Fine-tuning BERT: Misconceptions, Explanations, and Strong Baselines和Revisiting Few-sample BERT Fine-tuning中所示,所以最好坚持带有偏差补偿的 Adam 或 AdamW。
- 只使用了大约 3 个微调时期。之所以需要这样做,只是因为省略了偏差补偿(参见前面的项目符号和参考的文章)。
其它你可能感兴趣的问题