<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ML on Chen Kai Blog</title><link>https://www.chenk.top/zh/tags/ml/</link><description>Recent content in ML on Chen Kai Blog</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Wed, 30 Jul 2025 09:00:00 +0000</lastBuildDate><atom:link href="https://www.chenk.top/zh/tags/ml/index.xml" rel="self" type="application/rss+xml"/><item><title>重参数化技巧与 Gumbel-Softmax 详解</title><link>https://www.chenk.top/zh/standalone/%E9%87%8D%E5%8F%82%E6%95%B0%E5%8C%96%E8%AF%A6%E8%A7%A3%E4%B8%8Egumbel-softmax%E6%B7%B1%E5%85%A5%E6%8E%A2%E8%AE%A8/</link><pubDate>Wed, 30 Jul 2025 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/standalone/%E9%87%8D%E5%8F%82%E6%95%B0%E5%8C%96%E8%AF%A6%E8%A7%A3%E4%B8%8Egumbel-softmax%E6%B7%B1%E5%85%A5%E6%8E%A2%E8%AE%A8/</guid><description>&lt;p>一旦模型中引入采样操作，训练便会立即面临一个关键难题：梯度如何流经随机节点&lt;/p>
&lt;p>重参数化（reparameterization）给出的答案非常直接——把 &lt;span class="math-inline">$z\sim p_\theta(z)$&lt;/span>
 改写成 &lt;span class="math-inline">$z=g_\theta(\epsilon)$&lt;/span>
，把随机性隔离到与参数无关的噪声 &lt;span class="math-inline">$\epsilon$&lt;/span>
 里，于是反向传播可以顺着 &lt;span class="math-inline">$g_\theta$&lt;/span>
 走下去。麻烦在于离散变量：&lt;span class="math-inline">$\arg\max$&lt;/span>
 一类操作不可导，梯度会断掉。&lt;strong>Gumbel-Softmax&lt;/strong>（也叫 Concrete 分布）用“带温度的 softmax + Gumbel 噪声”把离散采样变成可微近似，让你在保留离散结构的同时仍能端到端训练。&lt;/p></description></item><item><title>矩阵低秩近似与伪逆：从 SVD 到正则化</title><link>https://www.chenk.top/zh/standalone/%E7%9F%A9%E9%98%B5%E4%BD%8E%E7%A7%A9%E8%BF%91%E4%BC%BC-%E4%BC%AA%E9%80%86/</link><pubDate>Mon, 28 Jul 2025 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/standalone/%E7%9F%A9%E9%98%B5%E4%BD%8E%E7%A7%A9%E8%BF%91%E4%BC%BC-%E4%BC%AA%E9%80%86/</guid><description>&lt;p>真实数据里的矩阵几乎从不“方+满秩”：特征相关、样本不足、噪声放大病态——求逆这件事要么不存在，要么不稳定。&lt;strong>伪逆&lt;/strong>（Moore-Penrose inverse）把“逆”的直觉延续下去：它不要求方程组有精确解，而是把“解”重新定义为&lt;strong>最小二乘解&lt;/strong>（多解时再选&lt;strong>最小范数&lt;/strong>那一个）。本文从最小二乘视角给出伪逆的定义与四条 Penrose 条件，再用 &lt;strong>SVD&lt;/strong> 把它的计算与&lt;strong>低秩近似&lt;/strong>绑在一起，最后看截断奇异值如何让解更稳、什么时候必须正则化、以及这些结论在 PCA、推荐系统、 LoRA 中如何落地。&lt;/p></description></item><item><title>变分自编码器 (VAE)：从直觉到实现与调试</title><link>https://www.chenk.top/zh/standalone/%E5%8F%98%E5%88%86%E8%87%AA%E7%BC%96%E7%A0%81%E5%99%A8-vae-%E8%AF%A6%E8%A7%A3/</link><pubDate>Tue, 27 Jun 2023 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/standalone/%E5%8F%98%E5%88%86%E8%87%AA%E7%BC%96%E7%A0%81%E5%99%A8-vae-%E8%AF%A6%E8%A7%A3/</guid><description>&lt;p>普通自编码器仅能压缩与重建，而变分自编码器（VAE）则具备生成能力——它学习到一个平滑且结构化的潜在空间，可以从中采样生成全新数据。将编码器从“输出一个向量”改为“输出一个分布”，这一步骤使模型从一个花哨的压缩器升级为带可优化似然下界的生成模型。&lt;/p></description></item><item><title>优化理论（十一）：非凸优化与鞍点逃逸</title><link>https://www.chenk.top/zh/optimization-theory/11-nonconvex-saddle-escape/</link><pubDate>Thu, 29 Sep 2022 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/optimization-theory/11-nonconvex-saddle-escape/</guid><description>&lt;p>对于非凸函数 &lt;span class="math-inline">$f$&lt;/span>
，梯度下降法（GD）没有全局收敛保证。我们最多只能说 &lt;span class="math-inline">$\nabla f(x_t) \to 0$&lt;/span>
——即算法会收敛到一个&lt;strong>平稳点（stationary point）&lt;/strong>，而该点可能是局部极小值、鞍点，甚至是局部极大值。本文要探讨的问题是：&lt;strong>在什么条件下，我们能得出更强的结论？&lt;/strong>&lt;/p></description></item><item><title>优化理论（十）：随机优化与方差缩减</title><link>https://www.chenk.top/zh/optimization-theory/10-stochastic-variance-reduction/</link><pubDate>Tue, 27 Sep 2022 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/optimization-theory/10-stochastic-variance-reduction/</guid><description>&lt;p>随机梯度下降（SGD）每步只采样单个分量梯度，计算代价远低于全梯度方法——但噪声的代价是什么？能否在保持随机采样优势的同时获得确定性方法的快速收敛？本文从「噪声预算」视角出发，量化这一权衡，并推导解决方案。&lt;/p></description></item><item><title>优化理论（九）：内点法与自和谐障碍函数</title><link>https://www.chenk.top/zh/optimization-theory/09-interior-point-barrier/</link><pubDate>Mon, 26 Sep 2022 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/optimization-theory/09-interior-point-barrier/</guid><description>&lt;p>1984 年，Karmarkar 证明了线性规划（LP）不仅在理论上（椭球法早已在纸面上实现这一点），更在&lt;strong>实际中&lt;/strong>可于多项式时间内求解。他的&lt;strong>内点法&lt;/strong>始终停留在可行多面体内部，并以 &lt;span class="math-inline">$O(n L)$&lt;/span>
 次迭代收敛，远优于单纯形法的指数级最坏时间复杂度。短短十年之内，Nesterov 与 Nemirovski 利用&lt;strong>自和谐障碍函数&lt;/strong>（self-concordant barrier）框架，将该思想推广至&lt;strong>所有凸规划问题&lt;/strong>。其标志性成果——对 &lt;span class="math-inline">$n$&lt;/span>
 维问题仅需 &lt;span class="math-inline">$O(\sqrt{n} \log(1/\epsilon))$&lt;/span>
 次牛顿迭代——至今仍是中等规模凸优化的&lt;strong>黄金标准&lt;/strong>。&lt;/p></description></item><item><title>优化理论（八）：Lagrangian 对偶与 KKT 条件</title><link>https://www.chenk.top/zh/optimization-theory/08-lagrangian-duality-kkt/</link><pubDate>Sat, 24 Sep 2022 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/optimization-theory/08-lagrangian-duality-kkt/</guid><description>&lt;p>约束优化中最具深远意义的思想是：&lt;strong>约束具有价格&lt;/strong>。拉格朗日函数通过为每个不等式约束赋予一个非负乘子、为每个等式约束赋予一个自由（无符号限制）乘子，将带约束的问题转化为无约束问题。由此得到的无约束问题可能更易求解（如支持向量机 SVM 的对偶问题），也可能提供一个可验证的下界（如线性规划 LP 对偶性用于整数规划的可行性认证）。&lt;/p></description></item><item><title>优化理论（七）：二阶方法</title><link>https://www.chenk.top/zh/optimization-theory/07-second-order-methods/</link><pubDate>Thu, 22 Sep 2022 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/optimization-theory/07-second-order-methods/</guid><description>&lt;p>一阶方法在达到 &lt;span class="math-inline">$\epsilon$&lt;/span>
-精度时，迭代次数的上界为 &lt;span class="math-inline">$O(\sqrt{\kappa})$&lt;/span>
（见第 05 篇文章）。二阶方法通过引入曲率信息突破这一瓶颈：牛顿法具有&lt;strong>二次&lt;/strong>局部收敛性——每步迭代使有效数字位数翻倍；而拟牛顿法在不显式计算 Hessian 矩阵的前提下，仍能保持大部分收敛速度。&lt;/p></description></item><item><title>优化理论（六）：复合优化与近端方法</title><link>https://www.chenk.top/zh/optimization-theory/06-composite-proximal-methods/</link><pubDate>Wed, 21 Sep 2022 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/optimization-theory/06-composite-proximal-methods/</guid><description>&lt;p>当目标函数包含不可导项（如稀疏正则、TV 正则或约束集的指示函数），又或者约束难以直接处理时，“直接上梯度下降”往往会卡住——要么在不可导点处没有梯度可用，要么每一步都破坏可行性。&lt;strong>近端算子（proximal operator）&lt;/strong> 提供了一种精巧而优美的解决方案：把每次更新理解为“先对光滑部分走一步，再通过一个带二次惩罚的小规模优化，将当前点拉回具有特定结构的解空间”。&lt;/p></description></item><item><title>优化理论（五）：Nesterov 之外的加速</title><link>https://www.chenk.top/zh/optimization-theory/05-acceleration-beyond-nesterov/</link><pubDate>Tue, 20 Sep 2022 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/optimization-theory/05-acceleration-beyond-nesterov/</guid><description>&lt;p>&lt;a href="../02-smoothness-strong-convexity-nesterov/">文章 02&lt;/a>
 介绍了 Nesterov 加速，并展示了它将每次迭代的复杂度从 &lt;span class="math-inline">$\kappa$&lt;/span>
 改进到 &lt;span class="math-inline">$\sqrt{\kappa}$&lt;/span>
。本文探讨更深层次的问题：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>为什么是 &lt;span class="math-inline">$\sqrt{\kappa}$&lt;/span>
 而不是更快？&lt;/strong> 我们证明了一个匹配的下界——没有任何一阶方法能做得更好。&lt;/li>
&lt;li>&lt;strong>Nesterov 是唯一的方式吗？&lt;/strong> Polyak 的 Heavy-Ball 方法通过完全不同的更新规则达到了相同的速率。&lt;/li>
&lt;li>&lt;strong>我们能加速任意求解器吗？&lt;/strong> Catalyst 框架通过包装一个黑盒优化器来获得加速速率，代价是求解一个正则化的子问题。&lt;/li>
&lt;/ul>
&lt;p>统一的工具是一个 &lt;strong>Lyapunov 势函数（Lyapunov potential）&lt;/strong> —— 一种非负量，算法在每一步都会使其减小。Nesterov 和 Heavy-Ball 都有 Lyapunov 证明，而下界本质上说明了 Lyapunov 减小的速度不可能更快。&lt;/p></description></item><item><title>优化理论（三）：梯度下降族——从 SGD 到 AdamW</title><link>https://www.chenk.top/zh/optimization-theory/03-gradient-descent-family/</link><pubDate>Fri, 16 Sep 2022 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/optimization-theory/03-gradient-descent-family/</guid><description>&lt;p>为什么“调学习率是一门艺术”成了 ResNet 的梗，而每篇现代 LLM 论文却只是简单写下 “AdamW, &lt;span class="math-inline">$\beta_1{=}0.9, \beta_2{=}0.95, \mathrm{wd}{=}0.1$&lt;/span>
” 就翻篇了？这并非偶然——这是 &lt;strong>三十余年优化器演化的终点&lt;/strong>。&lt;/p></description></item><item><title>优化理论（二）：光滑性、强凸性与 Nesterov 加速</title><link>https://www.chenk.top/zh/optimization-theory/02-smoothness-strong-convexity-nesterov/</link><pubDate>Thu, 15 Sep 2022 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/optimization-theory/02-smoothness-strong-convexity-nesterov/</guid><description>&lt;p>大量关于优化器的“民间智慧”其实可以归结为三个核心概念：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>梯度有多陡？&lt;/strong> Lipschitz 光滑性（&lt;span class="math-inline">$L$&lt;/span>
-smoothness）限制了步长上限。&lt;/li>
&lt;li>&lt;strong>底部有多尖锐？&lt;/strong> &lt;span class="math-inline">$\mu$&lt;/span>
-强凸性决定了收敛速率，并保证最小值点唯一。&lt;/li>
&lt;li>&lt;strong>能否在不牺牲稳定性的情况下更快到达？&lt;/strong> Nesterov 加速和自适应重启将每条件数的代价从 &lt;span class="math-inline">$\kappa$&lt;/span>
 降至 &lt;span class="math-inline">$\sqrt{\kappa}$&lt;/span>
。&lt;/li>
&lt;/ul>
&lt;p>本文将这三个概念串成一条主线：用最少的不等式建立几何直觉，证明关键定理，最后通过一个最小二乘实验，让 GD、Heavy Ball 和 Nesterov 正面交锋。目标不是堆砌公式——而是让你面对新问题时，能立刻回答：“该用多大步长？收敛速率是多少？加速是否值得？”&lt;/p></description></item><item><title>优化理论（一）：凸分析基础</title><link>https://www.chenk.top/zh/optimization-theory/01-convex-analysis-foundations/</link><pubDate>Wed, 14 Sep 2022 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/optimization-theory/01-convex-analysis-foundations/</guid><description>&lt;p>本文是本系列其余所有内容的基石。我们后续将证明的几乎所有结论——梯度下降法的收敛速率、拉格朗日对偶性、近端算子（proximal operator），乃至随机优化方法的分析——都依赖于关于凸集与凸函数的一小套基本事实。本文从零开始，逐一推导全部结论。&lt;/p></description></item><item><title>核方法（八）：深度核学习 vs 深度学习——选择指南与故障排查</title><link>https://www.chenk.top/zh/kernel-methods/08-%E6%B7%B1%E5%BA%A6%E6%A0%B8%E5%AD%A6%E4%B9%A0/</link><pubDate>Thu, 30 Dec 2021 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/kernel-methods/08-%E6%B7%B1%E5%BA%A6%E6%A0%B8%E5%AD%A6%E4%B9%A0/</guid><description>&lt;p>2026 年了，为什么还要读核方法？Transformer 不是已经把整个 ML 栈吃掉了吗？是也不是。Transformer 吃掉了头条，核方法吃掉的是角落——只有 200 个样本的场景、必须给出校准误差棒的场景、物理学家需要知道是&lt;em>哪个&lt;/em>基函数贡献了这次预测的场景。本系列的最终篇就是这份&amp;quot;角落工程师手册&amp;quot;：核方法什么时候真的能赢、出了问题怎么诊断、怎么把核挂在神经网络头顶上拿到两边的好处，以及为什么 NTK（Jacot et al., 2018）告诉我们深网在某个极限下其实&lt;em>就是&lt;/em>一种核方法——两派的边界，到 2026 年比任何时候都更模糊。&lt;/p></description></item><item><title>核方法（七）：大规模核方法——Nystrom 近似与随机傅里叶特征</title><link>https://www.chenk.top/zh/kernel-methods/07-%E5%A4%A7%E8%A7%84%E6%A8%A1%E6%A0%B8%E6%96%B9%E6%B3%95/</link><pubDate>Fri, 24 Dec 2021 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/kernel-methods/07-%E5%A4%A7%E8%A7%84%E6%A8%A1%E6%A0%B8%E6%96%B9%E6%B3%95/</guid><description>&lt;p>你想拿 RBF SVM 去跑一个百万规模的图像分类任务。Gram 矩阵是 &lt;span class="math-inline">$10^6 \times 10^6$&lt;/span>
 的 double 数组，整整 &lt;strong>8 TB&lt;/strong>。光是这一个数字——八个 TB 的内存，仅仅为了&lt;em>存&lt;/em>那个核矩阵——就解释了为什么大部分在统计课上学过核方法的工程师，在真实生产环境里都默默不再碰它。核技巧用一次内积就送你一个无穷维特征空间；账单是在你有 &lt;span class="math-inline">$n^2$&lt;/span>
 对数据时寄到。&lt;/p></description></item><item><title>核方法（六）：高斯过程——当核方法遇到贝叶斯推断</title><link>https://www.chenk.top/zh/kernel-methods/06-%E9%AB%98%E6%96%AF%E8%BF%87%E7%A8%8B/</link><pubDate>Sun, 19 Dec 2021 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/kernel-methods/06-%E9%AB%98%E6%96%AF%E8%BF%87%E7%A8%8B/</guid><description>&lt;p>核岭回归给你一个数。喂进 &lt;span class="math-inline">$x_*$&lt;/span>
，它返回 &lt;span class="math-inline">$\hat{y}_* = 23.7$&lt;/span>
。完。但你接下来要&lt;em>用&lt;/em>这个预测做事——安排发货、调整剂量、下注——光一个数字不够用。&amp;ldquo;明天 25 度&amp;quot;是一句话；&amp;ldquo;很可能 25 度，95% 的概率落在 22 到 28 之间&amp;quot;才是可以&lt;em>行动&lt;/em>的信息。任何在不确定性下的决策都需要后一种。高斯过程是把核方法从&amp;quot;点预测器&amp;quot;升级到&amp;quot;分布预测器&amp;quot;最干净的路径，且不需要扔掉前五篇里任何一行核函数的代数。这一升级的代价仅仅是一次 Cholesky——同样的 &lt;span class="math-inline">$O(n^3)$&lt;/span>
、同样的 Gram 矩阵——却额外白送了后验协方差和边际似然两件相当昂贵的礼物。&lt;/p></description></item><item><title>核方法（五）：核 SVM、核 PCA 与核岭回归</title><link>https://www.chenk.top/zh/kernel-methods/05-%E6%A0%B8svm%E6%A0%B8pca%E6%A0%B8%E5%B2%AD%E5%9B%9E%E5%BD%92/</link><pubDate>Tue, 14 Dec 2021 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/kernel-methods/05-%E6%A0%B8svm%E6%A0%B8pca%E6%A0%B8%E5%B2%AD%E5%9B%9E%E5%BD%92/</guid><description>&lt;p>你的特征只有二维，数据明明是一个圆环套一个圆环，而 &lt;code>LinearSVC&lt;/code> 在 50% 准确率上瞪着你——一副&amp;quot;我真心觉得直线就是答案&amp;quot;的天真神情。你盯着散点图，又盯着模型，脑子后台终于冒出&amp;quot;核 SVM&amp;quot;三个字。改成 &lt;code>kernel='rbf'&lt;/code>，准确率瞬间跳到 0.98，整个下午你都在琢磨：刚才那一手到底是什么魔法？为什么同样的招数还能让核 PCA 把瑞士卷展平，让核岭回归三行代码拟合一个正弦波？&lt;/p></description></item><item><title>核方法（四）：常见核函数族——RBF、Matern、多项式、周期与更多</title><link>https://www.chenk.top/zh/kernel-methods/04-%E5%B8%B8%E8%A7%81%E6%A0%B8%E5%87%BD%E6%95%B0%E6%97%8F/</link><pubDate>Thu, 09 Dec 2021 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/kernel-methods/04-%E5%B8%B8%E8%A7%81%E6%A0%B8%E5%87%BD%E6%95%B0%E6%97%8F/</guid><description>&lt;p>你第一次在 sklearn 里写 &lt;code>SVC(kernel='rbf')&lt;/code>，&lt;code>gamma&lt;/code> 设了多少？&lt;code>'scale'&lt;/code>？&lt;code>'auto'&lt;/code>？滚动过那个默认值时你压根没看一眼。三个月后模型严重过拟合，Gram 矩阵看着像单位阵，你也不知道是哪个旋钮拧错了。大多数&amp;quot;核调参&amp;quot;的债，其实是&lt;em>选核&lt;/em>的债——你为了错误的理由选了默认的核，再多 grid search 也救不回来。&lt;/p></description></item><item><title>核方法（三）：RKHS——核方法的理论灵魂</title><link>https://www.chenk.top/zh/kernel-methods/03-rkhs%E7%90%86%E8%AE%BA/</link><pubDate>Sat, 04 Dec 2021 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/kernel-methods/03-rkhs%E7%90%86%E8%AE%BA/</guid><description>&lt;p>如果你曾在某节课上听到老师写下 &amp;ldquo;RKHS&amp;rdquo; 三个字母就感觉血压升高，那这篇文章是写给你的。RKHS 不是一个由三个吓人字母组成的秘密俱乐部——它就是一个函数空间。一旦你看清楚里面装的是什么东西，核方法就不再是魔法，而是你已经熟悉的那种线性代数。&lt;/p></description></item><item><title>核方法（二）：数学基础——正定核与 Mercer 定理</title><link>https://www.chenk.top/zh/kernel-methods/02-%E6%A0%B8%E6%96%B9%E6%B3%95%E7%9A%84%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/</link><pubDate>Mon, 29 Nov 2021 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/kernel-methods/02-%E6%A0%B8%E6%96%B9%E6%B3%95%E7%9A%84%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/</guid><description>&lt;p>写核 SVM 的第一周，我自信地造了一个相似度函数 &lt;code>tanh(1.5 * x.dot(y) - 2.0)&lt;/code>：对称、有界、看起来一切都很正常。然后 sklearn 给我吐了一句 &lt;code>ValueError: kernel matrix is not positive semidefinite&lt;/code>，模型效果比瞎猜还差。&lt;/p></description></item><item><title>核方法（一）：为什么需要它——从线性算法的天花板说起</title><link>https://www.chenk.top/zh/kernel-methods/01-%E4%B8%BA%E4%BB%80%E4%B9%88%E9%9C%80%E8%A6%81%E6%A0%B8%E6%96%B9%E6%B3%95/</link><pubDate>Wed, 24 Nov 2021 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/kernel-methods/01-%E4%B8%BA%E4%BB%80%E4%B9%88%E9%9C%80%E8%A6%81%E6%A0%B8%E6%96%B9%E6%B3%95/</guid><description>&lt;p>我第一次想把逻辑回归扔到一对交错的螺旋数据上时，整整一个下午都在折腾正则化系数、换求解器、归一化输入——一直觉得是哪里写错了。准确率始终徘徊在 50% 上下，跟掷硬币没区别。换句话说，模型什么都没学到。&lt;/p></description></item></channel></rss>