NLP学习笔记五
Task 1
这次学习内容挺难的,力所能及记录自己学到的。
学习目标:
①学习word2vec的使用和基础原理;
②学习使用TextCNN、TextRNN进行文本分类;
③学习使用HAN网络结构进行文本分类。
Word2Vec
Word2Vec模型的基本思想:对出现在上下文环境里的词进行预测。
两个算法:
①Skip-grams
②Continuous Bag of Words (CBOW)
Skip-grams
给定中心词,预测它的上下文单词。
图片源于博主OraYang。
target——>context
input layer是一个单词的one-hot编码。然后投影到隐藏层上,再投影到很多个softmax上。
Continuous Bag of Words (CBOW)
与Skip-grams相反,CBOW是给出上下文单词,预测中心词。
context——>target
输入层一样是以one-hot的形式,与NNLM不同的是,对隐藏层进行,求和取平均值,最后用softmax**投影回原来的长度上。
这两个算法的计算量还是很大,所以我们应用 Negative sampling和Hierarchical Softmax进行优化
更高效的训练方法
Negative sampling
不同于原本每个训练样本更新所有的权重、负采样每次让一个训练样本仅仅更新一小部分的权重,这样就会降低梯度下降过程中的计算量。
当使用负采样时,我们将随机选择一小部分的 negative words(比如选5个 negative words)来更新对应的权重。我们也会对我们的" positive'word进行权重更新。
Hierarchical Softmax
一般得到霍夫曼树后我们会对叶子节点进行霍夫曼编码,由于权重高的叶子节点越靠近根节点,而权重低的叶子节点会远离根节点,这样我们的高权重节点编码值较短,而低权重值编码值较长。这保证的树的带权路径最短,也符合我们的信息论,即我们希望越常用的词拥有更短的编码。对于一个霍夫曼树的节点(根节点除外),可以约定左子树编码为0,右子树编码为1
TextCNN
TEXTCNN利用CN(卷积神经网络)进行文本特征抽取,不同大小的卷积核分别抽取n-gram特征,卷积计算出的特征图经过 Max Pooling保留最大的特征值、然后将拼接成一个向量作为文本的表示。
TextRNN
TEXTRNN利用RNN(循环神经网络)进行文本特征抽取,由于文本本身是一种序列,而LSTM天然适合建模序列数据。 TEXTRNN将句子中每个词的词向量依次输入到双向双层LSTM,分别将两个方向最后一个有效位置的隐藏层拼接成一个向量作为文本的表示。