本是neural network的内容,但偏偏有个variational打头,那就聊聊。涉及的内容可能比较杂,但终归会 end with VAE.

各个概念的详细解释请点击推荐的链接,本文只是重在理清它们之间的婆媳关系。

无意中打开了:中国科大iGEM项目报告,感慨颇多,尤其是时光,这其中也包含了写这系列文字的目的。

在技术上不得不走了不少弯路,每当无意间回首,对于那些”没机会“走弯路的同学们,是羡慕的;对于不懂得珍惜机会的同学们,也是充满惋惜。

希望,透过这些文字,能唤醒一些东西,助你找到正确的属于你自身的方向。信息已经很多,找到一条适合你的最佳路径便是目的,也是我对你的祝福。


一段文字,作为前言:

From: Part V  与AutoEncoder的关系

准确来说,AutoEncoder是RBM的简化衍生物。RBM是一个概率生成模型,而AutoEncoder只是一个普通的模型。

神经网络的本质是训练岀能够模拟输入的W,这样,在测试的时候,遇到近似的输入,W能够做出漂亮的响应。

RBM选择概率,是因为有概率论的公式支持。这样优化网络,能够达到上述目标。

只是原始目标不好优化,Hinton才提出对比训练的方法,即绕了个弯子的选择重构。

能量函数使得W朝更大概率方向优化。但是,正如线性回归有最小二乘法和高斯分布两种解释一样。

其实,W的训练大可不必拘泥于概率,AutoEncoder则绕过了这点,直接选择了加权重构,所以cost函数简单。

可以这么说,重构的数学理论基础就是RBM的原始目标函数。而概率重构启发了直接重构。两者近似等价。

从马尔可夫链上看,AutoEncoder可看作是链长为1的特殊形式,即一次重构,而RBM是多次重构。

能使用直接重构的另一个原因是,Hinton在实验中发现,梯度法的一次重构效果出奇好。

所以AutoEncoder中摒弃了麻烦的Gibbs采样过程。

Restricted Boltzmann Machine

Link: 受限玻尔兹曼机(Restricted Boltzmann Machine, RBM) 简介

Link: Introduction to Restricted Boltzmann Machines【一颗永流传】

链接中提出了面临的问题:穷举 2|v|+|h|种组合计算联合概率不太可能

以及解决的方法:Contrastive Divergence算法 (链接中的算法准确的说应该是Quick Contrastive Divergence)

其实,这就是一个根据马尔科夫原理的sampling逼近原分布的技术。

第二个链接有必要一读,作者不错,关键是有例子!

接下来的问题自然是:

  • W的训练为何不必拘泥于概率?
  • 如何绕过了这点而选择加权重构?

AutoEncoder

Link: 花式解释AutoEncoder与VAE

Evidence1: 自编码器的网络结构十分类似于ppca,ppca的特殊情况之一是pca。

Evidence2: 实际上,自编码网络学习出的低维数据表示十分类似于PCA(主成分分析)学习出的主成分。

读罢两条,是否有一点小触动。

pca + gmm算是一个组合,前者找到主要特征,后者对特征进行分类。

现在找特征的角色可以被”能生成自己“的RBM或者是autoencoder来替代。

自然地引出了一种有意思的训练nn的想法:Greedy Layerwise Pretraining

    • An autoencoder with one hidden layer is trained to reconstruct the inputs. The first layer (encoder) of this network becomes the first layer of the deep network.
    • Each subsequent layer is then trained to reconstruct the previous layer.
    • A final classification layer is then added to the resulting deep network, and the whole thing is trained by backpropagation.

扩展一下思维,隐藏层的神经元个数大于input,也就不再是压缩,而是升维,可能会因为一些无足轻重的特征而导致过拟合。为了解决这个问题:

sparse autoencoders 【L1】
autoencoders with dropout at hidden layer(s)
contractive autoencoders 【L2】
denoising autoencoders

Weight decay:【下图】

One popular choice is to penalize the sum of the absolute values of the activations in the hidden layer.

也就是L1的形式,具有局部权值趋于零的特性,故这里使用了sparse这个词。

这是L2的形式,并没有什么新奇的玩意,但名字一变,总是给人以高大上之感。

denoising就是为增加鲁棒性:add noise to the inputs, but train the network to recover the original input。

Variational AutoEncoders

参考花书20.10

以上从压缩的角度聊了下自编码器,现在以Generative Models的角度再瞧上一瞧。

Generative models can be:
◮ explicit (Variational Autoencoders)
◮ implicit (Generative Adversarial Networks)

这里不提GAN,不是篇幅问题,而是当前本人实践经验不够。但有一点要说的是,这个"交叉学科"又引入了Game Theory你懂得。

Ref: https://yq.aliyun.com/articles/68410

简要

概率解释通过假设每个参数的概率分布来降低网络中每个参数的单个值的刚性约束。

例如,如果在经典神经网络中计算权重w_i=0.7,在概率版本中,计算均值大约为u_i = 0.7和方差为v_i = 0.1的高斯分布,即w_i =N(0.7,0.1)。

这个假设将输入,隐藏表示以及神经网络的输出转换为概率随机变量。这类网络被称为贝叶斯神经网络或BNN。

学习的目标是找到上述分布的参数。这种学习被称为“推理”,贝叶斯网络中的推论对应于计算潜在变量相对于数据的条件概率。

这类模型引入了变分逼近推理方法,将该计算问题转换为优化问题,可以使用随机梯度下降法来解决。

【读到这里,你应该明白了本文的内容表象是NN,但其实很”贝叶斯“】

  • 在经典版的神经网络中,可以用均方误差(MSE)简单测量网络输出与期望的目标值之间的误差。
  • 但在处理分布时,MSE不再是一个好的误差度量,因此用KL­散度测量两个分布之间的差异。

事实证明变分近似和真实后验分布之间的距离不是很容易被最小化。它包括两个主要部分。因此,可以最大化较小的项(ELBO)。

从自动编码器的角度来看,ELBO函数可以看作是输入的重建代价与正则化项的和。

在最大化ELBO之后,数据的下限接近数据分布,则距离接近零,间接地最小化了误差距离。

最大化下界的算法与梯度下降的完全相反。沿着梯度的正方向达到最大值,这整个算法被称为“自动编码变分贝叶斯”。

是不是像极了本系列之前已提及的公式:[Bayesian] “我是bayesian我怕谁”系列 - Variational Inference

详谈Ref: Gapeng - vae

  -- 撸猫小组组长,写得挺好

PGM

发现了没,又成了变分推断的问题,那么之前提及的套路就是:

直接优化是不可行的,因此一般转而优化它的下界

对应的,优化对数似然函数转化为优化。【这里就是变分i.i.d假设】

其实就是:不优化log-likelihood,而是转为”如何把下界变得更高点儿“。

Figure, training: http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture13.pdf

如果菜鸡仔细看了以上提及过的Quick Contrastive Divergence过程,那么会发现这类训练法都是一个Gibbs samlping的套路。

然后,这东西怎么跟ppca这么像!?如果你这么想,便是”上道“了,恭喜。

你若是跟着本系列统计学习的思维走,生成模型的思维本就是自然而然的路子;

若是走nn的路子,比如231n的思路,讲到这里时能感到课堂上有人思维短路。因为这里突然融入概率,很多菜鸡开始不知所措;但你若本是Bayesian,那么讲到这里时,理解就成了自然而然的过程,也是本系列文字的愿景之一。

当然,VAE便自然而然地引出了GAN,这是常见的”认知套路“,但本系列是统计学习,将带领bayesian菜鸡们逐渐向Gaussian Process靠拢,而GAN将在未来其他系列唠唠。

到此,bayes就这样渐渐地牵扯向了neural network,你感受到了么?

[Bayesian] “我是bayesian我怕谁”系列 - Variational Autoencoders的更多相关文章

  1. [Bayesian] “我是bayesian我怕谁”系列 - Gaussian Process

    科班出身,贝叶斯护体,正本清源,故拿”九阳神功“自比,而非邪气十足的”九阴真经“: 现在看来,此前的八层功力都为这第九层作基础: 本系列第九篇,助/祝你早日hold住神功第九重,加入血统纯正的人工智能 ...

  2. [Bayesian] “我是bayesian我怕谁”系列 - Variational Inference

    涉及的领域可能有些生僻,骗不了大家点赞.但毕竟是人工智能的主流技术,在园子却成了非主流. 不可否认的是:乃值钱的技术,提高身价的技术,改变世界观的技术. 关于变分,通常的课本思路是: GMM --&g ...

  3. [Bayesian] “我是bayesian我怕谁”系列 - Exact Inferences

    要整理这部分内容,一开始我是拒绝的.欣赏贝叶斯的人本就不多,这部分过后恐怕就要成为“从入门到放弃”系列. 但,这部分是基础,不管是Professor Daphne Koller,还是统计学习经典,都有 ...

  4. [Bayesian] “我是bayesian我怕谁”系列 - Exact Inference

    要整理这部分内容,一开始我是拒绝的.欣赏贝叶斯的人本就不多,这部分过后恐怕就要成为“从入门到放弃”系列. 但,这部分是基础,不管是Professor Daphne Koller,还是统计学习经典,都有 ...

  5. [Bayesian] “我是bayesian我怕谁”系列 - Naive Bayes+prior

    先明确一些潜规则: 机器学习是个collection or set of models,一切实践性强的模型都会被归纳到这个领域,没有严格的定义,’有用‘可能就是唯一的共性. 机器学习大概分为三个领域: ...

  6. [Bayesian] “我是bayesian我怕谁”系列 - Naive Bayes with Prior

    先明确一些潜规则: 机器学习是个collection or set of models,一切实践性强的模型都会被归纳到这个领域,没有严格的定义,’有用‘可能就是唯一的共性. 机器学习大概分为三个领域: ...

  7. [Bayesian] “我是bayesian我怕谁”系列 - Continuous Latent Variables

    打开prml and mlapp发现这部分目录编排有点小不同,但神奇的是章节序号竟然都为“十二”. prml:pca --> ppca --> fa mlapp:fa --> pca ...

  8. [Bayesian] “我是bayesian我怕谁”系列 - Markov and Hidden Markov Models

    循序渐进的学习步骤是: Markov Chain --> Hidden Markov Chain --> Kalman Filter --> Particle Filter Mark ...

  9. [Bayesian] “我是bayesian我怕谁”系列 - Boltzmann Distribution

    使用Boltzmann distribution还是Gibbs distribution作为题目纠结了一阵子,选择前者可能只是因为听起来“高大上”一些.本章将会聊一些关于信息.能量这方面的东西,体会“ ...

随机推荐

  1. 经典算法研究系列:二、Dijkstra 算法初探

    July   二零一一年一月 本文主要参考:算法导论 第二版.维基百科. 一.Dijkstra 算法的介绍 Dijkstra 算法,又叫迪科斯彻算法(Dijkstra),算法解决的是有向图中单个源点到 ...

  2. mysql客户端(Navicat)远程登录操作遇到问题1142

    遇到此问题的原因是:用户user对数据库test 无权限操作. 解决方法:mysql> grant all privileges on test.* to user@'localhost' id ...

  3. Prometheus : 入门

    Prometheus 是一个开源的监控系统.支持灵活的查询语言(PromQL),采用 http 协议的 pull 模式拉取数据等特点使 Prometheus 即简单易懂又功能强大. Prometheu ...

  4. MVC调用部分视图PartialView

    using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Demo2 ...

  5. ionic构建APP--简单操作实现APP制作

    ionic--基于AngularJS的app框架 1安装ionic .HBuilder创建APP项目,导入ionic的css,js(fonts)文件. .导入ionic.css和ionic.bundl ...

  6. MyBatis开发中解决返回字段不全的问题

    场景重现: mybatis 在查询的时候,可以返回Map,但是一旦这个字段为空(null)的时候,map里就没有了.我用的是mysql数据库,除了在查询语句上做ifnull判断给它默认值外,有没的别的 ...

  7. 【原创】自用css reset

    自己工作中常用的reset,和一些设置,实际用时会根据网站页面进行增删. /* Common style */html{ overflow-y:scroll; overflow-x:auto;}bod ...

  8. SAP文件的上传下载 SMW0,二进制文件

    TCODE: SMW0 选择:二进制数据 输入包名和对象名 新建 维护文件类型 文件参数信息 下载: DATA: LS_WWWDATA_ITEM LIKE WWWDATATAB, " LV_ ...

  9. ABAP 在屏幕上显示图片

    1.se78 上传 或 预览图片 图片预览 2.程序代码 定义各变量 DATA: H_PICTURE TYPE REF TO CL_GUI_PICTURE, H_PIC_CONTAINER TYPE ...

  10. win10 uwp 获得焦点改变

    本文讲的是当我们应用失去焦点时,我们获得事件,当我们应用获得焦点,同样获得事件.同时,在应用不可以见时,我们也可以获得. 上面一张图,开始是应用启动,获得焦点,应用显示.然后我们打开另一个应用,切换, ...