苏神论文:https://arxiv.org/pdf/2103.15316.pdf
BERT-Whitening
? BERT虽然很成功,但是通过BERT来获取句子嵌入仍然是个问题。先前的研究认为BERT获取的句嵌入向量存在各向异性的问题,导致cosine相似度无法度量句子间的语义相似性。
BERT-Whiteing
\text{BERT-Whiteing}
BERT-Whiteing通过简单的白化操作,将嵌入向量转化为各向同性。
一、假设
? cosine相似度对于输入向量有什么假设?
? 给定两个向量
x
∈
R
d
x\in\mathbb{R}^d
x∈Rd和
y
∈
R
d
y\in\mathbb{R}^d
y∈Rd,这两个向量的cosine相似度为
cos(x,y)
=
∑
i
d
x
i
y
i
∑
i
d
x
i
2
∑
i
d
y
i
2
(1)
\text{cos(x,y)}=\frac{\sum_i^d x_iy_i}{\sqrt{\sum_i^d x_i^2}\sqrt{\sum_i^d y_i^2}} \tag{1}
cos(x,y)=∑id?xi2?
?∑id?yi2?
?∑id?xi?yi??(1) 等式(1)仅在标准正交基下才满足。但是,研究显示BERT中包含了充分的语义,只是无法通过cosine或者其他的度量方式进行语义相似度度量。那么一个合理的猜测就是:BERT产生句向量的坐标基不是标准正交基,也就是各向异性。为了解决BERT句嵌入向量的问题,就需要将句向量转化至标准正交基中。
二、白化变换
? 先前解决BERT句向量各向异性采用基于flow的方法。本文认为使用简单的whitening操作也能实现相同的效果。具体来说,就是将所有句向量转换为均值为0且协方差矩阵为单位矩阵的向量。
? 假设存在一组句向量
{
x
i
}
i
=
1
N
\{x_i\}_{i=1}^N
{xi?}i=1N?,可以使用下面的线性变换实现各向同性(均值为0且协方差矩阵为单位矩阵)。
x
~
i
=
(
x
i
?
u
)
W
(2)
\tilde{x}_i=(x_i-u)W \tag{2}
x~i?=(xi??u)W(2) 等式
(
2
)
(2)
(2)就是机器学习中的白化操作。若要均值为0,仅需要
μ
=
1
N
∑
i
=
1
N
x
i
(3)
\mu=\frac{1}{N}\sum_{i=1}^Nx_i \tag{3}
μ=N1?i=1∑N?xi?(3) 下面来确定矩阵
W
W
W。
{
x
i
}
i
=
1
N
\{x_i\}_{i=1}^N
{xi?}i=1N?的原始协方差矩阵为
Σ
=
1
N
∑
i
=
1
N
(
x
i
?
μ
)
T
(
x
i
?
μ
)
(4)
\Sigma=\frac{1}{N}\sum_{i=1}^N(x_i-\mu)^T(x_i-\mu) \tag{4}
Σ=N1?i=1∑N?(xi??μ)T(xi??μ)(4) 转换后的协方差矩阵为
Σ
~
=
W
T
Σ
W
(5)
\tilde{\Sigma}=W^T\Sigma W \tag{5}
Σ~=WTΣW(5) 若希望转换后的协方差矩阵为单位矩阵,则需要解决下面的等式
W
T
Σ
W
=
I
(6)
W^T\Sigma W=I \tag{6}
WTΣW=I(6) 将等式
(
6
)
(6)
(6)左乘
(
W
T
)
?
1
(W^T)^{-1}
(WT)?1和右乘
W
?
1
W^{-1}
W?1,得到 KaTeX parse error: No such environment: align at position 8: \begin{?a?l?i?g?n?}? \Sigma&=(W^T)^… 由于协方差矩阵
Σ
\Sigma
Σ是正定对称矩阵,满足
SVD
\text{SVD}
SVD分解,即
Σ
=
U
Λ
U
T
(8)
\Sigma=U\Lambda U^T \tag{8}
Σ=UΛUT(8) 等式
(
7
)
(7)
(7)和
(
8
)
(8)
(8)联立
(
W
?
1
)
T
W
?
1
=
U
Λ
U
T
=
U
Λ
Λ
U
T
=
(
Λ
U
T
)
T
Λ
U
T
(9)
(W^{-1})^TW^{-1}=U\Lambda U^T=U\sqrt{\Lambda}\sqrt{\Lambda}U^T=(\sqrt{\Lambda}U^T)^T\sqrt{\Lambda}U^T \tag{9}
(W?1)TW?1=UΛUT=UΛ
?Λ
?UT=(Λ
?UT)TΛ
?UT(9) 因此,
W
?
1
=
Λ
U
T
W^{-1}=\sqrt{\Lambda}U^T
W?1=Λ
?UT,那么最终
W
=
U
Λ
?
1
(10)
W=U\sqrt{\Lambda^{-1}} \tag{10}
W=UΛ?1
?(10)
三、降维
? 通过矩阵
W
=
U
Λ
?
1
W=U\sqrt{\Lambda^{-1}}
W=UΛ?1
?可以将句向量的协方差矩阵转换为单位矩阵。在这个变换中,对角矩阵
Λ
\Lambda
Λ中的每个对角元素的大小都代表了对应维度的重要性。因此,可以通过去掉那些不重要的特征来实现特征向量降维,这样可以一定程度上降低噪音且加速向量检索速度。
? 在实现过程中,由于奇异值分解出的对角矩阵
Λ
\Lambda
Λ中的元素已经被降序排列。因此,仅需要将
W
W
W中的前
k
k
k列保留下来,就能实现降维效果。论文将整个流程称为
Whitening-k
\text{Whitening-k}
Whitening-k,详细的实现如算法1描述。
算法1
**输入:**句嵌入
{
x
i
}
i
=
1
N
\{x_i\}_{i=1}^N
{xi?}i=1N?和要保留的维度
k
k
k;
- 计算
{
x
i
}
i
=
1
N
\{x_i\}_{i=1}^N
{xi?}i=1N?的均值
μ
\mu
μ和协方差矩阵
Σ
\Sigma
Σ;
- 计算
U
,
Λ
,
U
T
=
SVD
(
Σ
)
U,\Lambda,U^T=\textbf{SVD}(\Sigma)
U,Λ,UT=SVD(Σ);
- 计算
W
=
(
U
Λ
?
1
)
[
:
,
:
k
]
W=(U\sqrt{\Lambda^{-1}})[:,:k]
W=(UΛ?1
?)[:,:k];
- for
i
=
1
,
2
,
…
,
N
i=1,2,\dots,N
i=1,2,…,N do
- ?
x
~
i
=
(
x
i
?
u
)
W
\tilde{x}_i=(x_i-u)W
x~i?=(xi??u)W
- end for
**输出:**转换后的嵌入向量
{
x
~
i
}
i
=
1
N
\{\tilde{x}_i\}_{i=1}^N
{x~i?}i=1N?;
四、复杂度分析
? 在大规模语料库上训练时,均值
μ
\mu
μ和协方差矩阵
Λ
\Lambda
Λ是可以迭代计算的。具体来说,整个句向量
{
x
i
}
i
=
1
N
\{x_i\}_{i=1}^N
{xi?}i=1N?均需要计算矩阵向量
μ
∈
R
d
\mu\in\mathbb{R}^d
μ∈Rd和协方差矩阵
Σ
∈
R
d
×
d
\Sigma\in \mathbb{R}^{d\times d}
Σ∈Rd×d。因此,给定一个新句子
x
n
+
1
x_{n+1}
xn+1?,均值可以迭代计算:
μ
n
+
1
=
n
n
+
1
μ
n
+
1
n
+
1
x
n
+
1
(11)
\mu_{n+1}=\frac{n}{n+1}\mu_n+\frac{1}{n+1}x_{n+1} \tag{11}
μn+1?=n+1n?μn?+n+11?xn+1?(11) 类似地,协方差矩阵就是
(
x
i
?
μ
)
T
(
x
i
?
μ
)
(x_i-\mu)^T(x_i-\mu)
(xi??μ)T(xi??μ)的期望,迭代计算
Σ
n
+
1
=
n
n
+
1
Σ
n
+
1
n
+
1
(
x
n
+
1
?
μ
)
T
(
x
n
+
1
?
μ
)
(11)
\Sigma_{n+1}=\frac{n}{n+1}\Sigma_n+\frac{1}{n+1}(x_{n+1}-\mu)^T(x_{n+1}-\mu) \tag{11}
Σn+1?=n+1n?Σn?+n+11?(xn+1??μ)T(xn+1??μ)(11) 因此,计算
μ
\mu
μ和
Σ
\Sigma
Σ的空间复杂度为
O
(
1
)
O(1)
O(1),时间复杂度为
O
(
N
)
O(N)
O(N)。
|