克服Dropout缺陷,简单又有效的正则方法:R-Drop
近日,微软亚洲研究院与苏州大学在 Dropout [1] 的基础上提出了进一步的正则方法:Regularized Dropout,简称R-Drop。与传统作用于神经元(Dropout)或者模型参数(DropConnect [2])上的约束方法不同,R-Drop 作用于模型的输出层,弥补了 Dropout 在训练和测试时的不一致性。简单来说就是在每个 mini-batch 中,每个数据样本过两次带有 Dropout 的同一个模型,R-Drop 再使用 KL-divergence 约束两次的输出一致。所以,R-Drop 约束了由于 Dropout 带来的两个随机子模型的输出一致性。
与传统的训练方法相比,R- Drop 只是简单增加了一个 KL-divergence 损失函数项,并没有其他任何改动
https://github.com/dropreg/R-Drop
import torch.nn.functional as F
# define your task model, which outputs the classifier logits
model = TaskModel()
def compute_kl_loss(self, p, q pad_mask=None):
p_loss = F.kl_div(F.log_softmax(p, dim=-
R-Drop是微软亚洲研究院与苏州大学提出的一种克服Dropout缺陷的正则化方法,它作用于模型输出层,通过KL-divergence约束不同Dropout配置下的输出一致性,解决了训练与测试的不一致问题。与传统方法相比,R-Drop仅增加了一个KL-divergence损失项,实现简单。
订阅专栏 解锁全文
154

被折叠的 条评论
为什么被折叠?



