Oct 19, 2026 · 3545 words · 8 mins
起因 # 上一篇理清了 Pre-training 和 Post-training 的关系——Pre-training 让模型学会语言建模,SFT 和 RLHF 再让它学会遵循指令。
写完那篇之后,我回过头来想一个更上游的问题:Pre-training 本身应该怎么做?具体来说,假设手里有一笔固定的训练预算(比如一定数量的 GPU 时间),我应该训一个多大的模型、喂多少数据?
Oct 19, 2026 · 4616 words · 10 mins
起因 # 最近继续跟 MIT 6.S191,加上工作中或多或少接触到一些 LLM 训练相关的讨论,我开始试着把大模型的训练流程从头到尾理一遍。
之前写过几篇笔记:NTP 那篇推导了 next-token prediction 的条件概率和 cross entropy loss,训练信号来源那篇整理了 self-supervised pretraining → representation → fine-tuning 的基本链路。
Oct 18, 2026 · 11108 words · 23 mins
起因 # 之前在量化团队做 ML Infra 相关工作时,我曾参与过期货预测模型的特征重要度评估与特征筛选系统。
在那套系统里,Permutation Importance(置换重要度)是最核心的算子之一。当时我们面临的工作负载非常庞大:针对上千维的输入特征,要在多个交易日的数据上反复进行特征随机置换、模型前向推理以及评价指标的计算。在很长一段时间里,我的注意力几乎完全被系统层面的工程瓶颈吸引——如何降低内存拷贝、如何把推理批次打满、如何避免在不同特征扰动之间重复扫描数据。计算耗时被压下来之后,整套流水线跑得很顺,我也就习惯性地把这套指标当作特征评价的标准答案。
Oct 18, 2026 · 12364 words · 25 mins
起因 # 上一篇聊分布偏移与外推的时候,我把关注点放在了训练数据与生产环境之间的不一致上:模型在离线测试集上哪怕拿到了 98% 的高分,一旦现实环境发生 Covariate Shift 或者流形外推,线上的预测能力依然可能迅速滑坡。
Oct 17, 2026 · 9525 words · 20 mins
起因 # 上一篇聊随机标签实验的时候,我把注意力放在了模型容量和假设空间上:一个参数量巨大、完全有能力死记硬背随机噪声的神经网络,为什么在面对真实规律的数据时,依然能找到泛化良好的解。
Oct 16, 2026 · 5618 words · 12 mins
起因 # 上一篇写完随机标签实验之后,我对泛化的理解更新了一轮:模型有能力记住随机标签,不代表它面对真实数据时只会死记硬背。capacity、learned function 和 generalization 是三件不同的事。
Oct 14, 2026 · 5260 words · 11 mins
从 U-Net 文章结尾的一个问题说起 # 上一篇结尾我写:DDPM 里的 U-Net 和 2015 年原版 U-Net 有几处关键扩展,第一个就是 Timestep Embedding——通过 sinusoidal embedding 将时间步 \(t\) 编码成向量,注入到每个 residual block 中。
Oct 14, 2026 · 5182 words · 11 mins
起因 # 看 6.S191 的课程内容时,讲到 generalization 相关的话题,提到了一篇 2017 年的论文。
说实话,我以前对"泛化"这件事没有太深入地想过。教科书上的经典说法——模型越复杂越容易过拟合,要用正则化控制复杂度——我一直就这么接受下来了。L1、L2、Dropout 这些方法背后的直觉也说得通:限制模型的有效复杂度,不让它过度拟合训练数据中的噪声。没觉得有什么问题。
Oct 14, 2026 · 4608 words · 10 mins
DDPM 的噪声预测网络到底是什么 # 前两篇文章在推导 DDPM 的前向扩散和反向去噪时,一直在用一个符号 \(\epsilon_\theta(x_t, t)\) 来表示噪声预测网络——给一张带噪图片和当前 timestep,输出对噪声的预测。
Oct 13, 2026 · 2857 words · 6 mins
接着上一篇的问题 # 上一篇搞清楚了一件事:DDPM 的前向扩散虽然定义成一步一步加噪的马尔可夫链,但因为高斯分布在线性组合下的封闭性,任意时刻的 \(x_t\) 都可以一步算出来:
Oct 13, 2026 · 3725 words · 8 mins
起因 # 最近在看 DDPM(Denoising Diffusion Probabilistic Models)。前向扩散的定义写得很清楚:从原始图片出发,每一步往上面加一点噪声,一步一步把图片变成纯噪声。
Oct 11, 2026 · 4692 words · 10 mins
上一篇走完了从 Q-Learning 到 DQN 的过程。用神经网络近似 Q-Function,输出各动作的 Q 值,取 argmax 选动作。加上 Experience Replay 和 Target Network,DQN 在 Atari 游戏上工作得很好。
继续跟 MIT 6.S191 Lecture 5 往下走,课程在讲完 DQN 之后,介绍了一种完全不同的思路——不学 Q-Function,直接学 Policy。
Oct 11, 2026 · 7394 words · 15 mins
上一篇结尾留了一个问题:如果不知道环境的转移概率和 Reward 函数,应该怎么利用 Bellman Equation 学习策略?
那篇从 Policy Iteration 走到 Value Iteration,用 A/B 两状态的例子跑完了整个过程。最后得到了最优策略,A 选择前往 B,B 选择 \(b_1\),\(V^*(A) = 2.7\)。
Oct 11, 2026 · 6117 words · 13 mins
上一篇推完了 Bellman Equation。那篇最后写了一句:Bellman Equation 是一个递归关系,不是一种算法——Value Iteration 和 Policy Iteration 才是利用它求解的具体方法。
当时没有展开。这一篇接着走。
Oct 10, 2026 · 5084 words · 11 mins
上一篇结尾用全期望公式把 \(V^\pi(s)\) 按"下一个 State"分组展开了。Markov Property 那篇讨论了为什么 Bellman Equation 需要 Markov Property 作为前提。
数学工具准备齐了,我打算正式跟一遍 Bellman Equation 的推导。
Oct 10, 2026 · 6128 words · 13 mins
起因 # 上一篇讨论了 Markov Property,提到 Bellman Equation 需要它作为前提。
准备看 Bellman Equation 的推导时,我在一个叫 Law of Total Expectation(全期望公式)的地方停了下来。它的核心思想是:计算整体期望时,可以先按某个变量的不同取值分组,分别算各组的条件期望,再按组别的概率加权平均。之前那篇定义的 State Value \(V^\pi(s) = \mathbb{E}_\pi[G_t \mid S_t = s]\),在 Bellman Equation 里正是用这个思路按"下一个 State"分组来展开。
Oct 10, 2026 · 4970 words · 10 mins
起因 # 继续跟着 MIT 6.S191 Lecture 5 学强化学习。上一篇理解了 Return、State Value Function \(V^\pi(s)\) 和 Action Value Function \(Q^\pi(s,a)\)。
接下来要学的是 Bellman Equation。
我之前隐约知道它能把 \(V^\pi(s)\) 写成递归形式——当前状态的长期价值,等于下一步的期望 Reward 加上折扣后下一状态的期望长期价值。但刚准备细看推导时,发现它有一个前提条件:
Oct 9, 2026 · 10300 words · 21 mins
上一篇结尾留了一个问题:
如果一个动作的长期回报要等到几十步甚至更多步之后才能知道,那 Agent 在当前状态下,如何判断不同动作的长期价值?
Return 可以衡量一条轨迹的累计收益。但做决策的时候,未来还没有发生——不存在一条可以直接计算的轨迹。那在当前时刻,怎么评价一个 State 甚至一个具体 Action 的长期价值?
Oct 8, 2026 · 7500 words · 15 mins
起因 # 最近开始看 MIT 6.S191 的 Lecture 5——Deep Reinforcement Learning。
过去几个月写了不少笔记,从 RNN 到 Transformer,从 VAE 到 GAN,基本都属于 supervised 或 self-supervised 的范畴。之前梳理训练信号来源的那篇,整理了四种学习范式——有监督、无监督、半监督与自监督学习——的核心区别在于训练信号是谁提供的。
Sep 26, 2026 · 7626 words · 16 mins
上一篇讲完 VAE,走到一条因果链:VAE 通过把 Encoder 的输出从确定点变成概率分布,让 latent space 服从已知 prior,于是可以从 prior 采样、交给 Decoder 生成新样本。
整个过程很精巧,但回头看,它对概率计算的依赖很重:Encoder 参数化 \(q(z|x)\),训练目标里有 KL divergence、有 reconstruction likelihood,每一步都在和 density 打交道。