【NLP】|01 NLP常见模型(一)Word2Vec
一、Word2Vec:
1.需要具备的基础知识:
- 哈夫曼树、哈夫曼编码(变长编码,高频距离root近)
- 【统计语言模型】N-gram模型(这里模型表示的下标和上标表示起始和终止,表示第k个单词被假设只和其前n-1个单词相关,也就是【k-(n-1)一直到k-1】)
传统的方法需要存储N+N^2+...+N^n的参数(N代表词典,n代表n-gram),
- 所以放到神经网络优化,也就设想出了【神经语言模型】:

具体点:

神经语言模型存在的缺点就是,计算量过于庞大。
2.word2vec:
上面的神经网络模型对词向量的关注很少,而word2vec主要的任务是去生成向量(对语言模型的概率求最大似然得到)
将输入层到投影层的运算从『拼接』变成『叠加』
针对『隐层和输出层之间的矩阵运算』,word2vec选择删去隐藏层。如下,wi网络参数就是yi训练出来的词向量。

因为没办法对字典级别的yi进行softmax训练,所以提出了两种方法:Hieraichical Softmax和Negative Sampling。
(1)Hierarchical Softmax优化:
利用了树实现了分层的Softmax,即用树形结构替代了输出层的结构。Hierarchical softmax采用的树是二叉树。它将树上的叶子节点分配给词典里的词,而将从树根到叶子节点的路径上的每个非叶子结点都看作是二分类,路径上的二分类概率连乘的结果就是该叶子节点对应的词的概率。一个full softmax需要一次计算所有的W个词,而hierarchical softmax却只需要计算大约logW(即树根到该叶子节点的路径长度)个词,大大减少了计算的复杂度。高频词短编码速度更快。
CBOW:

Skip-gram:当前一个词--->huffman树
(2)Negative Sampling优化:随机负采样
采样概率:f(wi) 是数据集中词wi的个数与总词数之比,按照[f(wi) ^0.75]/[Σf(wi) ^0.75]的概率采样,采5-20个左右停止(自己定)
3.word2vec并行:
将训练的语料分成若干份,依次交给并行的线程、进程或分布式机器等并行运行载体进行Skip-Gram或CBow-Gram模型训练,在各个独立的并行空间中,语料是不相同的,但训练的神经网络、词向量和哈夫曼是共享的,训练中使用的学习率等参数需要更新,在结束训练后需要计算。
偶然看到的代码资源:尚未实现
浙公网安备 33010602011771号