漳州市网站建设价格,3g医院网站模板,dedecms告侵权,深圳影视广告哪里有提供文 | 小昌编 | 小戏大家好#xff0c;我是小昌#xff0c;今天和大家聊一聊如何从 BERT 中获取好的句子表征。大家都知道#xff0c;BERT 的设计初衷是为了获得更好的单词表征。但是#xff0c;利用 BERT 来表征句子的需求无论在学术界还是工业界都是非常紧迫的。因此… 文 | 小昌编 | 小戏大家好我是小昌今天和大家聊一聊如何从 BERT 中获取好的句子表征。大家都知道BERT 的设计初衷是为了获得更好的单词表征。但是利用 BERT 来表征句子的需求无论在学术界还是工业界都是非常紧迫的。因此当下有许多方法被研究者们提出来去利用 BERT 来获取更好的句子表征。最直接的就是对句子中的每一个单词的表征相加求均值。而今天带来的这篇文章则是利用了对比学习使得只使用 BERT 中的标识来表征输入的整个句子也能有很好的效果。与普通对比学习需要大量的额外数据作为训练目标的前提不同该篇文章将对比学习的目标转换成了一种无监督的模式。因此这种方法便不再需要额外的数据确实又省力效果又好这篇文章就是《 Self-Guided Contrastive Learning for BERT Sentence Representations 》论文题目Self-Guided Contrastive Learning for BERT Sentence Representations论文链接https://arxiv.org/pdf/2106.07345.pdfArxiv访问慢的小伙伴也可以在 【夕小瑶的卖萌屋】订阅号后台回复关键词 【0720】 下载论文PDF~1. 问题定义和设计思路从 BERT 中获取句子表征的方法有很多种但是都不够完美。在有监督任务中BERT 最后一层预定义的表征便可以被用来作为整个句子的表征。原因在于表征常被用作下游任务的输入在充分训练后能够更好地捕捉整句的信息。而在无监督任务中通过来表征句子的能力仿佛失效了[1]取而代之的做法便是将句子输入 BERT并对每个单词最后一层的表征进行均值池化操作。然而这样的方法经过作者的验证是非常不稳定的。因此作者尝试利用对比学习的方式提出一种自引导机制来解决无监督任务中BERT的句子表征问题。其核心在于将 BERT 的中间隐层用好使得中间隐层的表征应该和最终句子的表征比较相似BERT 的中间隐层应为句子表征的正例因此这也能够摆脱对比学习对于额外数据的需求。此外作者也重新调整了 NT-Xent 损失一种在计算机视觉运用广泛的属于对比学习任务的损失使得最后的效果进一步提高。除了作者通过实验证明他们的算法效果较优外作者也表明其算法在不同领域任务中的表现也都更鲁棒。2. 具体方法为了获得高质量的向量来表征输入的句子作者提出了一种自引导的对比学习方法即利用 BERT 中间层的表征来作为对比学习的正例对象。这是因为 BERT 的中间层理论上也应该能够用来表征对应的句子那么中间层的表征和的表征的相似度应该很高。下面用图来进一步具体化说明作者如何设计该算法的。首先作者对 BERT 进行复制得到 BERTF参数固定和 BERTT参数可微调。BERTF 在训练过程中是参数固定的并起到提供指导训练的作用而 BERTT 则是在训练过程中需要被微调来生成句子表征的。作者之所以在这里区分二者是希望在训练过程中训练信号 BERTF 的效果能够始终保持。否则特别是当 BERTF 和 BERTT 在参数相同的时候BERTF 的指导效果便会失效。此外这里也体现了作者希望通过充分利用 BERT 本身不同层的知识来生成句子表征的思想。随后当给定一个包含 条句子的训练数据 时 作者把句子 送入到 BERTF 中便能得到 中每一个token在BERT中每一层的表征此处 是 BERT 的层数。其中的每一个 是整个句子中包含的 token 数而 则是 BERT 的隐层表征的维度。在获得了输入句子在 BERT 中每一层的表征后作者使用了一个池化方法 对句子中每一层的表征 映射到 从矩阵变为向量)来生成一个句子在 BERT 不同层中的表征。随后作者再使用了一个采样方法 从句子的 层表征中采样出一个最终的向量表征 。在此作者只是使用了一个最大化池化和均匀采样并表明在此选择均匀采样是认为每一层的表征其实都有其重要性因为 BERT 不同的层捕获了句子不同的语言学特征。2.1 模型损失设计之后作者从 BERTT 获得了句子 的表征并认为表征是 的正样本。将和 放入到一个集合中便可得到 。而对于所有的 作者则使用 NT-Xent 损失来训练句子的表征。NT-Xent 损失来自于 SIMCLR[2]并被广泛地应用在计算机视觉任务中其本身是希望选定的样本表征和为该样本增强的正例之间的表征能够更加接近而选定的样本表征和负例的表征之间距离越远。在本论文中作者则选用作为从中间层得到的句子表征的正例而一批中的其他句子的表征以及其他句子从中间层获得的句子表征都为负例。具体的公式如下: 在此是一个温度超变量 在此是一个由多层感知机构成的映射参数是余弦相似度函数而其中重要的匹配函数 是用来选取正例的方式如下图所示简单分析一下如果希望该损失降低那么 的部分就要变大。其中 与 的相似度越高那么分子也就越大 或者 与其它句子的表征 , 之间的差距越大分母也就越小那么它们的比值也就越大。此外作者也添加了一个正则化项 来保证 BERTF参数固定的和 BERTT参数可微调的)之间没有太大的差距。因此便组成了最终的损失函数2.2 模型损失优化总结一下在上述方法中每个句子会得到和中间隐层表征这两种表征彼此之间的损失计算可以如下图所示。在关系1中反应的是作者的核心设定即一个句子从 BERT 中得到的表征()应该和中间层构成的表征 越接近越好。而其它的关系包括(2)(3)图中的黄色对角线以及4之间应该是距离越大越好。但是作者发现这其中的损失并不是都同等重要。因为作者的目标是提升 的表征因此其选择放弃关系4。此外作者也发现关系2对提升表现也没有作用因而也一并放弃。因此只考虑选定句子两个表征 和 之间的相似度以及选定的句子的 表征和别的句子的 表征之间的差异度便可得到如下图所示的损失为了多样化关系1,3带来的损失作者允许句子的中间层的每一层表征 也能被加入到损失中去提供句子多维度的表征即用 来替换上式的 即获得损失 如下图所示并且在该损失后加上正则化就是最终的损失了。3. 实验结果和敏感度分析针对 BERT 模型的选择作者在英文数据集上使用了 BERT对于多语言的数据集则使用了 MBERT(multilingual-BERT)。此外也尝试了 RoBERTa 和 SBERT 来评估方法的泛化能力。为了避免随机性作者对需要训练的实验都是进行 8 次的独立实验求均值来减小误差而模型的超参数择是使用 BERT-base 在 STS-B 的验证集上优化得到。3.1 语义相似度任务在该任务上作者选用 STSSemantic Textual Similarity 任务来评估提出的算法。作者通过衡量句子对表征之间的相似度来衡量模型的优劣。在此选用的数据集包括 STS-BSICK-R 等等这些数据集包含成对的句子句子之间的相似度从 0 到 5 分进行打分。作者利用皮尔森系数来衡量真实的标签和表征相似度之间的关联性来评判模型的效果。而对比的基准任务非 BERT 类的包括 GloveUSE 等等。而 BERT 类的则只考虑在无监督下就能得到句子表征的模型包括 BERT 的表征均值池化WK 池化FlowConstrastiveBT等而作者提出的方法则为 Constrastive(SG) 和 Constrastive(SG-OPT)分别是使用了 和 损失实验结果如下图所示。从图中可以发现作者提出的方法在大多数情况下都能够取得更好的效果。而使用优化后的损失函数取得的效果比采用未优化的损失要更好。在这当中反常的是 WK 池化的方法居然在大多数情况下效果比均值池化的效果更差。3.2 多语言相似度任务除上述英文数据的实验外作者也将 STS 任务扩充到多语言的 STS 任务。作者通过使用 MBERTMultilingual BERT 作为编码器在 STS-B 的英语数据上训练后在 SemEval-2014 任务西班牙语以及 SemEval-2017 任务1阿拉伯语西班牙语和英语上做测试也都取得了较好的结果证明了作者提出的设计让模型有很好的泛化能力在此不赘述。3.3 SentEval 和有监督微调下的表现除上述无监督的学习外作者也使用了 SentEval toolkit 来衡量表征的能力。SentEval toolkit 将句子的表征作为输入利用线性分类器去做下游任务通过下游任务中分类器的表现来评估输入句子的表征质量。并得到下图所示的实验结果通过实验发现基于作者提出的自引导对比学习方法对于 BERT 的微调带来的提升大于对 SBERT 调整带来的优化。而作者也尝试用它们的算法设计去微调有监督学习下的 BERT发现并没有影响 BERT 有监督微调的效果。个人猜测作者可能是希望说明其所提出的方法对于表征的改进和有监督学习下对表征的改进是互相独立的以后既使用有监督又加上这无监督的额外训练可能有更鲁棒的效果。4. 算法分析从下图消融实验中可以发现对于 NT-Xent 损失的所有更改都会带来表现上的提升。同时作者表明对于超参数和映射函数的选择对模型最终的效果也非常重要。为了探究算法对来自不同领域输入数据的鲁棒性作者将 NLI 数据集进行混合后来观察模型的效果最后得到的结果是相比于通过 FLOW 得到的表征通过 SG-OPT 得到的表征始终要好更多在此也不在赘述。但是作者也坦言 NLI 数据集和 STS 任务中存在着一些相似性后续仍然需要在更多的情况下去验证。而对于计算效率来说SG-OPT 的训练时间为 7.5 分钟慢于 FLOW 方法的 2.6 分钟但是在推理上只需要使用10.51秒快于其它方法。这是因为 SG-OPT 方法一旦训练完成后就能被使用而不像别的池化方法还需要额外的操作。最后作者也对表征进行了可视化操作。首先从 STS-B 数据集中采样出 20 个正样例对相似度打分为 5 的数据对为红色以及 20 个负样例对相似度打分为 0并用 t-SNE 方法将向量降维到二维空间中。从图中可见作者提出的 SG-OPT 使得语义相似的句子的表征更加接近而原生的 BERT 的表征便不能很好地捕捉到句子之间的相似度。除了对实验的正面分析作者也坦言自己的方法存在一些不足。例如并没有考虑到算法可以做的更简单例如只使用 BERT 的部分中间层而不是像现在这样使用所有的中间层以及一些额外的对比学习技巧来提升 BERT 的效果。5. 小结作者提出了一种在无监督场景下利用 BERT 中间层的信息结合对比学习的方法使得 BERT 自带的表征能够更好地捕捉输入句子的算法。作者在无监督、有监督的场景下验证了其算法的有效性并通过消融实验说明损失设计的作用最后通过向量可视化直观地展示了算法的效果。最后个人感觉这篇论文的实用性是很强的不需要额外的数据就能用 BERT 做对比学习省去了获取增强数据的成本。此外这种强调利用 BERT 本身中间层的思想可能在别的任务上也能起到一定的作用给人带来了一些启发寻求报道、约稿、文案投放添加微信xixiaoyao-1备注“商务合作”后台回复关键词【入群】加入卖萌屋NLP/IR/Rec与求职讨论群后台回复关键词【顶会】获取ACL、CIKM等各大顶会论文集 [1].Nils Reimers and Iryna Gurevych. 2019. Sentence- BERT: Sentence embeddings using Siamese BERT- networks.[C]. In EMNLP-IJCNLP.[2].Chen T, Kornblith S, Norouzi M, et al. A simple framework for contrastive learning of visual representations[C]. In ICML. PMLR, 2020: 1597-1607.