【论文复现】Character-level Convolutional Networks for Text Classification

写在前面

今天讨论的论文依然是文本分类主题的。Character-level Convolutional Networks for Text Classification这篇论文是在2016年4月份发表的,在此之前,深度学习自然语言处理问题的处理思路基本都是基于单词或者短语(n-grams)。这篇文章作者受到 ImagineNet卷积神经网络处理图片从底层像素开始的思路影响,开始试图从字符角度出发重新训练神经网络。在此之前,作者团队在2015年也发表了相类似的文章(相似度85%)Text Understanding from Scratch。因此,神经网络不再需要提前输入关于单词的信息,并且这些单词的知识往往是高维的,很难应用于CNN中。除此之外,神经网络也不在需要提前知道关于语法和语义的只是。作者称这种基于字符的学习为从零开始学习(learn from scratch)。并且作者提到,这种学习策略很容易推广到所有语言。

模型框架

论文的实现框架就是由一个个模块堆砌成的,如下图所示:

1. Character quantization

这里的Character quantization就是将输入的每个字符用ont-hot编码表示出来。这里作者提出模型中使用的字母表一共包括70个字符,其中26个英文字母,10个数字,33个其他字符和一个全零向量(用于表示unknow字符)。另外处理输入的时候,作者选择反向处理字符编码,即反向读取文本,这样做的好处是最新读入的字符总是在输出最开始的地方。

abcdefghijklmnopqrstuvwxyz0123456789
-,;.!?:’’’/\|_@#$%ˆ&*˜‘+-=<>()[]{}

2. Conv. and Pool. layers

论文中设计了两种神经网络,一个大的一个小的。他们都有6个卷积层和3个全连接层总共9层,区别是卷基层通道的个数frame和全连接层神经元的个数。 论文中给出了大小两种模型详细的卷积层和全连接层的配置参数,卷积和池化的方式都采用“VALID”,即不进行补零操作。另外在全连接层中间还有两个dropout层,dropout的概率为0.5,以防止出现过拟合。权重初始化的方式为高斯分布,大模型的均值方差为(0,0.02),小模型的均值方差为(0,0.05)。

模型复现

https://github.com/KaiyuanGao/text_claasification/tree/master/char_cnn_classification

猜你喜欢

转载自blog.csdn.net/Kaiyuan_sjtu/article/details/85220516