文本分类模型(一) RCNN
文章目录
一、概述
TextRCNN是2015年中科院发表的一篇文本分类的论文Recurrent Convolutional Neural Networks for Text Classification。TextRCNN通过RNN取代TextCNN的特征提取,先使用双向RNN获取输入文本的上语义和语法信息,接着使用最大池化自动地筛选出最重要的特征,然后接一个全连接层用于分类。
二、背景
在NN中,RNN和CNN作为文本分类问题的主要模型架构,都存在各自的优点及局限性。RNN擅长处理序列结构,能够考虑到句子的上下文信息,但RNN属于“biased model”,一个句子中越往后的词重要性越高,这有可能影响最后的分类结果,因为对句子分类影响最大的词可能处在句子任何位置。CNN属于无偏模型,能够通过最大池化获得最重要的特征,但是CNN的滑动窗口大小不容易确定,选的过小容易造成重要信息丢失,选的过大会造成巨大参数空间。
为了解决二者的局限性,提出了RCNN的架构,用双向循环结构获取上下文信息,相较于CNN在学习文本表达时可以大范围的保留词序。其次使用最大池化层获取文本的重要部分,自动判断哪个特征在文本分类过程中起更重要的作用。
三、RCNN原理
3.1 模型结构
模型的第一部分是一个Bi-RNN结构,第二部分是max-pooling层,第三部分是全连接层。第一部分主要用来学习word representation,第二部分和第三部分用来学习text representation。
3.2 前向传播
1)Word Representation Learning
1.学习单词的左上文与右下文的信息
c l ( w i ) = f ( W ( l ) c l ( w i − 1 ) + W ( s l ) e ( w i − 1 ) ) c_l(w_i) = f(W^{(l)}c_l (w_{i-1}) + W^{(sl)} e(w_i-1)) cl(wi)=f(W(l)cl(wi−1)+W(sl)e(wi−1))
c r ( w i ) = f ( W ( r ) c r ( w i + 1 ) + W ( s r ) e ( w i + 1 ) ) c_r(w_i) = f(W^{(r)}c_r (w_{i+1}) + W^{(sr)} e(w_i+1)) cr(wi)=f(W(r)cr(wi+1)+W(sr)e(wi+1))
其中,
{ c l ( w i ) 表 示 单 词 W i 的 左 上 文 c r ( w i ) 表 示 单 词 W i 的 左 上 文 e ( w i ) 表 示 单 词 w i 的 嵌 入 向 量 W ( l ) 为 权 重 矩 阵 , 将 上 一 个 单 词 的 左 上 文 c l ( w i − 1 ) 传 递 到 下 一 个 单 词 的 左 上 文 c l ( w i ) 中 W ( s l ) 是 一 个 矩 阵 , 结 合 当 前 词 e ( w i − 1 ) 的 语 义 到 下 一 个 词 的 左 上 文 中 , s 表 示 的 是 s e m a n t i c 。 \begin{cases} c_l(w_i)表示单词W_i的左上文 \\ c_r(w_i)表示单词W_i的左上文 \\ e(w_i)表示单词w_i的嵌入向量 \\ W^{(l)}为权重矩阵,将上一个单词的左上文c_l(w_{i-1})传递到下一个单词的左上文c_l(w_i)中 \\ W^{(sl)}是一个矩阵,结合当前词e(w_{i−1})的语义到下一个词的左上文中,s表示的是semantic。 \end{cases} ⎩⎪⎪⎪⎪⎪⎪