文章目录
如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~
花书+吴恩达深度学习(二七)深度生成模型之玻尔兹曼机及其变体(RBM, DBN, DBM)
花书+吴恩达深度学习(二八)深度生成模型之有向生成网络(VAE, GAN, 自回归网络)
花书+吴恩达深度学习(二九)生成随机网络 GSN
0. 前言
虽然有向图模型在更大的机器学习社群中非常流行,但是在较小的深度学习社群中,直到2013年它们都掩盖在无向模型(如RBM)的光彩之下。
1. sigmoid 信念网络
sigmoid信念网络是一种具有特定条件概率分布的有向图模型的简单形式。
我们可以将sigmoid信念网络视为具有二值向量的状态
s
s
s,状态每个元素都受其祖先影响:
p
(
s
i
)
=
σ
(
∑
j
<
i
W
j
,
i
s
j
+
b
i
)
p(s_i)=\sigma(\sum_{j<i}W_{j,i}s_j+b_i)
p(si)=σ(j<i∑Wj,isj+bi)
原始采样通过一系列多个隐藏层进行,最终生成可见层。
该结构是可见单元上概率分布的通用近似,即在足够深的情况下,可以任意良好的近似二值变量的任何概率分布。
2. 生成器网络
生成器网络(generator network)使用可微函数 g ( z ; θ ( g ) ) g(z;\theta^{(g)}) g(z;θ(g))将潜变量 z z z的样本变换为样本 x x x或样本 x x x上的分布,可微函数通常可以由神经网络表示。
我们可以认为 g g g提供了变量的非线性变化,将 z z z上的分布变换成 x x x上想要的分布。
在某些情况下,使用
g
g
g来定义
x
x
x上的条件分布,例如,最后一层由sigmoid输出组成的生成器网络:
p
(
x
i
=
1
∣
z
)
=
g
(
z
)
i
p(x_i=1\mid z)=g(z)_i
p(xi=1∣z)=g(z)i
当生成器网络在 x x x上定义条件分布时,它不但能生成连续数据,也能生成离散数据。
当生成器网络直接提供采样时,它只能产生连续数据,优点是不再被迫使用条件分布。
3. 变分自编码器 VAE
变分自编码器(variational auto-encoder)是将生成器网络与推断网络匹配。
VAE首先从编码分布 p m o d e l ( z ) p_{model}(z) pmodel(z)中采样 z z z,然后使样本通过生成器网络 g ( z ) g(z) g(z),最后从分布 p m o d e l ( x ; g ( z ) ) = p m o d e l ( x ∣ z ) p_{model}(x;g(z))=p_{model}(x\mid z) pmodel(x;g(z))=pmodel(x∣z)中采样 x x x.
在训练期间,近似推断网络(编码器) g ( z ∣ x ) g(z\mid x) g(z∣x)用于获得 z z z,而 p m o d e l ( x ∣ z ) p_{model}(x\mid z) pmodel(x∣z)视为解码器网络。
VAE关键思想是,可以通过最大化与数据点
x
x
x相关联的变分下界来训练:
L
(
q
)
=
E
z
∼
q
(
z
∣
x
)
log
p
m
o
d
e
l
(
z
,
x
)
+
H
(
q
(
z
∣
x
)
)
=
E
z
∼
q
(
z
∣
x
)
log
p
m
o
d
e
l
(
x
∣
z
)
−
D
K
L
(
q
(
z
∣
x
)
∣
∣
p
m
o
d
e
l
(
z
)
)
⩽
log
p
m
o
d
e
l
(
x
)
\begin{aligned} L(q)&=\mathbb{E}_{z\sim q(z\mid x)}\log p_{model}(z,x)+H(q(z\mid x))\\ &=\mathbb{E}_{z\sim q(z\mid x)}\log p_{model}(x\mid z)-D_{KL}(q(z\mid x)\left|\right|p_{model}(z))\\ &\leqslant \log p_{model}(x) \end{aligned}
L(q)=Ez∼q(z∣x)logpmodel(z,x)+H(q(z∣x))=Ez∼q(z∣x)logpmodel(x∣z)−DKL(q(z∣x)∣∣pmodel(z))⩽logpmodel(x)
变分推断和学习的传统方法是通过优化算法推断 q q q,通常是迭代不动点方程。
只要 z z z是连续变量,我们就可以通过从 q ( z ∣ x ) = q ( z ; f ( x ; θ ) ) q(z\mid x)=q(z;f(x;\theta)) q(z∣x)=q(z;f(x;θ))中采样 z z z的样本反向传播,以获得相对于 θ \theta θ的梯度。
VAE的优点是:
- VAE被定义为任意计算图,这使得能适用于更广泛的概率模型族
- VAE还具有增加模型对数似然边界的优点
VAE的缺点是:
- 它仅针对一个问题学习推断网络
- 从在图像上训练的VAE采样的样本往往有些模糊
- 倾向于仅适用 z z z维度中的小子集
VAE非常好的特性是,同时训练参数编码器和生成网络的组合迫使模型学习一个编码器可以捕获的可预测的坐标系。
4. 生成式对抗网络 GAN
生成式对抗网络(generative adversarial network)是将生成器网络与判别器网络配对。
GAN基于博弈论场景,其中生成器网络必须与对手竞争。生成器网络直接产生样本 x = g ( z ; θ ( g ) ) x=g(z;\theta^{(g)}) x=g(z;θ(g)),判别器网络试图区分从训练数据抽取的样本和从生成器抽取的样本。判别器发出由 d ( x ; θ ( d ) ) d(x;\theta^{(d)}) d(x;θ(d))给出的概率值,指示 x x x是真实训练样本而不是从模型抽取的伪造样本的概率。
形式化表示GAN的简单方式是零和游戏,
v
(
θ
(
g
)
,
θ
(
d
)
)
v(\theta^{(g)},\theta^{(d)})
v(θ(g),θ(d))确定判别器的收益,
−
v
(
θ
(
g
)
,
θ
(
d
)
)
-v(\theta^{(g)},\theta^{(d)})
−v(θ(g),θ(d))确定生成器的收益,学习期间,每个玩家最大化自己的收益:
g
∗
=
arg
min
g
max
d
v
(
g
,
d
)
v
(
θ
(
g
)
,
θ
(
d
)
)
=
E
x
∼
p
d
a
t
a
log
d
(
x
)
+
E
x
∼
p
m
o
d
e
l
log
(
1
−
d
(
x
)
)
g^*=\arg \min_g \max_d v(g,d)\\ v(\theta^{(g)},\theta^{(d)})=\mathbb{E}_{x\sim p_{data}}\log d(x)+\mathbb{E}_{x\sim p_{model}}\log(1-d(x))
g∗=arggmindmaxv(g,d)v(θ(g),θ(d))=Ex∼pdatalogd(x)+Ex∼pmodellog(1−d(x))
这驱使判别器试图学习将样本正确地分类为真的或者伪造的,同时生成器试图欺骗分类器以让其相信样本都是真实的。
在收敛时,生成器样本与实际数据不可区分,并且判别器处处都输出 1 2 \frac{1}{2} 21,就可以丢弃判别器。
在实践中,由神经网络表示的 g 和 d g和d g和d以及 max d v ( g , d ) \max_d v(g,d) maxdv(g,d)不凸时,GAN的学习可能是困难的。
5. 生成矩匹配网络
生成矩匹配网络(generative moment matching network)不需要将生成器网络与任何网络匹配。
生成矩匹配网络使用矩匹配的技术训练。
矩匹配思想是:令模型生成的样本的许多统计量尽可能与训练集中的样本相似。
矩是对随机变量不同幂的期望,例如第一矩是均值,第二矩是平方的均值。
6. 自回归网络
自回归网络(auto-regressive network)是没有潜在随机变量的有向概率模型,其中条件概率分布由神经网络表示。
图结构是完全图,可通过链式法则分解联合概率分布,这样的模型称为完全可见的贝叶斯网络 FVBN(fully-visible Bayes networks)。
6.1 线性自回归网络
线性自回归网络(linear auto-regressive network)是没有隐藏单元、没有参数或特征共享的形式。
每个
P
(
x
i
∣
x
i
−
1
,
.
.
.
,
x
1
)
P(x_i\mid x_{i-1},...,x_1)
P(xi∣xi−1,...,x1)被参数化为线性模型,如下图所示(图源:深度学习):
6.2 神经自回归网络
神经自回归网络(neural auto-regressive network)采用不同的条件分布参数,可以根据需要随意增加容量,允许近似任意联合分布。
具有以下优点:
- 通过具有 ( i − 1 ) × k (i-1)\times k (i−1)×k个输入和 k k k个输出的神经网络参数化每个 P P P,让我们不需要指数级参数的情况下就能估计条件概率
- 不需要对预测每个 x i x_i xi使用不同的神经网络,意味着预测 x i x_i xi所计算的隐藏层特征可以重新用于预测 x i + k x_{i+k} xi+k
如下图所示(图源:深度学习):
6.3 神经自回归密度估计器 NADE
神经自回归密度估计器(neural auto-regressive density estimator)采用了不同组的隐藏单元参数共享的形式。
从第
i
i
i个输入
x
i
x_i
xi到第
j
j
j组隐藏单元的第
k
k
k个元素
h
k
(
j
)
h_k^{(j)}
hk(j)的权重是组内共享的:
W
j
,
k
,
i
′
=
W
k
,
i
W'_{j,k,i}=W_{k,i}
Wj,k,i′=Wk,i
如下图所示(图源:深度学习):
如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~