神经网络模型在研究过程中参照了认知心理学实验,包括认知语言学家和认知心理学家的实验研究。这些研究主要关注人类的认知过程,如认知、记忆、注意力、判断、决策等过程,并从脑机制的角度探究这些过程是如何实现的。例如,神经网络的结构和连接权值的调整方式参考了大脑神经元的结构和功能。此外,神经网络的学习过程也借鉴了大脑神经元之间的信息传递方式。还有,神经网络的输入层、隐层和输出层的概念也是参考了大脑的前、中、后脑区域的概念。
资料1.人工神经网络理论基础
包括:
(1) PDP(Parallel Distribated Processing)模式
(2) 容限理论
(3) 网络拓扑
(4) 混沌理论
1、PDP模式
PDP模式是一种认知心理的平行分布式模式。认知是信息处理过程,并且是知觉、注意、记忆、学习、表象、思维、概念形式、问题求解、语言、情绪、个性差异等等有机联系的处理过程。PDP模式是一种接近人类思维推论的模式。人脑中知识的表达是采用分布式的表达结构,人脑的控制是实行分布式的控制方式。相互作用、相互限制是PDP模式的基本思想,平行分布是PDP模式的基本构架。
PDP模式的实施,需要一种合理的表示方法,其中一种表示方法便是人工神经网络表示法。即采用类似于大脑神经网络的体系结构,在这种基本体系结构下,使人工神经网络经过学习训练,能适应多种知识体系。
参考:http://gamejedicn/bbs/dispbbsaspboardid=7&id=924&star=1&page=2
资料2.神经网络模型
信息加工模型有助于理论家把其理论假设进一步细致化、具体化。然而正如我们在第一节所讨论过的,遵循联结主义传统的学者对比提出了反对意见,认为这一模型假设认知过程是继时性流动,而事实并非总是如此,(参见Rumelhart, Hinton,和 McClelland, 1986),至少有一些认知过程更可能是同时发生的。比如说司机开车时可同时与人讲话。一种用得越来越多的模型是神经网络模型(或称并行分布模型)。这类模型认为不同的认知过程可以同时发生,这一假设与人们的主观感觉相一致:许多东西同时出现在脑海中。这一假设还与我们已知的大脑神经的 *** 作相一致。
神经网络模型假设有一系列相互连接的加工单元,而且这些单元的激活水平是不同的。根据不同的传播规则,激活从一个单元传播到与之相连的其它单元。
参考:http://jpkcecnueducn/jxcg/931045/stu/ygg02/gg021/gg02102/gg02102chtm
3.
词向量,有时候翻译为词嵌入(word embeddings),又可以称作distributed word representation[1], 最初起源是神经网络语言模型(Neural Networks Language Models),word2vec是一种常见的word embeddings,另外一种著名word embeddings是GloVe
LDA(Latent Dirichlet Allocation)是主题模型(Topic Models)的一种计算方法,和词向量并无直接关系,不过如果扯上另外一种topic model, LSA(Latent Semantic Allocation),那就有一些关系了:LSA的核心技术是SVD,一种矩阵分解,而SVD一般在NLP中的使用并非是使用它分解的三个矩阵,而是合并右边两个矩阵。那么合并之后,左边的矩阵就可以视为word embeddings,而右边的矩阵可以视为当它是context时候的embeddings。当然,一般的矩阵分解,比如NMF,也可以得到word embeddings。而word2vec一再被人证明,从结果看,是一个全局PPMI矩阵的分解。某种意义讲,word embeddings可以理解是传统矩阵分解的一个加速版本。LDA和word embeddings还是可以有点联系,比如加入LDA的结果作为word embeddings的输入,来增强文章分类效果。Latent Dirichlet Allocation(LDA)和word2vec从模型上看几乎没有显著联系。词向量则是所有对词进行表示的方法的统称。关于联系你可以这样看:LDA的作用之一是通过对doc-word矩阵进行建模抽出doc-topic和topic-word两个分布。而word2vec其实是分解了word-context矩阵。其实都是对一个"A"-"B"矩阵进行建模。那么LDA自然也可以用于对word-context矩阵进行建模,而word2vec也可以对doc-word矩阵做分解。以上算是LDA和word2vec之间的的一点联系吧。不过他们之间的区别也是非常显著的。
传统的文本分类一般都是使用词袋模型/Tf-idf作为特征+机器学习分类器来进行分类的。随着深度学习的发展,越来越多的神经网络模型被用来进行文本分类。本文将对这些神经网络模型做一个简单的介绍。
本文介绍了一种词向量模型,虽然算不得文本分类模型,但由于其可以说是fasttext的基础。因此也简单提一下。
作者认为cbow和skipgram及大部分词向量模型都没有考虑到单词的多态性,而简单的将一个单词的多种形态视为独立的单词。例如like的不同形式有likes,liking,liked,likes,这些单词的意思其实是相同的,但cbow/skipgram模型却认为这些单词是各自独立的,没有考虑到其形态多样性。
因此作者提出了一个可以有效利用单词字符级别信息的n-gram词向量模型,该模型是以skipgram模式实现的。例如单词 where,其n-gram表示为<wh, whe, her, ere, re>, where。其中<>分别表示前后缀。在原始的skipgram模型中,输入仅仅只是where的onehot向量,而在此模型中输入则变成了<wh, whe, her, ere, re>, where的onehot编码的加和,有效的利用了字符级别的信息,因此效果更加好。
而在loss方面,文中采用了负采样+binary LogisticRegression的策略。即对每一个目标单词都预测为正负中的一种。
在本文中作者提供了一个基于神经网络的文本分类模型,这个模型是基于cbow的,与cbow非常类似。
和CBOW一样,fastText模型也只有三层:输入层、隐含层、输出层(Hierarchical Softmax),输入都是多个经向量表示的单词,输出都是一个特定的target,隐含层都是对多个词向量的叠加平均。不同的是,CBOW的输入是目标单词的上下文,fastText的输入是多个单词及其n-gram特征的embeding表示方式,这些特征用来表示单个文档;CBOW的输入单词被onehot编码过,fastText的输入特征是被embedding过;CBOW的输出是目标词汇,fastText的输出是文档对应的类标。输出层的实现同样使用了层次softmax,当然如果自己实现的话,对于类别数不是很多的任务,个人认为是可以直接使用softmax的。
最后,贴一个Keras的模型fasttext简化版。
基于词向量表示,本文提出利用卷积神经网络来进行文本分类。其算法如上图所示:
在本文中,作者尝试了多种不同的词向量模式:
在上一篇文章中CNN网络的输入一般是预训练好的词向量,而在本文中作者提出一种直接将embedding训练与分类任务结合在一起,且能有效提取/保留词序信息,也即有效训练出n-gram的模型方法,其实也可以理解为一种利用CNN来进行embedding的方法。
此外,另一个问题是输入序列长度变化问题(在上一篇文章textCNN中通过padding解决的?),在本文作者提出使用一个动态可变的pooling层来解决这个问题,使得卷积层输出的大小是相同的。关于可变pooling其实与图像识别中的 空间金字塔池化 (Spatial Pyramid Pooling) 是类似的。
这篇文章有点将fastText与TextCNN结合在一起的感觉,将n-gram embedding与分类任务结合在了一起进行训练,通过CNN来进行Embedding。
Text Categorization via Region Embedding》
在本篇文章中作者提出了一个tv-embedding(即two-view embedding),它也属于region embedding(也可以理解为ngram embedding)。这种方法与上面的bow-CNN表示相似,使用bow(bag of words)的方式来表示一个区域的词句,然后通过某个区域(region,左右邻域的单词或词句)来预测其前后的区域(单词或词句),即输入区域是view1,target区域是view2。tv-embedding是单独训练的,在使用的时候与CNN中的embedding组合在一起(形成多个channel?)。作者认为,word2vec方法预训练得到的embedding向量是普适性的,而通过特定任务的数据集的训练得到tv-embedding具有任务相关的一些信息,更有利于提升我们的模型效果。
吐槽一下,这篇文章没太看懂,也可能是英语太差,作者文章中没有那种一眼就能让人理解的网络图,像textCNN的图就非常一目了然,看图就知道是怎么做的了。
本文提出了一个使用监督学习加半监督预训练的基于LSTM的文本分类模型。文章作者与上面相同,所以用到的很多技术可以说与上面也是同出一辙。因此简单说下本文的一些思路。
作者认为已有的直接使用LSTM作为文本分类模型并直接将LSTM的最后一个输出作为后续全连接分类器的方法面临两个问题:(1)这种方式一般都是与word embedding整合在一起(即输入onehot经过一个embedding层再进入LSTM),但是embedding训练不稳定,不好训练;(2)直接使用LSTM最后一个输出来表示整个文档不准确,一般来说LSTM输入中后面的单词会在最后输出中占有较重的权重,但是这对于文章表示来说并不总是对的。因此作者对这两点进行了改进:
本文其实可以看作是作者将自己前面的tv-embedding半监督训练与RCNN的一个融合吧,大有一种一顿 *** 作猛如虎,一看人头0-5的感觉(因为作者的实验结果跟一般的CNN相比其实也抢不了多少)。
本文的作者也是前面两篇使用CNN来进行文本分类处理的文章的作者。因此在本文中,结合了前面两篇文章提出的一些方法,并使用了一个深层的卷积神经网络。具体的细节包括:
更多详细的关于DPCNN的细节可以查看 从DPCNN出发,撩一下深层word-level文本分类模型 。
本文提出了一种基于CNN+Attention的文本分类模型。作者认为已有的基于CNN的文本分类模型大都使用的是固定大小的卷积核,因此其学习到的表示也是固定的n-gram表示,这个n与CNN filter大小相关。但是在进行句子的语义表示时,不同句子发挥重要作用的ngram词语常常是不同的,也即是变化的。因此,模型能根据句子来自适应的选择每个句子最佳的n-gram对于提升模型的语义表示能力是非常关键的。本文便是由此思路提出了一种自适应的来选择不同n-gram表示的模型。
本文模型在主题结构上参照了CV中的DenseNet,借由DenseNet中的稠密连接来提取到丰富的n-gram特征表示。举例来说,在layer3的特征不仅能学习到f(x1, x2, x3),还能学习到f(x1(x2,x3))这种更多层次,更加丰富的特征。网络的结构主要包括三部分:DenseCNN主网络,Attention module和最后的全连接层分类网络。下面对这三部分进行简单的说明:
本文通过Dense connection + Attention来自动获取对于文本语义最重要的n-gram特征,结果很好。但是缺点是,这个网络比较适合较短的文本,文中对输入文本进行了padding补齐,对于不同数据集最大长度分别为50,100等,但这对于较长的文本明显是不足的。因此对于较长的文本或许HAN这种借用RNN来不限制输入长短的网络会更好。
本文提出了一种结合循环神经网络(RNN)和卷积神经网络来进行文本分类的方法,其结构如上图所示,该网络可以分为三部分:
虽然说是RNN与CNN的结合,但是其实只用到了CNN中的pooling,多少有一点噱头的意思。文中还提到了RCNN为什么比CNN效果好的原因,即为什么RCNN能比CNN更好的捕捉到上下文信息:CNN使用了固定大小window(也即kernel size)来提取上下文信息,其实就是一个n-gram。因此CNN的表现很大程度上受window大小的影响,太小了会丢失一些长距离信息,太大了又会导致稀疏性问题,而且会增加计算量。
在众多自然语言处理任务中,一个非常突出的问题就是训练数据不足,且标注难度大。因此文本提出了一种多任务共享的RNN模型框架,其使用多个不同任务数据集来训练同一个模型共享参数,已达到扩充数据集的作用。
文中作者提出了三个模型,如上图所示:
三个模型的训练方式相同:
本文提出了一个层次LSTM+Attention模型。作者认为,虽然一篇文章有多个句子组成但真正其关键作用的可能是其中的某几个,因此对各个句子施加了注意力机制,以使得对文章语义贡献较多的句子占有更多的权重。同样的,组成一个句子的单词有多个,但是发挥重要作用的可能就那么几个,因此使用注意力机制以使得重要单词发挥更大的作用,这些便是本文的核心思想。整个网络可分为三层,两个LSTM层分别用来进行word encode和sentence encode,最顶上为一个全连接分类层。若加上两层注意力层,则可认为网络为5层。下面简单聊聊这五层网络的结构:
总体来说,本文看起来还是比较有意思的,符合人阅读文章的习惯,我们写文章的时候也是有中心词和中心句的。但是由于这个层级结构是否会导致训练慢或者不好训练还不得而知。最后,文中还提出对文章按长短先进行排序,长度相似的进入一个batch,这将训练速度加快了3倍。
本文提出了一个基于图神经网络的文本分类方法。该方法的主要思想是将所有文章及其包含的词汇都放到一个图网络里面去,图网络中的节点分为两种类型:单词节点和文章节点。其中连接单词节点和文章节点的边的权重使用TF-IDF来表示,而单词与单词之间边的权重则是使用点互信息(PMI)来表示。点互信息与传统语言模型中的条件概率计算方式非常相似。只不过PMI采用的是滑窗方式而条件概率是直接在所有语料中进行统计,可以认为是将所有语料当做一个大窗口,这时就又与PMI相同了。
A表示图网络的邻接矩阵,表示如下:
GCN同样也是可以含有多层隐藏层的,其各个层的计算方式如下:
其中A'为归一化对称邻接矩阵, W0 ∈ R^(m×k) 为权重矩阵,ρ是激活函数,例如 ReLU ρ(x) = max(0,x) 如前所述,可以通过叠加多个GCN层来合并更高阶的邻域信息:
其中j表示层数。
损失函数定义为所有已标记文档的交叉熵误差:
文中提到Text GCN运行良好的原因有两个方面:
但是其也有一些缺:
总的来说,文章的idea还是挺有意思的,效果也还不错。初识GCN可能还是有一点难以理解,可以参考如下资料进行进一步学习:
基于图卷积网络的文本分类算法
如何理解 Graph Convolutional Network(GCN)?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)