机器学习基础(3)- 数据平滑

本文主要用于理解数据平滑的原理,并且重点介绍了几种数据平滑的方法~

基本目录如下:

  1. 数据平滑的本质理解
    1.1 为什么需要数据平滑?

  2. 数据平滑的方法
    2.1 加法平滑方法
    2.2 Good-Turing估计法
    2.3 Katz平滑方法

------------------第一菇 - 数据平滑的本质理解------------------

1.1 为什么需要数据平滑?

在传统AI领域,数据的平滑处理一般都是数据的预处理阶段的核心步骤。简单来说,平滑的本质就是用来解决零概率问题的。这里,以自然语言处理中的语言模型为例,进行展开理解。

当我们构建一个Bi-Gram的语言模型的时候,假设我们的语料库为(参考《统计自然语言处理》第5章):

(“ BROWN READ HOLY BIBLE”,
“ MARK READ A TEXT BOOK”,
“HE READ A BOOK BY DAVID”)

则此时对于句子“BROWN READ A BOOK”,我们可以利用最大似然的方法估计该句子的概率为,

p(S) = p(BROWN | <BOS>) * P(READ | BROWN) * P(A | READ) * P(BOOK | A) * P(<EOS> | BOOK)
根据上述语料库,我们可以计算得到,

p(S) = \frac{1}{3} * \frac{1}{1} * \frac{2}{3} * \frac{1}{2} * \frac{1}{2} \approx 0.06

但如果我们对于一个句子“BROWN READ A PAPER”,我们同样可以利用上述的思路去计算,但是显然,训练语料库中,没有一句话是以PAPER结尾的,那也就会造成该句的概率为,

p(S) = \frac{1}{3} * \frac{1}{1} * \frac{2}{3} * \frac{1}{2} * 0 = 0
但这显然不是我们希望看到的,因为,PAPER这个词作为结尾确实在训练语料库中模型没有见到,但并不代表这句话的概率就应该是0,或者说,由于连乘的缘故,凡是有一种情况不符合语料库,那我们都会得到概率为0的情况,这其实是我们在训练模型的时候不希望看到的事情(在其他自然语言处理任务中也会频繁出现这样的问题),因此,我们必须分配给可能出现的情况一个非0的概率值来规避这种错误的发生。

而本文所要介绍的平滑就是用来解决这类零概率问题的。其本质核心就是“劫富济贫”,即提高低概率,降低高概率,尽量使概率分布趋于均匀。

------------------第二菇 - 数据平滑的方法------------------
数据平滑由于其重要性,也是学界的重点研究方向。本文接下来就重点介绍一些方法。

2.1 加法平滑方法

在上述语言模型利用最大似然的思想来计算条件概率的时候,我们可以总结出计算公式即为,

P_{MLE}(w_i | w_{i-1}) = \frac{c(w_{i-1}, w_i)}{c(w_i)}
而对于加法平滑方法,其本质思想很简单,就是假设每个二元语法出现的次数都比实际语料库中出现的次数多k次,其中当k=1的时候,我们又称为加一平滑或是拉普拉斯平滑,则上式就会改进为,

P_{add}(w_i | w_{i-1}) = \frac{k + c(w_{i-1}, w_i)}{k*|V| + c(w_i)}
其中|V|就是词库的大小。该平滑方法比较容易理解,也比较简单,但其实际的使用效果还要依使用场景而看。

2.2 古德-图灵估计法

该种平滑方法是由I.J.Good引用图灵(Turing)的方法提出来的。在介绍这个方法之前,首先介绍一个概念N_c,出现c次的单词的个数。

举个例子:Sam I am I am Sam I do not eat。我们可以统计出单词出现的个数为:
Sam - 2次
I - 3次
am - 2次
do - 1次
not - 1次
eat - 1次
那么我们可以统计出,
N_3 = 1 即出现3次的单词有1个
N_2 = 2 即出现2次的单词有2个
N_1 = 3 即出现1次的单词有3个

介绍完了上面这个例子,我们再来介绍Good-Turning平滑方法。这里需要分两种情况来讨论,
1)对于没有出现过的单词,其计算方法为:
P_{GT} = \frac{N_1}{N}
2)对于已经出现过的单词,其计算方法为:
P_{GT} = \frac{(c + 1)N_{c+1}}{N_c * N}

这里将继续举例为大家解释。假设我们正在钓鱼,而且已经抓到来18只鱼,其中10条鲤鱼,3条黑鱼,2条刀鱼,1条鲨鱼,1条草鱼,1条鳗鱼。
那么再试问下一条钓上来草鱼的概率为多少?此时草鱼为当前出现过的鱼,统计出出现次数为1的鱼有3种,出现次数为2的鱼有1种,则利用上述公式可计算得出,
P_{GT}(草鱼) = \frac{(1 + 1) * 1}{3*18} = \frac{1}{27}

那么再试问下一条钓上来飞鱼的概率为多少?此时飞鱼为当前未出现过的鱼,统计出出现次数为1的鱼有3种,则利用上述公式可计算得出,
P_{GT}(飞鱼) = \frac{3}{18} = \frac{1}{6}

因此,我们可以看出,如果是MLE的思想,则显然草鱼的概率为\frac{1}{18}而飞鱼的概率为0。因为对于一般的情况(之前出现过的事件),我们可以看到,
P_{GT} < P_{MLE}
这也符合预期,因为,该种平滑方法正是有\frac{N_1}{N}的概率剩余量用于分配给了之前没有发生过的情况。

为了加深大家的理解,这边我再多贴一张图,用以表示在构建语言模型的时候统计出来的一张表格,

语言模型统计表格.png

这里其实就是统计了一份训练数据的结果,我们可以清晰看到大部分的单词其实是没有出现在训练语料之中的(7,514,941,065)的,而如果将这些统统置为0显然是不合理的,因此利用上述古德-图灵的平滑方法,我们可以看到调整后的预期的count还是比较符合预期的(与后一列的测试数据基本出入不大)。

当然整个古德-图灵的方法并不是完美的,其最大的缺点就是,如果我的N_{c+1}为0咋办?就比如计算上式的N_{21}为0,则我们的N_{20}计算就会有问题。因此,当实际的应用场景中碰到这样的情况时,我们一般会采用另一种曲线平滑(比如机器学习算法去拟合)的方法,来弥补上缺陷值,然后再通过古德-图灵的方法去继续数据处理的工作。

2.3 Katz平滑方法

这种方法其本质是一种后备的平滑方法。其基本的思路就是当事件在样本中出现的频次大于某一数值k的时候,运用最大似然估计方法,通过减值来估计其概率值,而当事件的频次小于k的时候,使用低阶的语法模型作为代替高阶语法模型的后备,但这种代替受归一化因子的约束【1】。简单来讲,该方法仍是古德-图灵方法的延伸,其本质思想依然是将一部分的概率剩余量分配给未知事件,但与上一种平均分配的思想不同,该方法认为我们可以通过低阶的模型(语言模型里面就由2阶降为1阶等)来近似拟合每一个未知事件的权重,从而重新分配概率剩余量。具体的数学公式理解本文将不作展开,而与之相关的平滑方法还包括比如Kneser-Ney, Witten-Bell等。有兴趣的同学可以翻阅宗成庆老师的《统计自然语言处理》一书,来仔细研读。

简单总结一下本文,先是讲述了一些数据平滑处理的背景,帮助大家理解认识到数据平滑的必要性。随后,又附上了多种现今流行的数据处理的平滑方法。希望大家读完本文后对机器学习中的数据平滑处理这一块有全新的认识。有说的不对的地方也请大家指出,多多交流,大家一起进步~😁

参考文献:
【1】《统计自然语言处理-第五章》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容