神经网络概率语言模型 ——A Neural Probabilistic Language Model

张开发
2026/5/10 7:58:23 15 分钟阅读

分享文章

神经网络概率语言模型 ——A Neural Probabilistic Language Model
我是一名刚踏入领域的学习者。此前已经学习过机器学习相关基础这是我第一次系统学习自然语言处理。这篇文章是我对经典论文《A Neural Probabilistic Language Model》的学习总结当然实验部分还需要再去动手尝试因此一笔带过只是总结了论文方法。我希望用尽量通俗、直白的方式或者说我自己的表达不一定正确。因为有许多地方看的也一知半解也看了别的许多东西去理解也希望作为我以后更加深入学习后可以回头认识自己不足的依据。一、引言2003年Yoshua Bengio 等人发表《A Neural Probabilistic Language Model》这篇论文从现在看来用最朴素的神经网络与分布式表示思想打破了当时语言模型n-gram的局限也为深度学习正式进入NLP奠定基础。二、论文发表前后语言模型的困境1.统计语言模型统治期1990–2003在 2003 年之前自然语言处理的语言建模几乎完全被统计 n-gram 模型垄断代表工作包括三元语法模型trigramJelinek Mercer1980提出插值平滑 n-gram成为语音识别标配回退 n-gramKatz1987解决未登录词零概率问题用短上下文回退补全改进 Kneser-Ney 平滑Kneser Ney1995长期霸榜 SOTA 的 n-gram 优化方案基于类别的 n-gramBrown 等人1992用词聚类缓解数据稀疏但仍未跳出离散表示。这些方法的核心逻辑在于用频率查表把语言建模变成 “统计词片段出现次数”的任务。但始终局限于只对出现过的有记忆但对未见过的存在缺乏组合能力。2.维数灾难与泛化无能Bengio 在论文开篇就直击当时存在的一大痛点当处理的量级很大时穷举可能性会呈现指数级爆炸n-gram主要统计语料中出现的词语的组合以此来估算下一次的可能因此如果词汇表规模可达 10 万级10个词的序列组合达到10⁵⁰就会导致参数爆炸。3.神经网络的探索最早在1986年Hinton提出分布式表示但未落地到大规模语言建模。而在1990年Elman用简单循环网络学习序列但规模极小。1991年MiikkulainenDyer尝试神经网络做句法处理但无概率建模。2000年XuRudnicky独立提出神经网络语言模型但只用单层、单词输入效果接近bigram。这些工作都没有完成大规模、可训练、能淘汰n-gram的完整系统直到2003年该论文的发表。三、论文核心创新1. 用分布式词向量替代独热编码此前的n-gram都把单词当作独立离散符号用one-hot或类别 ID表示。词汇量V10 万时10个词的序列组合可达10⁵⁰种参数爆炸、数据稀疏、未见组合直接零概率完全无法应对真实语言。而在改进后提出给每个词学一个连续低维向量取代独热编码相似词距离更近实现高维空间的低维嵌入用连续空间的平滑性替代离散空间的稀疏性从数学底层解决了高维离散数据建模的核心困境让模型第一次具备了 “语义泛化” 的基础从而在根源解决维数灾难。2. 联合学习词表示概率函数一起训练在这篇论文之前NLP 建模遵循“先表示、后建模”的固定流程即先人工设计特征或者词聚类或者潜在语义分析得到词表示再用n-gram拟合概率两步独立优化。然而词表示不是为语言建模任务量身定制使得泛化能力大打折扣。而本文中让神经网络同时学习两个目标参数共享、联合优化训练过程中词向量会根据 “下一词预测” 任务不断调整使得表示完全服务于概率建模目标让神经网络同时学词的含义和句子的概率。3. 用神经网络做平滑泛化简单说n-gram 靠 “背片段”NNLM 靠 “懂语义”。传统n-gram只能靠 “回退、平滑” 勉强缓解未见序列问题本质是 “凑概率”比如训练集中见过 “The cat is walking in the bedroom”模型完全无法迁移到 “A dog was running in a room”因为它不理解cat≈dog、walking≈running、bedroom≈room。而在本文中得益于分布式表示神经网络的平滑性使得相似词的向量接近输入微小变化只会带来输出概率微小变化实现让语言模型从“记忆词片段”升级为“理解语义规律”实现了数据高效、强泛化的神经语言建模。四、论文核心内容与模型结构这篇论文的模型叫NNLM其实核心主要就干一件事根据前面的几个词预测下一个词出现的概率。整个模型结构在现在看来比较简单可以分为两大块。1. 模型要做什么给一串词w₁, w₂, …, wₜ₋₁模型算出下一个词wₜ出现的概率即求出P(wₜ | w₁ ~ wₜ₋₁)2. 模型两大核心组件1词向量层把单词变成向量给每个词分配一个连续低维向量作用把 “文字” 转成神经网络能看懂的 “数字向量”相似的词比如之前提到的cat和dog或者room和bedroom这样的向量之间会挨得很近2神经网络层算概率把前面几个词的向量拼在一起之后输入输入神经网络从而得到输出每个词作为下一个词的概率。3. 计算流程取上下文抓取前面n-1个词查词向量把这几个词都变成对应的向量拼在一起把向量连成一串输入网络过隐藏层用tanh做一次非线性变换输出概率用softmax把结果变成合法概率可以简单的公式简化理解为下一词概率 softmax(偏置直接连接隐藏层结果)五、实现细节1. 并行训练设计数据并行共享内存异步更新无锁竞争。参数并行输出层按词汇分片多 CPU 并行计算 Softmax。通信开销仅占 1/15接近线性加速。2. 数值稳定技巧Softmax 前减去最大值防止指数爆炸。3. 模型混合策略神经网络模型插值 trigram 混合效果进一步提升。这也是后来 “融合模型” 的鼻祖六、从如今我的学习历程回看站在当今的大模型时代这篇 2003 年的论文依然是所有现代语言模型的基因源头主要在于首先他奠定 NLP 深度学习范式。Word2Vec的生成词嵌入的方法直接继承分布式表示思想。GloVe、FastText也都在其框架上延伸。甚至于如今我们经常使用的Transformer、BERT、GPT他们的本质仍然是其中词向量融合深度网络和序列概率建模的思路。其次他解决了 NLP 的底层问题。它的出现首次证明神经网络可以在大规模离散符号数据上学习到强泛化的概率模型。最后在工程应用上词嵌入层成为所有 NLP 框架标配。而训练过程中并行训练、Softmax 数值稳定、模型混合成为通用技巧。从评价指标上看他 提出的Perplexity指标至今仍是语言模型核心指标。

更多文章