变分自动编码器的数学基础和代码实现

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、变分自动编码器是什么?

在这里插入图片描述
如图所示,变分自动编码器可以从两个视角进行观察:

  1. 从概率图模型的视角,变分自动编码器是一个概率图,其中 z ∈ R d z\in \mathbb{R}^d zRd是隐变量, x ∈ R D x\in \mathbb{R}^D xRD是观察变量,且存在 D > d D>d D>d。其中,隐变量对观察变量有着决定的作用,从生成的角度来看,首先给定隐变量的分布,然后从分布中抽样得到一条隐变量数据,最后生成一条隐变量的观察数据。
  2. 从机器学习的角度上看,我们实现两种机制:1)编码机制:将观察变量 x ∈ R D x\in \mathbb{R}^D xRD压缩为一个短的隐向量 z ∈ R d z\in \mathbb{R}^d zRd;2)解码机制:将隐向量 z ∈ R d z\in \mathbb{R}^d zRd重新解码为 x ∈ R D x\in \mathbb{R}^D xRD

举个例子,我们将写作风格、写作数字、字体大小等视为潜变量,写出来的手写数字(每个像素点是一个数值)即为观察变量。大家往往忽略的是写作风格、写作数字和字体大小之间,以及生成手写数字的像素点内容往往会有着内在的联系,构成了潜变量和观察变量的联合分布。从概率的角度上看,数值之间的相关关系可以通过联合分布进行反映。

二、数学推导

1. 最大化对数似然

对于变分自动编码器机制的数学推导有助于我们进一步的理解它。

大家需要注意,变分自动编码器的数学推导总体上遵循贝叶斯的概率逻辑,即首先有一个先验的概率分布,然后基于观察数据更新这个先验分布,得到后验分布。
当观测样本 X = x X=x X=x时, p ( x ) p(x) p(x)的概率计算如下:
p ( x ) = ∫ z p ( x , z ) d z = ∫ z p ( x ∣ z ) p ( z ) d z p(x)=\int_zp(x,z)dz=\int_zp(x|z)p(z)dz p(x)=zp(x,z)dz=zp(xz)p(z)dz
由于,我们有着 p ( z ) p(z) p(z)的先验分布,因此可以计算得到 p ( x ) p(x) p(x)的值。其中, p ( x ∣ z ) p(x|z) p(xz)是一个映射关系,其中并不存在变量。当然,如果存在变量可以认为这个变量也被包含在 z z z里面。
在这个模型中,将其中蕴含的未知参数用 θ \theta θ表示。对于样本的集合 D = { ( z ( 1 ) , x ( 1 ) ) , . . . , ( z ( n ) , x ( n ) ) } \mathcal{D}=\{(z^{(1)},x^{(1)}), ... , (z^{(n)},x^{(n)})\} D={(z(1),x(1)),...,(z(n),x(n))},我们的目的是最大化这组数据出现的概率。这基于最大化对数似然函数实现,如下:
L ( θ ; D ) = ∑ i = 1 N l n p θ ( z ( i ) , x ( i ) ) \mathcal{L}(\theta; \mathcal{D})=\sum_{i=1}^Nlnp_\theta(z^{(i)}, x^{(i)}) L(θ;D)=i=1Nlnpθ(z(i),x(i))
由于 z z z是不可见的,因此,将其转化为:
L ( θ ; D ) = ∑ i = 1 N l n p θ ( x ( i ) ) = ∑ i = 1 N l n p θ ∫ z ( x ( i ) , z ) d z \mathcal{L}(\theta; \mathcal{D})=\sum_{i=1}^Nlnp_\theta( x^{(i)})=\sum_{i=1}^Nlnp_\theta\int_z( x^{(i)},z)dz L(θ;D)=i=1Nlnpθ(x(i))=i=1Nlnpθz(x(i),z)dz

2. 如何求解

直接最大化对数似然是艰难的,但是可以找到它的替代品。这个替代品是上面显示的对数似然函数的下界。由于观察数据的概率往往被称之为证据(evidence),因此该函数被成为为证据下界函数(Evidence Lower Bound) ELBO。
接下我们看一下这个下界函数是如何推导出来的,首先定义一个变量为 z z z的概率密度函数 q ϕ ( z ) q_{\phi}(z) qϕ(z) 的概率密度函数,其中, ϕ \phi ϕ 是它的参数。举个例子, q ϕ ( z ) q_{\phi}(z) qϕ(z) 可以是一个高斯分布,其中 ϕ \phi ϕ 包括均值和方差。
这里为了便于推导,我们仅针对于一条的数据 x ( i ) x^{(i)} x(i),对模型进行推导:
L ( θ , x ( i ) ) = l n p θ ( x ( i ) ) = l n ∫ z p θ ( x ( i ) , z ) d z ( 1 ) = l n ∫ z q ϕ ( z ) p θ ( x ( i ) , z ) q ϕ ( z ) d z ( 2 ) = ln ⁡ E z ∼ q ϕ ( z ) p θ ( x ( i ) , z ) q ϕ ( z ) ( 3 ) ≥ E z ∼ q ϕ ( z ) ln ⁡ p θ ( x ( i ) , z ) q ϕ ( z ) ( 4 ) = E z ∼ q ϕ ( z ) [ ln ⁡ ( p θ ( x ( i ) , z ) ) − ln ⁡ ( q ϕ ( z ) ) ] ( 5 ) = L ( θ , q ϕ ) ( 6 ) \begin{array}{l} {\cal L}(\theta ,{x^{(i)}}) = ln{p_\theta }({x^{(i)}}) = ln\int_z { {p_\theta }({x^{(i)}},z)} dz\quad (1)\\ \\ = ln\int_z { {q_\phi }(z)\frac{ { {p_\theta }({x^{(i)}},z)}}{ { {q_\phi }(z)}}} dz\quad \quad\quad\quad\quad\quad\quad\quad\quad (2)\\\\ = \ln\mathbb{E} {_{z \sim {q_\phi }(z)}}\frac{ { {p_\theta }({x^{(i)}},z)}}{ { {q_\phi }(z)}}\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad (3)\\\\ \ge\mathbb{E} {_{z \sim {q_\phi }(z)}}\ln \frac{ { {p_\theta }({x^{(i)}},z)}}{ { {q_\phi }(z)}}\quad (4)\\\\ =\mathbb{E} {_{z \sim {q_\phi }(z)}}[\ln ({p_\theta }({x^{(i)}},z)) - \ln ({q_\phi }(z))]\quad (5)\\\\ = {\cal L}(\theta ,q_\phi)\quad (6) \end{array} L(θ,x(i))=lnpθ(x(i))=lnzpθ(x(i),z)dz(1)=lnzqϕ(z)qϕ(z)pθ(x(i),z)dz(2)=lnEzqϕ(z)qϕ(z)pθ(x(i),z)(3)

  • 14
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值