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

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熵的变化,具体值参考论文公式。

参数计算:

这个事情真正的难点在于,如何分布式的计算这些信息。每次删除一条数据,明显不可行,一下子删除完也不行

通过公式来看,这里面的重点是如何更新alpha,以及alpha确定后,如何迭代。

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

上面的算法属于理论上的算法,来刻画两个模型的距离,在输入法这个应用上,并不合适。

一般来讲,输入法原始model 的规模可能在30亿,而一个local的model需要的最多也是在1000w-2000w左右。基本上需要剪掉90%的数据,最终的model和原始model差别还是比较大的。

基于熵的剪枝,一般意义上期望是剪掉后和原始模型差别不大,根据经验来讲,剪掉20%左右的数据就很不错了

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

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

时间: 06-25

输入法之模型剪枝一(基于熵的剪枝)的相关文章

输入法之模型训练

输入法,尤其是拼音输入法,解决的就是一些序列标注的问题,针对给定的状态(拼音),获取其概率最高的隐状态(中文). 这个是一个标准的HMM,针对HMM的解码过程,是一个很成熟也很完备的东西. local的计算和存储能力都有限,我们选择一般是二阶马尔科夫,也就是所谓的bigram model. 高阶对质量会有帮助,但是涉及到存储和计算,工程上不可行. 同理,利用ME 以及CRFmodel都可以解决这一类的标注问题,同样是工程上的问题,不太可行. 确定了采用bigram model,那么训练过程也就很

Linux 驱动之 platform 驱动模型总结 (基于tiny210 平台 LED 驱动)

1.概述 在一般情况下,2.6内核中已经初始化并挂载了一条platform总线在sysfs文件系统中.那么我们编写platform模型驱动时,需要完成两个工作:1:实现platform驱动 2:实现platform设备,然而在实现这两个工作的过程中还需要实现其他的很多小工作,在后面介绍.platform模型驱动的实现过程核心架构就很简单,如下所示. platform驱动模型三个对象:platform总线.platform设备.platform驱动. platform总线对应的内核结构:struc

以图搜图之模型篇: 基于 InceptionV3 的模型 finetune

在以图搜图的过程中,需要以来模型提取特征,通过特征之间的欧式距离来找到相似的图形. 本次我们主要讲诉以图搜图模型创建的方法. 本文主要参考了这位大神的文章, 传送门在此: InceptionV3进行fine-tuning 训练模型代码如下: # 基本流程 # import os import sys import glob import argparse import matplotlib.pyplot as plt from keras.applications.inception_v3 im

NLP:language model(n-gram/Word2Vec/Glove)

首先,大概讲一下自然语言处理的背景.互联网上充斥着大规模.多样化.非结构化的自然语言描述的文本,如何较好的理解这些文本,服务于实际业务系统,如搜索引擎.在线广告.推荐系统.问答系统等, 给我们提出了挑战.例如在效果广告系统中,需要将 Query(User or Page) 和广告 Ad 投影到相同的特征语义空间做精准匹配,如果 Query 是用户,需要基于用户历史数据离线做用户行为分析,如果 Query 是网页,则需要离线或实时做网页语义分析.文本语义分析(又称文本理解.文本挖掘)技术研究基于词

斯坦福大学自然语言处理第四课“语言模型(Language Modeling)”

http://52opencourse.com/111/斯坦福大学自然语言处理第四课-语言模型(language-modeling) 一.课程介绍 斯坦福大学于2012年3月在Coursera启动了在线自然语言处理课程,由NLP领域大牛Dan Jurafsky 和 Chirs Manning教授授课:https://class.coursera.org/nlp/ 以下是本课程的学习笔记,以课程PPT/PDF为主,其他参考资料为辅,融入个人拓展.注解,抛砖引玉,欢迎大家在“我爱公开课”上一起探讨学

语言模型

斯坦福大学自然语言处理第四课“语言模型(Language Modeling)” 一.课程介绍 斯坦福大学于2012年3月在Coursera启动了在线自然语言处理课程,由NLP领域大牛Dan Jurafsky 和 Chirs Manning教授授课:https://class.coursera.org/nlp/ 以下是本课程的学习笔记,以课程PPT/PDF为主,其他参考资料为辅,融入个人拓展.注解,抛砖引玉,欢迎大家在“我爱公开课”上一起探讨学习. 课件汇总下载地址:斯坦福大学自然语言处理公开课课

C4.5决策树个人笔记

在ID3算法完全掌握的基础上,学习C4.5算法,需要明白以下几件事: 1.C4.5如何划分数据集?——用信息增益比: 2.连续型属性如何处理?——选择划分属性时,当做离散变量:选择划分点时,用信息增益来选. 3.如何剪枝?——基于误判的剪枝和悲观剪枝,后者更加常用. 参考: http://shiyanjun.cn/archives/428.html http://blog.sina.com.cn/s/blog_68ffc7a40100urn3.html http://www.cnblogs.co

基于tomcat响应处理模型实现的高并发web服务器

在上一篇博客中,一个简单的AIOweb处理例子,可以看到AIO异步处理,依赖操作系统完成IO操作的Proactor处理模型确实很强大,可以是实现高并发,高响应服务器的不错选择,但是在tomcat中的connector的处理模型还依旧是基于NIO的处理,当然,我认为这可能会在以后的版本进行改进,但另一方面,我更认为AIO的负载控制方面的处理可能是比较难的,因为AIO api并没有提供我们对分配线程组的处理,而只是提供一个线程组,交给操作系统去解决io处理上的问题,所以,这可能会给需要复杂处理的负载

聚类:层次聚类、基于划分的聚类(k-means)、基于密度的聚类、基于模型的聚类

一.层次聚类 1.层次聚类的原理及分类 1)层次法(Hierarchicalmethods)先计算样本之间的距离.每次将距离最近的点合并到同一个类.然后,再计算类与类之间的距离,将距离最近的类合并为一个大类.不停的合并,直到合成了一个类.其中类与类的距离的计算方法有:最短距离法,最长距离法,中间距离法,类平均法等.比如最短距离法,将类与类的距离定义为类与类之间样本的最短距离. 层次聚类算法根据层次分解的顺序分为:自下底向上和自上向下,即凝聚的层次聚类算法和分裂的层次聚类算法(agglomerat