【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记

计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记

  • 无监督学习
    • 聚类
      • K-means
    • 降维
      • 线性降维
        • 主成分分析
      • 非线性降维
        • 自编码特征学习
    • 密度估计
      • 贝叶斯决策
  • 生成模型
    • 生成模型的应用
    • 生成模型分类
  • 密度估计
    • 参考
    • 密度估计分类
      • 显示的密度估计
        • PixelRNN and PixelCNN
        • Variational Autoencoders (VAE)
      • 隐式的密度估计
        • GAN
  • PixelRNN and PixelCNN
    • PixelRNN与PixelCNN缺点
  • VAE
    • 参考
    • 如何学习?
    • 编码器
    • 解码器
    • 为什么需要变分自编码器?
      • 自编码器用于内容生成的局限性
    • 变分自编码器
      • 变分自编码器的定义
        • 变分自编码器推导
          • 高斯混合模型
        • VAE两个约束
  • GAN(生成对抗网络)
    • 参考
    • GAN的意义
    • GAN思路
      • 生成器和判别器交替训练
      • 训练速度慢问题
      • 删除D保留G
      • 工作过程
        • 纳什均衡
      • GAN效果
    • GAN原理
      • 生成算法 VS 判别算法
      • 找到样本的数据分布
      • 最大化似然=最小化KL散度
      • maxV(G,D)在做什么?
      • minmaxV(G,D)在做什么?

无监督学习

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第1张图片

聚类

K-means

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第2张图片

降维

线性降维

主成分分析

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第3张图片

非线性降维

自编码特征学习

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第4张图片

密度估计

无监督学习里的一个核心问题一密度估计问题
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第5张图片

贝叶斯决策

生成模型

在这里插入图片描述

生成模型的应用

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第6张图片

生成模型分类

在这里插入图片描述

密度估计

参考

Deep Kernel Density Estimation - 李新春的文章 - 知乎

密度估计分类

显示的密度估计

显示的定义并求解分布 P m o d e l ( x ) P_{model}(x) Pmodel(x),可以定义出密度函数,PixelRNN/CNN 可计算出样本产生的概率真实解,Variational 可计算出样本产生的概率近似解。

PixelRNN and PixelCNN
Variational Autoencoders (VAE)

隐式的密度估计

学习一个模型 P d a t a ( x ) P_{data}(x) Pdata(x),而无需显示的定义它,无法定义出密度函数。

GAN

PixelRNN and PixelCNN

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第7张图片【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第8张图片【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第9张图片【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第10张图片

现在对环境区域(图示那个指定像素点的附近区域)上使用CNN,取待生成像素点周围的像素,把他们传递给CNN用来生成下一个像素值,每一个像素位置都有一个神经网络输出,该输出将会是像素的softmax损失值,我们通过最大化训练样本图像的似然来训练模型,在训练的时候取一张训练图像来执行生成过程,每个像素位置都有正确的标注值,即训练图片在该位置的像素值,该值也是我们希望模型输出的值。

参考:【2017CS231n】第十三讲:生成模型(PixelRNN/PixelCNN,变分自编码器,生成对抗网络)-- 金刚哥葫芦娃

相对于PixelRNN,PixelCNN训练更快(由于上下文信息已知,在训练时可以并行卷积),图像的产生过程还是逐像素的序列生成,依然很慢
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第11张图片

PixelRNN与PixelCNN缺点

1 序列产生,慢
2 根据给定已生成的像素生成后续的像素,生成的图片固定,不可控制生成

VAE

概率密度函数可以写出,但是不能求出精确值,只能近似求解。

PixelRNN和PixelCNN生成固定图像,而VAE可以通过控制噪声来生成各种各样的图像。

参考

半小时理解变分自编码器 - 多头注意力的文章 - 知乎
变分自编码器(VAE)直观理解and 数学推导 - 琦子k

如何学习?

自编码利用重构损失来训练低维的特征表示

z中保留x中重要的特征信息,训练目标是使得x与 x ^ \hat{x} x^差距最小为最优。

编码器用来进行图像分类,无监督特征学习。

编码器

训练完成后,去掉编码器,只保留解码器即可
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第12张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第13张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第14张图片

解码器

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第15张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第16张图片

为什么需要变分自编码器?

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第17张图片

自编码器用于内容生成的局限性

思考一个问题:“自编码器和内容生成之间的联系是什么?”。一旦对自编码器进行了训练,既有编码器又有解码器,但是仍然没有办法来产生任何新内容。乍一看,可能会认为,如果隐空间足够规则(在训练过程中被编码器很好地“组织”了),可以从该隐空间中随机取一个点并将其解码以获得新的内容,就像生成对抗网络中的生成器一样。

可以通过解码从隐空间中随机采样的点来生成新数据。生成数据的质量取决于隐空间的规则性。【在生成任务中我们更关注解码器,生成器其实是训练过程中的辅助,就像GAN里的判别器一样】
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第18张图片
但是,自编码器的隐空间的规则性是一个难点,它取决于初始空间中数据的分布、隐空间的大小和编码器的结构。因此,很难先验地确保编码器以与刚刚描述的生成过程兼容的方式智能地组织隐空间。
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第19张图片
为了说明这一点,再看一遍之前给出的示例,在该示例中,描述了一种强大的编码器和解码器,可以将任何N个初始训练数据放到实轴上(每个数据点都被编码为实值)并可以没有任何损失地解码。在这种情况下,自编码器的高自由度使得可以在没有信息损失的情况下进行编码和解码(尽管隐空间的维数较低)但会导致严重的过拟合,这意味着隐空间的某些点将在解码时给出无意义的内容。尽管这种精挑细选的一维例子太过极端,但可以注意到自编码器的隐空间规则性问题是普遍的,值得特别注意。

进入隐空间的编码数据之间缺乏结构是很正常的。的确,在自编码器的训练任务中,没有什么东西保证能够得到这种结构:自编码器仅以尽可能少的损失为目标进行训练,而不管隐空间如何组织。因此,如果对架构的定义不小心,那么在训练过程中,网络很自然地会利用任何过拟合的可能性来尽可能地完成其任务……除非明确对其进行规范化!

变分自编码器

变分自编码器的定义

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第20张图片为了能够将自编码器的解码器用于生成目的,必须确保隐空间足够规则。获得这种规律性的一种可能方案是在训练过程中引入显式的正规化(regularisation)。因此,变分自编码器可以定义为一种自编码器,其训练经过正规化以避免过度拟合,并确保隐空间具有能够进行数据生成过程的良好属性。

就像标准自编码器一样,变分自编码器是一种由编码器和解码器组成的结构,经过训练以使编码解码后的数据与初始数据之间的重构误差最小。但是,为了引入隐空间的某些正则化,我们对编码-解码过程进行了一些修改:不是将输入编码为隐空间中的单个点,而是将其编码为隐空间中的概率分布。然后对模型进行如下训练:

首先,将输入编码为在隐空间上的分布;
第二,从该分布中采样隐空间中的一个点;
第三,对采样点进行解码并计算出重建误差;
最后,重建误差通过网络反向传播。

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第21张图片

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第22张图片
为什么要取exp?
因为编码器学到的σ可能是负数,但是标准差都是正数。
最小化目标?
最小化目标是使得σ为0,exp(σ)-1+σ为0,使得m2最小,m2 可看做L2正则化。
使得c服从均值为0,方差为1的正态分布,也可以使c服从自定义的均值和方差。
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第23张图片

变分自编码器推导
高斯混合模型

用无限个高斯组件逼近真实分布。
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第24张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第25张图片

为什么VAE只能求出近似解?
因为含有变量Z,穷举不出来所有Z,只能从有x的地方产生Z,所以L不可以最大化。
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第26张图片

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第27张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第28张图片

VAE两个约束

1 $ ||x-\hat{x}||^2 $ 最小
2 对方差的约束
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第29张图片

为什么σ是互不相关的?
如果各个σ是相关的,会很复杂。σ不相关,则协方差矩阵只对角线元素非0,其他位置都为0。
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第30张图片


【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第31张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第32张图片

GAN(生成对抗网络)

参考

看完还不懂生成对抗网络GAN请你咬我|附GAN超全学习材料 - Van Meng的文章 - 知乎
纳什均衡简介 - star chou的文章 - 知乎

GAN的意义

在2014年, GANs由Goodfellow 和蒙特利尔大学的其他研究者提出来,包括Yoshua Bengio,提及GANs, Yann LeCun 称对抗训练为“过去10年机器学习领域最有趣的idea”。

GANs 的潜力巨大,因为它们能去学习模仿任何数据分布,因此,GANs能被教导在任何领域创造类似于我们的世界,比如图像、音乐、演讲、散文。在某种意义上,他们是机器人艺术家,他们的输出令人印象深刻,甚至能够深刻的打动人们。
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第33张图片

GAN思路

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第34张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第35张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第36张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第37张图片

生成器和判别器交替训练

判别器梯度上升
生成器梯度下降
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第38张图片

训练速度慢问题

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第39张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第40张图片

删除D保留G

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第41张图片

工作过程

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第42张图片

纳什均衡

真实分布和生成分布最后达到纳什均衡。

纳什均衡简介 - star chou的文章 - 知乎

GAN效果

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第43张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第44张图片

GAN原理

生成对抗网络(GANs) 是一种包含两个网络的深度神经网络结构,将一个网络与另一个网络相互对立(因此称为“对抗”)。

生成算法 VS 判别算法

为了理解GANs, 你需要知道生成算法是如何工作的,为此,我们最好拿判别算法与之进行对比。

判别算法尝试去区分输入的数据,意思就是,给他们数据实例的特征,他们将预测这些数据所属的标签或者类别。

比如说,给它一封邮件的所有单词,判别算法能够判别这封邮件是否属于垃圾邮件。垃圾邮件是标签之一,从这封邮件中获取的所有单词(词袋)就组成了输入数据的特征。当以数学来表述这个问题,标签被称为y,特征被称为x 。 公式 p(y|x) 的意思是“给定x,y发生的概率”,在这个例子中可以翻译成“给定这些包含的单词,这封邮件是垃圾邮件的概率”。

因此,判别算法是将特征映射为标签,它们只关心这种相关性

一种去理解生成算法的方法是,它们所做的事情恰恰相反,生成算法并非是由给定特定的特征去预测标签,而是尝试由给定的标签去预测特征

生成算法在竭力回答这样一个问题:假定这个邮件是垃圾邮件,那么这些特征应该是什么样的? 判别模型关心y和x的关系,但生成模型关心的是“你怎样得到x”, 它允许你获得p(x|y), “给定y,x发生的概率”,或者给定一个类,特征的概率。(也就是说,生成算法也能被用做一个分类器,但是它不仅仅做的是输入数据的分类)。

其他方式去区分生成和判别的方法可以如下:

  • 判别模型是去学习类之间的界限
  • 生成模型对某一类的分布进行建模

找到样本的数据分布

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第45张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第46张图片

最大化似然=最小化KL散度

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第47张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第48张图片

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第49张图片

div是散度不是距离,因为散度不可交换,而距离可交换。
div(Pg,Pdata)的数学表达式写不出来,无法学习参数,也无法进行优化。但是,可以得到Pg和Pdata的采样数据,可以使用这些样本数据表示成div的度量,从而进行学习和优化。

maxV(G,D)在做什么?

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第50张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第51张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第52张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第53张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第54张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第55张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第56张图片

JSD是JS散度,也可称为JS距离,因为可以交换。

maxV(G,D) 是JS散度的度量。

minmaxV(G,D)在做什么?

【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第57张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第58张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第59张图片【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第60张图片
【计算机视觉】计算机视觉与深度学习-10-生成网络-北邮鲁鹏老师课程笔记_第61张图片

你可能感兴趣的:(#,深度学习,计算机视觉,机器学习)