点击上方蓝色字体,关注AI小白入门哟

跟着博主的脚步,每天进步一点点

本文介绍了最大熵马尔可夫模型,在隐马尔可夫模型(隐状态序列)的基础上应用最大熵模型思想,将一个概率生成模型转化为概率判别模型,同样最大熵马尔可夫模型带解决的三个问题: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

方便交流学习,备注:昵称-学校or公司-方向,进入DL&NLP交流群。

记得备注呦

【推荐阅读】

初学者|NLP相关任务简介

【科研】自然语言理解难在哪儿?

自然语言处理中注意力机制综述

新年送福气|您有一份NLP大礼包待领取

“达观杯”文本智能处理挑战赛,季军带你飞

【机器学习】一文读懂线性回归、岭回归和Lasso回归

长按二维码关注
AI小白入门

ID:StudyForAI

学习AI学习ai(爱)

期待与您的相遇~

你点的每个在看,我都认真当成了喜欢

【机器学习】最大熵马尔科夫模型相关推荐

  1. 标记偏置 隐马尔科夫 最大熵马尔科夫 HMM MEMM

    转载自:http://blog.csdn.net/xum2008/article/details/38147425 隐马尔科夫模型(HMM): 图1. 隐马尔科夫模型 隐马尔科夫模型的缺点: 1.HM ...

  2. 最大熵马尔科夫和隐马尔科夫比较 MEMMs HMMs

    MEMMs:最大熵马尔科夫模型 转移概率: HMMs:隐马尔科夫模型 转移概率(可以把转移概率和发射概率合起来看作转移概率): MEMMs可以利用更多的特征,如大小写,词缀,前后词等等,即可以很好的利 ...

  3. 【深度学习】最大熵马尔科夫、CRF、条件随机场、最大匹配法

    文章目录 一 最大熵马尔科夫和CRF 二 条件随机场 三 最大匹配法 1 来源 2 正向最大匹配法 逆向最大匹配法 双向最大匹配法 一 最大熵马尔科夫和CRF 最大熵模型(MaxEnt):指的是多元逻 ...

  4. 【火炉炼AI】机器学习044-创建隐马尔科夫模型

    [火炉炼AI]机器学习044-创建隐马尔科夫模型 (本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2 ...

  5. 机器学习-- > 隐马尔科夫模型(HMM)

    博客内容将首发在微信公众号"跟我一起读论文啦啦",上面会定期分享机器学习.深度学习.数据挖掘.自然语言处理等高质量论文,欢迎关注! 本篇博文将详细总结隐马模型相关知识,理解该模型有 ...

  6. 【机器学习】--隐含马尔科夫模型从初识到应用

    一.前述 马尔可夫(1856~1922),苏联数学家.切比雪夫的学生.在概率论.数论.函数逼近论和微分方程等方面卓有成就.     马尔可夫模型(Markov Model)是一种统计模型,广泛应用在语 ...

  7. 机器学习知识点(二十五)Java实现隐马尔科夫模型HMM之jahmm库

    1.隐马尔可夫模型HMM的应用场景,关乎于序列和状态变化的都可以.    发现java有可库,专为开发HMM,可惜只能在CSDN上有得下载.     2.jahmm是java开发隐马尔科夫模型的一个j ...

  8. 机器学习笔记(十三)——隐马尔科夫模型

    一.隐马尔科夫模型 在马尔科夫模型中,每一个状态代表了一个可以观察的事件,所以,马尔科夫模型有时称为可视马尔科夫模型(visible Markov model,VMM),这在某种程度上限制了模型的适应 ...

  9. 机器学习笔记(十二)——马尔科夫模型

    马尔科夫模型是一种概率图模型,它描述了一类重要的随机过程(随机过程又称为随机函数,是随时间而随机变化的过程).我们常常需要考察一个随机变量序列,这些随机变量序列并不是相互独立的,每个随机变量的值都依赖 ...

最新文章

  1. 你真的会使用Glide吗?——Glide的高级用法
  2. C++求任意多项式的所有可能的近似根durand kerner roots(附完整源码)
  3. CSS自定义消息提示
  4. html5翻卡片游戏,用 JavaScript 写一个卡片小游戏
  5. linux C 中的volatile使用【转】
  6. matlab 线性方程组 最小二乘解,超定方程组的最小二乘解
  7. 阿里云镜像加速Docker
  8. phantom.js - HTML To PDF
  9. 用windows2008服务器安装sccm2012 (安装sccm2012)
  10. Adobe Creative Cloud无法连接至服务器的解决办法
  11. 数据分析--数据预处理
  12. 权重确定方法四:主成分分析法确定权重(PCA)
  13. 学习笔记 Tianmao 篇 recyclerView 辅助的RecycleAdapterImpl类(适配自定义 模板)
  14. Linux的strings命令_拔剑-浆糊的传说_新浪博客
  15. BZOJ4134 ljw和lzr的hack比赛
  16. android studio如何连接夜神模拟器
  17. [转]如何查找最新文献
  18. 计算机网络实验报告文件共享,实验报告局域网的文件共享、互联网的使用.doc...
  19. [YNOI2017]由乃的商场之旅 莫队
  20. 小猿圈IT自学分享-自学编程需要克服的困难

热门文章

  1. WPS或word编辑公式后行间距变大与公式浮动问题
  2. 根据Schema写出XML文档四部曲
  3. 第二届“祥云杯”pwn_note
  4. cnpm显示成功安装后cnpm不是内部命令的解决办法
  5. 数字图像处理---边缘检测算法复现(ED、EDPF、CannySR、CannySRPF)
  6. centos7字体颜色改变_Linux改变字体和背景颜色
  7. 在service的方法上加@AutoWire注解
  8. android 开发 华为手机型号,华为手机用户可以体验Android P了!9款华为机型开放EMUI 9.0升级...
  9. PHP小程序登录获取openid
  10. Python3 网络爬虫快速入门实战解析