一、老墨的怪法子

散墨轩的主人是镇上最怪的画师。

别人作画,先研墨、后铺纸、再挥毫。老墨反着来。他先把一整砚浓墨泼在宣纸上,像乌云压境,又像暴雨洗过泥地——纸上只剩一团漆黑,什么也看不出来。

"墨翁,"隔壁的学徒青檀忍不住问,"您这画的是夜里的乌鸦飞进煤窑吗?"

老墨不答。他拿起一支细笔,蘸了清水,在墨团上轻轻点了几下。清水在墨色里晕开,洇出一小片灰白。然后又一笔,再一笔。每一下都极轻,像是怕碰碎什么。

半个时辰后,青檀张大了嘴。

那团墨里,浮出了一棵老松。枝干虬曲,针叶分明,甚至能看出风吹过的方向。不是"画"上去的——是从墨里洗出来的。

"您是怎么从一团墨里找到那棵松的?"

老墨放下笔,望着墙上的松。"不是我找到的。是墨里有无数棵松——我只是把不是松的部分,一层一层洗掉了。"

二、先毁掉,再找回

青檀拜了师,才知道老墨的方法有多古怪。

学画的第一年,青檀以为会从勾线临摹开始。没想到老墨让他做的事完全是另一件。

"每天来看我毁画。"

老墨有一屋子旧画。每天早上,他抽出一幅山水挂在窗前,开始"糟蹋"它——先洒一层薄墨点,越洒越密。再用手掌抹开,墨色吃进纸里。山模糊了,水浑浊了,云和天搅在一起。到黄昏时,一幅好端端的画成了一张灰扑扑的废纸。

"你记住了什么?"老墨问。

"记住了它怎么坏掉的。"

"记住每一步。"老墨说,"第一刻钟,远处的山脊线先沉进墨里。第二刻钟,松树的针叶只剩轮廓。到最后一刻钟,连近处的人物都看不清了。你要在脑子里烙下整个过程——因为作画的时候,你要倒着走一遍。"

青檀恍然大悟。老墨不是在糟蹋画——他在教青檀"坏掉的方向"。知道怎么坏,才知道怎么修。

"可是,"青檀问,"为什么非要先泼墨、再洗掉?从白纸开始一笔一笔画,不是更快吗?"

老墨从怀里摸出一枚铜钱,往天上一抛,接住。"你说这铜钱,落在我手心里的时候,它经过的每一条路你能画出来吗?"

"不能。"

"但从手心里往回推——它一定是从天上掉下来的,对吧?"

青檀点头。

"造一个东西难,毁一个东西容易。但毁的方向是确定的——第一粒墨点落在山脊,第二粒蒙住松针,每一步我都记得。反过来洗的时候,我只需要认出一件事:眼前这一层里,哪些是上一刻我洒上去的墨。认出谁该走,比想出谁该来,简单一百倍。"

三、每一步只擦去一点点

学了半年,青檀终于轮到自己动手。

老墨铺开一张新纸,泼上满纸的墨。他递给青檀一支清水笔。

"你来试试。把山洗出来。"

青檀蘸了水,用力往纸上戳。一大片墨被冲开,露出白底——但边缘生硬,像破了一个洞。不是山,是疤。

"太急了。"老墨接过笔,"每一步只擦去一点,不能跳着走。跳一步,形状就碎了。"

"那要多少步?"

"我通常走一百二十遍。"

青檀倒吸一口气。一百二十遍——每一遍都只擦去薄薄一层墨,每一遍纸上的变化微乎其微。第一遍走完,还是一团墨,只是浓淡之间有了隐约的起伏。第二遍,山脊的弧线若隐若现。第三遍,飞瀑的白练从崖顶缓缓垂下来。到第十二遍,松树的针叶刺破墨色。到第二十四遍,云也有了,水也活了。

到最后一轮——一百二十遍走完——纸上的墨消失了。不,不是消失了,是被筛选过:该留的留了下来,凝成山、树、云、水;该走的被一层一层的水笔带走,没留下痕迹。

青檀看呆了。"这不是画——这是在混沌里捞东西。"

"说对了。"老墨难得露出笑意,"一百个人泼墨,九十九个只会泼。差别在于,我手里有一百二十步的洗法——每一步,我都知道眼前这层墨里哪些是该留的、哪些是该去的。不是凭空知道——是毁过一千张画,毁出来的。"

四、诗里的画,画里的诗

柳员外是镇上最挑剔的藏家。他听说散墨轩的画法奇异,便登门出了一道题。

"阮籍的《咏怀》读过吧。'孤鸿号外野,翔鸟鸣北林。'——三日之内,拿画来见我。"

青檀心里一紧。寻常画师碰到这种命题,都是先构思构图、打草稿、再落笔。可老墨的法子是从一团墨开始的——没有草稿,没有构图,怎么保证画出来的是孤鸿和北林,而不是别的什么?

老墨却不慌。他让青檀把"孤鸿"二字写在一张纸片上,又把"北林"二字写在另一张上。然后他研墨、泼墨,一如往常。

但这一次,青檀注意到师父落清水笔的节奏变了。洗到第三遍时,墨的浓淡走势不是随意的——"孤鸿"的孤绝感让笔尖收紧,留出大片空茫;"北林"的萧瑟感让墨色向一侧倾压,像寒风扫过的林子。

每一遍洗墨,老墨都先看一眼那两张纸片。纸片不是草稿,却比草稿更有力——它们在每一次落笔时轻轻拉着墨的方向,让混沌学会朝一个主题聚拢。

第九遍。第十八遍。第三十六遍。

一只孤鸿从天际破墨而出,下方疏疏落落的北林在墨色深浅之间站定了——秋意满纸,萧索入骨。

柳员外看了画,沉默良久。"这画不是画上去的。像是原本就在墨里,你只是把多余的部分带走了——而且你知道自己在找什么。"

老墨看了青檀一眼。"听见了吗?诗句不是草图,是方向。没有方向,墨里什么都有,也什么都没有。有了方向,混沌就开始排队。"

五、从混沌里筛出形状

青檀学艺三年,第一次独立为人作画。

他泼了墨,拿起清水笔。第一遍洗,纸上还是一团混沌。他心里发慌——是不是自己没学到家?是不是三年白费了?

他想起师父的话:每一步只擦去一点。不要跳着走。

闭上眼。师父毁过的一千张画,一张一张在脑子里倒带——山脊怎么沉下去的,松针怎么模糊的,云气怎么搅散的。每一步他都记得。

倒着走就是了。

第二遍。第三遍。到第七遍,一对鸳鸯的轮廓从墨色里探出头来。到第十八遍,羽毛的纹路都清晰了,水面的波纹一层一层漾开。

老墨站在他身后,点了点头。

"你知道为什么这法子能成?"老墨说。

"因为我记住了毁掉的过程。"

"不止。"老墨望着窗外渐沉的暮色,"因为一个人面对白纸,永远在跟自己较劲——你脑子里想得越清晰,手越跟不上。但对着满纸混沌,你不需要创造,不需要凭空变出东西来。你只需要认出一件事:什么不该在这里。认错容易,画对难。把不该在的擦掉,剩下的自然就对了。"

青檀望着自己画出的鸳鸯,又看看墙上师父那些从墨中浮出的山水、花鸟、人物。每一幅都像从一片混沌里,被谁耐心地、一步一步地打捞出来。

他忽然明白了一件事。

"所以我们不是画家,是认画的人。"

老墨大笑,拍了拍徒弟的肩膀。

"天地本来就是一片混沌。造物的人不负责创造——只负责认出。认出山,山就有了。认出河,河就流了。认出来,就是造出来。"

技术解读

扩散模型(Diffusion Models)是近年来生成式 AI 领域最重要的突破之一,构成了 Stable Diffusion、DALL·E 3、Midjourney 等图像生成模型的核心引擎。其理论基础由 Sohl-Dickstein 等人在 2015 年提出,经 Ho 等人 2020 年的 DDPM(Denoising Diffusion Probabilistic Models)论文推向实用,随后 Rombach 等人的 Stable Diffusion 将扩散过程引入潜空间(Latent Space),大幅降低了计算成本。

扩散模型的核心直觉极其反直觉:要生成一张清晰的图像,不是从零开始"建造"它,而是从纯噪声开始,一步一步"去噪"——就像雕刻不是堆泥,而是去掉多余的石料。

训练过程分为两个阶段:正向扩散(forward diffusion)——向一张干净的图像逐步添加高斯噪声,经过足够多步(通常是 1000 步)后图像变为各向同性的纯噪声;反向扩散(reverse diffusion)——训练一个神经网络(通常是 U-Net)来预测每一步添加的噪声,从而学会从噪声中恢复出干净的图像。生成时,从纯噪声出发,用训练好的 U-Net 迭代去噪,最终得到一张清晰的图像。

条件生成(如文本到图像)通过在去噪过程的每一步注入条件信号(如 CLIP 文本嵌入)来实现——文字提示在每一步微调去噪方向,引导混沌朝着主题凝聚。分类器无关引导(Classifier-Free Guidance, CFG)则进一步放大条件信号的影响力,让生成结果更贴合文本描述。

核心概念回顾

概念 通俗解释
正向扩散 给一张干净图逐步加噪声,加 T 步后变成完全的随机噪点
反向扩散 从噪点开始,一步步去噪,恢复出干净图像
噪声调度(Noise Schedule) 规定每一步加多少噪声——通常前面加得少,后面加得多
U-Net 用来预测"当前这一步的噪声长什么样"的神经网络
去噪步数 从噪声到图像的迭代次数,越多越精细,计算成本也越高
潜扩散(Latent Diffusion) 不在像素空间做扩散,在压缩后的潜空间做,大幅省算力
条件生成 给去噪过程一个文字提示,让它朝特定方向去噪
CLIP 文本嵌入 将文字描述编码成向量,在每一步注入 U-Net 引导去噪方向
分类器无关引导(CFG) 同时运行"有条件的去噪"和"无条件的去噪",用两者的差值放大条件信号
DDIM 采样 一种加速采样方法,可以跳过一些去噪步骤而不过分损失质量
随机种子 决定初始噪点的分布——同一个种子 + 同一段文字 = 同一张图

故事中的隐喻对照

故事元素 映射的技术概念 解释
泼墨(满纸浓墨) 各向同性高斯噪声 扩散过程的起点:一幅完全被噪声占据的"图像",视觉上是一团混沌
毁画(每天洒墨糟蹋旧画) 正向扩散过程 向干净图像逐步添加噪声,记录每一步噪声的分布,作为训练数据
记住每一步怎么坏掉的 训练 U-Net 预测每一步的噪声 神经网络学习"给定当前这一步的噪声图像,这一步的噪声是什么"
清水笔一层一层洗墨 反向扩散(迭代去噪) 每一步预测并减去当前步的噪声,逐步逼近干净图像
一百二十步洗法 去噪步数(T=120,类比 1000 步) 扩散模型需要大量迭代步数,不能跳步,跳步会导致图像质量崩溃
每一步只擦去一点点 噪声调度的渐进性 每步只预测和去除一小部分噪声,保证反向过程与正向过程匹配
老墨:"我知道哪些该走、哪些该留" U-Net 的噪声预测 神经网络输出的不是"干净图像长什么样",而是"当前噪声长什么样"——抹掉噪声,剩下的就是信号
诗句"孤鸿""北林" 条件生成 / 文本嵌入 文字提示在每一步注入去噪过程,引导混沌朝着特定语义方向凝聚
诗不是草图,是方向 分类器无关引导(CFG) 条件信号不取代去噪过程,而是在每一步微调去噪方向
毁过一千张画才学会 大量训练数据 U-Net 需要在数百万张图像上训练,才能学到通用的去噪能力
青檀第一步戳出"疤" 跳步导致的结果崩溃 如果跳步(减少步数过快),去噪过程会偏离正向扩散的逆路径,产出破碎图像
"认错容易,画对难" 预测噪声比预测干净图像更简单 扩散模型的核心设计:U-Net 输出的是噪声残差,不是完整图像
每一幅画从墨的深海里浮出来 随机噪声 → 清晰图像的涌现过程 扩散模型的生成过程是一个从无序到有序的渐近涌现

为什么这个故事对应扩散模型?

  1. 正向-反向的核心结构:故事里的"毁画"对应正向扩散(加噪),"洗墨"对应反向扩散(去噪)。老墨先让学生记住画怎么坏掉,再倒着走一遍——这与扩散模型"先学正向扩散的噪声分布,再学反向去噪"的训练逻辑完全一致。

  2. 预测噪声而非预测图像:老墨的核心心法——"认出谁该走,比想出谁该来简单一百倍"——精确映射了扩散模型的根本设计选择:U-Net 不直接预测干净图像,而是预测每一步添加的噪声分量。这是一种更简单的学习目标。

  3. 渐进式去噪,不能跳步:青檀第一步用力戳出一个洞,对应扩散模型跳步采样的失败——每一步只改变微小的噪声分布,跳步会破坏马尔可夫链的渐进性质,导致生成图像崩溃。

  4. 条件信号在每一步注入:诗句不是一次性给出构图,而是在每一遍洗墨时"轻轻拉着墨的方向"——这与条件扩散模型在每一个去噪时间步都注入文本嵌入的做法一致。条件不是替代过程,而是引导过程。

  5. 毁过一千张画的训练代价:老墨三年如一日地"毁画"来积累经验,对应扩散模型需要在海量图像上训练——Stable Diffusion 的训练数据通常在数十亿张图像量级。没有这个积累,去噪方向就无从学起。

  6. 潜空间的隐含映射:老墨说"墨里有无数棵松",暗示了噪声空间中蕴含的无限可能性——同一团噪声,不同的去噪路径可以产生完全不同的图像。潜扩散模型在压缩后的低维空间做扩散,进一步放大了这种"噪声即潜能"的本质。

  7. "认出来就是造出来"的哲学内核:扩散模型的生成本质上是一种辨识行为——模型不需要理解"松树"是什么,它只需要在每一步认出"哪些像素不该在这里"。从噪声中反复减去"不是松树的部分",松树自然浮现。

后记:扩散模型最深刻的洞见在于——创造不一定要从零建构。有时候,从混沌开始,学会认出并移除那些"不该在"的东西,比在空白上凭空想象容易得多。一个画家面对白纸时的焦虑,和一个模型面对纯噪声时的从容,本质上是同一种选择的差异:是建造,还是筛选。老墨说"我们不是画家,是认画的人"——生成式 AI 也许从来不是在创造新事物,它只是在亿万个可能性中,认出了最对的那一个。就像从一团墨里认出松树——松树一直在那里,只是需要有人把它洗出来。