课程主页:https://deepgenerativemodels.github.io/

课件资料:https://github.com/Subhajit135/CS236_DGM,https://github.com/deepgenerativemodels/notes

视频地址:https://www.bilibili.com/video/av81625948?from=search&seid=4636291486683332935

这里回顾CS236 Lecture 4的课程内容,这一讲介绍了自回归模型以及KL散度。

RNN: Recursive Neural Nets

在模型$p\left(x_{t} | x_{1: t-1} ; \boldsymbol{\alpha}^{t}\right)$中,历史$x_{1:t-1}$会越来越长,这样会产生内存和计算上的负担,解决该问题的思想是对之前的历史进行总结然后递归的更新它,根据该思想产生了RNN,其结构如下:

RNN的优势如下:

  1. 可以处理任意长的序列
  2. 非常通用

劣势如下:

  1. 仍然需要顺序
  2. 序列计算似然值(导致训练速度慢)
  3. 序列化生成
  4. 很难训练(梯度爆炸/消失)

后续介绍几个具体例子。

Pixel RNN (van den Oord, 2016)

按照光栅扫描顺序计算每个像素值,其中每个像素值的概率计算方式如下:

利用该方式可以进行补图片的工作,其效果如下:

PixelCNN

PixelCNN的思想是,利用像素周围的内容,使用卷积结构预测该像素值;注意为了保留自回归性,在卷积时需要使用masked convolution:

Adversarial Attacks and Anomaly detection

机器学习方法容易受到对抗样本的攻击,以下图为例:

利用生成模型的方法可以处理上述问题:

  • 在干净输入上训练生成模型$p(x)$(PixelCNN)
  • 定新的输入$\bar x$,计算$p(\bar x)$
  • 抗性样本计算的$p(x)$应该非常小

这部分以及上一讲的内容都是介绍模型,后续部分介绍如何学习模型。

Maximum Likelihood Learning

KL-divergence

我们的目标是得到一个好的模型,评判好坏自然要有一个度量,在生成模型中,我们的模型是一个概率分布,最常见的度量是KL散度:

其中$p,q$为概率分布。

利用Jason不等式,我们有

所以$\begin{equation}D(p | q) \geq 0\end{equation}$,并且当且仅当$p=q$时等号成立。

Expected log-likelihood

我们的目标是使$\mathbf{D}\left(P_{\text {data }} | P_{\theta}\right)$尽可能小,注意有如下恒等式“

上述第一项和$P_\theta$无关,所以我们只要使第二项尽可能小即可:

但是依然有一个问题,我们无法计算最后一项,因为$P_{\text{data}}$无法知晓,解决该问题的方法是使用经验分布代替,即使用

代替

所以我们的任务是

或者等价的,最大化数据的似然性: