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

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

  

机器学习 —— 概率图模型(Homework: CRF Learning)的更多相关文章

  1. 机器学习 —— 概率图模型(Homework: MCMC)

    除了精确推理之外,我们还有非精确推理的手段来对概率图单个变量的分布进行求解.在很多情况下,概率图无法简化成团树,或者简化成团树后单个团中随机变量数目较多,会导致团树标定的效率低下.以图像分割为例,如果 ...

  2. 机器学习 —— 概率图模型(Homework: Exact Inference)

    在前三周的作业中,我构造了概率图模型并调用第三方的求解器对器进行了求解,最终获得了每个随机变量的分布(有向图),最大后验分布(双向图).本周作业的主要内容就是自行编写概率图模型的求解器.实际上,从根本 ...

  3. 机器学习 —— 概率图模型(学习:CRF与MRF)

    在概率图模型中,有一类很重要的模型称为条件随机场.这种模型广泛的应用于标签—样本(特征)对应问题.与MRF不同,CRF计算的是“条件概率”.故其表达式与MRF在分母上是不一样的. 如图所示,CRF只对 ...

  4. 机器学习 —— 概率图模型(Homework: Representation)

    前两周的作业主要是关于Factor以及有向图的构造,但是概率图模型中还有一种更强大的武器——双向图(无向图.Markov Network).与有向图不同,双向图可以描述两个var之间相互作用以及联系. ...

  5. 机器学习 —— 概率图模型(Homework: StructuredCPD)

    Week2的作业主要是关于概率图模型的构造,主要任务可以分为两个部分:1.构造CPD;2.构造Graph.对于有向图而言,在获得单个节点的CPD之后就可依据图对Combine CPD进行构造.在获得C ...

  6. 机器学习 —— 概率图模型(Homework: Factors)

    Talk is cheap, I show you the code 第一章的作业主要是关于PGM的因子操作.实际上,因子是整个概率图的核心.对于有向图而言,因子对应的是CPD(条件分布):对无向图而 ...

  7. 机器学习 —— 概率图模型(Homework: Structure Learning)

    概率图的学习真的要接近尾声了啊,了解的越多越发感受到它的强大.这周的作业本质上是data mining.从数据中学习PGM的结构和参数,完全使用数据驱动 —— No structure, No par ...

  8. 机器学习 —— 概率图模型(CPD)

    CPD是conditional probability distribution的缩写,翻译成中文叫做 条件概率分布.在概率图中,条件概率分布是一个非常重要的概念.因为概率图研究的是随机变量之间的练习 ...

  9. 机器学习 —— 概率图模型(推理:MAP)

    MAP 是最大后验概率的缩写.后验概率指的是当有一定观测结果的情况下,对其他随机变量进行推理.假设随机变量的集合为X ,观察到的变量为 e, W = X-e , AP = P(W|e). 后验概率和联 ...

随机推荐

  1. Teamwork——Week4 团队项目之NABC

    项目框架——NABC模型 一.N(Need需求) 我们组主要的用户对象是第三小组——UI小组的同学们,因此我们的用户需求就是他们的数据需求. 1)提供给UI小组整理好的数据库,和前一组讨论好数据结构. ...

  2. 二、freemarker.controller半自动静态化+Tomcat虚拟资源映射

    描述:本内容主要是讲2个tomcat之间同时共享一个静态话页面,统一入口是springMVC的一个controller,静态化的更新只需要传false.true.把完成的web项目放入a.b服务器To ...

  3. Android:apk文件结构

    Android apk文件,即Android application package文件. 每个要安装到Android平台的应用都要被编译打包为一个单独的文件,后缀名为.apk,其中包含了应用的二进制 ...

  4. udp 视频包网络传输花屏

    视频数据传输在传输层可以选择TCP或者UDP,TCP面向连接,传输中断,发送端是知道的.TCP传输的好处是不丢包,坏处是网络不太好的情况下会越堵越严重.UDP非面向连接,发送端只管发送数据,接收端有没 ...

  5. shell grep 高亮

    grep "socket" a --color=auto

  6. HDU 5800 To My Girlfriend 背包

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5800 To My Girlfriend Time Limit: 2000/2000 MS (Java ...

  7. SPOJ - DQUERY 主席树

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=32356 Given a sequence of n numbers ...

  8. JavaScript之arguments对象讲解

    javascript的arguments对象类似于PHP的extract()函数实现. 在不确定函数参数个数的情况下,可以通过arguments访问参数,并以索引0为起始. function sayH ...

  9. 关于java调用linux shell 的问题

    问题的提出: shell脚本要做离线的数据处理任务 java调用脚本,将这种处理任务封装成webservice 特点: shell处理单个时间长 每次要处理文件量大 这里目前只做调用分析: 原来的: ...

  10. ASP.NET为图片加上水印

    为我们发布的图片加上一个水印,也是我们经常要做的事情,那怎么样来做呢,下面就一步步开始吧 首先是一个制作水印的类:ImageHandler,代码如下: using System; using Syst ...