其他分享
首页 > 其他分享> > 简单maxPooling单层网络句子分类框架和数学理论

简单maxPooling单层网络句子分类框架和数学理论

作者:互联网

    为了完成我的基于深度学习的立场检测系统毕业论文,我会从最简单的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


标签:标签,分类,maxPooling,维度,句子,向量,单层
来源: https://blog.51cto.com/u_15127535/2697148