zoukankan      html  css  js  c++  java
  • 回顾-生成 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(身高|男) ~ hicksim N(172, sigma))

    (p(身高|男) hicksim 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算了, 先给自己留个坑, 后面用到了再来填吧...

  • 相关阅读:
    mac 给 iPhone 充电一直闪跳 / Mac usb 连接闪动/跳动/时断等情况的解决
    【转】理解 configure 脚本
    python中的none类型
    [转]文件下载方式
    [转]这篇文章把跨域讲清楚了
    c开发php拓展
    golang socket编程,实现http协议
    【转】浏览器何时发送一个Option请求
    linux 任务的前后台管理
    【转】Go 中 io 包的使用方法
  • 原文地址:https://www.cnblogs.com/chenjieyouge/p/12149314.html
Copyright © 2011-2022 走看看