回顾-生成 vs 判别模型-和图
直觉认识
生成模型, 通过训练的模型, 可以求出 p(x|y), 即生成模型的本质是通过旧样本->模型 -> 新样本, 通过某种概率分布, 能自己生成样本, 这很厉害的.
判别模型, 就咱平时用得最多的, 只能用来判断, 不能生成新样本.
case1: 图片识别
以图片识别为例, 假设我们有两波小猫和小狗的图片.
对于生成模型来说, 会生成 猫的模型和狗的模型, 当新来一张图片就能知道是猫还是狗, 同时因其在训练时, 会尽力记住每个各种, 所有, 这模型, 也能生成新的图片哦.
而对于判别模型来说, 只要记住二者的差异即可进行判断了.而无暇关系具体的阿猫阿狗是什么样子的哦.
case2: 模拟身高
生成: \(P(x, y) = P(y)P(x|y)\) 可以从 y 来产生 x
判别: \(P(y|x)\)
学生身高:
男: 170, 172, 174, 176, 168
女: 160, 162, 164, 166
然后假设是服从高斯分布的, 即用样本估计总体可得:
\(p(身高|男) ~ \thicksim N(172, \sigma)\)
\(p(身高|男) \thicksim N(163, \sigma)\)
生成模型当有了概率分布, 就可进行 采样出样本, 新生x
当然, 我觉的直观还是从公式来看, 生成模型 \(p(x, y) = p(x)p(y|x)\) 与判别模型 \(p(y|x)\) 多了一个 \(p(x)\) 的项, 即生成模型既要做判别,也要考虑样本的分布, 而判别就是为了判别.
一般来说, 对于分类问题, 判别模型 > 生成模型 的, 因为, 判别更加专注. 但当数据量比较少的时候, 有可能会 生成模型 > 判别模型.
生成模型中的 \(p(x)\) 可以理解为一个先验概率, 这个跟之前整的 正则 是有联系的, 即, L1的正则跟 入 相关, L2正则跟高斯分布相关. 即每个先验, 在某种意义上, 相当于在我们的模型中加了一个正则项. 这就解释了在数据量少的情况下, 生成模型的 p(x) 起到了正则项的约束, 能降低模型的 过拟合 .
生成模型应用: 图片生成, 聊天机器人, 机器人写代码, 写诗, 写歌...
有向 vs 无向图
也是做一波之前的回顾, 从计算 联合概率 的角度来看
有向图
1 -> 2
3 -> 2
2 -> 4
5 -> 4
则根据这种依赖关系, 便可用条件概率的方式来计算其联合概率:
\(p(1,2, 3, 4, 5) = p(1) p(3) p(2|1, 3) p(5) p(4|2, 5)\)
无向图
1 - 2
3 - 2
1-3
2 - 4
4 -5
这种没有明细概率关系, 通过 score 或者能量函数的方式来求, 即将 其划分为多个簇 (max clique) , 分别计算其score 如:
\(p(1, 2, 3, 4, 5) = \frac {1}{z} \phi_1(1,2,3) \phi_2(2,4) \phi_3(4, 5)\)
归一化 是为了转为概率.
也可以这样两两一波 (pairwise) 划分:
\(\frac {1}{z} p(1, 2, 3, 4, 5) = \phi_1(1,3) \phi_2(1,2) \phi_3(2,3) \phi_4(2, 4) \phi_5(4, 5)\)
无向图的核心在于 如何定义 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
对于无向图其实没有绝对的 分割块的方法, 这也取决于你如何定义, 比如, 我就要以拆分为 配对的形式, 同样是上面的图而言:
没有固定的方式哦, 完全取决我们的理解和假设. 这个过程是一个提取特征 的过程, 这里的 1, 2, 3, 4, 5可以看作是实例(样本) 不是特征变量.
之前本篇是想在通过 HMM -> CRF(条件随机场) 这样的序列生成模型, 但尝试了一波, 我感觉推导我好像搞不定暂时,主要是我这概率的基础有点薄弱, 不像微积分和线代那样, 随手就来...嗯..暂且熟练API算了, 先给自己留个坑, 后面用到了再来填吧...