一.前言
一直想对之前学习的模型做一个比较好的总结,但是最后总是不了了之。总结来看,主要在学习的过程中往往会陷入到两个误区,要么是过于注重对于模型形式化推导和求解的数学过程,这往往会导致过于追求局部的技巧而忽略对于模型本身宏观的认识,最后陷入无尽的数学学习中;要么是和大多数仅仅停留在入门阶段的人一样,仅仅通过各种科普读物(公众号、博客)等对于各种模型只有感性的认识。
我觉得好的学习方法就要像一个合适的学习模型一样,在保证有效的前提下足够简单。既要足够精准,要能把握住每一种模型的个性化特征;又要有足够平滑,能够触类旁通,把握住知识的整体脉络。
正如在数据结构中所学到的:“图是最大的数据结构”。从宏观意义上来看,我们可以把每一种数据结构都归结为图的一种特殊形式。在国庆前几天,由于被关在某个小山沟里,开始了解了图学习的一点知识,感觉是一个契机,可以将之前学习到的一些模型也拿出来摆摆,顺一下思路。
下面我们将会看到各种生成式和判别式模型都可以被图所解释而且它们之间有很好的统一求解模型和相互转化关系。
二.一些先验知识
2.1 生成式模型和判别式模型
关于生成式模型和判别式模型的具体的定义以及区别在各种博客文章中已经被提烂了,在此不想展开来讲。总结来说,生成式模型是对于联合分布$p(x,y)$的学习,而判别模型则是直接对于目标判别条件分布$pleft( {y|x} ight)$的学习。
仅对以前理解模糊的一些点进行阐述。
- 生成式模型就是对类中分布模型做了假设
这个其实是错误的,从直观上来看,的确对于很多判别式模型都是通过因子化(比如logistic回归)的方式学习条件概率,而很多生成式模型(例如高斯判别)往往指定模型分布。但是举个反例:
我们知道,对于多项式回归模型$t = g(x,w)$的学习中,我们假设t
$$t~N({t_n}|g(w,x),{eta ^{ - 1}})$$
但是我们在模型求解的过程中的似然函数为:
$$p(t|x,w,eta ) = prodlimits_{n = 1}^N {N({t_n}|wphi ({x_n}),{eta ^{ - 1}})} $$
(上式假设引入的参数也服从一定的分布,从而将之写在条件中,即w服从共轭高斯分布或者$p(eta ,w)$
这里面并没有涉及到对于p(x)的学习,因此是一个判别式模型
同样,生成式模型也没有必要一定要对分布进行假设。
相比于生成式模型,由于判别式模型仅仅学习了必要的$pleft( {y|x} ight)$
2.2 图
图是节点和边的集合,即$G~(E,V)$
2.2.1 图的分类
正如概率模型可以被划分为生成式和判别式一般,图亦分为有向图和无向图。
如果细分,那么有向图可以是贝叶斯网络、隐式马尔可夫等
而无向图可以是线性条件随机场和广义条件随机场等
在后来的讨论中我们可以看出来,生成式模型可以被自然地表达为有向图,而判别式模型可以轻松的用无向图表达出来。
2.2.2 图的分解
正如我们在学习最基本的朴素贝叶斯模型时,对于模型的求解,当时使用了一个非常tricky,而且看起来十分大胆的假设,那就是认为
同样,我们知道在算法中,涉及到图的算法似乎只有少数几个Dijkstra算法和Floyd算法似乎是可以求得全局最优值之外,其他的问题最优值求解一般都是NP-hard问题。因此,往往使用局部算法来求解近似。
因此在图中往往将之分解为就是局部因子函数的组合,假设XL为一种拆解,那么:
$$p(x) = {1 over Z}prodlimits_L {{psi _L}left( {{x_L}} ight)} $$
其中Z为归一化因子,是x取值的所有情况。
这些因子函数,在无向图中可能是定义在团上的因子化的势函数,在有向图中可能是分解的条件概率。
这些分解在图的节点之间的依赖和条件独立关系指导下进行。
2.2.3 图的依赖关系
2.2.3.1有向图的依赖关系
- 依赖关系
上面我们提到图中节点表示依赖关系,那么具体到有向图中,则是条件依赖关系。
举一个简单的贝叶斯网络的例子:
则我们有$p(x) = p({x_1})p({x_2})p({x_3})p({x_4}|{x_1},{x_2},{x_3})$
这是显而易见的,即子节点对于父节点有条件依赖
- 条件独立关系
在我们使用局部表达整体过程中,一个重要的难点就是在于确定在给定观测量条件下随机变量之间的独立关系,也即是有向图的分解。
对于有向图条件独立的分析,有权威的论文可以参考,方法叫做d-划分,其实结论很朴实,有兴趣可以下去查,举两个例子说明。
- 如下图,以c为划分变量(变量集合)
则有:
$$eqalign{
p(a|c)p(b|c) & {
m{ = }}{{p(a,b,c)} over {p(c)}} cr
= p(a,b|c) cr} $$
从而由a,b关于观测变量c独立,也可记为:
- 如下图,同样以c为划分变量(集合)
$$eqalign{
p(a|c)p(b|c) & {
m{ = }}{{p(a,b,c)} over {p(c)}} cr
= {{p(a|c)p(b|c)p(c|a,b)} over {p(c)}} cr} $$
我们一般无法从上式获得$p(a|c)p(b|c) = p(a,b|c)$,因此:
上述每一个划分节点(节点集)实际上构成了一个对于有向图的划分。
2.2.3.2无向图的依赖关系
与有向图相比,无向图的节点关系则显得十分单纯
(1) 节点依赖关系
只要两个节点之间有边连接,那么两个节点之间存在依赖关系。
(2) 条件独立关系
对于连通图来讲,理论上所有节点都有直接或间接的依赖关系,但是据我所知,我们对这种依赖关系都进行了大量的简化,也即是认为图具有马尔可夫性,可以等价的表示为成对马尔可夫性、局部马尔可夫性和全局马尔可夫性
进一步,引出了团(具体的自行百度)以及最大团的概念,这些最大团,构成了对于无向图的划分。
三. 图模型选讲
3.1 有向图模型
3.1.1 朴素贝叶斯
朴素贝叶斯作为生成模型,可以自然地表示为:
其指向也很符合其内涵,即给定类别,生成样本x
也可以直观的写出其联合分布:
$$p(y,x) = p(y)prodlimits_{k = 1}^K {p({x_k}|y)} $$
如果还能回忆起上面讲的d-划分,那么就可以知道${x_k}$之间关于观测y都是条件独立的,因而是一个有效的划分,而$p({x_k}|y)$就可以看作是其势函数。
3.1.2 隐式马尔可夫(HMM)
HMM是一种生成式模型,在语音识别等领域有着十分宽泛的应用,其要领是当前观测仅由当前状态决定,当前状态只与上一状态有关。
由上面的约束,很容易得到对应的有向图如下:
若给定观测序列$X = ({x_0},{x_1},...,{x_T})$,对应的状态序列$Y = ({y_0},{y_1},...,{y_T})$
我们试图手动推一下HMM的模型分布公式(不一定对,大神帮忙看)
以第二个状态及观测作为划分,设初始概率为${pi _0}$:
$$eqalign{
p({x_0},{x_1},{x_2},...,{x_T},{y_0},{y_1},{y_2},...,{y_T}) & = p({x_0},{y_0},{x_1},{y_1})p({x_2},{y_2})p({x_3}...{x_T},{y_3}...{y_T}|{x_2},{y_2}) cr
{
m{ = }}{pi _0}p({x_0},{x_1},{y_1}|{y_0})p({x_2}...{x_T},{y_2}...{y_T}) cr
= {pi _0}p({x_0}|{y_0})p({x_1}|{y_1},{x_0},{y_0})p({y_1}|{x_0},{y_0})p({x_2}...{x_T},{y_2}...{y_T}) cr
= {pi _0}p({x_0}|{y_0})p({x_1}|{y_1})p({y_1}|{y_0})p({x_2}...{x_T},{y_2}...{y_T}) cr
= {pi _0}p({x_0}|{y_0})prodlimits_{i = 1}^T {p({y_i}|{y_{i - 1}})p({x_i}|{y_i})} cr} $$
3.2 无向图模型选讲
3.2.1 logistic回归
logistic回归是一种十分简单的判别式分类模型,可以很容易画出其对应的无向图:
对于这个无向图而言,可以分为K个最大团。
因此,按照无向图的分解,我们有:
$$p(y|x) = {1 over {Z(x)}}prodlimits_{k = 1}^K {{psi _k}(y,{x_k})} $$
我们一般在因子化(factorization)过程中一般喜欢使用自然底数的指数函数,这可能是为了处理的平滑性,因此进一步我们可以写作:
$$p(y|x) = {{prodlimits_k {{e^{{w^T}x}}{I_k}(y)} } over {Z(x)}}$$
3.2.2 线性链条件随机场(linear-chain CRF)
我们先看它在局部变量因子下的概率分布,可以定义以下的势函数(又被称为特征函数):
$${f_k}({y_{i - 1}},{y_i},x,i) = left{ {matrix{
{{t_k}({y_{i - 1}},y{}_i,{x_i}),k = 1,2,...{K_1}} cr
{{s_l}({y_i},x,i),k = {K_1} + l;l = 1,2,...{K_2}} cr} }
ight.$$
其中${t_k}$一般被称为转移特征,而${s_l}$被称为状态特征
进一步,在各个位置进行求和,有:
$${f_k}(y,x) = sumlimits_{i = 1}^n {{f_k}({y_{i - 1}},{y_i},x,i)} $$
因此,按照一般的图的表达方式,我们可以将其写作:
$$p(y|x) = {1 over {Z(x)}}prodlimits_{k = 1}^K {exp {w_k}{f_k}(y,x)} $$
其中:
$$Z(x) = sum olimits_y {prodlimits_{k = 1}^K {exp {w_k}{f_k}(y,x)} } $$
这个是十分直观和显而易见的。
四. 概率模型之间的转换
4.1 朴素贝叶斯到HMM(序列化)
不管是从图的观点还是从概率表达式的观点,我们都可以看出来,HMM和朴素贝叶斯差别在于HMM求解的目标变量y是一个序列,而朴素贝叶斯求解的y则是一个标量值。
为了证明这一点,我们将朴素贝叶斯表达式写作:
$$p(y,x) = p(y)prodlimits_{k = 1}^K {p({x_k}|y)} $$
同时,如果添加虚拟的状态节点作为初始节点的上一个节点,那么我们就能我们看到HMM的表达式为:
$$p(y,x) = prodlimits_{t = 0}^T {p({y_t}|{y_{t - 1}})p({x_t}|{y_t})} $$
因此很容易理解,这一步的转化实际上是一个序列化的过程。
4.2 HMM到linear-chain CRF的转化
我们将通过公式变换的过程说明HMM可以表示为linear-chain CRF的表达形式。
$$eqalign{
p(y,x) & = prodlimits_{t = 1}^T {p({y_t}|{y_{t - 1}})p({x_t}|{y_t})} cr
= prodlimits_{t = 1}^T {exp { log p({y_t}|{y_{t - 1}}) + log p({x_t}|{y_t})} } cr} $$
进一步,引入指示函数,进行因子化:
如果因子化进行的较为“恰当”,那么比照上上一个表达式,我们有:
$$eqalign{
& { heta _{ij}} = log p({y_{t - 1}} = i|{y_t} = j) cr
& {mu _{oi}} = log p({x_t} = o|{y_t} = i) cr
& Z = 1 cr} $$
如果更进一步,我们在linear-chain CRF一般求得的目标函数为:
$$p(y { m{|}} x){ m{ = }}{{p(y,x)} over {sum olimits_y {p(y,x)} }}$$
可以看到此时归一化系数不再为1。
我们看到这与linear-chain CRF表达式是如出一辙的。
4.3 朴素贝叶斯到logistic回归
与4.2同理,我们可以将朴素贝叶斯写作logistic回归的形式,不再赘述
4.4多类logistic回归到linear-chain CRF
与4.1类似,我们这里做的还是一种序列化
如果将线性函数中的偏置权(bias weight)提取出来,logistic回归的表达式为:
$$eqalign{
& p(y|x; heta ) = {1 over {Z(x)}}exp { { heta _y} + sumlimits_{j = 1}^K {{ heta _{y,j}}} {x_j}} cr
& Z(x) = sum
olimits_y {exp { { heta _y} + sumlimits_{j = 1}^K {{ heta _{y,j}}} {x_j}} } cr} $$
如果我们令特征权:
$${ heta _{y'j}} = {f_{y'}},j(y,x) = I{ y' = y} {x_j}$$
偏置权:
$${ heta _{y'}} = {f_{y'}}(y,x) = I{ y' = y} $$
从而我们有:
$$p(y|x) = {1 over {Z(x)}}prodlimits_{k = 1}^K {exp { { heta _k}{f_k}(y,x)} } $$
可以看到多类logistic回归(有些叫softmax回归)可以写成CRF的形式
五. 有向图到无向图之间的转化
由于这个要用到一些d-划分的知识,因此不展开来讲
一个很直观的认识就是,有向图的条件独立性和无向图的条件独立条件有着较大的差别,因此直接将有向图转化为无向图就会造成一些依赖关系的丧失,这往往要进行一些转化(比如得到对应的道德图)
但是一个十分简单使用的结论是,如果能保证每一个节点最多只有一个父节点的话,那么有向图可以被轻松地转化为无向图,这也就是我们上面取消HMM有向性地合理所在。
六. 图模型概率求解(前向后向算法)
对于图模型概率求解问题,是一个单纯的数学问题,同图模型的学习算法一样,可以自行查阅相关资料。
但是这儿还是想说一下前向后向算法。
对于图模型的概率求解,我们不外乎下面几种:
一般是,即求解观测序列P(X)的概率;还有,即给定观测求状态序列的P(Y|X)概率;或者是联合概率P(X,Y)
但是这一过程的计算十分复杂
拿计算联合分布P(X)来讲,由于:
$$p(x) = {1 over Z}{psi _{1,2}}({x_1},{x_2}){psi _{2,3}}({x_2},{x_3})...{psi _{N - 1,N}}({x_{N - 1}},{x_N})$$
假设x可以取K种值,那么这一过程需要的参数数量为(N-1)K^2
在求解边缘分布p(xn)时,由上式:
$$p({x_n}) = sumlimits_{{x_1}} {...sumlimits_{{x_{n - 1}}} {sumlimits_{{x_{n + 1}}} {...sumlimits_{{x_N}} {p(x)} } } } $$
计算这一过程的复杂度为K^N,是一种指数级的增长。
考虑这个过程实际上有很多的重复计算,比如在HMM中,信息是由上一级状态向下一级状态传递,因此考虑我们可以存储每一级计算的中间结果,从而大大降低计算的复杂度。
这个过程大家可以查找相关资料,大抵相当于动态规划中的查表,直接讲结论:
由于$P({x_n})$可以写作:
因此我们知道迭代求解出前向和后向概率,那么对于任意${x_n}$,都有:
$$p({x_n}) = {1 over Z}{mu _alpha }({x_n}){mu _alpha }({x_n})$$
七. 模型学习算法
这一部分就更偏数学了,每一部分都可以展开成一个专题,大抵来说,由于图结构的复杂性,这些模型的学习一般都是用启发式算法,所以那就以后再说吧。