财经

深度学习在文件分类中的应用

24 12月 , 2018  

《简书周刊078》豆瓣阅读地址

《简书周刊078》多看阅读地址

《简书周刊078》Amazon下载地址

不久前读书了一部分深度学习在文件分类中的应用相关杂文(杂文笔记),同时也参预了CCF
大数据与统计智能大赛(BDCI)2017的一个文件分类问题的竞技:让AI当法官,并获取了最后评测第四名的大成(比赛的求实思路和代码参见github项目repo)。因而,本文统计了文件分类相关的深浅学习模型、优化思路以及随后得以拓展的片段干活。欢迎转载,请保留本文链接:http://www.cnblogs.com/llhthinker/p/8127788.html

点击链接即可下载,看完后别忘给个好评呦~

1. 文书分类任务介绍

文本分类是自然语言处理的一个着力任务,试图估摸出给定的文件(句子、文档等)的标签或标签集合。
文本分类的采用特别常见。如:

  • 垃圾邮件分类:二分拣问题,判断邮件是否为垃圾邮件
  • 情绪分析
    • 二分拣问题,判断文本心绪是积极(positive)依旧半死不活(negative)
    • 多分类问题,判断文本激情属于{非常被动,消极,中立,积极,相当积极}中的哪一种
  • 资讯主旨分类:判断音讯属于哪个项目,如金融、体育、娱乐等
  • 机关问答系统中的问句分类
  • 社区问答系统中的问题分类:多标签分类,如今日头条看山杯
  • 更多应用:

不等类型的文件分类往往有两样的评介目标,具体如下:

  • 二分类:accuracy,precision,recall,f1-score,…
  • 多分类: Micro-Averaged-F1, Macro-Averaged-F1, …
  • 多标签分类:Jaccard相似周到, …

点击简书在各电子书平台主页,可下载其他期周刊及电子书

2. 传统机器学习方法

历史观的机械学习形式重要行使自然语言处理中的n-gram概念对文件举办特征提取,并且采纳TFIDF对n-gram特征权重举办调整,然后将提取到的文本特征输入到Logistics回归、SVM等分类器中开展训练。不过,上述的特征提取方法存在多少稀疏维度爆炸等问题,这对分类器来说是灾难性的,并且使得锻练的模子泛化能力简单。由此,往往需要动用部分政策举办降维:

  • 人为降维:停用词过滤,低频n-gram过滤等
  • 电动降维:LDA等

值得提议的是,将深度学习中的word2vec,doc2vec作为文本特征与上文提取的特点举办融合,平时可以增进模型精度。

简书·豆瓣阅读

3. CNN用来文书分类

论文Convolutional Neural Networks for Sentence
Classification
提出了拔取CNN举行句子分类的方法。

简书·多看阅读

3.1 CNN模型推演

  • 一个句子是由六个词拼接而成的,假若一个句子有\(n\)个词,且第i个词表示为\(x_i\),词\(x_i\)通过embedding后代表为k维的向量,即\(x_i\in\Re^k\),则一个句子\(x_{1:n}\)为\(n*k\)的矩阵,可以形式化如下:
    \[X_{1:n}=x_1\oplus x_2\oplus
    \dots \oplus x_n\]
  • 一个含有\(h\)个的词的词窗口表示为:\[X_{i:i+h-1}\in\Re^{hk}\]
  • 一个filter是大大小小为\(h*k\)的矩阵,表示为:\[W\in\Re^{hk}\]
  • 经过一个filter功用一个词窗口提取可以领到一个特性\(c_i\),如下:
    \[c_i=f(W \cdot
    X_{i:i+h-1}+b)\]其中,\(b\in\Re\)是bias值,\(f\)为激活函数如Relu等。
  • 卷积操作:通过一个filter在总体句子上从句首到句尾扫描四遍,提取每个词窗口的特色,能够赢得一个特性图(feature
    map) \(c\in\Re^{n-h+1}\),表示如下(这里默认不对句子举办padding):
    \[c= [c_1, c_2, \dots ,
    c_{n-h+1}]\]
  • 池化操作:对一个filter提取到的feature map举行max pooling,得到\(\hat{c}\in\Re\)即:
    \[\hat{c}=max(c)\]
  • 若有\(m\)个filter,则经过一层卷积、一层池化后方可获取一个长短为\(m\)的向量\(z\in\Re^m\):
    \[z = [\hat{c}_1, \hat{c}_2,
    \dots, \hat{c}_m]\]
  • 最后,将向量\(z\)输入到全连接层,拿到终极的特征提取向量\(y\) (这里的\(W\)为全连接层的权重,注意与filter举办区分):
    \[y=W \cdot z+b\]

简书·Amazon阅读

3.2 优化CNN模型

卷首语-好的篇章值得被更两个人见状

为了让简书上的好作品被更多的人看来,也为了打破简书首页小说的同一感,简书如今出产了“简书专题主编”计划,诚邀每一位热爱简书的人起插足到社区的管住中,将来,用户在简书上观看的漫天情节,都有可能是由你来决定的。

现在已有连载小说教育读书想法杂文短篇小说散文在路上@IT程序员青春影视天堂音乐天堂谈写作创业上班这点事儿健康&养生美食闽南语和汉字工具癖哲思措施评论谈谈情,说说爱心理人物运动&健身二次元奇思妙想历史博物动物之灵摄影语言学习世间事设计读图时代生活家财经·投资·理财婚姻时事热闻文化译文等42个专题可供采取。

把你们的小说投稿到对应的专题,不仅可以直接引用进专题,著作质地特别美好的,还足以由专题主编直接投至首页,这就是你们梦寐以求的对不对~

实在版君每便选用下周刊的小说时,都会先去各样专题看一看,好的篇章值得被更多个人看来,从现在起,不用再担心自己写的作品没人看了,也不用再想不开自己的文风会不会太小众,在简书,你总能找到符合你的专题。

3.2.1 词向量

  • 随便起先化 (CNN-rand)
  • 预磨炼词向量举行开首化,在教练过程中固定 (CNN-static)
  • 预锻炼词向量进行起始化,在教练过程中开展微调 (CNN-non-static)
  • 多通道(CNN-multichannel):将定位的预训练词向量和微调的词向量分别作为一个大路(channel),卷积操作同时在这两个通道上进展,能够类比于图像RGB三通道。

图片 1

  • 上图为模型架构示例,在演示中,句长\(n=9\),词向量维度\(k=6\),filter有两种窗口大小(或者说kernel
    size),每种有2个,由此filter总个数\(m=4\),其中:

    • 一种的窗口大小\(h=2\)(粉色框),卷积后的向量维度为\(n-h+1=8\)
    • 另一种窗口大小\(h=3\)(藏褐色框),卷积后的向量维度为\(n-h+1=7\)
      (故事集原图中少画了一个维度,感谢@shoufengwei指正)

      ### 3.2.2 正则化

  • Dropout: 对全连接层的输入\(z\)向量举行dropout
    \[y=W \cdot (z \circ
    r)+b\]其中\(r\in\Re^m\)为masking向量(每个维度值非0即1,可以透过伯努利分布随机生成),和向量\(z\)举行元素与元素对应相乘,让\(r\)向量值为0的职务对应的\(z\)向量中的元素值失效(梯度不能立异)。

  • L2-norms: 对L2正则化项扩张限制:当正则项\(\lVert W \rVert_2 > s\)时,
    令\(\lVert W \rVert_2 =
    s\),其中\(s\)为超参数。

本期目录

卷首语

【白领】

密切的,真的别再熬夜了。 |
作者:河边的二姑娘喵

毕业四年,为啥天差地别? |
作者:黎甜

【理财】

毕业两年,我到底得来了人生的第一个10万 |
作者:倚小宛

自家在大分市的五回买房经历 |
作者:安妮(安妮(Anne))妈咪2016

【婚姻】

不爱就执着,爱就让步 |
作者:丁是丁

孟令晖:离开梅鹤鸣嫁给杜月笙,她要的只是一个懂她的人而已 |
作者:简一的西楼

【文化】

Michael·翁达杰:小说创作是一门高门槛的盘整艺术 |
作者:Lily_Legacy

铁血男儿辛忠敏告诉你,什么叫兄弟 |
作者:大老振读经典

【健身】

自身减肥的时候千万别惹我 |
作者:米粒

【生活】

失恋之后吃什么 |
作者:江浅浅

人生这场修行,从整理开首 |
作者:散淡度日黄小洛

《简书周刊078》豆瓣阅读地址

《简书周刊078》多看阅读地址

《简书周刊078》Amazon下载地址

在简书公众号(jianshuio)后台回复“简书小明”,或者给简书天涯论坛发私信“简书小明”,得到简书小明微信号,讲明简书出版粉丝,即可投入丰裕多彩的简书出版群,第一时间得知简书新书音信,等你啊~

3.3 一些定论

  • Multichannel vs. Single Channel Models:
    即使作者一开首认为多通道可以避免过拟合,从而应该显示更高,尤其是在小圈圈数据集上。但真相是,单通道在部分语料上比多通道更好;
  • Static vs. Non-static Representations:
    在大部分的语料上,CNN-non-static都优于CNN-static,一个诠释:预锻练词向量可能以为‘good’和‘bad’类似(可能它们有成千上万好像的上下文),但是对于心情分析任务,good和bad应该要有众所周知的分别,倘诺拔取CNN-static就无法做调整了;
  • Dropout可以提高2%–4%属性(performance);
  • 对于不在预磨炼的word2vec中的词,使用均匀分布\(U[-a,a]\)随机起始化,并且调动\(a\)使得随机起始化的词向量和预操练的词向量保持类似的方差,可以有微弱提高;
  • 可以尝尝任何的词向量预练习语料,如Wikipedia[Collobert et al.
    (2011)]
  • Adadelta(Zeiler, 2012)和艾达grad(Duchi et al.,
    2011)可以拿走近似的结果,但是所需epoch更少。

3.4 进一步考虑CNN

3.4.1 为何CNN可以用于文书分类(NLP)?

  • 何以CNN可以用于文书分类(NLP)?
    • filter相当于N-gram ?
    • filter只领到部分特征?全局特征咋做?可以融合吗?
      • RNN能够领到全局特征
      • RCNN(下文表明): RNN和CNN的三结合

3.4.2 超参数怎么调?

论文A Sensitivity Analysis of (and Practitioners’ Guide to)
Convolutional Neural Networks for Sentence
Classification
%20Convolutional/note.md)提供了有的政策。

  • 用什么的词向量
    • 利用预训练词向量比自由起初化的效应要好
    • 行使微调策略(non-static)的法力比固定词向量(static)的法力要好
    • 心中无数确定用哪类预锻练词向量(Google word2vec / GloVe
      representations)更好,不同的职责结果不同,应该对此你眼前的天职拓展尝试;
  • filter窗口大大小小、数量
    • 老是使用一序列型的filter举行试验,注明filter的窗口大小设置在1到10中间是一个相比较合理的选用。
    • 率先在一种档次的filter大小上执行搜索,以找到当前数据集的“最佳”大小,然后商讨那个一流大小附近的有余filter大小的三结合。
    • 每种窗口类型的filter对应的“最好”的filter个数(feature
      map数量)取决于具体数据集;
    • 只是,可以见到,当feature
      map数量超过600时,performance提升有限,甚至会危害performance,这说不定是过多的feature
      map数量导致过拟合了;

      • 在实践中,100到600是一个相比较客观的搜寻空间。
  • 激活函数 (tanh, relu, …)
    • Sigmoid, Cube, and tanh
      cube相较于Relu和Tanh的激活函数,表现很不好;
    • tanh比sigmoid好,这可能是出于tanh具有zero centering
      property(过原点);
    • 与Sigmoid相比,ReLU具有非饱和格局(a non-saturating
      form)
      的助益,并可以加速SGD的消逝。
    • 对于一些数据集,线性变换(Iden,即不应用非线性激活函数)丰盛捕获词嵌入与出口标签之间的相关性。(不过假使有四个隐藏层,相较于非线性激活函数,Iden就不太适合了,因为完全用线性激活函数,尽管有七个隐藏层,组合后一切模型依然线性的,表明能力可能不足,不可能捕获丰富音信);
    • 故而,提议首先考虑ReLU和tanh,也得以尝尝Iden
  • 池化策略:最大池化就是最好的呢
    • 对于句子分类任务,1-max pooling往往比任何池化策略要好;
    • 这或许是因为上下文的具体地方对于预测Label可能并不是很关键,而句子某个具体的n-gram(1-max
      pooling后filter提取出来的的特点)可能更可以描绘整个句子的某些意义,对于预测label更有意义;
    • (可是在任何任务如释义识别,k-max pooling可能更好。)
  • 正则化
    • 0.1到0.5之间的非零dropout
      rates可以提升部分performance(尽管提升幅度很小),具体的特级设置取决于具体数据集;
    • 对l2 norm加上一个封锁往往不会增长performance(除了Opi数据集);
    • 当feature
      map的多少抢先100时,可能导致过拟合,影响performance,而dropout将减轻这种影响;
    • 在卷积层上进展dropout协理很小,而且较大的dropout
      rate对performance有坏的熏陶。

3.5 字符级其余CNN用于文书分类

论文Character-level convolutional networks for text
classification
将文件看成字符级此外连串,使用字符级别(Character-level)的CNN举办文本分类。

3.5.1 字符级CNN的模型设计

先是需要对字符举行数字化(quantization)。具体如下:

  • 定义字母表(Alphabet):大小为\(m​\) (对于英文\(m=70​\),如下图,之后会设想将大小写字母都蕴涵在内作为对照)
    图片 2
  • 字符数字化(编码): “one-hot”编码
  • 序列(文本)长度:\(l_0\)
    (定值)
    然后杂谈设计了三种档次的卷积网络:Large和Small(作为相比较实验)
  • 它们都有9层,其中6层为卷积层(convolutional
    layer);3层为全连接层(fully-connected layer):
  • Dropout的概率都为0.5
  • 利用高斯分布(Gaussian distribution)对权重进行开头化:
  • 最后一层卷积层单个filter输出特征长度(the output frame length)为
    \(l_6 = (l_0 – 96) / 27\),推
  • 先是层全连接层的输入维度(其中1024和256为filter个数或者说frame/feature
    size):

    • Large: \(l_6 * 1024\)
    • Small: \(l_6 * 256\)
  • 下图为模型的一个图解示例。其闽南语本长度为10,第一层卷积的kernel
    size为3(半透明黄色正方形),卷积个数为9(Feature=9),步长为1,因而Length=10-3+1=8,然后开展非重叠的max-pooling(即pooling的stride=size),pooling
    size为2,由此池化后的Length = 8 / 2 = 4。
    图片 3

3.5.2 字符级CNN的有关总括与探讨

  • 字符级CNN是一个立竿见影的不二法门
  • 数据集的分寸可以为采纳传统办法如故卷积网络模型提供带领:对于几百上千等小范围数据集,可以先行考虑传统办法,对于百万规模的数据集,字符级CNN先导呈现不错。
  • 字符级卷积网络很适用于用户生成数据(user-generated
    data)
    (如拼写错误,表情符号等),
  • 没有免费的午饭(There is no free lunch)
  • 华语如何是好
  • 将字符级和词级举办组合是否结实更好
    • 英文怎么构成
    • 普通话怎么样结合

3.5.3 使用同样词表举行数据增长

对此深度学习模型,接纳适当的数码增长(Data
Augmentation)技术可以增进模型的泛化能力。数据增长在微机视觉领域相比常见,例如对图像举办旋转,适当扭曲,随机扩展噪声等操作。对于NLP,最卓绝的数目增长方法是利用人类复述句子(human
rephrases of
sentences),然则那正如不具体还要对于周边语料来说代价高昂。
一个更自然的选择是应用词语或短语的同义词或平等短语举办轮换,从而达成数据增长的目的。具体做法如下:

  • 英文同义词典: from the mytheas component used in LibreOffice1
    project. http://www.libreoffice.org/
  • 从给定的文书中抽取出富有能够轮换的词,然后轻易挑选\(r\)个开展替换,其中\(r\)由一个参数为\(p\)的几何分布(geometric
    distribution)确定,即\(P[r] \sim
    p^r\)
  • 给定一个待替换的词,其同义词可能有三个(一个列表),选用第\(s\)个的几率也经过另一个几何分布确定,即\(P[s] \sim
    q^s\)。这样是为着当前词的同义词列表中的距离较远(\(s\)较大)的同义词被选的几率更小。
  • 散文实验装置: \(p=0.5, q=0.5\)。

4. RNN用来文书分类

  • 政策1:直接使用RNN的最终一个单元输出向量作为文本特征
  • 政策2:使用双向RNN的五个方向的输出向量的总是(concatenate)或均值作为文本特征
  • 策略3:将持有RNN单元的输出向量的均值pooling或者max-pooling作为文本特征
    图片 4
  • 策略4:层次RNN+Attention, Hierarchical Attention
    Networks

5. RCNN(RNN+CNN)用于文书分类

论文Recurrent Convolutional Neural Networks for Text
Classification
计划了一种RNN和CNN结合的模子用于文书分类。

5.1 RCNN模型推演

5.1.1 词表示学习

行使双向RNN分别学习当前词\(w_i\)的左上下文表示\(c_l(w_i)\)和右上下文表示\(c_r(w_i)\),再与当前词自身的代表\(e(w_i)\)连接,构成卷积层的输入\(x_i\)。具体如下:
\[ \begin{align} c_l(w_i) =
f(W^{(l)}c_l(w_{i-1})+W^{(sl)}e(w_{i-1})) ; \\ c_r(w_i) =
f(W^{(r)}c_r(w_{i-1})+W^{(sr)}e(w_{i-1})) ; \\ x_i =
[c_l(w_i);e(w_i);c_r(w_i)] ; \\ \end{align} \]
然后将\(x_i\)作为\(w_i\)的代表,输入到激活函数为tanh,kernel
size为1的卷积层,拿到\(w_i\)的地下语义向量(latent semantic
vector) $y^{(2)}_i=tanh(W^{(2)}x_i+b^{(2)}) $
将kernel size设置为1是因为\(x_i\)中一度包含\(w_i\)左右上下文的信息,无需再接纳窗口大于1的filter进行特征提取。然则需要证实的是,在实践中如故可以同时选择多种kernel
size的filter,如[1, 2,
3],可能赢得更好的意义,一种可能的诠释是窗口大于1的filter强化了\(w_i\)的左右最近的上下文消息。其余,实践中得以利用更复杂的RNN来捕获\(w_i\)的上下文音讯如LSTM和GRU等。

5.1 2 文本表示学习

通过卷积层后,拿到了所有词的表示,然后在通过最大池化层和全连接层得到文本的象征,最终经过softmax层举办分拣。具体如下:

  • Max-pooling layer: \(y^{(3)}=\max
    \limits_{i=1}^{n} y^{(2)}_i\)
  • Fully connected layer: \(y^{(4)}=W^{(4)}y^{(3)}+b^{(4)}\)
  • Softmax layer: \(p_i=\frac{\exp(y^{(4)}_i)}{\sum_{k=1}^n
    \exp(y^{(4)}_k)}\)
    下图为上述过程的一个图解:

图片 5

5.2 RCNN相关总计

  • NN vs. traditional methods:
    在该随笔的所有实验数据集上,神经网络比传统格局的功效都要好
  • Convolution-based vs. RecursiveNN:
    基于卷积的艺术比基于递归神经网络的不二法门要好
  • RCNN vs. CFG and C&J: The RCNN可以捕获更长的形式(patterns)
  • RCNN vs. CNN: 在该杂谈的兼具实验数据集上,RCNN比CNN更好
  • CNNs使用一定的词窗口(window of words), 实验结果受窗口大小影响
  • RCNNs使用循环结构捕获广泛的上下文信息

6. 一定要CNN/RNN吗

上述的深浅学习方法通过引入CNN或RNN举行特征提取,可以达到相比较好的听从,可是也存在部分题材,如参数较多导致磨炼时间过长,超参数较多模型调整麻烦等。下面两篇小说指出了一些简单易行的模型用于文书分类,并且在简练的模子上采纳了有些优化策略。

6.1 深层无序组合措施

论文Deep Unordered Composition Rivals Syntactic Methods for Text
Classification
提出了NBOW(Neural
Bag-of-Words)模型和DAN(Deep Averaging
Networks)模型。对比了深层无序组合措施(Deep Unordered
Composition)和句法方法(Syntactic
Methods)应用在文书分类任务中的优缺点,强调深层无序组合措施的得力、功用以及灵活性。

6.1.1 Neural Bag-of-Words Models

杂文首先提议了一个最简便的无序模型Neural Bag-of-Words Models (NBOW
model)。该模型直接将文件中保有词向量的平均值作为文本的象征,然后输入到softmax
层,格局化表示如下:

  • Word embedding average : \(z=g(w \in
    X)=\frac{1}{X} \sum\limits_{w \in X} v_w\)
  • Softmax Layer: \(\hat{y} = softmax(W_s
    \cdot z + b)\)
  • Loss function: cross-entropy error, $\iota(\hat{y})
    =\sum\limits_{p=1}^{k}y_p\log(\hat{y_p}) $

6.1.2 Considering Syntax for Composition

一部分设想语法的艺术:

  • Recursive neural networks (RecNNs)
  • 可以考虑部分犬牙交错的言语学现象,如否定、转折等 (优点)
  • 兑现效益看重输入体系(文本)的句法树(可能不适合长文本和不太正统的文件)
  • 需要更多的锻炼时间
  • Using a convolutional network instead of a RecNN
  • 时刻复杂度同样相比较大,甚至更大(通过试验结果得出的下结论,这取决filter大小、个数等超参数的装置)

6.1.3 Deep Averaging Networks

Deep Averaging Networks (DAN)是在NBOW
model的根基上,通过扩充五个隐藏层,增添网络的深度(Deep)。下图为涵盖两层隐藏层的DAN与RecNN模型的相比较。

图片 6

6.1.4 Word Dropout Improves Robustness

  • 针对DAN模型,散文指出一种word
    dropout策略:在求平均词向量前,随机使得文本中的某些单词(token)失效。形式化表示如下:

\[ \begin{align} r_w \sim Bernoulli(p) ;
\\ \hat{X} = \{w|w \in X and r_w > 0\} ; \\ z = g(w \in X )
= \frac{\sum_{w \in \hat{X}}v_w}{|\hat{X}|} ; \\ \end{align}
\]

  • Word Dropout可能会使得一些非常首要的token失效。可是,使用word
    dropout往往确实有进步,这恐怕是因为,一些对标签预测起到主体功用的word数量往往小于无关重要的word数量。例如,对于心思分析任务,中立(neutral)的单词往往是最多的。
  • Word dropout 同样可以用来其它依据神经网络的主意。
  • Word Dropout或许起到了近乎数据增长(Data Augmentation)的效益?

6.2 fastText

论文Bag of Tricks for Efficient Text
Classification
提议一个高效进展文本分类的模子和局部trick。

6.2.1 fastText模型架构

fastText模型直接对持有开展embedded的性状取均值,作为文本的特征表示,如下图。

图片 7

6.2.2 特点

  • 当序列数量较大时,使用Hierachical Softmax
  • 将N-gram融入特征中,并且接纳Hashing trick[Weinberger et
    al.2009]
    进步效率

7. 新型探究

References
[1] Le and Mikolov – 2014 – Distributed representations of sentences
and documents
[2] Kim – 2014 – Convolutional neural networks for sentence
classification
[3] Zhang and Wallace – 2015 – A Sensitivity Analysis of (and
Practitioners’ Guide to) Convolutional Neural Networks for Sentence
Classification
[4] Zhang et al. – 2015 – Character-level convolutional networks for
text classification
[5] Lai et al. – 2015 – Recurrent Convolutional Neural Networks for
Text Classification
[6] Iyyer et al. – 2015 – Deep unordered composition rivals syntactic
methods for Text Classification
[7] Joulin et al. – 2016 – Bag of tricks for efficient text
classification
[8] Liu and Lapata – 2017 – Learning Structured Text Representations
[9] Yin and Schütze – 2017 – Attentive Convolution
[10] Zhang et al. – 2017 – Multi-Task Label Embedding for Text
Classification


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图