历史说明
n 元语法的数学基础最早由 Markov(1913)提出。他使用如今所谓的 Markov 链(二元和三元语法),预测普希金《叶甫盖尼·奥涅金》中接下来的字母是元音还是辅音。Markov 把 20,000 个字母分类为 V 或 C,并计算给定前一或前两个字母时,下一个字母是元音的二元和三元概率。Shannon(1948)使用 n 元语法近似英语词序列。受 Shannon 工作影响,到 20 世纪 50 年代,Markov 模型已经普遍用于工程学、语言学和心理学中的词序列建模。从 Chomsky(1956)开始,并包括 Chomsky(1957)以及 Miller and Chomsky(1963)在内的一系列影响深远的论文中,Noam Chomsky 主张:“有限状态 Markov 过程”也许是实用的工程启发式方法,却无法成为人类语法知识的完整认知模型。这些论点使许多语言学家和计算语言学家在此后数十年中忽视了统计建模工作。
n 元语言模型的复兴来自 IBM Thomas J. Watson Research Center 的 Fred Jelinek 及其同事,以及 CMU 的 James Baker。前者受到 Shannon 影响;后者受到 Leonard Baum 等人此前在美国国防分析研究所(IDA)等实验室开展、解密后才公开的研究影响。两个实验室彼此独立,却在同一时期成功地把 n 元语法用于语音识别系统(Baker, 1975b; Jelinek et al., 1975; Baker, 1975a; Bahl et al., 1983; Jelinek, 1990)。“语言模型”和“困惑度”这两个术语最早由 IBM 团队用于这项技术。Jelinek 及其同事使用“语言模型”时,其含义与现代用法相当接近:它指影响词序列概率的全部语言因素,包括语法、语义、语篇乃至说话者特征,而不只是某种具体 n 元模型。
加一平滑源自 Laplace 1812 年提出的继承法则;Jeffreys(1948)在 Johnson(1932)较早提出的加 建议基础上,首次把它作为零频问题的工程解决方案。Gale and Church(1994)总结了加一算法的问题。
20 世纪 80~90 年代出现了大量语言建模和平滑技术,包括 Good–Turing 折扣——Katz 最早在 IBM 把它用于 n 元平滑(Nadas, 1984; Church and Gale, 1991)——Witten–Bell 折扣(Witten and Bell, 1991),以及利用词类信息的各种基于类别的 n 元模型。从 20 世纪 90 年代末开始,Chen and Goodman 开展了一系列严格控制的实验,比较不同算法和参数(Chen and Goodman, 1999; Goodman, 2006 等)。他们证明了修正插值 Kneser–Ney 方法的优势;世纪之交前后,它成为 n 元语言建模的标准基线,尤其是因为研究还表明,缓存和基于类别的模型只能带来少量额外改进。SRILM(Stolcke, 2002)和 KenLM(Heafield, 2011; Heafield et al., 2013)是用于构建 n 元语言模型的公开工具包。
大语言模型以神经网络而不是 n 元语法为基础,因此能够解决 n 元模型的两项主要问题:(1)参数数量随 n 元阶数提高而呈指数增长;(2)除非训练样例与测试集样例使用完全相同的词,否则 n 元语法无法从前者泛化到后者。神经语言模型把词投影到连续空间,使上下文相似的词具有相似表示。本书将在第 7 章介绍基于 Transformer 的大语言模型;在此之前,第 6 章会介绍前馈语言模型(Bengio et al., 2006; Schwenk, 2007),第 14 章会介绍循环语言模型(Mikolov, 2012)。