一. 预备知识

1.1 哈夫曼树 (最优二叉树)

哈夫曼树 :带权路径长度之和(WPL)最小的二叉树 。
WPL唯一,但哈夫曼树不唯一,左右子树可以交换。
简版Word2vec的理解
权值越大的节点离根节点越近。
词频越大的词离根节点越近。
构造过程中,每两个节点都要进行一次合并。
因此,若叶子节点的个数为n,则构造的哈夫曼树中新增节点的个数为n-1。

哈夫曼编码:即满足前缀编码的条件,又能保证报文编码总长最短。
前缀编码:要求一个字符的编码不能是另一个字符编码的前缀。
约定:权值大的节点作为左孩子编码为1,权值小的节点作为右孩子编码为0。

1.2 词向量

两种表示方式
One hot representation:词向量维度大小为整个词汇表的大小,对于每个具体的词汇表中的词,将对应的位置置为1。
Dristributed representation:通过训练,将每个词都映射成一个固定长度的短向量。

二. 神经概率语言模型

输入层:2c个上下文词向量
投影层: 将2c个词向量拼接起来
隐藏层:有
输出层: y 维度为词汇表长度, 经过softmax 就得到每个单词的概率
简版Word2vec的理解

待学参数:
词向量 一般的DNN输入是已知的但是词向量作为输入也需要通过训练得到
神经网络参数:权值矩阵,阈值向量

三. 基于Hierarchical Softmax的word2vec

3.1 word2vec 模型:

word2vec 有两个模型
CBOW (Continuous Bag-of-Words)
Skip-gram
模型包括三层:输入,投影,输出
前者:已知当前词wt的上下文wt2,wt1,wt+1,wt+2的前提下预测当前词wt
后者:相反
简版Word2vec的理解
CBOW 目标函数 对数似然函数最大化

L=wClogp(w|Context(w))

Skip-gram 目标函数
L=wClogp(Context(w)|w)

C表示语料库

3.2 基于Hierarchical Softmax的CBOW模型

输入层: 2c个词向量
投影层: 将2c个向量求和累加
隐藏层:无
输出层:一棵哈夫曼树,以语料库中出现的词当叶子节点,以个词频当权值构造出来的哈夫曼树。
简版Word2vec的理解
条件概率就可以通过路径累乘得到
从根到叶子节点对应着一条路径这个路径是唯一的,路径上的分支(每一个内部节点图中的黄色节点)就看作一次二分类,每一次分类就产生一个概率(用LR模型)。将概率乘起来就是所需的条件概率。
待求参数:每一内部节点就是一个LR,LR的参数θ

σ(xwTθ)=11+exwTθ

词向量也是要学的 xw也是参数
似然函数最大化 ,梯度上升 得到更新公式。
Lθ

Lxw

最终的目标是要求词典中每个词的词向量。xw表示:context(w)中各词词向量的累加,
利用Lxw来对上下文词向量更新
CBOW 每次更新2c个词向量

四. 基于Negative Sampling(负采样)的word2vec

4.1 CBOW

CBOW中,已知词w的上下文context(w),需要预测w
因此,对于给定的context(w),词w就是一个正样本,其他词就是负样本
w的负样本子集 NEG(w)
目标函数:

g(w)=σ(xwTθw)uNEG(w)[1σ(xwTθu)]

其中σ(xwTθw)表示当上下文为context(w)时,预测中心词为w的概率。
σ(xwTθu)uNEG(w)表示上下文为context(w)时,预测中心词为u的概率。
希望最大化σ(xwTθw),同时最小化所有的σ(xwTθu)
对于语料库,目标函数
G=wCg(w)

同样,对θ, 对xw求导。

负采样算法

如果词汇表的大小为N,那么我们就将一段长度为1的线段分成N份,每份对应词汇表中的一个词。
当然每个词对应的线段长度是不一样的(非等距剖分),高频词对应的线段长,低频词对应的线段短。
高频词被选为负样本的概率大。
简版Word2vec的理解
在采样前,我们将这段长度为1的线段划分成M等份(等距剖分),这里M>>N,这样可以保证每个词对应的线段都会划分成对应的小块。而M份中的每一份都会落在某一个词对应的线段上。
如图m和I就建立了映射关系。
每次随机生成 [1,M-1] 间的随机整数,根据这个映射就得到样本。
如果碰巧选到自己就跳过。

参考文献:https://blog.csdn.net/itplus/article/details/37969519

相关文章:

  • 2021-05-26
  • 2021-04-01
  • 2021-08-30
  • 2021-09-26
  • 2021-10-21
  • 2021-06-16
  • 2021-04-23
猜你喜欢
  • 2021-10-02
  • 2021-05-03
  • 2022-01-01
  • 2021-11-14
  • 2018-11-15
  • 2021-12-17
  • 2021-06-14
相关资源
相似解决方案