AI

NLP讲座2:词向量和词义

2020-06-25  本文已影响0人  泥人冷风

1. 复习:word2vec的主要思想


更新向量,以便您可以很好地预测

Word2vec参数和计算


每个位置的预测相同
我们希望有一个模型,可以对上下文中出现的所有单词(相当经常)给出合理的高概率估计

Word2vec通过在空间中放置相似的单词来最大化目标函数


2. 优化:梯度下降


注意:我们的目标可能不会像这样凸出

梯度下降


while True:
    theta_grad = evaluate_gradient(J,corpus,theta)
    theta = theta - alpha * theta_grad

随机梯度下降


while True:
    window = sample_window(corpus)
    theta_grad = evaluate_gradient(J,window,theta)
    theta = theta - alpha * theta_grad

单词向量的随机渐变!


1b. Word2vec:更多详细信息


为什么选择两个向量?更容易优化。 最后对两者进行平均•每个单词只用一个向量就能做到
两种模型:
1.Skip-grams(SG)
预测给定中心的上下文(“外部”)单词(与位置无关)

2.连续词袋(CBOW)
从上下文词袋中预测中心词
我们介绍了:跳过图模型

训练效率更高:
1.负采样
到目前为止:专注于朴素的softmax(简单但昂贵的训练方法)

具有负采样(HW2)的跳过语法模型


3.但是为什么不直接捕获同现计数呢?


与同现矩阵X

示例:基于窗口的共现矩阵


counts I like enjoy deep learning NLP flying .
I 0 2 1 0 0 0 0 0
like 2 0 0 1 0 1 0 0
enjoy 1 0 0 0 0 0 1 0
deep 0 1 0 0 1 0 0 0
learning 0 0 0 1 0 0 0 1
NLP 0 1 0 0 0 0 0 1
flying 0 0 1 0 0 0 0 1
. 0 0 0 0 1 1 1 0

简单共现向量的问题


解决方案:低维向量


方法1:X(HW1)上的降维


共生矩阵X的奇异值分解将X分解为UΣVT,其中U和V是正交的

为了概括,仅保留k个奇异值。
X^是用最小二乘法表示的X的最佳秩k近似值。经典的线性代数结果。计算大型矩阵的成本很高。

Python中的简单SVD词向量


语料库:
I like deep learning. I like NLP. I enjoy flying.

import numpy as np
la = np.linalg
words = ["I","like","enjoy","deep","learnig","NLP","flying","."]

X = np.array([[0,2,1,0,0,0,0,0],
              [2,0,0,1,0,1,0,0],
              [1,0,0,0,0,0,1,0],
              [0,1,0,0,1,0,0,0],
              [0,0,0,1,0,0,0,1],
              [0,1,0,0,0,0,0,1],
              [0,0,1,0,0,0,0,1],
              [0,0,0,0,1,1,1,0]])
U,s,Vh = la.svd(X, full_matrices = False)

打印对应于2个最大奇异值的U的前两列

import matplotlib.pyplot as plt
plt.ylim(-0.8, 1)
plt.xlim(-0.8, 1)
for i in range(len(words)):
    plt.text(U[i,0],U[i,1],words[i])

对X的攻击(在Rohde等人2005中多次使用)


向量中出现有趣的句法模式


来自的COALS模型
一种基于词法共现的语义相似度改进模型。 2005年

向量中出现有趣的语义模式


来自的COALS模型
基于词法共现的语义相似度改进模型
罗德(Rohde)等人。 2005年

基于计数与直接预测


  1. LSA,HAL(隆德和伯吉斯),COALS,Hellinger-PCA(Rohdeet al,Lebret和Collobert)
  1. Skip-gram/ CBOW(Mikolov等人)NNLM,HLBL,RNN(Bengio等; Collobert&Weston; Huang等; Mnih&Hinton)

矢量差异中的编码含义


重要启示:
同现概率的比率可以编码含义成分

x = solid x = gas x = water x = random
P(x!ice large small large small
P(x!steam) small large large small
P(x!ice)/P(x!steam) large small ~1 ~1
x = solid x = gas x = water x = fashion
P(x!ice 1.9 x 10 -4 6.6 x 10-5 3.0 x 10 -3 1.7 x 10 -5
P(x!steam) 2.2 x 10-5 7.8 x 10-4 2.2 x 10-3 1.8 x 10-5
P(x!ice)/P(x!steam) 8.9 8.5 x 10-2 1.36 0.96

问:我们如何捕获单词向量空间中共现概率的比率作为线性含义成分?
答:对数双线性模型:

具有向量差异

融合两全其美的GloVe


GloVe示例代码:https://github.com/nlp1567/word2vec-pytorch/blob/master/02-Glove.ipynb

GloVe结果


如何评估词向量?


内在词向量评估


Glove 可视化


Glove 可视化:公司-CEO


Glove 可视化:最高级


内在词向量评估的详细信息


: city-in-state
Chicago Illinois Houston Texas
Chicago Illinois Philadelphia Pennsylvania Chicago Illinois Phoenix Arizona
Chicago Illinois Dallas Texas
Chicago Illinois Jacksonville Florida Chicago Illinois Indianapolis Indiana Chicago Illinois Austin Texas
Chicago Illinois Detroit Michigan
Chicago Illinois Memphis Tennessee Chicago Illinois Boston Massachusetts
问题:不同城市的名称可能相同

类比评估和超参数


词嵌入的维数

[Zi Yin and Yuanyuan Shen, NeurIPS 2018]


使用矩阵摄动理论,揭示了词嵌入维数选择中的基本偏差-方差折衷

另一个内在词向量评估


最接近的词“瑞典”(余弦相似度)

相关评估


词义和词义歧义

通过全局上下文和多种单词原型改进单词表示(Huang等,2012)


词义的线性代数结构及其在多义性中的应用


外在词向量评估


上一篇 下一篇

猜你喜欢

热点阅读