Task5 基于深度学习的文本分类2
上一个task4利用了fasttext,但不是最优的思路方法,因此本章将继续学习基于深度学习的文本分类。
学习目标
- 学习Word2Vec的使用和基础原理
- 学习使用TextCNN、TextRNN进行文本表示
- 学习使用HAN网络结构完成文本分类
文本表示方法 Part3
词向量( word2vec)
基本思想
基于词的上下文环境进行预测,对于每一条输入文本,选取一定大小的窗口的上下文和一个中心词,并基于这个中心词去预测窗口内其他词出现的概率。
基本思路
通过单词和上下文彼此预测
两种算法
-
Skip-grams (SG):由中心词预测上下文
-
Continuous Bag of Words (CBOW):由上下文预测目标单词
输入层向量维度为Vx1,其中V为训练样本中词的个数,输入层到隐藏层的权重矩阵维度为VxN,其中,N为选定的词向量维度,隐藏层到输出层的权重矩阵为 U(维度为N x V),输出层的向量为 Y(维度为V x 1),输出层就是一个softmax层求概率。
两种加快训练的方法
- Hierarchical softmax
基于霍夫曼树的原理,为了避免要计算所有词的softmax概率,word2vec采样了霍夫曼树来代替从隐藏层到输出softmax层的映射。 - Negative sampling(负采样)
负采样每次让一个训练样本仅仅更新一小部分的权重,这样就会降低梯度下降过程中的计算量
TextCNN
论文基础:Yoon Kim在论文(2014 EMNLP) Convolutional Neural Networks for Sentence Classification提出TextCNN。TextCNN利用CNN(卷积神经网络)进行文本特征抽取,不同大小的卷积核分别抽取n-gram特征,卷积计算出的特征图经过MaxPooling保留最大的特征值,然后将拼接成一个向量作为文本的表示。
详细原理如下:
- Embedding:第一层是图中最左边的7乘5的句子矩阵,每行是词向量,维度=5,这个可以类比为图像中的原始像素点。
- Convolution:然后经过 kernel_sizes=(2,3,4) 的一维卷积层,每个kernel_size 有两个输出
channel。 - MaxPolling:第三层是一个1-max pooling层,这样不同长度句子经过pooling层之后都能变成定长的表示。
- FullConnection and Softmax:最后接一层全连接的 softmax 层,输出每个类别的概率。
TextRNN
TextRNN利用RNN(循环神经网络)进行文本特征抽取,由于文本本身是一种序列,而LSTM天然适合建模序列数据。TextRNN将句子中每个词的词向量依次输入到双向双层LSTM,分别将两个方向最后一个有效位置的隐藏层拼接成一个向量作为文本的表示。