一 序
本文属于贪心NLP训练营学习笔记系列。
二 有向图与无向图模型
横向: 贝叶斯模型 -> HMM时序模型 -> 图模型 2. 纵向: 有向 -> 无向
有向图和无向图联合概率
有向图的联合概率等于各个节点的条件概率的乘积.无关,直接乘。在计算条件概率的时候,只需要考虑局部的取值类型即可,
例如:只用考虑
取值(假设它是离散型),同理
只需要考虑.
所有的可能性。
无向图相对复杂,为了吧联合概率拆分,需要引入factor/feature function,拆分的结果就是上图中的绿色圈圈,三个一组。这样的一组也叫做clique(两两连接)
概率性质
拆分好后,联合概率就可以写为:
就是feature function,为了保证概率的值域是[0,1],需要除以
进行归一化normalization.也叫做partition function。
partition function 计算困难,因为它是依赖于全局的变量(有向图是局部依赖)。
生成模型与判别模型Generative VS Discriminative Model
Generative 是,Discriminative 是
.
HMM 是生成模型,CRF是判别模型。
HMM的局限
1观测独立性假设:主要是指观测值之间假设是独立的。x1,x2 之间假设是独立的,这个假设在nlp中有一些不合理,比如给定的观测值是一句话
2 一阶的马尔科夫假设:意思是每种状态只依赖与前面一种状态,也有一定局限性。
三 对数线性模型Log-linear Model
逻辑回归和CRF都属于Log-Linear Model的一个特例。
其中: 是条件概率,判别模型。
是feature function,表示x和y的关系,简单理解为第j个特征。
是模型参数,
归一Normalization / Partition function。
Multinomial Logistic Regression
x是d维的特征向量,y是分类。
I是indicator function,意思是当函数中的条件满足的时候函数取值为1,否则取值为0.
假设现在,那么特征函数的维度
,就是
,同样的参数w维度也是
。
下面的截图,左侧是y是不同的分类的时候,特征函数的取值情况.右侧是对应的模型概率的计算。
注意这里的x的下标是j-d,因为x的下标范围是1-d,但是j是从d+1到2d,所以这里要减去一个d,保持范围一致。
我们把参数w写开,把它每d个分一个段,写成:
上面的分类的模型概率计算可以写为:
可以写成:
模型概率写成:
这种模型叫做多元逻辑回归的形式。
feature function
是特征
是标签. 我们认为
是已知的,求解
四 CRF: Log-linear Model for sequential data
我们把Log-Linear Model的条件概率模型写出来,然后假设数据x是一个时序类序列,来进行推导CRF。
我们假设:是观测到的时序数据,类似一个句子(可看做多个单词组成的序列)
是观测到的时序数据对应的标签(可能是词性或者实体类别)。则:
由于不同的feature function得到不同类型的模型,先从最简单的linear chain CRF看。(就是针对不同的时序,怎么抽取特征出来)
就是本能是整体的y与x的关系,现在拆分开很多的factor(每个factor只依赖把当前时刻、跟下一时刻tag,跟(观测值)组成),提取完特征后做一个相加的操作。
当我们处理CRF时,把当做已知变量处理。
与HMM算法一样,我们在这里也要解决同样的两个问题1、inference问题,也就是给定参数和数据
求出对应状态
。
2、参数优化的问题,也就是给定数据和标签优化参数
接下来看看怎么解决。
Inference Problem
给定参数观测值,求
,这个和HMM的情况是类似的,我们也是采用的维特比算法,先看公式推导:
对比标准公式,去掉了Partition function,
,因为对于任何的
,
只依赖
可看做常数。
=
= 其中
这里借鉴上节HMM中维特比算法,求当前点的最优解,是在前一个时刻的最优解的基础上进行求极值即可,这里设置函数,k表示的是当前时刻,
表示的是对应当前时刻选择的标签也就是
,那么
表示k-1时刻到
点最好的那个路径.
把拆出来,
中括号[ ] 内部相当于求k−1时刻所有点的最优路径,也是子问题。根据的函数定义
所以整个u就可以做是一个序列的动态规划求解.
优化参数问题
按梯度下降的思想来求,实际上要计算梯度也就是对参数求导,找到收敛的方向。先看看log-linear 模型的公式
(1)
按梯度下降的思想来求w(条件概率p对的偏导,这里我们加一个log对求梯度没有影响,方便去掉后面e)
(2)
把式子1代入2.
=
= (3)
之前说过的目的是为了做normlazation。所以它是一个全局的变量,CRF它就是考虑到的所有
的集合,把它写出来
(4)
我们先来求
=
与求偏导的对象无关,可以挪到前面
=
= (5) 因为
求导过程中,只对第j个有结果,其他项对
求导都变成0了。
把式子5 代入3
=
=
根据Log-Linear Model条件概率,最后一项可写为
后面这项是考虑了的各种可能,按照期望的形式表达。
(6)
在来看如何计算
=
=
上面 式子的意思是考虑到了所有y的组合,假设有m种,时长为
.考虑所有的组合
用HMM里面的FB算法。先看前向算法:
就是我们不考虑整个序列,而是只考虑1到k+1的子序列,前面是1到k,后面一项是k+1项,我们把这项设置为v。
为了达到动态规划的目标,把分出来,变成
和
,把
设置为
.
因为 是
,
=
同理我们也可以使用后向算法从后往前推导,把 设置为
.考虑的子序列是
所以
以上是针对离散型随机变量。如果是连续型,要复杂的多需使用蒙特卡洛方法进行估计。
类似的
(这里需要对比HMM来看)
最后回到我们的公式6:
= 第一项不变,中间一项下标简写,最后一项展开
= 这里
放到里面
这里有个trick,期望本来是对于所有的y,但是这里只有
,所以
=
= 这里是
按期望展开
= 这里吧前面的
代入
有了上面,可以怎么进行更新参数
***************************
本篇学的很吃力,尤其是后面对着老师讲的的公式推导,需要再看看数学。