热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

【ICLR2022】TransEncoder:通过自蒸馏和相互蒸馏的无监督句对建模

自然语言处理和信息检索中的许多任务都涉及句子的成对比较——例如,句子相似性检测、释义识别、问答蕴涵和文本蕴涵。最准确的句子比较方法是所谓的cross-encodin

自然语言处理和信息检索中的许多任务都涉及句子的成对比较——例如,句子相似性检测、释义识别、问答蕴涵和文本蕴涵。

最准确的句子比较方法是所谓的cross-encoding,它在逐对的基础上将句子相互映射。然而,训练cross-encoders 器需要带标注的训练数据,收集这些数据是劳动成本很高。

我们如何为句子对任务训练完全无监督的模型,从而消除对数据标注的需求呢?

在今年的学习表示国际会议 ( ICLR ) 上,作者展示了一种无监督的句子对模型,我们称之为trans-encoder,它在句子相似度上比现有技术提高了 5%基准:

  • paper:https://arxiv.org/pdf/2109.13059v3.pdf
  • code :https://github.com/amzn/trans-encoder

两个编码器的故事

今天,句子对任务基本上有两种范式:cross-encoders 和 bi-encoders。两者之间的选择归结为计算效率和性能之间的标准权衡。
Cross-encoder (left) and bi-encoder (right).

cross-encoders。在cross-encoders 中,将两个序列连接起来并一次性发送到句子对模型,该模型通常构建在基于 Transformer 的语言模型(如BERT或RoBERTa )之上。Transformer 的注意力头可以直接建模一个序列的哪些元素与另一个序列的哪些元素相关,从而能够计算准确的分类/相关性分数。

然而,cross-encoders 需要为每对输入句子计算一个新的编码,从而导致高计算开销。因此,cross-encoders 对于信息检索和聚类等涉及大量成对句子比较的任务是不切实际的。此外,将预训练语言模型 (PLM) 转换为cross-encoders 总是需要对带标注的数据进行微调。

bi-encoders。相比之下,在bi-encoders 中,每个句子都被单独编码并映射到一个公共嵌入空间,在那里可以测量它们之间的距离。由于编码的句子可以被缓存和重用,bi-encoders 效率更高,并且bi-encoders 的输出可以现成的用作下游任务的句子嵌入。

也就是说,众所周知,在监督学习中,bi-encoders 的性能不如cross-encoders,因为它们没有明确地模拟句子之间的交互。

Trans-Encoder:两全其美

在我们的 ICLR 论文中,我们询问是否可以利用cross-encoders 和 bi-encoders的优势以无监督的方式引导一个准确的句子对模型。

Trans-Encoder——建立在以下直觉之上:作为起点,我们可以使用bi-encoders 表示来微调 cross-encoders。凭借其更强大的句间建模,cross-encoders 应该从 PLM 中提取更多的知识,而不是bi-encoders 可以给定相同的输入数据。反过来,更强大的cross-encoders 可以将其知识提炼回bi-encoders ,从而提高计算更实用模型的准确性。我们可以重复这个循环,从cross-encoders 和 bi-encoders 迭代地引导。

trans-encoder 训练过程,其中以无监督方式训练的 bi-encoder 为 cross-encoder 创建训练目标,cross-encoder 反过来输出bi-encoder 的训练目标。
具体来说,训练一个trans-encoder的过程如下:

步骤 1. 将 PLM 转换为有效的bi-encoder。 为了将现有的 PLM 转换为bi-encoder,我们利用了一个简单的对比调整程序。给定一个句子,我们使用两个不同的 PLM 对其进行两次编码。由于 dropout(一种标准技术,其中在每次通过训练数据期间随机丢弃一小部分神经网络节点,以防止出现瓶颈),两个 PLM 将产生略有不同的编码。

然后训练 bi-encoder 以最大化两个几乎相同的编码的相似性。这一步使 PLM进行更好的encoding。详细信息可以在之前的工作Mirror-BERT和SimCSE中找到(《文本匹配——【EMNLP 2021】SimCSE》)。

步骤 2. 自蒸馏:bi-encoder 到 cross-encoder。从第一步获得相当好的 bi-encoder 后,我们用它来创建 cross-encoder 的训练数据。具体来说,我们用 bi-encoder 计算的成对相似度分数标记句子对,并将它们用作构建在新 PLM 之上的 cross-encoder 的训练目标。

步骤 3. 自蒸馏:cross-encoder 到 bi-encoder。 下一步自然是将 cross-encoder 获得的额外知识提炼回 bi-encoder 形式,这对下游任务更有用。更重要的是,更好的 bi-encoder 可以产生更多的自标记数据来调整 cross-encoder。通过这种方式,我们可以重复第二步和第三步,不断优化编码器性能。

基准:句子相似度的最新技术

作者在七个句子文本相似性 (STS) 基准上对转编码器进行了实验。观察到在所有数据集上对以前的无监督句子对模型的显着提升。
句子文本相似度 (STS) 基准 STS 2012-2017、STS-B 和 SICK-R 上的 Trans-Encoder 性能。

损失函数的选择

令人惊讶的是,学生 bi-encoder 有时在“cross-encoder 到 bi-encoder”阶段优于其教师 cross-encoder。

作者认为这与观察到的“ cross-encoder 更容易过拟合”有关。由于 cross-encoder 是强大的函数逼近器,它们很容易过度拟合 bi-encoder 给出的伪分数并失去泛化能力,最终得到比 bi-encoder 更低的分数。这也是作者为 cross-encoder 和 bi-encoder 双蒸馏选择不同损失函数的原因。

损失函数的选择:保持师生差异是关键。直观地说,MSE 允许更准确的蒸馏,因为它会惩罚实例级别上预测分数和标签之间的任何数值差异。然而,在实践中,我们发现使用 MSE 进行 bi-to-cross 蒸馏会加剧 cross-encoder 的过拟合问题:cross-encoder 凭借其强大的句对建模能力,完全过拟合连接句对之间的映射和伪分数。这种消除模型预测和伪标签之间的差异会损害泛化,并且迭代学习周期无法继续(因为学生模型的预测分数将与教师模型相同)。因此,作者将 BCE 损失用于bi-encoder 向 cross-encoder,因为与 MSE 相比,BCE 是一个更宽容的损失函数。BCE 本质上是 MSE 的温度锐化版本,它更能容忍数值差异。这可以完全防止交叉编码器 cross-encoder 过度拟合伪标签。而与 cross-encoder 向 bi-encoder 蒸馏不存在类似的问题,两个输入序列分别编码,模型不容易过度拟合标签。

在设计模型时,我们对损失函数配置进行了全面的实验,发现在选择 cross-encoder 向 bi-encoder 和 bi-encoder 向 cross-encoder 蒸馏的学习目标时需要谨慎。如上所述,选择 MSE 进行 bi-to-cross 蒸馏会导致对伪分数的严重过拟合,而选择 BCE 进行 cross-to-bi 蒸馏无法使模型收敛。 因此,作者分别使用 BCE 和 MSE 进行 bi-to-cross 和 cross-to-bi 蒸馏的配置成为唯一可行的解​​决方案。


推荐阅读
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • navicat生成er图_实践案例丨ACL2020 KBQA 基于查询图生成回答多跳复杂问题
    摘要:目前复杂问题包括两种:含约束的问题和多跳关系问题。本文对ACL2020KBQA基于查询图生成的方法来回答多跳复杂问题这一论文工作进行了解读 ... [详细]
  • 干货 | 携程AI推理性能的自动化优化实践
    作者简介携程度假AI研发团队致力于为携程旅游事业部提供丰富的AI技术产品,其中性能优化组为AI模型提供全方位的优化方案,提升推理性能降低成本࿰ ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • 推荐 :以数据驱动的方式讲故事
    直觉vs数据首先,你有思考过一个问题吗?当你的直觉与你所掌握的数据矛盾的时候,你是听从于直觉还是相信你所掌握的数据呢?201 ... [详细]
  • 程度|也就是_论文精读:Neural Architecture Search without Training
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了论文精读:NeuralArchitectureSearchwithoutTraining相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)【下载本文PDF进行阅读】设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践。在经过多年的软件开发实践之后,回过头 ... [详细]
author-avatar
非洲小蘑菇bp
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有