跳转至

第13讲 认知与计算(二)

AIGC 与隐变量模型

人工智能内容生成(artificial intelligence generated content,AIGC)是根据用户提示生成文本、图像、视频、音频或软件代码等媒体数据的人工智能技术。其基本假设是数据来自真实分布 \(p^*(x_0)\),再定义一个便于处理的生成分布 \(p_\theta(x_0)\),令 \(x_0\sim p_\theta(x_0)\);学习目标是找到参数 \(\theta\),使模型分布尽量接近真实分布。

隐变量模型通过引入不可直接观测的潜变量来描述复杂数据分布。潜变量可以捕捉数据中的潜在结构或未观测因素,从而解释生成过程或降低模型复杂度。图像生成的常见路线包括 GAN、VAE、Flow 和 Diffusion Model。

从自编码器到变分自编码器

自编码器(Autoencoder,AE)是一种无监督神经网络,由编码器 \(f_E(x)\) 和解码器 \(f_G(z)\) 组成。编码器把输入映射到潜空间得到 \(z\),解码器由 \(z\) 重建原始数据;训练时最小化重建结果与原输入的误差,使 \(z\) 尽量保留关键信息。AE 可用于降维、特征提取和去噪。

变分自编码器(Variational Autoencoder,VAE)是 AE 的生成式扩展。编码器输出的是潜变量 \(z\) 的概率分布,通常假设为高斯;从该分布采样 \(z\) 后交给解码器重建。除重建损失外,还要约束潜变量分布。

对比项 AE VAE
编码器输出 固定潜变量 潜变量的概率分布
生成能力 不能直接生成新样本 可从潜变量分布采样生成
损失 重构损失 重构损失与 KL 散度损失
应用 降维、去噪 生成、潜空间插值

给定训练集 \(D=\{x_1,\ldots,x_N\}\),VAE 希望极大化数据对数似然:

\[ \max_\theta l(\theta;D)=\max_\theta\sum_{i=1}^{N}\log p_\theta(x_i)=\max_\theta\sum_{i=1}^{N}\log\int p_\theta(x_i\mid z)p(z)\,dz. \]

由于 \(p_\theta(x\mid z)\) 对应的积分难以直接求解,引入容易优化、能逼近对数似然的证据下界(evidence lower bound,ELBO)。Evidence 指观测数据分布 \(p(x)\)。课件给出的 Jensen 形式为 \(g(\mathbb E[x])\geq\mathbb E[g(x)]\),并据此推得

\[ \begin{aligned} \log p(x)&=\log\int p(x,z)\,dz\\ &=\log\int q_\phi(z\mid x)\frac{p(x,z)}{q_\phi(z\mid x)}\,dz\\ &=\log\mathbb E_{z\sim q_\phi}\left[\frac{p(x,z)}{q_\phi(z\mid x)}\right]\\ &\geq\mathbb E_{z\sim q_\phi}\left[\log\frac{p(x,z)}{q_\phi(z\mid x)}\right]\equiv\operatorname{ELBO}. \end{aligned} \]

采用通常的非负 KL 散度定义

\[ D_{\mathrm{KL}}(q\|p)=\mathbb E_q\log\frac{q}{p}\geq0, \]

第一种分解应写成

\[ \log p(x)=\operatorname{ELBO}+D_{\mathrm{KL}}\bigl(q_\phi(z\mid x)\Vert p(z\mid x)\bigr), \]

也就是

\[ \operatorname{ELBO}=\log p(x)-D_{\mathrm{KL}}\bigl(q_\phi(z\mid x)\Vert p(z\mid x)\bigr). \]

课件第 13 页把 \(\int q\log(p/q)\) 标作 KL,所以版面上出现了“\(\log p(x)+KL\)”;该积分实际等于 \(-D_{\mathrm{KL}}(q\|p)\)。当近似后验 \(q_\phi(z\mid x)\) 与真实后验 \(p(z\mid x)\) 相等时,ELBO 等于对数似然。真实后验难以获取,因此用参数化的 \(q_\phi(z\mid x)\) 近似它,这就是“变分”的含义。第二种分解把目标拆成重建项和正则项:

\[ \operatorname{ELBO}=\mathbb E_{z\sim q_\phi}\log p_\theta(x\mid z)-\operatorname{KL}\bigl(q_\phi(z\mid x)\Vert p(z)\bigr). \]

其中 \(p_\theta(x\mid z)\) 相当于解码器,\(q_\phi(z\mid x)\) 相当于编码器,先验通常取 \(p(z)\sim\mathcal N(0,I)\)。因此最小化负 ELBO 时,采用通常的 KL 定义应写成

\[ \mathcal L(\theta,\phi;x^{(i)})=-\mathbb E_{z\sim q_\phi(z\mid x^{(i)})}[\log p_\theta(x^{(i)}\mid z)]+D_{\mathrm{KL}}[q_\phi(z\mid x^{(i)})\Vert p(z)]. \]

课件第 14 页把 KL 项前的符号排成了负号;若 \(D_{\mathrm{KL}}\) 采用上面的非负定义,此处应为正号。

直接从编码器输出分布采样不可导,无法反向传播。VAE 用正态分布建模后验并作重参数化:

\[ z\sim\mathcal N(\mu(x),\sigma^2(x))\quad\Longrightarrow\quad z=\mu(x)+\epsilon\sigma(x),\qquad \epsilon\sim\mathcal N(0,I). \]

随机性被移到与网络参数无关的 \(\epsilon\)\(\mu(x)\)\(\sigma(x)\) 可由两个神经网络估计,并用反向传播与梯度下降训练。

扩散模型的正向与反向过程

扩散模型可看成 VAE 的多阶段扩展。VAE 只执行一次编码和解码;若把它扩展为长度 \(T\) 的双向马尔可夫链,从左到右逐步编码、从右到左逐步解码,就得到分层结构。扩散模型不再区分 \(x\)\(z\),所有节点都记作 \(x_t\) 且尺寸相同;这与 VAE 中潜变量通常小于输入不同。

正向过程逐步加入高斯噪声,最终得到近似纯噪声。若 \(x_0\sim q(x_0)\),则

\[ q(x_{1:T}\mid x_0)=\prod_{t=1}^{T}q(x_t\mid x_{t-1}). \]

反向过程从纯噪声出发,用神经网络逐步去噪并恢复图像:

\[ p_\theta(x_{0:T})=p(x_T)\prod_{t=1}^{T}p_\theta(x_{t-1}\mid x_t). \]

正向转移核取高斯条件分布:

\[ q(x_t\mid x_{t-1})=\mathcal N\bigl(x_t;\sqrt{1-\beta_t}\,x_{t-1},\beta_tI\bigr). \]

定义 \(\alpha_t=1-\beta_t\)\(\bar\alpha_t=\prod_{s=1}^{t}\alpha_s\),递推展开可由 \(x_0\) 直接采样任意时刻:

\[ q(x_t\mid x_0)=\mathcal N\bigl(x_t;\sqrt{\bar\alpha_t}\,x_0,(1-\bar\alpha_t)I\bigr), \]
\[ x_t=\sqrt{\bar\alpha_t}\,x_0+\sqrt{1-\bar\alpha_t}\,\epsilon,\qquad \epsilon\sim\mathcal N(0,I). \]

这个闭式解避免按顺序模拟整条加噪链。理想反向后验由贝叶斯公式得到:

\[ q(x_{t-1}\mid x_t,x_0)=\frac{q(x_t\mid x_{t-1},x_0)q(x_{t-1}\mid x_0)}{q(x_t\mid x_0)}=\mathcal N(x_{t-1};\tilde\mu_t,\tilde\beta_tI), \]

其中

\[ \tilde\mu_t(x_t,x_0)=\frac{\sqrt{\bar\alpha_{t-1}}\beta_t}{1-\bar\alpha_t}x_0+\frac{\sqrt{\alpha_t}(1-\bar\alpha_{t-1})}{1-\bar\alpha_t}x_t, \]
\[ \tilde\beta_t=\frac{1-\bar\alpha_{t-1}}{1-\bar\alpha_t}\beta_t. \]

实际去噪时无法直接获得 \(x_0\),因此训练 \(\epsilon_\theta(x_t,t)\) 预测噪声,间接估计原图:

\[ \hat x_0=\frac{x_t-\sqrt{1-\bar\alpha_t}\,\epsilon_\theta(x_t,t)}{\sqrt{\bar\alpha_t}}. \]

把它代入后验均值,可得模型使用的均值参数:

\[ \mu_\theta(x_t,t)=\frac1{\sqrt{\alpha_t}}\left(x_t-\frac{\beta_t}{\sqrt{1-\bar\alpha_t}}\epsilon_\theta(x_t,t)\right). \]

正向过程的 \(\alpha_{0:T}\) 是设定的超参数,没有未知参数,不需要学习;逆向过程不能解析得到,必须由模型学习。训练阶段同时计算正向加噪和反向去噪;推理阶段只执行反向过程,从随机高斯噪声开始反复采样 \(p_\theta(x_{t-1}\mid x_t)\),最终生成图像。

学习到的反向分布写成

\[ p_\theta(x_{t-1}\mid x_t)=\mathcal N(\mu_\theta(x_t,t),\Sigma_\theta(x_t,t)),\qquad \Sigma_\theta(x_t,t)=\tilde\beta_tI. \]

均值有三种参数化思路:直接让 U-Net 预测 \(\mu_\theta(x_t,t)\);预测原图 \(x_0\) 后代入后验均值;或预测正向噪声 \(\epsilon\) 后还原 \(x_0\)。课件指出经验与实验上第三种最好,因此训练网络估计从 \(x_0\)\(x_t\) 的噪声,再据此逐步生成图片。

条件控制扩散与 Stable Diffusion

无条件扩散每次都从随机噪声生成,图像多样性好但内容不可控。额外条件 \(y\) 可以是文本、图像或类别标签。引入 \(y\) 后,正向加噪过程不变,希望反向过程变成

\[ p(x_{0:T}\mid y)=p(x_T)\prod_{t=1}^{T}p_\theta(x_{t-1}\mid x_t,y). \]

直接预测 \(x_0\)、预测噪声和预测得分三种方案都可加入 \(y\)。以得分为例,贝叶斯公式给出

\[ \nabla_{x_t}\log p(x_t\mid y)=\nabla_{x_t}\log p(x_t)+\nabla_{x_t}\log p(y\mid x_t). \]

第一项是无条件扩散得分,第二项是分类器的对抗梯度。分类器输入不是干净图像 \(x_0\),而是带噪的 \(x_t\),所以必须在条件扩散模型之前独立训练噪声分类器 \(p(y\mid x_t)\)。实际采样时,先得到无条件预测 \(\hat s_\theta(x_t,t)\);再把 \(x_t\) 输入噪声分类器,计算 \(\nabla_{x_t}\log p(y\mid x_t)\);组合为

\[ \hat s_\theta(x_t,t,y)=\hat s_\theta(x_t,t)+\nabla_{x_t}\log p(y\mid x_t), \]

然后继续原去噪步骤。该梯度把采样推向类别 \(y\),例如 \(y\) 为“汽车”时会向汽车图像方向生成。它提高逼真度和类别一致性,但会降低多样性,因此可用超参数调节权重。分类器引导的两项缺陷是:需要额外分类器,增加训练和采样成本;分类器类别是有限集合,对未覆盖标签不友好。

普通扩散在与目标图像同尺寸的 \(x_t\) 上运算,高分辨率时计算与显存开销很大。潜在扩散模型(Latent Diffusion Model,LDM)先用 VAE 等自编码器把原图压缩成低维 \(z_0\),整个扩散和去噪都在潜空间进行;条件 \(y\) 通过 U-Net 中的 Attention 融合,采样出的 \(z_0\) 最后经解码器还原成图像。Stability AI 参与联合研究并开放的 Stable Diffusion 就是预训练 LDM,由于开源而成为图像生成领域的主流开源模型。

ControlNet 与 DreamBooth

纯文本难以精确控制图像结构。ControlNet 在预训练 Stable Diffusion 上增加额外图像条件,如姿态图、线稿或草图。Stable Diffusion 的去噪网络可记为

\[ \epsilon_\theta(z_t,t,\tau_\theta(y)), \]

其中输入包括时间步、加噪潜空间图像和由文本编码器取得的条件信息。ControlNet 直接复用 Stable Diffusion 的 U-Net 作为图像编码器,思路类似 LoRA:增加的并行网络是原 U-Net 编码侧的镜像,去掉解码器,并在原有 block 的连接处加入参数初始化为 0 的 \(1\times1\) 卷积。课件比较了不同卷积设置和提示词的结果,也给出代码节选;在生成示例中,只输入首行图像作为控制条件,文本提示为空,后三行仍能生成与控制图结构相符的不同结果。

DreamBooth 的目标不是按结构图控制,而是用少量样本让模型记住特定主体并生成该主体的多种新图像。步骤是:输入同一对象的 3–5 张图片及类别,类别也可由识别模型推断;微调预训练 Stable Diffusion,为该对象学习特殊标识符 [V];生成时把 [V] 放入文本提示。微调时从词表中选低频词作 [V],在 3–5 张对象图上计算重建损失;同时输入对象类别,把原始 Stable Diffusion 的类别生成结果与微调模型结果用于计算类别先验保持损失,避免模型丢掉原有类别知识。

几何结构引导的文字图像生成

原有扩散字体生成没有显式利用字体几何。课件的方法在图像编码器、解码器中引入可控模块:可变形内容聚合层用可变形注意力捕捉局部几何变化,自适应选择并加权内容特征,弥补直接拼接内容模板与编码器特征时忽略风格差异的问题;内容几何结构控制层把模板边缘和风格参考信息通过交叉注意力送入编码器与解码器,同时稳定整体字形和风格,模板边缘可视为视觉提示。

边缘和角点对字形结构尤其重要,因此训练时用 Canny 边缘与 Harris 角点对重建损失加权:

\[ \mathcal L=\omega(x_0)\mathcal L_{\mathrm{recon}}, \]
\[ \omega(x_0)=\lambda_{\mathrm{corner}}\operatorname{Harris}(x_0)+\lambda_{\mathrm{edge}}\operatorname{Canny}(x_0)+\lambda_{\mathrm{all}}, \]

其中三项系数分别控制角点、边缘和其他位置的权重。

实验用 CASIA-HWDB 1.0/1.1 作训练集,ICDAR 2013 作测试集。评价包括感知相似性 FID、LPIPS 和结构相似性 SSIM:

\[ \operatorname{SSIM}(x,y)=\frac{(2\mu_x\mu_y+C_1)(2\sigma_{xy}+C_2)}{(\mu_x^2+\mu_y^2+C_1)(\sigma_x^2+\sigma_y^2+C_2)}, \]

其中 \(\mu\)\(\sigma\) 分别表示像素均值和方差,\(C_1,C_2\) 为常数。与 FontDiffuser(AAAI 2024)基线的消融结果如下,A 是可变形内容聚合层,B 是内容几何结构控制层,C 是几何信息加权重建损失:

方法 训练 FID↓ 训练 LPIPS↓ 训练 SSIM↑ 测试 FID↓ 测试 LPIPS↓ 测试 SSIM↑
基线 1.006 0.226 0.255 0.550 0.219 0.263
A 1.235 0.219 0.280 0.381 0.217 0.267
A+B 0.267 0.218 0.268 0.127 0.222 0.277
A+B+C 0.073 0.212 0.269 0.045 0.214 0.279

逐项加入模块后,生成字体对连写和字形结构的控制更好。局限是严重连写手写字的风格控制仍较差,且扩散模型依赖多步迭代去噪,生成较慢。

多模态提示聚合的文本行生成

课件进一步把单字生成扩展到文本行:把字符风格和文本行布局风格解耦,分成单字生成、文本行布局生成两阶段。为解决扩散多步去噪慢的问题,提出轻量模型并引入部件级对齐的多模态提示,提取结构化风格;为改善少样本布局生成的泛化,则结合 LLM 与提示工程,用不同任务提示实现有条件和无条件布局生成。整体模型结合扩散与 VQGAN(vector quantized GAN),在保持质量的同时实现单步生成;改变任务提示即可选择随机风格生成或风格模仿。

多模态提示不再只作像素级风格融合,而是提升到部件层次。文本提示把汉字部件序列送入 Transformer,得到部件级文本特征;池化视觉提示对特征图作平均池化,提取空间上相邻的局部结构;聚类视觉提示对特征图聚类,得到特征空间中相近的局部特征。三类提示拼接时用可学习 token 分隔,顺序为“<pool token> 池化视觉提示 <cluster token> 聚类视觉提示 <radical token> 部件序列提示”。聚合后的提示作为 Query,通过交叉注意力从风格参考图中提取多层次风格。

不同模态的对齐通过对比预训练完成。普通对比损失忽略汉字结构相似性,因此用共有部件比例给样本对加权:

\[ w_{ij}=\frac{2\mathcal N(i,j)}{\mathcal N(i)+\mathcal N(j)}, \]

其中 \(\mathcal N(i),\mathcal N(j)\) 是字符部件数,\(\mathcal N(i,j)\) 是共有部件数。总对比损失由图像—图像、图像—文本和文本—图像三项组成:

\[ \mathcal L=\mathcal L_{\mathrm{img-img}}+\mathcal L_{\mathrm{img-txt}}+\mathcal L_{\mathrm{txt-img}}, \]
\[ \mathcal L_{p-q}=-\sum_{i=0}^{N-1}\sum_{\substack{j=0\\j\ne i}}^{N-1}w_{ij}\log\frac{\exp(\operatorname{sim}(f_i^p,f_j^q))}{\sum_{\substack{k=0\\k\ne i}}^{N-1}\exp(\operatorname{sim}(f_i^p,f_k^q))}, \]
\[ \operatorname{sim}(a,b)=\frac{a^Tb}{\lVert a\rVert\lVert b\rVert}. \]

传统布局生成或从训练集统计字符框大小、位置并拟合均匀或高斯分布,没有考虑布局与文本内容的关系;或从头训练 LSTM、Transformer 预测边界框,对 few-shot、zero-shot 字符泛化不足。新方法利用预训练 LLM 的先验,并用 LoRA 微调。条件任务提示要求“根据参考文本中字符边界框的变化风格”生成目标文本的边界框;无条件任务提示直接要求生成目标文本中每个字符的边界框;两者都规定图像高度 64、宽度不超过 2048。

ICDAR 2013 单字生成结果如下:

方法 FID↓ LPIPS↓ SSIM↑ 速度(fps)
VQ-Font(AAAI 2024) 0.630 0.235 0.269 33
FontDiffuser(AAAI 2024) 0.550 0.219 0.263 0.4
几何信息引导扩散模型 0.045 0.214 0.279 0.32
本方法 0.108 0.168 0.363 35

以“不预训练、只用池化视觉提示”为基线,加入多模态对齐预训练和多模态提示聚合后的结果为:

方法 FID↓ LPIPS↓ SSIM↑
基线 1.035 0.189 0.333
+ 多模态对齐预训练 0.177 0.182 0.352
+ 多模态提示聚合 0.108 0.168 0.363

生成示例还与 GPT-4o、VQ-Font、FontDiffuser 和几何引导扩散模型比较,所提方法更关注字符局部结构。文本行布局用字符框水平、竖直中心距离 \(\delta_x,\delta_y\),上、下、左、右边界距离 \(\delta_t,\delta_b,\delta_l,\delta_r\),以及平均宽高 \(w,h\) 评价:

方法 \(\delta_x\) \(\delta_y\) \(\delta_t\) \(\delta_b\) \(\delta_l\) \(\delta_r\) \(w\) \(h\) 平均↓
无条件 8.2 3.0 8.5 4.1 8.7 3.7 5.1 5.7 5.825
有条件 6.0 2.7 6.5 3.6 6.4 3.7 3.7 3.0 4.45

用 ICDAR 2013 中 1% 的无标注样本生成 3000 张文本行图像,再微调识别模型,准确率(AR)由不使用生成数据时的 94.55% 提升到 94.65%;色彩变换增强为 93.69%,伪标签文本行微调为 93.96%。

本讲要求了解 VAE 和扩散模型;编程实践对应网络学堂的第 13 讲教程。

评论