跳转到内容
English

生成模型的基本语言

交互教程

生成器需要从许多可能图像中作出选择。学习网络之前,先区分数值、分布和条件分布。

张量是具有形状的数组。B 是样本数,C 是通道数,H、W 是图像高宽。图像批次常用 [B,C,H,W],序列常用 [B,N,D],即 N 个位置、每位置 D 个数。token 可以是整数 ID,也可以是向量。

latent z 是内部表征。编码器把观测图像 x 映射到 z,解码器把 z 映射回图像或图像分布。先验描述观察 x 之前模型认为哪些 z 可能出现。重建从已有图像出发,生成可以从先验采样出发。

阅读顺序从左到右。点击模块,将它与计算和代码对应。代码为教学伪代码;来源链接提供论文方法或已核查的实现。

观测

输入是数值,不是密度。

x = batch["image"]

表征

学习映射改变表征。

z = encoder(x)

建模

输出头给出概率或定义密度采样器。

next_z = sample(head(context))

查看固定版本来源

p(z1,…,zN)=∏i=1Np(zi∣z<i)p(z_1,\ldots,z_N)=\prod_{i=1}^{N}p(z_i\mid z_{<i})

调整两个二元概率。若 P(第一个=1)=0.6,P(第二个=1|第一个=1)=0.7,则联合事件概率为 0.42。第一个为 1、第二个为 0 的概率为 0.18,两者之和为 0.6。条件分布本身仍须归一化。

链式法则不假设位置独立,只是选定联合分布的书写顺序。因果模型借助 mask 学习条件分布。连续变量使用密度而非精确取值的概率,密度不必小于 1。

改变参数,查看计算值,再把它与上方的真实模型说明对照。

解析教学模型 · 控件改变的是例子,不是训练后的研究模型。

P(first = 1)P(first = 1, second = 1)

第二项是条件概率;相乘边缘概率则是在假设独立。

当前例子的计算值
量值
P(1,1) = P(1) P(1|1)0.420
P(1,0) = P(1) [1 − P(1|1)]0.180

loss 是训练目标,不自动等于图像质量。负对数似然奖励模型分配给观测数据的概率。平方误差仅在指定方差假设下对应高斯似然。按像素求和或平均会改变其尺度。

更小的张量不一定是更好的表征。需要同时考虑位置数、通道数、精度和下游模型成本。256 个整数码与 256 个向量并不包含相同信息。

连续 token 本身就是概率分布吗?

不是,它是一个值。模型还需描述各种可能取值的分布。

返回学习地图

本页图形与伪代码为教学重绘。论文报告、固定实现观察和解析示例分别标记;未运行研究模型。