深度生成模型
- 什么是生成式模型
- 蒙特卡洛方法
- 变分推断Variational Inference
- 变分自编码器VAE
- 生成对抗网络Generative Adversarial Network
- Diffusion 扩散模型
- VAE和GAN 代码实现
什么是生成式模型
判别式和生成式模型
判别式:CNN/RNN/transformer;生成式:AE/VAE/GAN
判别式模型学习类别边界,生成式学习数据分布
生成式模型以判别式模型为基础,通过一种组合得到的更复杂的模型
蒙特卡洛方法
用于求解复杂数学问题
或者实际生活中模拟概率事件
简单说就是求解概率分布问题的近似方法
目的就是估计数据的概率分布
采样 sampling
采样可以减小积分等计算量,便于各种统计推断和模型优化
蒙特卡洛采样:从概率分布中抽出样本,从而得到分布的近似
Importance Sampling
用于估计难以采样的分布的期望值
用易于采样的参考分布生成样本,然后用权重系数调整估计
马尔科夫链蒙特卡洛方法
Markov Chain Monte Carlo (MCMC)
生成系列状态来代表概率分布,不需要在整个分布空间中均匀采样
变分推断Variational Inference
参数估计
MLE:最大似然估计
最大后验估计MAP:
贝叶斯估计:直接推断后验概率分布
问题定义
Evidence通常是不可积的多重积分,导致后验分布无解析解
MCMC算法计算较慢,变分推断更适合求解大规模近似推断
算法思路
KL散度
用于衡量两个分布之间的距离
6个常见熵:信息熵、交叉熵、相对熵、联合熵、条件熵、互信息
实现对后验分布的估计
与MCMC方法对比
计算效率方面
- MCMC:时间复杂度高,不易扩展到大规模数据集和高维数据集上·
- 变分推断VI:计算速度快,迭代次数少, 可以处理大规模数据集和高维数据集
准确度方面 - MCMC: 无需对后验分布进行近似,更准确
- VI:需要对后验分布形式进行假设,只能得到一个近似值
MCMC适合小规模数据集
变分推断适合大规模和高维度数据集
变分自编码器VAE
降维思想
减少描述数据的特征数量的过程,例如主成分分析(PCA)方法
编码器-解码器结构也可以实现降维思想
压缩表示可以捕捉原始数据的重要特征
同时减少噪声和冗余信息
自编码器(Autoencoder
输入层和输出层具有相同的大小,隐藏层的大小通常小于二者
最小化输入数据和解码数据之间的重构误差来学习参数
确保只有重要的数据能够通过并且重建
自编码器(Autoencoder)
编码器和解码器都是深度非线性时,自动编码器降维能力更强
编解码器有足够的自由度时,甚至可以将任何初始维度减少到1
自编码器(Autoencoder)
要尽量将数据主要的结构信息保留在简化的表示中
仔细控制和调整潜空间的大小和自编码器的“深度
器的局限自编码
自编码器训练,以最小损失为目标,而不管潜空间如何组织
受制于严重的过拟合问题,:很难直接用于内容生成任务
VAE基本思想
引入正则化来避免过拟合,输入编码不再是点,而是概率分布
概率生成模型
正则化:求MLE最大似然改求最大后验估计MAP
积分 形式 无解析解
怎么求?
所以引入变分
变分推理
设置一个参数化分布族,并在该族中寻找目标分布的最佳近似
通过最小化KL散度用q逼近p(真实的概率分布)
变分推理
损失函数:尽量无损重构+正则项
正则项使浅空间规则化
潜在空间可视化
鼓励隐变量分布接近高斯先验,但必要时偏离以描述输入特征
AE 空的地方容易生成无意义数据
只有KL正则项 无法区分
神经网络实现
编码器内共享结构和权重
协方差矩阵简化为对角阵
使用重参数化技巧
生成对抗网络Generative Adversarial Network
发展历史和重要意义
对抗学习:生成器+判别器
提供了全新的数据生成方法
推动了深度学习的发展
激发了对于机器创造力的思考
对抗生成思想
通过对抗双方的不断改进,达到一个最优解
生成器生成数据,判别器判别真伪
举一个例子
假设有一个画家和一个鉴赏家,画家要画出逼真画作,鉴赏家要能分辨真假,但是画家并不知道如何让画更逼真,而鉴赏家也没有固定的准则来分辨画的真伪,于是开始对抗学习。
画家先开始画画,鉴赏家不断给出评判看是不是真的, 画家会根据反馈不断改进,鉴赏家也会根据画家画的提高鉴赏标准,来进一步提升画的准不准,通过对抗学习,直到画的足够真实,鉴赏家也能判断真伪
模型结构
生成器输入随机噪声向量,生成一幅手写数字的合成图像
判别器输入包括训练集图像和生成器合成数据,输出为真假判断
判别器
标准分类器:尝试区分真实数据和生成器创建的数据
训练数据:真实的数据集做正例,虚假数据做负例
生成器
生成器的输入是随机噪声,损失由由判别器计算决定
损失函数训练期间,判别器是固定的
训练流程
交替训练:判别器→生成器→判别器→.
生成器不断改进,判别器性能开始变差
训练流程
黑虚线:真实分布;
蓝虚线:判别器分布;
绿实线:生成分布
损失函数
判别器固定的情况下,训练生成器
无论VAE还是GAN 基本结构都是先前学过的网络,只是把他们重新组合起来,协同训练产生数据生成的效果而已
Diffusion 扩散模型
图像生成上优于GAN模型
模型对比:
- VAE和GAN潜变量维度降低
- Diffusion中隐变量和原图像尺寸大小一样
- Diffusion有两个传播过程:前向传播噪声化+后向传播复原图片
VAE和GAN都可以看成先把一个高维的图像先降维 得到隐变量Z,然后再上采样扩展维度得到新的输出x‘
diffusion基本思想
马尔科夫链的平稳性:从任何状态开始,最终会达到稳定状态
扩散模型:马尔可夫链每步的转移概率,本质上都是在加噪声
相当于2种溶液均匀混合
前向过程
通过T次传播不断添加高斯噪声,越来越接近纯噪声
重参数(reparameterization)
潜变量分布中采样,会导致弟度无法传递,用重参数化解决
基本思想是把随机变量表示为确定性函数和独立噪声项的和
前向传播
逆向过程
逆向过程
利用贝叶斯公式,巧妙地将逆向过程全部变回了前向
简单说,扩散模型就是先假设前向传播还有逆向传播都是高斯的,然后 沿着时间轴倒腾出均值和方差的迭代公式 。
损失函数
定义交叉熵损失然后用变分推断
训练流程
通过对随机噪声序列的逐步演化来学习分布的参数
扩散原理,其实就i是高斯噪声不断向前扩散,然后逆向去噪
损失函数推导最终目的不同时刻高斯噪声间的均方误差
VAE和GAN 代码实现