码迷,mamicode.com
首页 > 其他好文 > 详细

输入法之模型剪枝一(基于熵的剪枝)

时间:2014-06-26 07:24:00      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:输入法   数据挖掘   数据   剪枝      

prunning,剪枝,顾名思义就是减掉那些不重要的。

从理论上来讲,剪枝达到的效果就是剪枝后的q和剪枝前的 p 最大化相似,有两种算法 entroy-based以及rank-based。

针对model,使用相对熵来刻画D(q||p) 来刻画,保证两个model的熵差别最小,就是entropy-based。如果使用rank(p|q)来描述,保证整个model的rank差别最小(主要是针对同一个bigram pair的left word),就是rank-based。

对于smoothing,我们使用的是katz平滑。
entropy-based 计算的套路:
1.针对每一条数据,计算删除后的模型参数,对于katz,重新计算alpha,基于新/老alpha,看看整个model熵的变化,具体值参考论文公式。
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣bubuko.com,布布扣
参数计算:
bubuko.com,布布扣
bubuko.com,布布扣

这个事情真正的难点在于,如何分布式的计算这些信息。每次删除一条数据,明显不可行,一下子删除完也不行
通过公式来看,这里面的重点是如何更新alpha,以及alpha确定后,如何迭代。

rank-based算法当时也做过尝试,感觉和entropy-based差不多,并且这两个都没有达到期望的效果,所以并没有深入研究

上面的算法属于理论上的算法,来刻画两个模型的距离,在输入法这个应用上,并不合适。
一般来讲,输入法原始model 的规模可能在30亿,而一个local的model需要的最多也是在1000w-2000w左右。基本上需要剪掉90%的数据,最终的model和原始model差别还是比较大的。
基于熵的剪枝,一般意义上期望是剪掉后和原始模型差别不大,根据经验来讲,剪掉20%左右的数据就很不错了

所以真正意义上的剪枝应该基于输入法的特性来做

输入法之模型剪枝一(基于熵的剪枝),布布扣,bubuko.com

输入法之模型剪枝一(基于熵的剪枝)

标签:输入法   数据挖掘   数据   剪枝      

原文地址:http://blog.csdn.net/hxxiaopei/article/details/34451237

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!