《机器学习实战》读书笔记 第四章 朴素贝叶斯(part 2)

来源:互联网 发布:知乎约翰威廉姆斯 编辑:程序博客网 时间:2024/06/14 01:18

只要有一天睡眠不足,接下来几天都会丧失全部战斗力。

——论我为什么抓紧一切时间补觉

*****************************************************************************************************

part 2 基于字标注的最大熵分词模型

字标注的分词方法就是通过标注字在词中的位置,间接地找到分词的界限。

比如4-tag标注法,就是把字分为四类:S(单字),B(词首),M(词中),E(词尾)。

已经分好词的例句:世事 常 不能 尽如人意

对应的标注是:世/B事/E常/S不/B能/E尽/B如/M人/M意/E

这样,分词的问题就转化为分类的问题了。╭( ̄▽ ̄)╯

现在我们已经学了两个分类模型:KNN和决策树,可惜这次用不着它们。因为一个字只有在上下文的序列里才有被标注的意义,但是我们仅有的两个分类器完全没考虑到要标注的字与上下文的关系,没有用联系发展全面矛盾的观点看问题,差评。我们需要更高级的武器,继续打怪升级吧少年们。

那么合适的模型有哪些呢?隐性马尔可夫模型、最大熵模型还有条件随机场模型都可以的。

之所以挑中最大熵模型,是因为别的模型都太特么难了最大熵模型在字标注法中比较常用啦,啊哈哈^_^

最大熵模型的基本思想,就是在只掌握关于未知分布的部分知识时,选取符合这些知识但熵值最大的概率分布。即是说,选择使系统处于最不确定状态的概率分布。设想最简单的情况:没有约束条件时,系统具有最大熵意味着各事件发生概率相等。为什么要假定各事件发生概率相等呢?这是一种“承认已知,保留未知”的思想。约束条件代表着我们的已知,除此以外都是未知。对于未知,最大熵模型不加揣测,不带偏见,对各种情况的可能性一视同仁。这样就保留了全部的不确定性,将预测风险降到了最小。

Maximum entropy(简称Maxent)就是传说中风一般的美男子。

他每次犹豫不决时就抛一枚硬币来决策,一旦抛出,绝不反悔。

他采取一半买黄金,一半买美元的超稳健投资策略,把任何一方涨跌的风险化为无形。

他认为任何事情,都是人做一半,天做一半,谋事在人,成事在天。

一天晚上,大帅哥Maxent走进一家快餐店。夜已深,他是最后一位顾客。

老板招呼他:“小哥,我看你骨骼惊奇,日后必成大器。我给你出道题,如果你能答出来,今天这顿饭我就请你了。”

Maxent点点头,接过老板递来的纸条。上书:

本店提供3种食品:汉堡(B)、鸡肉(C)、鱼(F)。价格分别是1元、2元、3元。已知人们在这家店的平均消费是1.75元,求顾客购买这3种食品的概率。

Maxent瞟了一眼题目,笑说简单:

“给我拽一截儿餐巾纸,马上给您搞定。”

他在上面列了两个方程:

P(B)+P(C)+P(F)=1

P(B)+2P(C)+3P(F)=1.75

这种缺条腿的方程组根本没法解好吧!如果换了别人一定抓狂了,但是Maxent君的眼神却没有一丝一毫的慌张。

他咬破手指,迅速在餐巾纸上写下概率分布的熵表达式咒文:

S=-P(B)log(P(B))-P(C)log(P(C))-P(F)log(P(F))

紧接着,他把手掌按在桌子上,大喊一声:“通灵之术!”

话音刚落,咒文字符就移动起来,前两个方程迅速将自己代入熵的表达式中,无解之题瞬间就变成了一个简单的单变量优化问题!

S=-(0.25+P(F))log(0.25+P(F))-(0.75-2P(F))log(0.75-2P(F))-P(F)log(P(F))

S'=0

与此同时,只见一道白光穿透天际,圣光笼罩中的香农大神自云端迤逦而下(其实最大熵模型不是香农大神发明的,but whatever,只要来一个镇得住场子的大神就行了),空中的航行尾迹清晰地显示出熵最大时的最优解:

P(F)=0.216  P(B)=0.466  P(C)=0.318  S=1.517

这个符合约束条件的概率分布保留了最大的不确定性,在概率估计时竟没有引入任何偏差!这个至简而至美的模型彻底征服了快餐店老板,他倒头便拜:“上师!!多谢赐教,敢问上师尊姓大名?”

“叫我Max就好。”Maxent淡淡一笑,深藏功与名。


。。。


。。。。。。


我一定是被中二小说荼毒太深了,刷题时开的脑洞都带着醇厚的中二气息。。

不扯淡了,具体到字标注法上就是,最大熵模型能够根据上下文序列给其中的字打上tag(S,B,M,E),分类时遵循最大熵原理。

将C-1定义为当前字之前的字,C0定义为当前字,C1定义为当前字之后的字,以此表示上下文序列。

如分好词的例句:世/B事/E常/S不/B能/E尽/B如/M人/M意/E 

选择‘如’字,可以得到一条标注数据:M C-1=尽 C0=如 C1=人

从分好词的语料库中可以得到许多条这样的标注数据,然后就可以训练模型了。

使用训练好的模型进行分词时,模型根据上下文约束条件(C-1=? C0=? C1=?)选择满足最大熵原理的tag对字进行标注,再转换成我们熟悉的格式(去掉tag,词间空格)。


·°.·°∴ ☆..·°.·°∴ ☆.我是前方高能的分割线.·°∴☆..·°.·°∴☆

不管拖多久,该来的还是得来。

最大熵模型介绍请猛击:http://www.cnblogs.com/hexinuaa/p/3353479.html 我写的话不会比这位亲更好

看到这里,列位看官就要说了:数学什么的最讨厌了!(╯#-皿-)╯~~╧═╧

说得好!~

最大熵模型计算量真的超恐怖!我想不会有人喜欢这种繁琐的计算。但是幸好只要写几十行代码(python的话不到一百行),计算机就会替我们做出计算!所以,无论多少次我都要说:

写代码什么的最喜欢了!o(〃'▽'〃)o

最后,为什么基于最大熵建模?

Jaynes证明:对随机事件的所有相容的预测中,熵最大的预测出现的概率占绝对优势。

Tribus证明:正态分布、伽马分布、指数分布等,都是最大熵原理的特殊情况。

当假定随机变量最随机最难预测的时候,我们对于未知分布最不确定的推断反而是唯一不偏不倚的选择,这不禁让人想起一句老(xin)话:





0 0
原创粉丝点击