NLP十大里程碑

2.1 里程碑一:1985复杂特征集

复杂特征集(complex feature set)又叫做多重属性(multiple features)描写。语言学里,这种描写方法最早出现在语音学中。美国计算语言学家Martin Kay于1985年在“功能合一语法”(FunctionalUnification Grammar,简称FUG)新语法理论中,提出复杂特征集”(complex feature set)概念。后来被Chomsky学派采用来扩展PSG的描写能力。

图1 美国计算语言学家Martin Kay

现在在语言学界、计算语言学界,语法系统在词汇层的描写中常采用复杂特征集,利用这些属性来强化句法规则的约束力。一个复杂特征集F包含任意多个特征名fi特征值vi对。其形式如:

F = {…, fi=vi, …}, i=1,…,n

特征值vi既可以是一个简单的数字或符号,也可以是另外一个复杂特征集。这种递归式的定义使复杂特征集获得了强大的表现能力。举例来说,北京大学俞士汶开发的《现代汉语语法信息词典》[10],对一个动词定义了约40项属性描写,对一个名词定义了约27项属性描写。

一条含有词汇和短语属性约束的句法规则具有如下的一般形式:

: <属性约束>

: <属性传递>

一般来说,PSG规则包括右部(条件:符号序列的匹配模式)和左部(动作:短语归并结果)。词语的“属性约束”直接来自系统的词库,而短语的“属性约束”则是在自底向上的短语归并过程中从其构成成分的中心语(head)那里继承过来的。在Chomsky的理论中这叫做X-bar理论。X-bar代表某个词类X所构成的、仍具有该词类属性的一个成分。如果X=N,就是一个具有名词特性的N-bar。当一条PSG规则的右部匹配成功,且“属性约束”部分得到满足,这条规则才能被执行。此时,规则左部所命名的的短语被生成,该短语的复杂特征集通过“属性传递”部分动态生成。

80年代末、90年代初学术界提出了一系列新的语法,如广义短语结构语法(GPSG)、中心语驱动的短语结构语法(HPSG)、词汇功能语法(LFG)等等。这些形式语法其实都是在词汇和短语的复杂特征集描写背景下产生的。合一(unification)算法则是针对复杂特征集的运算而提出来的。“合一”是实现属性匹配和赋值的一种算法,所以上述这些新语法又统称为“基于合一的语法”。

2.2 里程碑二:1966词汇主义

NLP领域第二个里程碑式贡献是词汇主义(lexicalism)。1966年,韩礼德(Halliday)提出词汇不是用来填充语法确定的一套“空位”(slots),而是一个独立的语言学层面;词汇研究可以作为对语法理论的补充,却不是语法理论的一部分,他主张把词汇从语法研究中独立地分离出来。语言学家Hudson宣称,词汇主义是当今语言学理论头号发展倾向[5]。出现原因也同上节两事实有关。词汇主义方法不仅提出一种颗粒度更细的语言知识表示形式,而且体现一语言知识递增式开发和积累的新思路。

首先解释一个背景矛盾。一方面,语言学界一向认为,不划分词类就无法讲语法,如前面介绍的短语结构语法,语法“不可能”根据个别单独的词来写规则。但是另一方面,人们近来又注意到,任何归类其实都会丢失个体的某些重要信息。所以从前文提到的第一个事实出发,要想强化语法约束能力,词汇的描写应当深入到比词类更细微的词语本身上来。换句话讲,语言学呼唤在词汇层采用颗粒度更小的描写单元。从本质上来说,词汇主义倾向反映了语言描写的主体已经从句法层转移到了词汇层;这也就是所谓的“小语法,大词库”的思想。下面让我们来看与词汇主义有关的一些工作。

2.2.1 词汇语法学(Lexicon-grammar)

法国巴黎大学Gross教授60年代创立研究中心LADL(http://www.ladl.jussieu.fr/),提出了词汇语法的概念。

• 把12,000个主要动词分成50个子类。

• 每个动词都有一个特定的论元集。

• 每一类动词都有一个特定的矩阵, 其中每个动词都用400个不同句式来逐一描写(“+”代表可进入该句式;“-”表示不能)。

• 已开发英、法、德、西等欧洲语言的大规模描写。

• INTEX是一个适用于大规模语料分析的工具,已先后被世界五十多个研究中心采用。

2.2.2 框架语义学(Frame Semantics)

Fillmore格语法(Case Grammar)创始人,前几年主持美国自然科学基金的一个名为框架语义学的项目(http://www.icsi.berkeley.edu/~framenet)。该项目从WordNet上选取了2000个动词,从中得到75个语义框架。例如,动词”categorize”的框架被定义为:

一个人(Cognizer)把某个对象(Item)视为某个类(Category)。

同原先的格框架相比,原来一般化的动作主体被具体化为认知者Cognizer,动作客体被具体化为事物Item,并根据特定体动词的性质增加了一个作为分类结果的语义角色Category。

项目组还从英国国家语料库中挑出50,000个相关句子,通过人工给每个句子标注了相应的语义角色。例句:

Kimcategorized the book as fiction.

(Cog) (Itm)(Cat)

2.2.3 WordNet

WordNet是一个描写英语词汇层语义关系的词库(http://www.cogsci.princeton.edu:80/~wn/),1990年由普林斯顿大学Miller开发。至今有很多版本,全部公布在因特网上,供研究人员自由下载。欧洲有一个Euro-WordNet,以类似的格式来表现各种欧洲语言的词汇层语义关系。WordNet刻意描写的是词语之间的各种语义关系,如同义关系(synonymy)、反义关系(antonymy)、上下位关系(hyponymy),部分-整体关系(part-of)等等。这种词汇语义学又叫做关系语义学。这一学派同传统的语义场理论和和语义属性描写理论相比,其最大的优势在于第一次在一种语言的整个词汇表上实现了词汇层的语义描写。这是其他学派从来没有做到的。其他理论迄今仅仅停留在教科书或某些学术论文中,从来就没有得到工程规模的应用。下面是WordNet的概况:

• 95,600条实词词型(动词、名词、形容词)

• 被划分成70,100个同义词集(synsets)

2.2.4 知网网(How-Net)

知网是董振东董强[9]设计的一个汉语语义知识网(http://www.keenage.com),访问只有主页。

• 自下而上地依据概念对汉语实词进行了穷尽的分类。

• 15,000个动词被划分成810类。

• 定义了300个名词类,100个形容词类。

• 全部概念用400个语义元语来定义。

知网特点是既有WordNet所描写的同一类词间语义关系(如:同义、反义、上下位、部分-整体等),又描写不同类词之间的论旨关系和语义角色。

3.2.5 MindNet

MindNet是微软研究院NLP组设计的词汇语义网(http://research.microsoft.com/nlp/),用三元组(triple)作为全部知识的表示基元。一个三元组由两个节点和一条连接边组成。每个节点代表一个概念,连接两个概念节点的边表示概念之间的语义依存关系。全部三元组通过句法分析器自动获取。

具体通过对两部英语词典(Longman Dictionaryof Contemporary English,AmericanHeritage Dictionary)和一部百科全书(Encarta)中的全部句子进行分析,获得每个句子的逻辑语义表示(logical form,简称LF)。而LF本来就是由三元组构成的,如(W1, V-Obj,W2)表示:W1是一个动词,W2是其宾语中的中心词,因此W2从属于W1,它们之间的关系是V-Obj。比如(play, V-Obj,basketball)便是一个具体的三元组。又如(W1, H-Mod,W2),W1代表一个偏正短语中的中心词(head word),W2是其修饰语(modifier),因此W2从属于W1,它们之间的关系是H-Mod。

这种资源是完全自动做出来的,所得三元组不可能没有错误。但是那些出现频度很高的三元组一般来说正确。MindNet已经应用到像语法检查、句法结构排歧、词义排歧、机器翻译等许多场合。

2.3 里程碑三:1976统计语言模型

第三大贡献是语料库方法,或叫统计语言模型。首先成功利用数学方法解决自然语言处理问题的是语音和语言处理大师弗雷德·贾里尼克(Fred Jelinek)。1968年始在IBM研究中心兼职1974年全职加入,他领导一批杰出科学家利用大型计算机处理人类语言问题。学术休假(SabbaticalLeave)时(约1972-1976年间)提出统计语言模型。1990s李开复用统计语言模型把997个词的语音识别问题简化成了20词识别问题,实现了有史以来第一次大词汇量非特定人连续语言的识别。常用统计语言模型,包括N元文法模型(N-gram Model)、隐马尔科夫模型(Hidden MarkovModel,简称HMM)、最大熵模型(MaximumEntropy Model)等。

图2 现代语音识别和自然语言处理研究的先驱、美国工程院院士Frederick Jelinek

如果用变量W代表一个文本中顺序排列的n个词,即W = w1w2…wn,则统计语言模型的任务是给出任意一个词序列W在文本中出现的概率P(W)。利用概率的乘积公式,P(W)可展开为:

P(W) =P(w1)P(w2/w1)P(w3/ w1 w2)…P(wn/w1 w2…wn-1) (1)

式中P(w1)表示第一个词w1的出现概率,P(w2/w1)表示在w1出现的情况下第二个词w2出现的条件概率,依此类推。不难看出,为了预测词wn的出现概率,必须已知它前面所有词的出现概率。从计算上来看,这太复杂了。如果近似认为任意一个词wi的出现概率只同它紧邻的前一个词有关,那么计算就得以大大简化。这就是所谓的二元模型(bigram),由(1)式得:

P(W) ≈ P(w1)∏i=2,…,nP(wi/ wi-1 ) (2)

式中∏i=2,…,nP(wi/ wi-1 )表示多个概率的连乘。

需要着重指出的是:这些概率参数都可以通过大规模语料库来估值。比如二元概率

P(wi/ wi-1) ≈count(wi-1 wi) / count(wi-1) (3)

式中count(…)表示一个特定词序列在整个语料库中出现的累计次数。若语料库的总词次数为N,则任意词wi在该语料库中的出现概率可估计如下:

P(wi) ≈count(wi) / N (4)

同理,如果近似认为任意词wi的出现只同它紧邻前两个词有关,就得到一个三元模型(trigram):

P(W) ≈P(w1)P(w2/w1) ∏i=3,…,nP(wi/wi-2 w-1 ) (5)

统计语言模型的方法有点像天气预报。用来估计概率参数的大规模语料库好比是一个地区历年积累起来的气象记录,而用三元模型来做天气预报,就像是根据前两天的天气情况来预测当天的天气。天气预报当然不可能百分之百正确。这也算是概率统计方法的一个特点。

2.3.1 语音识别

语音识别作为计算机汉字键盘输入的一种图代方式,越来越受到信息界人士的青睐。所谓听写机就是这样的商品。据报道中国的移动电话用户已超过一亿,随着移动电话和个人数字助理(PDA)的普及,尤其是当这些随身携带的器件都可以无线上网的时候,广大用户更迫切期望通过语音识别或手写板而不是小键盘来输入简短的文字信息。

其实,语音识别任务可视为计算以下条件概率的极大值问题:

W*= argmaxWP(W/speech signal)

= argmaxWP(speech signal/W) P(W) / P(speech signal)

= argmaxWP(speech signal/W) P(W) (6)

式中数学符号argmaxW表示对不同的候选词序列W计算条件概率P(W/speech signal)的值,从而使W*成为其中条件概率值最大的那个词序列,这也就是计算机选定的识别结果。换句话讲,通过式(6)的计算,计算机找到了最适合当前输入语音信号speech signal的词串W*。

式(6)第二行是利用贝叶斯定律转写的结果,因为条件概率P(speech signal/W)比较容易估值。公式的分母P(speech signa)对给定的语音信号是一个常数,不影响极大值的计算,故可以从公式中删除。在第三行所示的结果中,P(W)就是前面所讲得统计语言模型,一般采用式(5)所示的三元模型;P(speechsignal/W)叫做声学模型

讲到这儿,细心的读者可能已经明白,汉语拼音输入法中的拼音-汉字转换任务其实也是用同样方法实现的,而且两者所用的汉语语言模型(即二元或三元模型)是同一个模型。

据笔者所知,目前市场上的听写机产品和微软拼音输入法(3.0版)都是用词的三元模型实现的,几乎完全不用句法-语义分析手段。为什么会出现这样的局面呢?这是优胜劣汰的客观规律所决定的。可比的评测结果表明,用三元模型实现的拼音-汉字转换系统,其出错率比其它产品减少约50%。

2.3.2 词性标注

一个词库中大约14%的词型具有不只一个词性。而在一个语料库中,占总词次数约30%的词具有不止一个词性。所以对一个文本中的每一个词进行词性标注,就是通过上下文的约束,实现词性歧义的消解。历史上曾经先后出现过两个自动词性标注系统。一个采用上下文相关的规则,叫做TAGGIT(1971),另一个应用词类的二元模型,叫做CLAWS(1987)[2]。两个系统都分别对100万词次的英语非受限文本实施了词性标注。结果显示,采用统计语言模型的CLAWS系统的标注正确率大大高于基于规则方法的TAGGIT系统。请看下表的对比:

系统名

TAGGIT(1971)

CLAWS(1987)

标记数

86

133

方法

3000条CSG

规则

隐马尔科夫模型

标注精度

77%

96%

测试语料

布朗LOB

令C和W分别代表词类标记序列和词序列,则词性标注问题可视为计算以下条件概率的极大值:

C*= argmaxCP(C/W)

= argmaxCP(W/C)P(C) / P(W)

≈ argmaxC∏i=1,…,nP(wi/ci )P(ci /ci-1 ) (7)

式中P(C/W)是已知输入词序列W的情况下,出现词类标记序列C的条件概率。数学符号argmaxC表示通过考察不同的候选词类标记序列C,来寻找使条件概率取最大值的那个词类标记序列C*。后者应当就是对W的词性标注结果。

公式第二行是利用贝叶斯定律转写的结果,由于分母P(W)对给定的W是一个常数,不影响极大值的计算,可以从公式中删除。接着对公式进行近似。首先,引入独立性假设,认为任意一个词wi的出现概率近似只同当前词的词类标记ci有关,而与周围(上下文)的词类标记无关。于是词汇概率可计算如下:

P(W/C) ≈∏i=1,…,n P(wi/ci ) (8)

其次,采用二元假设,即近似认为任意一个词类标记ci的出现概率只同它紧邻的前一个词类标记ci-1有关。有

P(C) ≈ P(c1)∏i=2,…,n P(ci /ci-1 ) (9)

P(ci /ci-1 )是词类标记的转移概率,也叫做基于词类的二元模型。

上述这两个概率参数都可以通过带词性标记的语料库来分别估计:

P(wi/ci ) ≈count(wi,ci) / count(ci) (10)

P(ci /ci-1 ) ≈count(ci-1ci) / count(ci-1) (11)

据文献报道,采用统计语言模型方法汉语和英语的次性标注正确率都可以达到96%左右[6]。

2.3.3 介词短语PP的依附歧义

英语中介词短语究竟依附于前面的名词还是前面的动词,是句法分析中常见的结构歧义问题。下例用语料库方法来解决这个问题,以及这种方法究竟能达到多高的正确率。

例句:Pierre Vinken,61 years old, joined the board as a nonexecutive director.

令A=1表示名词依附,A=0为动词依附,则上述例句的PP依附问题可表为:

(A=0,V=joined, N1=board, P=as, N2=director)

令V, N1, N2分别代表句中动词短语、宾语短语、介宾短语的中心词,并在一个带有句法标注的语料库(又称树库)中统计如下四元组的概率Pr:

Pr = (A=1 /V=v, N1=n1, P=p, N2=n2) (10)

对输入句子进行PP 依附判断的算法如下:

若Pr = (1 / v, n1, p, n2) ≥ 0.5,

则判定PP依附于n1,

否则判定PP依附于v。

CollinsBrooks[8]实验使用的语料库是宾夕法尼亚大学标注的华尔街日报(WSJ)树库,包括:训练集20,801个四元组,测试集3,097个四元组。他们对PP依附自动判定精度的上下限作了如下分析:

一律视为名词依附(即A≡1) 59.0%

只考虑介词p的最常见附加72.2%

三位专家只根据四个中心词判断88.2%

三位专家根据全句判断93.2%

很明显,自动判断精确率的下限是72.2%,因为机器不会比只考虑句中介词p的最常见依附做得更差了;上限是88.2%,因为机器不可能比三位专家根据四个中心词作出的判断更高明。

论文报告,在被测试的3,097个四元组中,系统正确判断的四元组为2,606个,因此平均精确率为84.1%。这与上面提到的上限值88.2%相比,应该说是相当不错的结果。

传统三大技术里程碑小结

语言学家在不论是复杂特征集和合一语法,还是词汇主义方法,都是原先所谓的理性主义框架下做出的重大贡献。词汇主义方法提出了一种颗粒度更细的语言知识表示形式,而且体现了一种语言知识递增式开发和积累的新思路,值得特别推崇。尤其值得重视的是,在众多词汇资源的开发过程中,语料库和统计学习方法发挥了很大的作用。这是经验主义方法和理性主义方法相互融合的可喜开端,也是国内知名语言学者冯志伟等人认可的研究范式。

语料库方法和统计语言模型,国内同行中实际上存在不同评价。有种观点认为NLP必须建立在语言理解基础上,他们不大相信统计语言模型在语音识别、词性标注、信息检索等应用领域中所取得的进展。这些争论不能澄清,是因为同行间缺少统一评测。有评测才会有鉴别。

评判某方法优劣应公开、公平、相互可比的评测标准,而非研究员设计“自评”。黄昌宁、张小凤2013年论文表示,语料库方法和统计语言模型是当前自然语言处理技术的主流,其实用价值已在很多应用系统中得到充分证实。统计语言模型研究在结构化对象的统计建模方面,仍有广阔发展空间。自然语言处理领域业界知名博主Sebatian Ruder在2018年文章[22]从神经网络技术角度,总结NLP领域近15年重大进展、8大里程碑事件,提及很多神经网络模型。这些模型建立在同一时期非神经网络技术之上,如上述三大里程碑。下面接着看后续NLP技术的发展。

2.4 里程碑四:2001神经语言模型(Neural language models)

语言模型解决的是在给定已出现词语的文本中,预测下一个单词的任务。这是最简单的语言处理任务,有许多具体实际应用,如智能键盘、电子邮件回复建议等。语言模型历史由来已久,经典方法基于n-grams模型(利用前面n个词语预测下一个单词),并利用平滑操作处理不可见的n-grams。

第一个神经语言模型,前馈神经网络(feed-forward neural network),是Bengio等人于2001年提出的。模型以某词语之前出现的n个词语作为输入向量,也就是现在大家说的词嵌入(word embeddings)向量。这些词嵌入在级联后进入一个隐藏层,该层的输出然后通过一个softmax层。如图3所示。

图3 前馈神经网络语言模型(Bengio et al., 2001;2003)

而现在构建语言模型的前馈神经网络,已被循环神经网络(RNNs)和长短期记忆神经网络(LSTMs)取代。虽然后来提出许多新模型在经典LSTM上进行了扩展,但它仍然是强有力的基础模型。甚至Bengio等人的经典前馈神经网络在某些设定下也和更复杂的模型效果相当,因为这些任务只需要考虑邻近的词语。理解这些语言模型究竟捕捉了哪些信息,也是当今一个活跃的研究领域。

语言模型的建立是一种无监督学习(unsupervisedlearning)Yann LeCun称之为预测学习(predictivelearning),是获得世界如何运作常识的先决条件。关于语言模型最引人注目的是,尽管它很简单,但却与后文许多核心进展息息相关。反过来,这也意味着NLP领域许多重要进展都可以简化为某种形式的语言模型构建。但要实现对自然语言真正意义上的理解,仅仅从原始文本中进行学习是不够的,我们需要新的方法和模型。

2.5 里程碑五:2008多任务学习(Multi-task learning)

多任务学习是在多个任务下训练的模型之间共享参数的方法,在神经网络中通过捆绑不同层的权重轻松实现。多任务学习思想1993年Rich Caruana首次提出,并应用于道路追踪和肺炎预测。多任务学习鼓励模型学习对多个任务有效的表征描述。这对于学习一般的、低级的描述形式、集中模型的注意力或在训练数据有限的环境中特别有用。

多任务学习2008年被CollobertWeston等人首次在自然语言处理领域应用于神经网络。在他们的模型中,词嵌入矩阵被两个在不同任务下训练的模型共享,如图4所示。

图4 词嵌入矩阵共享(Collobert & Weston,2008; Collobert et al., 2011)

共享的词嵌入矩阵使模型可以相互协作,共享矩阵中的低层级信息,而词嵌入矩阵往往构成了模型中需要训练的绝大部分参数。Collobert和Weston发表于2008年的论文,影响远远超过了它在多任务学习中的应用。它开创的诸如预训练词嵌入和使用卷积神经网络处理文本的方法,在接下来的几年被广泛应用。他们也因此获得2018年机器学习国际会议(ICML)test-of-time

如今,多任务学习在自然语言处理领域广泛使用,而利用现有或“人工”任务已经成为NLP指令库中的一个有用工具。虽然参数的共享是预先定义好的,但在优化的过程中却可以学习不同的共享模式。当模型越来越多地在多个任务上进行测评以评估其泛化能力时,多任务学习就变得愈加重要,近年来也涌现出更多针对多任务学习的评估基准。

2.6 里程碑六:2013词嵌入

稀疏向量对文本进行表示的词袋模型,在自然语言处理领域有很长历史。而用稠密的向量对词语进行描述,也就是词嵌入,则在2001年首次出现。2013年Mikolov等人工作主要创新之处在于,通过去除隐藏层和近似计算目标使词嵌入模型的训练更为高效。尽管这些改变本质上十分简单,但它们与高效的word2vec(wordto vector用来产生词向量的相关模型)组合在一起,使得大规模的词嵌入模型训练成为可能。

Word2vec有两种不同的实现方法:CBOW(continuousbag-of-words)和skip-gram。它们在预测目标上有所不同:一个是根据周围的词语预测中心词语,另一个则恰恰相反。如图5所示。

图5 CBOW和skip-gram架构(Mikolov et al., 2013a; 2013b)

虽然这些嵌入与使用前馈神经网络学习的嵌入在概念上没有区别,但是在一个非常大语料库上的训练使它们能够获取诸如性别、动词时态和国际事务等单词之间的特定关系。如下图 4所示。

图6 word2vec捕获的联系(Mikolov et al., 2013a; 2013b)

这些关系和它们背后的意义激起了人们对词嵌入的兴趣,许多研究都在关注这些线性关系的来源。然而,使词嵌入成为目前自然语言处理领域中流砥柱的,是将预训练的词嵌入矩阵用于初始化可以提高大量下游任务性能的事实

虽然word2vec捕捉到的关系具有直观且几乎不可思议的特性,但后来的研究表明,word2vec本身并没有什么特殊之处:词嵌入也可以通过矩阵分解来学习,经过适当的调试,经典的矩阵分解方法SVD和LSA都可以获得相似的结果。从那时起,大量的工作开始探索词嵌入的不同方面。尽管有很多发展,word2vec仍是目前应用最为广泛的选择。Word2vec应用范围也超出了词语级别:带有负采样的skip-gram——一个基于上下文学习词嵌入的方便目标,已经被用于学习句子的表征。它甚至超越了自然语言处理的范围,被应用于网络和生物序列等领域。

一个激动人心的研究方向是在同一空间中构建不同语言的词嵌入模型,以达到(零样本)跨语言转换的目的。通过无监督学习构建这样的映射变得越来越有希望(至少对于相似的语言来说),这也为语料资源较少的语言和无监督机器翻译的应用程序创造可能。

2.7 里程碑七:2013RNN/CNN用于NLP的神经网络

20132014年是自然语言处理领域神经网络时代的开始。其中三种类型的神经网络应用最为广泛:循环神经网络(recurrentneural networks)、卷积神经网络(convolutionalneural networks)和结构递归神经网络(recursiveneural networks)。

循环神经网络是NLP领域处理动态输入序列最自然的选择。Vanilla循环神经网络很快被经典的长短期记忆网络(long-shorttermmemory networks,LSTM)代替,该模型能更好地解决梯度消失和梯度爆炸问题。在2013年之前,人们仍认为循环神经网络很难训练,直到Ilya Sutskever博士的论文改变了循环神经网络这一名声。双向的长短期记忆记忆网络通常被用于同时处理出现在左侧和右侧的文本内容。LSTM 结构如图7所示。

图7 LSTM网络(来源:ChrisOlah)

应用于文本的卷积神经网络只在两个维度上进行操作,卷积层只需要在时序维度上移动即可。图8展示了应用于自然语言处理的卷积神经网络的典型结构。

图8 卷积神经网络(Kim,2014)

与循环神经网络相比,卷积神经网络的一个优点是具有更好的并行性。因为卷积操作中每个时间步的状态只依赖于局部上下文,而不是循环神经网络中那样依赖于所有过去的状态。卷积神经网络可以使用更大的卷积层涵盖更广泛的上下文内容。卷积神经网络也可以和长短期记忆网络进行组合和堆叠,还可以用来加速长短期记忆网络的训练。

循环神经网络和卷积神经网络都将语言视为一个序列。但从语言学的角度来看,语言是具有层级结构的:词语组成高阶的短语和小句,它们本身可以根据一定的产生规则递归地组合。这激发了利用结构递归神经网络,以树形结构取代序列来表示语言的想法,如图9所示。

图9 结构递归神经网络(Socher et al., 2013)

结构递归神经网络自下而上构建序列的表示,与从左至右或从右至左对序列进行处理的循环神经网络形成鲜明的对比。树中的每个节点是通过子节点的表征计算得到的。一个树也可以视为在循环神经网络上施加不同的处理顺序,所以长短期记忆网络则可以很容易地被扩展为一棵树。

不只是循环神经网络和长短期记忆网络可以扩展到使用层次结构,词嵌入也可以在语法语境中学习,语言模型可以基于句法堆栈生成词汇,图形卷积神经网络可以树状结构运行。

2.8 里程碑八:2014序列到序列模型(Sequence-to-sequencemodels)

2014年,Sutskever等人提出序列到序列学习,即使用神经网络将一个序列映射到另一个序列的一般化框架。在这个框架中,一个作为编码器的神经网络对句子符号进行处理,并将其压缩成向量表示;然后,一个作为解码器的神经网络根据编码器的状态逐个预测输出符号,并将前一个预测得到的输出符号作为预测下一个输出符号的输入。如图10所示。

图10 序列到序列模型(Sutskever et al., 2014)

机器翻译是这一框架的杀手级应用。2016年,谷歌宣布他们将用神经机器翻译模型取代基于短语的整句机器翻译模型。谷歌大脑负责人Jeff Dean表示,这意味着500行神经网络模型代码取代50万行基于短语的机器翻译代码

由于其灵活性,该框架在自然语言生成任务上被广泛应用,其编码器和解码器分别由不同的模型来担任。更重要的是,解码器不仅可以适用于序列,在任意表示上均可以应用。比如基于图片生成描述(如图11)、基于表格生成文本、根据源代码改变生成描述,以及众多其他应用。

图11 基于图像生成标题(Vinyalset al., 2015)

序列到序列的学习甚至可以应用到自然语言处理领域常见的结构化预测任务中,也就是输出具有特定的结构。为简单起见,输出就像选区解析一样被线性化(如图12)。在给定足够多训练数据用于语法解析的情况下,神经网络已经被证明具有产生线性输出和识别命名实体的能力。

图12 线性化选区解析树(Vinyalset al., 2015)

序列的编码器和解码器通常都是基于循环神经网络,但也可以使用其他模型。新的结构主要都从机器翻译的工作中诞生,它已经成了序列到序列模型的培养基。近期提出的模型有深度长短期记忆网络卷积编码器Transformer(一个基于自注意力机制的全新神经网络架构)以及长短期记忆依赖网络和的 Transformer 结合体等。

2.9 里程碑九:2015注意力机制和基于记忆的神经网络

注意力机制是神经网络机器翻译(NMT)的核心创新之一,也是使神经网络机器翻译优于经典的基于短语的机器翻译的关键。序列到序列学习的主要瓶颈是,需要将源序列的全部内容压缩为固定大小的向量。注意力机制通过让解码器回顾源序列的隐藏状态,以此为解码器提供加权平均值的输入来缓解这一问题,如图13所示。

图13 注意力机制(Bahdanau et al., 2015)

之后,各种形式的注意力机制涌现而出。注意力机制被广泛接受,在各种需要根据输入的特定部分做出决策的任务上都有潜在的应用。它已经被应用于句法分析、阅读理解、单样本学习等任务中。它的输入甚至不需要是一个序列,而可以包含其他表示,比如图像的描述(图14)。

注意力机制一个有用的附带作用是它通过注意力权重来检测输入的哪一部分与特定的输出相关,从而提供了一种罕见的虽然还是比较浅层次的,对模型内部运作机制的窥探。

图14 图像描述模型中的视觉注意力机制指示在生成”飞盘”时所关注的内容(Xu etal., 2015)

注意力机制不仅仅局限于输入序列。自注意力机制可用来观察句子或文档中周围的单词,获得包含更多上下文信息的词语表示。多层的自注意力机制是神经机器翻译前沿模型Transformer的核心。

注意力机制可以视为模糊记忆的一种形式,其记忆的内容包括模型之前的隐藏状态,由模型选择从记忆中检索哪些内容。与此同时,更多具有明确记忆单元的模型被提出。他们有很多不同的变化形式,比如神经图灵机(NeuralTuring Machines)、记忆网络(MemoryNetwork)、端到端的记忆网络(End-to-endMemory Newtorks)、动态记忆网络(DynamicMemoryNetworks)、神经可微计算机(NeuralDifferentiable Computer)、循环实体网络(RecurrentEntityNetwork)。

记忆的存取通常与注意力机制相似,基于与当前状态且可以读取和写入。这些模型之间的差异体现在它们如何实现和利用存储模块。比如说,端到端的记忆网络对输入进行多次处理并更新内存,以实行多次推理。神经图灵机也有一个基于位置的寻址方式,使它们可以学习简单的计算机程序,比如排序。基于记忆的模型通常用于需要长时间保留信息的任务中,例如语言模型构建和阅读理解。记忆模块的概念非常通用,知识库和表格都可以作为记忆模块,记忆模块也可以基于输入的全部或部分内容进行填充。

2.10里程碑十:2018预训练语言模型

预训练的词嵌入与上下文无关,仅用于初始化模型中的第一层。近几个月以来,许多有监督的任务被用来预训练神经网络。相比之下,语言模型只需要未标记的文本,因此其训练可以扩展到数十亿单词的语料、新的领域、新的语言。预训练的语言模型于 2015年被首次提出,但直到最近它才被证明在大量不同类型的任务中均十分有效。语言模型嵌入可以作为目标模型中的特征,或者根据具体任务进行调整。如下图所示,语言模型嵌入为许多任务的效果带来了巨大的改进。

图13 改进的语言模型嵌入(Peterset al., 2018)

使用预训练的语言模型可以在数据量十分少的情况下有效学习。由于语言模型的训练只需要无标签的数据,因此他们对于数据稀缺的低资源语言特别有利。2018年10月,谷歌AI语言组发布BERT语言模型预训练,已被证明可有效改进许多自然语言处理任务(Dai and Le, 2015; Peters et al., 2017, 2018; Radford etal., 2018; Howard and Ruder, 2018)。这些任务包括句子级任务,如自然语言推理inference(Bowman et al., 2015; Williams et al., 2018)和释义paraphrasing(Dolan and Brockett, 2005),旨在通过整体分析来预测句子之间的关系;以及词块级任务,如命名实体识别(Tjong KimSang and De Meulder, 2003)和SQuAD问题回答(Rajpurkar et al., 2016),其中模型需要在词块级别生成细粒度输出。

近年七大技术里程碑小结

除了上述七大技术里程碑,一些其他进展虽不如上面提到的那样流行,但仍产生了广泛的影响。

基于字符的描述(Character-based representations),在字符层级上使用卷积神经网络和长短期记忆网络,以获得一个基于字符的词语描述,目前已经相当常见了,特别是对于那些语言形态丰富的语种或那些形态信息十分重要、包含许多未知单词的任务。据目前所知,基于字符的描述最初用于序列标注,现在,基于字符的描述方法,减轻了必须以增加计算成本为代价建立固定词汇表的问题,并使完全基于字符的机器翻译的应用成为可能。

对抗学习(Adversarial learning),在机器学习领域已经取得了广泛应用,在自然语言处理领域也被应用于不同的任务中。对抗样例的应用也日益广泛,他们不仅仅是探测模型弱点的工具,更能使模型更具鲁棒性(robust)。(虚拟的)对抗性训练,也就是最坏情况的扰动,和域对抗性损失(domain-adversariallosses)都是可以使模型更具鲁棒性的有效正则化方式。生成对抗网络(GANs)目前在自然语言生成任务上还不太有效,但在匹配分布上十分有用。

强化学习(Reinforcement learning)在具有时间依赖性任务上证明有效,比如在训练期间选择数据和对话建模。在机器翻译和概括任务中,强化学习可以有效地直接优化“红色”和“蓝色”这样不可微的度量,不必去优化像交叉熵这样的代理损失函数。同样,逆向强化学习(inversereinforcement learning)在类似视频故事描述这样的奖励机制非常复杂且难以具体化的任务中,也非常有用。

NLP十大里程碑的更多相关文章

  1. NLP知识十大结构

    NLP知识十大结构 2.1形式语言与自动机 语言:按照一定规律构成的句子或者字符串的有限或者无限的集合. 描述语言的三种途径: 穷举法 文法(产生式系统)描述 自动机 自然语言不是人为设计而是自然进化 ...

  2. IT项目经理应具备的十大软技能

    现在,企业对IT部项目经理的要求越来越多.如果你认为IT项目成员只需要技术性能力,那可就错了. 据IT招聘公司调查发现,几年人们对项目管理软技能的兴趣明显浓厚起来.许多企业尽量避免把IT部门看成只是成 ...

  3. 回望2017,基于深度学习的NLP研究大盘点

    回望2017,基于深度学习的NLP研究大盘点 雷锋网 百家号01-0110:31 雷锋网 AI 科技评论按:本文是一篇发布于 tryolabs 的文章,作者 Javier Couto 针对 2017 ...

  4. 【十大经典数据挖掘算法】PageRank

    [十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 我特地把PageRank作为[十大经 ...

  5. 【十大经典数据挖掘算法】EM

    [十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 1. 极大似然 极大似然(Maxim ...

  6. 【十大经典数据挖掘算法】AdaBoost

    [十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 1. 集成学习 集成学习(ensem ...

  7. 【十大经典数据挖掘算法】SVM

    [十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART SVM(Support Vector ...

  8. 微信小程序与传统APP十大优劣对比

    随着微信公众平台的开放,微信端小程序涌现市场,带来很很多便利和简单的原生操作,询:微信端小程序是否会替代传统的APP应用?两者的优劣如何?我们一起来看看传统APP与微信端小程序十大优劣对比       ...

  9. 转:IT公司的十大内耗,别说你公司没有!

    这篇文章是以前看到的,觉得写得非常好,转载在自己BLOG作为记录.原文:http://www.pmtoo.com/news/2015/0108/7260.html. 当企业发展到一定时期时,会不可避免 ...

随机推荐

  1. PHP递归遍历数组 不破坏数据结构 替换字符

    代码如下: <?php $arr = array('0'=>array("<小刚>","<小晓>","<小飞 ...

  2. centos7.x firewall简单使用

    开放一个端口: firewall-cmd --zone=public --add-port=22/tcp –permanent 开放一个范围端口对外部所有地址生效: firewall-cmd --zo ...

  3. XUtils开源框架的使用(HttpUtils支持多线程断点续传)

    XUtils项目下载地址:https://github.com/wyouflf/xUtils XUtils中包含的四大模块: 1.DbUtils模块 2.ViewUtils模块 3.HttpUtils ...

  4. poj1703 Find them, Catch them(带权并查集)

    题目链接 http://poj.org/problem?id=1703 题意 有两个帮派:龙帮和蛇帮,两个帮派共有n个人(编号1~n),输入m组数据,每组数据为D [a][b]或A [a][b],D[ ...

  5. jquery 无刷新添加/删除 input行 实时计算购物车价格

    jquery 无刷新添加/删除 input行 实时计算购物车价格 jquery 未来事件插件jq_Live_Extension.js 演示 <script> $(document).rea ...

  6. Thymeleaf(Java模板引擎)

    一.概念 1.Thymeleaf是Web和独立环境的开源的Java模板引擎,能够处理HTML,XML,JavaScript,CSS甚至纯文本:2.Thymeleaf可以在Web(基于Servlet)和 ...

  7. 华三IRF的配置

    https://blog.csdn.net/VictoryKingLIU/article/details/79255901 拓扑结构 1 配置成员编号(重启) 2 配置成员优先级(大的主设备) 3 配 ...

  8. 《Android源码设计模式》--抽象工厂模式

    No1: 4种MediaPlayer Factory分别会生成不同的MediaPlayer基类:StagefrightPlayer.NuPlayerDriver.MidiFile和TestPlayer ...

  9. CodeForces528A (STLset)

    题面 CodeForces 题解 横着切和竖着切是互相不影响的. 假设现在横着切成了很多段,显然此时面积最大的矩形的一边长就是这些段中长度最长的一段.竖着切的也是一样的. 所以就可以用\(set\)来 ...

  10. C#中的特性 (Attribute) 入门 (一)

    C#中的特性 (Attribute) 入门 (一) 饮水思源 http://www.cnblogs.com/Wind-Eagle/archive/2008/12/10/1351746.html htt ...