词向量

Word Embdding & Gram

Posted by YangLong on October 15, 2017

Word Embdding & Gram 词向量&Gram模型

Word Eembdding 词向量

NPLM(Neural Probablistic Language Model)神经概率语言模型

语言模型 词串是${w_t}_{t=1}^T=w_1^T=w_1,w_2,…,w_T$自然语言的概率$P(w_1^T)$

$w_t$下标 t 表示其是词串中的第 t 个词

  • 根据乘法规律计算整个词串概率:
  • 先计算单个词的概率$P(w_t w_1,w_2,…,w_{t-1}),t\in {1,2,…,T}$:

count()是指词串在语料中出现的次数

目标词 $w_t$ 的条件概率只与其之前的 n−1 个词有关

训练语言模型 $w$ image
1,将语料中的一个词串 $w_{t-(n-1)}^t$ 的目标词 $w_t$之前的 n−1 个词的词向量(即word embedding,设维度为 m )按顺序首尾拼接得到一个“长”的列向量 x ,作为输入层(也就是说共 (n−1)m 个神经元)
2,然后经过权重矩阵$H_{h\times (n-1)m}$来到隐层(神经元数为 h ),并用tanh函数激活
3,再经过权重矩阵 $U_{|\mathbb V|\times h}$ 来到输出层(神经元数当然为 |V| ),并使用softmax()将其归一化为概率
4,另外存在一个从输入层直连输出层的权重矩阵$W_{|\mathbb V|\times (n-1)m}$

$\hat y_{\underline i}$ 表示目标词是词表中第 i 个词$w_i$的概率
$\exp z_{\underline i}$ 表示前 n−1 个词对词表中第 i 个词$w_i$的能量聚集

训练参数
需要参数有$C,U,H,W,b,d$

  • 叉熵损失函数,模型对于目标词wt的损失为
  • 整个模型的损失为

N-Gram N元祖模型

给定的一段文本(Item可以是音节、字母、单词)来评估此句子,N=1时称为unigram,N=2称为bigram,N=3称为trigram,以此类推. 人们基于一定的语料库,可以利用N-Gram来预计或者评估一个句子是否合理。另外一方面,N-Gram的另外一个作用是用来评估两个字符串之间的差异程度。这是模糊匹配中常用的一种手段

假设由m个单子的句子,我们来评估此句子的概率:

这个概率的计算量太大,可以使用马尔科夫链的假设,即当前这个词仅仅跟前面N个有限的词相关,因此也就不必关心到最开始的那个词,可以减少大量的计算量

  • 当N=1时,unigram
  • 当N=2时,biggram
  • 当N=3时,trigram

后续的做法,可以利用最大似然法来求出一组参数,使得训练样本的概率取得最大值.

  • 对于unigram model而言,其中c(w1,..,wn) 表示 n-gram w1,..,wn 在训练语料中出现的次数,M 是语料库中的总字数(例如对于 yes no no no yes 而言,M=5)
  • 对于 biggram
  • 对于 n gram

CBOW Continuous Bag of Words

从上下文来预测一个文字 image

  • 输入层:2m×|V|个节点,上下文共 2m个词的one-hot representation
  • 输入层到投影层到连接边:输入词矩阵$V_{n\times \mathbb V }$
  • 投影层::n个节点,上下文共 2m个词的词向量的平均值;
  • 投影层到输出层的连接边:输出词矩阵$U_{\mathbb V\times n}$
  • 输出层:|V|个节点
训练步骤
  • 将中心词 wt 的上下文 $w_{t-m},…,w_{t-1},w_{t+1},…,w_{t+m}$由one-hot representation($x_{t+j}$)转为输入词向量($v_{t+j}$)
  • 上下文的输入词向量$ v_{t-m},…,v_{t-1}, v_{t+1},…,v_{t+m}$求平均值,作为模型输入

这一步叫投影(projection)。可以看出,CBOW像词袋模型(BoW)一样抛弃了词序信息,然后窗口在语料上滑动,就成了连续词袋= =。丢掉词序看起来不太好,不过开个玩笑的话:“研表究明,汉字的序顺并不定一能影阅响读,事证实明了当你看这完句话之后才发字现都乱是的”

  • softmax()输出目标词是某个词的概率
  • 中心词 $w_t$ ,模型对它的损失
  • 计算对于整个模型的损失

Skip-Gram

从一个文字来预测上下文 image

CBOW模型把上下文的 2m 个词向量求平均值“揉”成了一个向量 $\hat{ v}t$ 然后作为输入,进而预测中心词;而Skip-gram模型则是把上下文的 2m 个词向量$ v{t+j}$ 依次作为输入,然后预测中心词

少了一个计算平均值的过程,多了计算的次数

训练步骤
  • 中心词 $w_t$ ,模型对它的损失

Refrence

https://www.cnblogs.com/Determined22/p/5804455.html