深度学习笔记——理论与推导之Structured Learning【Markov Random Field】(十)

Graphical Model & Gibbs Sampling(Sturctured Learning)

Graphical Model是Structured Learning中的一种。

Structured Learning复习

这里写图片描述
Structured Learning中两个存在困扰的地方:
1. 如何设计feature vector(即Φ(x,y)):
2. Inference
这里写图片描述
解决方法:
1. Evaluation:可以使用图的方法(Graphical Model)来定义evaluation funcation。
2. Inference:可以使用Gibbs Sampling来解。

Graphical Model

A language which describes the evaluation function
用Graph来描述F(x,y),这里提到三种Graphical Model:
这里写图片描述

Decompose F(x,y)

  1. F(x,y) 原来是一个global function,即考虑到全部的x和全部的y
  2. 基于Graphical model,F(x,y)是可以由多个local functions所组成。这就需要它满足下述条件:
    • x和y可以被分解成更小的部分(每一个x和y是由多个元件所组成的。)
    • 每一个local function是定义在x和y的其中一小部分上。
    • 那么有哪些function,而这些function的input又是x和y的哪些部分呢?这是由Graphical Model决定的。
  3. 可以把x和y拆解成比较小的component是什么意思呢?
    • 假设,我们现在要做POS Tagging,如下:
    • 那么我们一个完整的x就是一句话,完整的y就是一个词性的sequence,我们可以说x是由一串word组成的(x1~x4),同理y(y1~y4)。
      这里写图片描述

Factor Graph

Factor Graph是什么?
- 假设x可以被拆成x1和x2,y可以被拆成y1和y2。
- 在这些Component的背后存在一些factors,而这些factor会影响一些component的表现。至于factor影响那些component,这可以在Graph中看出来。
- 可以把factor想成一个local function,input就是在graph中和factor相连的component。
- 如果factor所代表的local function,它output的值越大,代表这一组值出现的几率越高。
- 所以我们可以把F(x,y)拆成多个factor的小项。
- 你需要提前定义factors,而每一个factor的local function长什么样,这些是可以根据training data中学出来的。
这里写图片描述
Factor Graph - Example

  • 例子:Image De-noising
  • 我们可以把一个pixel当成一个component(1代表黑,-1代表白),即如下:
    这里写图片描述
  • 那我们今天应该如何描述noisy image(x)和cleaned image(y)的关系呢?比如说noisy image是cleaned image加上干扰产生的;并且他们在同样位置的pixel,他们颜色相近的可能性是比较高的。因此我们现在有个factor a,表示的是xi和yi的关系;另外一个factor b,表示的是相邻像素之间的关系,即yi的相邻pixel的关系(一般是smooth,即相近的可能性比较大)。
  • 我们可以对factor a和factor b做以下描述,在复杂的模型中我们可以从training data中做learnning以获取factor a和factor b。
    这里写图片描述
  • 那么接下来,我们可以得到下面的F(x,y):
    这里写图片描述
  • 我们还可以定义其他的factor,如下:
    这里写图片描述

Markov Random Field(MRF)

MRF是什么?
- Clique:一组component中两两相连就是一个clique,如下图中的蓝色框框:
这里写图片描述
- Maximum Clique:假如有一个Clique,它不被其他Clique包含,如下面的红框框:
这里写图片描述
- MRF:
当给你一个Graph时,这个Graph上的节点就是x或y,上面的link就是你自己定的,告诉你factor长什么样,即(以下是MRF和Factor Graph的对比):
这里写图片描述
复杂一点的MRF转Factor Graph:
MRF:这里写图片描述
Factor Graph:
这里写图片描述
最后得到的F(x,y)就可以写成这样:
这里写图片描述
那么MRF我们应该如何Training呢?
1. 假设我们可以把factor描述为w·Φ(x,y),即:
这里写图片描述
上面这个其实是可以用Structured Perceptron或Structured SVM来learning Grapical Model的参数。当你用Structured SVM来描述learn MRF时这叫做Max-Margin Markov Networks(M3N)。
2. 如何将local function都描述为linear的呢?

  • 假设现在y1,y2的值只有{-1,+1},所以今天最一般话情况下,fb的output只有4种可能,如下:
    这里写图片描述
  • 所以今天如果你想不到什么好方法把factor都变成linear的话且y1,y2都是离散的, 你可以用上面的方法,把它变成linear的。y1和y2维度很大的时候,比如y1 = 100,y2 = 100,那么如果用上述方法,输出就有10000维,这时,我们就可以用共享参数的方法,看看(y1,y2)是哪些值时共享参数。

Probability Point of View

  • 一般在Graphical Model上面,我们都会evaluation function加上几率的含义。
  • F(x,y)是一个可正可负的值,我们描述的P(x,y)的几率,即:
    这里写图片描述
    接下来,我们就可以计算各种几率。

Gibbs Sampling

Inference for the dump(求解Inference的一种方法)
今天,假设我们用factor graph方法,得到下面图形,并且用Structured SVM得到f(x,y)的参数,我们假设,如:xi和yi的颜色一样时f(x,y) = 0.1等。所以Inference要做的事情就是给一张noisy image,也就是给你x1~x4,根据现在的f(x,y)可以用找到一组y1~y4使得F(x,y)最大。假设我们现在x1 ,x2,x3,x4 = -1,-1,-1,1,我们穷举所有y,可以得到下面值:
这里写图片描述
那么有没有比穷举更有效的方法呢?这就是Gibbs Sampling,P(y|x)的下面这项,因为是计算y的总和,所以P(y|x)这项会独立于y,因此P(y|x)正比于F(x,y)。
所以我们现在就可以把穷举所有的y看谁的F(x,y)最大转化为看谁的P(y|x)最大。
这里写图片描述
我们知道P(y|x)是一个distribution,Gibbs Sampling的精神就是我们根据这个distribution,我们知道每一组y出现的几率,我们现在根据这个distribution做sample,那么可能-1,-1,-1,-1 Sampling的几率是会最多。那么它就是我们要找的y。
这里写图片描述
然而,我们很难找到这个distribution
这里写图片描述
这时候需要Gibbs Sampling来解决这个问题,如果可以计算给定除yi以外的y,计算yi的几率,就可以用Gibbs Sampling:
这里写图片描述
Gibbs Sampling操作如下:
首先需要一个初始值y值,操作如下(记得要把之前计算出的y1^t带入到下面的y2^t中):
这里写图片描述
因为y的可能值是很有限的,所以我们计算P(yi|y1,y2…,yi-1,yi+1,…yN,x)是比较简单的。
这里写图片描述
举例:通过Gibbs Sampling计算P(y|x):
先初始化y sequence:
这里写图片描述
接下来Sample y1,假设所有y值和x值都是已知的,除了y1的值,穷举y1。
这里写图片描述
那么我们求出来,y1 = 1Sample后的概率是0.1,则y1 = -1Sample后的概率是0.9:
这里写图片描述
接下来,我们令y1 = -1,继续Sample y2,y2 = 1后Sample的概率是0.45,y2 = -1的概率为0.55,因为Sample这件事情,从一开始的initial是随机的,所以不同的initial有可能你这里sample到的y2=1的概率反而更大,所以这里我们选y2 = 1:
这里写图片描述
接下来Sample y3和y4:
这里写图片描述
这里写图片描述
所以这里,我们得到了第一个序列{y1=-1,y2 = 1,y3 = -1,y4 = -1}
接下来,继续下去这个process,这个Sample是永远不会停止的:
这里写图片描述
因为这里有y1~y4,每一个y有两个不同的值,所以一共有2^4个不同的序列,这样我们Sample几十万次后,我们会有一个比较准确的结果。今天我们从16个序列中,抽取出3个序列,来看看sample 次数=10/100/1000/10000/100000次时,y^A,y^B,y^C出现的次数。
这里写图片描述
我们发现,如果我们只Sample 10次或者100次,y^B出现的概率其实是更多的,所以我们应当Sample几十万次,才能得到一个比较准确的值。
所以呢,我们知道现在y^A是我们要的准确的结果。
那么Initialization会对我们的结果造成什么影响呢?
这里写图片描述
所以Initialization只会在Sample次数比较少的时候会有影响,当你Sample的次数多的时候,Initalization对结果其实是没有什么影响的。

Practical Suggestion

  1. Gibbs Sampling只胜过穷举,如果你有更好的Inference方法,就用其他的方法:
  2. 一开始的Sample其实不是很准,所以可以丢弃一些
  3. 为了加快收敛速度,我们可以调整几率的差值,比如在分子分母都乘以c(c>1),这样distribution之间的差距就会拉大,所以就可以在比较小的Sampling中看出每一个不同output的差距(这有点像Gradient Descent中的learning rate,我们在迭代次数越大的时候,我们的learning rate是要越小的,而在这里,我们可以慢慢增大这个c):
    这里写图片描述

为什么Gibbs Sampling可以work呢

  1. 从Markov Chain说起:
    Markov Chain是什么呢?
    假设有一个旅行者,这个旅行者每天都会离开或者留在一个城市,例如他在A城市时,第二天去B城市的概率是1/2,去C城市的概率是1/6,留在A城市的概率是2/3,以此类推。他会将他的路线记录下来,这就是Markov Chain,因为他每天走到的城市只depend前一个城市,而和他之前拜访过哪些城市无关。那么这个sequence上的某一个city就是Markov Chain上的一个state:
    这里写图片描述
    假设结果10000天后,他拜访某个城市的比率固定下来了(无论从哪个城市开始旅行),A:B:C = 6:2:2:
    这里写图片描述
    那么为什么会这样呢?
    P(A) = 0.6,P(B) = 0.2,P(C) = 0.2是一个stationary的point,也就是P(A|A)P(A)+P(A|B)P(B)+P(A|C)P(C) 会等于 P(A)。所以今天当P(A) = 0.6,P(B) = 0.2,P(C) = 0.2就会像是陷入一个minima的地方,就不会再改变了,这个不会再改变的distribution就叫做Stationary Distribution。
    这里写图片描述
    其实Markov Chain可以又不只一个的stationary distribution,比如下图:P(A) = 1/P(B) = 0/P(C) = 0,P(A) = 0/P(B) = 1/P(C) = 0和P(A) = 0/P(B) = 0/P(C) = 1。所以Markov Chain最后会到达哪一个stationary distribution取决于它从哪一个state开始。
    当Markov Chain满足某些特性的话,它就只会有一个stationary distribution(无论从哪一个state开始):
    这个某些特性(充分非必要,满足这个条件一定有uniqu Markov Chain,而有unique Markov Chain不一定满足这个条件):一个点到其他点的概率都不会为0,即P(s’|s) for any states s and s’ is not zero。
    这里写图片描述
    那么为什么Gibbs Sample可以做到unique Markov Chain呢?我们见每次sample后的z值,视为一个个state,把这个看成一个Markov Chain(因为这里的z^t只depend on z^t-1)
    这里写图片描述
    那我们如何证明这个Markov chain只有一个stationary distribution,而这个stationary distribution就是P(z):
    • 假设Markov Chain只会有一个stationary distribution:
      即Markov Chain从一个state跳到另外一个state的几率都大于零:
      这里写图片描述
    • 计算P(z’)是否会等于如下图所示的公式:
      这里写图片描述

猜你喜欢

转载自blog.csdn.net/sysstc/article/details/76590278
今日推荐