【NLP】Word2Vec笔记(理论)

视频课/大神笔记的“学后感”

 


笔记类

代码类

 

 


视频课:[MXNet/Gluon] 动手学深度学习第十六课:词向量(word2vec)

  • 视频主要包括以下内容:词向量和word2vec工具概述、word2vec的两种模型——跳字模型(skip-gram)、连续词袋模型(CBOW),以及两种高效的训练方法(以减少训练开销)——负采样(negative sampling)、层序softmax(hierarchical softmax)。视频主要介绍模型原理,基本未涉及模型的实现。对现阶段的个人学习用处不大
  • 可以直接使用已经预训练好的词模型,以mxnet框架为例:
#先用pip安装mxnet框架
from mxnet.contrib import text

 

视频课件:NLP到Word2vec实战

课件链接:https://pan.baidu.com/s/1P8Ca2pe47YAnSWHh_SXxHw 密码:7f3h

课件挺有用的呢,偏基础,适合菜鸟本菜。

以NLTK为基础介绍NLP原理

  • 代码较多,若需使用NLTK处理文本,可以参考本节PPT。

Word2Vec理论基础

1.文本离散表示之One-hot

2.文本离散表示之Bag of Words

3.文本离散表示之Bi-gram和N-gram

1.分布表示之基于矩阵(又称分布语义模型)

2.分布表示之基于神经网络 (词向量)

神经网络语言模型(NNLM)

循环神经网络语言模型(RNNLM)

谷歌Word2Vec工具 之 CBOW模型和Skip-Gram模型

  • 分布表示之Word2Vec

  • 分布表示之Word2Vec改进版(Glove、FastText等)

  • 离散表示VS分布表示

Word2Vec应用案例

有兴趣的同学可以试试gensim的doc2vec;同时使用LSTM神经网络分类效果会比SVM更好。

Word2Vec在深度学习中的应⽤:⽂本⽣成(Word2Vec + RNN/LSTM) 、⽂本分类(Word2Vec + CNN) 

处理序列数据——RNN循环神经网络。LSTM是RNN的一种。(关于LSTM,详见本部分第四课PPT,风格有趣值得看)


大神笔记

[NLP] 秒懂词向量Word2vec的本质

Word2vec的最终目的:关心模型训练完后的副产物——模型参数(这里特指神经网络的权重),并将这些参数作为输入 x 的某种向量化的表示,这个向量便叫做——词向量。

投影层(相当于隐层)的激活函数是线性的,相当于没做任何处理(这也是 Word2vec 简化之前语言模型的独到之处),我们要训练这个神经网络,用反向传播算法,本质上是链式求导,在此不展开说明了。当模型训练完后,最后得到的其实是神经网络的权重

输出的词向量的维度(与隐含层节点数一致)一般情况下要远远小于词语总数 V 的大小,所以 Word2vec 本质上是一种降维操作——把词语从 one-hot encoder 形式的表示降维到 Word2vec 形式的表示。

训练技巧(trick):hierarchical softmax 和 negative sampling 

CBOW训练之层次softmax
CBOW训练之negative sampling

 

Skip-Gram

 

 


大神笔记:理解 Word2Vec 之 Skip-Gram 模型

CBOW模型:由上下文预测词。输入是8个词向量,输出是所有词的softmax概率。当我们要求出某8个词对应的最可能的输出中心词时,我们可以通过softmax激活函数找到概率最大的词对应的神经元即可。CBOW模型:训练模型时,词向量只是个副产品,确切来说,是CBOW模型的一个参数。 训练开始的时候,词向量是个随机值,随着训练的进行不 断被更新

Skip-Gram模型:和CBOW的思路是反着来的,即输入是特定的一个词的词向量,而输出是特定词对应的上下文词向量。还是上面的例子,我们的上下文大小取值为4, 特定的这个词"Learning"是我们的输入,而这8个上下文词是我们的输出。这样我们这个Skip-Gram的例子里,我们的输入是特定词, 输出是softmax概率排前8的8个词。

 

 

神经网络NLP模型的好处
Word2Vec输入/输出数据都是one-hot编码形式
preview
Word2Vec输入/输出数据都是one-hot编码形式(输入10000维one-hot编码向量,输出10000维概率向量)
隐层的输出就是每个输入单词的“嵌入词向量”
Word2Vec计算负担过重的解决办法(负采样)
Word2Vec计算负担过重的解决办法(负采样)
one-hot维度灾难→distributed representation

 

 

使用T-SNE,PCA等降维可视化展示

词的分布,推荐用google的tensorboard,可以多视角查看,如果不想搭建服务,直接访问这里。另外可以用python的matplotlib。http://projector.tensorflow.org/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章