【机器学习】最大熵马尔科夫模型

2020 年 2 月 3 日 AINLP




本文介绍了最大熵马尔可夫模型,在隐马尔可夫模型(隐状态序列)的基础上应用最大熵模型思想,将一个概率生成模型转化为概率判别模型,同样最大熵马尔可夫模型带解决的三个问题:1)概率计算,2)参数学习,3)序列预测,其中概率计算与参数学习类比于最大熵模型,序列标注采用维特比解码。


作者 | 文杰

编辑 | yuquanle




最大熵马尔科夫模型


有最大熵模型和隐马尔可夫模型的基础,再看最大熵马尔科夫模型就直观多了。在隐马尔可夫模型中:



之间独立作用 。在最大熵马尔科夫模型中则没有这一假设,而直接采用条件概率的形式 输出模型。


结合最大熵模型,不考虑整个序列时,第 时刻的状态可以看作是一个分类问题,采用最大熵模型,由 构成分类模型 ,有最大熵模型的结论,我们知道分类模型是一个关于 的函数,表达式如下:


其中 是联合标签 特征模板, 是特征模板的权重, 是联合所有可能的标签 特征模板求和,表示归一化因子。对于参数 的求解,可以采用最大熵模型的使用的优化算法,但是值得注意的是,在优化求解过程中,每个时刻单独归一化,不考虑序列性。

这里,由于笔者之前的误解,对于最大熵模型的特征模板的概率求解采用最大似然估计的方式直接对特征模板进行统计,以其频率作为概率,结果发现还是有效。其中原因可能是我的这种统计方式是基于期望最大化的思想,运用最大似然估计得到模型参数正好是统计频率。


在状态预测中,考虑最大化整个序列的概率,意味着目标函数如下:


目标函数也就是求解一条最优的状态转移路径,同样可以采用Viterbi算法。


代码实战



A、最大熵模型维特比算法


int Viterbi_M(const DataStr &testdata)  {  int t,i,j,k;  int pos;  double deta[VEC_LEN][STATE];  int fai[VEC_LEN][STATE];  double max_deta;  double max_fai;  int max_i;  for(i=0; i<STATE; i++)  {  pos=getPos(testdata[0][0]);  deta[0][i]=dicos_m.ps0[i]*dicos_m.pos[pos][i];  fai[0][i]=0;  }  for(k=0; k<testdata.size(); k++)  {  for(t=1; t<testdata[k].size(); t++)  {  for(i=0; i<STATE; i++)  {  max_deta=double_min;  max_fai=double_min;  for(j=0; j<STATE; j++)  {  pos=getPos(testdata[k][t]);  if(deta[t-1][j]*dicos_m.pss[j][i]*dicos_m.pos[pos][i]>max_deta)  {  max_deta=deta[t-1][j]*dicos_m.pss[j][i]*dicos_m.pos[pos][i];  }  if(deta[t-1][j]*dicos_m.pss[j][i]>max_fai)  {  max_fai=deta[t-1][j]*dicos_m.pss[j][i];  max_i=j;  }  }  deta[t][i]=max_deta;  fai[t][i]=max_i;  }  }  max_deta=double_min;  for(i=0; i<STATE; i++)  {  if(deta[testdata[k].size()-1][i]>max_deta)  {  max_deta=deta[testdata[k].size()-1][i];  max_i=i;  }  }  cout<<max_i;  for(t=testdata[k].size()-2; t>=0; t--)  {  max_deta=double_min;  cout<<fai[t+1][max_i];  for(i=0; i<STATE; i++)  {  if(deta[t][i]>max_deta)  {  max_deta=deta[t][i];  max_i=i;  }  }  }  cout<<endl;  }  }

完整代码见阅读原文


The End


本文转载自公众号:AI小白入门,作者文杰

推荐阅读


AINLP年度阅读收藏清单


鼠年春节,用 GPT-2 自动写对联和对对联


大幅减少GPU显存占用:可逆残差网络(The Reversible Residual Network)


征稿启示| 让更多的NLPer看到你的文章

AINLP-DBC GPU 云服务器租用平台建立,价格足够便宜

我们建了一个免费的知识星球:AINLP芝麻街,欢迎来玩,期待一个高质量的NLP问答社区


关于AINLP


AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP君微信(id:AINLP2),备注工作/研究方向+加群目的。


登录查看更多
1

相关内容

最大熵模型(maximun entropy model)由最大熵原理推导实现,而最大熵原理损失概率模型学习的一个准则。最大熵原理认为,学习概率模型是,所有可能的概率模型(分布)中,熵最大的模型是最好的模型。最大熵原理也可以表述为在满足约束条件的模型集合中取熵最大的模型
【经典书】机器学习:贝叶斯和优化方法,1075页pdf
专知会员服务
392+阅读 · 2020年6月8日
【干货书】用于概率、统计和机器学习的Python,288页pdf
专知会员服务
280+阅读 · 2020年6月3日
基于多头注意力胶囊网络的文本分类模型
专知会员服务
76+阅读 · 2020年5月24日
机器学习速查手册,135页pdf
专知会员服务
336+阅读 · 2020年3月15日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
专知会员服务
158+阅读 · 2020年1月16日
机器学习入门的经验与建议
专知会员服务
90+阅读 · 2019年10月10日
一文读懂线性回归、岭回归和Lasso回归
CSDN
33+阅读 · 2019年10月13日
【代码分享】系列之朴素贝叶斯(github clone)
机器学习算法与Python学习
6+阅读 · 2018年3月24日
BAT机器学习面试题1000题(316~320题)
七月在线实验室
14+阅读 · 2018年1月18日
深度 | 结合Logistic回归构建最大熵马尔科夫模型
机器之心
4+阅读 · 2017年11月25日
干货|掌握机器学习数学基础之优化[1](重点知识)
机器学习研究会
9+阅读 · 2017年11月19日
机器学习(16)之支持向量机原理(二)软间隔最大化
机器学习算法与Python学习
6+阅读 · 2017年9月8日
机器学习(15)之支持向量机原理(一)线性支持向量机
机器学习算法与Python学习
6+阅读 · 2017年9月1日
机器学习(13)之最大熵模型详解
机器学习算法与Python学习
7+阅读 · 2017年8月24日
Bivariate Beta LSTM
Arxiv
5+阅读 · 2019年10月7日
Logically-Constrained Reinforcement Learning
Arxiv
3+阅读 · 2018年12月6日
Arxiv
3+阅读 · 2018年10月18日
Arxiv
3+阅读 · 2018年4月18日
VIP会员
相关VIP内容
【经典书】机器学习:贝叶斯和优化方法,1075页pdf
专知会员服务
392+阅读 · 2020年6月8日
【干货书】用于概率、统计和机器学习的Python,288页pdf
专知会员服务
280+阅读 · 2020年6月3日
基于多头注意力胶囊网络的文本分类模型
专知会员服务
76+阅读 · 2020年5月24日
机器学习速查手册,135页pdf
专知会员服务
336+阅读 · 2020年3月15日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
专知会员服务
158+阅读 · 2020年1月16日
机器学习入门的经验与建议
专知会员服务
90+阅读 · 2019年10月10日
相关资讯
一文读懂线性回归、岭回归和Lasso回归
CSDN
33+阅读 · 2019年10月13日
【代码分享】系列之朴素贝叶斯(github clone)
机器学习算法与Python学习
6+阅读 · 2018年3月24日
BAT机器学习面试题1000题(316~320题)
七月在线实验室
14+阅读 · 2018年1月18日
深度 | 结合Logistic回归构建最大熵马尔科夫模型
机器之心
4+阅读 · 2017年11月25日
干货|掌握机器学习数学基础之优化[1](重点知识)
机器学习研究会
9+阅读 · 2017年11月19日
机器学习(16)之支持向量机原理(二)软间隔最大化
机器学习算法与Python学习
6+阅读 · 2017年9月8日
机器学习(15)之支持向量机原理(一)线性支持向量机
机器学习算法与Python学习
6+阅读 · 2017年9月1日
机器学习(13)之最大熵模型详解
机器学习算法与Python学习
7+阅读 · 2017年8月24日
Top
微信扫码咨询专知VIP会员