斯坦福-CS236 Lecture 8 GANs PPT标注

-
流模型的应用

- 它将
拆成了多个函数相乘,对应神经网络的每一层,因为经过了多层函数转换,因此最后表现出来就是多个对应雅可比行列式相乘;
- 它将
-
面临的挑战

- 主要是雅可比行列式的计算太耗时,需要特殊变换比如变为上三角矩阵,方便计算行列式;
-
怎么变为三角矩阵

-
让每个输出分量 xi=fi(z) 只依赖于前 i 个输入分量 z≤i=(z1,z2,...,zi),可以理解为当前值只与过去相关,屏蔽未来信息,是不是很熟悉,就是掩码自注意力机制里面提到的,这样你能得到一个下三角矩阵,相反如果让输出分量 xi=fi(z) 只依赖于后面 的输入,你就能得到一个上三角矩阵;
-
-
几种经典的流模型算法

-
NICE算法

-
将随机变量拆成无关的两部分,求雅可比行列式时,一部分对另一部求导时可以为0,就可以形成三角矩阵,方便求行列式;
-
后部分的zd+1通过叠加m求x,反过来xd+1可以减去m求z,满足其可逆性;
-
m是输入了一个d维参数,输出n-d维的神经网络
-
统一说一下,z是被默认设置为高维高斯随机变量,因为高斯分布的可逆、可计算等特性默认用分布都用高维高斯去做近似,因此后面的算法默认都用的多维高斯分布(重点)
-
-
NICE最后的重缩放层

-
NICE前面层都是加性计算,相当于调整其均值,缺少了乘性变换,就是对方差的调整,补足了其表达能力;
-
-
Real-NVP算法

-
基于NICE算法,Real-NVP算法的d+1部分不仅使用了加法,还用了缩放的乘法;
-
-
插值检验

-
如何插值的?分别将A,B图输入模型的得到Za和Zb,再用zinterp=(1−α)⋅Za+α⋅Zb,其中α 是一个 0~1 之间的数,再将zinterp反向输入到模型得到Za和Zb的中间状态,由此可以看到Za到Zb隐变量是连续的;
-
上图中使用了二维球面插值,z1、z2、z3、z4分别是4幅图中每幅图的左上、右上、左下和右下4个图,当 ϕ′ 从 0→π/2 时,你可以观察一下z是怎么变化的;
-
-
NVP机制应用到自回归模型后

-
xn都由zn乘法缩放和加法偏移计算得出,对比NVP,它是串行了,x1得出x2,x2得出x3,而NVP是并行直接得整个x;
-
-
MAF z->x

-
慢,后面的x依赖前面x,比如采样x2时,μ2是依赖x1的,所以要先采样出x1才能算x2,因此是串行的;
-
-
MAF x->z

-
快,x是全的,μ可以并行计算,训练时,x作为输入,可以并行算出μ等参数,那就能并行算出z;
-
-
IAF

-
与MAF相反,z->x方向快,z完整,可并行计算所有的μ,很快没区别在于μ等参数依赖的是z,而不是x;
-
-
PWN

-
一开始老师的模型是已经训练好的MAF,但是不用来生成,因为慢,然后我们要去训练一个学生IAF,最后丢掉老师模型,用这个学生的模型去生成;
-
一训练学生时,一开始是z是标准正态分布,用z生成x(IAF很快),教师模型用这个x输出z,再用z计算t(x)和s(x),得到KL散度,用梯度下降或者反向传输调整学生模型的参数,最后训练出一个IAF的模型用来生成x(IAF生成快)
-

,要更详细就看论文吧。
-
-
MintNet

-
使用卷积,通过一些掩码等方式可以定义可逆的卷积和,但是会丢失一些信息,让详细看论文去吧。
-
-
高斯流

-
你可以换个角度理解,这种模型其实就是旨在样本数据通过变换可以转换为标准高斯分布。
-
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)