这部分开始,我们将讨论 learning 相关的内容。PGM 为 frequentist 与 Bayesian 系的 model 提供了同一种语言,对前者来说 learning 就是确定一种对“未知但是却是常值”的参数的估计,使得某种“准则”得到满足;对后者来说参数不存在“估计”问题,参数由于成为了随机变量,也成为了 PGM 的一部分,这使得后者的参数推断变成了一般的 inference 问题,事实上个人觉得后者的 learning 其实是对 hyper-parameter 的 tuning,因为从某种意义上来说,这样做也是为了使得某种准则得到满足。但是两者在这其中有一些微妙的区别:由于参数在后者里面无法观测到,因此等价于前者中的隐变量。这部分我们仅仅讨论不带隐变量的 learning 问题,并且 graph 结构是已知的。 第一位的事情是使用 MLE 这个 principle,这可以从 minimize empirical distribution 和 model distribution 之间的 KL divergence 这个上面推理出来,这可以理解成为一个 density estimation 的问题,而衡量估计好坏使用 \displaystyle\min \mathrm{KL}(\tilde{p}(X), \Pr(X)) = \int \tilde{p}(X) \log \tilde{p}(X) \,\mathrm{d} X - \int \tilde{p}(X) \log \Pr(X) \,\mathrm{d} X \quad \Rightarrow \quad \max \sum_{i = 1}^N \log \Pr(X_i) 这也意味着我们在寻求最好的 M-projection。这往往会导致所谓的 overfitting 问题,也会引入两种思路解决:对 frequentist 来说 regularization 是一种自然的做法,而 Bayesian 会引入 prior。从某种角度上来说两者并不完全具有包含关系:regularization 使用的惩罚可以完全不对应某种“正常的分布”,而某些 prior 的引入也可能不容易从 regularization 来解释。但是如果两者存在 overlap,那么 Bayesian 的 MAP 估计就等价于某种特定的 regularization 下模型的 training。通过 regularization,我们主要希望 tradeoff 模型的 bias-variance:一般增大 regularization 的作用会增加 bias 但是会减少 model 不必要的抖动(variance)。regularization 另一种形式是将 model 限制在特定的函数类上,实际操作中往往两种都会使用。 第二位的事情是选择哪个分布作为 MLE 的目标函数。前文讨论过,同样的参数化,如果选择的 likelihood function 不同获得的结果可以完全不一样,这一般会导致 generative model 和 discriminative model 两种方式。一般说来前者的好处是易于处理 missing value,容易给人问题的直观理解,在样本数目较少的时候效果更好;而后者形式上避免了一些不必要的假设,更加直接对监督学习问题给出了求解,避免了某些假设错误情况下结果较差的情况。 第三位的事情是如何获得这个解。事实上对 BN 来说由于存在分解 \displaystyle\Pr (X) = \prod_{x} \Pr(x \mid \pi (x)) 我们的优化问题立刻转变成为了每个 local likelihood 上的优化问题,换言之所有 CPD 的参数在优化时是 decoupled,即便需要使用 numeric solver,我们也可以仅仅对每个小问题分别进行求解 \displaystyle \max \sum_{i = 1}^N \log\Pr(X_i) = \sum_x \sum_{i = 1}^N \Pr (x_i \mid \pi(x_i), \theta_x) 更进一步,如果我们的 CPD 是 multinomial,这就变成了数数了。(可想而知对 Bayesian 版本加上 Dirichlet prior 其后验此时也很容易搞定,且对一般的 Bayesian model,对应的后验也是 decouple 的)在有 parameter sharing 的情形(比如 HMM 中由于 time-invariant 假定导致 transition 和 emission probability 是 shared),frequentist 的问题也没有变复杂。但问题出现在 Bayesian prior 上,如果没有 sharing,这会导致几个分别的 prior,而在 sharing 下,我们只有一个公共的 prior:这么说有点抽象,比如最常见的 mixture model,对每个样本 x_i 我们引入一个隐变量 z_i 表示选择某个特殊的分布(比如两个 Gaussian),frequentist 会让 z_i share 一个参数 \pi 决定选择某个 Gaussian 的概率,Bayesian 为这个参数 \pi 引入先验(如 Beta 分布),这时我们有几种可能,其一是 \pi 不被 share 而超参数被 share,一种是 \pi 被 share。这样对应了两种可能的“mixture”,事实上前者(下图最后一个)才是常规意义下所说的 Bayesian mixture。 其中最后一种是常见的 Bayesian mixture,前面都会由于 sharing 导致 learning 的困难而不得不采用 variational Bayesian 进行近似。 这里需要注意的是用来 model 观测的参数 \theta 往往是被 share 的,通过其公共的 prior(如 LDA 中为 topic 设定 Dirichlet prior)可以使得数据较少的情况下能保证每种 \theta 仍然具有一定的相似性,这时引入的公共 prior 会导致所谓的 hierarchical prior,其目的是在不同的 prior 上建立一个互相影响的渠道(否则是先验独立的)。 比较麻烦的事情在于 MRF,由于 partition function 的存在,所有的参数耦合在了一起, \displaystyle \max \sum_{i = 1}^N \log\Pr(X_i) = \sum_{i = 1}^N\sum_c \log\phi (x_c^{(i)}) - \log Z^{(i)} 其中 Z^{(i)} = \sum_X \prod_c \phi(x_c)。这种情况下,就算我们对某个 factor \phi(x_c \mid \theta_c) 的参数求导,其导函数也是很难(一般情况下)求出来的,注意最常见的 log-linear model 来说,\phi(x_c) = \exp(\theta_c^\top f_c(x_c)), \displaystyle \frac{\partial \ell}{\partial \theta_c} = \sum_{i = 1}^N f_c (x_c^{(i)}) - \langle f_c(x_c)\rangle \stackrel{\triangle}{=} \tilde{f}_c - \langle f_c (x_c) \rangle 其中第二项的计算也是困难的,这意味着我们必须获得对应 feature 在当前模型下的 expectation,也就是说与 BN 不一样的是为了获得例如求解需要的目标函数的值或者梯度,我们都需要进行额外的 inference。更有意思的是这种类型的模型我们还可以通过最大熵原则获得,其基本的假定是模型满足一些 moment matching constraints,例如某些 feature 在模型上的期望等于观测的样本上的经验期望情况下,能够最大化模型的熵,这会导致一个没有参数化的模型(如 logistic regression 对应的所谓最大熵模型),该问题的变分解就是一个 log-linear model,为此,这类模型一般还存在另外一种 solver,即所谓 iterative scaling:这个 solver 可以认为是梯度法的简化版本,每次对应参数的更新均为 \log \tilde{f}_c - \log \langle f_c (x_c) \rangle,这是所谓的 generalized iterative scaling,另有一种所谓 IIS 的也能推广到这种情况下。iterative scaling 实现较简单,其意义也比较直观,但是不如一般的 numeric solver(如 steepest gradient ascent 或者 conjugate gradient、L-BFGS)快。可以证明 \displaystyle \frac{\partial^2 \ell}{\partial \theta_c \partial \theta_{c'}^\top} = -\mathrm{cov} (f_c, f_{c'}) 这也说明 log-linear model 是 convex 的。这类问题通常也会通过 Gaussian/Laplace prior 进行 MAP 估计获得 regularized solution。通常为了加速 learning,我们可以使用 approximate inference,但是我们必须明白近似后是否还是在对原始的目标函数进行优化。一类做法是利用 MLE 与 ME 的关系,使用熵的近似(使用 belief 和 belief update),满足 moment matching 的优化问题,这被称为 CAMEL(constrained approximate maximum entropy learning),还有不少基于 sampling 的方式。为了避免 undirected graph MLE 的困难,还有使用所谓 pseudolikelihood(将每个变量的条件分布相乘获得的函数),别看形式复杂,但是优化起来却简单很多,取对数后相当于对每个条件分布的参数求解,这时的 inference 仅对一个变量来做,避免了原先是对所有变量做的难问题。 第四位的是我们 MLE 的结果是否真的有用,这一般需要使用 asymptotic analysis 和PAC 学习理论来进行 generalization analysis。前者分析的是样本无限增多的情况下我们的估计的收敛情况,可以证明参数模型使用 M-projection 是能渐进收敛到真实的参数值的。后者分析的是样本有限情况下,我们通过 MLE 获得的模型性能很差的概率有多大(换句话说获得给定性能情况下需要多少样本)。这部分的分析以及对数据复杂性的分析(margin)、函数族复杂性的分析(VC-bound)导致了一族重要的模型,即 support vector machines/large margin model,与 MLE principle 不同,large margin model 以最大化 model 的 margin 为目标(如果纯粹从 loss function 上来看,negated likelihood 是一种 loss,而使用样本到 margin 的 function value difference 也可以看成一种 loss,比如常见的 Hinge loss),这也就导致了与经典 logistic regression 对应的 SVM,其 dynamic version CRF 对应的 MMMN(maximum margin Markov networks)等等的研究。 最后小声说一句的是 frequentist 的 linear model 通过对 inner product 的抽象换为 kernel 导致了所谓的 kernelized model,这为对应的参数模型(线性模型)引入了一族非参模型;而 Bayesian 通过为线性参数引入 Gaussian prior 然后 marginize 掉参数获得了 Gaussian process 也引入了一族非参模型。非参模型能够“从数据出发不受参数模型的限制”,通过选择 kernel/co-variance 得到不同问题下合适的 implicit feature(可能是无限维的)。这样一来成功将 model 的问题推到 feature engineering/kernel design 上,转移了问题的形式。非参模型的估计这里一样可以使用 MLE/maximum margin 之类作为优化目标,只是参数增多,变成与样本数量相关的了。 ——————— And the thing was very grievous in Abraham’s sight because of his son.

pgm13的更多相关文章

随机推荐

  1. 【Codeforces 815C】Karen and Supermarket

    Codeforces 815 C 考虑树型dp. \(dp[i][0/1][k]\)表示现在在第i个节点, 父亲节点有没有选用优惠, 这个子树中买k个节点所需要花的最小代价. 然后转移的时候枚举i的一 ...

  2. 序号生成算法odoo

    def get_sum_seq(self, cr, uid, ids, name, args=None, context=None): if not ids: return {} result={} ...

  3. [已解决]An unhandled exception occurred while processing the request.

    An unhandled exception occurred while processing the request. InvalidOperationException: The layout ...

  4. Html5前端笔记

    获取Dpi 在 window.load中添加: (function(){ if (!window.screen.deviceXDPI){ var tmpNode = document.createEl ...

  5. cookie详解(含vue-cookie)

    今天看到一篇cookie的文章,写的特别详细,感谢 晚晴幽草轩 的分享,原文链接http://mp.weixin.qq.com/s/NXrH7R8y2Dqxs9Ekm0u33w 原文如下,记录到此供以 ...

  6. 第二次作业 对VC++6.0编译软件的评价

    首先这个软件伴随着我们很长时间了,它是我们一上大学最先接触的,也是应用相当多的一个软件,其实在最初的时候,我对编译软件的理解非常有限,觉得它能实现一个代码的功能十分神奇的一件事情,虽然彼时我们写的代码 ...

  7. 《Linux内核设计与实现》第4章读书整理

    第四章   进程调度 4.1多任务 无论在单处理器或者多处理机器上,多任务操作系统都能使多个进程处于堵塞或者睡眠状态. 非抢占式多任务:除非进程自己主动停止运行,否则它会一直执行. 抢占式多任务:进程 ...

  8. 实验--使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用(杨光)

    使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 攥写人:杨光  学号:20135233 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程 ...

  9. 选择J2EE的SSH框架的理由

    选择J2EE的SSH框架的理由 Struts2框架: Struts2框架的基本思想是采用MVC设计模式,即将应用设计成模型(Model).视图(View)和控制器(Control)三个部分:控制部分由 ...

  10. [2017BUAA软工]第0次博客作业

    第一部分:结缘计算机 1.你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢? 当初选择计算机专业作为自己报考大学的第一志愿,主要是看重了市场对于计算机行业人士的巨大需求,同时也感慨于计算机行 ...