机器学习 —— 概率图模型(Homework: CRF Learning)

  概率图模型的作业越往后变得越来越有趣了。当然,难度也是指数级别的上涨啊,以至于我用了两个周末才完成秋名山神秘车牌的寻找,啊不,CRF模型的训练。

  条件随机场是一种强大的PGM,其可以对各种特征进行建模,同时可以使用随机梯度下降算法进行训练,训练的结果就是PGM中那些定义变量交互方式的参数。

1、LR模型的训练

  LR模型可以看作是CRF模型的低配版,在完全不定义随机变量交互,只考虑P(Y|X)的情况下,得到的就是LR模型。其数学表达如下:

  这里theta是参数,X是特征也是像素值,该形式成为Logistic Regression。训练的本质是针对theta在训练集上进行优化,使得 P_trainSet 的概率达到最大,P_trainSet = P_data1*P_data2.......*P_datan,用公式表达可以写作:

  

  这里连乘的形式并不利于我们分析,所以可以对目标方程取负对数——nll。同时将最大化问题转为最小化问题。

  

  函数求最小值只要沿起梯度方向改变自变量即可,所以这里使用梯度下降法来求取目标函数的最小值。所以,使用梯度下降法来训练核心有就是——找到梯度的表达式  

  对于LR模型来说,其梯度有着非常优雅的解析解,见之前博客。

  解决了梯度表达式之后,还有一个核心问题就是过拟合,这里可以用L2-norm来强迫参数趋近于0.参数趋近于0就代表弱化特征作用。特征被弱化了模型就无法贴近YLabel了。L2-norm的参数Lamda是诗出來的。此时使用的是矫正集,不能使用训练集。

  LR模型只是小小的热身。关键是CRF的建模与训练。

2、CRF的训练

  拿到CRF的训练对象的时候我是一脸濛逼的。既没有概率图,也没有团树图。只有模型参数和训练集。CRF的数学表达见之前博客。从程序设计的角度,要做的是由CRF模型参数生成FeatureSet.模型参数如下:

  

  1、隐性节点的状态card;2、观测节点的状态card。 除了模型参数之外,还需要定义模型交互方式(PGM factors),以OCR为例,模型有三种交互方式:1、Yi-Yi:表达了每个标签本身的概率。2、Yi-xi:对于给定像素位置Yi的概率。3、Yi-Yi+1:相邻标签各取某值的概率。由此可针对训练集中的每个数据生成CRF模型。虽然不同数据的模型是相似的(共享theta),但是其本身结构存在差异(单词长度不同)。

  实际上,每个feature的本质是 最终的table CPD 里的一个assignment. 而每个exp( fi*theta ),则是其中的val。所以   feature -- theta 和 table CPD 是联系在一起的。 所以这里也很好理解为什么一个theta可以对应多个feature. 因为CPD在概率图节点之间是复制的!(回忆一下遗传模型,遗传模式就是CPD,遗传模式在所有变量(人)之间不断复制....)CPD的复制就相当与feature的theta share. 

  这里假设L2-norm的lamda是已知的。并且模型采用L2-norm。所以,核心的任务就是针对训练集中的每对数据,找到grad,然后整个模型按照grad下降寻找最合适的一组theta.求grad的理论分析不赘述,这里只从算法实现的角度来研究。为获得grad和cost,我们一共有5个量需要求:

2.1 LogZ

  LogZ的计算是全局最难的。其数学表达如下:

  

  其需要对所有Y的取值求和。这代表要对 x 对应的所有可能的标签求和。换言之,要对最终联合分布CPD的val进行求和。如果是一个长度为7的单词,那就是26^7个数据求和。这显然是不现实的此数目多过太阳系里所有的星球。。。这里的第一个trick是利用团树标定算法求取Z.

  exp(XXXX)求的是整体概率(每个exp(fi*theta)是一个val),连乘是联合分布。团树算法中,每个消息 u 都是对之前变量进行边际化之后得到的。假设有一个3节点的团树链,团中分别有变量x1x2 ,x2x3, x3x4. 那么消息传递可以有以下形式:

  u12 = Σ1Φ   

  u23 = Σ2Φ2 *  u12   =  Σ2Φ2 * Σ1Φ1  = Σ12  Φ2 Φ

  u32 = Σ4Φ3  

  重点在于 Σ3 u32*u23 = Σ1234 Φ2 Φ2 Φ = Z

  从定性上而言,消息携带了两边全部的信息,所以一条边上两个方向的消息携带了整个概率图中的信息。注意,这里的消息不能归一化,而团树标定中,消息必须归一化才能传递。

2.2 Model Expected feature Count

  第二个难点在于模型feature count的计算。

  对于每次梯度计算,我们手上都有一套完整的模型。模型的特征是一个指示函数,只要模型里有该特征,f取值都是1。ΣP*f 表达了当前模型对这些特征的肯定程度。f 是 table CPD的一个assignment,所以其 var , assignment 会对应一个特定的概率,也就是P。这里要算概率,似乎又要求那个26^7的联合分布了,然而并不是。由于特征本质是一个factor的assignment,而之前我们已经得到了标定好的团树模型,只需要在单个团树里求取Y'assignment对应的概率即可。因为clqiue的scope肯定要比feature大!!!

  这里比较trick的是,形式上,一个特征不止出现一次(意义不同)。比如说相邻的两个Y,取值分别为ab,这本质上是一个特征,只对应一个theta。但是这里的theta是share的。所以计算时必须把所有对应相同theta的f 都算进来。其数学表达式应该修正为:

2.3 Data Count

  Data Count 则是一个和数据有关的量了,表达了特征(shared)在当前数据中是否出现,是则置1,否则置0.

 

3、总结

  条件随机场的训练中真的充满了trick,通过此次作业,我加深了对Representation, Inference, Learning 的理解。

  最后,今天是母亲节~~亲爱的老妈节日快乐~ 

  

转载于:https://www.cnblogs.com/ironstark/p/5471387.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430564.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java生成四则运算表达式_生成四则运算(java实现)

|博客班级 | https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/ ||作业要求 | https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/homework/11376||作业目标 | 写一个能自动生成小学四则运算题目的程序 ||学号 | 3190704130 |代码如下://main函数所在区域主要实现生成…

Kali Linux—借助 SET+MSF 进行网络钓鱼、生成木马、获主机shell、权限提升、远程监控、钓鱼邮件等完整渗透测试(三)

钓鱼邮件 当攻击者制作了钓鱼网站、木马程序后,便会想法设法将其传给受害者,而常见的传播方式便是钓鱼网站了。安全意识较差的用户在收到钓鱼邮件后点击邮件中的钓鱼链接、下载附件中的木马程序,便可能遭受攻击! 工具简介 Swak…

struts2拦截器详解

在之前的文章中,我们已经涉及到了拦截器(Interceptor)的概念。 downpour 写道拦截器是AOP中的概念,它本身是一段代码,可以通过定义“织入点”,来指定拦截器的代码在“织入点”的前后执行,从而起…

为什么选用 React 创建混合型移动应用?

【编者按】本文作者为 14islands 联合创始人、创新 Web 开发者 David Lindkvist,主要介绍有关混合型应用搭建的方方面面。文章系国内 ITOM 管理平台 OneAPM 编译呈现。 最近,我们有幸与 Fjord 合作,从零开始为其用户打造了一款 HMTL5 混合型应…

python中减法运算函数_OpenCV-Python图像的减法运算cv2.subtract函数详解以及和矩阵减...

OpenCV-Python图像的减法运算cv2.subtract函数详解以及和矩阵减OpenCV-Python图像的减法运算cv2.subtract函数详解以及和矩阵减法的差异对比? ? 前往老猿Python博文目录 ?在《OpenCV-Python图像的加法运算cv2.add函数详解》详细介绍了图像的加法运算,有加法就有减…

数据访问......单条件查询与多条件查询

一. 将数据库数据访问封装成类 <?php class DB {public $host "localhost"; //服务器地址public $uid "root"; //用户名public $pwd "123"; //密码//执行SQL语句,返回相应结果的方法//$sql代表要执行的SQL语句,$type代表…

java集合类分析-hashset

一、 HashSet概述&#xff1a; HashSet实现Set接口&#xff0c;由哈希表&#xff08;实际上是一个HashMap实例&#xff09;支持。它不保证set 的迭代顺序&#xff1b;特别是它不保证该顺序恒久不变。此类允许使用null元素。 二、 HashSet的实现&#xff1a; 对于HashSet而言&…

站立会议 2

这是我们的第二次人员集中&#xff0c;主要是讨论一下接下来的一些工作安排&#xff0c;还有讨论一下在准备过程中出现的一些问题&#xff01; 项目进展&#xff1a; 今天的会议中&#xff0c;我们讨论了我们的项目进展&#xff0c;结果是&#xff1a;我们都已经找到了小球还有…

转为win64后, MS的lib问题

> 正在创建库 C:\Users\Administrator\Desktop\branch-Unicode-156\\Temp\Link\PointCloudMeasure\x64\Debug\PointCloudMeasure.lib 和对象 C:\Users\Administrator\Desktop\branch-Unicode-156\\Temp\Link\PointCloudMeasure\x64\Debug\PointCloudMeasure.exp1>vtkXM…

php redis 搜索,PHP+Redis有序集合(zset)实现博客园阅读排行榜功能

许多网站都有排行榜的功能&#xff0c;比如球员人气榜单、阅读排行榜&#xff0c;对于一些小网站&#xff0c;通过查数据库就能实现排行榜的功能&#xff0c;但是对于稍微有点用户量而且还是实时排名的网站&#xff0c;使用一些关系型数据库如(MySQL、Oracle)等来实现就有点力不…

iOS 开发疑难杂症(01)

搜了好多博客&#xff0c;技术网站&#xff0c;答案都不统一&#xff0c;今天偶然发现一个解决方案&#xff1a;这个问题一般是重复导入&#xff0c;使用include的问题&#xff0c;不过iOS一般不用include&#xff0c;所以这个不是正解&#xff0c;还有就是预编译文件&#xff…

cJONS序列化工具解读二(数据解析)

cJSON数据解析 关于数据解析部分&#xff0c;其实这个解析就是个自动机&#xff0c;通过递归或者解析栈进行实现数据的解析 /* Utility to jump whitespace and cr/lf *///用于跳过ascii小于32的空白字符 static const char *skip(const char *in) { while (in && *in…

小米范工具系列之二:小米范 web目录扫描器

最新版本1.1&#xff0c;下载地址&#xff1a;http://pan.baidu.com/s/1c1NDSVe 文件名scandir&#xff0c;请使用java1.8运行 小米范web目录扫描器主要功能是探测web可能存在的目录及文件&#xff0c;界面如下&#xff0c;左侧为发现的url&#xff0c;中间为浏览器&#xff0…

php中介者,PHP设计模式 - 中介者模式

【一】模式定义中介者模式(Mediator)就是用一个中介对象来封装一系列的对象交互&#xff0c;中介者使各对象不需要显式地相互引用&#xff0c;从而使其耦合松散&#xff0c;而且可以独立地改变它们之间的交互。对于中介对象而言&#xff0c;所有相互交互的对象&#xff0c;都视…

dedecms模版php,dedecms专题模板怎么用

dedecms专题模板怎么用&#xff1f;DeDeCms的专题相关信息bbs上相对较少&#xff0c;之前查阅了很多资料都未找到其解决方案推荐学习&#xff1a;织梦cms无柰只有靠自己动手丰衣足食&#xff1b;在官方的版本上有这样的一段话&#xff1a;1、文章列表用ID1,ID2,ID3这样形式分开…

Windows中断那些事儿

搞内核研究的经常对中断这个概念肯定不陌生&#xff0c;经常我们会接触很多与中断相关的术语&#xff0c;按照软件和硬件进行分类&#xff1a; 硬件CPU相关&#xff1a; IRQ、IDT、cli&sti 软件操作系统相关&#xff1a; APC、DPC、IRQL 一直以来对中断这一部分内容弄的一知…

(1-1)文件结构的升级(Area和Filter知识总结) - ASP.NET从MVC5升级到MVC6

ASP.NET从MVC5升级到MVC6 总目录 MVC5项目结构 带有Areas和Filter的项目结构 一般来说&#xff0c;小的MVC项目是不考虑领域的&#xff0c;但是&#xff0c;如果是稍微复杂一点的项目&#xff0c;往往是需要领域这个概念的。 一个领域就是一个小型的MVC项目&#xff0c;所以领域…

重启模块与及关开邮件存储设置功能页面-PHP-shell-py

邮件系统几百台&#xff0c;每台负责 grep -P "^ip\d.\d." /home/mymail/newconf/hosts.conf -c465 每台机器负责启动的模块又是不一样的如&#xff1a; A机器&#xff1a; ProgramsList"1svr,2svr,3svr,4svr," b机器&#xff1a; ProgramsList"asvr,…

用IIS配置反向代理

https://natapp.cn/ http://blog.csdn.net/g2321514568/article/details/12406755 目标服务器&#xff1a;targetServer 配置反向代理的服务器&#xff1a;reveseProxServer 1、确定最终访问的网址&#xff1a;比如www.baidu.com 、www.csdn.net等等。 当然你也可以自己在targ…

oracle存储过程使用ftp,ASM存储FTP上传文件

引用SQL>execute dbms_xdb.sethttpport(8080);SQL>execute dbms_xdb.setftpport(2100);SQL>commit;检查端口是否开启引用SQL> select dbms_xdb.GETHTTPPORT() from dual;DBMS_XDB.GETHTTPPORT()----------------------8080SQL> select dbms_xdb.GETFTPPORT() fr…