扩散模型:加噪与去噪
扩散模型(像 Stable Diffusion)画图的思路出奇地巧。前向加噪很好懂:把一张清晰的照片,一点点给每个像素的颜色掺进随机噪点,加够多步,整张图就变成一团彩色“雪花”——规则固定、谁都会。真正要学的是反过来:训练一个模型,让它看着一团噪声,估计里面混了多少噪点、一步步减掉,把图重新“显影”出来。学会去噪后,随便丢给它一团噪声、反复去噪,就能凭空生成一张全新的图。拖滑块或点按钮,看一张猫的照片怎样被打成雪花、又怎样从雪花里被还原出来。
这是一张照片,放大看其实是一格格像素。加噪=给每个像素的颜色掺进随机噪点(像电视雪花)——像素不动,变的是颜色,不是把图案的点打散到别处。去噪才是模型学的本事:它并不知道你加了什么噪声,靠学到的“图长什么样”,从一团噪声里一步步把图还原 / 生成出来。点“换图”可在猫 / 心 / 笑脸 / 星之间切换。
背后的公式(点开看)
前向加噪可以一步到位:加噪图 = √保留比例 × 原图 + √(1−保留比例) × 随机噪声。“保留比例”(记作 ᾱt)随时间 t 从 1 平滑降到 0,所以任意噪声程度都能直接算出来、规则固定。模型学的是反向:给定一张加噪图,预测里面的噪声,减掉一点点,多步迭代就能把图还原;从纯噪声起步同样能生成全新的图。
前向:加噪(固定)
给每个像素的颜色按固定公式掺高斯噪声,越往后越像电视雪花。规则写死,不用学。
反向:去噪(要学)
模型预测“这张噪声图里混了多少噪点”,减掉它,一步步把图“显影”出来。
生成新图
学会去噪后,喂一团随机噪声、反复去噪,就能“无中生有”画出一张全新的图。