NLP---text-RCNN

1. 简介

参考:(1) Recurrent Convolutional Neural Networks for Text Classification
(2) https://zhuanlan.zhihu.com/p/55015587
(3) https://zhuanlan.zhihu.com/p/42201550

  • 设计思想:简而言之就是,结合RNN处理序列数据的优势与CNN提取局部特征的优势。具体分析,(1) RNN属于"biased-model",一个句子中越往后的词重要性越高。(2) CNN属于无偏模型,能够通过最大池化获得最重要的特征,但是CNN的滑动窗口大小不容易确定,选的过小容易造成重要信息丢失(太小得到的局部特征太小,会丢失较大的特征),选的过大会造成巨大的参数空间。

1.1 模型原理

  • 网络结构:模型的网络结构如下图所示,

模型的第一部分是一个BiRNN结构,第二部分是max-pooling层,第三部分是全连接层。第一部分主要用来学习word representation,第二部分和第三部分用来学习text representation。

1.1.1 Word Representation Learning

(1) 学习单词的左上文与右下文的信息
(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})) \tag{1} cl(wi)=f(W(l)cl(wi1)+W(sl)e(wi1))(1) (2) 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})) \tag{2} cr(wi)=f(W(r)cr(wi+1)+W(sr)e(wi+1))(2)

  • c l ( w i ) c_l(w_i) cl(wi):是一个稠密向量,表示单词 w i w_i wi的左上文。
  • e ( w i ) e(w_i) e(wi):是一个稠密向量,表示单词 w i w_i wi的嵌入向量,即word embedding。
  • W ( l ) W^{(l)} W(l):是一个矩阵,用于将上一个单词的左上文 c l ( w i − 1 ) c_l(w_{i-1}) cl(wi1)传递到下一个单词的左上文 c l ( w i ) c_l(w_{i}) cl(wi)中。
  • W ( s l ) W^{(sl)} W(sl):是一个矩阵,结合当前词 e ( w i − 1 ) e(w_{i-1}) e(wi1)的语义到下一个词的左上文中,s表示的是semantic。
  • 右下文 c r ( w i ) c_r(w_i) cr(wi)的计算中的符号意义同理可知。

(2) 计算单词 w i w_i wi的隐藏语义向量 (潜在语义表示)

  • 将单词 w i w_i wi的左上文、嵌入向量和右下文表示连接起来表示单词 w i w_i wi
    (3) x i = [ c l ( w i ) ; e ( w i ) ; c r ( w i ) ] x_i=[c_l(w_i);e(w_i);c_r(w_i)] \tag{3} xi=[cl(wi);e(wi);cr(wi)](3)
  • 使用线性变换激活函数计算单词 w i w_i wi的隐藏语义向量:
    (4) y i ( 2 ) = t a n h ( W ( 2 ) x i + b ( 2 ) ) y_i^{(2)}=tanh(W^{(2)}x_i+b^{(2)}) \tag{4} yi(2)=tanh(W(2)xi+b(2))(4)

注释(个人理解):Word Representation Learning 过程可以看作是卷积过程(从宏观上理解),每个单词的隐藏语义向量 y i ( 2 ) y_i^{(2)} yi(2)相当于是一个通道的计算结果,即响应图。

1.1.2 Text Representation Learning

(1) max-pooling层
(5) y ( 3 ) = max ⁡ i = 1 n y i ( 2 ) y^{(3)}=\max_{i=1}^n y_i^{(2)} \tag{5} y(3)=i=1maxnyi(2)(5)
  每一个 y i ( 2 ) y_i^{(2)} yi(2)是一个向量,取每一个向量中的最大值组成向量 y ( 3 ) y^{(3)} y(3),类似于取每一个响应图中的最大值。最大池化可以帮助找到句子中最重要的潜在语义信息。

(2) 全连接层
(6) y ( 4 ) = W ( 4 ) y ( 3 ) + b ( 4 ) y^{(4)}=W^{(4)}y^{(3)}+b^{(4)} \tag{6} y(4)=W(4)y(3)+b(4)(6) (7) p j = e x p ( y j ( 4 ) ) ∑ k = 1 n e x p ( y k ( 4 ) ) p_j=\frac{exp(y_j^{(4)})}{\sum_{k=1}^{n}exp(y_k^{(4)})} \tag{7} pj=k=1nexp(yk(4))exp(yj(4))(7)
  将 y ( 3 ) y^{(3)} y(3)输入到全连接层,然后通过softmax进行分类。

2. 实践

  • 说明:论文中作者给出了BiRNN的内部计算方式公式(1)和公式(2),与RNN本身的构造不一样 (个人理解),因此网上的代码有两种实现方式,一种是按照论文的公式构造BiRNN,一种是使用tensorflow库中的RNN,即原始的RNN结构。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值