Navigation

    Gpushare.com

    • Register
    • Login
    • Search
    • Popular
    • Categories
    • Recent
    • Tags

    跨语言对比学习【EMNLP 2021】

    语音识别与语义处理领域
    1
    1
    65
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • 155****7220
      155****7220 last edited by Alice_恒源云

      猿辅导在EMNLP2021上的一篇论文Aligning Cross-lingual Sentence Representations with Dual Momentum Contrast提出基于双Momentum网络的对比学习方法。对比学习最近非常火,尤其是以SimCES为首所提出的利用Dropout作为正样本的无监督学习方法。猿辅导的这篇论文和SimCES却不一样,它主要是从网络整体架构入手,基于Momentum网络提出了一种有监督的跨语言句子相似度计算方法

      Dual Momentum Contrast

      Momentum本意是动量,但是直接翻译过来感觉有些别扭,因此这里就直接用英文表述了。这里简要概述一下Momentum网络结构,如下图所示,它由两个Encoder组成,这两个Encoder网络的结构相同,参数不同

      对于图像任务来说,xqx^{q}xq代表一张图片,xkx^{k}xk代表多张图片集合(包括图片xqx^qxq),其中xkx^kxk中除了xqx^qxq以外的图片,对于xqx^qxq来说都是负样本。qqq为xqx^qxq经过encoder网络后的向量,kkk为经过Momentum encoder网络后的多个向量

      回到原论文,给定一个跨语言平行句子集xi,yii=1n{x_i,y_i}_{i=1}^nxi​,yi​i=1n​,对于每种语言的句子,分别用特定语言的BERT模型去编码,提取最后一行所有token输出均值的L2L_2L2​正则化作为句向量hxi,hyi∈R768h_{x_i},h_{y_i}\in \mathbb{R}^{768}hxi​​,hyi​​∈R768

      这里有一个很巧妙的点在于,两个经过L2L_2L2​正则化后的向量hxi,hxjh_{x_i},h_{x_j}hxi​​,hxj​​进行点积的结果,就是这两个向量的余弦相似度,因为L2L_2L2​正则化帮我们对每个向量除以了分母的平方和

      论文设计的网络结构图如下所示,其中sgsgsg表示"stop gradient",即不反向传播;xxx和yyy是来自两个不同语言的句子

      每一种语言的BERT都有一个参数为θ\boldsymbol{\theta}θ的Momentum encoder,可以理解为原BERT的复制,只不过复制的是结构而不是参数,这些Momentum encoder不通过反向传播更新参数,他们的参数更新公式为
      cb8ca410-32a6-4ae5-b677-26a975f15a06-image.png
      每种语言都有两个存储队列(Memory queues),用于存储最近几批中由相应Momentum encoder编码的KKK个向量。在每个优化步骤中,最老的那批向量会被替换为当前batch的向量。Momentum系数m∈[0,1]m\in [0,1]m∈[0,1],通常大家设置的值非常接近1(例如0.999)。KKK一般设置的非常大(>10510^5105),以确保有足够的负样本使模型学习。作者采用InfoNCE Loss作为目标函数
      1899b4dd-c330-405c-a449-d69156bfee1c-image.png
      τ\tauτ是一个超参数,至于它的作用可以看我的这篇文章:Contrastive Loss中参数τ的理解。实际上式(2)是一个K+1K+1K+1的Softmax分类,其中,xxx的平行语料即正样本为y=y0y=y_0y=y0​,所有的负样本yii=1K{y_i}_{i=1}^Kyi​i=1K​都在存储队列中

      对称地,我们可以定义L(y,x)\mathcal{L}(y,x)L(y,x),因此最终我们的目标是
      23333468-7022-4317-9efe-754627efe7cd-image.png
      训练结束后,我们直接丢弃Momentum encoders,只保留两个BERT分别提取两种语言句子的向量

      虽然作者提出的方法以及后续实验都是基于跨语言的,但实际上针对同语言也是适用的,例如给定一个同语言的句子对(xi,xj)(x_i,x_j)(xi​,xj​),设句子yjy_jyj​是由句子xjx_jxj​翻译得到的,如果模型训练得比较好,那么对于句子xjx_jxj​和yjy_jyj​的向量表示应该有
      c2454079-61d9-4574-9151-2862ef6871f7-image.png
      两边同时点乘hxi\mathbf{h}_{x_i}hxi​​得
      fcfc602a-bb64-4fd3-955d-0ebcce77132c-image.png
      后者是跨语言的句子相似度,这正是我们模型所明确优化的

      个人总结

      实验效果非常好,大幅超越了BERT-Whitening以及BERT-flow,不过这里我就懒得放结果图了,因为我没有在论文中看到他们的源码地址

      1 Reply Last reply Reply Quote 2
      • Referenced by  Alice_恒源云 Alice_恒源云 
      • Referenced by  Alice_恒源云 Alice_恒源云 
      • Referenced by  Alice_恒源云 Alice_恒源云 
      • First post
        Last post