NLP 最大熵模型 张林 2017.12.15.

Slides:



Advertisements
Similar presentations
四川财经职业学院会计一系会计综合实训 目录 情境 1.1 企业认知 情境 1.3 日常经济业务核算 情境 1.4 产品成本核算 情境 1.5 编制报表前准备工作 情境 1.6 期末会计报表的编制 情境 1.2 建账.
Advertisements

主编:邓萌 【点按任意键进入】 【第六单元】 教育口语. 幼儿教师教育口 语概论 模块一 幼儿教师教育口语 分类训练 模块二 适应不同对象的教 育口语 模块三 《幼儿教师口语》编写组.
第一組 加減法 思澄、博軒、暐翔、寒菱. 大綱 1. 加減法本質 2. 迷思概念 3. 一 ~ 七冊分析 4. 教材特色.
海南医学院附 院妇产科教室 华少平 妊娠合并心脏病  概述  妊娠、分娩对心脏病的影响  心脏病对妊娠、分娩的影响  妊娠合病心脏病的种类  妊娠合并心脏病对胎儿的影响  诊断  防治.
植树节的由来 植树节的意义 各国的植树节 纪念中山先生 植树节的由来 历史发展到今天, “ 植树造林,绿化祖国 ” 的热潮漫卷 了中华大地。从沿海到内地,从城市到乡村,涌现了多少 造林模范,留下了多少感人的故事。婴儿出世,父母栽一 棵小白怕,盼望孩子和小树一样浴光吮露,茁壮成长;男 女成婚,新人双双植一株嫩柳,象征家庭美满,幸福久长;
客户协议书 填写样本和说明 河南省郑州市金水路 299 号浦发国际金融中 心 13 层 吉林钰鸿国创贵金属经营有 限公司.
浙江省县级公立医院改革与剖析 马 进 上海交通大学公共卫生学院
第二章 环境.
教师招聘考试 政策解读 讲师:卢建鹏
了解语文课程的基本理念,把握语文素养的构成要素。 把握语文教育的特点,特别是开放而有活力的语文课程的特点。
北台小学 构建和谐师生关系 做幸福教师 2012—2013上职工大会.
福榮街官立小學 我家孩子上小一.
第二章 资源环境信息系统分析.
第2期技職教育再造方案(草案) 教育部 101年12月12日 1 1.
企业员工心态管理培训 企业员工心态管理培训讲师:谭小琥.
历史人物的研究 ----曾国藩 组员: 乔立蓉 杜曜芳 杨慧 组长:马学思 杜志丹 史敦慧 王晶.
教育部高职高专英语类专业教学指导委员会 刘黛琳 山东 • 二○一一年八月
淡雅诗韵 七(12)班 第二组 蔡聿桐.
第七届全国英语专业院长/系主任高级论坛 汇报材料
小數怕長計, 高糖飲品要節制 瑪麗醫院營養師 張桂嫦.
自然抗癌法.
制冷和空调设备运用与维修专业 全日制2+1中等职业技术专业.
会计信息分析与运用 —浙江古越龙山酒股份有限公司财务分析 组员:2006级工商企业管理专业 金国芳 叶乐慧 魏观红 徐挺挺 虞琴琴.
第六章 人体生命活动的调节 人体对外界环境的感知.
芹菜 英语051班 9号 黄秋迎 概论:芹菜是常用蔬菜之一,既可热炒,又能凉拌,深受人们喜爱。近年来诸多研究表明,这是一种具有很好药用价值的植物。 别名:旱芹、样芹菜、药芹、香芹、蒲芹 。 芹菜属于花,芽及茎类。
2012年 学生党支部书记工作交流 大连理工大学 建工学部 孟秀英
北京市职业技能鉴定管理中心试题管理科.
2014吉林市卫生局事业单位招聘153名工作人员公告解读
各類所得扣繳法令 與申報實務 財政部北區國稅局桃園分局 103年9月25日
初級游泳教學.
爱国卫生工作的持续发展 区爱卫办 俞贞龙.
第八章 数学活动 方程组图象解法和实际应用
本课内容提要 一、汇率的含义 二、汇率变化与币值的关系 三、汇率变化的影响. 本课内容提要 一、汇率的含义 二、汇率变化与币值的关系 三、汇率变化的影响.
散文鉴赏方法谈.
治癒肺癌的妙方 按鍵換頁 一共 25 頁.
比亚迪集成创新模式探究 深圳大学2010届本科毕业论文答辩 姓名:卓华毅 专业:工商管理 学号: 指导老师:刘莉
如何撰写青年基金申请书 报 告 人: 吴 金 随.
点击输 入标题 点击输入说明性文字.
國際志工海外僑校服務 越南 國立臺中教育大學 2010年國際志工團隊.
痰 饮.
學分抵免原則及 學分抵免線上操作說明會.
教 学 查 房 黄宗海 南方医科大学第二临床医学院 外科学教研室.
评 建 工 作 安 排.
“十二五”国家科技计划经费管理改革培训 概预算申报与审批 国家科学技术部 2012年5月.
“十二五”国家科技计划经费管理改革培训 概预算申报与审批 国家科学技术部 2012年5月.
首都体育学院 武术与表演学院 张长念 太极拳技击运用之擒拿 首都体育学院 武术与表演学院 张长念
治癒肺癌的妙方.
现行英语中考考试内容与形式的利与弊 黑龙江省教育学院 于 钢 2016, 07,黄山.
第5讲:比较安全学的创建 吴 超 教授 (O)
個人傷害險-鐵馬逍遙專案 商品介紹 商品特色 保障內容 承保對象 保險費 案例 業務費用及淨業績 車險部業務規劃科.
彰化縣西勢國小備課工作坊 新生入學的班級經營 主講:黃盈禎
重庆市西永组团K标准分区基本情况介绍.
西貢區歷史文化 清水灣 鍾礎營,楊柳鈞,林顥霖, 譚咏欣,陳昭龍.
所得稅扣繳法令與實務 財政部北區國稅局桃園分局 102年12月19日 1 1.
角 色 造 型 第四章 欧式卡通造型 主讲:李娜.
C2C网站如何帮助降低交易双方信息不对称 ——以淘宝网与易趣网为例 组员:陈文勇 刘嘉杰 黎丝敏 郑小丽 陈影 林丹丹 邓楚惠 傅伟雯.
订单合并拆分功能详解 荷叶.
走进校园流行 高二15班政治组 指导老师:曾森治老师.
長高 長壯 ㄋㄟㄋㄟ補給站 每天2份奶~~健康跟著來!.
征 管 改 革 的 变 化 您感受到了吗 (纳税服务版) 开封市地方税务局宣 尊敬的纳税人,尊敬的领导,同志们大家好:
安 全 維 護 臺 東 林 區 管 理 處 消費安全 詐騙防範宣導 健康生活 毒家新聞 杜絕不明匯款及金融轉帳操作
量子與能源 石化能源危機 核分裂能 核融合能 太陽能 燃料電池.
第4章 循环结构 程序设计2 本章主讲 赵家刚 计算机编程导论.
103年度清水區農會四健推廣教育 第2單元 06月12 日 PM1:20-2:50 題目:六大類食物/均衡飲食金字塔 均衡飲食金字塔
技术试验及其方法 制作者 : 贾琼瑞
辦理建教合作注意事項 國立台灣師範大學 鄭慶民
快樂 癌瘤就消失.
学籍异动学生选课辅导 学年第1学期.
组员:张一凡 薛菲 马玉洁 提运亨 孙悦 顿凯 张刚 商明样 陈默
2019/2/22 批销商品组套培训指导
Presentation transcript:

NLP 最大熵模型 张林 2017.12.15

目 录 2 特征和约束 1 3 最大熵模型原理 引例 4 公式,算法及实现

一 引例

一.引例 最大熵模型的目的: 获取模型中所有满足约束条件的信息熵极大的标签 特点: 1.可以使用任意的复杂相关特征 2.可灵活设置约束条件,通过约束条件的多少调节模型对未知数据的适应度和对已知数据的拟合度 3.能自然解决统计模型中的平滑问题 1.是对随机变量不确定性的度量 2.本质是信息量的期望 3.平均分布是“最不确定”的分布

一.引例 简单模拟一个汉语中词性标注的过程:“把”有5个词性标签 在没有任何语料支持情况下,只能使用熵最大的均匀分布,即5种词性出现的概率均为1/5 开始引入一定数量的语料样本,假定样本中有30%的比例被标注为“介词”和“量词”,则可更新约束条件: p(介词)+P(量词)=3/10 p(数词)+p(名词)+p(介词)+P(量词)+p(动词)=1 简单将这5种词性写成集合的形式: {数词,名词,介词,量词,动词} 为“把”的每一个词性分配一个估计值p,即选择模型p作为某一词性出现的概率。 为得到模型,需收集大量语料样本,目标有两个: 1.从样本中抽取一组决策过程的事实(规则) 2.基于规则构建词性标注模型 A:数词---个把月 B:名词---车把,门把 C:介词---把门关上 D:量词---一把伞 E:动词---把门,把住 约束条件:p(词性)总和必须为1 p(数词)+p(名词)+p(介词)+P(量词)+p(动词)=1 继续引入语料,发现量词和名词显著增加,更新约束 如何确定剩下几个词性的概率?? p(介词)+P(量词)=3/10 p(数词)+p(名词)+p(介词)+P(量词)+p(动词)=1 p(名词)+P(量词)=1/2 已知的约束条件 P(介词)=3/20 P(量词)=3/20 未知的均匀分布(最大熵原则) p(动词)=7/30 p(名词)=7/30 p(数词)=7/30

一.引例 随着问题复杂度的增大,出现了两个问题: 1.如何度量模型的均匀度 2.如何找到满足一组约束且最均匀的模型 最大熵方法: 根据已知的只是进行建模,对未知的不做任何假设,简单来说,就是在给定的事实条件下,选择符合所有事实,并使用熵最大的均匀模型

二 特征和约束

二.特征和约束 根据上例,构造一个概率图模型,产生一个输出y,y属于一个有穷集合Y,输出“把”的词性,输出值y是集合{数词,名词,介词,量词,动词}中的任意一个标签,这个过程会受到上下文信息的影响,将语境因素定义为x,属于有穷集合X。我们的任务在于构造一个统计模型,预测在给定上下文x的情况下,输出y的概率,即p(y|x). 为了得到模型,进行语料样本的收集: (x1,y1),(x2,y2),(x3,y3)…..(xn,yn). 不论收集多少样本,都不会是语言文本的总体,用一个经验分布函数来表达训练样本:

f(x,y)= 1 0 二.特征和约束 上下文独立的统计模式 p(介词)+P(量词)=3/10 p(名词)+P(量词)=1/2 若在语料样本中,“一”出现在“把”之前,那么“把”属于“量词”的概率为9/10 引入一个指示函数: f(x,y)= 1 0 X,y满足某一事实 特征 X,y不满足某一事实

EP(f𝑖)= 𝑥,𝑦 𝑃 𝑥 𝑃(𝑦|𝑥)𝑓𝑖(𝑥,𝑦) 二.特征和约束 任何样本的统计量都可以表示为特征函数关于经验分布 P (X,Y) 的期望值 : 语料样本中x的经验分布 EP(f𝑖)= 𝑥,𝑦 𝑃 𝑥,𝑦 𝑓𝑖(𝑥,𝑦) ~ ~ 特征f关于模型的P(y|x)的期望值: ~ EP(f𝑖)= 𝑥,𝑦 𝑃 𝑥 𝑃(𝑦|𝑥)𝑓𝑖(𝑥,𝑦) ~ 样本足够大的情况下,有大数定理,样本与总体同分布,即EP(f𝑖)=EP(f𝑖) 𝑥,𝑦 𝑃 𝑥,𝑦 𝑓(𝑥,𝑦) = 𝑥,𝑦 𝑃(𝑥)𝑃 𝑥|𝑦 𝑓(𝑥,𝑦) ~ ~ 约束等式 ~ ~

三 最大熵的原理

C= 𝑝∈ 𝑃|𝐸𝑝 𝑓𝑖 =𝐸𝑝 𝑓𝑖 ,(i=1,2,3,…n) 从满足约束的模型集合 CC 中找到使得 P(Y|X)P(Y|X) 的熵最大的即为 MaxEnt 模型了 从满足约束的模型集合 CC 中找到使得 P(Y|X)P(Y|X) 的熵最大的即为 MaxEnt 模型了 三.最大熵原理 假设从训练集中抽出n个特征,相应的有n个特征函数f𝑖(x,y)(i=1,2,3,…n),以及n个约束条件, C 表示满足约束的模型集合, C= 𝑝∈ 𝑃|𝐸𝑝 𝑓𝑖 =𝐸𝑝 𝑓𝑖 ,(i=1,2,3,…n) ~ 最大熵模型就是从满足约束的模型集合 C中找到使得 P(Y|X) 的熵最大的模型 P 约束的几何解释 c1 c2 c3

H(p)=- 𝑥,𝑦 𝑃 𝑥 𝑃 𝑦 𝑥 𝑙𝑜𝑔𝑃(𝑦|𝑥) 三.最大熵原理 属于集合C的所有模型P中,最大熵的理念决定我们选择最均匀的分布 条件分布P(y|x)的均匀度定义为条件熵: ~ H(p)=- 𝑥,𝑦 𝑃 𝑥 𝑃 𝑦 𝑥 𝑙𝑜𝑔𝑃(𝑦|𝑥) 熵的基本性质:(|X|为X变量的取值个数) (1)H(X)≥0 (2)H(X)≤log|𝑋|,当且仅当P(X=x)=1/|X| 熵的下界是0,此时的模型没有任何不确定性,熵的上界是log|Y|,即在所有可能的y上均匀分布。

P*=arg maxH(P) Find P* = arg maxH(P) =arg max( 三.最大熵原理 当从允许的概率分布模型C中选择模型时,模型p*∈𝐶,使得条件熵𝐻 𝑝 最大 P*=arg maxH(P) P ∈𝐶 该约束问题的完整形式: 目标函数的约束条件: Find P* = arg maxH(P) (1)P(y|x) ≥0 (2) 𝑦 𝑃 𝑦|𝑥 =1 =arg max( P ∈𝐶 ~ - 𝑥,𝑦 𝑃 𝑥 𝑃 𝑦 𝑥 𝑙𝑜𝑔𝑃 𝑦 𝑥 ) 𝑥,𝑦 𝑃 𝑥,𝑦 𝑓(𝑥,𝑦) ~ P ∈𝐶 (3) = 𝑥,𝑦 𝑃(𝑥)𝑃 𝑦|𝑥 𝑓(𝑥,𝑦) ~

四 公式,算法及实现

Find P* = arg maxH(P) =arg max( 目标函数 四.公式,算法,及实现 =arg max( ~ - 𝑥,𝑦 𝑃 𝑥 𝑃 𝑦 𝑥 𝑙𝑜𝑔𝑃 𝑦 𝑥 ) P ∈𝐶 为解决最优化问题,引入拉格朗日乘子,构造朗格朗日函数 目标函数 目标函数的约束条件: (1)P(y|x) ≥0 (2) 𝑦 𝑃 𝑦|𝑥 =1 𝑥,𝑦 𝑃 𝑥,𝑦 𝑓(𝑥,𝑦) ~ (3) = 𝑥,𝑦 𝑃(𝑥)𝑃 𝑦|𝑥 𝑓(𝑥,𝑦) ~

λi (t+1)= λi (t) + 1 𝑀 log E p(f i) Ep(t)(f i) 四.公式,算法,及实现 GIS算法: step1:初始化参数,设置λi(0)等于任意值,如等于0 step2:计算Ep(f i),i=1,2,3…n step3:执行迭代,更新参数 计算Ep(t)(f i), i=1,2,3…n For i=1,2,3…n Do λi (t+1)= λi (t) + 1 𝑀 log E p(f i) Ep(t)(f i) step4:检查收敛条件,若收敛算法结束,否则转到step3 ~ GIS算法用第N次迭代的模型来估算每个特征在训练数据中的分布。 ~ 当训练样本的特征分布和模型的特征分布想通知,就求得了最优化参数。

四.公式,算法,及实现 主函数 def load_data(self, file): for line in open(file): fields = line.strip().split() if len(fields) < 2: continue label = fields[0] #第一列为标签 self.labels.add(label) # (label,f) tuple is feature for f in set(fields[1:]): self.feats[(label, f)] += 1 self.trainset.append(fields) #print(self.feats) if __name__ == "__main__": maxent = MaxEnt() maxent . load_data("data.txt") maxent . train() print(maxent.predict("Rainy Happy Dry")) class MaxEnt(object): def __init__(self): self.feats = defaultdict(int) self.trainset = [] self.labels = set()

def train(self, max_iter=1000): self._initparams() 四.公式,算法,及实现 主函数 def train(self, max_iter=1000): self._initparams() for i in range(max_iter): print ('iter %d ...' % (i + 1)) self.ep = self.Ep() self.lastw = self.w[:] for i,win in enumerate(self.w): delta = 1.0 / self.M * math.log(self.ep_[i] / self.ep[i]) self.w[i] += delta print(self.w,self.feats) if self._convergence(self.lastw, self.w): break if __name__ == "__main__": maxent = MaxEnt() maxent . load_data("data.txt") maxent . train() print(maxent.predict("Rainy Happy Dry"))

def train(self, max_iter=1000): self._initparams() 四.公式,算法,及实现 def train(self, max_iter=1000): self._initparams() for i in range(max_iter): print ('iter %d ...' % (i + 1)) self.ep = self.Ep() self.lastw = self.w[:] for i,win in enumerate(self.w): delta = 1.0 / self.M * math.log(self.ep_[i] / self.ep[i]) self.w[i] += delta print(self.w,self.feats) if self._convergence(self.lastw, self.w): break def _initparams(self): self.size = len(self.trainset) self.M = max([len(record) - 1 for record in self.trainset]) self.ep_ = [0.0] * len(self.feats) for i, f in enumerate(self.feats): #计算经验分布的特征期望 self.ep_[i] = float(self.feats[f])/float(self.size) self.feats[f] = i # 为每一特征函数分配id self.w = [0.0] * len(self.feats) # 初始化权重 self.lastw = self.w

eps = [0.0] * len(self.feats) 四.公式,算法,及实现 def Ep(self): eps = [0.0] * len(self.feats) for record in self.trainset: #从训练集中迭代输出特征 features = record[1:] probs = self.calprob(features) # 条件概率 p(y|x) for f in features: for prob, label in probs: if (label, f) in self.feats: # 来自训练数据的特征. idx = self.feats[(label, f)] #获取特征的id # 计算期望 sum(P(x) * P(y|x) * f(x,y))。 其中P(x) = 1 / N eps[idx] += prob * (1.0 / self.size) return eps def train(self, max_iter=1000): self._initparams() for i in range(max_iter): print ('iter %d ...' % (i + 1)) self.ep = self.Ep() self.lastw = self.w[:] for i,win in enumerate(self.w): delta = 1.0 / self.M * math.log(self.ep_[i] / self.ep[i]) self.w[i] += delta print(self.w,self.feats) if self._convergence(self.lastw, self.w): break def calprob(self, features): wgts = [(self.probwgt(features, label), label) for label in self.labels] Z = sum([ w for w, label in wgts]) #归一化参数 prob = [ (w / Z, label) for w, label in wgts] return prob def def probwgt(self, features, label): wgt = 0.0 for f in features: if (label, f)in self.feats: wgt += self.w[self.feats[(label, f)]] return math.exp(wgt)

def train(self, max_iter=1000): self._initparams() 四.公式,算法,及实现 def train(self, max_iter=1000): self._initparams() for i in range(max_iter): print ('iter %d ...' % (i + 1)) self.ep = self.Ep() self.lastw = self.w[:] for i,win in enumerate(self.w): delta = 1.0 / self.M * math.log(self.ep_[i] / self.ep[i]) self.w[i] += delta print(self.w,self.feats) if self._convergence(self.lastw, self.w): break def _convergence(self, lastw, w): for w1, w2 in zip(lastw, w): if abs(w1 - w2) >= 0.01: #收敛--终止条件 return False return True

四.公式,算法,及实现 主函数 def predict(self, input): #预测函数 features = input.strip().split() prob = self.calprob(features) prob.sort(reverse=True) return prob if __name__ == "__main__": maxent = MaxEnt() maxent . load_data("data.txt") maxent . train() print(maxent.predict("Rainy Happy Dry"))

四.公式,算法,及实现 主函数 if __name__ == "__main__": maxent = MaxEnt() maxent . load_data("data.txt") maxent . train() print(maxent.predict("Rainy Happy Dry"))

优缺点 优点: 1.可以使用任意的负责相关特征,特征可随意选取,易于更换 2.可灵活设置约束条件,通过约束条件的多少调节模型对未知数据的适应度和对已知数据的拟合度 3.能自然解决统计模型中的平滑问题 4.一般无需独立性假设,每一特征fi对概率分布的贡献由参数λi决定,该参数通过一定的算法迭代训练得到。 缺点: (1) 由于约束函数数量和样本数目有关系,时空开销大 (2)数据稀疏问题严重 (3)对语料库的依赖性较强

THANK YOU