作者:CHEONG

公众号:AI机器学习与知识图谱

研究方向:自然语言处理与知识图谱

阅读本文之前,首先注意以下两点:

1. 机器学习系列文章常含有大量公式推导证明,为了更好理解,文章在最开始会给出本文的重要结论,方便最快速度理解本文核心。需要进一步了解推导细节可继续往后看。

2. 文中含有大量公式,若读者需要获取含公式原稿Word文档,可关注公众号【AI机器学习与知识图谱】后回复:变分推断第三讲,可添加微信号【17865190919】进学习交流群,加好友时备注来自CSDN。原创不易,转载请告知并注明出处!

本文将先对变分推断所要解决的问题进行分析,然后给出基于随机梯度上升法的变分推断解法。

一、本文结论

结论1: 变分推断的主要思想:在给定数据集XXX下,问题是求后验概率ppp,简单情况下后验概率ppp可直接通过贝叶斯公式推导求出,但有些情况无法直接求解。因此变分推断想法是先假设另一个简单的概率分布qqq,如高斯分布,通过优化ppp和qqq之间距离最小化,让概率分布qqq逼近ppp,这样就可以用概率分布qqq近似表示后验概率ppp。

结论2: 基于随机梯度上升法主要思路就是对优化的目标函数q∗=argmaxqELBOq^*=argmax_qELBOq∗=argmaxq​ELBO求梯度的过程。最后使用MCMC采样的方式近似求出梯度,并且考虑到求解出梯度近似值的稳定性,使用了重参数化技巧Reparameterization Trick。在梯度求出之后便可使用迭代方式求出参数。

二、问题分析

在上一节详细介绍了变分推断所要解决的问题,下面我们首先重新明确优化的目标函数

其中:

为了表示方便,这里假设q(z)q(z)q(z)中zzz是关于参数ϕ\phiϕ的函数,这样优化函数就变成:

在明确了优化函数后,接下来就通过随机梯度上升法求解,因此下面通过公式推导求求梯度。

三、公式推导

下面是L(ϕ)L(\phi)L(ϕ)关于ϕ\phiϕ求梯度的过程:

这里为了方便表示,做以下赋值操作,用AAA表示公式前半部分,用BBB表示公式后半部分:

先看BBB项,其中logpθ(x,z)logp_\theta(x,z)logpθ​(x,z)与L(ϕ)L(\phi)L(ϕ)无关,所以有:

所以最终化简可得BBB项为0,所以原始公式就只剩下AAA项:

所以可以将上述式子写成qϕq_\phiqϕ​期望的形式如下:

这样我们就将L(ϕ)L(\phi)L(ϕ)关于ϕ\phiϕ的梯度求出来了,是一个关于qϕq_\phiqϕ​的期望,就可以通过MCMC采样的方式把梯度具体表示出来,知道了梯度便可以利用梯度上升法进行求解了。首先通过MCMC采样法对zzz进行采样,zl∼qϕ,l=1,2,...,Lz^l \sim q_{\phi}, l=1,2,...,Lzl∼qϕ​,l=1,2,...,L,得到L(ϕ)L(\phi)L(ϕ)关于ϕ\phiϕ的梯度为:

知道梯度后便可以通过随机梯度上升法求解参数:

但这里存在一个问题,问题就出在:

当qϕq_\phiqϕ​很小时,如在0-1之间时,log函数的结果就会有很大的波动,会导致求出来的梯度值有很大的波动,这样MCMC采样时只有让LLL取非常大时才能避免这种波动带来的高方差High Variance的问题,所以在实际使用时存在工程上的问题。解决的方案就是使用重参数化技巧来避免。

四、重参数化技巧

Reparameterization Trick,假设:

其中

则:

在使用重参数化技巧之后,我们再来求目标函数的梯度值:

这里将qϕq_\phiqϕ​可以利用重参数化技巧可以等价替换成p(ε)p(\varepsilon)p(ε):

这里就是关于p(ε)p(\varepsilon)p(ε)的期望了,所以对ϕ\phiϕ求梯度时就不会那么复杂

这里我们再使用MCMC采样法对ε\varepsilonε进行采样,εl∼p(ε),l=1,2,...,L\varepsilon^l \sim p(\varepsilon), l=1,2,...,Lεl∼p(ε),l=1,2,...,L,最终可以得出目标函数的梯度值为:

得知梯度值之后,便可以使用随机梯度上升法对参数进行迭代求解:

【机器学习系列】变分推断第三讲:基于随机梯度上升法SGD的变分推断解法相关推荐

  1. 基于随机梯度下降法的手写数字识别、epoch是什么、python实现

    基于随机梯度下降法的手写数字识别.epoch是什么.python实现 一.普通的随机梯度下降法的手写数字识别 1.1 学习流程 1.2 二层神经网络类 1.3 使用MNIST数据集进行学习 注:关于什 ...

  2. 机器学习:随机梯度下降(SGD)与梯度下降(GD)的区别与代码实现。

    机器学习:随机梯度下降(SGD)与梯度下降(GD)的区别与代码实现. 梯度下降法(GD) 随即梯度下降(SGD) 代码实现 如果想细致的了解:-> 梯度下降法 梯度下降法(GD) 假设函数fx, ...

  3. 监督学习——随机梯度下降算法(sgd)和批梯度下降算法(bgd)

    线性回归 首先要明白什么是回归.回归的目的是通过几个已知数据来预测另一个数值型数据的目标值. 假设特征和结果满足线性关系,即满足一个计算公式h(x),这个公式的自变量就是已知的数据x,函数值h(x)就 ...

  4. 梯度下降(BGD)、随机梯度下降(SGD)、Mini-batch Gradient Descent、带Mini-batch的SGD

    原文:http://blog.csdn.net/llx1990rl/article/details/44001921 梯度下降(BGD).随机梯度下降(SGD).Mini-batch Gradient ...

  5. DistBelief 框架下的并行随机梯度下降法 - Downpour SGD

    本文是读完 Jeffrey Dean, Greg S. Corrado 等人的文章 Large Scale Distributed Deep Networks (2012) 后的一则读书笔记,重点介绍 ...

  6. 机器学习(四):批量梯度下降法(BGD)、随机梯度下降法(SGD)和小批量梯度下降法(MBGD)

    本文基于吴恩达老师的机器学习课程.看了吴恩达老师的机器学习课程,收获很多,想把课上学做的笔记结合自己的理解以及找到的一些资料综合起来做一个总结.大家感兴趣也可以自己去看一看吴恩达老师的课,这套课程,被 ...

  7. 深度学习系列之随机梯度下降(SGD)优化算法及可视化

    补充在前:实际上在我使用LSTM为流量基线建模时候,发现有效的激活函数是elu.relu.linear.prelu.leaky_relu.softplus,对应的梯度算法是adam.mom.rmspr ...

  8. 机器学习:SVM、软间隔、随机梯度下降SVM线性算法

    文章目录 SVM目标函数 SVM目标函数推导 函数间隔: 几何间隔: 软间隔.松弛 HingeLoss和软间隔 随机梯度下降算法 线性SVM的算法描述: 线性SVM算法实现: SVM目标函数 SVM目 ...

  9. 机器学习之梯度下降法(GD)、随机梯度下降法(SGD)和随机平均梯度下降法(SAGD)

    目录 基本原理 梯度下降法(Gradient Descent) 随机梯度下降法(Stochastic Gradient Descent,SGD)

  10. 深度学习必备:随机梯度下降(SGD)优化算法及可视化

    补充在前:实际上在我使用LSTM为流量基线建模时候,发现有效的激活函数是elu.relu.linear.prelu.leaky_relu.softplus,对应的梯度算法是adam.mom.rmspr ...

最新文章

  1. 致那些还在创业之路上孤独前行的青年大学生们!
  2. [Node.js]回调函数
  3. Vue.js使用-http请求
  4. 《iVX 高仿美团APP制作移动端完整项目》03 推介信息及推荐商家分析及制作
  5. 学习大数据看门的几本书
  6. java包含关系图_Java——Spring框架完整依赖关系图!再复习了解加工一下吧?
  7. php 5.6 闭包,PHP 闭包那点事儿
  8. vscode php 不进断点,php – Docker和XDebug没有读取断点VSCode
  9. PYTHON 处理JSON文件(新建key值Findex,并将歌手名字转换为大写首字母作为value值)
  10. 在Excel中插入Flash及解决不能自动播放问题
  11. Day6 数据清洗(2)
  12. hook监控限制_**CodeIgniter通过hook的方式实现简单的权限控制
  13. 七日Python之路--第十一天
  14. 大数据入门书籍推荐以及Hive学习资料
  15. linux usb摄像头设备,Linux系统下USB摄像头驱动开发
  16. oracle fnd global,Oracle EBS fnd_request.submit_request 与 Fnd_concurrent.wait_for_ruqest
  17. Kubernetes 概述和搭建 (多节点)
  18. Z05 - 028、分析模型
  19. matlab 数学建模 一阶常微分方程ode45
  20. 交换机的基本配置实验报告

热门文章

  1. 一个拨号上网的批处理文件
  2. 什么是多线程,锁,死锁,怎么避免死锁(转)
  3. 基于Berkeley DB实现的持久化队列
  4. 剑指 offer set 8 树的子结构
  5. WF不是工作流(后续)
  6. c位边上还有什么位_火箭少女海报一反常态,孟美岐取代yamy站C位,吴宣仪在边上...
  7. 数据可视化——ECharts基础
  8. python不好用_Python用不好?看官方中文文档啦
  9. python字典练习_python字典练习
  10. 测试用例编号_如何编写一个规范的测试用例?你应该知道的!