文章目录
week6课程内容
Vector Semantics (向量语义学)
三种向量模型:
- Mutual-information (互信息) weighted word co-occurrence matrices
- Singular value decomposition (and Latent Semantic Analysis 潜在语义分析)
- Neural-network-inspired models (skip-grams, CBOW, BERT)
第一个是稀疏向量表示Sparse vector representations,前两个后两个是 Dense vector representations。它们的共同思想是,利用向量表示单词,将单词的含义映射到向量空间。映射过程称为embedding。这与one-hot不同,one-hot是不包含单词含义的。
1、Term-document (词项-文档) matrix
如下图。每个格子里的
t
f
t
,
d
tf_{t,d}
tft,d 代表单词
t
t
t 在文档
d
d
d 中的词频。
两个文档是相似的,如果它们的列向量相似。
每个单词则用对应那一行的向量表示:
如果两个单词的向量表示接近,说明两个单词词义接近。
矩阵大小为
∣
V
∣
×
∣
D
∣
|V|\times|D|
∣V∣×∣D∣
2、word-word (or word-context) matrix
矩阵大小为
∣
V
∣
×
∣
V
∣
|V|\times|V|
∣V∣×∣V∣
例如:
这里每个方格
w
i
j
w_{ij}
wij 代表单词
w
i
w_i
wi 出现在
w
j
w_j
wj 附近(到底多附近,由Windows窗口大小决定)的次数。
可以预想,这个矩阵也是十分稀疏的。另外,窗口大小可以根据需求调整。窗口偏小,得到的单词的表示就更多偏向语法一点;窗口偏大,则更偏向语义表示。
--------------------------------------------------
问题来了,直接使用计数结果得到单词的向量表示,会受到一些高频词的干扰,例如the、of、a等,使得单词之间的差别被 “抹平” 了。因此引出下面的Positive Pointwise Mutual Information (PPMI) 点间互信息,进行优化。
3、Positive Pointwise Mutual Information (PPMI) (正)点间互信息
PMI点间互信息,它的计算公式如下:
P
M
I
(
X
,
Y
)
=
log
2
P
(
X
,
Y
)
P
(
X
)
P
(
Y
)
PMI(X,Y)=\log_2\frac{P(X,Y)}{P(X)P(Y)}
PMI(X,Y)=log2P(X)P(Y)P(X,Y)
因此,计算两个单词之间的PMI:
P
M
I
(
w
i
,
w
j
)
=
log
2
P
(
w
i
,
w
j
)
P
(
w
i
)
P
(
w
j
)
PMI(w_i,w_j)=\log_2\frac{P(w_i,w_j)}{P(w_i)P(w_j)}
PMI(wi,wj)=log2P(wi)P(wj)P(wi,wj)
其中,
P
(
w
i
,
w
j
)
P(w_i,w_j)
P(wi,wj) 代表
w
i
w_i
wi 和
w
j
w_j
wj 同时出现的概率,
P
(
w
i
)
P(w_i)
P(wi) 和
P
(
w
j
)
P(w_j)
P(wj) 分别代表
w
i
w_i
wi 和
w
j
w_j
wj 单独出现的概率。
我们从两个极端情况分析:
- $P(w_i,w_j)=P(w_i)P(w_j) $ 那么PMI就为0.这很符合直觉。因为两个单词的出现完全相互独立,所以之间没有什么关联信息。
- $P(w_i,w_j)=P(w_i)=P(w_j) $ 那么PMI就是一个正数。说明两个单词的出现关系十分紧密。
由于统计原因,实际计算中会出现PMI为负数的情况。因此,我们取一个正数来代替,就得到PPMI。
P
P
M
I
(
w
i
,
w
j
)
=
max
(
0
,
P
M
I
(
w
i
,
w
j
)
)
PPMI(w_i,w_j)=\max(0,PMI(w_i,w_j))
PPMI(wi,wj)=max(0,PMI(wi,wj))
以上面word-word matrics板块的矩阵为例,计算PPMI:
p
(
d
a
t
a
)
=
7
/
19
p
(
i
n
f
o
r
m
a
t
i
o
n
)
=
11
/
19
p
(
d
a
t
a
,
i
n
f
o
r
m
a
t
i
o
n
)
=
6
/
19
P
P
M
I
(
d
a
t
a
,
i
n
f
o
r
m
a
t
i
o
n
)
=
log
2
6
/
19
7
/
19
×
11
/
19
p(data)=7/19\\ p(information)=11/19\\ p(data,information)=6/19\\ PPMI(data,information)=\log_2\frac{6/19}{7/19\times11/19}
p(data)=7/19p(information)=11/19p(data,information)=6/19PPMI(data,information)=log27/19×11/196/19
PPMI存在一个问题:它倾向于对低频事件给出过高的权重。当处理自然语言数据时,这通常意味着非常罕见的单词可能会获得非常高的PMI值,尽管这些高值可能并不完全反映这些单词在真实语言使用中的实际重要性或关联性。两种改进方法:
- 提高罕见单词的概率
- 加一平滑
4、Measuring similarity单词相似度估计
得到单词的向量表示后,我们可以用处理向量的方法进行单词的相似度估计。
- 点积(内积):用两个单词向量内积作为衡量标准。为0说明毫不相干。
- 余弦相似度(Cosine similarity):用两个单词向量余弦作为衡量标准。即
cos ( w i , w j ) = w i ⋅ w j ∣ w i ∣ × ∣ w j ∣ \cos(w_i,w_j)=\frac{w_i\cdot w_j}{|w_i|\times|w_j|} cos(wi,wj)=∣wi∣×∣wj∣wi⋅wj
5、tf-idf(term frequency - inverse document frequncy)
tf-idf是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。在tf-idf矩阵中:
w
i
j
=
t
f
i
j
⋅
i
d
f
i
w_{ij}=tf_{ij}\cdot idf_i
wij=tfij⋅idfi
其中,
t
f
i
j
tf_{ij}
tfij 代表单词
w
i
w_i
wi 在文档
d
j
d_j
dj 中的词频,
i
d
f
i
idf_i
idfi 的表达式为:
i
d
f
i
=
log
2
N
d
f
i
idf_i=\log_2\frac{N}{df_i}
idfi=log2dfiN
N
N
N 代表语料库中文档总数,
d
f
i
df_i
dfi 代表包含单词
w
i
w_i
wi 的文档数。容易看出,
d
f
i
df_i
dfi (最大为N)越大,说明单词
w
i
w_i
wi 在语料库中越常见,因此
i
d
f
i
idf_i
idfi 越小,从而达到控制高频词的权重的目的。
与PPMI相比,这样得到的词向量长度更短,矩阵更稠密。
6、Two methods for getting short dense vectors
dense vector的语义信息更加丰富,因此更常用。下面是两种获得short dense vectors的方法:
- Dense Vectors via SVD(奇异值分解):
目标是使用更少的维度去近似一个较高维度的向量。思想是:在数据点所在的空间里,取方差最大的方向为第一维的方向,以此类推。示意图如下:
具体词向量的降维,示意图如下:S是奇异值矩阵
Latent Semantic Analysis潜在语义分析
如果我们只保留m个奇异值的前k个,那么我们就可以得到一个m*k的矩阵,这个矩阵就是我们的词向量。
上面的SVD都是作用于tf-idf矩阵。其实也可以用于term-term矩阵,操作一样。
- Prediction-based models:
将学习embedding当做单词预测过程的一部分。训练一个神经网络来预测附近单词,从而顺便得到单词的dense embedding。优点:(1)简单且快速,比SVD快的多(2)有现成的word2vec库可调用
skip-grams模型:
从当前单词 w i w_i wi 出发,预测左右窗口 C 内的其他单词 w i − c . . . w i − 1 , w i + 1 . . . w i + c w_{i-c}...w_{i-1},w{i+1}...w_{i+c} wi−c...wi−1,wi+1...wi+c.
这里的矩阵 W,就是所有的单词的dense embedding。
更详细的skip-gram介绍