为了完成我的基于深度学习的立场检测系统毕业论文,我会从最简单的Pooling单层网络开始系统学习句子分类。接下来会有卷积神经网络CNN层,循环神经网络RNN层等,以后更新。这些都是理论+实践代码(下期会给基于pytorch的python实现代码)。望大家发现错误积极指出,互相在自然语言处理道路上进步!
1
数据清洗
2
分词
英文的文本肯定不用这一步,中文必须分词了。
3
词向量化
这里我将用随机的向量化,一个词的维度为 n*1
4
句子向量化,标签01化
假设句子 x 词的数量是m,那么它的向量为 n*m(一列一个词向量,顺序排m列
比如三分类标签 G 分别为[1,0,0],[0,1,0],[0,0,1]
5
初始化权重W
维度为 n*classSize  (classSize分类大小)
6
句子向量过maxPooling层
maxPooling就是在一个维度中选择最大的一个,其余抛弃
句子向量 n*m也就是每一行是一个维度,每一行选择最大的,最终维度为 n*1
7

Softmax概率化

P = Softmax(xT*W) 维度1*classSize
8
通过Loss算梯度grad
grad需要通过链式求导求得,即 
而其中的
Loss化简得:
其中
的g表示这个句子的标签中[0,1,0] 1 的位置,y为概率化的结果,y为[0.5,0.3,0.2]
可以推出
由于
,所以:
所以梯度
9

更新W

W=Wαgrad
继续阅读
阅读原文