语言模型

语言模型是NLP的基础任务,旨在建模自然语言的概率分布。给定前文预测下一个词,是文本生成的核心。

共 3 篇文章·阅读时间:约40分钟

01N-gram模型

N-gram是最经典的统计语言模型,通过计算词序列的联合概率来预测下一个词。

N-gram原理

N-gram模型基于马尔可夫假设:第t个词的概率只与前N-1个词相关。

概率计算

Bigram(N=2):P(wt|w1...wt-1) ≈ P(wt|wt-1)

Trigram(N=3):P(wt|w1...wt-1) ≈ P(wt|wt-2, wt-1)

句子概率:P(w1, w2, ..., wn) = Π P(wt|context)

平滑技术

为了处理未登录的N-gram(稀疏性问题),需要使用平滑技术。

加一平滑(Laplace Smoothing)

每个计数加1:P(wt|wt-1) = (C(wt-1, wt) + 1) / (C(wt-1) + V)

Kneser-Ney平滑

高级平滑方法,效果好,常用于生产环境。

回退(Backoff)

高阶N-gram未命中时,回退到低阶模型。

N-gram的局限性

  • 无法处理长距离依赖(最多N个词)
  • 数据稀疏,泛化能力差
  • 无法捕捉语义相似性

02神经网络语言模型

神经网络语言模型通过学习词的稠密表示,解决了N-gram的稀疏性问题,并能捕捉更丰富的语义信息。

NNLM原理

Bengio等人2003年提出的NNLM是第一个现代意义的神经网络语言模型。

NNLM结构

  • Embedding层:将One-Hot词映射到稠密向量
  • Hidden层:非线性变换,捕捉上下文特征
  • Output层:Softmax输出下一个词的概率

RNN语言模型

RNNLM使用循环结构处理任意长度的序列,是处理自然语言的标准模型。

RNNLM公式

ht = f(Wxhxt + Whhht-1 + bh)

yt = softmax(Whyht + by)

理论上可以处理任意长距离依赖

语言模型演进

  • N-gram:统计方法,数据稀疏
  • NNLM:首次引入词向量
  • RNNLM:处理序列,梯度问题
  • LSTM/GRU LM:解决长距离依赖
  • Transformer LM:并行计算,效果最佳

03困惑度

困惑度(Perplexity)是评估语言模型质量的标准指标,衡量模型对测试数据的预测能力。

困惑度概念

困惑度是句子概率的几何平均数的倒数,反映模型预测的不确定性。

公式

交叉熵损失:H(T) = -(1/T) Σ log2 P(wt|contextt)

困惑度:PP = 2H(T)

困惑度的含义

  • PP = 10:模型在10个词中做选择,平均歧义度为10
  • PP = 50:较差,语言不流畅
  • PP = 10-20:中等水平
  • PP = 5-10:较好
  • PP = 1:完美预测(不可能达到)

使用场景

困惑度的局限

  • 只看概率质量,不看生成质量
  • 可能被人攻击(注入提示词)
  • 需要结合人工评估

其他评估指标

  • BLEU:机器翻译、文本生成评估
  • ROUGE:摘要生成评估
  • METEOR:考虑词匹配的更细粒度评估
  • 语义评估:如BERTScore,使用词向量计算
----