图模型初识
认识
图模型, 分为两种, 有向图模型(direct model) vs 无向图模型. 通常对于有向图模型, 我们也称为 Beyesian Network (贝叶斯网络)
有向图
假设一个常见的有向图, 通常是根据业务场景提前所定义好的(变量间的关系已知):
a -> c; b-> c;
c -> d; d -> e
也表达了一种先后关系
对于这样的有向图来说, 是非常容易写出其 联合概率 的:
(p(a,b,c,d,e) = p(a) p(b) p(c|a,b) p(d|c) p(e|d))
好像理解了为啥条件概率要 用 "|", 左侧写结论, 右侧写条件....因为很符合常识呀, 从左到右...
通过这种条件概率的方式还是比较好表示这种图元素关系的, 再比如:
a -> c; b -> c;
c -> e; d -> e;
同样的方法来表示其联合概率为:
(p(a,b,c,d,e) = p(a) p(b) p(c|a,b) p(e|c, d))
无向图
举个小的案例, 就图像分割吧.
图像的其实就是一个个的像素点, 可能明显地能分成3簇, 或者4簇, 不确定, 根据像素点间的距离来"聚类", 越相邻则当做一类, 这样无序地连接起来就是有一个无向图的过程呀, 然后就将图片分割成几个"大块"了.
假设有这样一个无向图:
a --- c
a ----b ----d ----e
f ---d; f ---e
同样, 这个联合概率, 应该咋写呢? 不能用条件概率了, 因为没有方向不明确了.
对于此种情况, 可以定义一个能量函数 (energy function), 它其实意味着, 不同变量之间, 共同出现的概率大小 或是 紧密度 或 相关性有多少.
基于此, 可以对无向图进行一个变量划分, 分为一簇一簇的(两两相连), 具体怎么分也是看什么假设的. 就假设吧上面的案例分为 3个簇:
a, b, c
b, d
d, e, f
则相对于将 (p(a, b, c, d, e, f)) 这个联合概率分解为:
(phi_1(a,b,c) * phi_2 (b, d) * phi_3 (d,e,f))
(phi) 可以看作是用来衡量变量之间的紧密度的, 越大就越紧密呀
也就是 a, b, c, d, e, f 的 紧密度 跟 这 3个 (phi) 的模块 紧密度是相关的, 因此将其相乘 但, 需注意的一点是, 可以将 (phi_1, phi_2, phi_3) 看作是 score_1, score_2, score_3, 但不等于概率哦, 然而, 我们的需求,又是要求出概率, 因此问题在于, 如何将 score 变为我们要的概率呢?
其实, 就类似于 古典概型 就好了呀. 把每部分加总起来得到一个 总体值, 然后计算部分的占比,作为概率即可, 令:
(z = sum limits _{a,b,c,d,e,f} phi_1(a,b,c) * phi_2 (b, d) * phi_3 (d,e,f))
则:
(p(a, b, c, d, e, f) = frac {1}{z} phi_1(a,b,c) * phi_2 (b, d) * phi_3 (d,e,f))
通常这个过程也被叫做 Normalization (正规化, 归一化) 的过程, 或者叫 Partition Function.
这里有一个难点是如何 计算 z ? 如果是离散型, 通常用 动态规划, 连续型, 就用一些近似的估计. 因此可以发现, 在求联合概率的时候,
- 有向图是通过局部的概率来"拼接"到一起
- 无向图是根据 score 函数来"拼接"到一起, score 又不是概率, 需要用 z 这种 归一化 来转换
无向图的核心在于 如何定义 score 函数, 不同的score函数,得到的结果也不同的
栗子: 定义 score
假设有一个无向图, 就三角形3个顶点 a, b, c
为了更直观, 就假设 a, b, c 代表3个不同的人, 需求是看这个 3个老铁, 组队打篮球竞争力如何(概率 0-1)
然后就相对于一个特征提取
- a, b, c 是否是一个学院 --> 提取特征 --> f1
- a, b, c 是否打不同的位置 --> 提取特征 --> f2
- a, b, c 是否经常一起打球 --> 提取特征 --> f3
定义 score(a, b, c), 其实就看不同模型的, 比如可以这样
(score(a, b, c) = w_1 f_1 + w_2 f_2 + w_3 f_3)
也可以像 CRF 模型那样定义:
(log score(a, b, c) = sum limits _i w_i f_i)
这一类也称为 log linear model 如典型的 逻辑回归, CRF 等.
无向图完全取决于如何定义 score 函数, 从而训练出不同的模型.
- Naive Beyes 是一个有向图(联合/条件概率) , 当转为无向图, 则 变为了 Logistic Regression
- HMM (隐马尔可夫) 是一个有向图, 当转为无向图是, 则 变为了 Linear - chain CRFs
- 贝叶斯网络 -> 无向后 -> General CRFs
对于无向图其实没有绝对的 分割块的方法, 这也取决于你如何定义, 比如, 我就要以拆分为 配对的形式, 同样是上面的图而言:
(p(a, b, c, d, e) = frac {1}{z} phi_1(a, c) phi_2(b, c) phi_3(a, b) phi_4(b, d) phi_5(a, c) phi_6(f, d) phi_7(f, e))
没有固定的方式哦, 完全取决我们的理解和假设. 这个过程是一个提取特征 的过程, 这里的 a, b, c, e, e, f 可以看作是实例(样本) 不是特征变量.
有向图 vs 无向图
- 有向图 是 Local Normalization 即归一化是作用在 局部的 (因为, 条件概率嘛, 依赖局部)
- 无向图 是 Global Normalization 即归一化是作用在 全局的 (因为, z 的求解设计所有的变量, 全局的呀)
对于模型的影响, 通俗理解就是, 有向图,是类似一个贪心算法, 每次只寻找局部的一个最优解. 而无向图则相当于考虑全局, 会更全面一点.
这篇呢, 目的就是为了初步认识一下图模型, 同时给 HMM 和 CRF 模型提前预热一波, 至于无向图, 后面再重新来认识一波 逻辑回归就清楚了呀, 不要着急.