# 积分因子解一阶线性 ODE 这节的目的 DDPM 闭式 $x_t=\sqrt{\bar\alpha_t}\,x_0+\sqrt{1-\bar\alpha_t}\,\epsilon$ 是两半拼起来的,$\sqrt{\bar\alpha}\,x_0$ 是信号那半,$\sqrt{1-\bar\alpha}\,\epsilon$ 是噪声那半。上一节(变系数 ODE)已经把信号那半从头推出来了。**这节推噪声那半,推完整个闭式就都是从头推通的。** > [!abstract] 这节的方程长什么样、新在哪、为什么要换工具 > 追踪什么。 看加噪可以不逐份跟踪每一份噪声,而是每步只记两个概括量:这堆 $x_t$ 的中心在哪(均值),散开多大(方差)。两个量各满足一条只依赖自己的递推,能分开追。上一节追均值,这节追方差,记 $v_t:=\mathrm{Var}(x_t)$。旧噪声一层层压缩的总效果,全打包在 $v_{t-1}$ 里。 > > 方差的递推式。 对 $x_t=\sqrt{1-\beta_t}\,x_{t-1}+\sqrt{\beta_t}\,\epsilon$ 求方差(完整推导见「和扩散对上」,这里直接用): > $v_t=(1-\beta_t)\,v_{t-1}+\beta_t$ > 第一项 $(1-\beta_t)v_{t-1}$ 是旧方差被压缩、略缩一点,带 $v$;第二项 $\beta_t$ 是这一步新掺的噪声,直接加上去,不带 $v$。 > > 变成连续方程。 把第一项括号乘开、$v_{t-1}$ 移到左边: > $v_t-v_{t-1}=-\beta_t\,v_{t-1}+\beta_t$ > 步长趋于 $0$,差变导数,$\beta_t$ 写成 $\beta(t)$: > $\frac{\mathrm{d}v}{\mathrm{d}t}=-\beta(t)\,v+\beta(t)$ > > 换通用字母、整理成标准样子。 「右边多一项不带未知函数」是一类方程的共同特征,为了讲这一类,把未知函数写成 $m$、系数写成 $p(t)$、$q(t)$(对回去 $m$ 是 $v$,$p(t)$、$q(t)$ 都是 $\beta(t)$)。把带 $m$ 的项都收到左边: > $\frac{\mathrm{d}m}{\mathrm{d}t}+p(t)\,m=q(t)$ > 左边两项都带 $m$,右边只剩不带 $m$ 的纯时间项 $q(t)$。这就是这类题的标准形。 > > 为什么要换工具。 上一节(变系数)的方程 $\dfrac{\mathrm{d}m}{\mathrm{d}t}=a(t)m$ 右边每处都带 $m$,用 $e^{\int}$ 正好对付。**这节右边多了个不带 $m$ 的 $q(t)$(就是每步新加的噪声 $\beta(t)$),$e^{\int}$ 那条路接不上,所以换新工具——积分因子。**当 $q(t)=0$(没多出那块),方程退回 $\dfrac{\mathrm{d}m}{\mathrm{d}t}=-p(t)m$,正是上一节,所以变系数是这节的特例。 > [!abstract] 解法:乘一个积分因子,三步解出 > 给方程两边乘一个特挑的时间函数 $\mu(t)$,叫积分因子,取 > $\mu=e^{\int p(t)\,\mathrm{d}t}$ > 这个 $\mu$ 的来历见下面折叠卡。 > > 两边乘 $\mu$,每一项都乘上,左边两项、右边一项: > $\mu\,\frac{\mathrm{d}m}{\mathrm{d}t}+\mu\,p(t)\,m=\mu\,q(t)$ > > 左边这两项 $\mu\dfrac{\mathrm{d}m}{\mathrm{d}t}+\mu\,p(t)\,m$,能合写成一个乘积的导数 $\dfrac{\mathrm{d}}{\mathrm{d}t}(\mu m)$,而这正是前面把 $\mu$ 特意取成 $e^{\int p(t)\,\mathrm{d}t}$ 的原因,换个别的 $\mu$ 就合并不了($p(t)$ 怎么收进这个导数、为什么必须取这个 $\mu$,见下面折叠卡)。 > 先把第二项的 $\mu\,p(t)$ 换成 $\dfrac{\mathrm{d}\mu}{\mathrm{d}t}$(因为挑的 $\mu$ 满足 $\dfrac{\mathrm{d}\mu}{\mathrm{d}t}=\mu\,p(t)$),左边就成了乘积法则展开的样子: > $\mu\,\frac{\mathrm{d}m}{\mathrm{d}t}+\frac{\mathrm{d}\mu}{\mathrm{d}t}\,m=\mu\,q(t)$ > 再把左边两项合并回一个导数: > $\frac{\mathrm{d}}{\mathrm{d}t}(\mu\,m)=\mu\,q(t)$ > 左边是 $\mu m$ 的导数,右边 $\mu q(t)$ 只含时间、不含 $m$。于是两步收尾。 > > 第一步,两边对 $t$ 积分,左边导数和积分抵消(求导与积分互逆,一来一回抵消),剩 $\mu m$: > $\mu\,m=\int \mu\,q(t)\,\mathrm{d}t+C$ > 第二步,两边除以 $\mu$,把 $m$ 单独留下: > $m=\frac{1}{\mu}\Big(\int \mu\,q(t)\,\mathrm{d}t+C\Big)$ > 常数 $C$ 用起点的值定。整套就是,先算 $\mu=e^{\int p(t)\,\mathrm{d}t}$,再算 $\int \mu\,q(t)\,\mathrm{d}t$,最后除掉 $\mu$。 > [!note]- 为什么积分因子取 $\mu=e^{\int p(t)\,\mathrm{d}t}$ > 从标准方程 $\dfrac{\mathrm{d}m}{\mathrm{d}t}+p(t)\,m=q(t)$ 两边乘 $\mu$: > $\mu\,\frac{\mathrm{d}m}{\mathrm{d}t}+\mu\,p(t)\,m=\mu\,q(t)$ > 目标:让左边变成一个乘积的导数 $\dfrac{\mathrm{d}}{\mathrm{d}t}(\mu m)$。因为左边一旦是某东西的导数,两边一积分就消掉导数、直接解出来。 > > 把目标用乘积法则展开: > $\frac{\mathrm{d}}{\mathrm{d}t}(\mu m)=\mu\,\frac{\mathrm{d}m}{\mathrm{d}t}+\frac{\mathrm{d}\mu}{\mathrm{d}t}\,m$ > 跟手里的左边比:第一项都是 $\mu\dfrac{\mathrm{d}m}{\mathrm{d}t}$,自动对上。第二项,手里 $m$ 前面是普通系数 $\mu\,p(t)$,目标 $m$ 前面是导数 $\dfrac{\mathrm{d}\mu}{\mathrm{d}t}$——只差这一处。 > > 要让它俩对上,就挑一个 $\mu$,它的导数恰好等于 $\mu\,p(t)$: > $\frac{\mathrm{d}\mu}{\mathrm{d}t}=\mu\,p(t)$ > 这是变系数那种「导数等于自己乘系数」的题型,解出来: > $\mu=e^{\int p(t)\,\mathrm{d}t}$ > 挑定它,第二项就对上了,左边正好是 $\dfrac{\mathrm{d}}{\mathrm{d}t}(\mu m)$: > $\mu\,\frac{\mathrm{d}m}{\mathrm{d}t}+\mu\,p(t)\,m=\frac{\mathrm{d}}{\mathrm{d}t}(\mu m)$ > [!abstract] 完整解一道 > 解 $\dfrac{\mathrm{d}m}{\mathrm{d}t}+3m=6$,$m(0)=0$。 > > 先对齐模板,认出 $p(t)$ 和 $q(t)$ > 模板: > $\frac{\mathrm{d}m}{\mathrm{d}t}+p(t)\,m=q(t)$ > 本题: > $\frac{\mathrm{d}m}{\mathrm{d}t}+3\,m=6$ > 上下对齐,$m$ 前面的系数对上 $p(t)$,得 $p(t)=3$;等号右边那项对上 $q(t)$,得 $q(t)=6$。两个来自不同位置,各填各的。 > > 第一步,积分因子 > $\mu=e^{\int p(t)\,\mathrm{d}t}=e^{\int 3\,\mathrm{d}t}=e^{3t}$ > > 第二步,两边乘 $e^{3t}$,左边合成乘积的导数 > $\frac{\mathrm{d}}{\mathrm{d}t}(e^{3t}m)=e^{3t}\cdot 6=6e^{3t}$ > > 第三步,两边对 $t$ 积分 > 左边,对「$e^{3t}m$ 的导数」积分,导数和积分抵消(求导与积分互逆),剩 $e^{3t}m$。 > 右边,算 $\int 6e^{3t}\,\mathrm{d}t$,结果是 $2e^{3t}$(验证:$2e^{3t}$ 求导,$3$ 掉下来得 $2\cdot3e^{3t}=6e^{3t}$,对上了): > $e^{3t}m=2e^{3t}+C$ > > 第四步,两边除以 $e^{3t}$ > $m=2+C\,e^{-3t}$ > > 第五步,用 $m(0)=0$ 建立等式($m(0)$ 是 $t=0$ 时刻的值,所以等式建在 $t=0$ 上),解出 $C$ > $m(0)=2+C\,e^{-3\cdot 0}$ > 代入 $t=0$,且 $e^{0}=1$: > $0=2+C\cdot 1$ > $\Rightarrow\quad C=-2$ > 代入 $C=-2$,得 $m=2-2e^{-3t}$ > [!note]- 积分因子三步,每步在干什么(自然语言版) > 方程 $\dfrac{\mathrm{d}m}{\mathrm{d}t}+p(t)m=q(t)$,三步解出,每步只干一件事: > > - 乘 $\mu$ —— 把左边凑成「一个乘积的导数」$\dfrac{\mathrm{d}}{\mathrm{d}t}(\mu m)$,让它变得可积分。($\mu=e^{\int p\,\mathrm{d}t}$ 是专门为这步挑的。) > - 积分 —— 把那个导数符号剥掉,从「$\mu m$ 的导数 = 啥」退回「$\mu m$ = 啥」。这是整套里唯一真正「从变化率拿回函数」的一步,顺带冒出个 $+C$。 > - 除 $\mu$ —— 把粘在 $m$ 上的 $\mu$ 甩掉,把 $m$ 单独解出来。 > > 为什么中间非积分不可:乘完 $\mu$ 后,方程只告诉你 $\mu m$ 的导数(怎么变),不告诉你 $\mu m$ 本身(等于多少)。导数和目标差一层,剥掉这层、从导数退回函数本身的唯一操作就是积分。不积分,你手里永远是「$\mu m$ 的导数 = 某某」,拿不到 $\mu m$,也就拿不到 $m$;第四步那个除法也没东西可除。 > > 一句话:**乘是为了能积,除是因为积完还粘着 $\mu$;积分本身才是把答案捞出来的那一下。** > [!note]- 和扩散对上,把噪声那半 $\sqrt{1-\bar\alpha}$ 推出来 > > 第一步,对前向一步取方差 > 这里推的是给定 $x_0$ 的方差。$x_0$ 定死、当常数,所以图片本身不贡献方差(常数方差为 $0$),整条只追噪声累积。起点 $v(0)=\mathrm{Var}(x_0)=0$,这点第七步会用到。 > 对前向一步: > $x_t=\sqrt{1-\beta_t}\,x_{t-1}+\sqrt{\beta_t}\,\epsilon$ > 两个独立量相加,方差按系数平方相加,其中标准噪声 $\mathrm{Var}(\epsilon)=1$: > $\mathrm{Var}(x_t)=(1-\beta_t)\,\mathrm{Var}(x_{t-1})+\beta_t$ > 简写 $v_t=\mathrm{Var}(x_t)$: > $v_t=(1-\beta_t)\,v_{t-1}+\beta_t$ > > 第二步,整理成标准形 > 把第一项括号乘开、$v_{t-1}$ 移到左边,看这一步变了多少: > $v_t-v_{t-1}=-\beta_t\,v_{t-1}+\beta_t$ > 步长趋于 $0$,差变导数,$\beta_t$ 写成连续的 $\beta(t)$: > $\frac{\mathrm{d}v}{\mathrm{d}t}=-\beta(t)\,v+\beta(t)$ > 把带 $v$ 的项移到左边,成标准形: > $\frac{\mathrm{d}v}{\mathrm{d}t}+\beta(t)\,v=\beta(t)$ > 对齐 $\dfrac{\mathrm{d}m}{\mathrm{d}t}+p(t)m=q(t)$,读出: > $p(t)=\beta(t)\qquad q(t)=\beta(t)$ > > 第三步,写出积分因子 > $\mu=e^{\int p(t)\,\mathrm{d}t}=e^{\int_0^t \beta(s)\,\mathrm{d}s}$ > > 第四步,先求 $\mu$ 的导数 > 链式法则,外层 $e$ 抄下来,内层对上限 $t$ 求导得 $\beta(t)$: > $\frac{\mathrm{d}\mu}{\mathrm{d}t}=e^{\int_0^t \beta(s)\,\mathrm{d}s}\cdot\beta(t)=\mu\,\beta(t)$ > > 第五步,两边乘 $\mu$,左边合成一个导数 > 标准形两边每一项乘 $\mu$: > $\mu\,\frac{\mathrm{d}v}{\mathrm{d}t}+\mu\,\beta(t)\,v=\mu\,\beta(t)$ > 用第四步 $\mu\,\beta(t)=\dfrac{\mathrm{d}\mu}{\mathrm{d}t}$,把左边第二项换掉: > $\mu\,\frac{\mathrm{d}v}{\mathrm{d}t}+\frac{\mathrm{d}\mu}{\mathrm{d}t}\,v=\mu\,\beta(t)$ > 左边合并成一个乘积的导数: > $\frac{\mathrm{d}}{\mathrm{d}t}(\mu\,v)=\mu\,\beta(t)$ > 右边也用 $\mu\,\beta(t)=\dfrac{\mathrm{d}\mu}{\mathrm{d}t}$ 换掉: > $\frac{\mathrm{d}}{\mathrm{d}t}(\mu\,v)=\frac{\mathrm{d}\mu}{\mathrm{d}t}$ > > 第六步,两边积分 > 两边对 $t$ 积分,导数和积分抵消: > $\mu\,v=\mu+C$ > > 第七步,用起点定 $C$ > 要把 $t=0$ 代进第六步的 $\mu v=\mu+C$,需要两个起点值,$v(0)$ 和 $\mu(0)$,先各自算出来。 > $v(0)$,第一步说过,起点图片干净、当常数,方差是 $0$: > $v(0)=0$ > $\mu(0)$,把 $t=0$ 代进 $\mu=e^{\int_0^t\beta(s)\,\mathrm{d}s}$,指数上从 $0$ 积到 $0$、区间没有长度、积分是 $0$: > $\mu(0)=e^{\int_0^0\beta(s)\,\mathrm{d}s}=e^0=1$ > 把 $t=0$ 代进 $\mu v=\mu+C$,即 $\mu(0)\,v(0)=\mu(0)+C$: > $1\cdot 0=1+C\quad\Rightarrow\quad C=-1$ > > 第八步,除以 $\mu$,解出 $v$ > 把 $C=-1$ 代回第六步: > $\mu\,v=\mu-1$ > 两边除以 $\mu$: > $v=1-\frac{1}{\mu}=1-e^{-\int_0^t \beta(s)\,\mathrm{d}s}$ > > 第九步,把噪声方差 $v$ 写成你熟的 $1-\bar\alpha$ > 第八步得到的 $v=1-e^{-\int_0^t\beta\,\mathrm{d}s}$ 这个样子你不熟,你熟的是 $1-\bar\alpha(t)$。两个对比,前面 $1-$ 一样,所以只要证明中间那坨 $e^{-\int_0^t\beta\,\mathrm{d}s}$ 就是 $\bar\alpha(t)$,整条就变成 $1-\bar\alpha(t)$。下面去对上这一坨。 > > 要对上,先得知道 $\bar\alpha(t)$ 长什么样。$\bar\alpha(t)$ 没直接推过,但它的根号 $\sqrt{\bar\alpha}(t)$ 在 13 推过(那节推信号那半的系数),结果是: > $\sqrt{\bar\alpha}(t)=e^{-\frac12\int_0^t\beta(s)\,\mathrm{d}s}$ > 这是带根号的 $\sqrt{\bar\alpha}$,我们要不带根号的 $\bar\alpha$,把它两边平方。 > 左边平方,$\sqrt{\bar\alpha}$ 掉根号变 $\bar\alpha$;右边平方,$e$ 的指数乘 $2$,$-\tfrac12$ 变 $-1$: > $\bar\alpha(t)=e^{-\int_0^t\beta(s)\,\mathrm{d}s}$ > 这正好就是 $v$ 里中间那一坨。所以那坨就是 $\bar\alpha(t)$,换掉: > $v(t)=1-\bar\alpha(t)$ > 这就是你熟的噪声那半的方差。开根号,得噪声那半的系数: > $\sqrt{v(t)}=\sqrt{1-\bar\alpha(t)}$ > 配上信号那半 $\sqrt{\bar\alpha}(t)\,x_0$,整条加噪闭式凑齐: > $x_t=\sqrt{\bar\alpha}(t)\,x_0+\sqrt{1-\bar\alpha(t)}\,\epsilon$ > [!question]- 练习 > 一,$\dfrac{\mathrm{d}m}{\mathrm{d}t}+m=2$,$m(0)=0$,写出 $m(t)$。 > 二,$\dfrac{\mathrm{d}m}{\mathrm{d}t}+2m=0$,$m(0)=3$,写出 $m(t)$。这题右边外加项是 $0$,可以不用积分因子,直接套常数解 $m(t)=m(0)e^{at}$。 > [!note]- 练习答案 > 第一题 $\dfrac{\mathrm{d}m}{\mathrm{d}t}+m=2$,$m(0)=0$。 > 读出 $p(t)=1$,$q(t)=2$。 > 积分因子 $\mu=e^{\int 1\,\mathrm{d}t}=e^{t}$。 > 两边乘 $e^{t}$,左边合成乘积的导数: > $\frac{\mathrm{d}}{\mathrm{d}t}(e^{t}m)=2e^{t}$ > 两边积分,导数等于 $2e^{t}$ 的函数是 $2e^{t}$: > $e^{t}m=2e^{t}+C$ > 除以 $e^{t}$: > $m=2+C\,e^{-t}$ > 代 $m(0)=0$,得 $0=2+C$,$C=-2$: > $m=2-2e^{-t}$ > > 第二题 $\dfrac{\mathrm{d}m}{\mathrm{d}t}+2m=0$,$m(0)=3$。 > 右边外加项是 $0$,移项得 $\dfrac{\mathrm{d}m}{\mathrm{d}t}=-2m$,正是常数情形 $\dfrac{\mathrm{d}m}{\mathrm{d}t}=am$ 的题型,系数 $a=-2$。直接套 $m(t)=m(0)e^{at}$: > $m=3e^{-2t}$