| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 文本表达论文-sentence embedding -> 正文阅读 |
|
[人工智能]文本表达论文-sentence embedding |
文章目录1. BERT-avgBERT-avg做法很简单,直接拿预训练后的模型来做相似度匹配,因为默认经过预训练后的模型含有先验知识,能够编码句子的语义 假如不经过fine-tuning,那就不能单纯把它们拼接起来作为输入,而是两个句子要分别输入BERT模型,通过词向量间接的获取句子向量,从而计算相似度,具体做法是:
2. sentence BERT论文:Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks-EMNLP 2019 BERT判断两个句子语义是否相似,需要将两个句子拼起来传入到model里,不适合多句子相似度判断。如果从句子数量为n的集合中,找出最近似的两个句子,则需要
n
(
n
?
1
)
2
\frac{n(n-1)}{2}
2n(n?1)?次比较,并且每次比较均需要传入到BERT模型中进行计算,开销非常大。 SBERT模型采用三种pooling策略:CLS、MEAN、MAX,默认SBERT采用MEAN pooling 2.1 目标函数构建sentence bert的结构如图2.1所示,并使用了如下几种目标函数:
o = softmax ? ( W t ( u , v , ∣ u ? v ∣ ) ) o=\operatorname{softmax}\left(W_{t}(u, v,|u-v|)\right) o=softmax(Wt?(u,v,∣u?v∣)) 其中:n表示句子向量的维度,k表示标签的个数,通过交叉熵损失进行优化
max ? ( ∥ s a ? s p ∥ ? ∥ s a ? s n ∥ + ? , 0 ) \max \left(\left\|s_{a}-s_{p}\right\|-\left\|s_{a}-s_{n}\right\|+\epsilon, 0\right) max(∥sa??sp?∥?∥sa??sn?∥+?,0) 其中, s x s_x sx?表示x的embedding, ? \epsilon ?参数的目的是为了保证 s p s_p sp?到 s a s_a sa?的距离至少比 s a s_a sa?到 s n s_n sn?的距离近 ? \epsilon ?,在实验中,使用欧式距离并设置? = 1 3. BERT-FLOW论文:On the Sentence Embeddings from Pre-trained Language Models 直接使用bert获取句向量的缺点 论文1和论文2证明了 transformer 模型出来的向量表达(如 BERT、GPT2)会产生各向异性,具体表现是向量分布不均匀,低频词分布稀疏距离原点较远,高频词分布紧密,距离原点较近,如图1所示。 向量值受句子中词在所有训练语料里的词频影响,导致高频词编码的句向量距离更近,更集中在原点附近,导致即使一个高频词和一个低频词的语义是等价的,但词频的差异也会带来很大的距离偏差,从而词向量的距离就不能很好地代表语义相关性,和人判断句子的语义不受词频影响也不符合。 On the Sentence Embeddings from Pre-trained Language Models论文也通过试验验证了上述问题: 文中通过度量BERT词向量表示与原点
l
2
l_2
l2? 距离的均值得到下表 文中度量了词向量空间中与K近邻单词的
l
2
l_2
l2? 距离的均值。我们可以看到高频词分布更集中,而低频词分布则偏向稀疏。 针对以上问题,作者提出了一种将BERT embedding空间映射到一个标准高斯隐空间的方法,并称之为BERT-flow BERT-flow 采用一种流式可逆变换: 那么根据概率密度函数的变量代换定理,
u
u
u的概率密度函数: 最后的优化目标是最大化
p
U
p_{\mathcal{U}}
pU? 4. 带白化处理的BERT-whitening论文:Whitening Sentence Representations for Better Semantics and Faster Retrieval 基本思想与BERT-FLOW相同,将BERT embedding空间映射到一个标准高斯隐空间。但是BERT-FLOW的flow模型较为复杂,该论文提出使用线性变换即可实现flow模型的效果。 标准正态分布的均值是
μ
=
0
\mu=0
μ=0,协方差矩阵为单位矩阵,那么我们的目标就是把句向量的均值变换为
μ
=
0
\mu=0
μ=0,协方差矩阵变换为单位矩阵。假设行向量集合为
{
x
i
}
i
=
1
N
\{x_i\}_{i=1}^{N}
{xi?}i=1N?,执行以下变换: 从而使得 { x ~ i } i = 1 N \left\{\tilde{\boldsymbol{x}}_{i}\right\}_{i=1}^{N} {x~i?}i=1N?的均值为 μ \mu μ,协方差矩阵为单位阵 均值 μ \mu μ求法比较简单 μ = 1 N ∑ i = 1 N x i \boldsymbol{\mu}=\frac{1}{N} \sum_{i=1}^{N} \boldsymbol{x}_{i} μ=N1?∑i=1N?xi?。下面重点介绍 W W W矩阵的求解: 将原始数据的协方差矩阵记为 Σ = 1 N ∑ i = 1 N ( x i ? μ ) ? ( x i ? μ ) \mathbf{\Sigma} =\frac{1}{N} \sum_{i=1}^{N}\left(\boldsymbol{x}_{i}-\boldsymbol{\mu}\right)^{\top}\left(\boldsymbol{x}_{i}-\boldsymbol{\mu}\right) Σ=N1?i=1∑N?(xi??μ)?(xi??μ) 变换后的数据协方差矩阵为 Σ ~ = 1 N ∑ i = 1 N ( x ~ i ? μ ~ ) ? ( x ~ i ? μ ~ ) = 1 N ∑ i = 1 N x ~ i ? x ~ i = W ? Σ W \mathbf{\tilde\Sigma} =\frac{1}{N} \sum_{i=1}^{N}\left(\tilde\boldsymbol{x}_{i}-\boldsymbol{\tilde\mu}\right)^{\top}\left(\tilde\boldsymbol{x}_{i}-\boldsymbol{\tilde\mu}\right) =\frac{1}{N} \sum_{i=1}^{N} \tilde\boldsymbol{x}_{i}^{\top} \tilde\boldsymbol{x}_{i} =\boldsymbol{W}^{\top} \boldsymbol{\Sigma} \boldsymbol{W} Σ~=N1?i=1∑N?(x~i??μ~?)?(x~i??μ~?)=N1?i=1∑N?x~i??x~i?=W?ΣW 那么,实际上要解方程 W ? Σ W = I ? Σ = ( W ? ) ? 1 W ? 1 = ( W ? 1 ) ? W ? 1 \boldsymbol{W}^{\top} \boldsymbol{\Sigma} \boldsymbol{W}=\boldsymbol{I} \quad \Rightarrow \quad \boldsymbol{\Sigma}=\left(\boldsymbol{W}^{\top}\right)^{-1} \boldsymbol{W}^{-1}=\left(\boldsymbol{W}^{-1}\right)^{\top} \boldsymbol{W}^{-1} W?ΣW=I?Σ=(W?)?1W?1=(W?1)?W?1 协方差矩阵 ∑ \sum ∑是一个半正定对称矩阵,半正定对称矩阵都具有如下形式的SVD分解 Σ = U Λ U ? \boldsymbol{\Sigma}=\boldsymbol{U} \boldsymbol{\Lambda} \boldsymbol{U}^{\top} Σ=UΛU? 其中 U U U是一个正交矩阵,而 Λ \Lambda Λ是一个对角阵,并且对角线元素都是正的,因此可以求得: W = U Λ ? 1 \boldsymbol{W}=\boldsymbol{U} \sqrt{\mathbf{\Lambda}^{-1}} W=UΛ?1? 算法流程如下: 试验结果如下: 5. 对比学习的SimCSE论文: SimCSE: Simple Contrastive Learning of Sentence Embeddings SimCSE的核心思想是对比学习,上面提到的BERT-avg和BERT-whitening都是无监督的方法,这里提到的SimCSE有无监督和有监督两种模式,其中的无监督模式是当前无监督的SOTA方法。 什么是对比学习? ? i = ? log ? e sim ? ( h i , h i + ) / τ ∑ j = 1 N e sim ? ( h i , h j + ) / τ \ell_{i}=-\log \frac{e^{\operatorname{sim}\left(\mathbf{h}_{i}, \mathbf{h}_{i}^{+}\right) / \tau}}{\sum_{j=1}^{N} e^{\operatorname{sim}\left(\mathbf{h}_{i}, \mathbf{h}_{j}^{+}\right) / \tau}} ?i?=?log∑j=1N?esim(hi?,hj+?)/τesim(hi?,hi+?)/τ? 其中, sim ? ( h 1 , h 2 ) = h 1 T h 2 ∥ h 1 ∥ ? ∥ h 2 ∥ \operatorname{sim}\left(\mathbf{h}_{1}, \mathbf{h}_{2}\right)=\frac{\mathbf{h}_{1}^{T} \mathbf{h}_{2}}{\left\|\mathbf{h}_{1}\right\| \cdot\left\|\mathbf{h}_{2}\right\|} sim(h1?,h2?)=∥h1?∥?∥h2?∥h1T?h2??, h i h_i hi?和 h i + h_i^{+} hi+?是 x i x_i xi?和 x i + x_i^{+} xi+?的编码表示, τ \tau τ为softmax的温度超参。 5.1 构造正实例使用对比损失最关键的问题是如何构造 ( x i , x i + ) (x_i, x_i^{+}) (xi?,xi+?),对比学习最早起源于CV领域的原因之一就是图像的 x i x_i xi?非常容易构造,裁剪、翻转、扭曲和旋转都不影响人对图像语义的理解,而结构高度离散的自然语言则很难构造语义一致的 x i + x_i^{+} xi+?,前人采用了一些数据增强方法来构造 x i + x_i^{+} xi+?,比如同义词替换,删除不重要的单词,语序重排等,但这些方法都是离散的操作,很难把控,容易引入负面噪声,模型也很难通过对比学习的方式从这样的样本中捕捉到语义信息,性能提升有限。 5.2 对比学习评价指标对比学习的目标是从数据中学习到一个优质的语义表示空间,衡量对比学习质量有两个指标:alignment 和 uniformity
? align? ? E ( x , x + ) ~ p pos? ∥ f ( x ) ? f ( x + ) ∥ 2 \ell_{\text {align }} \triangleq \underset{\left(x, x^{+}\right) \sim p_{\text {pos }}}{\mathbb{E}}\left\|f(x)-f\left(x^{+}\right)\right\|^{2} ?align???(x,x+)~ppos??E?∥∥?f(x)?f(x+)∥∥?2
? uniform? ? log ? E x , y ~ P d a t a e ? 2 ∥ f ( x ) ? f ( y ) ∥ 2 \ell_{\text {uniform }} \triangleq \log \underset{x, y \sim Pdata}{\mathbb{E}} \quad e^{-2\|f(x)-f(y)\|^{2}} ?uniform???logx,y~PdataE?e?2∥f(x)?f(y)∥2 我们希望这两个指标都尽可能低,也就是一方面希望正样本要挨得足够近,另一方面语义向量要尽可能地均匀分布在超球面上,因为均匀分布信息熵最高,分布越均匀则保留的信息越多,“拉近正样本,推开负样本”实际上就是在优化这两个指标。 5.3 Unsupervised SimCSE将一个句子输入 encoder 两次,由于 bert encoder 是一个随机 dropout mask encoder,因此输入一个句子两次会得到两个不同的 embedding,产生的这两个 embedding 作为训练中相互对比的正样本,同一个 batch 中其他句子产生的 embedding 则作为负样本,以此来构造一个对比学习的无监督训练。那么训练目标为: ? i = ? log ? e sim ? ( h i z i , h i z i ′ ) / τ ∑ j = 1 N e sim ? ( h i z i , h j z j ′ ) / τ \ell_{i}=-\log \frac{e^{\operatorname{sim}\left(\mathbf{h}_{i}^{z_{i}}, \mathbf{h}_{i}^{z_{i}^{'}}\right) / \tau}}{\sum_{j=1}^{N} e^{\operatorname{sim}\left(\mathbf{h}_{i}^{z_{i}}, \mathbf{h}_{j}^{z_{j}^{'}}\right) / \tau}} ?i?=?log∑j=1N?esim(hizi??,hjzj′??)/τesim(hizi??,hizi′??)/τ? 原样本和生成的正样本的语义是完全一致,只是生成的embedding不同 5.4 Supervised SimCSE使用了NLI 数据集 l i = ? log ? e sim ? ( h i , h i + ) / τ ∑ j = 1 N ( e sim ? ( h i , h j + ) / τ + e sim ? ( h i , h j ? ) / τ ) l_i = -\log \frac{e^{\operatorname{sim}\left(\mathbf{h}_{i}, \mathbf{h}_{i}^{+}\right) / \tau}}{\sum_{j=1}^{N}\left(e^{\operatorname{sim}\left(\mathbf{h}_{i}, \mathbf{h}_{j}^{+}\right) / \tau}+e^{\operatorname{sim}\left(\mathbf{h}_{i}, \mathbf{h}_{j}^{-}\right) / \tau}\right)} li?=?log∑j=1N?(esim(hi?,hj+?)/τ+esim(hi?,hj??)/τ)esim(hi?,hi+?)/τ? 5.5 对比学习也可解决各向异性当负样本数量趋于无穷大时,对比学习的训练目标可以渐近表示为: ? 1 τ E ( x , x + ) ~ p p o s [ f ( x ) ? f ( x + ) ] + E x ~ p d a t a [ log ? E x ? ~ p d a t a [ e f ( x ) ? f ( x ? ) / τ ] ] -\frac{1}{\tau} \underset{\left(x, x^{+}\right) \sim p_{\mathrm{pos}}}{\mathbb{E}}\left[f(x)^{\top} f\left(x^{+}\right)\right]+\underset{x \sim p_{\mathrm{data}}}{\mathbb{E}}\left[\log \underset{x^{-} \sim p_{\mathrm{data}}}{\mathbb{E}}\left[e^{f(x)^{\top} f\left(x^{-}\right) / \tau}\right]\right] ?τ1?(x,x+)~ppos?E?[f(x)?f(x+)]+x~pdata?E?[logx?~pdata?E?[ef(x)?f(x?)/τ]] 其中第一项表示拉近正样本,第二项表示推开负样本 借助Jensen不等式进一步推导第二项的下界 E x ~ p data? [ log ? x ? ~ p data? [ e f ( x ) ? f ( x ? ) / τ ] ] = 1 m ∑ i = 1 m log ? ( 1 m ∑ j = 1 m e h i ? h j / τ ) ≥ 1 τ m 2 ∑ i = 1 m ∑ j = 1 m h i ? h j = s u m ( W T W ) \begin{aligned} \underset{x \sim p_{\text {data }}}{\mathbb{E}}\left[\log _{x^{-} \sim p_{\text {data }}}\left[e^{f(x)^{\top} f\left(x^{-}\right) / \tau}\right]\right] &=\frac{1}{m} \sum_{i=1}^{m} \log \left(\frac{1}{m} \sum_{j=1}^{m} e^{\mathbf{h}_{i}^{\top} \mathbf{h}_{j} / \tau}\right) \\ & \geq \frac{1}{\tau m^{2}} \sum_{i=1}^{m} \sum_{j=1}^{m} \mathbf{h}_{i}^{\top} \mathbf{h}_{j}=sum(W^TW) \end{aligned} x~pdata??E?[logx?~pdata???[ef(x)?f(x?)/τ]]?=m1?i=1∑m?log(m1?j=1∑m?ehi??hj?/τ)≥τm21?i=1∑m?j=1∑m?hi??hj?=sum(WTW)? 根据Merikoski (1984)的结论, s u m ( W T W ) sum(W^TW) sum(WTW)是 W T W W^TW WTW最大特征值的上界,因此,当我们最小化损失的第二项时,我们其实是在间接最小化 W T W W^TW WTW的最大特征值,也就是隐式地压平了嵌入空间的奇异谱 对比学习可以潜在地解决表示退化的问题,提升表示向量分布的uniformity,之前的BERT-flow和BERT-whitening仅仅致力于寻找各向同性的表示分布,而在优化对比损失时,对比损失的第二项能够达到同样的规整分布的效果,同时,对比损失的第一项还能确保正样本的对齐,这两项起到了相互制约和促进的作用,最终使得SimCSE在BERT和BERT-flow之间找到了平衡点 5.6 试验结果使用bert的cls向量作为句子向量 如图所示,可以发现性能更优的模型通常有着更好的alignment和uniformity,BERT虽然有很好的alignment,但uniformity太差,而基于后处理的BERT-flow和BERT-whitening又恰恰走向了另一个极端,本文提出的SimCSE则是对这两个指标的一个很好的平衡,加入监督训练后,SimCSE的两个指标会同时提升 5.7 论文中的一些细节无监督训练时,除了用dropout生成语义相同的句子对,论文里还采用过:
最后发现dropout效果是最好 6. 参考[1]. align&uniform: Understanding Contrastive Representation Learning through Alignment and Uniformity on the Hypersphere |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 2:28:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |