文本特征提取是自然语言处理的核心问题之一,近日,加拿大滑铁卢大学的 Vineet John 在 arXiv 发布了一篇关于用于文本特征提取的神经网络技术的综述论文。机器之心对该论文进行了编译介绍,论文原文可点击查阅。
https://arxiv.org/abs/1704.08531
本论文的目标是促进有关使用神经网络架构的文本特征提取技术的讨论。本论文中所讨论的研究问题关注的是当前最佳的神经网络技术,它们已经在语言处理、语言生成、文本分类和其它计算语言学任务中被证明是有用的工具。
1 动机
目前基于文本的特征提取所使用的大部分方法都依赖于相对简单的统计技术。比如说,n-gram 这样的词共现模型或 TF-IDF 这样的词袋模型。
本研究项目的动机是识别和调查使用神经网络的技术,并将它们与传统文本特征提取模型放在一起来进行研究,以展示它们方法上的不同。
文本特征提取可以用于多种不同的应用,包括但不限于:无监督语义相似度检测、文章分类和情感分析。
本项目的目标是记录使用神经网络从文本数据中进行特征提取这一领域的不同之处、优点和缺点。另外还描述了这些技术随时间的演化。
本报告可被工程师用作快速查询表,可用来寻找构建文本分类的方法或回归流程,正如在第 15 节讨论的那样,可用于将用例对应到特定的特征提取实现上。
2 研究问题
问题 1:用于从文本中提取特征的相对简单的统计技术是什么?
问题 2:使用神经网络而非这些简单方法是否有什么固有的好处?
问题 3:相对于使用简单的方法,使用神经网络有怎样的权衡?
问题 4:在性能和准确度上,这些不同的技术之间有怎样的差异?
问题 5:在哪些用例中,这些权衡比神经网络的好处更重要?
3 方法
在第 2 节中列出的研究问题将通过调查一些这个主题的重要概述论文来解决 (Goldberg, 2016)(Bengio et al., 2003)(Morin and Bengio, 2005)。也会研究这个领域一些有突破性的研究论文,其中包括词嵌入 (Mikolov et al., 2013a)(Mikolov et al., 2013b)(Mikolov et al., 2013c).
除此之外,还将调查一些更不明显的特征提取方法,包括类似词性标注、词块、命名实体识别和语义角色标注等任务 (Socher et al., 2011)(Luong et al., 2013)(Maas et al., 2015)(Li et al., 2015)(Collobert et al., 2011)(Pennington et al., 2014).
4 背景
本节在计算语言学领域提供了关于这一任务的高层面的背景解读。
4.1 词性标注(Part-of-Speech Tagging)
词性标注的目标是用一个单独的标签标记每一个词,该标签表示了其句法作用,比如名词、动词、形容词等。
最好的 POS 标注器基于在文本窗(windows of text)上训练的分类器,然后在推理阶段再被送入一个双向解码算法。
总体来说,模型类似于一个双向依存性网络(bi-directional dependency network),而且可以使用多种方法进行训练,其中包括支持向量机和双向 Viterbi 解码器。
4.2 词块(Chunking)
词块的目标是通过名词或动词短语等句法成分来标记句子的分段。其也被称为浅层句法分析(shallow parsing),可以被看作是词性标注在短语层面(而非词层面)的泛化。
词块的实现通常需要一个底层的 POS 实现,然后这些词再被组合起来或通过连接(concatenation)进行分块。
4.3 命名实体识别(Named Entity Recognition)
NER 将一个句子中的基本元素标注到类别上,比如 PERSON 或 LOCATION。
训练 NER 分类器的特征包括 POS 标签、CHUNK 标签、前缀和后缀以及被标记实体的大型词典。
4.4 语义角色标注(Semantic Role Labeling)
SRL 的目标是为句子的句法成分分配语义角色。
当前最佳的 SRL 系统由多个阶段组成:产生一个解析树,识别哪个解析树节点表示了给定动词的参数,最后分类这些节点来计算对应的 SRL 标签。
SRL 系统通常会详细给出多个特征,比如词性和词的句法标签及在树中的节点、该动词在解析树中的句法路径、该解析树中的节点是否是名词或动词短语等的一部分。
5 文档向量化
文档向量化可被用来将文本内容转换成一个数值向量表征,该表征可被用作特征,然后其可被用来训练机器学习模型。本节探讨了几种用来计算这种特征向量的统计学方法 (John and Vechtomova, 2017)。
5.1 n-gram 模型
n-gram 是来自给定文本或语音序列的 n 项连续序列。给定一个完整的文档语料库,每个元组 n 个 gram,字符和词都被表示为一个比特向量(bit vector)中一个特定的比特;在与一个文本体(body of text)聚合时,其会形成一个稀疏的对该文本的向量化表征,采用了 n-gram 共现的形式。
5.2 TF-IDF 模型
即项频率-逆文档频率(term frequency - inverse document frequency),这是一种数值统计方法,目的是反映一个词对集合或语料库中的一个文档的重要程度 (Sparck Jones, 1972)。TF-IDF 的值会随一个词在该文档中所出现的次数的增长而线性增长,但也会被该词在该语料库中的出现频率而抵消,这有助于调节那些在一般情况下都常会出现的词。这是一个词袋模型,而且并不保存词的顺序。
5.3 段落向量模型(Paragraph Vector Model)
段落向量模型是由一个无监督学习算法构成的,其可以为可变长度的文本(比如句子或文档)学习到固定大小的向量表征(Le and Mikolov, 2014)。该向量表征可被学习用来预测从段落中采样的上下文中的周围的词。两种不同的实现都已经在社区中取得了突出表现:
Doc2Vec:一个用 Gensim 实现的 Python 库:https://radimrehurek.com/gensim/models/doc2vec.html
FastText:一个用 C++ 做的独立实现 (Bojanowski et al., 2016) (Joulin et al., 2016).
6 用于自然语言处理的神经网络模型入门(A Primer of Neural Net Models for NLP(Goldberg, 2016))
全连接的前馈神经网络是非线性学习器,其可在使用了线性学习器的地方随时替换。
在实验结果上观察到的高准确度是由这种非线性与预训练的词嵌入所共同导致的。
多层前馈网络可以在情感分类和事实性问答上实现有竞争力的表现。
卷积和池化架构在许多任务上都得到了有潜力的结果,其中包括:文档分类、短文本归类、情感分类、实体之间关系类型分类、事件检测、释义识别、语义角色标注、问答、基于评论预测电影票房收入、建模文本兴趣和建模字符序列与词性标签之间的关系。
卷积和池化架构让我们可以将任意大的项编码成固定大小的向量,该向量捕获了它们最突出的特征,但这样它们也牺牲了大多数的结构信息。
循环和递归网络允许在使用序列和树的同时保留结构信息。
循环模型已经表明可以为语言建模得到非常强大的结果,另外还可用于序列标注、机器翻译、依存句法分析、情感分析、噪声文本规范化、对话状态跟踪、响应生成和建模字符序列与词性标签之间的关系。
递归模型已被证明能在 constituency 和依存句法分析再排序、对话解析、语义关系分类、基于解析树的政治意识形态检测、情感分类、目标依赖情感分类和问答方面得到当前最佳和近乎最佳的结果。
卷积网络已被观察到可有效地用于归纳相关任务,在语言建模任务上能得到与循环/递归网络同样的好效果。
7 一种神经概率语言模型(A Neural Probabilistic Language Model)
目标:如果了解一个句子的基本结构,那么其就能通过可互换短语替代原句的一部分而创造一个新句子(Bengio et al., 2003)。
挑战:主要的瓶颈是计算输出层的激活函数,因为该输出层是一个由 softmax 激活函数组成的全连接层。
描述:
本论文在优化算法方面的主要贡献是数据并行处理(不同的处理器处理不同的数据子集)和共享内存异步处理器的使用。
论文作者们提出通过学习词的分布式表征克服维度灾难,这种词的分布式表征允许每一个训练句子通过表示相邻句语义的指数反馈给模型。
令语言建模和其他学习问题变得困难的根本问题在于维度灾难。这在构建拥有许多离散随机变量(如句子中的词)之间的联合分布式时特别明显。
当前最佳的结果通常由使用 trigrams 获得的。
可以通过共享参数的多层神经网络替代现有句子的相似语义的语言结构而生成新句子。
本论文的目标是获得词向量序列的实数值,并学习沿特征向量相关的词序列的联合概率函数,从而学习实数值向量的表征和参数的概率分布。
概率函数可以调整而最大化训练数据的对数似然性,同时惩罚成本函数的方法与 Ridge 回归所使用的罚项一样。
这将确保语义相似的词最终具有几乎相等的特征向量,这称为学习分布特征向量。
对离散型变量建模,如将句子结构和连续值做对照,连续型函数可以假设其存在某些形式的局部性,但相似的假设不能在离散型函数中存在。
N-gram 模型通过计算每一个词(可以跟随一组 n 个预测词)的条件概率而实现对语言的概率建模。
可以通过将流行算法有效组合而生成新的词序列。如 n-grams 和超高的词频计数相结合。
8 层级概率神经网络语言模型(Hierarchical Probabilistic Neural Network Language Model)
目标:在训练和识别期间,实现条件概率的层次结构分解能得到约为 200 的加速。层次结构分解是从 WordNet 语义层次结构提取且有先验知识约束的二元层级层级聚类(Morin and Bengio, 2005)。https://wordnet.princeton.edu/
描述:
与上一篇论文相似,该论文尝试解决「维度灾难(curse of dimensionality,第 7 节)」,并尝试产生一个更快的变体。
Back-off n-grams 是用来学习表征每一个词的实值向量。
所学习的词嵌入在分布式架构中所有参与的节点之间共享。
整个模型非常重要的组成部分是选择词的二值编码,即分层词聚类的选择。在本论文中,作者们将经验统计和 WordNet 资源的先验知识
9 一种用于段落和文档的层次神经自编码器(A Hierarchical Neural Autoencoder for Paragraphs and Documents)
目标:试图根据基本的词嵌入和句子嵌入来构建段落嵌入,然后基于编码该段落嵌入以试图重构原段落(Li et al., 2015)。
描述:
该实现使用了一个 LSTM 层来将词转换成句子的向量表示。一个后续的 LSTM 层将多个句子转换成一个段落。
为了实现这一点,我们需要在创建嵌入表示时保留句法、语义和对话的相关属性。
使用了层次 LSTM 来保存句子结构。
使用给定输入的输出的最大化似然来评估参数,类似于标准的序列到序列模型。
评估是使用 softmax 函数计算的,以最大化组成词的似然。
使用层次自编码器的注意(attention)模型可用于对话系统,因为其为对话进行了明确的建模。
10 在连续空间词表征中的语言规律(Linguistic Regularities in Continuous Space Word Representations)
目标:在本论文中,作者调查了被输入层权重明确学习到的向量空间词表征。这些表征非常擅长得到语言中的句法和语义规律,而且每一个关系都可以使用一个关系特定的向量偏移(vector offset)来特征化。这允许基于词之间的偏移(Mikolov et al., 2013c)来实现向量导向的推理。这是导致了 Word2Vec 的诞生的创新论文之一,这是一种当前最佳的词嵌入工具(Mikolov et al., 2013a)。
描述:
神经网络语言模型的一个定义特征是它们的词表征,是高维的实值向量(real-valued vector)。
在这个模型中,词被一些学习到的查找表(lookup-table)转换成实值向量,这些向量被用作一个神经网络的输入。
这些模型的一个主要优势是其分布式表征实现了一定水平的泛化,而使用经典的 n-gram 语言模型是不可能办到的。
本论文中的词表征是通过一个循环神经网络语言模型学习到的。
输入向量 w(t) 表示在时间 t 的输入词,使用了 1-of-N 编码,输出层 y(t) 可以得到词上面的一个概率分布。隐藏层 s(t) 维持一个对其句子历史的表征。输入向量 w(t) 和输出向量 y(t) 具有和词汇表一样的维度。
隐藏层和输出层的值通过如下方式计算:
图 1:RNN 语言模型
拥有实值特征表征的最大特点之一是能够计算类比问题 a : b; c : d 的答案,其中 d 是未知的。使用连续空间词表征,这可以变得像计算 y = xb − xa + xc 一样简单,其中 y 是该模型所能计算出 d 的最佳估计。如果在被训练的词之中没有向量,则 y == xw,那么最近邻的向量表征可以使用余弦相似度估计出来:
11 使用用于形态学的递归神经网络的更好的词表征(Better Word Representations with Recursive Neural Networks for Morphology)
目标:本论文旨在解决复杂词和罕见词的向量表示中的不准确问题,这个问题被认为是由形态上相关的词之间的关系的缺乏而导致的(Luong et al., 2013)。
描述:
该论文的作者将 RNN 中的每个词素(morpheme)都看作是一个基本单元,并根据它们的词素为形态复杂的词在工作过程中构建表征。通过训练一个神经语言模型(NLM)和用于复杂词的集成 RNN 结构,他们使用语境信息学习词素语义及它们的组合性质。
讨论了这样一个问题:如果一开始罕见词的向量表征就是不准确的,那么 xapples − xapple ≈ xcars − xcar 这样的 Word2Vec 句法关系就不是正确的。
morphoRNN 运行在词素水平上,而非词水平上。例子可见图 2.
父词(parent word)是通过将词干向量和词缀向量结合起来创造的,如式 1 所示。
图 2:morphoRNN
其成本函数是关于新构建的表征 pc(xi) 和参考表征 pr(xi) 之间的平方欧几里德损失(squared Euclidean loss)。该损失函数见式子 2.
对语境敏感和不敏感的 Morphological RNN 版本都在本论文中得到了描述。
类似于经典的 RNN,该网络也是通过在一个前向通过的架构中计算激活函数和反向传播误差来进行训练的。
这个 RNN 模型的表现优于其它大多数自然语言处理模型,可以被用于补充词向量。
12 向量空间中词表征的有效估计(Efficient Estimation of Word Representations in Vector Space)
目标:本论文的主要目标是介绍可用于从数十亿词的巨型数据集(并且使用了数以百万计的词汇)中学习高质量词向量的技术(Mikolov et al., 2013a)。
挑战:在该神经网络的全连接输出层出现的复杂度占用了大部分计算。几种被认为可以改善这种情况的方法是使用 softmax 输出激活单元的层次化版本,或者避免在最后一层避免执行归一化。
描述:
本论文提出的思想基于 (Bengio et al., 2003) 之前提出的思想。
其目标是得到具有词的句法和语义特征的高质量词嵌入,使得能够使用代数运算来表示其在向量空间中的距离,比如 man − woman = king − queen 或 tell − told = walk − walked
这里的训练时间是随被学习的特征向量的维度而增长的,而不是训练数据的量。
该方法试图找到值的分布式向量表征,而非使用 LSA 和 LDA 等方法得到的值的连续表征。
该模型是使用随机梯度下降和反向传播训练的。
该 RNN 模型在本质上有对复杂模式的句子结构的更好的表征,而无需指定上下文的长度。
为了实现数据的分布式训练,该模型中使用了多个 DistBelief 框架。使用了 Adagrad 来执行异步梯度下降。
本论文概念化了两种用于基于语境的词向量训练的不同模型,这两者都是词的连续的分布式的表征,它们分别是:1)连续词袋模型(CBOW):该模型使用词的上下文(即这个词前后的词)来预测当前词;2)skip-gram 模型:该模型使用当前词来预测其所处的上下文。如图 3 所示:
图 3:CBOW 和 Skip-gram 模型
其实验结果表明该 CBOW 和 Skip-gram 模型始终优于当时的最佳模型。其还观察到,当达到了一定程度后,再继续增加数据的维度和规模会开始带来反效果。
13 词与短语及它们的组合的分布式表征(Distributed Representations of Words and Phrases and their Compositionality)
目标:这篇论文基于 Word2Vec skip-gram 模型的思想,并提出了关于词嵌入的质量以及训练过程的加速的优化。它也提出了一种可替代层次 softmax 最后层的方法,被称为负采样(negative sampling)(Mikolov et al., 2013b)。
描述:
其建议的一种优化方法是下采样训练集的词,以实现模型训练的速度提升。
给定一个训练词序列 [w1, w2, w3, ..., wT ],该 skip-gram 模型的目标是最大化其平均对数概率,如式子 3 所示:
其中 c 是窗口,即围绕被训练的当前词周围的上下文。
正如 (Morin and Bengio, 2005) 中介绍的那样,一种计算高效的全 softmax 的近似是层次 softmax。该层次 softmax 使用了输出层一个二叉树表征,其中 W 词是其枝叶,并且对每一个节点都明显地表示了其子节点的相对概率。这些就定义了一种随机游走(random walk),可将概率分配给词。
该论文的作者使用了二值霍夫曼树(binary Huffman tree),其可以将短码分配给常见的词,从而实现快速训练。据观察,在此之前,将词按它们出现的频率分组可以很好地用作基于神经网络的语言模型的加速技术。
噪声对比估计(NCE)是层次 softmax 的一种替代方法,其设想一个好模型应该可以根据 logistic 回归的方法来区分数据和噪声。
为了克服罕见词和常见词之间的不平衡,我们使用了一个简单的下采样方法:训练集中的每一个词都按照以下公式计算出的概率被丢弃:
这类似于网络中神经元的 dropout,尽管在统计学上,其更类似于使用这种方法从语料库中移除常见词。
丢弃常出现的词可以减少计算和内存成本。
可以使用 unigram 和 bigram 词频计数将单独的词合并成短语,如下所示
学习这些分布式表征的另一个有趣的性质是:由其 skip-gram 模型学习到的词表征和短语表征表现出了一种线性结构,使得其可以使用简单的向量运算来执行准确的类推推理。
14 GloVe:用于词表征的全局向量(GloVe: Global Vectors for Word Representation)
目标:本论文提出了一种全局对数双线性回归模型(global log-bilinear regression model),其结合了该文献中两种主要模型族的优势,它们是:全局矩阵分解和局部上下文窗口方法(Pennington et al., 2014)。
描述:
尽管 LSA 这样的方法能有效地利用统计信息,但它们在词类比任务上的表现相对较差,这表明了它们次优的向量空间结构。skip-gram 这样的方法可能在词类比上表现更好,但它们在利用语料库的统计信息上表现并不好,因为它们是在分离的局部上下文窗口上训练的,而不是在全局的共现(co-occurrence)计数上训练的。
任何任意词之间的关系可以通过研究它们的共现概率与多个探针词(probe word)之间的比例来检验。
该论文的作者认为词向量学习的合适起点应该是共现概率的比例,而非概率本身。
我们可以将这种共现关系表示成以下形式:
这使得该特征矩阵可与其转置互换。
该算法中还包含了一个加法偏移:
其在计算该共现矩阵时,在避免分歧的同时又维持了 X 的稀疏性。
该论文中所得到的模型可与全局的 skip-gram 模型进行比较,而非 (Mikolov et al., 2013a) 中提出的固定窗口大小的 skip-gram 模型。
其表现似乎会随训练数据的增加而单调增加。
15 讨论
在进行了文献调查之后,本节再次回到原来的研究问题上,并根据这些原论文的实验结果和结论推导出了一些简明扼要的结论。
问题 1:用于从文本中提取特征的相对简单的统计技术是什么?
像 n-gram 这样的词频计数模型和像 TF-IDF 这样的简单词袋模型仍然是获取文本的数值向量表征的最简单的工具。
问题 2:使用神经网络而非这些简单方法是否有什么固有的好处?
使用神经网络的好处主要是它们有能力识别模糊的模式,并且可以在主题分类和句法解析树生成等许多应用领域保持灵活性。
问题 3:相对于使用简单的方法,使用神经网络有怎样的权衡?
其权衡主要考虑的是计算成本和内存使用,尽管模型复杂度也是一个因素,但基于此,神经网络可被训练学习任意复杂的生成模型。
问题 4:在性能和准确度上,这些不同的技术之间有怎样的差异?
因为各种应用各有千秋,所以这个问题的回答会有些主观性。通常而言,可以使用 TF-IDF 这样的简单的统计学方法来解决文档相似性问题。CNN 本质上是以迭代式地降维的方式来对输入数据建模,使得它非常适合主题分类和文档摘要等任务。RNN 非常擅长建模文本序列,这使得它们非常适合语言句法建模。在各种框架中,GloVe 的预训练词嵌入的表现优于 vanilla Word2Vec,其被认为是当前最佳的。
问题 5:在哪些用例中,这些权衡比神经网络的好处更重要?
正如上一个问题解释的那样,对于一些简单的信息检索用例(比如文档排序),TF-IDF 和 词 PMI(点互信息)就已经足够了。用不着在这样的应用中使用神经网络。
16 总结
本论文总结了最近几年涌现的最先进的神经网络技术的重要方面。当涉及到开发从简单的聊天机器人到通用人工智能实体概念化等一系列应用时,机器翻译、自然语言理解和自然语言生成的领域是重要的研究领域。
在第 15 节的讨论部分总结了被调查论文的结果,并为新手进入该领域提供了一个直接可用的参考。
对于未来的工作,我们打算实验性地比较不同的词嵌入方法,以作为迭代地构建高质量的用于未来机器学习模型使用的引导。
致谢和参考文献(略)
原文链接:https://arxiv.org/abs/1704.08531