TypechoJoeTheme

IT技术分享

统计
NLP

数据平滑 (Smooth) 技术详解——解决 NLP 中稀疏矩阵问题

2017-09-10
/
0 评论
/
865 阅读
/
正在检测是否收录...
09/10

语言模型而言,由于数据稀疏的存在,可以使用平滑技术来解决

什么是平滑技术

把在训练样本中出现过的事件的概率适当减小,把减小得到的概率密度分配给训练语料中没有出现过的事件,这个过程有时也称为 discounting(减值)

Add-one 平滑

规定任何一个 N 元组在训练语料中至少出现一次,即规定没有出现过的 N 元组在训练语料中出现了一次

new_count(N-Gram) = old_count(N-Gram) + 1

没有出现过的 N 元组的概率不再是 0

$$P_{Add1}(w_{1}w_{2}...w_{n}) = \frac{C(w_{1}w_{2}...w_{n}) + 1}{N + V}$$

N: 训练语料中所有的 N 元组的数量 (token)
V: 所有的可能的不同的 N 元组的数量 (type)

条件概率的计算:

$$P(w_{n}| w_{1}w_{2}...w_{n-1}) = \frac{P_{Add1}(w_{1}w_{2}...w_{n})}{\sum_{k = 1}^{n-1}P_{Add1}(w_{1}w_{2}...w_{k})}$$

结论

  • 训练语料中未出现的 N 元组的概率不再为 0,而是一个大于 0 的较小的概率值
  • 由于训练语料中未出现 N 元组数量太多,平滑后,所有未出现的 N 元组占据了整个概率分布很大的比例。因此,在 NLP 中, Add-one 给训练语料中没有出现过的 N 元组分配了太多的概率空间。
  • 出现在训练语料中的那些 N 元组, 都增加同样的频度值,这并不公平 认为所有未出现的 N 元组概率相等,这也是不合理的

Add-delta平滑

不是加 1,而是加一个小于 1 的正数 $\delta$

$$P_{AddD}(w_{1}w_{2}...w_{n}) = \frac{C(w_{1}w_{2}...w_{n}) + \delta }{N + \delta V}$$

效果虽然比 Add-one 好,但是仍然不理想

留存平滑

英文名:Held-out Estimation

留存数据(Held-out data)

把训练语料分作两个部分

  • 训练语料 (training set): 用于初始的频率估计
  • 留存语料 (held out data): 用于改善最初的频率估计

对于每一个 N 元组 $w_1w_2...w_n$ 计算

  • $C_{tr}(w_{1}...w_{n})$,即 $w_1...w_n$ 在训练语料中出现的频率
  • $C_{ho}(w_{1}...w_{n})$,即 $w_1...w_n$ 在留存数据中出现的频率

  • r = 某个 N 元组在训练语料中出现的频率
  • Nr = 在训练语料中出现了 r 次的不同的 N 元组的个数(type)
  • Tr = 所有在训练语料中出现了 r 次的 N 元组在留存语料中出现的频率之和

$$T_{r} = \sum_{(w_{1}...w_{n}| C_{tr}(w_{1}...w_{n}) = r)}C_{ho}(w_{1}...w_{n})$$

T = 留存语料中所有的 N 元组个数 (token)

Good-Turing平滑

Jelinek-Mercer平滑

Katz平滑

未完待续

数据平滑
朗读
赞 · 0
版权属于:

IT技术分享

本文链接:

https://idunso.com/archives/2816/(转载时请注明本文出处及文章链接)