小论 generative 和 discriminative model

其实两者区别挺大,对 supervised learning 而言

  • generative model 需要 \Pr (x, y) 作为目标函数,同时一般使用的是 \Pr(y) \Pr(x \mid y) 这个分解来进行参数化
  • discriminative model 需要的是 \Pr (y \mid x) 作为目标函数,跟 \Pr (x) 没有关系

下面两个例子,也是面试的时候天天问的,我们假定 feature 都是 binary,分类问题。

naive Bayesian

给定某类后决定了 feature 是条件独立的,那么每个 feature 取 0/1 的概率就是 \Pr (x \mid y) 的参数(比如 n 个 feature 就对应 n 个参数),总共的参数个数就是 (C-1)n + C-1,其中 C 是总共的类的个数。模型的 learning 就是

\displaystyle \max_{p_{c, j}, \pi_c} \prod_{i = 1}^N \Pr (x_i, y_i) = \prod_{i = 1}^N \pi_{y_i} \prod_{j = 1}^n p_{y_i, j}^{x_i^{(j)}} (1 - p_{y_i, j})^{1 - x_i^{(j)}}

因此之后求解(一般对 log 之后的处理)就是数数了。

logistic regression

类似以上,但是我们认定 \Pr (y \mid x) 是一个 Bernoulli 分布,那么 feature 是如何与 response 发生关系的呢?而且现在 x 都给定了不存在什么分解,常见的做法是认为它们的线性组合 contribute 到最终的概率,这样参数个数是 (c-1)(n + 1)

\displaystyle \max_{\beta_{c, j}} \prod_{i = 1}^N \Pr(y_i \mid x_i) = \prod_{i = 1}^N \prod_{c = 1}^C \mu_{c}^{y_i^{(c)}} (x_i)

这里 \mu_{c}(x_i) \propto \exp (-\beta_{c, 0} - \beta_c^\top x_i)\mu_C(x_i) \propto 1,相加为 1。这个优化就不是数数能解决的而是需要 Newton 法之类的 optimizer。

奇怪的做法

如果我们使用 naive Bayesian 的形式来构造 \Pr (x, y),但是却使用 logistic regression 的目标函数会有什么结果?这时 \Pr (y \mid x) = \frac{\Pr (x, y)}{\Pr(x)} \propto \Pr(y) \Pr(x \mid y)。这样当 y = c 时,\Pr (y) \Pr(x \mid y) = \pi_c \prod_{j = 1}^n p_{c, j}^{x^{(j)}} (1 - p_{c, j})^{1 - x^{(j)}},如果我们把这个代入下面的式子

\displaystyle \max_{\pi_c, p_{c, j}} \prod_{i = 1}^N \Pr (y_i \mid x_i)

那得到的模型到底是什么呢?其实仔细的人就会发现 \beta_{c, 0} = -\log \pi_c\beta_{c, j} = -\log p_{c, j},也就是说我们只是换了一种“参数化”的方法。从这里我们也能看出来就算 naive Bayesian 给定了很强的“条件”独立性,在这个 training 里面这个条件独立性也不是“必须的”。

小结一下 generative model 和 discriminative model 核心的区别在于目标函数就是是联合概率还是条件概率,而不在于如何 decompose 和 parametrize。

——————
And the first born bore a son, and called his name Moab: the same is the father of the Moabites to this day.

Advertisements
小论 generative 和 discriminative model

一个有关“小论 generative 和 discriminative model”的想法

  1. 请教大牛点儿问题:在Hinton2006年A fast learning algorithm for deep belief nets中,DBN网络最上面的两层组成了一个叫association memory的东西,比起下面的层来,这两层的连接是无向的,也就是用的一个权矩阵(而下面的fine tune以后分成了上下两个权矩阵generative weight和recognition weight),而在Hinton发表在Science上的文章Reducing the dimensionality of data with neural networks,DBN作为一个autoencoder,所有层间fine tune以后分成了上下两个权矩阵。
    为什么要用association memory?Hinton说:The undirected connections at the top are equivalent to having infinitely many higher layers with tied weights. 那为什么science文章对应代码里又分成两个?
    如果DBN通常的结构是多层RBM(也就是说top layer也分成两个权矩阵),那Hinton2006年A fast learning algorithm for deep belief nets中用association memory是应用的特殊性?
    实在困惑。
    万望帮助,不胜感激!!!

  2. zt 说:

    两篇文章的目的是不一样的,前面你说的那篇是做监督学习,所谓的 association memory 就是将图片(手写体数字)和 label 关联起来,后面是做 unsupervised learning,最窄的那层的目的是压缩信息(但没有类别信息)便于重构。

    1. 匿名 说:

      另:为了问大侠问题注册了wordpress,不怎么会用,怎么下一个问题是Anonymous?
      桃之夭夭姐姐的blog粉了,很共鸣!

  3. 匿名 说:

    大侠所言非常到位,正中我所想!
    坚决粉你的blog了!
    多层RBM构成的DBN的实质是个重构器,如果把它用于分类(有监督学习),就要在其上加上这个模型与label的关联,Hinton加上了association memory。训练过程和独立的重构器一样,就是几层RBM的训练。fine tune过程中, generative weight的修正跟原来重构器的过程也一样,不同的在于recognition weight的修正过程加上了label的因素,association memory结合压缩结果和label进行参数修正,并反向传播逐层修正recognition weight。(参考 Hinton2006年A fast learning algorithm for deep belief nets给出的伪代码)
    我这样理解对吧?

    还有一点儿小不解是:当网络都训练fine tune好了以后,测试数据从visible layer输入,利用recognition weight向上计算直至association memory顶层输出结果,与label对比,看分类正确与否,这个测试过程根本不用generative weight,那干嘛在fine tune的时候修正它呢?
    还有:Hinton在fine tune阶段,association memory利用gibbs sampling迭代了很多次,为何要弄多次?

  4. zt 说:

    楼上你没登录,所以用户名是 anonymous…

    事实上就识别这一个 task 而言是不需要 generative weight,Hinton 在文中指出可以用 BP 直接 fine-tune,使用 Holmhetz machine 的 training 只是为了既能识别又能生成,IMHO。

    1. 太激动了,忘了还有一个问题:Hinton在fine tune阶段,association memory利用gibbs sampling迭代了很多次,为何要弄多次?体会不到这里概率或统计学理论方面的深意,Hinton好像也说不多弄几次似乎效果不好。

  5. zt 说:

    你说的那个大概是 Helmholtz machine 的 training?不记得怎么用 Gibbs sampler 了,只记得好像是什么 wake-sleep 算法啊

    1. 匿名 说:

      Hinton06年之前的工作没有细看,是Holmhetz machine里的training,用的是他以前提到的wake-sleep算法,只是其中在处理association memory时似乎有些变化,大侠提醒了我,回头看看他06年前的工作,兴许能找到答案。

    2. hxtang 说:

      这个东西和非监督的RBM training的时候做Gibbs sampling是不是一样的?
      如果是的话不是就是把那个模型看成个Markov chain,然后多迭代几次才可能收敛到equilibrium distribution么?

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s