论文阅读笔记(1)——Recurrent Convolutional Neural Networks for Text Classification(用于文本分类的循环卷积神经网络)

本文主要是介绍论文阅读笔记(1)——Recurrent Convolutional Neural Networks for Text Classification(用于文本分类的循环卷积神经网络),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 摘要(Abstract)
  • 介绍(Introduction)
  • 相关工作(Related Work)
    • 文本分类(Text Classification)
    • 深度神经网络(Deep neural networks)
  • 模型(Model)
    • 词表示学习(Word Representation Learning)
    • 文本表示学习(Text Representation Learning)
  • 训练(Training)
    • 训练网络参数(Training Network parameters)
  • 预训练词嵌入(Pre-training Word Embedding)
  • 实验(Experiments)
    • 数据集(Datasets)
    • 实验设置(Experiment Settings)
    • 方法比较(Comparison of Methods)
      • Bag of Words/Bigrams + LR/SVM
      • Average Embedding + LR
      • LDA
      • Tree Kernels
      • RecursiveNN
      • CNN
  • 结果与讨论(Results and Discussion)
    • 上下文信息(Contextual Information)
    • 学习关键字(Learned Keywords)
  • 结论(Conclusion)

摘要(Abstract)

传统文本分类器通常依赖于许多人为设计的特性,如字典、知识库和特殊的树核。与传统方法相比,引入了一种循环卷积神经网络来进行文本分类,而不需要人为设计特征。在我们的模型中,在学习单词表示时,我们使用循环结构来尽可能捕获上下文信息,与传统的基于窗口的神经网络相比,这样可以引入较少的噪声。还使用了一个最大池层,自动判断哪些词在文本分类中扮演关键角色,以捕获文本中的关键组件。在四个常用数据集上进行实验,结果表明该方法在多个数据集,特别是文档级数据集上的性能优于现有方法。

介绍(Introduction)

特征表示:通常是基于词包的(BoW)模型,其中unigrams(一元语法), bigrams(二元语法), n-grams或一些精美设计的图案通常提取为特征。
N-grams:第N个词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。这些概率可以通过直接从语料中统计N个词同时出现的次数得到。
N-gram模型是一种语言模型(Language Model,LM),语言模型是一个基于概率的判别模型,它的输入是一句话(单词的顺序序列),输出是这句话的概率,即这些单词的联合概率(joint probability)。N-gram本身也指一个由N个单词组成的集合,各单词具有先后顺序,且不要求单词之间互不相同。

虽然高阶n-gram和更复杂的特征(如树核(Post和Bergsma 2013))用来捕捉更多的上下文信息和词序,但它们仍然存在数据稀疏性问题,严重影响分类精度。

单词嵌入是单词的分布式表示,极大地缓解了数据稀疏性问题。预先训练的单词嵌入可以捕获有意义的语法和语义规律。在单词嵌入的帮助下,提出了一些基于组合的方法来捕获文本的语义表示。

递归神经网络Recursive Neural Network(RecursiveNN)
优点:已被证明在构建句子表示方面是有效的。
缺点:

  • 递归通过树结构捕获句子的语义。性能在很大程度上取决于文本树结构的性能。
  • 构建这样的文本树的时间复杂度至少为O(n2),其中n为文本的长度。当模型遇到一个长句子或一个文档时,将非常耗时。并且两个句子之间的关系很难用树形结构来表示。因此,递归不适合建模长句子或文档

循环神经网络Recurrent Neural Network(RecurrentNN)
优点:

  • 时间复杂度O(n)。
  • 该模型对一个文本进行逐字分析,并将之前所有文本的语义存储在一个固定大小的隐藏层中。
  • 能更好地捕捉上下文信息。这可能有利于捕获长文本的语义。

缺点:

  • RecurrentNN是一个有偏差的模型,表现为后面的词比前面的词更占优势。因此,当它用于捕获整个文档的语义时,可能会降低效率,因为关键组件可能出现在文档的任何位置,而不是在文档的末尾。

卷积神经网络Convolutional Neural Network (CNN)
优点:

  • 是一个无偏差模型。它可以通过最大池化层公平地确定文本中的有差别的的短语。
  • 与递归或循环神经网络相比,CNN可以更好地捕捉文本的语义。
  • CNN的时间复杂度也是O(n)。

缺点:

  • 以往对CNN的研究倾向于使用固定窗口等简单的卷积内核。在使用这样的内核时,很难确定窗口大小:较小的窗口大小可能会导致丢失一些关键信息,而较大的窗口会导致巨大的参数空间(可能很难训练)。

为解决上述模型的局限性,提出循环卷积神经网络Recurrent Convolutional Neural Network(RCNN),并将其应用到文本分类的任务中。

  • 应用双向循环结构,与传统的基于窗口的神经网络相比,它可以引入相当少的噪音,以便在学习单词表示时尽可能捕获上下文信息。此外,该模型在学习文本表征时可以保留更大范围的词序。
  • 使用一个最大池化层自动判断哪些特征在文本分类中起关键作用,以捕获文本中的关键成分。通过结合递循环结构和最大池化层,模型利用了循环神经模型和卷积神经模型的优点。模型的时间复杂度为O(n),它与文本长度的长度呈线性相关。

相关工作(Related Work)

文本分类(Text Classification)

传统的文本分类工作主要集中在特征工程、特征选择和使用不同类型的机器学习算法三方面。
特性工程使用最广泛的特性是单词包特性。此外,还设计了一些更复杂的特性,如词性标记、名词短语和树内核。特征选择的目的是消除噪声特征,提高分类性能。
最常见的特征选择方法是去除停用词(如“The”)。
高级方法使用信息增益、相互信息或L1正则化来选择有用的功能。
机器学习算法经常使用分类器,如logistic回归(LR), naive Bayes贝叶斯(NB)和支持向量机(SVM)。
但这些方法都存在数据稀疏性问题。

深度神经网络(Deep neural networks)

深度神经网络和representation learning表示学习提出了解决数据稀疏问题的新思路,并提出了许多学习单词表示的神经模型。
一个词的神经表示称为词嵌入,是一个重值向量。单词嵌入使我们能够通过简单地使用两个嵌入向量之间的距离来衡量单词的相关性。
通过预先训练的单词嵌入,神经网络在许多NLP任务中表现出色。

Socher等人使用semi-supervised recursive autoencoders半监督递归自动编码器预测句子的情绪。
Socher et al提出了一种用 recurrent neural network循环神经网络进行意译检测的方法。
Socher等引入recursive neural tensor network递归神经张量网络来分析短语和句子的情绪。
Mikolov使用 recurrent neural network循环神经网络构建语言模型。
Kalchbrenner和Blunsom提出了一种新的对话行为分类循环网络。
Collobert等引入卷积神经网络用于语义角色标记。

模型(Model)

提出一个深度神经模型来捕获文本的语义。图1显示了模型的网络结构。网络的输入是一个文档D,它是一个单词序列w1, w2,…wn。用p(k|D, θ)来表示文档是类k的概率,θ为网络中的参数。
在这里插入图片描述
图1. 循环卷积神经网络的结构。此图是句子: “A sunset stroll along the South Bank affords an array of stunning vantage points”的部分例子,下标表示对应词在原句中的位置。

  1. 经过1层双向LSTM,该词左边的词正向输入进去得到一词向量,该词右边的词反向输入进去得到一个词向量。与该词的词向量结合,生成一个 1 * 3k 的向量。
  2. 经过全连接层,tanh为非线性函数,得到y2。
  3. 经过最大池化层,得出最大化向量y3.
  4. 经过全连接层(输出层),sigmod为非线性函数,得到最终的多分类。

长短期记忆网络(LSTM,Long Short-Term Memory) 是一种时间循环神经网络,是为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的,所有的RNN都具有一种重复神经网络模块的链式形式。在标准RNN中,这个重复的结构模块只有一个非常简单的结构,例如一个tanh层。

词表示学习(Word Representation Learning)

把一个词结合上下文来表示这个词。语境可以帮助获得更准确的词义。模型中使用一个双向循环神经网络,来捕捉上下文。
cl(wi)和cr(wi)都是具有|c|实值元素的稠密向量。
W(l)是一个矩阵,它将隐含层(上下文)转换为下一个隐含层。W(sl)是一个矩阵,用于将当前单词的语义与下一个单词的左上下文结合起来。f是一个非线性激活函数。
任何文档中第一个单词的左侧上下文使用相同的共享参数cl(w1),文档中最后一个单词的右侧上下文共享参数cr(wn)。
c l ( w i ) = f ( W ( l ) c l ( w i − 1 ) + W ( s l ) e ( w i − 1 ) ) c r ( w i ) = f ( W ( r ) c r ( w i + 1 ) + W ( s r ) e ( w i + 1 ) ) \begin{aligned} \boldsymbol{c}_{l}\left(w_{i}\right) &=f\left(W^{(l)} \boldsymbol{c}_{l}\left(w_{i-1}\right)+W^{(s l)} \boldsymbol{e}\left(w_{i-1}\right)\right) \\ \boldsymbol{c}_{r}\left(w_{i}\right) &=f\left(W^{(r)} \boldsymbol{c}_{r}\left(w_{i+1}\right)+W^{(s r)} \boldsymbol{e}\left(w_{i+1}\right)\right) \end{aligned} cl(wi)cr(wi)=f(W(l)cl(wi1)+W(sl)e(wi1))=f(W(r)cr(wi+1)+W(sr)e(wi+1))
如上述公式所示,上下文向量捕获了所有左右上下文的语义。
定义式(3)中单词wi的表示,即左侧上下文向量cl(wi)、嵌入单词e(wi)和右侧上下文向量cr(wi)的串联。
通过这种方式,使用上下文信息,可以更好地消除wi这个词的歧义,而传统的神经模型只使用一个固定的窗口。
x i = [ c l ( w i ) ; e ( w i ) ; c r ( w i ) ] \boldsymbol{x}_{i}=\left[\boldsymbol{c}_{l}\left(w_{i}\right) ; \boldsymbol{e}\left(w_{i}\right) ; \boldsymbol{c}_{r}\left(w_{i}\right)\right] xi=[cl(wi);e(wi);cr(wi)] (3)
循环结构可以在文本正向扫描时得到所有cl,在文本逆向扫描时得到所有cr。时间复杂度为O(n)。得到wi的表示xi后
,对xi应用线性变换和tanh激活函数,并将结果发送到下一层。
y i ( 2 ) = tanh ⁡ ( W ( 2 ) x i + b ( 2 ) ) \boldsymbol{y}_{i}^{(2)}=\tanh \left(W^{(2)} \boldsymbol{x}_{i}+\boldsymbol{b}^{(2)}\right) yi(2)=tanh(W(2)xi+b(2)) (4)

文本表示学习(Text Representation Learning)

模型中卷积神经网络被设计用来表示文本。从卷积神经网络的角度来看,前面提到的循环结构就是卷积层。
当计算单词的所有表示形式时,我们应用一个最大池化层
y ( 3 ) = max ⁡ i = 1 n y i ( 2 ) \boldsymbol{y}^{(3)}=\max _{i=1}^{n} \boldsymbol{y}_{i}^{(2)} y(3)=maxi=1nyi(2) (5)
池化层将不同长度的文本转换为固定长度的向量。有了池化层,我们可以在整个文本中捕获信息。
最大池层试图找到文档中最重要的潜在语义因素。池化层利用循环结构的输出作为输入。池化层的时间复杂度为O(n)。整个模型是循环结构和最大池化层的级联,因此模型的时间复杂度仍然是O(n)。
模型的最后一部分是输出层。与传统的神经网络相似,定义为:
y ( 4 ) = W ( 4 ) y ( 3 ) + b ( 4 ) \boldsymbol{y}^{(4)}=W^{(4)} \boldsymbol{y}^{(3)}+\boldsymbol{b}^{(4)} y(4)=W(4)y(3)+b(4) (6)
最后,对 y ( 4 ) {y}^{(4)} y(4)应用softmax函数,可以将输出数转换为概率。
p i = exp ⁡ ( y i ( 4 ) ) ∑ k = 1 n exp ⁡ ( y k ( 4 ) ) p_{i}=\frac{\exp \left(\boldsymbol{y}_{i}^{(4)}\right)}{\sum_{k=1}^{n} \exp \left(\boldsymbol{y}_{k}^{(4)}\right)} pi=k=1nexp(yk(4))exp(yi(4)) (7)

训练(Training)

训练网络参数(Training Network parameters)

将所有要训练的参数定义为 θ \theta θ :
θ = { E , b ( 2 ) , b ( 4 ) , c l ( w 1 ) , c r ( w n ) , W ( 2 ) , W ( 4 ) , W ( l ) , W ( r ) , W ( s l ) , W ( s r ) } \theta=\left\{E, \boldsymbol{b}^{(2)}, \boldsymbol{b}^{(4)}, \boldsymbol{c}_{l}\left(w_{1}\right), \boldsymbol{c}_{r}\left(w_{n}\right), W^{(2)},\right. \left.W^{(4)}, W^{(l)}, W^{(r)}, W^{(s l)}, W^{(s r)}\right\} θ={E,b(2),b(4),cl(w1),cr(wn),W(2),W(4),W(l),W(r),W(sl),W(sr)} (8)
偏差向量 bias vectors b ( 2 ) {b}^{(2)} b(2)
θ ↦ ∑ D ∈ D log ⁡ p ( class D ∣ D , θ ) \theta \mapsto \sum_{D \in \mathbb{D}} \log p\left(\text {class}_{D} \mid D, \theta\right) θDDlogp(classDD,θ) (9)
其中 D \mathbb{D} D是训练文档集,classD是文档D的正确类。
使用随机梯度下降来优化训练目标。在每一步中,我们随机选择一个例子(D, classD)并做一个渐变步骤。
θ ← θ + α ∂ log ⁡ p ( class D ∣ D , θ ) ∂ θ \theta \leftarrow \theta+\alpha \frac{\partial \log p\left(\text {class}_{D} \mid D, \theta\right)}{\partial \theta} θθ+αθlogp(classDD,θ) (10)
α为学习速率。
在训练阶段,将神经网络中的所有参数按照均匀分布进行初始化。最大值或最小值等于“fan-in扇入”的平方根。数字是我们模型中前一层的网络节点。
扇入: 一个模块被多个模块调用。

预训练词嵌入(Pre-training Word Embedding)

词嵌入是词的分布式表示。分布式表示适合于神经网络的输入。通过适当的无监督预训练过程,神经网络可以收敛到一个更好的局部极小值。
使用Skip-gram模型对单词嵌入进行预训练。Skip-gram模型训练单词w1, w2…的嵌入。通过最大化平均对数概率:
1 T ∑ t = 1 T ∑ − c ≤ j ≤ c , j ≠ 0 log ⁡ p ( w t + j ∣ w t ) p ( w b ∣ w a ) = exp ⁡ ( e ′ ( w b ) T e ( w a ) ) ∑ k = 1 ∣ V ∣ exp ⁡ ( e ′ ( w k ) T e ( w a ) ) \begin{aligned} \frac{1}{T} \sum_{t=1}^{T} \sum_{-c \leq j \leq c, j \neq 0} \log p\left(w_{t+j} \mid w_{t}\right) \\ p\left(w_{b} \mid w_{a}\right)=& \frac{\exp \left(e^{\prime}\left(w_{b}\right)^{T} e\left(w_{a}\right)\right)}{\sum_{k=1}^{|V|} \exp \left(e^{\prime}\left(w_{k}\right)^{T} e\left(w_{a}\right)\right)} \end{aligned} T1t=1Tcjc,j=0logp(wt+jwt)p(wbwa)=k=1Vexp(e(wk)Te(wa))exp(e(wb)Te(wa))
word2vector模型 通过学习文本,用词向量的方式表征词的语义信息,即通过一个嵌入空间使得语义上相似的单词在该空间内距离很近。embedding其实就是一个映射,将单词从原先所属的空间映射到新的低维空间中,这样就解决了向量稀疏问题。
word2vector主要有Skip-Gram和CBOW两种模型。
Skip-Gram模型 分为两个部分:

  • 建立模型
  • 通过模型获取嵌入词向量。
    首先基于训练数据构建一个神经网络,当这个模型训练好以后,并不会用这个训练好的模型处理新的任务,真正需要的是这个模型通过训练数据所学得的参数,即隐层的权重矩阵,这些权重在word2vector中实际上就是需要的“word vectors”。

实验(Experiments)

数据集(Datasets)

在这里插入图片描述
表1:数据集的总结,包括类的数量,训练/开发/测试集条目的数量,平均文本长度和数据集的语言。

实验设置(Experiment Settings)

对数据进行预处理。
神经网络的超参数设置可能取决于所使用的数据集。

方法比较(Comparison of Methods)

Bag of Words/Bigrams + LR/SVM

提出了几个强基线用于文本分类。这些基线主要使用机器学习算法,以unigram和bigrams为特征。分别使用logistic回归(LR)和SVM8。每个特征的权重的术语是频率。

Average Embedding + LR

这个基线使用单词嵌入的加权平均值,然后应用softmax层。每个单词的权重是它的tfidf值
在这里插入图片描述
TF-IDF(term frequency–inverse document frequency,词频-逆向文件频率) 是一用于信息检索(information retrieval)与文本挖掘(text mining)的常用加权技术。
TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。
TF-IDF的主要思想:若某个单词在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
TF:单词词频,即一个词在文章中出现的频率。
TF=词在文章(句子)中出现的次数/文章(句子)总的词汇数。
IDF:逆文件频率,词在所有文档中出现的次数越少,越能够代表该文章。
IDF=log(语料库的总文档数/包含该词条的文档数+1),分母+1是为了避免分母为0。
TFIDF=TF*IDF

LDA

基于逻辑分析的方法在捕获几个分类任务中的文本语义方面取得了良好的性能。
LDA 降维的目标:将带有标签的数据降维,投影到低维空间同时满足三个条件:

  • 尽可能多地保留数据样本的信息(即选择最大的特征是对应的特征向量所代表的的方向)。
  • 寻找使样本尽可能好分的最佳投影方向。
  • 投影后使得同类样本尽可能近,不同类样本尽可能远。

Tree Kernels

使用不同的树核作为特征,是ACL本机语言分类任务中最先进的工作。

RecursiveNN

递归神经网络。

CNN

卷积神经网络,它的卷积内核只是将单词嵌入到一个预定义的窗口中。

结果与讨论(Results and Discussion)

  • 基于神经网络的方法可以有效地构成文本的语义表示。与基于BoW模型的传统方法相比,神经网络能够捕获更多的特征上下文信息,较少受到数据稀疏性问题的影响。
  • 与之前的神经网络相比,基于卷积的框架更适合构建文本的语义表示。认为主要原因是CNN可以通过最大池化层选择更具鉴别性的特征,通过卷积层获取上下文信息。相比之下,递归式只能在构建的文本树下使用语义组合来捕获上下文信息,这在很大程度上取决于构建树的性能。
  • RCNN可以捕捉远距离模式,这也是树核引入的。尽管有竞争性的结果,RCNN不需要手工制作特征集,意味着它可能在低资源语言中有用。
  • 发现RCNN在所有情况下都优于CNN。因为RCNN的循环结构比基于窗口的结构更好地捕捉上下文信息。

上下文信息(Contextual Information)

CNN

  • 使用固定的单词窗口作为上下文信息。性能取决于窗口的大小。
  • 一个小窗口可能会导致一些远距离模式的丢失,而大窗口则会导致数据稀疏性。此外,大量的参数更难以训练。

RCNN

  • 使用不依赖于窗口大小的循环结构捕获上下文信息。
  • 由于它的递归结构可以保留更长的上下文信息,引入更少的噪声,RCNN的性能优于基于窗口的CNN。

学习关键字(Learned Keywords)

比较RCNN和RNTN提取的积极、消极特征。
与RNTN中最积极和最消极的短语相比,本文模型不依赖于语法分析器,因此所呈现的n-grams通常不是“短语”。

结论(Conclusion)

本文模型使用循环结构捕获上下文信息,并使用卷积神经网络构造文本的表示。实验表明,本文模型优于CNN和RecursiveNN等其他原有模型。

这篇关于论文阅读笔记(1)——Recurrent Convolutional Neural Networks for Text Classification(用于文本分类的循环卷积神经网络)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/687738

相关文章

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

Python判断for循环最后一次的6种方法

《Python判断for循环最后一次的6种方法》在Python中,通常我们不会直接判断for循环是否正在执行最后一次迭代,因为Python的for循环是基于可迭代对象的,它不知道也不关心迭代的内部状态... 目录1.使用enuhttp://www.chinasem.cnmerate()和len()来判断for

Java循环创建对象内存溢出的解决方法

《Java循环创建对象内存溢出的解决方法》在Java中,如果在循环中不当地创建大量对象而不及时释放内存,很容易导致内存溢出(OutOfMemoryError),所以本文给大家介绍了Java循环创建对象... 目录问题1. 解决方案2. 示例代码2.1 原始版本(可能导致内存溢出)2.2 修改后的版本问题在

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

JAVA中while循环的使用与注意事项

《JAVA中while循环的使用与注意事项》:本文主要介绍while循环在编程中的应用,包括其基本结构、语句示例、适用场景以及注意事项,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录while循环1. 什么是while循环2. while循环的语句3.while循环的适用场景以及优势4. 注意

Java操作xls替换文本或图片的功能实现

《Java操作xls替换文本或图片的功能实现》这篇文章主要给大家介绍了关于Java操作xls替换文本或图片功能实现的相关资料,文中通过示例代码讲解了文件上传、文件处理和Excel文件生成,需要的朋友可... 目录准备xls模板文件:template.xls准备需要替换的图片和数据功能实现包声明与导入类声明与

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

Python中的异步:async 和 await以及操作中的事件循环、回调和异常

《Python中的异步:async和await以及操作中的事件循环、回调和异常》在现代编程中,异步操作在处理I/O密集型任务时,可以显著提高程序的性能和响应速度,Python提供了asyn... 目录引言什么是异步操作?python 中的异步编程基础async 和 await 关键字asyncio 模块理论

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境