迁移来源
语言模型
definition
目标: 给定词串 W=w1,w2,…,wn, 计算概率 p(W), 表示这个词序列在自然语言中出现的概率 (合理性).
从数学角度 p(W)=p(w1)p(w2∣w1)⋯p(wn∣w1,w2,…,wn1).
n-gram #
应用马尔可夫过程.
n-gram 就是每个词的概率只依赖于前 n−1 个词, 即认为 p(wk∣w1,w2,…,wk−1)=p(wk∣wk−n+1,…,wk−1).
具体的
- 1-gram/unigram p(w1,w2,…,wn)=p(w1)p(w2)⋯p(wn).
- 2-gram/bigram p(w1,w2,…,wn)=p(w1)p(w2∣w1)p(w3∣w2)⋯p(wn∣wn−1).
实际应用中加入开始标识符和结束标志符, 即第一项为 p(w1∣<BOS>) 最后一项为 p(<EOS>∣wn−1).
参数计算方法就是用巨大的语料库, 统计连续 n 个词的分布计算条件概率.
参数量 #
显然 n 越大理论效果越好, 越接近数学层面的定义.
但考虑到实际计算限制, 一般取 n=3.
设词典中词数为 N, 对于 n−gram 要计算 p(wn∣w1,…,wn−1), 一共有 Nn 个参数, 参数量巨大难以维护, 并且会出现非常多 0 值参数.
数据稀疏 #
在给定的训练数据中
- 一些词高频出现, 概率很高
- 一些词低频出现, 概率接近 0, 从而造成估计不可靠. 极大似然估计在采样样本总数趋于无穷时达到最小方差.
同时也可能有一些词或词组在数据集未出现, 从而无法计算. 默认 0 的话会导致一个很好的句子被认为概率 0.
解决办法:
- 扩大训练数据规模有所帮助, 但增加的数据集仍是高频词占据绝大部分.
- 平滑: 重新估计 0 概率和低概率. (Add-one, Good-Turing)
- 回退: 高阶 n-gram 的概率难以计算时, 采用低阶 n-gram 统计 (backoff, Linear interpolation)
平滑 Smooth #
Add-one: 将所有词/词组出现次数 +1.
设 c(w) 为 w 出现次数, 总词数为 ∣V∣, 总出现次数为 N.
- unigram p(w)=N+∣V∣c(w)+1.
- bigram p(w1,w2)=c(w1)+∣V∣c(w1,w2)+1.
缺点: 会分走过多概率给 0 概率, 修正考虑将 +1, 变为 +δ.
如何选取合适的 δ (held-out estimation) 从训练数据中分离一部分数据 H, 用剩余数据对不同 δ 训练, 并在 H 上测试表现, 选取最优的 δ.
Good-Turing: 根据仅出现一次的 n-gram 的个数, 来确定未见 n-gram 的概率.
记 Nr 表示出现次数为 r 的词/词组的个数.
将 r 调整为
r∗=Nr(r+1)Nr+1
那么概率
回退 #
Backoff:
p(wi∣wi−2,wi−1)=⎩⎨⎧p(wi∣wi−2,wi−1)α1p(wi∣wi−1)α2p(wi)if C(wi−2,wi−1,wi)>0if C(wi−2,wi−1,wi)=0 and C(wi−1,wi)>0otherwise
Interpolation:
p(wn∣wn−2,wn−1)=λ1p(wn)+λ2p(wn∣wn−1)+λ3p(wn∣wn−2,wn−1)0≤λi≤1,i=1,2,3,λ1+λ2+λ3=1
模型质量评价 #
好的模型应该给实际使用的句子打较高的概率.
外部评价: 一般用于比较两个模型, 将其应用于同一个任务.
内部评价: 对模型直接评价.
Perplexity (困惑度, PP): P(W) 的几何平均值的倒数
对于 bigram 模型
PP(W)=P(W)−N1=[i=1∏NP(wi∣wi−1)−N1]
PP 越小效果越好
{{< admonition question “练习” true >}}
题目 #

题目 #

前馈神经网络 FNN## 预训练模型 PCM #
讨论
评论
正在加载评论...