2023人工自能机器算法自然语言处理.docx
人工自能机器算法自然语言处理目录第1章自然语言处理21.1 语言模型31.2 文法181.3 句法分析211.4 扩展文法291.5 真实自然语言的复杂性361.6 自然语言任务41第2章自然语言处理中的深度学习451.1 词嵌入461.2 自然语言处理中的循环神经网络511.3 序列到序列模型57第1章自然语言处理在本文中,我们将看到计算机如何使用自然语言与人类进行交流,并从人类所书写的内容中学习。大约10万年前,人类学会了如何说话,大约5千年前,人类又学会了如何写字。人类语言的复杂性和多样性使得智人区别于其他所有物种。当然,人类还有一些其他的特有属性:没有任何其他物种像人类那样穿衣服,进行艺术创作,或者每天花两小时在社交媒体上交流。但是,艾伦图灵所提出的智能测试是基于语言,而非艺术或服饰,也许是因为语言具有普适性,并且捕捉到了如此多的智能行为:一个演讲者演讲(或作家写作)的目标是交流知识,他组织语言来表示这些知识,然后采取行动以实现这一目标。听众(或读者)感知他们的语言并推断其中的含义。这种通过语言的交流促进了文明的发展,是我们传播文化、法律、科学和技术知识的主要方式。计算机进行自然语言处理(naturallanguageprocessing,NLP)有以下3个主要原因。 与人类交流。在很多情况下,人类使用语音与计算机进行交互是很方便的,而且在大多数情况下,使用自然语言要比使用一阶谓词演算等形式语言更加方便。 学习。人类已经用自然语言记录了很多知识。仅维基百科就有30()()万页事实知识,例如“婴猴是一种夜间活动的小型灵长类动物”,然而几乎没有任何一个这样的知识来源是用形式逻辑写成的。如果我们想让计算机系统知道很多知识,它最好能理解自然语言。 使用人工智能工具结合语言学、认知心理学和神经科学,促进对语言和语言使用的科学理解。在本文中,我们将探讨语言的各种数学模型,并讨论使用这些模型可以完成的任务。1.l语言模型正如我们在第8章中所看到的,形式语言(如一阶逻辑)是精确定义的。文法(grammar)定义合法句的句法(syntax)m,语义规则(semanticrule)定义其含义。11在形式语言学和计算机学科中,“grammar”的标准翻译是“文法”,而在计算语言学中则多译作悟法”(摘自中国计算机学会通讯第5卷,第4期,2009,4),而“syntax”有时也译作“语法L在本书中为了区分两个概念,我们将“grammar”译作“文法”,将“syntax”译作“句法”。译者注然而,自然语言(如英语或汉语)无法如此清晰地表示。不同的人在不同的时间对于语言的判断会有所差别。所有人都会认为“Nottobeinvitedissad.”是一个合乎文法的英语语句,但是对于“Tobenotinvitedissad.”的合乎文法性则存在分歧。自然语言是存在歧义的(“Hesawherduck”可以理解为“他看到了她的鸭子”,也可以理解为“他看到她躲避某物“),也是模糊不清的LThWsgreat!”没有准确说明它有多么好,也没有说明它是什么)。自然语言没有正式定义从符号到对象的映射。在一阶逻辑中,“Richard”符号的两次使用必须指同一个人,但在自然语言中,同一单词或短语的两次出现可能指代世界上不同的事物。如果我们不能在合乎文法字符串和不合文法字符串之间做出明确的布尔判别,我们至少可以知道每个字符串的可能性或不可能性有多大。我们将语言模型(IangUagemodel)定义为描述任意字符串可能性的概率分布。这样一个模型应该认为“DoIdaredisturbtheUniVerse?”作为一个英语字符串具有合理的概率,而“UniversedaretheIdisturbdo?"是英语字符串的可能性极低。通过语言模型,我们可以预测文本中接下来可能出现的单词,从而为电子邮件或短信息提供补全建议。我们可以计算出对文本进行哪些更改会使其具有更高的概率,从而提供拼写或文法更正建议。通过一对语言模型,我们可以计算出一个句子最可能的翻译。用一些示例"问题答案”对作为训练数据,我们可以计算出针对某一问题的最可能的答案。因此,语言模型是各种自然语言任务的核心。语言建模任务本身也可以作为衡量语言理解进度的通用基准。自然语言是复杂的,因此任何语言模型充其量只能是自然语言的一个近似。语言学家爱德华萨丕尔(EdwardSwir)曾说“没有一种语言是绝对一成不变的,任何文法都会有所遗漏“(S叩ir,1921)o哲学家唐纳德戴维森(DonaldDavidson)说过“如果语言是一个明确定义的共享结构的话,就不存在语言这种东西”(DaVidSon,1986),他的意思是说,没有一种像PythOn3.8那样的确定性的英语语言模型,我们都有不同的模型,但我们仍然设法应对过去了,并进行交流。在本节中,我们将介绍一些简单的语言模型,这些模型显然是错误的,但是对某些任务来说仍然有用。1.1.1词袋模型1261节介绍了基于特定单词的朴素贝叶斯模型如何可靠地将句子分类。例如,下面的句子1被分类为business,句子2被分类为Weather。(1) StocksralliedonMonday,withmajorindexesgaining1%asoptimismpersistedoverthefirstquarterearningsseason.(2) HeavyraincontinuedtopoundmuchoftheeastcoastonMonday,withfloodwarningsissuedinNewYorkCityandotherlocations.在这一节,我们将回顾朴素贝叶斯模型,并将其转换为完整的语言模型。这意味着我们不仅想知道每个句子最可能属于哪一类别,我们还想知道所有句子和类别的联合概率分布。这意味着我们应该考虑句子中的所有单词。给定一个由单词曲,W?,Wn组成的句子(参考第14章,我们将其记为叼.W),根据朴素贝叶斯公式式(12.21),我们有P(ClaSSIWIw)=aP(Class)YP(wjClass)朴素贝叶斯方法在字符串上的应用称为词袋模型(bag-ofwordsmodel)o它是一种生成模型,描述了句子生成的过程:想象一下,对于每个类别(business>Weathel等),我们都有一个装满单词的袋子(你可以想象每个单词都写在袋子内的纸条上,一个单词越常见,重复的纸条就越多)。要生成一段文本,首先选择其中一个袋子并丢掉其他袋子。从那个袋子中随机抽出一个单词,这将是句子的第一个单词。然后将这个单词放回并抽取第二个单词。重复上述操作直到出现句末指示符(如句号)。这一模型显然是错误的:它错误地假设每个单词都与其他单词无关,因此无法生成连贯的英语语句。但它确实使得我们可以使用朴素贝叶斯公式来进行准确分类:“stocks”和“earnings”这两个词明显指向business类,而“rain"和“cloudy”两个词贝Ij指向Weather类©我们可以通过在文本正文或语料库(corpus)上进行监督训练来学习该模型所需的先验概率,文本的每个部分都标有它的类别。一个语料库通常由至少一百万字的文本和上万个不同词汇组成。最近,我们正在使用更大的语料库,例如,拥有25亿词的维基百科和拥有140亿词的iWeb语料库(来自2200万个网页)。使用语料库,我们可以通过计算每一类别的常见程度来估计它们的先验概率P(Css)°我们还可以使用计数来估算给定类别的每个单词的条件概率网吗Iaa苗)。例如,如果总共有3OOO条文本,其中300条被分类为business,那么我们可以估计P(Css=business)300/3000=0.1o如果在business类中,总共有100OOo个单词,而“stocks”一词出现了700次,那么我们可以估计P(*oc依IClass=business)700/100000=0.007o当单词数目很大(且方差较小)时,通过计数进行估计的效果很好,但是在23.1.4节中,我们将看到一种在单词数目较小时估计概率的更好的方法。有时,选择另一种机器学习方法(如逻辑斯谛回归、神经网络或支持向量机)可能比朴素贝叶斯方法效果更好。机器学习模型的特征是词汇表中的单词:“a”“aardvark”zyzzyva,值是每个单词在文本中出现的次数(或者是一个布尔值,表示该单词是否在文本中出现)。这导致特征向量是高维且稀疏的在语言模型中,可能有100000个单词,因此特征向量的维数为1()()OOOo但是对短文本来说,特征向量的绝大部分特征都是0。正如我们所看到的,当我们进行特征选择(featureselection),g制特征为单词中的一个子集时,某些机器学习模型效果会更好。我们可以删除非常罕见的单词(因为这些词的预测能力差异很大)和所有类别共有但对分类不起作用的单词(如“the”)。我们还可以将其他特征与基于单词的特征混合使用;例如,如果我们要对电子邮件进行分类,则可以为发件人添加以下特征:发送消息的时间、主题标题中的单词、是否存在非标准标点符号、大写字母的百分比、是否有附件等。注意,判断单词是什么并不容易。“arenV是一个单词,还是应该将它分解为“aren/'/t”或“areht”或其他形式?将文本划分为单词序列的过程称为分词(tokenization)。1.1.2 n元单词模型词袋模型具有一定局限性。例如,"quarter”一词在business和sports类中都很常见。但是“firstquarterearningsreport”这一由4个单词电成的序列只在business类中常见,4fourthquartertouchdownPaSSeS"则只在SPOitS类中常见。我们希望模型可以做出区分。我们可以调整词袋模型,将“flrstquarterearningsreport”这样的特殊短语视为单个单词,但更具原则性的方法是引入一种新模型,其中每个单词都依赖于之前的单词。我们可以先让单词依赖于它所在句子中之前的所有单词:P(WLN)=(!Pg/吗,7)7=1这个模型在某种意义上是完全“正确”的,因为它捕捉了单词间所有可能的交互,但它并不实用:当词汇表中有1()()OOo个单词,句子长度为40时,模型需要估计10项个参数。我们可以使用马尔可夫链模型折中,它只考虑个相邻单词之间的依赖关系,我们称之为n元模型(小grammodel)(gram源自希腊语词根g117?仍意为“写下的东西“):长度为的芋面符号序列称为元。当个别为1、2和3时,我们将於别称作一元(unigram,即1-gram)、二元(bigram,即2-gram)和三元(trigram,即3-gram)。在元模型中,每个单词出现的概率仅依赖于前面的T个单词,也就是说:12注意,元的书面符号序列的元素可以是单词、字符、音节或其他元素。编者注P(WjlW叮T)=P(WW-)NP(Wlw)=11P(W.IJ=I元模型适用于对报纸版面进行分类,它在其他分类任务上表现得也很好,如垃圾邮件检测(SPamdeteCtiOn)(区分垃圾邮件和非垃圾邮件)、情感分析(Sentimentanalysis)(将电影或商品评论分类为正面评价或负面评价)以及作者归属(authorattribution)(海明威与福克纳或莎士比亚的写作风格和使用词汇不同)。1.1.3 其他n元模型元单词模型的一种替代方法是字符级模型(character-levelmodel),其中每个字符的概率由之前的T个字符决定。这种方法有助于处理未知单词,也有助于处理倾向于将单词放在一起的语言,如丹麦语单词“Speciallaegepraksisplanlagningsstabiliseringsperiode”。字符级模型适用于语言识别(IangUageidentification)任务,即给定一个文本,确定它是用哪种语言写的。即使是非常短的文本,如“Hello,WOrId”或"Wiegeht飞dir”,元字母模型也可以将第一个文本识别为英语,第二个文本识别为德语,通常可以达到99%以上的准确率。(像瑞典语和挪威语这样紧密相关的语言则比较难区分,通常需要更长的样本。对于这类语言,准确率在95%以内。)字符模型非常擅长某些特定的分类任务,例如,将“dextroamphetamine”识别为药品名称,“Kallenberger”识别为人名,“Plattsburg”识别为城市名,即使模型从未见过这些单词。另一种可能的模型是跳字(SkiP-gram)模型,我们收集那些距离相近的单词,但是跳过它们之间的一个(亭多个)单词。例如,给定、法语文本jenecomprendspas”,一跳二元(1-skip-bigram)应为与eCOmPrendS”和“nepas”。夜集这些内容有助于创建童好的法语模型,由为它告诉我们关于动词的词形变化(“je”之后应该用“comprends”,而不是“comprend”)和否定形式(“ne”应该与“pas”搭配)的信息。仅仅使用常规的二元模型,我们无法学到这些内容。1.1.4 n元模型的平滑像)fthe”之类的高频元在训练语料库中的计数值很高,因此它们的概率估计很可能是准确的:即使使用不同的训练语料库,我们也会获得相似的估计值。而低频元由于计数值很低,容易受到随机噪声的干扰,方差较大。如果可以减小这种方差,我们的模型将表现得更好。止匕外,我们可能需要处理包含未知单词或未登录词(out-of-Vocabulary)的文本。虽然未知单词或未登录词从未在训练语料库中出现过,但将这类单词的概率设为O是错误的,因为整个句子的概率(叼川)也将变为0。对未知单词进行建模的一种方法是修改训练语料库,用特殊符号替换不常见单词,一般替换为UNK。我们可以提前决定只保留部分单词。例如,50OOO个最常见的单词,或者频率超过0.0001%的所有单词,并将剩下的单词替换为unk。然后,我们照常对语料库中的几元计数,把unk符号看作同其他任意单词一样。当测试集中出现未知单词时,我们查找UNK的概率。有时,对于不同的类型,我们会使用不同的未知词符号。例如,可以用NUM替换一串数字,或者用EMA工L替换电子邮件地址。我们注意到,使用一个特殊符号,如S,来标记文本的开始(和结束)也是可取的。这样,当二元概率公式需要使用文本第一个单词前面的单词时,可以取到S,而不是错误。即使处理了未知单词,我们也会遇到未知元的问题。例如,测试文本可能包含短语“colorlessaquamarineideas,这3个单词可能在训练语料库中分别单独出现过,但从未以短语中的顺序出现。问题在于,一些低概率的元出现在训练语料库中,而其他同样低概率的元却从未出现。我们不希望其中一部分概率为0,而另一部分概率为一个很小的正数。我们希望对所有相似的元进行平滑(smoothing)处理为从未出现在训练语料库中的元保留模型的一部分概率,以减小模型的方差。18世纪,皮埃尔西蒙拉普拉斯(Pierre-SimonLaplace)提出了一种最简单的平滑方法,用来估计像“明天太阳不会升起”这样的罕见事件发生的概率。拉普拉斯的(不正确的)太阳系理论认为,太阳系大约有N=200万天的历史。从数据上看,在过去的200万天里,太阳没有升起的概率是0,但我们并不想说这个概率完全就是0。拉普拉斯认为,如果我们采用均匀先验,并结合目前的证据,那么就可以得出,太阳明天不会升起的概率的最佳估计值为1(N+2)它要么升起要么不升起(即分母中的2),以及均匀先验表明升起和不升起的概率相同(即分子中的1)。拉普拉斯平滑(也称为加1平滑)是朝着正确方向迈出的一步,但是对许多自然语言应用来说,它的效果很差。另一种选择是回退模型(backoffmodel),首先进行九元计数统计,如果某些序列的统计值很低(或为0),就回退到T元。线性插值平滑(linearinterpolationsmoothing)就是一种通过线性插值将三元模型、二元模型和一元模型组合起来的回退模型。它将概率估计值定义为户(GlC-J=4尸(GlC-)+尸(CJ%)+4P(c,)其中入+入+小=1。参数值Z可以是固定的,也可以使用EM算法训练得到。儿的值也可能取决于计数值:如果三元计数值很高,则其对应的模型权重相对更大;如果三元计数值较低,那么二元模型和一元模型的权重会更大。一些研究人员提出了更加复杂的平滑方法(如Witten-BelI和KneSeNey),而另一些研究人员则建议收集更大规模的语料库,这样即使是简单的平滑方法也能有很好的效果(其中一种方法被称为“stupidbackoff9)o二者的目标相同:减小语言模型的方差。1.1.5 单词表示元模型为我们提供了一个可以准确预测单词序列概率的模型,例如,"ablackcat”相较于“catblacka”更可能是一个英语短语,因为“ablackcat”在训练语料库的三元中出现的概率大约为0.000014%,而“catblack葭根本没有出现过。元单词模型所学到的一切,都是来自特定单词序列的计数值。但是一个以英语为母语的人可能会从不同的角度解释:"ablackcat”之所以有效是因为它遵循一种熟悉的模式(冠词-形容词-名词),而“catblacka”则不然。现在考虑短语“thefulvouskitten”。说英语的人可以看出它同样遵循冠词形容词名词的模式(即使他不知道“fUlvous”表示“棕黄色”,也能意识到几乎所有以“-ous”结尾的单词都是形容词)。止匕外,他可以意识到“胪和“the”之间密切的句法联系,以及“cat”和“kitten”之间紧密的语义关系。因此,通过泛化,数据中“ablackcat”的出现证明了“thefulvouskitten"也是有效的英语短语。元模型则没有这样的泛化能力,因为它是一个原子模型:每个单词都是一个原子,与其他单词不同,且没有内部结构。在整本书中,我们看到,因子化模型或结构化模型可以提供更强的表达能力和更好的泛化能力。在24.1节中,我们将看到,一种被称为词嵌入(Wordembedding)的因子化模型具有更好的泛化能力。词典(dictionary)是一种结构化单词模型,通常是人工构建的。例如,WordNet是一种机器可读格式的开源手工编写词典,已被证明适用于许多自然语言应用国。下面是WOrdNet中的“kitten”词条:3甚至适用于计算机视觉应用:WOrdNet提供了可供ImageNet使用的一组类别。"kitten"<noun.animal>(,youngdomesticcat")ISA:young_mammal"kitten,'<verb.body>("givebirthtokittens")EXAMPLE:nourcatkittenedagainthisyear”WordNet可以帮助你区分名词和动词,并获得其基本类别(小猫是一种年幼的哺乳动物,是一种哺乳动物,是一种动物),但它不会告诉你有关小猫的外貌或行为的详细信息。WordNet会告诉你,暹罗猫和曼岛猫是猫的两个品种,但不会再告诉你有关品种的进一步信息。1.1.6 词性标注of对单词进行分类的一种基本方法是依据它们的词性(partspeech,POS),也称为词汇范畴(lexicalcategory)或词汇标注(IeXiCaItag):名词、动词、形容词等。词性允许语言模型捕捉一般模式,例如,“英语中形容词通常在名词之前”(在其他语言中,如法语,则通常相反)。所有人都会认同“名词”和“动词”是两种词性,但当我们深入到更细节的部分时,却没有一个明确的词性列表。图231为PemlTreebank使用的45个标签,PennTreebank是一个由超过300万个单词的文本组成,并用词性标签标记的语料库。稍后我们将看到,PennTreebank还使用句法分析树对许多句子进行标记,语料库就是由此命名的。下面这段摘录里“from”被标记为介词(IN),“the”被标记为限定词(DT),等等:Fromthestart,ittookapersonwithgreatqualitiestosucceedINDTNN,PRPVBDDTNNINJJNNSTOVB为句子中每个单词分配词性的任务称为词性标注(part-of-speechtagging)o虽然这个任务本身不是很有趣,但它是许多其他自然语言处理任务(如问答或翻译)中非常有用的第一步。即使是文本语音合成(text-to-speechsynthesis)这样的简单任务,也需要知道名词“record”与动词“record”的发音不同。在本节中,我们将看到如何将两个熟悉的模型应用于这一标注任务,在第24章中,我们将介绍第三种模型。词性标注的一种常见模型是隐马尔可夫模型。回想14.3节中的内容,隐马尔可夫模型采用了证据观察的时间序列,预测可能产生该序列的最可能的隐藏状态。在14.3节的隐马尔可夫模型示例中,证据是观察到一个人带着雨伞(或不带雨伞)的情况,隐藏状态是外界下雨(或不下雨)。对于词性标注任务,证据是单词序列W/w,隐藏状态是词性G.N。隐马尔可夫模型是一种生成模型,认为产生语言的方法是,从一种状态开始,如IN,介词状态,然后做两个选择:应该生成哪个单词(如from),以及接下来应该生成哪种状态(如DT)。除当前的词性状态之外,该模型不考虑任何上下文信息,也不知道句子真正要表达什么。但是,它是一个有用的模型-如果我们应用维特比算法(1423节)寻找最可能的隐藏状态(词性)序列,我们会发现标注达到了非常高的精度,通常在97%左右。标签单词描述标签单词描述CCand并列连词PRP$your所有格代词CDthree基数词RBquickly副词DTthe限定词RBRquicker副词,比较级EXthere存在thereRBSquickest副词,最高级FWperse外来词RPoff小品词INof介词SYM+符号JJpurple形容词TOtotoJJRbetter形容词,比较级UHeureka感叹词JJSbest形容词,最高级VBtalk动词,原形LS1列表项标记VBDtalked动词,过去式MDshould情态动词VBGtalking动词,动名词NNkitten名诩单数或不可数VBNtalked动词,过去分词NNSkittens名词,复数VBPtalk动词,非第三人称单数现在时NNPAll专有名词,单数VBZtalks动词,第三人称单数现在时NNPSFords专有名词,夏数WDTWhIChwh限定词PDTall前位限定词WPWhOWh代词POSS所有格标记WPSoseWh所有格代词PRPyou人称代词WRBWhereWh副词$美元符号#英镑符号iii左引号H9右引号(左括号)右括号9*逗号I句子结束:*句中标点图231PennTreebank语料库的词性标签(每个标签都有一个示例单词)(Marcusetal.,1993)要创建一个用于词性标注的隐马尔可夫模型,我们需要转移模型,它给出了一个词性紧跟另一词性的概率P(CCI),以及传感器模型P(WtICJo例如,P(Ct=VBCl=AiZ)=0.8表示给定一个情态动词(如卬O"d),下一个单词是动词(如think)的概率为0.8。0.8这个数值是怎么来的?就像元模型一样,从语料库中进行计数统计,并进行适当的平滑处理。事实证明,PennTreebank中有13124个MQ实例,其中10471个后面跟着V瓦对于传感器模型,P(%=w。WdlG=M0=0.1表示当我们选择情态动词时,10%的情况下我们会选择WoMdo这些数字同样来自带有平滑处理的语料库计数。隐马尔可夫模型的一个缺点是,我们对语言的所有了解都必须用转移模型和传感器模型来表达。当前单词的词性仅由这两个模型的概率以及前一个单词的词性决定。对系统开发人员而言,得出以下结论是很难的,例如,任何以“ous”结尾的单词都可能是形容词,或者,在短语“attorneygeneral"中,是名词,而不是形容词。幸运的是,逻辑斯谛回归确实能够表示这样的信息。回想1965节,在逻辑斯谛回归模型中,输入是特征值向量X。然后,我们将这些特征与预训练的权重向量W进行点积wX,然后将和转换为01之间的数字,这个数字可以解释为该输入是一个类别的正例的概率。逻辑斯谛回归模型中的权重对应于每个特征对每个类别的预测能力;权重值可以通过梯度下降法学习。对于词性标注,我们将建立45个不同的逻辑斯谛回归模型,每个词性使用一个模型。给定一个单词在特定上下文中的特征值,模型将给出该单词属于该类别的可能性。接下来的问题是,这些特征应该是什么?词性标注器通常使用二元值特征,对正在标注的单词叱(可能还有其他相邻单词)以及分配给前一个单词的词性用/(可能还有更前面单词的词性)等信息进行编码。特征可能取决于单词的确切身份,它的某种拼写方式,或者它在词典条目的某个属性。一组词性标注特征可能包括:Wl = 'T'wz+7=''fbr''wi.1 = "you”wj ends with "ous''wi ends with "ly''wi starts with "un''wj-2 = "to" and CI = VBwi-1 =T and wi+j = "to"Cl=INwi contains a hyphenvvz contains a digitwz is all uppercasewi-2 has attribute PRESENTwi.2 has attribute PAST例如,单词“walk”可以是名词也可以是动词,但在“IwalktoSChoOF中,使用词性标注特征中最后一行左列的特征,我们可以将“walk”分类为动词(VBP)。另一个例子是,单词“cu俨可以是名词(NN),也可以是过去时动词(VBD)或现在时动词(VBP)。给定句子“YesterdayIcuttherope,最后一行右列的特征可以帮助我们将“cut”标记为VBD,而在句子“NowIcuttherope”中,倒数第二行右列的特征可以帮助我们将“cut”标记为VBP。总的来说,可能有100万个特征,但是对于任意给定的单词,只有几十个特征是非0的。这些特征通常是由人类专家手工设定的,他们会想出有趣的特征模板。逻辑斯谛回归没有输入序列的概念你给它一个单独的特征向量(单个单词的相关信息),它产生一个输出(一个标注)。但是,我们可以强制逻辑斯谛回归模型通过贪心搜索来处理序列:首先为第一个单词选择最可能的标注,然后按照从左到右的顺序处理其余单词。在每一步,根据下式分配词性中Ci=argmax尸(。'|吗加,%_】)CtGCategories也就是说,分类器可以查看句子中任意单词的任何非词性特征(因为这些特征都是固定的),以及任何为先前单词分配的词性。注意,贪心搜索为每个单词做出确定性的词性选择,然后转到下一个单词;即使这一选择与句子后面的证据相矛盾,也不可能回过头来推翻这一选择。因此,算法速度很快。相比之下,维特比算法会维护一个表格,记录每一步中所有可能的词性选择,表格始终可以更改。这使得算法更加准确,但速度较慢。对于这两种算法,一个折中方案是束搜索,在每个时间步,我们考虑所有可能的词性,但只保留。个最可能的标注,丢掉其他不太可能的标注。改变加勺大小是在速度和准确性之间进行权衡。朴素贝叶斯模型和隐马尔可夫模型都是生成模型(见20.2.3节)。也就是说,它们学习一个联合概率分布P(W,O,我们可以通过从这一概率分布中采样得到句子的第一个单词(和标注),然后每次添加一个单词来生成一条随机句子。逻辑斯谛回归是一种判别模型。它学习一个条件概率分布P(ClW),这意味着它可以根据给定的单词序列来分配词性,但不能生成随机句子。研究人员发现,通常,判别模型的错误率较低,可能是因为它们直接对预期输出进行建模,也可能是因为它们让分析者更容易创建附加特征。然而,生成模型往往收敛得更快,因此在可用训练时间较短或训练数据有限时,可能会首选生成模型。1.1.7 语言模型的比较为了了解不同的元模型的效果,我们对本书中的单词建立了一元模型(即词袋)、二元模型、三元模型和四元模型,然后从4个模型中随机采样单词序列。 H=1:logicalareasareconfusionamayrighttriesagentgoalthewas n=2:systemsareverysimilarcomputationalapproachwouldberepresented n=3:planningandschedulingareintegratedthesuccessofnaiveBayesmodelis n=4:takingadvantageofthestructureofBayesiannetworksanddevelopedvariouslanguagesfarwriting("templates“withlogicalvariables,fromwhichlargenetworkscouldbeconstructedautomaticallyforeachprobleminstance从这个小例子中可以清楚地看出,无论是对一般英语教材还是特定的人工智能教材的内容,一元模型都是很糟糕的近似,而四元模型虽然并不完美,但效果要好得多。接下来,为了演示样本如何在不同的训练源之间变化(当然不仅仅是为了好玩),我们在四元模型中添加了钦定版圣经的文本,从而产生了下面这些随机样本。 Provethatany3-SATproblemcanhereducedtosimpleronesusingthelawsofthyGod. Masters,giveuntoyourservantsthatwhichistrueijfbothPandQinanymodelmbyasimpleexperiment:putyourhandunto,yeandyourhouseholdsforitispleasant. ManywillintreattheLORDyourGodiSayingfNo;butwewillignorethisissuefornow;Chapters7and8suggestmethodsfarcompactlyrepresentingverylargebeliefstates. Anditcametopass,asifithadnosuccessors, Thedirectutilityestimationisjustaninstanceofthegeneraloralgorithminwhichnewfunctionsymbolsareconstructediionthefly."Forexample,thefirstchildoftheHolyGhost.元模型有一个限制随着九的增加,它们将生成更流畅的语言,但它们倾向于逐字复制训练数据中的长段落,而不是生成新的文本。具有更复杂的单词和上下文表示的语言模型可以在这方面做得更好。本文的其余部分说明了文法(grammar)如何对语言模型进行改进,而第24章则展示了目前深度学习方法如何生成优秀的语言模型。例如,深度学习模型GPT-2在给定提示时可以生成流畅的英语样例。我们将本段的前两个句子HI提示给GPT-2模型,它产生了以下两个样本。41在原书中,本段的前两个句子为:Thereisalimitton-grammodelsasnincreases,theywillproducelanguagethatismorefluent,buttheytendtoreproducelongpassagesfromtheirtrainingdataverbatim,ratherthangeneratenoveltext.Languagemodelswithmorecomplexrepresentationsofwordsandcontextcandobetter.编者注 Numerousstudieshaveshownthatthebestlanguagemodelsthatcangeneratelanguagearethosethatuseneuralnetworks,andinparticularthatusedeeplearningtomodelspeech.Ihaveusedoneofthesemodelstogeneratehundredsofsentencesinmultiplelanguages,andithastheabilitytogeneratealmostperfecttranslationsofmytrainingsentences.It'sagreatmodeltohave,andWiIlsaveyoualotoftimeinthefuturewhenyouneedtotranslatebetweenmanylanguages. Thesemodelscanalsodobetteriftheirsamplesarechosenatrandom,ratherthanbyanexpertinthedomain.However,asageneralrule,n-gramandlanguagemodelsthatincludealargenumberoffeaturestendtoproducetextbetter,sincethesefeaturescontributethemosttolanguagelearning.Tomeasuretheperformanceofamodel,vemadesomesamplesentencesthatdliketotraintobetterunderstandspeechandlanguagemodels.Youcanreadthemtogetagraspofhowthemodelpredicts,可以看到,这些段落内容丰富而且文法流畅;止匕外,它们的主题也与提示语句相关。但是,句子之间并没有相互补充以形成一个连贯的论点。GPT-2语言模型是一个TraIlSformer模型(我们将在24.4节中介绍),在图24/4中,我们给出了GPT2的其他示例。另一种TranSformer模型是CTRL(conditionaltransformerlanguage,条件TranSformer语言)模型。它可以被