在之前的博客中,我们为了理解广义线性模型引入了指数族分布,不过我们并没有理解指数族分布是怎么来的。这篇博客我们就来简单介绍指数族分布的推导与应用。

为什么需要指数族分布

机器学习经常要做这样一件事:给定一组训练数据 D,我们希望通过 D 得到我们研究的空间的概率分布。这样,给出一个测试数据,我们就可以找出条件概率中概率最大的那个点,将其作为答案输出。

但是在没有任何假设的情况下,直接学习概率分布是不现实的。直接学习概率分布最简单的方法,就是把空间分成很多很多小的单元,然后统计样本落在每个单元的频率,作为每个单元的概率分布。但是这种方法会面临着数据不足、有噪音、存储能力受限等问题。单元分隔得越细,学习到得概率分布就越准确,但是我们就需要越多的数据来训练,也需要越多的存储空间来存储(一维的时候存储 $n$ 个单元,二维就要 $n^2$,三维就要 $n^3$...),这样的方法对于高维数据来说是绝对不可行的。

所以在大多数情况下,我们都会人为指定某种概率分布的形式(例如指定为高斯分布或伯努利分布等)。这样,对概率函数的学习就转化为了函数参数的学习,减小了学习的难度;我们也只需要存储我们感兴趣的统计量(例如对于高斯分布,我们只需要存储均值和方差;对于伯努利分布,我们只需要存储取正类的概率),减小了对存储空间的需求。当然,由于人为限定了概率分布形式,我们就需要根据不同的问题选择不同的分布,就像对不同问题选择不同的机器学习模型一样。

指数族分布就是一类常用的分布模型,它有很多优良的性质。接下来我们介绍指数族分布的推导和性质。

指数族分布的推导

我们用离散模型介绍指数族分布的推导,连续模型的推导也类似。

设 $X^{(i)}$ 表示第 $i$ 条训练数据,$\phi(X^{(i)})$ 表示从第 $i$ 条训练数据中我们感兴趣的统计量(是一个向量,这样我们就可以表示两个或者更多我们感兴趣的统计量)。我们希望我们的概率模型 $p$ 能满足以下性质 $$\mathbb{E}_p[\phi(X)] = \hat{\mu}$$ 其中 $$\hat{\mu} = \frac{1}{n}\sum_{i=1}^m\phi(X^{(i)})$$ 简单来说,就是概率模型的期望等于所有训练数据的均值,这个希望应该是非常合理的。

但满足这个条件的概率模型有很多种,我们再加一条限制:这个概率模型要有最大的信息熵,也就是有最大的不确定性。我们认为这样的概率模型能够涵盖更多的可能性。

根据信息熵的定义,我们写出以下式子 $$p^*(x) = \mathop{\text{argmax}}\limits_{p(x)} \quad -\sum_x p(x)\log p(x) \\ \begin{matrix} \text{s.t.} & \sum\limits_x \phi(x)p(x) = \hat{\mu} \\ & \sum\limits_x p(x) = 1 \end{matrix}$$ 这是一个有等式限制的优化问题,用拉格朗日乘子法改写为 $$L = -\sum_x p(x)\log p(x) + \theta^T(\sum_x \phi(x)p(x) - \hat{\mu}) + \lambda(\sum_x p(x) - 1) \\ = \sum_x (-p(x)\log p(x) + \theta^T\phi(x)p(x) + \lambda p(x)) - \theta^T\hat{\mu} - \lambda$$ 对 $x$ 取每一个特定值时的 $p(x)$ 分别求导,我们有 $$-1-\log p(x) + \theta^T\phi(x) + \lambda = 0$$ 移项后有 $$p(x) = \exp(\theta^T\phi(x) + \lambda - 1) = \exp(\theta^T\phi(x) - A)$$ 式子两边关于 $x$ 求和有 $$\sum_x p(x) = 1 = \sum_x \exp(\theta^T\phi(x) - A)$$ 移项后就有 $$A(\theta) = \log\sum_x \exp(\theta^T\phi(x))$$ 要注意的是,$A$ 是一个关于 $\theta$ 的函数,和 $x$ 的取值无关。

使用指数族分布

根据上面的推导,我们就得到了指数族分布的模型:$p(x) = \exp(\theta^T\phi(x) - A(\theta))$。这个模型虽然看起来和之前的博客中介绍的指数族模型($p(x) = b(x)\exp(\theta^T\phi(x) - A(\theta))$)不太一样,但我们可以让 $\theta'^T = \begin{bmatrix} \theta^T & 1 \end{bmatrix}$ 以及 $\phi'(x) = \begin{bmatrix} \phi(x) & \log b(x) \end{bmatrix}^T$ 将它变化为这篇博客中介绍的形式,只不过有的时候把 $b(x)$ 单独提出来更方便。

我们看到的大部分分布都能满足指数族分布的形式。比如令 $\theta^T = \begin{bmatrix} \log\phi & \log(1-\phi) \end{bmatrix}$,$\phi(x) = \begin{bmatrix} x & 1-x \end{bmatrix}^T$,$A(\theta) = 0$ 就有伯努利分布 $p(x) = \phi^x(1-\phi)^{1-x}$;比如令 $b(x) = 1 / \sqrt{(2\pi)^k|\Sigma|}$,$\theta^T = \begin{bmatrix} -\frac{1}{2}\mu^T\Sigma^{-1} & \Sigma^{-1} \end{bmatrix}$,$\phi(x) = \begin{bmatrix} x & xx^T \end{bmatrix}^T$,$A(\theta) = 0$ 就有多维高斯分布(这时候把 $b(x)$ 单独提出来就比较方便)。

我们还有 $\theta$ 的值没有确定。理论上,我们应该根据拉格朗日乘子法求出 $\theta$ 的值,但这样求是比较困难的。就像之前的博客写的一样,我们可以通过极大似然估计法计算 $\theta$ 的值。而且我们可以证明,用极大似然估计法算出的 $\theta$,可以满足 $\mathbb{E}_p[\phi(X)] = \hat{\mu}$ 的要求。

对训练数据集 D 使用极大似然估计法,其实就是解如下优化问题 $$\mathop{\text{argmax}}\limits_{\theta} \quad L \\ = \mathop{\text{argmax}}\limits_{\theta} \quad p(D|\theta) \\ = \mathop{\text{argmax}}\limits_{\theta} \quad \sum_{i=1}^m (\theta^T\phi(X^{(i)}) - A(\theta))$$ $L$ 关于 $\theta$ 求偏导有 $$\frac{\partial L}{\partial \theta} = \sum_{i=1}^m \phi(X^{(i)}) - n\frac{\partial A(\theta)}{\partial \theta} = 0 $$ 求得 $$\frac{\partial A(\theta)}{\partial \theta} = \hat{\mu}$$ 根据之前的推导我们有 $$A(\theta) = \log\sum_x\exp(\theta^T\phi(x))$$ 所以 $$\frac{\partial A(\theta)}{\partial \theta} = \frac{\sum\limits_x \exp(\theta^T\phi(x))\phi(x)}{\sum\limits_x \exp(\theta^T \phi(x))} = \frac{\sum\limits_x \exp(\theta^T\phi(x))\phi(x)}{\exp A(\theta)} \\ = \sum_x \exp(\theta^T\phi(x) - A(\theta))\phi(x) = \mathbb{E}_p[\phi(x)]$$ 所以 $\mathbb{E}_p[\phi(X)] = \hat{\mu}$ 的条件是满足的。

指数族分布与贝叶斯学派

我们知道,机器学习可以分为频率学派和贝叶斯学派。频率学派认为概率分布的 $\theta$ 是一个已知的确定值(只是我们还不知道),尝试通过各种方法直接建立概率分布模型并优化 $\theta$ 的值;而贝叶斯学派认为,$\theta$ 的值并不是固定的,而是和“人”的认知是有关的。

贝叶斯学派认为 $\theta$ 也是随机变量,一个人一开始对 $\theta$ 分布的认知就是先验概率分布,在他观察过训练数据之后,他对 $\theta$ 的认知会发生改变,这时的概率分布就是后验概率分布。

贝叶斯学派最重要的公式之一就是贝叶斯公式 $$p(\theta|D) = \frac{p(\theta)p(D|\theta)}{p(D)}$$ 其中 $p(\theta)$ 就是观察训练数据之前对 $\theta$ 原始的认知,就是先验概率;而 $p(\theta|D)$ 则是观察训练数据之后对 $\theta$ 的认知,就是后验概率。而 $p(D|\theta)$ 和 $p(D)$ 就是训练数据带给“人”的信息。式子两边取对数,公式可以变化为 $$\log p(\theta|D) = \log p(\theta) + \log p(D|\theta) + \text{const}$$ 常数的大小无关紧要,因为最后我们只需要选择让 $p(\theta|D)$ 最大的 $\theta$ 即可,而对于所有 $\theta$ 来说,这个常数是一样大的,不影响比较。这个公式告诉我们,后验知识 = 先验知识 + 数据认识,也可以说,数据帮助“人”修正认知。

如果假设测试数据服从和 $\theta$ 有关的指数族分布,那么我们有 $$\log p(D|\theta) = \theta^T\sum_{i=1}^m\phi(X^{(i)}) - A(\theta)$$ 可是先验概率分布是怎么样的呢?现在贝叶斯学派的研究,大多都会构造一个先验概率分布。这个构造的分布在复杂情况下主要用于消除 $\log p(D|\theta)$ 中一些比较麻烦的项。的确,应该要按问题的性质构造先验概率分布比较合理,但是这样概率分布的式子可能会变得很复杂,无法在有限时间内计算。这种不按问题性质而构造先验概率分布的方法也是当前贝叶斯学派比较受诟病的一点。

既然数据认识是一个指数族分布,我们也构造一个指数族分布的先验概率分布,便于计算。我们构造 $\log p(\theta) = \eta^T \begin{bmatrix} \theta & A(\theta) \end{bmatrix}^T + \text{const}$,将 $\log p(\theta)$ 与 $\log p(D|\theta)$ 代入式子后,我们有 $\log p(\theta|D) = \eta'^T \begin{bmatrix} \theta & A(\theta) \end{bmatrix}^T + \text{const}$,其中 $\eta' = \eta + \begin{bmatrix} \sum_{i=1}^m \phi(X^{(i)}) & -1 \end{bmatrix}^T$。也就是说,我们关注的统计量是 $\theta$ 和 $A(\theta)$,而每看到一组训练样本,我们只要更新 $\eta$ 就能将先验分布改为后验分布。这是我们先验分布选择了一个方便计算的形式的结果。

来举一个例子:现在有一枚硬币,投掷了若干次,其中 $g$ 次正面朝上,$h$ 次反面朝上。希望拟合出一个参数为 $\theta$ 的伯努利分布,作为投硬币的概率模型。

根据之前的推导,我们有 $\log p(D|\theta) = \sum_{i=1}^m(X^{(i)}\log\theta + (1-X^{(i)})\log(1-\theta))$。现在我们想获得的是 $\theta$ 的概率分布,所以我们关注的统计量应该是 $\begin{bmatrix} \log\theta & \log(1-\theta) \end{bmatrix}^T$,那么构造先验分布 $\log p(\theta) = \begin{bmatrix} a & b \end{bmatrix}\begin{bmatrix} \log\theta & \log(1-\theta) \end{bmatrix}^T + \text{const}$(因为 $A(\theta) = 0$ 所以我们这里就省略了这一维)。这样,先验分布就是 $p(\theta) = C\theta^a(1-\theta)^b$,后验分布就是 $p(\theta|D) = C\theta^{a+g}(1-\theta)^{b+h}$,是两个 beta 分布。

非常恰好的是,这两个分布具有很高的可解释性。我们画出几个 beta 分布的图像。

beta(0, 0) 可以看作训练最开始的先验概率,没有见过任何训练数据,所以认为所有的 $\theta$ 都是等概率的;beta(7, 3) 和 beta(3, 7) 可以看作抛硬币 10 次后的后验概率,可以看到 beta 分布的峰值分别出现在 0.7 和 0.3 处,但是方差较大,没有那么肯定;beta(70, 30) 可以看作抛硬币 100 次后的后验概率,可以看到 beta 分布的峰值出现在 0.7 处,而且方法很小,说明此时我们非常肯定 $\theta = 0.7$ 是最佳的参数。

当然,这种可解释性是非常凑巧的。在比较复杂的问题中,这种构造出来的先验分布基本是没有解释性的。而且如果训练数据量太小,最后的后验概率受先验概率的影响会很大,可能会出现变形的结果。一个又符合问题特征,又便于计算的先验分布是非常难获得的,所以现在的贝叶斯学派只能暂时以可计算性为重。

转载于:https://www.cnblogs.com/tsreaper/p/exp-family.html

分享小记:指数族分布相关推荐

  1. 一文了解什么是指数族分布

    前言 指数分布族是一系列分布的统称,包含连续和离散的相关分布.例如,正态分布(Gaussian).泊松分布(Poisson).二项分布(Bernoulli).指数分布(exponential).Gam ...

  2. kl散度度量分布_概率图简要模型笔记(二)马尔可夫随机场与KL散度、最大熵、指数族分布、高斯分布、极大似然分布...

    这一篇文章主要是想捋一捋KL散度.最大熵.指数族分布这些东西之间的关系,这是一些非常基本的知识点,刚入门机器学习的时候,傻傻分不清楚,现在回过头来看,其实很多东西都可以串起来,不得不感叹数学真是一个很 ...

  3. 白板机器学习笔记 P39-P45 指数族分布

    视频地址:https://www.bilibili.com/video/BV1aE411o7qd?p=39 笔记地址:https://www.yuque.com/books/share/f4031f6 ...

  4. exponential family distribution(指数族分布)

    1. exponential family 给定参数 η\boldsymbol \eta,关于 x\mathbf x 的指数族分布定义为如下的形式: p(x∣∣η)=h(x)g(η)exp{ηTu(x ...

  5. PRML(3)--Chapter2(上)-概率分布-二元变量、多项式变量、高斯分布、指数族分布

    PRML第二章上-概率估计 2.1二元变量 2.1.1 beta 分布 2.2 多项式变量 2.3 高斯分布 2.3.1条件高斯分布.2.3.2边缘高斯分布 2.3.3 高斯变量的贝叶斯定理 2.3. ...

  6. 机器学习笔记之指数族分布——最大熵原理与softmax激活函数的关系

    机器学习笔记之指数族分布--最大熵原理与softmax激活函数的关系 引言 符号定义 基于多维数据集合的经验概率分布 回顾:经验概率分布 多维数据的经验概率分布 Softmax\mathcal Sof ...

  7. 机器学习-白板推导-系列(八)笔记:指数族分布/充分统计量/对数配分函数/最大熵

    文章目录 0 笔记说明 1 背景 1.1 指数族分布的一般形式 1.2 共轭先验 2 高斯分布的指数族形式 3 对数配分函数与充分统计量 4 极大似然估计与充分统计量 5 熵 5.1 最大熵⇔x服从均 ...

  8. 新浪微博分享 小记!!!(尚未成功)

    最近app要集成新浪的微博分享(首先吐槽下开发者注册之难,竟然还要身份证的正反面,我又不是开淘宝店! 还有他那个开发者登录系统反应之慢!好在我通过登录扫码自己的微博成功登陆上了开发者) 他分享的内容: ...

  9. 数据分享|人口空间分布

    Landscan人口密度数据 介绍 Landscan全球人口密度空间分布数据,空间分辨率为1公里(30 X 30"),每年一期数据,数据起始时间2000年,最新的LandScan Globa ...

  10. 分享Spring Cloud分布式微服务架构图

    分布式.微服务.云架构 JAVA语言开发.跨平台.高性能.高可用.安全.服务化.模块化.组件化.驱动式开发模式 从现在开始,我这边会将近期研发的springcloud微服务云架构的搭建过程和精髓记录下 ...

最新文章

  1. 浅谈TCP的窗口字段
  2. 解决 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 问题
  3. GetListToJson
  4. 腾讯与Github的魔幻会面背后的故事…
  5. 数据接口同步的同步方法
  6. C#3种常见的定时器(多线程)
  7. MS SQL 语法大全
  8. django-演练-老师列表页的显示-通过table显示
  9. python 线程 的类库_python类库32[多线程同步Lock+RLock+Semaphore+Event]
  10. (转)详解Windows Hash
  11. Android趣味课程:超简单猜数游戏
  12. 如何启用计算机的无线功能键在哪,笔记本无线网络开关,小编教你如何打开笔记本电脑无线网卡开关...
  13. 金字塔原理(pgn 项目计划、方案、汇报、总结、PPT等)
  14. 【基于物理的渲染(PBR)白皮书】(五)几何函数相关总结
  15. 第三类边界条件 matlab,matlab怎么解偏微分方程
  16. python-绘制散点图
  17. 浙大oj(Basic Practice)1004
  18. dos2unix和unix2dos命令
  19. 验证码 图片无法刷新
  20. 指针的步长及意义(C语言基础)

热门文章

  1. 2012.4.17内存相关
  2. python 提取邮箱的正则表达式
  3. mysql5.6 主从 延迟_MySQL5.6升级5.7时,出现主从延迟问题排查过程
  4. 图的存储结构之邻接表
  5. c#文件分割与合并 part 1 (转自互联网)
  6. MySQL字符集的转换
  7. 济宁与华为企业云战略合作携手推进云计算产业发展
  8. cocoaPods 创建自己的依赖库
  9. 一种新的人机交流方式——sound ware 声件
  10. Exchange2010配置实验(二)满足先决条件安装Exchange2010