[{"data":1,"prerenderedAt":423},["ShallowReactive",2],{"article:column:/column/llm-to-agent-learning/25":3},{"id":4,"title":5,"body":6,"description":415,"extension":416,"meta":417,"navigation":418,"path":419,"seo":420,"stem":421,"__hash__":422},"column/column/llm-to-agent-learning/25.md","25｜图像怎样生成：从噪声到图，而非给文字换皮",{"type":7,"value":8,"toc":397},"minimark",[9,13,16,21,24,27,30,34,44,47,50,56,59,62,65,73,77,80,83,86,89,96,99,102,105,108,112,115,123,126,136,141,149,152,158,161,164,167,170,173,176,180,183,191,194,197,203,206,209,213,216,224,227,233,236,239,243,246,249,252,255,258,264,267,275,278,281,285,290,293,298,301,306,309,314,317,320,325,328,333,336,341,344,349,352,355,360,363,368,371,376,383,388,391,394],[10,11,12],"p",{},"输入“一只蓝色杯子，放在木桌上”，屏幕上逐渐出现画面。模型是不是先在数据库里找到一只杯子，再把背景换掉？如果最初只有噪声，杯子的形状又是从哪里来的？",[10,14,15],{},"本章讲两条相关的生成路线：扩散模型通过学习不同噪声程度下的恢复规律生成样本；流匹配学习一个随位置和时间变化的移动方向场。我们只用加减乘除和一个解释清楚的平方根，不要求微积分，也不从某款产品的画风推测它的内部算法。",[17,18,20],"h2",{"id":19},"_1先分开训练生成与编辑","1．先分开训练、生成与编辑",[10,22,23],{},"训练时，系统拥有真实图像，可以人为破坏它，再让网络学习与恢复有关的预测任务。生成时，系统从新抽出的噪声开始，使用已学到的规律逐步更新，通常没有一张等待被揭开的原图。",[10,25,26],{},"这两种过程不能混画。训练知道原始样本和加入的噪声，因此能够构造监督信号；生成只知道当前状态、时间或噪声级别，以及文字等条件。让噪声“变成图”的能力来自参数中学到的数据分布，不是噪声本身秘密保存了那张图。",[10,28,29],{},"编辑又是第三种情形：可以从已有图像或其表示出发，加到某个噪声程度，再在新条件下生成，也可以使用专门的编辑结构。保留多少原图、改变多少内容，取决于具体流程，不能把所有编辑都说成完全从随机噪声重画。",[17,31,33],{"id":32},"_2前向加噪日程规定每一步破坏多少","2．前向加噪：日程规定每一步破坏多少",[10,35,36,37],{},"经典DDPM使用逐步加高斯噪声的前向过程。高斯噪声可以直观理解成多数数值靠近零、少量偏得较远的随机扰动；每个位置都加入这样的数值，不是只往图片上撒几颗白点。",[38,39,43],"a",{"href":40,"rel":41},"https://arxiv.org/abs/2006.11239",[42],"nofollow","DDPM原论文",[10,45,46],{},"“噪声日程”规定不同步骤的噪声强度。常用βₜ表示第t步新增噪声的方差，αₜ＝1−βₜ表示该步对应的保留因子；下标t只是步数。方差描述随机数分散的程度，不是某一个实际抽到的噪声值。",[10,48,49],{},"把截至第t步的保留因子相乘，得到ᾱₜ。上面那条横线提醒我们：这是累计量，不是单步αₜ。在这种前向过程下，可以直接构造指定时刻的带噪样本：",[10,51,52],{},[53,54,55],"strong",{},"xₜ＝√ᾱₜ × x₀＋√(1−ᾱₜ) × ε",[10,57,58],{},"x₀是干净样本的数值，xₜ是第t个噪声级别的样本，ε是新抽出的标准高斯噪声，√表示平方根。对图片，x和ε都是许多数组成的数组，公式在对应位置上运算。两个系数的平方相加为1，并不是两个系数本身相加为1。",[10,60,61],{},"例如ᾱₜ＝0.64时，信号系数是0.8，噪声系数是0.6；ᾱₜ＝0.36时，两者是0.6和0.8。累计保留下降，原样本的影响变弱，噪声影响变强；到后期，分布接近便于抽样的噪声分布。",[10,63,64],{},"单步与累计不能混用。教学日程若β₁＝0.36、β₂＝0.4375，则α₁＝0.64、α₂＝0.5625，而ᾱ₂＝0.64×0.5625＝0.36。第二步的累计保留不是0.5625。这些大步数字只为手算，不是推荐的真实训练配置。",[10,66,67,68],{},"直接构造某个xₜ，让训练不必每次从第一步完整跑到第t步。它给出的是该时刻所需的带噪样本；分别抽噪声画出的几个时刻，不应假装成同一次逐步加噪的完整轨迹。",[38,69,72],{"href":70,"rel":71},"https://arxiv.org/html/2006.11239v2#S2",[42],"DDPM前向过程与直接采样公式",[17,74,76],{"id":75},"_3网络究竟学什么拿一个数走完监督","3．网络究竟学什么：拿一个数走完监督",[10,78,79],{},"只看一个数，设干净值x₀＝2，累计保留ᾱₜ＝0.64，本次抽到ε＝0.5。则带噪值xₜ＝0.8×2＋0.6×0.5＝1.9。这不是像素亮度的强制范围，只是标准化数值的教学例子。",[10,81,82],{},"让网络接收1.9和对应时间t，预测加入的噪声。若它预测0.2，而训练程序知道实际噪声是0.5，平方误差就是(0.2−0.5)²＝0.09。平方表示一个数乘自己，使正负偏差都受到惩罚；再通过第7章的参数更新，让同类预测更接近目标。",[10,84,85],{},"时间输入不可省略。同一个数值1.9出现在低噪声与高噪声阶段，应该如何解释很不一样。实际训练随机选择样本、时间和噪声，网络学习许多不同破坏程度下的规律，不能只学会清理某一种固定污点。",[10,87,88],{},"用这个例子还可以看见预测误差如何影响恢复。如果噪声预测恰好为0.5，按(1.9−0.6×0.5)÷0.8可还原为2；若预测0.2，就得到2.225。这里计算的是当前时刻对干净值的估计，不是完整DDPM采样器的一步公式。",[10,90,91],{},[92,93],"img",{"alt":94,"src":95},"25｜图像怎样生成：从噪声到图，而非给文字换皮：图1","/collections-assets/llm-to-agent-learning/653f5e8c7dc402625916a8279b6e39e01896f5e590abdc38bb4dae19b5ae8508.png",[10,97,98],{},"图1｜训练由已知干净值2和已抽噪声0.5构造带噪输入1.9；预测器输出0.2，损失0.09用于更新参数。生成时只有当前状态、时间与条件，没有训练标签可直接读取；后续采样规则见图2。",[10,100,101],{},"为什么不直接一次还原？噪声严重时，同一带噪输入可能对应许多合理原图，恢复不是唯一逆运算。预测器学的是数据分布下的规律，生成过程则利用这些规律逐步构造样本。最终画面可以是训练中没有出现过的新组合，也可能出现记忆复现，因此不能保证永远原创。",[10,103,104],{},"同一个观察为何仍能训练？在上述噪声级别，x₀＝2、ε＝0.5会产生1.9；另一组x₀＝1.25、ε＝1.5也会产生0.8×1.25＋0.6×1.5＝1.9。训练程序知道自己选了哪组，便有正确的监督标签；仅看到1.9的预测器却未必能区分来源。若简化成这两种来源同样可能、没有其他信息，噪声预测1会让两项平方误差的平均最小，而不是总能猜中0.5或1.5。许多样本与条件让网络学习这种条件规律，训练标签并不是生成时可以精确反解的密码。",[10,106,107],{},"预测噪声只是一个常见参数化选择。有的模型预测干净样本或其他等价关联量。网络的预测目标、前向噪声过程与实际采样器必须配套；看到界面写“去噪”，不能断定网络内部一定直接输出噪声数组。",[17,109,111],{"id":110},"_4反向生成模型给预测采样器决定怎么走","4．反向生成：模型给预测，采样器决定怎么走",[10,113,114],{},"生成时先抽一个高噪声状态。每一步，网络根据当前状态和时间给出预测，采样器结合日程计算下一个状态。经典DDPM反向步骤通常还包含随机项，最后一步有相应特殊处理，不是永远机械地“当前值减去预测噪声”。",[10,116,117,118],{},"同一组训练权重可以在兼容条件下采用不同采样方案。DDIM研究展示了与原训练目标兼容、可采用更少步骤的采样路线；其中有确定性设置，也有其他设置。不要把“扩散”定义成每一步必须再抽随机噪声。",[38,119,122],{"href":120,"rel":121},"https://arxiv.org/abs/2010.02502",[42],"DDIM原论文",[10,124,125],{},"选择一种明确规则，就能把采样器的黑箱打开。这里只采用不额外抽噪声的确定性DDIM一步，并采用本章的累计保留记号ᾱ。当前时间t的噪声预测记作ε̂，帽子表示“估计”。先估计干净样本，再组合成下一个噪声更少的时间s：",[10,127,128],{},[53,129,130,131,135],{},"x̂₀＝",[132,133,134],"span",{},"xₜ−√(1−ᾱₜ)×ε̂","÷√ᾱₜ",[10,137,138],{},[53,139,140],{},"xₛ＝√ᾱₛ×x̂₀＋√(1−ᾱₛ)×ε̂",[10,142,143,144],{},"这里s＜t，ᾱₛ＞ᾱₜ；x̂₀是采样器按预测算出的干净值估计，xₛ才是下一轮输入。此特例沿本次预测的噪声方向组合，不再额外加入随机项；它来自DDIM一般更新中随机系数为0的情形，不代表完整DDPM或所有采样器都这么走。",[38,145,148],{"href":146,"rel":147},"https://arxiv.org/html/2010.02502v3#S4.SS1",[42],"DDIM原论文第4.1节及式12",[10,150,151],{},"沿第2节的两级教学日程做一步：当前t＝2，ᾱ₂＝0.36，状态x₂＝1.6；模型预测ε̂＝0.2。采样器先算x̂₀＝(1.6−0.8×0.2)÷0.6＝2.4，再前往s＝1、ᾱ₁＝0.64，得到x₁＝0.8×2.4＋0.6×0.2＝2.04。这里1.6是一次采样的当前状态，不假定系统知道它对应哪张原图。训练小例中的1.9与这次生成步骤也不是同一次DDPM随机轨迹。",[10,153,154],{},[92,155],{"alt":156,"src":157},"25｜图像怎样生成：从噪声到图，而非给文字换皮：图2","/collections-assets/llm-to-agent-learning/063622dfe1f144a806840f21618b38b21c3a476643e18a9d64367acf44db9321.png",[10,159,160],{},"图2｜指定确定性DDIM特例，模型只输出噪声预测0.2；采样器依据两级累计保留0.36→0.64，先得到干净值估计2.4，再得到下一状态2.04。当前状态、干净估计、下一状态是三个不同对象；下一轮需用新状态与新时间重新预测。",[10,162,163],{},"数值从1.6变大到2.04，并不违反“去噪”：下降的是日程中的噪声水平，不是要求每个坐标都向零缩小。下一轮网络接收的是2.04和时间1，要重新预测，不能把第一次的0.2永远当作已知真实噪声。这个区分也像软件中的接口契约：预测器输出何种量、时间刻度怎样解释、求解器期待何种输入，都要匹配；数组形状相同不代表可任意互换。",[10,165,166],{},"步数、求解方法和单步网络成本共同决定速度。更多步通常提供更细的更新，但质量不会无限增加；过少步也可能让粗糙近似积累明显误差。不同模型的“二十步”不能只按数字比较，因为预测器、日程和每步计算都可能不同。",[10,168,169],{},"随机种子控制随机数序列的一部分。在固定模型、设置和兼容实现下，它有助于重复结果；换了模型或算法，即使种子相同，也不意味着画面应该相同。种子是复现条件之一，不是跨系统通用的图片编号。",[10,171,172],{},"这里还要区分训练的噪声日程与生成时选取的时间点。前者决定网络学习哪些带噪状态，后者决定采样器实际沿哪些位置更新。生成少走几步不是把训练日程随意删掉，也不是只需把步数旋钮改小就能无代价提速；两者的尺度与模型输入必须保持兼容。",[10,174,175],{},"网络骨架也不是生成算法本身。预测器可以采用卷积网络或Transformer等结构；使用Transformer不表示它必然像语言模型那样逐token自回归。应分别问“用什么网络计算预测”和“用什么目标训练、怎样采样”。",[17,177,179],{"id":178},"_5文字条件与引导怎样让噪声走向蓝色杯子","5．文字条件与引导：怎样让噪声走向蓝色杯子",[10,181,182],{},"无条件生成只要求样本像训练分布中的图。文字条件则让更新同时考虑“蓝色杯子、木桌”等要求。文本先编码成向量，再通过交叉注意力或其他条件注入方式影响预测。交叉注意力让视觉状态读取文字表示，具体结构因模型而异。",[10,184,185,186],{},"一种常见方法叫无分类器引导，即classifier-free guidance。训练中有时省去条件，使网络同时学会有条件和无条件的预测；使用时组合两种预测，增强条件对更新方向的影响。“无分类器”指不需要另训练一个分类器指导，不是没有文字条件。",[38,187,190],{"href":188,"rel":189},"https://arxiv.org/abs/2207.12598",[42],"无分类器引导原论文",[10,192,193],{},"以噪声预测为例，可写为：引导预测＝ε无条件＋w×(ε有条件−ε无条件)。w是引导强度；在这一写法里，w＝0用无条件预测，w＝1用普通条件预测，w大于1沿两者的差异继续外推。其他文献和软件可能采用不同参数记法，数值不能盲目互抄。",[10,195,196],{},"教学数字取无条件预测0.4、有条件预测0.1，w＝2，则引导预测是0.4＋2×(0.1−0.4)＝−0.2。结果超出了原来0.1到0.4的区间，这恰好说明它是外推，不能理解成两个答案的温和平均。",[10,198,199],{},[92,200],{"alt":201,"src":202},"25｜图像怎样生成：从噪声到图，而非给文字换皮：图3","/collections-assets/llm-to-agent-learning/f1092295549672ae67906c8ef173362ac3e96feef52f83fc2f6dc3e318675e5b.png",[10,204,205],{},"图3｜文字条件先影响预测器；同一状态与时间下，无条件预测0.4、有条件预测0.1，差为−0.3。按本章w＝2的约定沿差方向走两份，得到−0.2，位于原区间之外。它是交给兼容采样器的预测值，不是最终像素。",[10,207,208],{},"更强引导不保证更好。它可能提高提示的显著性，同时牺牲多样性、自然度或细节稳定性；过强时还可能出现失真。常见实现需要计算两种预测，因此也有计算代价，但具体实现可以优化，不能固定承诺耗时恰好翻倍。",[17,210,212],{"id":211},"_6潜空间先把图换成较紧凑的表示","6．潜空间：先把图换成较紧凑的表示",[10,214,215],{},"直接在每个像素上反复更新，成本很高。潜扩散先用编码器把图像映射成较紧凑的潜表示，在这个空间中训练或执行扩散，最后用解码器把潜表示还原为可看的图像。潜表示是学习得到的数字，不是一张藏起来的缩略JPEG。",[10,217,218,219],{},"潜扩散原论文把感知压缩与生成过程结合，并利用交叉注意力加入文字等条件。它是明确公开的技术路线，不能由此认定所有生成产品都采用相同潜空间或压缩比例。",[38,220,223],{"href":221,"rel":222},"https://arxiv.org/abs/2112.10752",[42],"潜扩散原论文",[10,225,226],{},"做一笔教学资源账：256×256的RGB图有196,608个通道数；若假设编码器输出32×32×4的潜表示，则有4,096个数，是前者的1/48。这个比例只比较表示中的数值个数，不包含网络权重，也不等于运行显存或耗时缩小48倍。",[10,228,229],{},[92,230],{"alt":231,"src":232},"25｜图像怎样生成：从噪声到图，而非给文字换皮：图4","/collections-assets/llm-to-agent-learning/95d902cc8212621cc6da14e206c6c1033d23b2994562623d32a08df7cd2a3cdc.png",[10,234,235],{},"图4｜训练图像可先编码到潜空间，在潜空间建立加噪与学习任务；生成从潜噪声开始，反复预测和更新潜状态，最后解码成像素。196,608对4,096只是指定尺寸下的数值个数比1/48，未包含网络与运行开销。",[10,237,238],{},"压缩可能丢掉小字和精细纹理，解码器也可能引入伪影；扩散网络即便把潜表示处理得很好，最终像素仍受编解码能力限制。因此理解或生成中的“细节不对”，不一定全部来自文字条件没有写清楚。",[17,240,242],{"id":241},"_7流匹配学习每个位置该往哪边移动","7．流匹配：学习每个位置该往哪边移动",[10,244,245],{},"流匹配把生成写成随时间移动的过程：从容易抽样的噪声分布出发，学习一个向量场，把整体分布逐步运送到数据分布。向量场可以想成地图上到处有箭头，每个箭头说明在这个位置、这个时刻该往哪里移动多快。",[10,247,248],{},"注意本节将t＝0约定为噪声起点、t＝1约定为数据终点，与前面DDPM前向加噪的时间方向相反。时间只是给过程编号的约定，比较公式前必须先核对起点与终点。",[10,250,251],{},"一种教学路径取噪声点z＝−1，数据点x＝3，令时间t从0走到1，中间位置写为xₜ＝(1−t)z＋tx。t＝0时是−1，t＝0.25时是0，t＝0.5时是1，t＝1时是3。沿这条直线，单位时间的移动量是x−z＝4。",[10,253,254],{},"训练可以随机取配对端点和中间时间，让网络根据中间位置、时间和条件预测目标速度。真实网络看到许多样本路径，学习的是共同的速度场；生成时只有新的起点和学得的场，并不知道每条训练路径的终点。",[10,256,257],{},"若某处网络预测速度为4，用最简单的教学更新“新位置＝旧位置＋时间步长×速度”，从−1以0.25步长移动，就到0。真实速度通常随位置和时间变化，需要每步重算；数值求解器负责把这些局部预测连接为整条轨迹。若另一条教学路径从1走到5，同样速度4会让两个点一起右移，而不挤成同一点。这帮助我们看见，生成关心的是一群样本的分布怎样变化，不只是单条线终点好不好看。",[10,259,260],{},[92,261],{"alt":262,"src":263},"25｜图像怎样生成：从噪声到图，而非给文字换皮：图5","/collections-assets/llm-to-agent-learning/8f99cd7bc8324db8630903164778589b9f5af61fe0e0cf476ee4394db4da31ed.png",[10,265,266],{},"图5｜流匹配的直线教学路径取t＝0为噪声端、t＝1为数据端。第一条路径位置为−1＋4t；另一条为1＋4t，两者速度同为4，距离始终为2。一次欧拉更新从−1走到0；真实速度场需随新位置和时间重算。",[10,268,269,270],{},"流匹配原论文把它表述为对条件概率路径的向量场进行回归，允许包含扩散路径在内的多种路径。因此扩散与流匹配有理论联系，却不能简单说“一个随机、一个确定”，或“流匹配就是没有噪声的扩散”。",[38,271,274],{"href":272,"rel":273},"https://arxiv.org/abs/2210.02747",[42],"流匹配原论文",[10,276,277],{},"同样不能把一条配对直线推广成所有生成轨迹永远笔直。许多训练路径在同一区域提供不同信号，学出的整体场、数值近似和条件都会影响实际路线。更直或更少步是否更好，需要在相同质量、成本和条件下测量。",[17,279,280],{"id":280},"本章练习",[282,283,284],"h3",{"id":284},"题目",[10,286,287],{},[53,288,289],{},"问题1｜训练标签与可逆性",[10,291,292],{},"ᾱ＝0.64时，验证(x₀＝2，ε＝0.5)和(x₀＝1.25，ε＝1.5)是否产生相同带噪数值。为什么训练程序能拥有噪声标签，却不意味着仅看输入的网络每次都能精确反推出标签？",[10,294,295],{},[53,296,297],{},"问题2｜换一个预测，走完一步",[10,299,300],{},"沿用图2，当前x₂＝1.6，累计保留由0.36走向0.64，不额外抽噪声；只把预测ε̂改成0.5。计算x̂₀与下一状态x₁。下一轮能否继续假定预测仍为0.5？",[10,302,303],{},[53,304,305],{},"问题3｜引导究竟是在平均还是外推",[10,307,308],{},"无条件预测0.4、有条件预测0.1，按ε引导＝ε无条件＋w(ε有条件−ε无条件)。分别计算w＝0、1、2的结果，并解释为什么w＝2不属于两项的凸平均。",[10,310,311],{},[53,312,313],{},"问题4｜表示规模与移动速度",[10,315,316],{},"256×256×3图像与32×32×4潜表示各有多少个数？比值是多少，能否直接换成耗时比？另在流匹配教学路径上，旧位置−1、步长0.25、预测速度4，一次更新到哪里？这与潜空间大小属于同一设计问题吗？",[282,318,319],{"id":319},"思考提示",[10,321,322],{},[53,323,324],{},"提示1｜对应问题1",[10,326,327],{},"信号系数为0.8、噪声系数为0.6。比较完整来源信息与网络实际看到的信息。",[10,329,330],{},[53,331,332],{},"提示2｜对应问题2",[10,334,335],{},"先按当前噪声级别求干净估计，再按目标噪声级别重新组合，不要直接做1.6−0.5。",[10,337,338],{},[53,339,340],{},"提示3｜对应问题3",[10,342,343],{},"先算两种预测之差；观察结果是否始终落在0.1与0.4之间。",[10,345,346],{},[53,347,348],{},"提示4｜对应问题4",[10,350,351],{},"一个问题在数“每个状态有多大”，另一个在算“状态下一步怎么走”。",[282,353,354],{"id":354},"参考答案与解析",[10,356,357],{},[53,358,359],{},"答案1｜对应问题1",[10,361,362],{},"两者都是1.9：0.8×2＋0.6×0.5＝1.9，0.8×1.25＋0.6×1.5＝1.9。训练程序记录了自己选择的样本和噪声，所以标签明确；网络只看相同观察与时间时不能凭空区分两种来源。监督可以学习数据条件规律，并不把本来缺失的信息变成唯一可逆编码。",[10,364,365],{},[53,366,367],{},"答案2｜对应问题2",[10,369,370],{},"x̂₀＝(1.6−0.8×0.5)÷0.6＝2；x₁＝0.8×2＋0.6×0.5＝1.9。它还处于第1个噪声级别，所以下一状态不必等于干净估计2。下一轮应给网络新状态1.9与时间1重新求预测；题设没有给出旧预测永远等于真实噪声的保证。",[10,372,373],{},[53,374,375],{},"答案3｜对应问题3",[10,377,378,379,382],{},"三项结果依次为0.4、0.1、−0.2。w＝2相当于2×有条件预测−1×无条件预测，含负权重，超出",[132,380,381],{},"0.1,0.4","区间，因此是外推。它增强两预测的差，不保证质量一定提高。",[10,384,385],{},[53,386,387],{},"答案4｜对应问题4",[10,389,390],{},"两者为196,608和4,096个数，潜表示占1/48。网络结构、步数、编解码及其他开销都未计入，不能据此宣称耗时减少48倍。一次位置更新为−1＋0.25×4＝0。潜空间决定在哪种表示中生成，流场及求解规则决定状态怎样演化，是可组合的不同设计维度。",[17,392,393],{"id":393},"下一章",[10,395,396],{},"文字、视觉条件、生成目标、潜空间和采样器属于不同设计层，可以组合。下一章再加入时间：当样本是一段声音或连续视频，模型不只要让每个片段像真的，还要维持顺序、节奏和跨片段一致性。",{"title":398,"searchDepth":399,"depth":399,"links":400},"",3,[401,403,404,405,406,407,408,409,414],{"id":19,"depth":402,"text":20},2,{"id":32,"depth":402,"text":33},{"id":75,"depth":402,"text":76},{"id":110,"depth":402,"text":111},{"id":178,"depth":402,"text":179},{"id":211,"depth":402,"text":212},{"id":241,"depth":402,"text":242},{"id":280,"depth":402,"text":280,"children":410},[411,412,413],{"id":284,"depth":399,"text":284},{"id":319,"depth":399,"text":319},{"id":354,"depth":399,"text":354},{"id":393,"depth":402,"text":393},"从信息表示和学习出发，用可核算的例子与白板图逐步理解大模型、后训练、推理和Agent系统。","md",{},true,"/column/llm-to-agent-learning/25",{"title":5,"description":415},"column/llm-to-agent-learning/25","_aNGjyELi8pE5KJ7DidXs35Us4sVUP2XsfC4DwkeKiw",1791935828815]