赞
踩
注:
Unimelb Comp90042 NLP笔记
相关tutorial代码链接
我们之前也见过词向量,那就是 word embedding。不过接下来我们会通过其他方式来生成词向量:
主要分为两类:
操作VSM
TF-IDF (Term Frequency-Inverse Document Frequency),信息检索(information retrieval领域的一种标准加权方案。
首先得到一个TF矩阵,就是前文说到的单纯基于统计的矩阵:
然后计算该单词对应的 IDF(inverse document frequency值:
i
d
f
w
=
l
o
g
∣
D
∣
d
f
w
idf_w=log\frac{|D|}{df_w}
idfw=logdfw∣D∣
其中,
∣
D
∣
|D|
∣D∣表示文档总数。
d
f
w
df_w
dfw表示单词
w
w
w 的文档频率,即该单词在所有文档(即语料库)中出现的总次数(TF 矩阵中最后一行)。这里,log 的底数为 2。
IDF的意思是为了惩罚那些经常出现在大多数文档中的单词,所以当
d
f
w
df_w
dfw越大时,
i
d
f
w
idf_w
idfw越来越小。
最后将每个单词的IDF值和其对应单元格的TF相乘,得到TF-IDF矩阵。
降维:
TF矩阵很稀疏,然而所谓 降维 就是创建更短、稠密的向量,让特征更少,从而消除一些噪声(当噪声过多,我们会出现过度拟合噪声)
降维方法:
题外话——求解SVD:
U
U
U 正交矩阵(左奇异向量),
Σ
\Sigma
Σ 对角矩阵(奇异矩阵),
V
T
V^T
VT 正交矩阵(右奇异向量)。也可以理解为三个矩阵做了旋转、拉伸、旋转。
其中正交矩阵
A
A
A简单说就是
A
−
1
=
A
T
,
A
A
T
=
E
A^{-1}=A^T,AA^T=E
A−1=AT,AAT=E。
如果我们想求解
A
=
U
Σ
V
T
A=U\Sigma V^T
A=UΣVT,我们现需要计算以下两个公式:
TODO:后期可以看看如何证明SVD
例:
现在求state和country的PMI
不管用的是 tf-idf 还是 PPMI ,SVD都可以帮助产生稠密向量。
专门为Embedding的神经模型
TODO:可以看看中文论文翻译(参考)
大体讲的不错的视频
有时间再弄透这个,优先把LSTM和Transformer搞好。
核心思想:目标单词的嵌入应与其 相邻单词 的嵌入 相似;并且和不会出现在其附近的其他单词的嵌入 不相似。
下图是最简单的 Skip-gram 模型的可视化图,当输出只有一个单词的时候。
“当模型训练完后,最后得到的其实是神经网络的权重,比如现在输入一个 x 的 one-hot encoder:
[
1
,
0
,
⋯
,
0
]
[1, 0,\cdots, 0]
[1,0,⋯,0],对应刚说的词语 love,则在输入层到隐含层的权重里,只有对应 1 这个位置的权重被激活,这些权重的个数,跟隐含层节点数是一致的,从而这些权重组成一个向量 vx 来表示x,而因为每个词语的 one-hot encoder 里面 1 的位置是不同的,所以,这个向量 vx 就可以用来唯一表示 x。”(参考)
除此之外,向量vx的大小是根据隐藏层神经元的个数决定的,所以一定程度上实现了 降维。
下图是当输出有两个单词时,skip-gram的图像。
输入层仍然是一个目标单词,中间会产生
∣
V
∣
∗
d
|V| * d
∣V∣∗d 个参数,d 就是隐藏层神经元的个数,然后通过不同的参数(上下文单词的词嵌入
C
C
C)得到不同的输出结果(第一次参数没有迭代时,大家的结果是一样的)。
训练 skip-gram 模型:
负采样(Negative Sampling)
一句话中,t 是目标单词,前后两个都是上下文单词。那么正采样就是这个窗口中的搭配,负采样就是目标单词和任意单词的搭配。
用逻辑回归做二元分类问题,我们希望正采样结果是两个单词有最大的相似度,负采样的结果两词最不相似。
Skip-gram 损失函数
判断一个目标单词的损失函数,就是将正向采样中预测与结果之间的差值和负向采样中预测与结果之间的差值各自求和再两者求和:
但实践中,我们会对每一个目标单词给 k 个负采样,负采样的数量一般一个目标单词配上 5 个是最好的(参考gensim库)。
理想模型:
词向量或词嵌入的问题:
如果我们将词嵌入绘制在二维空间中(例如:使用 PCA 降维),我们会发现一些非常有趣的几何关系。这两张图就较为直观地展示了为什么我们可以实现词类比。
“对于词向量,最佳评估方式是基于其他下游任务中的表现进行评估。
最近的 上下文词向量(contextual word vectors) 显示在神经网络上具有更好的效果。
例如:根据单词 “dog” 出现的地方,我们会得到不同的词向量。从句子 1 得到的单词 “dog” 的词嵌入和从句子 2 得到的单词 “dog” 的词嵌入可能差别很大,因为二者的上下文不同。BERT 在捕获这种上下文词向量上做得非常好。”(参考3.14)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。