生成模型的基本语言
交互教程
生成器需要从许多可能图像中作出选择。学习网络之前,先区分数值、分布和条件分布。
之前已经能做什么
Section titled “之前已经能做什么”张量是具有形状的数组。B 是样本数,C 是通道数,H、W 是图像高宽。图像批次常用 [B,C,H,W],序列常用 [B,N,D],即 N 个位置、每位置 D 个数。token 可以是整数 ID,也可以是向量。
改变了什么,为什么
Section titled “改变了什么,为什么”latent z 是内部表征。编码器把观测图像 x 映射到 z,解码器把 z 映射回图像或图像分布。先验描述观察 x 之前模型认为哪些 z 可能出现。重建从已有图像出发,生成可以从先验采样出发。
阅读顺序从左到右。点击模块,将它与计算和代码对应。代码为教学伪代码;来源链接提供论文方法或已核查的实现。
观测
输入是数值,不是密度。
x = batch["image"]表征
学习映射改变表征。
z = encoder(x)建模
输出头给出概率或定义密度采样器。
next_z = sample(head(context))逐步理解机制
Section titled “逐步理解机制”调整两个二元概率。若 P(第一个=1)=0.6,P(第二个=1|第一个=1)=0.7,则联合事件概率为 0.42。第一个为 1、第二个为 0 的概率为 0.18,两者之和为 0.6。条件分布本身仍须归一化。
链式法则不假设位置独立,只是选定联合分布的书写顺序。因果模型借助 mask 学习条件分布。连续变量使用密度而非精确取值的概率,密度不必小于 1。
改变参数,查看计算值,再把它与上方的真实模型说明对照。
解析教学模型 · 控件改变的是例子,不是训练后的研究模型。
第二项是条件概率;相乘边缘概率则是在假设独立。
| 量 | 值 |
|---|---|
| P(1,1) = P(1) P(1|1) | 0.420 |
| P(1,0) = P(1) [1 − P(1|1)] | 0.180 |
训练与采样的区别
Section titled “训练与采样的区别”loss 是训练目标,不自动等于图像质量。负对数似然奖励模型分配给观测数据的概率。平方误差仅在指定方差假设下对应高斯似然。按像素求和或平均会改变其尺度。
这些结果不能证明什么
Section titled “这些结果不能证明什么”更小的张量不一定是更好的表征。需要同时考虑位置数、通道数、精度和下游模型成本。256 个整数码与 256 个向量并不包含相同信息。
连续 token 本身就是概率分布吗?
不是,它是一个值。模型还需描述各种可能取值的分布。
来源与后续阅读
Section titled “来源与后续阅读”本页图形与伪代码为教学重绘。论文报告、固定实现观察和解析示例分别标记;未运行研究模型。