我觉得我是

\[\newcommand{\c}{\mathcal} \newcommand{\t}{\text} \newcommand{\co}[2]{{\color{#1}{#2}}} \newcommand{\cur}[1]{\left\{#1\right\}} \newcommand{\eps}{\epsilon} \newcommand{\E}{\mathop{\mathbb E}\limits} \newcommand{\p}{\partial} \newcommand{\b}{\boldsymbol} \]

Optimization

L-连续:\(|g(x)-g(y)|\leq L|x-y|\)。Descent Lemma:\(f(y)\leq f(x)+\nabla f(x)\cdot(y-x)+\dfrac L2|x-y|^2\)。因此令 \(\eta\gets1/L\) 收敛最快,

GD:\(\theta\gets\theta-\eta\cdot\nabla_\theta\c L\)。SGD:对 small batch 进行,训练成本降低,同时可以有助跳出鞍点。动量:

\[\theta_{t+1}\gets\theta_t-\eta\cdot\nabla_{\theta_t}\c L(\theta_t)+\beta\cdot(\theta_t-\theta_{t-1}) \]

没有收敛保证。Nesterov's Method:

\[\theta_{t+1}\gets\theta_t-\eta\cdot\nabla_{\theta_t}\c L(\theta_t+\co{red}{\beta\cdot(\theta_t-\theta_{t-1})})+\beta\cdot(\theta_t-\theta_{t-1}) \]

改为在目标处计算梯度。在光滑的场合有更好的收敛保证(GD:\(1/T\);Nes:\(1/T^2\))。

AdaGrad:\(\theta_{t+1}[i]=\theta_t[i]-\dfrac\eta{\sqrt{G_t[i]+\eps}}(\nabla_{\theta_t}\c L)[i],G_t[i]=\sum_{s\leq t}|\nabla_{\theta_s}\c L[i]|^2\)。核心是让各维解耦,采取不同的学习率。

RMSProp:对 \(G\) 加了一个 moving average,令 \(G_t[i]=\gamma G_{t-1}[i]+(1-\gamma)|\nabla_{\theta_t}\c L[i]|^2\)。效果是避免 \(G\) 一直上升导致梯度消失。

Adam:令 \(M_t[i]=\delta M_{t-1}[i]+(1-\delta)\nabla_{\theta_t}\c L[i]\),然后计算 \(\hat M_k=M_k/(1-\delta^k),\hat G_k=G/(1-\gamma^k)\),使用 \(\hat M,\hat G\) 作 step。这么做是为了保证 \(\gamma\)\(\delta\) 项不在早期迭代过程中成为主要影响。

ReLU:\(f(x)=\max(x,0)\)。LeakyReLU:\(f(x)=\max(x,kx)|k\in(0,1)\)。Sigmoid:\(\sigma(x)=\dfrac1{1+\exp(-x)},\sigma'(x)=\sigma(x)(1-\sigma(x))\)\(\tanh(x)=\dfrac{e^x-e^{-x}}{e^x+e^{-x}},\tanh'(x)=1-\tanh^2(x)\)

卷积边长公式:\(H'=\left\lfloor\dfrac{H+2P-K}{S}+1\right\rfloor\)。MaxPool 是非线性的,而 Avg 是线性的。

DropOut 在训练时如果所有神经元以 \(\alpha\) 的概率保留的话,inference 的时候就改为所有参数乘以 \(\alpha\)。DropOut、EarlyStopping、Regularization 都可以减轻过拟合。

初始化:零会导致所有神经元 pattern 相同。过大会导致梯度爆炸。Xavier: \(b\gets0,W\gets\t{Unif}\pm\sqrt6/\sqrt{n_k+n_{k+1}}\)。Kaiming:\(W\gets\t{Unif}\pm\sqrt2/\sqrt{n_k}\),适合 ReLU。

BN:把参数关于 batch(具体而言,是对于每个通道,将所有 batch 中该通道的值)归一化后,使用可学习的 \(\gamma,\beta\) 把它拉回 \(\gamma\cdot\dfrac{x_i-\mu}{\sqrt{\sigma^2+\eps}}+\beta\)。至于 inference 的时候,需要记录历史训练数据的 \(\mu,\sigma^2\) 的 moving average 并用它来归一化:\(\mu_B\gets\dfrac1{N_\t{batch}}\sum_\t{batch}\mu,\sigma^2_B\gets\dfrac1{N_\t{batch}}\cdot\co{red}{\dfrac B{B-1}}\sum_\t{batch}\sigma^2\)。红色部分是 unbiased variance estimator。在加上 BN 后,Dropout 就没必要(就算加了,rate 也要调小)了;BN 需要更大的学习率(因为数据被集中在高梯度区域)。BN 适合卷积层。

LN:对同层中所有输入归一化,与通道无关,适合 RNN 与 MLP。WeightNorm:适合 Meta-Learning 等需要高阶梯度的场合。IN:适合生成。GN:在 batchsize 小时优于 BN。

image-20250609113112189

ResBlock:\(x+F(x)\)。DenseBlock:\(\t{Concat}(x,F(x))\)

Hopfield Network

Reception Field \(z_i=\sum_{j\neq i}w_{ji}y_j+b_i\)。定义 hard threshold \(\Theta(z)=\begin{cases}1&(z\geq0)\\-1&(z<0)\end{cases}\)。然后,在每一时刻,都令某个 \(y_i\gets\Theta(z_i)\)。另一种说法是,\(y_i\) 被翻转,如果 \(y_iz_i<0\)。可以定义熵 \(D=\sum_{i<j}y_iw_{ij}y_j+\sum_iy_ib_i\),则翻转的过程中熵严格增,于是定义 \(E=-D\),则所有能量极小值即为被记忆处。

Hebbian Learning:对于要记忆的 \(\cur{y_i^*}\),令 \(w_{ij}=y_i^*y_j^*\)(假设没有 \(b\)),则此时 \(\cur{y_i^*}\) 是最低点。问题:只能记一张图;虽然 \(y^*\) 是最值但是 \(-y^*\) 同样也是最值、被记忆了。记多张图可以通过令 \(w=\dfrac1n\sum y^i(y^i)^T\) 解决。但是叠合起来会产生一些虚假的信息,且原本要记的某些东西可能会被叠加成非最值,不牛。引:\(N\) 个神经元总是可以记住 \(K\leq N\) 个图样;事实上,最多可以记 \(\dfrac N4\log N\) 个图样。但是仍然会出现虚假的极小值。

训练?希望有 \(W=\arg\min_W\cur{\sum_{y\in P}E(y)-\sum_{y\notin P}E(y)}\)。正样本是全体训练数据,负样本呢?谷底?不重要的谷底可以被忽略。从正样本出发 evolve 到的谷底?如果有正样本在谷底就不行。直接从正样本出发 evolve 2-4 步即可。

EBM

将概率与能量的关系直接建模为 \(p(X)=\exp(-E(X))/Z\)。因此,BM 是\(p(X)\) 有显示建模的模型。其 evolve 中翻转一位的操作就是 \(P(y_i=\lnot y_i\mid y_{j\neq i})\)。定义 \(z_i=\sum_jw_{ij}y_j+2b_i\),则有简洁的 \(P(y_i=1\mid y_{j\neq i})=\sigma(z_i)\)。这是 Gibbs 采样。此外还有 MH 采样:\(\min(1,\dfrac{p(s')q(s'\to s)}{p(s)q(s\to s')})\),其中 \(q\) 是 proposed distribution。Gibbs 是特殊构造的 MH,其中所有 acc rate 均为 \(1\)

BM 的训练是最小化 NLL \(\c L=-\E_{x\sim D}\log p(x)=\E_{x\sim D}E(x)+\log Z\)。推导可知 \(\nabla_\theta\log Z=-\E_{x\sim p}\nabla_\theta E(x)\)。于是同样使用 Gibbs 采样即可。注意:Gibbs 采样是在估测 \(Z\) 的对数梯度而非 \(Z\) 本身。

EBM:初始化 \(W\);对于每个 \(v\in P\),固定 \(v\) 然后做 \(K\) 个 条件 Gibbs。再全随机做 \(M\) 个 Gibbs 采样。\(\nabla=\dfrac1{N_PK}\sum_{y\in S_c}yy^T-\dfrac1M\sum_{y'\in S}y'y'^T\)。梯度抬升。

RBM:二分图式。可以并行。条件 Gibbs 时更是只需要作一次,而负样本也可以只增广 2~4 步。

EBM 只是一种结构,任何带能量的东西都可以 EBM,而不局限于对 Hopfield Network。它难以 scale up 是因为 MC 太慢了。

Boltzmann 可以生成图像,也可以复原受污染的图像(从污染图像出发 evolve),更可以补全被切割的图像(条件 Gibbs)。同时,它甚至可以胜任分类工作:将 label 的 one-hot 向量也看做状态的一部分,即 \(y=(v,h,c)\)。则分类相当于求后验概率 \(P(c\mid v)\);进一步地,甚至可以做条件生成,即 \(P(v\mid c)\)!二者都可以通过条件 Gibbs 达到。

重要性采样是 \(\E_{x\sim p}f(x)=\E_{x\sim q}\dfrac{p(x)}{q(x)}f(x)\)

SBM

Langevin Dynamics 只要知道 \(s(x)=\nabla_ xp(x)\) 即可进行。即,通过 \(x_{t+1}\gets x_t+\eps\cdot s(x)+\sqrt{2\eps}\cdot z,z\sim\c N(0,1)\) 的方式迭代。学 SBM 就是在让 \(\nabla\log p_\theta(x)\) 贴近 \(\nabla\log p_\t{data}(x)\)。首先想到最小化 MSE 也即 \(p_\t{data}\)\(p_\theta\) 间的 Fisher 散度

\[F(p_\theta\|p_\t{data})=\dfrac12\E_{x\sim p_\t{data}}[|\nabla_x\log p_\t{data}(x)-\nabla_xp_\theta(x)|_2^2] \]

通过数学推导得到

\[=\E_{x\sim p_\t{data}}[\dfrac12|\nabla_x\log p_\theta(x)|_2^2+\text{trace}(\nabla_x^2\log p_\theta(x))]+\text{Const} \]

那么不再使用模型表达 \(p_\theta\),而是令模型可以直接计算 \(s(x)\),就直接扔掉了 \(Z\)

\[\c L(\theta)=\E_{x\sim p_\t{data}}[\dfrac12s_\theta(x)^2+\text{trace}(\nabla_xs_\theta(x))]+\text{Const} \]

但是算 \(\nabla\) 的 trace 需要 \(d\) 次 BP,很慢。同时,数据分布在一个低维空间 (Manifold Hypothesis),大部分区域的 \(\nabla_x\log p_\t{data}\) 并非良定义。于是从 \(p_\t{data}\) 中采样 \(x\) 的时候加一个 \(\sigma\)-Gaussian Noise 得到 \(\tilde x\),然后有分布 \(q_\sigma(\tilde x)\)。然后目标从优化 \(F(p_\theta\|p_\t{data})\) 转化为优化 \(F(p_\theta\| q)\),即

\[\c L(\theta)=\dfrac12\E_{\tilde x\sim q_\sigma}\|\nabla_{\tilde x}\log q_\sigma(\tilde x)-s_\theta(\tilde x)\|^2 \\=\dfrac12\E_{x\sim p_\t{data}(x),\tilde x\sim q_\sigma(\tilde x\mid x)}\|\nabla_{\tilde x}\log q_\sigma(\tilde x|x)-s_\theta(\tilde x)\|^2+\t{Const} \\=\dfrac12\E_{x\sim p_\t{data}(x),z\sim\c N(0,I)}\|s_\theta(x+\sigma z)+z/\sigma\|^2+\t{Const} \]

好处是简单、对高维数据也有效、可以降噪,坏处是永远也估测不了无噪声数据(在 \(\sigma\to0\) 时该式发散)。

\(\sigma\) 质量变低,但是有效的 \(s(x)\) 更多(流形假设);小 \(\sigma\) 则质量变高但是训练不稳定。因此可以对 \(\sigma_1>\sigma_2>\dots>\sigma_L\) 进行分层噪声规模训练(相邻噪声级别应有足够的重叠以促进转移),让 \(\sigma\) 等比下降,且 \(\sigma_1\) 约是数据点间最远距离,\(\sigma_L\) 应足够小进而可以约束最终采样中的噪声。使用

\[\c L(\theta)=\dfrac1L\sum_{i=1}^L\lambda(\sigma_i)\E_{x\sim p_\t{data}(x),z\sim\c N(0,I)}\|s_\theta(x+\sigma_iz,\sigma_i)+z/\sigma_i\|^2 \]

选择 \(\lambda(\sigma_i)=\sigma_i^2\),然后通过定义 \(\epsilon_\theta(\cdot,\sigma_i)=\sigma_is(\cdot,\sigma_i)\) 得到

\[\c L(\theta)=\E_{x\sim p_\t{data}(x),z\sim\c N(0,I),i\sim\t{Univ}(1,L)}\|\eps_\theta(x+\sigma_iz,\sigma_i)+z\|^2 \]

Sample 时是 \(\tilde x_t\gets\tilde x_{t-1}+\dfrac{\alpha_i}2s_\theta(\tilde x_{t-1},\sigma_i)+\sqrt{\alpha_i}z_i\),其中 \(\alpha_i=\eps\cdot\sigma_i^2/\sigma_L^2\)

image-20250609142643270

DDPM

image-20250609142740104

DDPM 的训练是逐渐加噪的过程,而采样是逐渐降噪的过程。两者是互逆的。在 VAE 的隐空间上跑 Diffusion,就是 SOTA:Stable Diffusion。

NF

对于双射 \(z\mapsto x\),有 \(p(x)=p(z)|\det\dfrac{\p f(z)}{\p z}|^{-1}\)。于是 \(\log p(x)=\log p(z_0)-\sum _i|\det\dfrac{\p f_i(z_{i-1})}{\p z_{i-1}}|\)。为保证 Jacobian 好算,选择 Jacobi 矩阵为对角阵的 \(f_i\)。NICE:\(x_{1:m}=z_{1:m},x_{m+1:d}=z_{m+1:d}-\mu_\theta(z_{1:m})\),有 \(\t{Jac}=1\)。为了保证变换均匀,需要一些 coupling layer 对所有维数做 shuffling。第一层有一个 rescalling layer,保证变换可以 cover 不同体积。inpaining:因为 \(p(x)\) 可以写出来,所以当 \(x=(x_v,x_h)\) 时,易和 MCMC 一同做梯度上升。但是因为大多数层的体积均不变,能力仍然有限。Real-NVP:\(x_{m+1:d}=(z_{m+1:d}-\mu_\theta(z_{1:m}))\exp(-\alpha_\theta(z_{1:m}))\)。取 \(\exp\) 是为了保证乘的 factor 可逆。GLOW:对于输入的 \(h\times w\times c\) 的图像, channel size \(c\) 一般比较小。因此,可以对于每个 pixel 关于其 channel 的 \(c\)-向量做变换,即 \(z_{ij:}=Wx_{ij:}+b\)。此时可以大力 \(O(c^3)\)\(W\) 的行列式。当然,需要一些 normalization 层保证训练不炸。注意,NF 训的时候,第一项 \(\log p(z_0)\) 不能扔,因为每次采样的 \(z_0\) 都不同。注意,NF 只是一种思想而非模型,模型是 \(\mu_\theta\)\(\alpha_\theta\),可以任意搭。

Autoregressive Flow (AF):在 Real-NVP 基础上,\(x\to z\) 时有 \(z_i=(x_i-\mu(x_{<i}))\odot\exp(-\alpha(x_{<i}))\)\(z\to x\) 时有 \(x_i=z_i\oplus\exp(\alpha(x_{<i}))+\mu(x_{<i})\),这样训时可以并行但生成时只能挨个确定;同理有 IAF,令采样时可以并行,但是训练时只能串行。

集双方之长的是 Parallel Wavenet,使用 AF 训练好 Teacher Model 后,使用 IAF 训练 Student Model 并最小化与 Teacher 的 KL,最后生成时只用 IAF 即可。

VAE

有 encoder \(q_\phi(z\mid x)\) 和 decoder \(p_\theta(x\mid z)\)。loss 由 Reconstruction Loss,即 \(-\E_{z\sim q(z\mid x)}\log p_\theta(x\mid z)\)【也可以被看做是原图和重建图的 L2-loss】,与 KL loss,即 \(\t{KL}(q\|\c N(0,1))\) 构成。总 loss 的相反数也被称作 ELBO (Evidence Lower Bound)。为了让 KL 可以显式计算,令 \(q_\phi(z\mid x)\sim\c N(\mu_\phi(x),\t{diag}(\sigma_\phi(x)))\)。为了方便采样,令 \(p_\theta(x\mid z)\sim\c N(\mu_\theta(z),I)\)。为了让 Reco Loss 好算,可以 reparameterization。

\(\beta\)-VAE 在 KL 前面加了一个 \(\beta\) 的参数。小 \(\beta\) 的重建效果更好,但是正则化效果变差。大 \(\beta\) 则倾向于让隐空间更像 Gaussian,换句话说各维解耦。在生成时仅用 decoder,提取特征 (representation) 时,因为需要 recon loss 低,所以 \(\beta\) 会非常小。

C-VAE:encoder 和 decoder 都多一个额外参数即可。仍使用 ELBO

\[\E_{z,y\sim q_\phi(z,y|x)}\log p_\theta(x|z,y)-\t{KL}(q_\phi(z,y|x)\|p(z,y)) \]

为了作半监督,令 \(q(z,y|x)=q(z|x)\cdot q(y|x),p(z,y)=p(z)\cdot p(y)\)。但是注意到,\(p_\theta(x|z,y)\) 中,\(z\) 仍然可以 reparameterization,但是 \(y\) 就只能大力枚举每一个 class 了。

\[L_\t{recon}=\t E_{\eps\sim\c N(0,I)}\sum_c q(y=c)\cdot\log p(x\mid\mu(x)+\sigma(x)\cdot\eps,y) \]

好处:结构灵活、训练稳定、收敛快。坏处:KL 散度的内生问题。\(\t{KL}(q\| p)\) 被称作 reverse 或 exclusive KL,因为其倾向于 cover 最显著的一个特征而忽略其它特征;\(\t{KL}(p\|q)\) 则被称作 forward 或 inclusive KL,因为其倾向于 cover 整体,取一个贴近平均值的效果。同时,使用 NLL 作为 loss,使用 Gaussian 作为 \(p,q\) 假设的分布,只做一步 sample,这些操作都会使得图像模糊。

VQVAE

让隐空间的分布是长度为 \(L\)\(1\sim K\) 整数序列 \(\cur{v_1,\dots,v_L}\)。可以衡量“多模态”的信息(与单模态的 Gaussian 不同)。维护一个含 \(K\) 个向量的“codebook” \(Z=\cur{e_1,\dots,e_K}\),则对于使用神经网络求出的原始隐空间,长度为 \(L\)\(z_1,\dots,z_L\) 向量序列,可以对于每一个向量都在 \(Z\) 里面找最近邻居来进行量化。即,Encoder 是 \(x\to\cur{z_{1\sim L}}\to\cur{v_{1\sim L}}\),而 Decoder 会先将 \(v\) 直接映射到 codebook 中的 \(e_{v_i}\),即 \(\cur{v}\to\cur{e_v}\to x\)。recon loss 仍然是输入-还原间的 L2 loss,而 reg loss 则是 \(\c L_\t{reg}=\|z_e-\t{sg}(z_q)\|^2+\beta\cdot\|z_q-\t{sg}(z_e)\|^2\),其中 \(\t{sg}(\cdot)\) 意味停止梯度回传,\(z_q\) 是神经网络提供的 \(z\)\(z_e\) 是 codebook。这样做,梯度就既能回传到 codebook 中,也能回传到神经网络中。更新 codebook 时也可以使用 moving average 以 stabilize。

但是,如何生成呢?我们并没有对 \(z\) 的分布作限制。但是对于离散的 \(z\),可以使用 PixelCNN 处理图像、WaveNet 处理音频、Transformer 处理文本等。因此,对于训好的 VQVAE 还要再训另一个模型用来生成 \(z\)

还有另一种小众方法是 Gumbel Softmax 法。具体而言,希望隐分布是 \(\t{Unif}(1,\dots,K)^L\),而 \(q_{\phi}(z_i\mid x)=\t{softmax}(l_{\phi_i}(x))\),即每一位上都是 softmax。为了让梯度可以回传到 \(q\) 上,定义 \(\t{Gumbel}(\mu,B)\sim\dfrac1\beta\exp(-z-e^{-z})\),其中 \(z=(x-\mu)/\beta\)。有 \(G(0,1)=\exp(-x-e^{-x})\)。则,对于固定的 \(x_1,\dots x_n\),随机采样 \(\eps_i\sim G(0,1)\),则 \(\arg\max\cur{x_i+\eps_i}\) 关于 \(\eps_i\) 的分布,会同从 softmax 中采样的结果相同。于是便将 \(\E_{z\sim q(z\mid x)}\log p_\theta(x|z)\) 转成了 \(\E_{\eps\sim G(0,1)}\log p_\theta(x|\t{softmax}(\dfrac{l_\phi(x)+\eps}{\tau}))\),其中 \(\tau\ll1\) 是温度,而该 softmax 即可转成 hard 的 argmax。这个效果不是很好,仅在 100 维左右时适用,VQVAE 合法范围更大。

GAN

非 likelihood 法,直接提供 \(G_\theta(z)\sim p_\t{data}\),其中 \(z\sim\c N(0,I)\)。最小化 \(D(G_\theta(z),p_\t{data})\) 在某种只需看到 instance 不需要 likelihood 的 metric \(D\) 下的距离。

\(D\) 固定时,优化 \(G\) 即是在寻找 classfier 给出的二分可能性最高的参数,即 \(\theta=\arg\max_\theta\E_{z\sim\c N(0,1)}D_\phi(G_\theta(z))\);在 \(G\) 固定时,即是在寻找 \(\phi=\arg\max_\phi(\E_{x\sim p_\t{data}}\log D_\phi(x)+\E_{z\sim\c N(0,I)}\log(1-D_\phi(G_\theta(z))))\)

在已知 likelihood 的时候,\(D\) 是有显式最优解的,即 \(D(x)=\dfrac{p_\t{data}(x)}{p_\t{data}(x)+p_G(x)}\)。那么在这种情况下,\(G\) 就是在最小化二者间的 JSD 的二倍。

GAN 的 evaluation 是困难的。方法一是 IS,使用外置分类器 \(f(y|x)\),则原数据中的 \(x\) 对应的 \(f(y|x)\) 熵应该比较低。同时,因为分类器的概率是 tractable 的,所以 \(p_f(y)\) 应该接近随机。则 \(\t{IS}=\exp(\E_{x\sim G}[\t{KL}(f(y|x)\|p_f(y))])\),越高越好(即生成的图片有明确的倾向,与随机输出不同)。但是 IS 的问题在于完全不涉及到 \(p_\t{data}\),因此 \(G\) 可以通过记忆数据中的某些模式以作弊。因此有 FID:使用 Inception V3 提取特征后,对特征使用 Gaussian 建模,然后计算二者间的 Wasserstein Distance。

GAN 的问题包括 mode collapse:比如说生成的东西限于少量的 sample(记住每一类各一个 sample)。这是 JSD 的内生问题(与 E-KL 相似的排他性最优解)。 除此之外,训练还会不稳定,甚至难以收敛,例如 \(J=-xy\) 的博弈就不会收敛。不像 MLE 可以及时暂停,GAN 有时可能会训着训着突然就崩溃了。还有,因为 \(G\) 是从低维到高维,生成的东西维数较小,\(D\) 于是很快就能接近百分百正确率,因此 intuition 是不能让 \(D\) 学太快。

DCGAN:一堆 trick,包括从头卷到尾(不作 Pooling 或 MLP),使用 BN 稳定训练,在 discriminator 中不用 ReLU 而用 LeakyReLU(0.2) 避免梯度消失,同时让学习率和动量均小。

Improved GAN:\(G\) 需要让 \(D\) 最后一层的 feature 与 \(p_\t{data}\) 尽量贴近(而不是最后的 score),即 feature match;\(D\) 从为一张图评分改为为一个 batch 评分,降低 mode collapse 的概率;就算 \(D\) 绝对自信也只让它输出 \(0.9\),这样 \(G\) 就有激励去把 \(p_\t{data}=0\)\(x\)\(p_G\) 也趋近 \(0\)

比 JSD 更好的是 WGAN,使用 Wassenstein Distance。JSD 对于度量没有认知,两个无交分布的 JSD 为无穷,但是 WD 可以对分布在度量意义上贴近提供奖赏。其具体方式是,使用 \(|f(x;\phi)|_L\leq 1\) 的 critic 来作为 \(D\)。为保证其是 L-连续的,gradient clipping 到 \(c\sim0.01\),不用动量而直接 RMSProp,且每 \(n=5\) 轮更新一边 critic。则 \(\phi\) 的目标是最大化 \(p_\t{data}\)\(p_G\)\(f\) 上的差,而 \(\theta\)(即 \(G\))的目标是最大化 \(p_G\)\(f\) 上的评分。

NLP Revisit!!!

如何避免 RNN exploding?梯度裁剪;truncated BPTT(只 BP 邻近几个时刻)。如何避免 vanishing?LSTM,或干脆用 Transformer。

LSTM:\(f_t=\sigma(W_f\cdot[h_{t-1},x_t]+b_f)\in[0,1]\) (forget);\(i_t=\sigma(W_i\cdot[h_{t-1},x_t]+b_i)\in[0,1]\) (input);新增信息 \(\tilde c_t=\tanh(W_i\cdot[h_{t-1},x_t]+b_c)\),然后记忆切换为 \(c_t=f_t\odot c_{t-1}+i_t\odot\tilde c_t\),最后输出 \(o_t=\sigma(W_o\cdot[h_{t-1},x_t]+b_o)\),然后 \(h_t=o_t\odot\tanh(c_t)\)

词向量的相似性使用余弦值定义(而非内积)。Seq2Seq:可能的双向的 RNN 把 \(X\) 映到隐藏态 \(h\) (encoder),然后 decoder 从 \(h\) 出发 autoregressively 生成 \(Y\)

CBOW:两侧预测中间。Skip-Gram:中间预测两边。后者在罕见词的场合效果更好,更难 overfit,而前者收敛更快。

不管是啥模型要做采样,只要能给 likelihood(例如,自回归模型可以对整句话给 likelihood;BERT 可以对某个 masked token 给),那么就能作 MCMC。

\(o_i=(v_1,\dots,v_L)\cdot\t{softmax}([\t{masked}]q_i^Tk_j/\sqrt d)\)

Positional Embedding:包括固定的正弦 PE 和 learnable PE。BERT:15% 特殊词,mask 其中的 80%,然后替换 10%、保留 10%。

Mixture of Expert:每个 expert 是一个小网络,router 选择调用哪个 expert,这样每次只有被调用的 expert 是活跃的。

GCN

不断从邻居收集信息。\(H^i=\sigma(D^{-1}AH^{i-1}W^T+H^{i-1}B)\),其中 \(A\) 是邻接矩阵,\(D\) 是度数对角阵,\(W\)\(B\) 是 parameter。加太多层可能会 over-smoothing,因为所有人的感受域都差不多。想要提高效果,除了提升单层效果外,还可以添加预处理/后处理层。另外可以添加一些虚拟的边或节点,例如在稀疏图上添加一些与所有点相邻的虚拟点以便于通信,或者对邻接矩阵使用 \(A\gets A+A^2\) 什么的。如果真的想搞很多层,那就 ResBlock 或 DenseBlock。

GraphSage 除了常规的 AvgPooling 以外,还用了 MLP+Max-Pooling,乃至随机打乱排序后作 LSTM。还可以用 Graph Attention,对所有邻居作 Attention。

Representation Learning

对于一切数据 \(x\) 学习表示 \(z\)。Word Embedding 就是典型的该方法。良好的表示应该可以直接通过附加的轻量级模型(最简单的,一个线性层)完成下游目标。

基于预测的自监督学习:mask 后对其预测,可以使用中间层的结果作为 representation (BERT)。此外还有判断两个同一张图上的小块的空间关系 (context prediction)、为灰度图上色 (image colorization) 等。MAE:mask 75% patch,然后预测。

对比学习:相似数据的特征应贴近,无关数据(来自随机采样)的特征应几乎正交。例如 CPC,使用 context 去预测 future embeddings。SimCLR:预定义一堆变换,把同一张图应用两种变换后的结果互为正样本,其它为负样本。CLIP (SigLip):图片与文本对的对比学习。MoCo:学一个 query encoder \(f_{\theta_q}\) 和一个 key encoder \(f_{\theta_k}\),对于 \(x\),收集正样本 \(y_+\) 和负样本 \(y_-^{1\sim T}\),然后令 \(q=f_{\theta_q}(x),k=\t{sg}(f_{\theta_k}(y))\)(注意此处的 stop gradient),使用 InfoNCE loss 更新 \(\theta_q\)

\[\c L_q=-\log\dfrac{\exp(q\cdot k_+/\tau)}{\exp(q\cdot k_+/\tau)+\sum\exp(q\cdot k_-^i/\tau)} \]

(不就是 softmax 嘛!),然后使用 moving average 更新 \(\theta_k\gets m\theta_k+(1-m)\theta_q\)

World model: build model on video data by predicting actions • VPT: Learning to Act by Watching Videos • Latent World Models • Genie: Generative Interactive Environments • Dreamer: Mastering diverse control tasks through world models

Meta-Learning

让你的模型可以 few-shot learning。数据集 \(D\) 中包含多个任务 \(T\),每个 \(T\) 包括用来 few-shot 的小 support set \(S_T\),与用来 test 的 \(B_T\)。Few Shot 完的结果可以看做即为 \(y=f_\theta(x|S_T)\)。单个任务上的 loss 是 \(L(T,\theta)=\E_{(x,y)\in B_T}\t{Div}(f_\theta(x|S_T),y)\),而目标即是选择最优的 \(\theta^*\),使得在所有任务上的 loss 的期望最小。那么这个 \(\theta^*\) 就是一个 meta learner,拥有学习 \(S_T\) 的能力。

思路一是学一个好的表示提取器,把 \(S_T\) 提取表示后,\(f_\theta(x|S_T)\) 使用 nearest neighbour 得到编号 \(k^*\),然后返回 \(y_{k^*}\)。不过还是请出我们的 MAML 吧!一个裸的目标是 \(\theta^*=\arg\min_\theta L(B_i,\t{SGD}(\theta,S_i))\)。但是显然对 SGD 进行 BP 是愚蠢的,所以使用一步 BP 近似,即 \(\theta^*=\arg\min_\theta L(B_i,\theta-\eta\nabla L(S_i,\theta))\)

因此可以尝试 Test-Time Training,即在测试的时候动态地使用测试数据再进行一些训练。

Security

如何攻击?白盒模式:作 gradient ascent;黑盒:把 gradient 偷过来。联邦学习(使用分布式梯度)一定程度上可以解决数据泄露问题。模型只能学到相关性,可能难以学到因果关系。

Appendix

TA: Feng Gao;Jinglun Zhao;Yutao Ouyang;Jingzhi Cui.

\[\c N(\mu,\Sigma):\dfrac1{(2\pi)^{d/2}|\Sigma|^{1/2}}\exp(-\dfrac12(x-\mu)^T\Sigma^{-1}(x-\mu)) \\\t{KL}(\c N_1\|\c N_2)=\dfrac12\left[\text{tr}(\Sigma_2^{-1}\Sigma_1)+(\mu_2-\mu_1)^T\Sigma_2^{-1}(\mu_2-\mu_1)-d+\log\dfrac{\det\Sigma_2}{\det\Sigma_1}\right] \\\Pr(X\geq(1+\delta)\mu)\leq\exp(-\mu\delta^2/3) \\\Pr(X\leq(1-\delta)\mu)\leq\exp(-\mu\delta^2/2) \\\t{KL}(p\|q)=\sum p\log\dfrac{p}q \\\t{JS}(p\|q)=\dfrac12[\t{KL}(p\|\tfrac12(p+q))+\t{KL}(q\|\tfrac12(p+q))] \\\t{W}(p,q)=\inf_{\gamma\sim\Pi(P,Q)}\E_{(x,y)\sim\gamma}|x-y| \]

W-Distance 又被称作 Earth Mover's distance,因为其目标是把两个度量空间上的分布通过移动的方式使之相等,而代价是移动的距离。

I-KL (Forward KL) 是 \(\t{KL}(P\|Q)\),使用 \(Q\) 近似 \(P\),此时 \(Q\) 覆盖 \(P\) 的所有模式。E-KL (Reverse KL) 相反。

Likelihood:即输出 \(x\)\(p(x)\)。称其是 tractable 的,如果给定 \(x\) 可以显式算出 \(p(x)\)

softmax 的 BP:假设 \(\cur{z_i}\) 得到了 \(p_i=\dfrac{\exp z_i}{\sum\exp z_j}\),则 \(\dfrac{\p p_i}{\p z_j}=p_i([i=j]-p_j)\)。换句话说,\(\dfrac{\p L}{\p\b z}=\dfrac{\p L}{\p\b p}\odot\b p+(\b p\cdot\dfrac{\p L}{\p\b p})\b p\)

矩阵乘法的 BP:若 \(AB=C\),则 \(\dfrac{\p L}{\p A}=\dfrac{\p L}{\p C}B^T\),同理 \(\dfrac{\p L}{\p B}=A^T\dfrac{\p L}{\p C}\)

posted @ 2025-06-10 16:03  Troverld  阅读(63)  评论(0)    收藏  举报