随意学习-模型工程:因子、隐空间、采样策略

  1. 为什么叫因子(factor)
    词源本义:乘数、构成成分
    数学里:A × B = C → A、B就是C的factor(因子)
    引申到AI:很多底层成分"相乘/加权叠加"之后,生成我们看到的数据,于是起名隐因子 latent factor

名字只代表「它是组成整体的一份子」,名字本身不代表它一定是向量,也不一定是变量

  1. 因子是变化的向量?还是变量?
  • 因子是概念名称 ,不是固定数据类型
    • 最简单因子:标量变量(单数字,缩放因子 0.8)
    • 隐因子:向量变量(一组数,隐因子向量)
  • ✅隐因子(深度学习常用):一般用向量去表达
  • ❌因子 ≠ 天然等于向量
  1. factor 跟 vector 的关系

factor = 语义角色(它是一个组成成分)

vector = 数据存储形式(用一串数字去装这个成分)

  • factor:是什么角色(角色名:组成因子)
  • vector:长什么结构(载体:向量)

类比

"工人(factor角色)",可以用纸笔记录,可以用身份证编号(vector载体)记录。

工人≠编号。因子≠向量。


分层举例,彻底分清

①标量因子(不是向量,只是变量)

xnew=0.75⋅xx_{new} = 0.75 \cdot xxnew=0.75⋅x

0.75 叫缩放因子 scaling factor

  • 类型:标量(单个变量)
  • 名称:因子,作用是调节大小
    👉这里是factor,完全不是vector

②隐因子(用向量作为载体)

假设一张人脸由3个隐因子决定:身份、光照、角度

z=zid, zlight, zangle\boldsymbol z = z_{id},\\ z_{light},\\ z_{angle}z=zid, zlight, zangle

  • z\boldsymbol zz:隐因子向量
  • z_id:身份因子(向量其中一维)
  • z_light:光照因子(另一维)

整串向量,用来存放一套隐因子。

vector是容器,factor是容器里面代表的语义成分

公式表达:

X=W⋅zX = W \cdot \boldsymbol zX=W⋅z

  • z\boldsymbol zz:因子向量(一套隐因子)
  • WWW:因子载荷矩阵(每一列代表这个因子有多强的影响力)
  • XXX:最后生成的图像观测

③矩阵分解例子 R≈UVTR≈UV^TR≈UVT

  • U:用户因子矩阵
    U里每一行向量 = 一个用户的一组隐因子
    向量是存因子的形式,因子是向量承载的含义。

对比4个词,防止长期混淆

  1. Factor 因子:【概念/角色】组成整体的一个独立成因、分量
  2. Variable 变量:【数学符号】可以取不同数值的量
  3. Vector 向量:【数据结构】一串有序数字
  4. Token:【离散片段】切分出来的一块编码数据

组合关系

  • 一个因子 →可以是标量变量 ,也可以是向量变量
  • 一组因子 ,经常打包放到向量里面一起计算

所以论文里经常出现词组:latent factor vector(隐因子向量)

翻译:用来存放隐因子的向量。

不是说因子本身就等于向量


极简一句话总结

Factor(因子)描述它起什么作用 ,Vector(向量)描述它长什么结构

因子可以用向量装,也可以只是一个单独数字;向量可以存因子,也可以存坐标、特征、token表征。二者不属于同一套定义维度。

额外区分(极易混淆)

  • 特征 vector:直接描述当前样本外观
  • 隐因子 vector:描述生成这个样本背后的成因
    一张照片的特征向量:偏暗、侧脸、微笑
    对应的隐因子:光照因子、姿态因子、表情因子

factor 因子,按领域分类举例

记住统一语感:因子 = 一个起作用的分量、乘数、影响系数

不一定是向量,大量场景只是一个标量数字。

一、强化学习 / 控制(你熟悉的)

  1. 折扣因子 γ(discount factor)

    贝尔曼方程里:r+γV(s′)r+\gamma V(s')r+γV(s′)

    作用:给未来回报打衰减权重,越远期权重越低

    取值常见 0.9~0.99

  2. 温度因子 temperature factor

    采样的时候,调节随机探索程度;温度越大输出越多样。

  3. 衰减因子 decay factor

    优化器权重衰减,每一轮乘一个小于1系数,约束权重不要过大。

  4. 安全因子 safety factor

    机器人力矩、速度上限乘以安全因子0.7,预留安全余量。

二、数学|代数

  1. 因式分解 factor
    x2‑4=(x‑2)(x+2)x^2‑4=(x‑2)(x+2)x2‑4=(x‑2)(x+2),(x‑2)(x‑2)(x‑2) 是多项式因子
  2. 公因数、质因子
    12=2×2×312=2×2×312=2×2×3,2、3是12的质因子
  3. 比例因子 scale factor
    图形放大缩小倍数,坐标 × 比例因子

三、统计学、机器学习

  1. 隐因子 latent factor
    矩阵分解、推荐系统:用户偏好因子、物品属性因子(一般用向量表示)
  2. 因子分析 Factor Analysis
    从大量观测数据,提取背后少数几个影响成因因子
    例:学生成绩,提取【智力因子、努力因子】
  3. 权重因子 weight factor
    多损失函数加权:Loss=λ1L1+λ2L2Loss = λ_1L_1+λ_2L_2Loss=λ1L1+λ2L2,λ1,λ2λ_1,λ_2λ1,λ2为权重因子

四、深度学习、生成模型

  1. 噪声因子 noise factor
    扩散模型:控制每一步加入噪声强弱的系数
  2. 引导因子 guidance factor
    CFG分类器引导,文本条件强度放大倍数
  3. 缩放因子 scaling factor
    归一化、LayerNorm里面,对向量整体放大缩小的系数
  4. 残差因子
    残差连接 x+α⋅f(x)x+\alpha\cdot f(x)x+α⋅f(x),α控制分支贡献大小

五、信号、物理工程

  1. 阻尼因子 damping factor
    振动、二阶系统,决定震荡衰减快慢
  2. 增益因子 gain factor
    控制理论PD控制器输出放大倍数
  3. 畸变因子 distortion factor
    信号失真程度系数

六、日常业务

1.风险因子:风险计算时的加权系数

2.修正因子:实测值 ×修正因子,补偿系统误差

关键区分两组搭配

  1. 标量因子(绝大多数名词带因子的)

    折扣因子、阻尼因子、温度因子、安全因子

    👉单个数字,乘上去改变结果大小

  2. 隐因子 latent factor(特殊)

    为了描述多维度成因,用一组向量承载一组因子

    👉这里因子是多维分量,不再是单个数字

一句话总结

只要公式里有一项用来加权、缩放、调节贡献大小,这个项就经常被命名为XX因子(factor)。

向量只是一种存储形式,只有隐因子这类场景才会用向量表达。

因子 factor|系数 coefficient|权重 weight

核心定性区别(用词语感,工程/论文习惯)

  1. 因子 factor

侧重:调节、缩放、修正、参与构成 ,偏"放大削弱某一部分作用"

公式位置:大多做乘法项

  • 折扣因子 γ、温度因子、安全因子、缩放因子
  • 隐因子:事物背后的组成成因(语义层面,不一定是数字系数)

语感:这件结果里面,有这么一份影响成分。

  1. 系数 coefficient

侧重:方程固定参数 ,线性拟合里固定不变的常量

y=a⋅x+by = a\cdot x + by=a⋅x+b

aaa 就是x的系数

  • 摩擦系数、膨胀系数、多项式系数

语感:数学公式定义里,预先确定的常量参数。

  1. 权重 weight

侧重:多份结果之间,谁更重要 ,用于加权求和

Loss=w1L1+w2L2Loss = w_1L_1 + w_2L_2Loss=w1L1+w2L2

w1,w2w_1,w_2w1,w2 是权重

  • 网络权重、损失权重、注意力权重

语感:多个候选,分配重要程度,决定谁占比更高。


对比表格

名词 典型运算 核心含义 典型例子
因子 factor 乘法 y=f⋅xy = f \cdot xy=f⋅x 调节强弱、组成成分 折扣因子、噪声因子、隐因子
系数 coefficient 线性项 y=c⋅xy = c\cdot xy=c⋅x 方程固有常量参数 阻尼系数、回归系数
权重 weight 加法求和 y=∑wixiy=\sum w_i x_iy=∑wixi 多来源之间重要占比 网络权重、损失权重

重叠与混用说明(很多论文不会严格抠定义)

  1. 标量乘法系数,既可以叫系数,也可以叫因子

y=0.5xy=0.5xy=0.5x

0.5:缩放系数 / 缩放因子,两种叫法都正确

区别只在于作者想强调什么:

  • 强调公式参数 → 系数
  • 强调用来调节强度 → 因子
  1. 权重几乎不会叫因子
    加权求和的w,一般只叫权重,几乎不叫"求和因子"

3.隐因子是特例

隐因子不是单纯的数字,代表潜在成因

不能叫"隐权重""隐系数",只能叫隐因子 latent factor

结合你熟悉的公式举例

1.贝尔曼方程:r+γV(s′)r+\gamma V(s')r+γV(s′)

γ\boldsymbol\gammaγ:折扣因子 (调节未来回报的强度,乘法)

不会叫折扣系数、折扣权重

2.PD控制:τ=KpΔq+KdΔq˙\tau=K_p\Delta q+K_d\Delta\dot qτ=KpΔq+KdΔq˙

Kp,KdK_p,K_dKp,Kd:比例系数、微分系数 (控制器固有参数)

工程口语偶尔叫增益因子

3.多任务损失:L=λ1L1+λ2L2L=\lambda_1L_1+\lambda_2L_2L=λ1L1+λ2L2

λ1,λ2\lambda_1,\lambda_2λ1,λ2:损失权重(分配两项损失重要程度)

一句话极简总结

  • 系数:方程里的固定参数
  • 因子:用来乘上去调节强弱的分量(也可指成因)
  • 权重:多项相加时分配重要度

补充:

  • 参数 parameter:统称,上面三类数字全都可以叫参数。
    参数是大类名称,因子/系数/权重是按作用起的别名。

1.隐空间(Latent Space)通俗定义

观测空间 :你直接看到的数据(图片像素、音频波形、文字、关节轨迹)

隐空间

模型假想出来的高维数学空间

真实数据背后那一套「成因、因子、规律」所在的抽象空间。

类比

  • 观测空间:一张张拍出来的人脸照片(看得见)
  • 隐空间:由【身份、光照、角度、表情】这些隐因子张成的空间 (看不见)
    每一组隐因子向量,就是隐空间里面一个坐标点

公式视角:

z∈Z隐空间z \in \mathcal Z \quad \text{隐空间}z∈Z隐空间

x∈X原始观测空间x \in \mathcal X \quad \text{原始观测空间}x∈X原始观测空间

编码器:E(x)=zE(x)=zE(x)=z 观测 → 映射到隐空间取一个坐标

解码器:D(z)=xD(z)=xD(z)=x 隐空间坐标 →还原出原始数据

2.隐空间里面包含什么?

先说最重要一句:

隐空间里面不存在图片、文字、物体,只有无数高维坐标点(向量 z)

每个点 = 一组隐因子组合。

隐空间内包含两类事物

①空间本身:整套维度基底

空间由一堆隐因子维度 撑开

例:128维隐空间

维度0:偏向人脸身份因子

维度1:偏向光照明暗因子

维度2:偏向左右姿态因子

......

⚠没有谁提前规定第几维一定代表什么!

隐因子含义是模型训练后自发形成,不一定具备人类可解释语义

很多维度是混合纠缠状态,一个维度同时对应好几种物理因素。

②空间中的点(向量 z)

每一个点:

z=‑0.21, 0.53, 0.11,...z=‑0.21,\\ 0.53,\\ 0.11,...z=‑0.21, 0.53, 0.11,...

代表一套完整的隐因子组合

  • 两个点距离近:代表生成出来的观测样本语义接近
  • 在空间沿着某一条轴移动:对应某一种属性连续变化
    比如z沿着光照因子方向缓慢移动 →图片慢慢变亮变暗

❌误区

1.隐空间不是一块储存图片的仓库

不能在隐空间里"找到一张杯子的图片"

只能找到可以解码生成杯子图像的坐标向量

2.隐空间不是HNSW图

HNSW是在向量之上额外建的搜索图结构

隐空间只是纯数学坐标空间,本身没有邻居、没有边。

3.结合你熟悉的技术举例

1)VAE / 扩散模型

  • z:隐空间向量
    采样一个新z →解码器直接生成一张全新图片
    隐空间是生成图像的"蓝图空间"

2)流匹配 Flow‑Matching(机器人VLA动作)

动作不直接预测关节值,先预测隐空间轨迹

z沿着时间在隐空间连续平滑移动,再解码输出真实7维关节动作

隐空间可以让轨迹天然平滑,降低噪声。

3)对比CLIP图像向量

CLIP输出768维向量,本质就是映射到一个视觉隐空间

两张图片向量距离近=语义接近

向量库HNSW,就是在这个隐空间里面做近邻搜索

4.隐空间、隐因子、向量三者关系

  1. 隐因子:单个独立影响成分(光照、角度),对应空间某一个方向轴
  2. 隐空间 :所有隐因子轴撑开的完整高维空间
  3. 隐向量 z :隐空间当中一个坐标点,一套隐因子的组合结果

比喻

  • 纬度、经度、高度 →【隐因子,坐标轴】
  • 整个地球三维空间 →【隐空间】
  • (113,23,100)广州某点坐标 →【隐向量z】

5.一句话总结

隐空间:一套抽象高维坐标系

坐标系每根轴对应一种潜在影响因子

每一个坐标点(向量)代表一组因子组合

通过解码器,把坐标点还原成我们能看见的图片、语音、动作轨迹。

补充

  • 如果隐空间维度很低:低维隐空间
  • 如果维度很高(768‑4096):高维隐空间
    维度数量 ≠ 有多少个可解释因子,大量维度是混合纠缠。

一、什么是采样策略(Sampling Strategy)

定义:从一个概率分布里,挑选/生成样本的一套规则

模型输出不是直接输出固定答案,输出概率分布;采样策略决定「怎么从分布里挑出最终结果」。

通俗:

模型告诉你"这件事有一堆可能结果,各自概率不同"

采样策略 = 选择哪一条结果输出的决策规则

⚠区分两件极易混淆名词

  1. 采样策略 :选样本的规则逻辑(算法逻辑)
  2. 采样器(Sampler) :ODE/扩散里的数值积分器(Euler、RK4、DDIM),属于隐空间轨迹求解,不是概率采样策略。

二、四大应用领域(分别对应完全不一样的采样策略)

1|大模型文本Token生成(自回归)

输出:每个step词表概率分布

  1. 贪婪采样 Greedy:每一步直接选概率最大token(argmax),确定性输出,缺点容易重复、死板
  2. 束搜索 Beam Search:保留N条候选路径,全局打分选最优;翻译场景常用
  3. 温度采样 Temperature:先缩放概率分布,T>1增加随机性,T<1更保守确定
  4. Top‑K采样:只保留概率最高K个token,再随机抽取
  5. Top‑P(核采样 Nucleus) :动态选取累计概率≥P的最小候选集合,工业界LLM默认方案
  6. Min‑P采样:过滤掉绝对概率过低的token,高温度下不容易胡说

用途:对话、代码、推理、思维链输出token

控制效果:温度越高,回答越天马行空;温度=0等价贪婪搜索

2|扩散 / 流匹配(图像、机器人VLA动作轨迹)

两套完全不同的"采样"概念,经常被混为一谈

A)隐空间轨迹采样器(ODE求解器,数值计算)

不是概率采样!是微分方程步进算法

  • Euler(欧拉)
  • Heun(二阶)
  • RK4(四阶龙格库塔)
  • DDIM、DPM‑PPM(扩散专用步长方案)

作用:从纯噪声z₀沿着速度场,一步步积分走到最终动作隐向量z₁

B)概率采样策略(多条轨迹候选筛选)

  1. 确定性采样:只跑1条ODE路径,直接输出轨迹(Pi0、ACT默认)
  2. 多候选采样:跑N条不同噪声初始值,生成N条动作轨迹,选最优一条执行
  3. CFG引导采样:条件放大因子,强化语言指令对轨迹的约束

机器人VLA场景:

流匹配本身ODE是确定性;想要多样性,只能改变初始隐向量z的随机种子,多次rollout采样多条轨迹。

3|强化学习 RL(MDP,Rollout采样策略)

采样【状态‑动作‑奖励完整轨迹】

  1. 贪心采样:永远选Q值最大动作(利用,exploitation)
  2. ε‑greedy ε贪心:ε概率随机探索,1‑ε选最优动作(最经典)
  3. 高斯采样:连续动作空间,均值+方差高斯分布采样(机器人连续动作RL)
  4. 软最大采样Softmax:按Q值概率加权随机选动作
  5. 分层rollout采样:多条轨迹并行采样,筛选高回报样本

用途:环境交互、在线试错收集训练数据,贝尔曼方程迭代优化策略

4|数据集训练阶段采样策略(取batch)

不是推理采样!训练时选哪些样本送入网络

  1. 均匀随机采样:shuffle,完全随机取样本(默认)
  2. 加权重采样:少数类提高采样概率,解决类别不平衡
  3. 困难样本采样:优先loss大、难学的样本
  4. 时序窗口采样:机器人数据集,固定长度轨迹片段采样

三、一张总表区分

领域 采样对象 典型策略
LLM文本 下一个Token 贪婪、Beam、Top‑P、Top‑K、温度
扩散/流匹配 隐空间向量轨迹 Euler/Heun/RK4(求解器)|多条轨迹候选筛选
强化学习 环境交互完整轨迹 ε‑greedy、高斯采样、softmax、rollout采样
数据集训练 训练样本batch 加权采样、难例采样、时序采样

四、针对你关心的VLA机器人场景总结

  1. VLA【推理输出动作】
  • 流匹配本身:ODE积分器(Euler/RK4)生成单条轨迹,默认确定性,无概率采样
  • 如果要多方案择优:多次随机初始化隐变量z,生成多条轨迹(多候选采样策略)
  1. VLA【RL微调阶段】
  • rollout采样策略:控制机器人怎么在真机/仿真里跑出多条轨迹,拿奖励更新网络
  1. VLA【数据集训练】
  • 时序窗口采样:从专家轨迹里面切一段段动作序列,构成训练batch

五、一句话总结

采样策略 = 一套挑选样本的决策规则

  • Token场景:从词表里选词
  • RL场景:环境里选动作跑完整轨迹
  • 生成模型:从分布里选隐变量,生成完整图像/动作轨迹

ODE/Euler/RK4属于微分方程数值求解器,不属于概率采样策略,只是生成轨迹的计算工具。

采样策略|采样器|调度器 三者区分

很多论文、工程口语会混用,底层定义完全不一样

1. 采样策略 Sampling Strategy

【决策逻辑:按什么规则去选】

作用:定义选样本的规则、概率、取舍逻辑

  • LLM:Top‑P、Top‑K、温度、束搜索、贪婪
  • RL:ε‑greedy、高斯探索、难例采样、加权采样
  • VLA:多轨迹择优采样、单条确定性输出

一句话:决定"挑哪一个"

输出:得到一个候选样本/候选序列

2. 采样器 Sampler

【计算工具:一步一步算出来】

分两大完全不同类别

类别A:概率采样器

从概率分布抽取随机数的底层函数

高斯采样器、多项式采样器(按概率抽token)

类别B:ODE/扩散采样器(机器人、图像生成最容易混淆)

微分方程数值求解器 ,走时间步迭代计算隐空间轨迹

Euler、Heun、RK4、DDIM、DPM‑2M

一句话:给定初始条件,一步步算出完整轨迹

它只管解方程,本身不做概率随机决策

哪怕完全确定性,依然叫采样器
重点区分:

  • 采样策略:要不要随机、保留多少候选
  • 采样器:用什么数学积分公式算出轨迹

3. 调度器 Scheduler

【超参随步数变化的计划表】

作用:随时间步,动态修改一组参数 ,不直接生成样本,不做选择

常见:

1)扩散噪声调度器:每一步噪声强度 β(t)

2)CFG引导强度调度器:推理过程逐步增减guidance_factor

3)学习率调度器:训练过程逐步降低学习率

4)温度调度器:推理后半段逐步降低随机性

一句话:随着步数,动态调参,是一套参数变化方案

最简类比(流匹配生成一条动作轨迹)

  1. 调度器Scheduler:规定第1~N步,速度权重怎么变化(参数计划表)
  2. 采样器Sampler:RK4数值积分,按调度参数一步步积分算出z轨迹(计算工具)
  3. 采样策略Strategy:生成3条不同初始z轨迹,选最合理一条输出(决策规则)

表格汇总

名词 定位 核心作用 典型例子
采样策略 决策层 选择样本的一套规则 Top‑P、ε‑greedy、多轨迹择优
采样器 计算层 数值求解 / 随机抽取 Euler,RK4,多项式采样器
调度器 参数层 动态改变超参 噪声调度、学习率调度、CFG调度

VLA‑流匹配完整链路对照

初始随机z →【调度器】确定每一步系数 →【RK4采样器】积分得到轨迹 →【采样策略】多条轨迹选最优 →输出动作

  • 缺调度器:参数全程不变,生成效果差
  • 缺采样器:没有办法求解微分方程算轨迹
  • 缺采样策略:只能输出单一条固定结果,无法择优

一句话记忆口诀

策略决定怎么选,采样器负责怎么算,调度器控制参数怎么变。

补充一个高频误区

"DDIM采样策略"

严格来说:DDIM是采样器(求解算法) ,不是策略;

口语大家习惯叫"DDIM采样策略",属于工程俗称,不是严谨定义。

DDIM 原理 + 函数调用 + 代码示例

先定性:DDIM 属于扩散模型反向过程的采样器(ODE求解器) ,不是采样策略。

DDPM 需要1000步反向去噪,DDIM 通过非马尔可夫假设,可以跳步,用 20‑50 步就能生成,大幅加速推理。

1.核心递推公式(DDIM 更新函数)

xt−1=αt−1(xt−1−αt εθ(xt,t)αt)⏟预测干净样本 x0+1−αt−1−σt2 εθ(xt,t)+σt ϵ x_{t-1}=\sqrt{\alpha_{t-1}}\underbrace{\left( \frac{x_t-\sqrt{1-\alpha_t}\,\varepsilon_\theta(x_t,t)}{\sqrt{\alpha_t}} \right)}{\text{预测干净样本 }x_0} +\sqrt{1-\alpha{t-1}-\sigma_t^2}\,\varepsilon_\theta(x_t,t) +\sigma_t\,\boldsymbol\epsilon xt−1=αt−1 预测干净样本 x0 (αt xt−1−αt εθ(xt,t))+1−αt−1−σt2 εθ(xt,t)+σtϵ

  • xtx_txt:t时刻带噪隐变量
  • εθ(xt,t)\varepsilon_\theta(x_t,t)εθ(xt,t):网络预测的噪声
  • αt=∏i=1t(1−βi)\alpha_t=\prod_{i=1}^t(1-\beta_i)αt=∏i=1t(1−βi),预定义噪声调度
  • σt\sigma_tσt:随机项系数
    • σt=0\boldsymbol{\sigma_t=0}σt=0 → 确定性DDIM(无随机噪声,最常用)
    • σt>0\sigma_t>0σt>0 →带随机性,介于DDIM与DDPM之间

当 σt=(1−αt−1)/(1−αt)1−αt/αt−1\sigma_t=\sqrt{(1-\alpha_{t-1})/(1-\alpha_t)}\sqrt{1-\alpha_t/\alpha_{t-1}}σt=(1−αt−1)/(1−αt) 1−αt/αt−1 ,等价 DDPM。

2.函数输入输出(逻辑层面怎么"用")

单步DDIM函数

复制代码
输入:
    xt          当前带噪向量
    t           当前时间步
    t_prev      上一个时间步(可以跨步,不是必须 t‑1)
    ε_theta     噪声预测网络
    α_t,α_tprev 调度表参数
    eta         随机性系数(η=0纯确定)
输出:
    xt_prev     去噪一步之后的向量

关键点:

DDIM允许自定义时间步序列 ,不必连续 1000,999,998...

可以直接取 1000,800,600,...,0,仅20步完成生成。

3.完整推理流程(调用顺序)

  1. 预先定义时间步序列 ,例如 50步采样:
    timesteps = [980,960,940 ... ,20,0]
  2. 随机初始化 xTx_TxT(纯噪声)
  3. 循环遍历时间序列:
    • t = 当前步,t_prev = 下一个更小的步
    • 调用网络预测噪声 ε=εθ(xt,t)\varepsilon=\varepsilon_\theta(x_t,t)ε=εθ(xt,t)
    • 代入DDIM公式计算 xtprevx_{t_{prev}}xtprev
    • 赋值 xt=xtprevx_t = x_{t_{prev}}xt=xtprev
      4.循环结束,x0x_0x0 即为生成结果

4.极简伪代码实现(DDIM单步函数)

python 复制代码
def ddim_step(xt, t, t_prev, eps_model, alpha_bar, eta=0.0):
    # 取出调度参数
    at = alpha_bar[t]
    at_prev = alpha_bar[t_prev]

    # 预测噪声
    eps_pred = eps_model(xt, t)

    # 预测原始样本 x0
    x0_pred = (xt - (1-at)**0.5 * eps_pred) / (at**0.5)

    # DDIM公式三项
    term1 = (at_prev**0.5) * x0_pred
    term2 = ((1-at_prev) - (eta**2)*(1-at)/(1-at_prev)*(1-at_prev))**0.5 * eps_pred

    # 随机噪声项 eta=0 时直接为0
    if eta > 0:
        sigma = eta * ((1-at_prev) * (1-at)/(1-at_prev))**0.5
        noise = torch.randn_like(xt)
        term3 = sigma * noise
    else:
        term3 = 0

    xt_prev = term1 + term2 + term3
    return xt_prev
  • eta=0:标准确定性DDIM,每次输入同一个噪声,输出完全固定
  • eta=0.3:加入少量随机,增加生成多样性

5.工程框架里怎么直接调用(HuggingFace diffusers)

python 复制代码
from diffusers import DDIMScheduler

scheduler = DDIMScheduler(num_train_timesteps=1000)
# 推理设置25步
scheduler.set_timesteps(num_inference_steps=25)

# 循环采样
for t in scheduler.timesteps:
    noise_pred = unet(xt, t).sample
    # 直接调用ddim单步函数
    xt = scheduler.step(noise_pred, t, xt).prev_sample

scheduler.step() 就是封装好的DDIM函数。

6.对比流匹配视角(VLA机器人)

  1. DDIM:离散反向扩散迭代,依赖预计算α噪声调度表
  2. Flow‑Matching:直接求解ODE速度场,用Euler / RK4积分器

功能相似:都是逐步更新隐变量得到输出轨迹

数学体系完全不同,流匹配没有α、β噪声调度

7.容易踩坑

  1. 训练是1000步DDPM,推理用DDIM跳步,不需要重新训练
  2. 步数越少速度越快,但细节会变差,一般20‑50步折中
  3. eta≠0才带随机性;eta=0属于确定性采样器,不存在随机采样

一句话总结用法

DDIM是一套单步去噪迭代函数,传入当前隐变量+时间步,按公式算出下一步,配合自定义跳步时间序列,用远少于训练步数完成生成。

相关推荐
Amazing_Cacao5 小时前
CFCA精品可可产区风土体系(亚洲):彻底拒绝应试背诵,将感官复核作为检验真实物理差异的唯一铁律
学习
caimouse11 小时前
protoc-gen-c 支持 proto3 `optional` 关键字修改记录
c语言·学习
憧憬成为java架构高手的小白11 小时前
黑马八股--中间件学习之MQ(RabbitMQ)
学习·中间件
撩得Android一次心动13 小时前
Linux编程笔记4【个人用】
linux·笔记·学习
user-猴子13 小时前
让网页“活”过来 —— 用AI打造会自主学习的动态知识图谱
人工智能·学习·知识图谱
网络工程小王14 小时前
【HCIE-AI】10.pytorch模型迁移分析
人工智能·学习·华为·llama
魔城烟雨15 小时前
从零开始学习betaflight《3-硬件接口设计规范标准》
学习·设计规范
不言鹅喻17 小时前
HarmonyOS ArkTS 实战:实现一个单词背诵与英语学习应用
学习·华为·harmonyos
正经人_x18 小时前
学习日记42
学习