1. 图片生成的核心壁垒不是"好看",而是"准确"
图片生成不在于多炫酷,真实使用场景里更需要的是准确度。比如更改一个字,能否改正确。
Because if we're being honest, image models haven't really struggled with making things look good for a while now. That part is mostly solved. The harder part has been credibility.
为什么改一个字比生成炫酷图片更难?
生成 vs. 编辑,是两种本质上不同的任务。 生成一张炫酷图片时,模型有完全的创作自由,只要整体看起来好看、协调就算成功,评判标准是模糊的、主观的。但改一个字是有标准答案的——要么对,要么错。这把"创作任务"变成了"精准操作任务"。
扩散模型(diffusion models)的工作方式天然不擅长"局部外科手术"。 它们本质上是在学习"什么像什么"的统计规律,非常擅长捕捉高层次的模式——氛围、风格、质感。但改一个字要求它同时做到:语义理解、视觉精准(像素级别的匹配)、上下文保留(不破坏周围的一切)。
2. Diffusion Model 原理精讲
一句话核心:训练时把图片一步步加噪声直到变成纯随机噪声;推理时从随机噪声开始,让神经网络一步步"猜出并去掉噪声",最终还原出图片。
第一步:正向过程(Forward Process)
q(xₜ | xₜ₋₁) = N(xₜ; √(1-βₜ) · xₜ₋₁, βₜ · I) 关键技巧(跳步采样):
xₜ = √(ᾱₜ) · x₀ + √(1 - ᾱₜ) · ε, ε ~ N(0, I) import torch
def forward_sample(x0, t, alphas_cumprod):
sqrt_alpha_bar = alphas_cumprod[t] ** 0.5
sqrt_one_minus = (1 - alphas_cumprod[t]) ** 0.5
eps = torch.randn_like(x0)
xt = sqrt_alpha_bar * x0 + sqrt_one_minus * eps
return xt, eps 第二步:反向过程(Reverse Process)
反向过程就是学习:给你一张加了噪声的图 xₜ 和时间步 t,神经网络 εθ 预测"当时加进去的那个噪声 ε 是什么"。Loss 函数(极其简单):
L = E[ || ε - εθ(xₜ, t) ||² ] 三个关键洞察
- 预测噪声比预测图片更容易。噪声是标准正态分布,结构简单;直接预测图片 x₀ 的话,输出空间太复杂。
- 把生成问题分解成 1000 个小问题。每一步只需去掉一点点噪声,每步的任务都很简单,模型容易学好。
- 时间步 t 是一个条件输入。同一个神经网络处理所有 t,通过 Sinusoidal Embedding 告诉模型"现在噪声有多严重"。
3. 为什么局部编辑难?模型"知道"A 长什么样,为什么还是改不好?
这里有一个关键区分:模型"知道 A 长什么样"有两种完全不同的含义。
- 你理解的"知道":A = 两条斜线加一横,B = 一竖加两个半圆,改 A→B 是一个符号替换操作。这是符号规则。
- 模型的"知道":在训练数据里见过几百万张有 A 的图,学到了"这种像素排列在这种上下文里概率很高"。这是统计模式。
编辑时问题暴露了:你把 A 遮住,周围像素已经固定,而那些固定的周围像素,在统计上最匹配的仍然是 A,不是 B。模型在"我要填 B"和"这个上下文统计上更像 A"之间产生拉扯,结果就变形了。
a16z 未来趋势
数据飞轮的重要性,而且最好是能够随着模型能力 scale,而不是被替代的;AI 帮助人连接;可解释性。
关于 getviktor 的思考
之前是 chat,现在是 agent,未来的方向到底是一个 worker 专精一个方向,还是说一个人专精 n 个方向,比如 getviktor 这样的连接很多 tools 的。