计划完成深度学习入门的126篇论文第三十二篇,Harvard的Yoon Kim发表的character级别的语言模型。[github]
Abstract
我们描述了一个简单的神经语言模型,它只依赖于字符级的输入。预测仍然是在文字层面进行的。该模型采用卷积神经网络(CNN)和highway network对字符进行处理,输出为长短时记忆(LSTM)递归神经网络语言模型(RNN-LM)。在Penn Treebank数据集上,尽管参数减少了60%,但该模型与现有的最先进水平相当。对于词法丰富的语言(阿拉伯语、捷克语、法语、德语、西班牙语、俄语),该模型的性能优于单词级/词素级LSTM baselines,而且参数更少。结果表明,在许多语言中,字符输入对语言建模是足够的。通过对模型中字符组成部分的单词表示形式的分析,表明该模型仅能从字符中编码语义信息和正字法信息。
Introduction
语言建模是人工智能和自然语言处理(NLP)的一项基础性工作,在语音识别、文本生成和机器翻译等领域有着广泛的应用。语言模型被形式化为一个字符串(单词)序列上的概率分布,传统方法通常涉及n阶马尔可夫假设,并通过计数和后续平滑估计n-gram概率(Chen and Goodman 1998)。基于计数的模型训练简单,但是由于数据稀疏(尽管使用了平滑技术),rare n-grams的概率估计很差。
神经语言模型(NLM)通过将单词作为向量(单词嵌入)参数化并将其作为神经网络的输入来解决n-gram data sparsity问题(Bengio, Ducharme, and Vincent 2003; Mikolov et al. 2010)。这些参数是作为培训过程的一部分来学习的。通过NLMs获得的单词嵌入显示了语义相近的单词在诱导向量空间中也同样接近的特性(就像潜在语义分析等非神经技术(Deerwester、Dumais & Harshman 1990))。
虽然NLMs已经被证明优于基于计数的n-gram语言模型(Mikolov et al. 2011),但它们对子单词信息(例如语素)是盲目的。例如,他们事先不知道eventful、eventfully、uneventful和uneventfully应该在向量空间中具有结构相关的嵌入。因此,对罕见词的嵌入估计很差,导致对罕见词(及其周围的词)有很高的perplexities。这在具有long-tailed频率分布的形态丰富的语言或具有动态词汇表(例如社交媒体)的域中尤其有问题。
在这项工作中,我们提出了一种通过字符级卷积神经网络(CNN)利用子单词信息的语言模型,其输出被用作递归神经网络语言模型(RNN-LM)的输入。与以往通过语素morphemes来利用次单词信息的工作不同(Botha and Blunsom 2014; Luong, Socher, and Manning 2013),我们的模型不需要形态学标记作为预处理步骤。而且,与最近将输入词嵌入与字符级模型的功能相结合的工作(dos Santos and Zadrozny 2014; dos Santos and Guimaraes 2015),我们的模型根本没有在输入层使用word embeddings。由于NLMs中的大多数参数都来自word embeddings,因此该模型的参数明显少于以前的NLMs,这使得它对于模型大小可能存在问题的应用程序(例如手机)具有吸引力。
- 在英语方面,尽管参数减少了约60%,但我们在Penn Treebank (PTB)上取得了与现有最先进水平相当的结果;
- 在形态学丰富的语言(阿拉伯语、捷克语、法语、德语、西班牙语和俄语)上,我们的模型优于各种baseline(Kneser-Ney、单词级/词素级LSTM),同样,参数更少。
我们已经发布了本文中描述的模型的所有代码。[github]
Model
图1所示的模型的架构很简单。而传统的NLM则以word嵌入作为输入,而我们的模型则采用单层字符级卷积神经网络的输出,使用max - time池。
对于符号,我们用粗体小写字母表示向量(例如),用粗体大写的矩阵(如),斜体小写的标量(例如,以及以草体大写(例如)信件。为了便于标注,我们假设单词和字符已经被转换成索引。
Recurrent Neural Network
递归神经网络(RNN)是一种特别适合于序列现象建模的神经网络结构。在每一步t时,RNN取输入向量和隐藏状态向量,通过应用下面的递归操作生成下一个隐藏状态:
这里是仿射变换的参数,f是非线性元素乘法。从理论上讲,该神经网络可以用隐藏状态概括出t之前的所有历史信息。然而,在实践中,学习与普通RNN的长期依赖关系是困难的,因为梯度消失/爆炸(Bengio, Simard,和Frasconi 1994),这是由于雅可比矩阵对时间的乘法。
长短时记忆(LSTM) (Hochreiter和Schmidhuber, 1997)通过在RNN中增加一个记忆单元向量来解决学习长期依赖关系的问题:
LSTM中的记忆细胞是对时间的累加,缓解了梯度消失的问题。梯度爆炸仍然是一个问题,虽然在实践中简单的优化策略(如梯度裁剪)工作得很好。LSTMs已经被证明在许多任务上都优于vanilla RNNs,包括语言建模(Sundermeyer, Schluter,和Ney 2012)。通过拥有另一个网络,可以很容易地将RNN/LSTM扩展到两个(或更多)层t处的输入为(来自第一个网络)。事实上,拥有多个层次对于在各种任务上获得竞争绩效往往是至关重要的(Pascanu et al. 2013)。
Recurrent Neural Network Language Model
设V为单词的固定大小词汇表。给定历史序列。一个递归神经网络语言模型(RNN-LM)通过对隐藏层应用仿射变换,然后使用softmax做到了这一点
其中为(也称为输出嵌入)的第j列,和为偏置项。类似地,对于传统的通常以单词为输入的RNN-LM,如果,则RNN-LM在t处的输入为嵌入,即嵌入矩阵的第k列。我们的模型只是用字符级卷积神经网络的输出替换了输入embeddings X,如下所述。
是训练单词徐烈烈,训练通过最小化negative log-likelihood (NLL):
这通常是通过截短的反向传播时间(Werbos 1990; Graves 2013)。
Character-level Convolutional Neural Network
在我们的模型中,t时刻的输入是字符级卷积神经网络(CharCNN)的输出,我们将在本节中对此进行描述。CNNs (LeCun et al. 1989)已经在计算机视觉方面取得了最先进的成果(Krizhevsky, Sutskever, Hinton 2012),并被证明对各种NLP任务是有效的(Collobert et al. 2011)。用于NLP应用程序的体系结构的不同之处在于,它们通常涉及时间卷积而不是空间卷积
设C为字符的词汇量,d为字符嵌入的维数,为矩阵字符嵌入。假设单词由一系列字符组成,其中l为单词k的长度,k的字符级表示由矩阵给出,其中第j列对应于的字符嵌入(即Q的第j列)。
我们在和宽度为w的滤波器(或核)之间应用一个窄卷积,然后我们添加一个偏置并应用非线性得到一个特征映射。具体地说,的第i个元素由
是从i到(i+m-1)列,是Frobenius内积。最后我们计算 max-over-time
作为对应于过滤器H的特征(当应用于word k时)。其思想是捕捉最重要的特征——给定过滤器的值最高的特征。过滤器本质上是选择一个字符n-gram,其中n-gram的大小对应于过滤器的宽度。
我们描述了从一个滤波矩阵中得到一个特征的过程。我们的CharCNN使用多个不同宽度的滤波器来获得k的特征向量,所以如果我们有一个总共的h滤波器,为k的输入表示。对于许多NLP应用程序,h通常选择在[100, 1000]。
Highway Network
我们可以简单地取代(嵌入)这个词,即在RNN-LM每个t,我们展示后,这个简单的模型表现良好的(表7)。也可能有一个多层感知器(MLP)对模型之间的交互的角色- gram的过滤器,但我们发现这导致糟糕的性能。
相反,我们通过Srivastava等人(2015)最近提出的Highway Network运行,获得了改进。而MLP的一层应用仿射变换后的非线性来获得一组新的特征
Highway的一层网络是:
g是非线性的,称为transform gate,(1-t)被称为carry gate。与LSTM网络中的存储单元类似,highway层允许通过自适应地将输入的某些维度直接携带到输出来训练深度网络。通过构造y和z的维数必须匹配,因此和是方阵。
Experimental Setup
作为语言建模的标准,我们使用perplexity (PPL)来评估模型的性能。序列上模型的复杂性:
其中NLL通过测试集计算。我们在不同语言和大小的语料库上测试模型(统计数据如表1所示)。
我们对Penn Treebank (PTB)进行了超参数搜索、模型内省和消融ablation研究(Marcus, Santorini, and Marcinkiewicz 1993),利用标准训练(0-20)、验证(21-22)和测试(23-24)以及Mikolov等人(2010)的预处理。由于大约有1m个tokens和,这个版本已经被语言建模社区广泛使用,并且是公开可用的。
通过优化PTB上的最优超参数,我们将该模型应用于各种形态丰富的语言:捷克语、德语、法语、西班牙语、俄语和阿拉伯语。非阿拉伯语数据来自2013年ACL机器翻译研讨会,我们使用与Botha和Blunsom(2014)相同的火车/验证/测试分割。虽然原始数据是公开的,但我们从作者那里获得了预处理版本,其中8位作者的形态学NLM作为我们工作的基线。我们对每个语言使用1m tokens的小数据集(data - s)和大数据集(data - l)进行培训,其中包括比PTB大得多的V的大英语数据。阿拉伯语数据来自新闻评论语料库,我们执行自己的预处理和训练/验证/测试分割。
在这些数据集中,只有单例单词被替换为<unk>,因此我们有效地使用了完整的词汇表。值得注意的是,字符模型可以利用OOV token的表面形式(被替换为<unk>),但是我们不这样做,而是坚持使用预处理版本(尽管不利于字符模型),以便与以前的工作进行精确比较
Optimization
模型采用时间截短反向传播方法进行训练(Werbos 1990; Graves 2013)。我们使用随机梯度下降法反向传播了35个时间步长,其中初始学习率设置为1.0,如果经过一个epoch后验证集的perplexity下降不超过1.0,则将学习率减半。对于Data - s,我们使用batch大小为20,对于数Data - l,我们使用batch大小为100 (更有效)。在每个批处理上平均梯度。我们在非阿拉伯数据上训练25个epoch,在阿拉伯数据上训练30个epoch(足够收敛),在验证集上选择性能最好的模型。模型参数在均匀分布上随机初始化,当参数在[- 0:05;0:05]。
对于正则化,我们使用dropout (Hinton et al. 2012),在LSTM输入到隐藏层(除了初始Highway到LSTM层)和隐藏到输出softmax层上的概率为0:5。我们进一步限制梯度的范数小于5,这样,如果梯度的L2范数大于5,那么在更新之前,我们将其重新正规化为。梯度范数约束是训练模型的关键。这些选择在很大程度上受到Zaremba等人(2014)以前使用LSTMs进行词汇级语言建模的工作的指导。
最后,为了加快对数据l的训练,我们采用了层次结构的softmax (Morin和Bengio 2005),这是一种使用非常大的jVj而不是通常的softmax来训练语言模型的通用策略。选取聚类的个数,将V随机分成互斥的、集合穷举的子集,例如:;(近似)相等大小的Vc。然后变为
其中r为簇索引,令。第一项是取r的概率,第二项是取r的概率,式子是在簇r被选中的情况下,选择单词j的概率。我们发现hierarchical softmax最大值对于基于Data-s的模型是不必要的。
Related Work
神经语言模型(NLM)包含了丰富的用于语言建模的神经网络体系结构。一些示例架构包括前馈(Bengio、Ducharme和Vincent 2003)、递归(Mikolov et al. 2010)、sumo -product (Cheng et al. 2014)、log-双线性(Mnih和Hinton 2007)和卷积(Wang et al. 2015)网络。
为了解决罕见的单词问题,Alexandrescu和Kirchhoff(2006)在Bilmes和Kirchhoff(2003)基于基于计数的n-gram语言模型的类似工作的基础上,将单词表示为一组共享因子嵌入。他们的因子神经语言模型(FNLM)可以包含语素、单词形状信息(如大写字母)或任何其他注释(如词性标记)来表示单词。
一类特殊的FNLMs利用语素信息,将一个单词视为其(习得的)语素嵌入的函数(Luong, Socher, and Manning 2013;Botha and Blunsom 2014;Qui等,2014)。例如Luong, Socher, and Manning(2013)在词素嵌入上应用递归神经网络来获得单个单词的嵌入。虽然这些模型已被证明是有用的,但它们需要将形态学标记作为预处理步骤。
另一个工作方向涉及纯字符级NLMs,其中输入和输出都是字符(Sutskever、Martens和Hinton 2011; Graves 2013)。字符级模型避免了形态学标记或手工特征工程的需要,并且具有能够生成新单词的吸引人的特性。然而,它们通常被单词级模型超越(Mikolov等,2012)。
在语言建模之外,关于词性标记(dos Santos和Zadrozny 2014)和命名实体识别(dos Santos)的改进也有报道(Guimaraes 2015),将一个单词表示为其单词嵌入和字符级CNN输出的串联,并使用组合表示作为条件随机字段(CRF)中的特征。Zhang, Zhao, and LeCun(2015)完全消除了单词嵌入,并表明对于文本分类,深度CNN对字符的处理效果很好。Ballesteros、Dyer和Smith(2015)使用RNN over字符只是为了训练基于转换的解析器,从而改进了许多形态学丰富的语言。
最后,Ling等(2015)在字符上应用双向LSTM作为语言建模和词性标注的输入。他们在各种语言(英语、葡萄牙语、加泰罗尼亚语、德语、土耳其语)上都有进步。至于哪一种字符组合模型(即CNN或LSTM)表现得更好,目前还没有定论。
Conclusion
我们引入了一个只利用字符级输入的神经语言模型。预测仍然是在文字层面进行的。尽管参数较少,但是我们的模型比使用单词/语素嵌入输入层的基线模型表现得更好。我们的工作质疑单词嵌入(作为输入)对神经语言建模的必要性。
通过对模型中字符组成部分的单词表示形式的分析,进一步表明该模型能够仅从字符进行编码,具有丰富的语义和正字法特征。使用CharCNN和highway图层进行表示学习(例如作为word2vec的输入(Mikolov et al. 2013))仍然是未来工作的一个方向。
既然作为输入的单词顺序处理在自然语言处理中是普遍存在的,那么看看本文介绍的体系结构是否适用于其他任务,例如作为神经机器翻译中的编码器/解码器(Cho等,2014;Sutskever, Vinyals和Le 2014)。