语言模型
语言模型是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,使用词向量计算