论文阅读“miCSE: Mutual Information C

2023-07-22  本文已影响0人  掉了西红柿皮_Kee

Klein T, Nabi M. miCSE: Mutual Information Contrastive Learning for Low-shot Sentence Embeddings[J]. arXiv preprint arXiv:2211.04928, 2022.

摘要导读

本文提出了一个基于互信息的对比学习框架miCSE,显著地提高了在少量句子嵌入方面的先进水平。该方法在对比学习过程中调整了不同视图之间的注意力模式。通过miCSE学习句子嵌入需要加强每个句子的增强视图的结构一致性,使对比自监督学习提高了效率。因此,在小样本领域该方法取得了很好的效果,在全样本的场景下依旧适用。

本文的贡献如下:

方法浅析

该方法旨在在对比学习的方案中利用到句子结构信息。与传统的仅在嵌入空间中的语义相似度水平上进行操作的对比学习相比,该方法在模型中注入了结构信息。这是通过在训练过程中正则化模型的注意力空间来实现的。

符号声明

给定字符串语料库\mathcal{X},其对应的数据集表示为\mathcal{D}=\{x_1, x_2, \cdots,x_{|X|}\}x_i \in \mathbb{N}^n表示含有n个token的序列。在对句子映射时,本文采用的是bi-encoder--f_{\theta},其输入是输入句子的不同类型的增强表示。这里使用v \in \{1,2\}作为增强视图表示的索引值。因此,对batch_size为\mathcal{D}_b进行编码,会得到嵌入矩阵E_v \in \mathbb{R}^{|{\mathbb{D}_b}|\times U}U是嵌入表示的维度。使用Transformer的话,对应于E_v产生的还有其相关联的注意力矩阵W_v。因此,提出的模型联合优化如下损失,以达到对语义和结构的一致性学习:

显然,损失函数中的第一项是语义的对齐,在嵌入表示空间中使用传统的InfoNCE来实现;第二项是在注意力空间中对句法的对齐,不同的是,句法的对齐仅关注正例。
Embedding-level Momentum-Contrastive Learning (InfoNCE)

InfoNCE loss试图在嵌入空间中将正例对拉在一起,同时将负例对分开。具体来说,嵌入的InfoNCE推动每个样本以及相应的增强嵌入表示之间的相似性。对应的损失函数如下:

其中e_i \in E_1+e_i \in E_2分别是对应于x_i的两种不同的嵌入表示。d(x, y)=\text{exp}(sim(x, y)/\tau)sim(\cdot)为余弦相似度。显然,负例的构成包含两种形式:(1)给定batch中除了当前样本之外的样本;(2)存储在\mathcal{Q}中的前序batch中的嵌入表示(这是动量编码器中扩充负样本的常用操作)。
Attention-level Mutual Information (AMI)

首先关于Transformer中的注意力机制的详情这里不再进行赘述。只需要知道在每个注意力头中包含三个矩阵Q,K,V,其中Q,K进行运算会得到注意力权重矩阵W=softmax(f(Q,K)) \in \mathbb{R}^{n \times n},其中f(\cdot)表示缩放点积。最终注意力头的输出为WV。当然在实际的应用中为了得到不同的嵌入子空间,一般会将该注意力操作重复H次,被称为多头注意力机制。在训练编码器的过程中,自注意力张量 W的值会受到随机确定性过程的影响,这种随机性由dropout操作产生。因此,基于结构信息的对齐,则是要最大化W_v=[w_1, w_2, \cdots, w_{|{\mathcal{D}}_b|}]之间的互信息。本文通过四个步骤来正则化注意力空间。

相关实验设置

(1) InfoNCE中另一种负例的设置:The momentum encoder is associated with a sample queue of size |Q| = 384.
(2)切分中,关于切分个数以及采样个数的设置:From each of the (4 × (H/2)) chunks of pooled attentions, we random sample 150 joint-attention pairs for each embedding of the bi-encoder.

实验设置中关于切分的部分,看上去是将层数L每4个分为一组,而在注意力头数H上则是被分为了两组。


想法真的是很出彩,一般来说,大家都考虑引入额外的网络结构通过语义的嵌入表示来获取结构信息以达到语义和结构的一致性。本文作者利用自注意力计算中的中间步骤作为结构信息从而在不增加额外网络结构的情况下使得PLMs引入了结构信息。

但也会存在一定的疑问,为什么一定要进行切分?直接对每个头每个层的注意力权重进行对比不是更加方便吗?除了减少计算量,是否还有别的说法?如果是想让不同的Transformer和不同的Multi-head之间产生交互的话,采用滑动窗口的方式是不是更好?


上一篇 下一篇

猜你喜欢

热点阅读