我正在阅读Rami Al-Rfou的 Character-Level Language Modeling with Deeper Self-Attention。在第二页中,他们提到了辅助损失,它可以加速模型收敛并作为额外的正则化器。他们说他们有3种辅助损失:
- 中间序列位置的辅助损失
- 来自中间隐藏表示的辅助损失
- 目标位置的辅助损失多步。
但是,我找不到任何解释辅助损失的信息或参考资料。我想知道:
- 什么是辅助损失?它是使用部分数据的无监督预测模型吗?
- 如何计算辅助损失?
我正在阅读Rami Al-Rfou的 Character-Level Language Modeling with Deeper Self-Attention。在第二页中,他们提到了辅助损失,它可以加速模型收敛并作为额外的正则化器。他们说他们有3种辅助损失:
但是,我找不到任何解释辅助损失的信息或参考资料。我想知道:
辅助损失是添加到全局损失中的附加项,用于在模型的上游进一步诱导学习,可以看作是对抗梯度消失的一种方式。
早期的参考资料是Google 的 Inception 模型如何使用辅助分类器。一般的想法是,您获取模型的中间输出并将其用作单独损失函数中的预测。因此,在训练期间,您的模型既充当全局模型(所有参数都受到最终全局损失的影响),又充当由具有特定术语的子模型组成的模型,这些子模型专门适用于您的辅助任务。
实际上,您可以按照此示例进行操作。如果链接失效,这是一个通用视图:
# let's say we have two auxiliary losses, and thus two auxiliary outputs
final_task_prediction, predictions = model.forward(x)
global_loss = loss(final_task_prediction, y)
intermediate_loss_1 = aux_loss_1(predictions[0], aux_y_1)
intermediate_loss_2 = aux_loss_2(predictions[1], aux_y_2)
# can weight auxiliary losses however we choose
total_loss = global_loss + .4*intermediate_loss_1 + .8*intermediate_loss_2
total_loss.backward()
例如,假设我们有一个输入序列ABCDEF。快速通过 Al-Rfou 等人的辅助损失。纸
多个位置作为“给定 A,预测 B,然后给定 B(以及我们的 A 的内部记忆),预测 C”(等)的辅助任务
中间隐藏表示的工作方式与多个位置相同,只是中间层也有自己的损失项
多重预测将目标预测序列分解为多个子序列,因此我们的辅助任务是“给定 A 预测 B,C ;给定 B,预测 C,D”(等等)
希望这可以帮助!