r-drop本质上是一种有监督的数据增强方式SimCse本质上是一种无监督的数据增强方式对比学习标准流程：对比学习的标准流程是同一个样本通过不同的数据扩增手段得到的结果视为正样本对，而 batch 内的所有其他样本视为负样本，然后就是通过 loss 来缩小正样本的距离、拉大负样本的距离了。一、相关背景关注 NLP 新进展的读者，想必对2021年4月份发布的 SimCSE印象颇深，它通过简单的“Dropout 两次”来构造正样本进行对比学习，达到了无监督语义相似度任务的全面 SOTA。无独有偶，最近2021年6月份的论文《R-Drop: Regularized Dropout for Neural Networks》提出了 R-Drop，它将“Dropout两次”的思想用到了有监督任务中，每个实验结果几乎都取得了明显的提升。此外，笔者在自己的实验还发现，它在半监督任务上也能有不俗的表现论文标题：R-Drop: Regularized Dropout for Neural Networks论文链接：https://arxiv.org/abs/2106.14448代码链接：https://github.com/dropreg/R-Drop所以难度主要集中在数据扩增手段上。对于 NLP 来说，我们很难人工构建保证语义不变的数据扩增，所以 SimCSE 干脆不人工进行数据扩增，而是通过“Dropout 两次”的方式来得到同一个输入的不同特征向量，并将它们视为正样本对。奇怪的是，这个简单的“Dropout 两次”构造正样本，看上去是一种“无可奈何”的妥协选择，但消融实验却发现它几乎优于所有其他数据扩增方法，令人惊讶之余又让人感叹“大道至简”。在实现上，SimCSE 也相当简单，所谓“Dropout 两次”，只需要将样本重复地输入到模型，然后计算相应的 loss 就行了，如上图所示。由于 Dropout 本身的随机性，每个样本的 Dropout 模式都是不一样的，所以只要单纯地重复样本，就可以实现“Dropout 两次”的效果。二、算法结构从结果上来看，SimCSE 就是希望 Dropout对模型结果不会有太大影响，也就是模型输出对 Dropout 是鲁棒的。所以很明显，“Dropout 两次”这种思想是可以推广到一般任务的，这就是 R-Drop（Regularized Dropout）。1.损失函数损失函数由两部分组成：常规的交叉熵损失函数+KL散度约束的相对熵参考：https://mp.weixin.qq.com/s/IvhGbFEMotpKJIUPExUklg
一、定义各向异性(Anisotropic) 的概念在BERT-flow的文章中有明确的定义：(1)“Anisotropic” means word embeddings occupy a narrow cone in the vector space.翻译过来就是：“各向异性”表示词嵌入在向量空间中占据了一个狭窄的圆锥形体。但这个定义有点过于场景化，实际上各向异性的表现形式并不一定是锥形。[...]
一、背景这种结构使得 BERT 不适合语义相似度搜索，同样也不适合无监督任务，例如聚类解决聚类和语义搜索的一种常见方法是将每个句子映射到一个向量空间，使得语义相似的句子很接近[...]
背景句向量表征技术」一直都是NLP领域的热门话题，粗略来看分了几个时代：[...]