<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>绿色记忆 &#187; Algorithm</title>
	<atom:link href="https://blog.gmem.cc/category/work/algorithm/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.gmem.cc</link>
	<description></description>
	<lastBuildDate>Tue, 21 Apr 2026 10:40:56 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9.14</generator>
	<item>
		<title>人工智能理论知识 - 数学基础</title>
		<link>https://blog.gmem.cc/ai-knowledge-quick-ref-1</link>
		<comments>https://blog.gmem.cc/ai-knowledge-quick-ref-1#comments</comments>
		<pubDate>Wed, 15 Apr 2026 12:39:04 +0000</pubDate>
		<dc:creator><![CDATA[Alex]]></dc:creator>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[Math]]></category>

		<guid isPermaLink="false">https://blog.gmem.cc/?p=40317</guid>
		<description><![CDATA[<p>这一篇整理 AI 所需的数学基础，包括基础数学、线性代数、微积分与概率论统计。它回答的核心问题是：模型里的向量、矩阵、导数、积分、概率分布、期望与信息量分别是什么意思，以及它们为什么会成为后续机器学习与深度学习的共同语言；后续篇章将在这些数学工具之上进入算法、学习理论与模型结构。 基础数学 代数基础 运算律与代数式 代数式（Algebraic Expression）由常数、变量与运算构成；给定变量取值后即可求值。化简（Simplification）的目标是把表达式写成更可读、更便于推导/比较的等价形式：合并同类项（Like Terms）、提取公因子（Common Factor）、展开（Expansion）与因式分解（Factorization）是最常见的操作。 运算律（Algebraic Laws）本质上是在某个数系/代数结构（例如实数域）中成立的恒等式（Identity）；它们允许在不改变值的前提下重排/重写表达式。需要区分：加法/乘法满足交换律与结合律，但减法/除法一般不满足。 性质 公式 备注 交换律（Commutativity） 不适用于 、 结合律（Associativity） 允许不改变括号结构地分组 分配律（Distributivity） 展开与提因式的核心 <a class="read-more" href="https://blog.gmem.cc/ai-knowledge-quick-ref-1">[...]</a></p>
<p>The post <a rel="nofollow" href="https://blog.gmem.cc/ai-knowledge-quick-ref-1">人工智能理论知识 - 数学基础</a> appeared first on <a rel="nofollow" href="https://blog.gmem.cc">绿色记忆</a>.</p>
]]></description>
				<content:encoded><![CDATA[<div class="wri_content_clear_both"><p>这一篇整理 AI 所需的数学基础，包括基础数学、线性代数、微积分与概率论统计。它回答的核心问题是：模型里的向量、矩阵、导数、积分、概率分布、期望与信息量分别是什么意思，以及它们为什么会成为后续机器学习与深度学习的共同语言；后续篇章将在这些数学工具之上进入算法、学习理论与模型结构。</p>
<div class="blog_h1"><span class="graybg">基础数学</span></div>
<div class="blog_h2"><span class="graybg">代数基础</span></div>
<div class="blog_h3"><span class="graybg">运算律与代数式</span></div>
<p>代数式（Algebraic Expression）由常数、变量与运算构成；给定变量取值后即可求值。化简（Simplification）的目标是把表达式写成更可读、更便于推导/比较的等价形式：合并同类项（Like Terms）、提取公因子（Common Factor）、展开（Expansion）与因式分解（Factorization）是最常见的操作。</p>
<p>运算律（Algebraic Laws）本质上是在某个数系/代数结构（例如实数域）中成立的恒等式（Identity）；它们允许在不改变值的前提下重排/重写表达式。需要区分：加法/乘法满足交换律与结合律，但减法/除法一般不满足。</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">性质</td>
<td style="text-align: center;">公式</td>
<td style="text-align: center;">备注</td>
</tr>
</thead>
<tbody>
<tr>
<td>交换律（Commutativity）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(a+b=b+a\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(ab=ba\)</span></td>
<td>不适用于 <span displaypfx="inline-" class="mathjax-container">\(a-b\)</span>、<span displaypfx="inline-" class="mathjax-container">\(a/b\)</span></td>
</tr>
<tr>
<td>结合律（Associativity）</td>
<td><span displaypfx="inline-" class="mathjax-container">\((a+b)+c=a+(b+c)\)</span><br /><span displaypfx="inline-" class="mathjax-container">\((ab)c=a(bc)\)</span></td>
<td>允许不改变括号结构地分组</td>
</tr>
<tr>
<td>分配律（Distributivity）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(a(b+c)=ab+ac\)</span></td>
<td>展开与提因式的核心</td>
</tr>
<tr>
<td>恒等元（Identity Element）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(a+0=a\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(a\cdot 1=a\)</span></td>
<td>0 与 1 在代数推导中常被隐式使用</td>
</tr>
<tr>
<td>逆元（Inverse）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(a+(-a)=0\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(a\cdot a^{-1}=1\)</span></td>
<td>第二式要求 <span displaypfx="inline-" class="mathjax-container">\(a\ne 0\)</span></td>
</tr>
<tr>
<td>零乘积原则（Zero Product）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(ab=0\Rightarrow a=0\ \text{或}\ b=0\)</span></td>
<td>把方程从“乘积=0”转为“因子=0”</td>
</tr>
</tbody>
</table>
<div class="blog_h3"><span class="graybg">因式分解（Factorization）</span></div>
<p>因式分解（Factorization）把一个表达式改写成若干因子（Factor）的乘积。它的直接价值是：把“值为 0 / 符号变化 / 约束条件”转成对各因子的分析。与之对偶的是展开（Expansion）：把乘积写成和式。</p>
<p>对多项式（Polynomial）<span displaypfx="inline-" class="mathjax-container">\(p(x)\)</span>，根（Root/Zero）与线性因子之间存在精确对应：若 <span displaypfx="inline-" class="mathjax-container">\(p(r)=0\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\((x-r)\)</span> 是 <span displaypfx="inline-" class="mathjax-container">\(p(x)\)</span> 的因子（因子定理（Factor Theorem））。</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">套路/恒等式</td>
<td style="text-align: center;">形式</td>
<td style="text-align: center;">备注</td>
</tr>
</thead>
<tbody>
<tr>
<td>提公因子（Common Factor）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(ax+ay=a(x+y)\)</span></td>
<td>先把最大公因子提出来</td>
</tr>
<tr>
<td>平方差（Difference of Squares）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(a^2-b^2=(a-b)(a+b)\)</span></td>
<td>常用于构造可约因子</td>
</tr>
<tr>
<td>完全平方（Perfect Square）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(a^2\pm 2ab+b^2=(a\pm b)^2\)</span></td>
<td>与配方（Completing the Square）等价</td>
</tr>
<tr>
<td>立方和/差（Sum/Difference of Cubes）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(a^3-b^3=(a-b)(a^2+ab+b^2)\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(a^3+b^3=(a+b)(a^2-ab+b^2)\)</span></td>
<td>二次因子在实数域可能不可再分</td>
</tr>
<tr>
<td>二次式按根分解</td>
<td><span displaypfx="inline-" class="mathjax-container">\(ax^2+bx+c=a(x-r_1)(x-r_2)\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(r_1,r_2\)</span> 可为复数</td>
</tr>
<tr>
<td>分组分解（Grouping）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(ax+ay+bx+by=(a+b)(x+y)\)</span></td>
<td>目标是制造共同因子</td>
</tr>
</tbody>
</table>
<div class="blog_h3"><span class="graybg">多项式（Polynomial）</span></div>
<p>一元多项式（Univariate Polynomial）是形如 <span displaypfx="inline-" class="mathjax-container">\(p(x)=\sum_{k=0}^{n} a_k x^k\)</span> 的函数，其中 <span displaypfx="inline-" class="mathjax-container">\(a_k\)</span> 是系数（Coefficient），<span displaypfx="inline-" class="mathjax-container">\(n\)</span> 是次数（Degree）。多项式在实数域上处处可导、可积；在局部逼近（例如 Taylor）与特征构造中非常常用。</p>
<p>多元多项式（Multivariate Polynomial）可写成对多重指数（Multi-index）求和：若 <span displaypfx="inline-" class="mathjax-container">\(x\in\mathbb{R}^d\)</span>，则</p>
<span displaypfx="" class="mathjax-container">\[p(x)=\sum_{\alpha\in\mathbb{N}^d} c_\alpha\,x^\alpha,\quad x^\alpha=\prod_{i=1}^{d} x_i^{\alpha_i}\]</span>
<p>补充：多元二次多项式（Quadratic Polynomial）的纯二次部分在线性代数里通常称为二次型（Quadratic Form），可写成矩阵形式 <span displaypfx="inline-" class="mathjax-container">\(q(\mathbf{x})=\mathbf{x}^\top A\mathbf{x}\)</span>；其中 <span displaypfx="inline-" class="mathjax-container">\(x_ix_j\)</span>（例如 <span displaypfx="inline-" class="mathjax-container">\(xy\)</span>）是交叉项（Cross Term）。</p>
<p>在机器学习里，<span style="background-color: #c0c0c0;">多项式特征（Polynomial Features）</span>把输入映射到包含高阶项的特征空间，等价于显式构造某些核函数（Kernel）的有限维版本。</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">概念</td>
<td style="text-align: center;">表述</td>
<td style="text-align: center;">用途</td>
</tr>
</thead>
<tbody>
<tr>
<td>首项/首项系数（Leading Term/Coefficient）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(a_n x^n\)</span> / <span displaypfx="inline-" class="mathjax-container">\(a_n\)</span></td>
<td>决定远端增长阶与符号</td>
</tr>
<tr>
<td>余数定理（Remainder Theorem）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(p(x)=q(x)(x-a)+p(a)\)</span></td>
<td>快速计算 <span displaypfx="inline-" class="mathjax-container">\(p(a)\)</span></td>
</tr>
<tr>
<td>因子定理（Factor Theorem）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(p(a)=0\Leftrightarrow (x-a)\mid p(x)\)</span></td>
<td>把“根”与“线性因子”连接起来</td>
</tr>
</tbody>
</table>
<div class="blog_h3"><span class="graybg">一元二次方程（Quadratic Equation）</span></div>
<p>一元二次方程（Quadratic Equation）标准形式为 <span displaypfx="inline-" class="mathjax-container">\(ax^2+bx+c=0\)</span>（<span displaypfx="inline-" class="mathjax-container">\(a\ne 0\)</span>）。核心量是判别式（Discriminant）<span displaypfx="inline-" class="mathjax-container">\(\Delta=b^2-4ac\)</span>：它决定解的个数与类型。</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">结论</td>
<td style="text-align: center;">公式</td>
<td style="text-align: center;">备注</td>
</tr>
</thead>
<tbody>
<tr>
<td>求根公式（Quadratic Formula）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(x=\frac{-b\pm\sqrt{\Delta}}{2a}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\Delta&lt;0\)</span> 时根为共轭复数</td>
</tr>
<tr>
<td>配方（Completing the Square）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(ax^2+bx+c=a\left(x+\frac{b}{2a}\right)^2-\frac{\Delta}{4a}\)</span></td>
<td>同时给出顶点与最值</td>
</tr>
<tr>
<td>顶点（Vertex）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(x_v=-\frac{b}{2a},\quad f(x_v)=-\frac{\Delta}{4a}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(a&gt;0\)</span> 时为全局最小；<span displaypfx="inline-" class="mathjax-container">\(a&lt;0\)</span> 时为全局最大</td>
</tr>
<tr>
<td>韦达定理（Vieta）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(r_1+r_2=-\frac{b}{a},\quad r_1r_2=\frac{c}{a}\)</span></td>
<td>无需显式求根即可得到对称量</td>
</tr>
</tbody>
</table>
<div class="blog_h3"><span class="graybg">分式与有理式（Rational Expressions）</span></div>
<p>分式/有理式（Rational Expression）是两个多项式之比：<span displaypfx="inline-" class="mathjax-container">\(\frac{p(x)}{q(x)}\)</span>，并要求 <span displaypfx="inline-" class="mathjax-container">\(q(x)\ne 0\)</span>。任何化简都必须保留定义域（Domain）约束：约分（Cancellation）只是在允许的点上重写表达式，不会“把不可取值点变得可取”。</p>
<p>典型例子： <span displaypfx="inline-" class="mathjax-container">\(\frac{x^2-1}{x-1}=\frac{(x-1)(x+1)}{x-1}=x+1\)</span>，但仍需强调 <span displaypfx="inline-" class="mathjax-container">\(x\ne 1\)</span>。这里 <span displaypfx="inline-" class="mathjax-container">\(x=1\)</span> 是可去间断点（Removable Discontinuity）：原式无定义，而约分后的表达式在该点有值。</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">操作</td>
<td style="text-align: center;">规则</td>
<td style="text-align: center;">要点</td>
</tr>
</thead>
<tbody>
<tr>
<td>加减</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{a}{b}\pm\frac{c}{d}=\frac{ad\pm bc}{bd}\)</span></td>
<td>先通分（Common Denominator）</td>
</tr>
<tr>
<td>乘除</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{a}{b}\cdot\frac{c}{d}=\frac{ac}{bd}\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(\frac{a}{b}\div\frac{c}{d}=\frac{a}{b}\cdot\frac{d}{c}\)</span></td>
<td>除法要求 <span displaypfx="inline-" class="mathjax-container">\(c\ne 0\)</span></td>
</tr>
<tr>
<td>约分</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{(x-r)u(x)}{(x-r)v(x)}=\frac{u(x)}{v(x)}\)</span></td>
<td>仍需保留 <span displaypfx="inline-" class="mathjax-container">\(x\ne r\)</span></td>
</tr>
<tr>
<td>符号分析</td>
<td>把数轴按零点/极点分段</td>
<td>有理不等式常用“区间符号表”</td>
</tr>
</tbody>
</table>
<div class="blog_h3"><span class="graybg">绝对值与分段（Absolute Value &amp; Piecewise）</span></div>
<p>绝对值（Absolute Value）<span displaypfx="inline-" class="mathjax-container">\(|x|\)</span> 表示到 0 的距离（Distance to Zero）。它把“正负”信息丢掉，只保留大小；因此绝对值相关方程/不等式通常要通过分段（Piecewise）把符号情况拆开讨论。</p>
<span displaypfx="" class="mathjax-container">\[|x|=\begin{cases}x,&amp; x\ge 0\\ -x,&amp; x&lt;0\end{cases}\]</span>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">形式</td>
<td style="text-align: center;">等价条件</td>
<td style="text-align: center;">前提</td>
</tr>
</thead>
<tbody>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(|x|=a\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(x=a\ \text{或}\ x=-a\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(a\ge 0\)</span></td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(|x|&lt;a\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(-a&lt;x&lt;a\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(a&gt;0\)</span></td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(|x|\le a\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(-a\le x\le a\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(a\ge 0\)</span></td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(|x|\ge a\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(x\le -a\ \text{或}\ x\ge a\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(a\ge 0\)</span></td>
</tr>
</tbody>
</table>
<p>三角不等式（Triangle Inequality）<span displaypfx="inline-" class="mathjax-container">\(|x+y|\le |x|+|y|\)</span> 是绝对值最重要的性质之一；它把“求和后的误差”上界化为“各自误差的和”，在误差分析与泛化界推导中高频出现。</p>
<p>深度学习里常见的 ReLU、hinge loss 等都是分段函数：<span style="background-color: #c0c0c0;">分段点处通常不可导，但仍可用次梯度（Subgradient）做优化</span>。</p>
<div class="blog_h3"><span class="graybg">常用代数技巧：配方 / 换元 / 估计</span></div>
<div class="blog_h4"><span class="graybg">配方（Completing the Square）</span></div>
<p>配方（Completing the Square）把二次式改写成“平方 + 常数”，从而直接读出最值、解的结构与可行区间：</p>
<span displaypfx="" class="mathjax-container">\[ax^2+bx+c=a\left(x+\frac{b}{2a}\right)^2-\frac{b^2-4ac}{4a}\]</span>
<p>例如 <span displaypfx="inline-" class="mathjax-container">\(x^2+6x+5=(x+3)^2-4\)</span>，因此方程 <span displaypfx="inline-" class="mathjax-container">\(x^2+6x+5=0\)</span> 等价于 <span displaypfx="inline-" class="mathjax-container">\((x+3)^2=4\)</span>，解为 <span displaypfx="inline-" class="mathjax-container">\(x=-1,-5\)</span>。</p>
<div class="blog_h4"><span class="graybg">换元（Substitution）</span></div>
<p>换元（Substitution）通过引入新变量，把原问题变成更低复杂度的标准形式，尤其适用于“重复结构”。例如：</p>
<span displaypfx="" class="mathjax-container">\[x^4-5x^2+4=0,\ \text{令 }u=x^2\Rightarrow u^2-5u+4=0\]</span>
<p>解得 <span displaypfx="inline-" class="mathjax-container">\(u=1,4\)</span>，再回代得到 <span displaypfx="inline-" class="mathjax-container">\(x=\pm 1,\pm 2\)</span>。</p>
<div class="blog_h4"><span class="graybg">估计（Bounding / Estimation）</span></div>
<p>估计（Bounding/Estimation）常把表达式改写为“非负项 + 常数”，或利用单调性把复杂项夹逼到可控区间。最常见的来源是“平方非负”（<span displaypfx="inline-" class="mathjax-container">\((\cdot)^2\ge 0\)</span>）：</p>
<span displaypfx="" class="mathjax-container">\[(x-1)^2\ge 0\Rightarrow x^2+1\ge 2x,\quad (|x|-1)^2\ge 0\Rightarrow x^2+1\ge 2|x|\]</span>
<p>这类估计在证明最值、构造上界/下界、以及把损失函数改写成“凸的主项 + 可控余项”时很有效。</p>
<div class="blog_h3"><span class="graybg">数系（Number Systems）</span></div>
<p>数系（Number Systems）描述“允许使用哪些数，以及这些数上哪些运算是封闭的”。常见链条是</p>
<span displaypfx="" class="mathjax-container">\[\mathbb{N}\subset \mathbb{Z}\subset \mathbb{Q}\subset \mathbb{R}\subset \mathbb{C}\]</span>
<p>其中实数（Real Numbers）是有序（Ordered）且完备（Complete）的；复数（Complex Numbers）扩展了方程可解性（例如 <span displaypfx="inline-" class="mathjax-container">\(x^2+1=0\)</span> 在实数无解，但在复数有解）。</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">数系</td>
<td style="text-align: center;">记号</td>
<td style="text-align: center;">典型元素</td>
<td style="text-align: center;">结构要点</td>
</tr>
</thead>
<tbody>
<tr>
<td>自然数（Natural Numbers）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\mathbb{N}\)</span></td>
<td>0,1,2,…（是否含 0 取决于约定）</td>
<td>对加法/乘法封闭；一般不可做减法/除法</td>
</tr>
<tr>
<td>整数（Integers）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\mathbb{Z}\)</span></td>
<td>…,-2,-1,0,1,2,…</td>
<td>对加减乘封闭；除法不封闭</td>
</tr>
<tr>
<td>有理数（Rational Numbers）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\mathbb{Q}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(p/q\)</span>（<span displaypfx="inline-" class="mathjax-container">\(p,q\in\mathbb{Z},q\ne 0\)</span>）</td>
<td>域（Field）：非零元素存在乘法逆元</td>
</tr>
<tr>
<td>实数（Real Numbers）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\mathbb{R}\)</span></td>
<td>包含无理数（Irrational），如 <span displaypfx="inline-" class="mathjax-container">\(\sqrt{2},\pi\)</span></td>
<td>有序完备域；极限/连续的基础</td>
</tr>
<tr>
<td>复数（Complex Numbers）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\mathbb{C}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(a+bi\)</span></td>
<td>代数闭包（Algebraic Closure）；不可定义全序</td>
</tr>
</tbody>
</table>
<div class="blog_h2"><span class="graybg">函数基础</span></div>
<div class="blog_h3"><span class="graybg">定义域与值域</span></div>
<p>函数（Function）是映射：把输入集合中的每个元素映到一个输出。定义域（Domain）是允许的输入集合；值域（Range/Image）是实际能取到的输出集合（通常是陪域（Codomain）的子集）。常用记法：</p>
<span displaypfx="" class="mathjax-container">\[f:D\to Y,\quad x\mapsto f(x)\]</span>
<p>从表达式读定义域的常见约束：</p>
<ul>
<li>分母不为 0： <span displaypfx="inline-" class="mathjax-container">\(\frac{p(x)}{q(x)}\)</span> 要求 <span displaypfx="inline-" class="mathjax-container">\(q(x)\ne 0\)</span>。</li>
<li>偶次根非负： <span displaypfx="inline-" class="mathjax-container">\(\sqrt{g(x)}\)</span> 要求 <span displaypfx="inline-" class="mathjax-container">\(g(x)\ge 0\)</span>（实数域）。</li>
<li>对数正数： <span displaypfx="inline-" class="mathjax-container">\(\ln g(x)\)</span> 要求 <span displaypfx="inline-" class="mathjax-container">\(g(x)&gt;0\)</span>。</li>
</ul>
<p>值域分析常用“解方程 + 约束”思路：令 <span displaypfx="inline-" class="mathjax-container">\(y=f(x)\)</span>，把 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 表示成 <span displaypfx="inline-" class="mathjax-container">\(y\)</span> 并推导可行条件；若 <span displaypfx="inline-" class="mathjax-container">\(f\)</span> 在某区间单调，则可用反函数直接得到值域。</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">函数</td>
<td style="text-align: center;">定义域</td>
<td style="text-align: center;">值域</td>
</tr>
</thead>
<tbody>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\sqrt{x}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(x\ge 0\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(y\ge 0\)</span></td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\ln x\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(x&gt;0\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\mathbb{R}\)</span></td>
</tr>
<tr>
<td>sigmoid（<span displaypfx="inline-" class="mathjax-container">\(\sigma(z)=\frac{1}{1+e^{-z}}\)</span>）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\mathbb{R}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\((0,1)\)</span></td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\tanh z\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\mathbb{R}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\((-1,1)\)</span></td>
</tr>
<tr>
<td>ReLU（<span displaypfx="inline-" class="mathjax-container">\(\max(0,z)\)</span>）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\mathbb{R}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\([0,+\infty)\)</span></td>
</tr>
</tbody>
</table>
<div class="blog_h3"><span class="graybg">复合函数</span></div>
<p>复合函数（Function Composition）把一个函数的输出作为另一个函数的输入：若 <span displaypfx="inline-" class="mathjax-container">\(g:D\to E\)</span>、<span displaypfx="inline-" class="mathjax-container">\(f:E\to Y\)</span>，则</p>
<span displaypfx="" class="mathjax-container">\[(f\circ g)(x)=f(g(x))\]</span>
<p>定义域必须同时满足两层约束： <span displaypfx="inline-" class="mathjax-container">\(x\in\mathrm{dom}(g)\)</span> 且 <span displaypfx="inline-" class="mathjax-container">\(g(x)\in\mathrm{dom}(f)\)</span>。例如 <span displaypfx="inline-" class="mathjax-container">\(f(x)=\sqrt{x}\)</span>、<span displaypfx="inline-" class="mathjax-container">\(g(x)=x^2-1\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\((f\circ g)(x)=\sqrt{x^2-1}\)</span> 的定义域是 <span displaypfx="inline-" class="mathjax-container">\(|x|\ge 1\)</span>。</p>
<p>复合满足结合律（Associativity）：<span displaypfx="inline-" class="mathjax-container">\((f\circ g)\circ h=f\circ(g\circ h)\)</span>，但一般不满足交换律： <span displaypfx="inline-" class="mathjax-container">\(f\circ g\ne g\circ f\)</span>。</p>
<div class="blog_h3"><span class="graybg">反函数</span></div>
<p>反函数（Inverse Function）把映射“倒过来”。若 <span displaypfx="inline-" class="mathjax-container">\(f:D\to Y\)</span> 在 <span displaypfx="inline-" class="mathjax-container">\(D\)</span> 上是双射（Bijection），则存在 <span displaypfx="inline-" class="mathjax-container">\(f^{-1}:\mathrm{range}(f)\to D\)</span> 满足</p>
<span displaypfx="" class="mathjax-container">\[f^{-1}(f(x))=x,\quad f(f^{-1}(y))=y\]</span>
<p>注意 <span displaypfx="inline-" class="mathjax-container">\(f^{-1}\)</span> 表示反函数，不是倒数 <span displaypfx="inline-" class="mathjax-container">\(1/f\)</span>。求反函数的常用步骤是：设 <span displaypfx="inline-" class="mathjax-container">\(y=f(x)\)</span>，交换 <span displaypfx="inline-" class="mathjax-container">\(x,y\)</span> 并解出 <span displaypfx="inline-" class="mathjax-container">\(y\)</span>。</p>
<p>例：线性函数 <span displaypfx="inline-" class="mathjax-container">\(y=ax+b\)</span>（<span displaypfx="inline-" class="mathjax-container">\(a\ne 0\)</span>）的反函数是 <span displaypfx="inline-" class="mathjax-container">\(f^{-1}(y)=\frac{y-b}{a}\)</span>。sigmoid 的反函数是 logit：若 <span displaypfx="inline-" class="mathjax-container">\(p=\sigma(z)\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(z=\log\frac{p}{1-p}\)</span>（要求 <span displaypfx="inline-" class="mathjax-container">\(p\in(0,1)\)</span>）。</p>
<p>若函数不单调或不可一一对应（如 <span displaypfx="inline-" class="mathjax-container">\(f(x)=x^2\)</span> 在 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{R}\)</span> 上），则必须限制定义域（例如限制为 <span displaypfx="inline-" class="mathjax-container">\(x\ge 0\)</span>）才能得到真正的反函数。</p>
<div class="blog_h3"><span class="graybg">奇偶性与单调性</span></div>
<p>奇偶性（Parity）描述对称性：偶函数（Even Function）满足 <span displaypfx="inline-" class="mathjax-container">\(f(-x)=f(x)\)</span>（关于 y 轴对称），奇函数（Odd Function）满足 <span displaypfx="inline-" class="mathjax-container">\(f(-x)=-f(x)\)</span>（关于原点对称）。</p>
<p>单调性（Monotonicity）描述“随输入增加，输出是否不减/不增”。在区间 <span displaypfx="inline-" class="mathjax-container">\(I\)</span> 上：</p>
<ul>
<li>单调递增（Monotone Increasing）：<span displaypfx="inline-" class="mathjax-container">\(x_1&lt;x_2\Rightarrow f(x_1)\le f(x_2)\)</span>。</li>
<li>严格递增（Strictly Increasing）：<span displaypfx="inline-" class="mathjax-container">\(x_1&lt;x_2\Rightarrow f(x_1)&lt;f(x_2)\)</span>。</li>
<li>单调递减/严格递减同理。</li>
</ul>
<p>单调函数在区间上必为单射（Injective），因此在该区间上可定义反函数。这也是为什么很多“不可逆”的函数（如 <span displaypfx="inline-" class="mathjax-container">\(x^2\)</span>）在限制到某个单调区间后就变得可逆。</p>
<div class="blog_h3"><span class="graybg">凸性与凹性</span></div>
<p>凸性（Convexity）是优化与泛化分析的核心几何性质。函数 <span displaypfx="inline-" class="mathjax-container">\(f\)</span> 在区间/凸集上是凸函数（Convex Function），当且仅当对任意 <span displaypfx="inline-" class="mathjax-container">\(x_1,x_2\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(\lambda\in[0,1]\)</span> 都有</p>
<span displaypfx="" class="mathjax-container">\[f(\lambda x_1+(1-\lambda)x_2)\le \lambda f(x_1)+(1-\lambda)f(x_2)\]</span>
<p>凹函数（Concave Function）则把不等号方向反过来。几何上：凸函数“弦在图像上方”，凹函数“弦在图像下方”。</p>
<p>若 <span displaypfx="inline-" class="mathjax-container">\(f\)</span> 二阶可导，则一维判别很简单： <span displaypfx="inline-" class="mathjax-container">\(f''(x)\ge 0\)</span> 则凸， <span displaypfx="inline-" class="mathjax-container">\(f''(x)\le 0\)</span> 则凹；多变量情形把 <span displaypfx="inline-" class="mathjax-container">\(f''\)</span> 替换为 Hessian，要求其半正定/半负定。</p>
<p>典型例子： <span displaypfx="inline-" class="mathjax-container">\(x^2\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(e^x\)</span> 是凸函数；<span displaypfx="inline-" class="mathjax-container">\(\log x\)</span>（<span displaypfx="inline-" class="mathjax-container">\(x&gt;0\)</span>）是凹函数。很多经典损失（如 MSE、logistic loss）对模型输出是凸的，但对深度网络参数整体通常非凸。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/convex.jpg"><img class="alignnone size-full wp-image-40553" src="https://blog.gmem.cc/wp-content/uploads/2026/03/convex.jpg" alt="convex" width="100%" /></a></p>
<div class="blog_h2"><span class="graybg">方程与超平面</span></div>
<div class="blog_h3"><span class="graybg">线性方程（Ax + By + C = 0）</span></div>
<p>二维平面中，线性方程（Linear Equation）<span displaypfx="inline-" class="mathjax-container">\(Ax+By+C=0\)</span>（<span displaypfx="inline-" class="mathjax-container">\((A,B)\ne(0,0)\)</span>）表示一条直线（Line）。向量 <span displaypfx="inline-" class="mathjax-container">\((A,B)\)</span> 是法向量（Normal Vector）：它与直线方向垂直；常数项 <span displaypfx="inline-" class="mathjax-container">\(C\)</span> 控制沿法向量方向的平移。</p>
<p>该形式与超平面形式 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w}\cdot\mathbf{x}+b=0\)</span> 完全一致：只需取 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(x,y)^\top\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\mathbf{w}=(A,B)^\top\)</span>、<span displaypfx="inline-" class="mathjax-container">\(b=C\)</span>。</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">等价形式</td>
<td style="text-align: center;">表达式</td>
<td style="text-align: center;">条件/说明</td>
</tr>
</thead>
<tbody>
<tr>
<td>斜截式（Slope-Intercept）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(y=mx+b\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(B\ne 0\)</span> 时 <span displaypfx="inline-" class="mathjax-container">\(m=-A/B,\ b=-C/B\)</span></td>
</tr>
<tr>
<td>截距（Intercepts）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(x\text{-截距}=-C/A\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(y\text{-截距}=-C/B\)</span></td>
<td>分别要求 <span displaypfx="inline-" class="mathjax-container">\(A\ne 0\)</span>、<span displaypfx="inline-" class="mathjax-container">\(B\ne 0\)</span></td>
</tr>
<tr>
<td>点法式（Point-Normal）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\mathbf{w}\cdot(\mathbf{x}-\mathbf{x}_0)=0\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}_0\)</span> 是直线上一点</td>
</tr>
<tr>
<td>点到直线距离</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\mathrm{dist}=\frac{|Ax_0+By_0+C|}{\sqrt{A^2+B^2}}\)</span></td>
<td>来自把点沿法向量投影到直线</td>
</tr>
</tbody>
</table>
<p>两条直线相交/平行可由法向量判断：若 <span displaypfx="inline-" class="mathjax-container">\((A_1,B_1)\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\((A_2,B_2)\)</span> 共线，则两直线平行（或重合）；否则相交，交点可由 2×2 线性方程组求解。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/linear-equation-geometry.jpg"><img class="alignnone size-full wp-image-40541" src="https://blog.gmem.cc/wp-content/uploads/2026/03/linear-equation-geometry.jpg" alt="linear-equation-geometry" width="100%" /></a></p>
<div class="blog_h3"><span class="graybg">超平面（w·x + b = 0）</span></div>
<p>超平面（Hyperplane）是高维空间中的“线性边界”。在 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{R}^d\)</span> 中，方程</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{w}\cdot \mathbf{x}+b=0\]</span>
<p>定义一个 <span displaypfx="inline-" class="mathjax-container">\((d-1)\)</span> 维的仿射子空间（Affine Subspace）。其中 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w}\)</span> 是法向量（Normal Vector），决定边界的朝向；<span displaypfx="inline-" class="mathjax-container">\(b\)</span> 是偏置（Bias），决定边界沿法向量方向的平移。</p>
<p>工程与论文里常写成 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w}^\top \mathbf{x}+b\)</span>：这里的转置（Transpose）符号 <span displaypfx="inline-" class="mathjax-container">\(^\top\)</span> 只是为了把列向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w}\)</span> 变成行向量，从而与列向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 做矩阵乘法；数值上它等价于点积：</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{w}^\top \mathbf{x}=\sum_{i=1}^{d} w_i x_i\]</span>
<p>例：令 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w}=(2,3)^\top\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(4,5)^\top\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w}^\top \mathbf{x}=2\cdot4+3\cdot5=23\)</span>。</p>
<p>在机器学习里，线性分类器（Linear Classifier）可写成 <span displaypfx="inline-" class="mathjax-container">\(\hat y=\mathrm{sign}(\mathbf{w}^\top\mathbf{x}+b)\)</span>；逻辑回归（Logistic Regression）把它送入 sigmoid： <span displaypfx="inline-" class="mathjax-container">\(p(y=1|\mathbf{x})=\sigma(\mathbf{w}^\top\mathbf{x}+b)\)</span>。</p>
<div class="blog_h3"><span class="graybg">法向量与半空间</span></div>
<p>超平面把空间划分成两个半空间（Half-space）：</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{w}\cdot\mathbf{x}+b\ge 0,\quad \mathbf{w}\cdot\mathbf{x}+b\le 0\]</span>
<p>法向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w}\)</span> 指向“值更大”的一侧：沿 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w}\)</span> 方向移动会增大 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w}\cdot\mathbf{x}+b\)</span>。这也是为什么在线性分类里，得分的正负号自然对应类别划分。</p>
<div class="blog_h3"><span class="graybg">点到超平面的距离</span></div>
<p>点 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}_0\)</span> 到超平面 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w}\cdot\mathbf{x}+b=0\)</span> 的欧氏距离（Euclidean Distance）为：</p>
<span displaypfx="" class="mathjax-container">\[\mathrm{dist}(\mathbf{x}_0,\ \mathbf{w}\cdot\mathbf{x}+b=0)=\frac{|\mathbf{w}\cdot\mathbf{x}_0+b|}{\|\mathbf{w}\|_2}\]</span>
<p>推导直觉：把 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}_0\)</span> 沿法向量方向投影到超平面上；分子是“沿法向量方向的带符号位移”，除以 <span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{w}\|\)</span> 把它变成真实距离。</p>
<div class="blog_h3"><span class="graybg">约束函数、梯度与法向量</span></div>
<p>约束优化中的边界通常由一个定义在整个空间上的标量函数（Scalar Function）<span displaypfx="inline-" class="mathjax-container">\(g(x)\)</span> 给出，并通过等值方程 <span displaypfx="inline-" class="mathjax-container">\(g(x)=0\)</span> 表示边界本身。函数 <span displaypfx="inline-" class="mathjax-container">\(g\)</span> 是求导对象；边界则是满足该方程的点集。梯度（Gradient）算子 <span displaypfx="inline-" class="mathjax-container">\(\nabla\)</span> 作用在约束函数 <span displaypfx="inline-" class="mathjax-container">\(g\)</span> 上，由此把边界的法向几何信息编码为一个向量场。</p>
<p>线性超平面的情形最直接。边界写成</p>
<span displaypfx="" class="mathjax-container">\[g(\mathbf{x})=\mathbf{w}^\top\mathbf{x}+b=0\]</span>
<p>其中 <span displaypfx="inline-" class="mathjax-container">\(g\)</span> 是定义在整个 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{R}^d\)</span> 上的线性函数，而边界只是它的零等值面（Zero Level Set）。由于线性函数的一阶导数处处相同，立刻得到</p>
<span displaypfx="" class="mathjax-container">\[\nabla g(\mathbf{x})=\mathbf{w}\]</span>
<p>因此，线性超平面的法向量是 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w}\)</span>，本质上等价于“定义该超平面的约束函数 <span displaypfx="inline-" class="mathjax-container">\(g\)</span> 的梯度等于 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w}\)</span>”。</p>
<p>这一结论对一般光滑边界同样成立。设 <span displaypfx="inline-" class="mathjax-container">\(x^*\)</span> 是边界 <span displaypfx="inline-" class="mathjax-container">\(g(x)=0\)</span> 上一点，且 <span displaypfx="inline-" class="mathjax-container">\(\nabla g(x^*)\ne 0\)</span>。若 <span displaypfx="inline-" class="mathjax-container">\(t\)</span> 是该点处的切向量（Tangent Vector），则沿着 <span displaypfx="inline-" class="mathjax-container">\(t\)</span> 做无穷小移动仍停留在同一条边界上，因而 <span displaypfx="inline-" class="mathjax-container">\(g\)</span> 的一阶变化为 0：</p>
<span displaypfx="" class="mathjax-container">\[\frac{d}{d\epsilon}g(x^*+\epsilon t)\Big|_{\epsilon=0}=0\]</span>
<p>应用链式法则（Chain Rule）得到</p>
<span displaypfx="" class="mathjax-container">\[\nabla g(x^*)^\top t=0\]</span>
<p>这表示边界上的任意切向量都与 <span displaypfx="inline-" class="mathjax-container">\(\nabla g(x^*)\)</span> 正交。因此 <span displaypfx="inline-" class="mathjax-container">\(\nabla g(x^*)\)</span> 沿法向方向指向边界外侧或内侧，而不沿边界本身滑动；梯度正是边界法向量的解析表达。</p>
<p>KKT 条件中的 <span displaypfx="inline-" class="mathjax-container">\(\nabla g(x^*)\)</span> 正是以这种方式出现的。约束优化不是对“边界这个集合”求导，而是借助约束函数 <span displaypfx="inline-" class="mathjax-container">\(g\)</span> 的梯度，把边界的法向几何结构写入一阶最优性条件。驻点条件</p>
<span displaypfx="" class="mathjax-container">\[\nabla f(x^*)+\lambda^*\nabla g(x^*)=0\]</span>
<p>表达的是：在活跃边界上，目标函数剩余的下降趋势完全落在约束边界的法向空间里，并与乘子加权后的法向量达到平衡。</p>
<div class="blog_h2"><span class="graybg">基础几何（Basic Geometry）</span></div>
<p>解析几何（Analytic Geometry）、向量（Vector）、三角函数（Trigonometric Functions）以及很多 AI 中的空间直觉，都建立在更基础的几何概念上。这里先把最常用的几块地基补齐：距离、角度、弧度、比例与面积。</p>
<div class="blog_h3"><span class="graybg">点、线、角与角度单位</span></div>
<p>平面几何最基本的对象是点（Point）、线段（Segment）、直线（Line）与角（Angle）。角度描述两条射线的张开程度；常见有两种单位：</p>
<span displaypfx="" class="mathjax-container">\[360^\circ=2\pi\ \text{rad},\quad 180^\circ=\pi\ \text{rad},\quad 90^\circ=\frac{\pi}{2}\ \text{rad}\]</span>
<p>度数（Degree）更适合日常表达，弧度（Radian）更适合数学推导，因为它和圆弧长度、三角函数、导数公式天然兼容。后面遇到旋转矩阵（Rotation Matrix）、复数极坐标（Polar Form）、傅里叶分析（Fourier Analysis）时，默认几乎都使用弧度。</p>
<div class="blog_h3"><span class="graybg">勾股定理与欧氏距离</span></div>
<p>勾股定理（Pythagorean Theorem）是平面距离公式的根源。对直角三角形，若两条直角边长为 <span displaypfx="inline-" class="mathjax-container">\(a,b\)</span>，斜边长为 <span displaypfx="inline-" class="mathjax-container">\(c\)</span>，则</p>
<span displaypfx="" class="mathjax-container">\[a^2+b^2=c^2\]</span>
<p>把它应用到坐标平面，就得到两点之间的欧氏距离（Euclidean Distance）：</p>
<span displaypfx="" class="mathjax-container">\[\mathrm{dist}(P_1,P_2)=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}\]</span>
<p>在高维空间里，这个公式直接推广为 <span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{x}-\mathbf{y}\|_2\)</span>。因此从二维几何到机器学习里的向量距离，本质上是一条连续的概念链。KNN、K-means、embedding 检索、对比学习（Contrastive Learning）都在反复使用这套“距离越小越相似”的几何直觉。</p>
<div class="blog_h3"><span class="graybg">弧度、弧长与扇形</span></div>
<p>弧度由圆弧长度直接定义：若半径为 <span displaypfx="inline-" class="mathjax-container">\(r\)</span> 的圆上有一段弧长 <span displaypfx="inline-" class="mathjax-container">\(s\)</span>，对应圆心角为 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span>（弧度），则</p>
<span displaypfx="" class="mathjax-container">\[\theta=\frac{s}{r},\quad s=r\theta\]</span>
<p>对应扇形面积（Sector Area）是：</p>
<span displaypfx="" class="mathjax-container">\[A=\frac{1}{2}r^2\theta\]</span>
<p>这正是弧度“自然”的原因：一旦用弧度记角，弧长与面积公式会变得非常干净。AI 里很多周期性表示都默认使用弧度输入，例如 <span displaypfx="inline-" class="mathjax-container">\(\sin\theta\)</span> / <span displaypfx="inline-" class="mathjax-container">\(\cos\theta\)</span> 的位置编码（Positional Encoding）、旋转位置编码（RoPE）以及频域特征（Fourier Features）。</p>
<div class="blog_h3"><span class="graybg">相似、缩放与比例</span></div>
<p>相似（Similarity）指图形形状相同、大小可以不同；等价地说，对应角相等、对应边成比例。若把一个图形按比例 <span displaypfx="inline-" class="mathjax-container">\(k\)</span> 缩放，则长度变为原来的 <span displaypfx="inline-" class="mathjax-container">\(k\)</span> 倍，面积变为原来的 <span displaypfx="inline-" class="mathjax-container">\(k^2\)</span> 倍。</p>
<p>这个看似初等的事实，在 AI 图像处理中极其常见：图片 resize、本征尺度（Scale）、特征金字塔（Feature Pyramid）、多尺度检测（Multi-scale Detection）都在处理“同一对象在不同尺度下如何保持可识别性”的问题。若缩放时不保持纵横比（Aspect Ratio），就会引入几何畸变，进而影响分类、检测与分割结果。</p>
<div class="blog_h3"><span class="graybg">面积、重叠与 IoU</span></div>
<p>基础几何里，面积（Area）衡量二维区域所占的大小。矩形面积是长乘宽，圆面积是</p>
<span displaypfx="" class="mathjax-container">\[A=\pi r^2\]</span>
<p>在 AI 的目标检测（Object Detection）与实例分割（Instance Segmentation）中，一个高频几何量是交并比（Intersection over Union, IoU）：</p>
<span displaypfx="" class="mathjax-container">\[\mathrm{IoU}=\frac{\text{Intersection Area}}{\text{Union Area}}\]</span>
<p>它衡量预测框/预测区域与真实标注的重叠程度。这里用到的不是高深数学，而是最朴素的面积与重叠概念。</p>
<div class="blog_h3"><span class="graybg">基础几何和AI</span></div>
<p>若把这些内容压缩成一句话，它们在 AI 中分别承担不同角色：</p>
<ul>
<li>距离（Distance）：支撑近邻搜索、聚类、向量检索与损失函数中的相似度刻画。</li>
<li>角度（Angle）：支撑方向、夹角、余弦相似度（Cosine Similarity）与旋转直觉。</li>
<li>弧度（Radian）：支撑三角函数、周期建模、位置编码与频域表示。</li>
<li>比例与缩放（Scale）：支撑图像 resize、数据增强、特征金字塔与多尺度建模。</li>
<li>面积与重叠（Area &amp; Overlap）：支撑 IoU、检测框评估与分割质量度量。</li>
</ul>
<div class="blog_h2"><span class="graybg">解析几何（Analytic Geometry）</span></div>
<p>解析几何（Analytic Geometry）的核心做法是：选定坐标系（Coordinate System），用代数方程描述几何对象。一个几何对象可以被理解为“满足某个方程（或方程组）的所有点”的集合。</p>
<p>高中阶段最常见的两类：</p>
<ul>
<li>一次方程：直线（Line）/平面（Plane）/超平面（Hyperplane）。</li>
<li>二次方程：圆（Circle）与圆锥曲线（Conic Sections）；在三维中推广为二次曲面（Quadric Surfaces）。</li>
</ul>
<div class="blog_h3"><span class="graybg">坐标、距离与圆</span></div>
<p>在直角坐标系（Cartesian Coordinate System）中，点 <span displaypfx="inline-" class="mathjax-container">\(P\)</span> 用坐标 <span displaypfx="inline-" class="mathjax-container">\((x,y)\)</span> 表示。两点 <span displaypfx="inline-" class="mathjax-container">\(P_1(x_1,y_1)\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(P_2(x_2,y_2)\)</span> 的欧氏距离（Euclidean Distance）是：</p>
<span displaypfx="" class="mathjax-container">\[\mathrm{dist}(P_1,P_2)=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}\]</span>
<p>圆（Circle）是到某个固定点距离恒定的点集；这个固定点叫圆心（Center）。若圆心为 <span displaypfx="inline-" class="mathjax-container">\((h,k)\)</span>、半径（Radius）为 <span displaypfx="inline-" class="mathjax-container">\(r\)</span>，则圆的方程是：</p>
<span displaypfx="" class="mathjax-container">\[(x-h)^2+(y-k)^2=r^2\]</span>
<p>例：方程 <span displaypfx="inline-" class="mathjax-container">\(x^2+y^2-4x+6y-12=0\)</span> 通过配方（Completing the Square）可化为 <span displaypfx="inline-" class="mathjax-container">\((x-2)^2+(y+3)^2=25\)</span>，因此它表示圆心 <span displaypfx="inline-" class="mathjax-container">\((2,-3)\)</span>、半径 <span displaypfx="inline-" class="mathjax-container">\(5\)</span> 的圆。</p>
<div class="blog_h3"><span class="graybg">圆锥曲线（Conic Sections）：二次方程的几何形状</span></div>
<p>圆锥曲线（Conic Sections）最初来自“平面截圆锥”的几何构造，但在解析几何里，它们等价于二维的二次方程曲线（Second-degree Plane Curves，方程里变量的最高次数为 2）：</p>
<span displaypfx="" class="mathjax-container">\[Ax^2+Bxy+Cy^2+Dx+Ey+F=0\]</span>
<p>其中 <span displaypfx="inline-" class="mathjax-container">\(Bxy\)</span> 是交叉项（Cross Term）。交叉项的存在通常意味着曲线的主轴（Principal Axes）与坐标轴不对齐；通过旋转坐标轴（Rotation of Axes）可以把交叉项消掉，从而得到更“标准”的形状表达。</p>
<p>而一次项 <span displaypfx="inline-" class="mathjax-container">\(Dx+Ey\)</span> 与常数项 <span displaypfx="inline-" class="mathjax-container">\(F\)</span> 扮演的是另一类角色：它们通常不改变主轴方向，而主要影响图形在平面中的<span style="background-color: #c0c0c0;">位置与尺度</span>。更具体地说，一次项往往意味着曲线的中心/顶点不在原点；在消去交叉项之后，再通过平移坐标（Translation of Axes）与配方（Completing the Square）可以把一次项吸收到平方项里。常数项则相当于改变“等号右边的阈值”，会影响曲线是否有实点、整体大小以及离原点的偏置。简言之：<span style="background-color: #c0c0c0;">交叉项主要对应旋转，一次项主要对应平移，常数项主要对应整体偏移/尺度调整</span>。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/ellipse-term-effects.png"><img class="alignnone size-full wp-image-40767" src="https://blog.gmem.cc/wp-content/uploads/2026/03/ellipse-term-effects.png" alt="ellipse-term-effects" width="100%" /></a></p>
<p>下面给出最常用的四类圆锥曲线的标准方程（Standard Form）与直观定义：</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">名称</td>
<td style="text-align: center;">标准方程</td>
<td style="text-align: center;">几何定义（直观）</td>
<td style="text-align: center;">形状关键词</td>
</tr>
</thead>
<tbody>
<tr>
<td>圆（Circle）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(x^2+y^2=r^2\)</span></td>
<td>到圆心距离恒为 <span displaypfx="inline-" class="mathjax-container">\(r\)</span></td>
<td>闭合；各向同性</td>
</tr>
<tr>
<td>椭圆（Ellipse）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{x^2}{a^2}+\frac{y^2}{b^2}=1\ (a\ge b&gt;0)\)</span></td>
<td>到两个焦点（Focus）距离和为常数</td>
<td>闭合；主轴/次轴</td>
</tr>
<tr>
<td>抛物线（Parabola）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(y^2=4px\ (p&gt;0)\)</span></td>
<td>到焦点（Focus）与准线（Directrix）距离相等</td>
<td>开口；无中心</td>
</tr>
<tr>
<td>双曲线（Hyperbola）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{x^2}{a^2}-\frac{y^2}{b^2}=1\)</span></td>
<td>到两个焦点（Focus）距离差的绝对值为常数</td>
<td>两支；有渐近线（Asymptotes）</td>
</tr>
</tbody>
</table>
<div class="blog_h3"><span class="graybg">椭圆（Ellipse）：两焦点“距离和恒定”</span></div>
<p>椭圆（Ellipse）可以用一句话定义：平面内到两个固定点 <span displaypfx="inline-" class="mathjax-container">\(F_1,F_2\)</span> 的距离之和为常数的点的集合。若该常数为 <span displaypfx="inline-" class="mathjax-container">\(2a\)</span>，则对椭圆上任意点 <span displaypfx="inline-" class="mathjax-container">\(P\)</span> 有：</p>
<span displaypfx="" class="mathjax-container">\[\mathrm{dist}(P,F_1)+\mathrm{dist}(P,F_2)=2a\]</span>
<p>在以原点为中心、长轴沿 x 轴的标准位置下，椭圆方程是：</p>
<span displaypfx="" class="mathjax-container">\[\frac{x^2}{a^2}+\frac{y^2}{b^2}=1,\quad a\ge b&gt;0\]</span>
<p>这里 <span displaypfx="inline-" class="mathjax-container">\(a\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(b\)</span> 分别是半长轴（Semi-major Axis）与半短轴（Semi-minor Axis）。焦距参数 <span displaypfx="inline-" class="mathjax-container">\(c\)</span> 定义为焦点到中心的距离，满足</p>
<span displaypfx="" class="mathjax-container">\[c^2=a^2-b^2\]</span>
<p>因此焦点坐标是 <span displaypfx="inline-" class="mathjax-container">\((\pm c,0)\)</span>。偏心率（Eccentricity）定义为 <span displaypfx="inline-" class="mathjax-container">\(e=c/a\)</span>，它量化“椭圆有多扁”： <span displaypfx="inline-" class="mathjax-container">\(e\in[0,1)\)</span>；当 <span displaypfx="inline-" class="mathjax-container">\(a=b\)</span> 时 <span displaypfx="inline-" class="mathjax-container">\(e=0\)</span>，椭圆退化为圆。</p>
<p>例：若 <span displaypfx="inline-" class="mathjax-container">\(a=5,b=3\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(c=4\)</span>、<span displaypfx="inline-" class="mathjax-container">\(e=0.8\)</span>，椭圆为 <span displaypfx="inline-" class="mathjax-container">\(\frac{x^2}{25}+\frac{y^2}{9}=1\)</span>，焦点为 <span displaypfx="inline-" class="mathjax-container">\((\pm 4,0)\)</span>。</p>
<div class="blog_h3"><span class="graybg">三维推广：二次曲面（Quadric Surfaces）</span></div>
<p>在三维中，圆锥曲线推广为二次曲面（Quadric Surfaces）：满足三元二次方程的点集。最一般的形式是：</p>
<span displaypfx="" class="mathjax-container">\[Ax^2+By^2+Cz^2+Dxy+Exz+Fyz+Gx+Hy+Iz+J=0\]</span>
<p>其中 <span displaypfx="inline-" class="mathjax-container">\(Dxy,Exz,Fyz\)</span> 是交叉项（Cross Term），对应“坐标轴没有对齐到曲面的主轴方向”。通过平移（Translation）与旋转（Rotation）可以把它化为标准型（Standard Form）：平移等价于把原点挪到合适的位置（通常是“中心”附近），旋转等价于把坐标轴转到主轴方向，从而一眼看出是“球/椭球/抛物面/双曲面”等哪一类。</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">名称</td>
<td style="text-align: center;">典型方程（标准型）</td>
<td style="text-align: center;">直观描述</td>
</tr>
</thead>
<tbody>
<tr>
<td>球（Sphere）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(x^2+y^2+z^2=r^2\)</span></td>
<td>到中心距离恒定的点集（3D 的圆）</td>
</tr>
<tr>
<td>椭球（Ellipsoid）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{x^2}{a^2}+\frac{y^2}{b^2}+\frac{z^2}{c^2}=1\)</span></td>
<td>三个方向缩放不同的“球”；仍然闭合</td>
</tr>
<tr>
<td>椭圆抛物面（Elliptic Paraboloid）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(z=\frac{x^2}{a^2}+\frac{y^2}{b^2}\)</span></td>
<td>“碗状”；水平截面是椭圆</td>
</tr>
<tr>
<td>双曲抛物面（Hyperbolic Paraboloid）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(z=\frac{x^2}{a^2}-\frac{y^2}{b^2}\)</span></td>
<td>“马鞍形”；沿一个方向上凸、另一个方向下凹</td>
</tr>
<tr>
<td>单叶双曲面（Hyperboloid of One Sheet）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{x^2}{a^2}+\frac{y^2}{b^2}-\frac{z^2}{c^2}=1\)</span></td>
<td>连通的一张曲面；截面随方向变化</td>
</tr>
<tr>
<td>双叶双曲面（Hyperboloid of Two Sheets）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(-\frac{x^2}{a^2}-\frac{y^2}{b^2}+\frac{z^2}{c^2}=1\)</span></td>
<td>上下分离的两张曲面</td>
</tr>
</tbody>
</table>
<p>二次曲面与优化中的“二次型/曲率”是同一套数学语言：把坐标轴旋到主轴方向后，表达式会变成各轴平方项的加权和/差，从而直接暴露“碗状（局部最小）”与“鞍形（Saddle）”的结构。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/plot-quadric.png"><img class="alignnone size-full wp-image-40777" src="https://blog.gmem.cc/wp-content/uploads/2026/03/plot-quadric.png" alt="plot-quadric" width="100%" /></a></p>
<div class="blog_h2"><span class="graybg">指数函数</span></div>
<p>指数函数（Exponential Function）最常用的是自然指数 <span displaypfx="inline-" class="mathjax-container">\(e^x\)</span>。指数运算把“加法结构”映射为“乘法结构”，对数（Logarithm）作为反函数则把乘法结构拉平成加法结构。</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">性质/公式</td>
<td style="text-align: center;">表达式</td>
<td style="text-align: center;">备注</td>
</tr>
</thead>
<tbody>
<tr>
<td>指数基本性质（Exponential Laws）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(e^{a+b}=e^a e^b\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(e^{a-b}=\frac{e^a}{e^b}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(a,b\in\mathbb{R}\)</span></td>
</tr>
<tr>
<td>指数运算律（Exponent Rules）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(a^0=1\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(a^m a^n=a^{m+n}\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(\frac{a^m}{a^n}=a^{m-n}\)</span><br /><span displaypfx="inline-" class="mathjax-container">\((a^m)^n=a^{mn}\)</span><br /><span displaypfx="inline-" class="mathjax-container">\((ab)^n=a^n b^n\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(a&gt;0,a\ne 1\)</span>；对整数指数最直接</td>
</tr>
<tr>
<td>自然常数（Euler's Number）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(e=\lim_{n\to\infty}\left(1+\frac{1}{n}\right)^n\)</span></td>
<td>极限刻画连续复利（Continuous Compounding）</td>
</tr>
<tr>
<td>微积分性质</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{d}{dx}e^x=e^x\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(\frac{d}{dx}\ln x=\frac{1}{x}\)</span></td>
<td>以 <span displaypfx="inline-" class="mathjax-container">\(e\)</span> 为底时形式最简</td>
</tr>
<tr>
<td>连续增长微分方程</td>
<td><span displaypfx="inline-" class="mathjax-container">\(y'(t)=y(t),\ y(0)=1\Rightarrow y(t)=e^t\)</span></td>
<td>“增长率与当前值成正比”</td>
</tr>
<tr>
<td>与对数互逆</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\ln(e^x)=x\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(e^{\ln x}=x\)</span></td>
<td>第二式要求 <span displaypfx="inline-" class="mathjax-container">\(x&gt;0\)</span></td>
</tr>
</tbody>
</table>
<p>常用取值：</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">输入</td>
<td style="text-align: center;"><span displaypfx="inline-" class="mathjax-container">\(e^x\)</span></td>
<td style="text-align: center;">备注</td>
</tr>
</thead>
<tbody>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(x=0\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(e^0=1\)</span></td>
<td>基准点</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(x=1\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(e^1=e\approx 2.71828\)</span></td>
<td>自然对数底</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(x=-1\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(e^{-1}=\frac{1}{e}\approx 0.36788\)</span></td>
<td>常见衰减尺度</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(x=\ln 2\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(e^{\ln 2}=2\)</span></td>
<td>对数域与线性域互换时常用</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(x=\ln 10\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(e^{\ln 10}=10\)</span></td>
<td>与 <span displaypfx="inline-" class="mathjax-container">\(\log_{10}\)</span> 换底相关</td>
</tr>
</tbody>
</table>
<div class="blog_h2"><span class="graybg">对数函数</span></div>
<p>对数函数（Logarithm）<span displaypfx="inline-" class="mathjax-container">\(\log x\)</span> 在 <span displaypfx="inline-" class="mathjax-container">\(x&gt;0\)</span> 上严格单调递增（Strictly Increasing），因此 <span displaypfx="inline-" class="mathjax-container">\(-\log x\)</span> 在 <span displaypfx="inline-" class="mathjax-container">\(x&gt;0\)</span> 上严格单调递减（Strictly Decreasing）。</p>
<p>复合后的单调性由内层决定：若 <span displaypfx="inline-" class="mathjax-container">\(f(x)\)</span> 在某区间上单调递增且 <span displaypfx="inline-" class="mathjax-container">\(f(x)&gt;0\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(-\log(f(x))\)</span> 在该区间上单调递减；若 <span displaypfx="inline-" class="mathjax-container">\(f(x)\)</span> 不单调，则外层单调并不能推出整体单调。</p>
<p>在损失函数里常见的形式是 <span displaypfx="inline-" class="mathjax-container">\(-\log\sigma(z)\)</span>（<span displaypfx="inline-" class="mathjax-container">\(\sigma\)</span> 为 sigmoid）。因为 sigmoid 单调递增，所以该损失对 <span displaypfx="inline-" class="mathjax-container">\(z\)</span> 单调递减：增大 <span displaypfx="inline-" class="mathjax-container">\(z\)</span> 会降低损失。需要注意的是，这只说明“对中间量 z 的单调性”；对模型参数 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 的单调性一般不成立，因为 <span displaypfx="inline-" class="mathjax-container">\(z=z(\theta)\)</span> 是高维非线性函数。</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">性质/公式</td>
<td style="text-align: center;">表达式</td>
<td style="text-align: center;">备注</td>
</tr>
</thead>
<tbody>
<tr>
<td>对数运算律（Logarithm Rules）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\log(ab)=\log a+\log b\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(\log\!\left(\frac{a}{b}\right)=\log a-\log b\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(\log(a^k)=k\log a\)</span></td>
<td>同一底数；典型要求 <span displaypfx="inline-" class="mathjax-container">\(a&gt;0,b&gt;0\)</span></td>
</tr>
<tr>
<td>换底公式（Change of Base）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\log_a x=\frac{\ln x}{\ln a}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(a&gt;0,a\ne 1,x&gt;0\)</span></td>
</tr>
<tr>
<td>与指数互逆</td>
<td><span displaypfx="inline-" class="mathjax-container">\(a^{\log_a x}=x\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(\log_a(a^x)=x\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(x&gt;0\)</span></td>
</tr>
</tbody>
</table>
<p>常用取值：</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">表达式</td>
<td style="text-align: center;">值</td>
<td style="text-align: center;">备注</td>
</tr>
</thead>
<tbody>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\ln 1\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(0\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(x=1\)</span> 为基准点</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\ln e\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(1\)</span></td>
<td>自然对数的定义性质</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\ln 2\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\approx 0.6931\)</span></td>
<td>二进制相关常数</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\ln 10\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\approx 2.3026\)</span></td>
<td>十进制相关常数</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\log_{10}2\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(=\frac{\ln 2}{\ln 10}\approx 0.3010\)</span></td>
<td>工程里常用于数量级估算</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\log_2 10\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(=\frac{\ln 10}{\ln 2}\approx 3.3219\)</span></td>
<td>bit 与十进制数量级换算</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\log_2 e\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(=\frac{1}{\ln 2}\approx 1.4427\)</span></td>
<td>nats 与 bits 换算常数</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\log_{10}e\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(=\frac{1}{\ln 10}\approx 0.4343\)</span></td>
<td>自然对数与常用对数换算</td>
</tr>
</tbody>
</table>
<p>在语言模型 softmax 中，logit 经过指数再归一化：<span displaypfx="inline-" class="mathjax-container">\(\exp(\text{logit})\)</span> 把分数映射为正数权重；取 log 则把乘法结构拉平成加法结构，便于用和式写出似然与损失。</p>
<div class="blog_h2"><span class="graybg">幂函数</span></div>
<p>幂函数（Power Function）里常见的两个扩展是负指数（Negative Exponent）与分数指数（Rational Exponent）。</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">类型</td>
<td style="text-align: center;">公式</td>
<td style="text-align: center;">条件/备注</td>
</tr>
</thead>
<tbody>
<tr>
<td>负指数（Negative Exponent）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(a^{-n}=\frac{1}{a^n}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(a\ne 0\)</span>；<span displaypfx="inline-" class="mathjax-container">\(n\)</span> 为正整数</td>
</tr>
<tr>
<td>分数指数（Rational Exponent）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(a^{p/q}=\sqrt[q]{a^p}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(q&gt;0,\gcd(p,q)=1\)</span>；实数域通常要求 <span displaypfx="inline-" class="mathjax-container">\(a&gt;0\)</span></td>
</tr>
<tr>
<td>例</td>
<td><span displaypfx="inline-" class="mathjax-container">\(2^{-3}=\frac{1}{8}\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(9^{1/2}=3\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(8^{2/3}=4\)</span></td>
<td>偶次根要求被开方数非负</td>
</tr>
</tbody>
</table>
<p>常用取值：</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">表达式</td>
<td style="text-align: center;">值</td>
<td style="text-align: center;">备注</td>
</tr>
</thead>
<tbody>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(2^{-3}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(=\frac{1}{8}=0.125\)</span></td>
<td>负指数转倒数</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(10^{-3}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(=0.001\)</span></td>
<td>毫（<span displaypfx="inline-" class="mathjax-container">\(10^{-3}\)</span>）尺度</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(2^{1/2}=\sqrt{2}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\approx 1.4142\)</span></td>
<td>最常见的无理数根</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(2^{-1/2}=\frac{1}{\sqrt{2}}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\approx 0.7071\)</span></td>
<td>正交归一化、幅度缩放常用</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(10^{1/2}=\sqrt{10}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\approx 3.1623\)</span></td>
<td>对数刻度下的“半个数量级”</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(10^{-1/2}=\frac{1}{\sqrt{10}}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\approx 0.3162\)</span></td>
<td>与上式互为倒数</td>
</tr>
</tbody>
</table>
<div class="blog_h2"><span class="graybg">三角函数</span></div>
<div class="blog_h3"><span class="graybg">基本三角恒等式</span></div>
<p>三角函数（Trigonometric Functions）可以用单位圆（Unit Circle）定义：在圆上角度为 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 的点坐标是 <span displaypfx="inline-" class="mathjax-container">\((\cos\theta,\sin\theta)\)</span>。由此得到最基本恒等式：</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">类别</td>
<td style="text-align: center; width: 50%;">公式</td>
<td style="text-align: center;">备注</td>
</tr>
</thead>
<tbody>
<tr>
<td>基本恒等式</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\sin^2\theta+\cos^2\theta=1\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(\tan\theta=\frac{\sin\theta}{\cos\theta}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\cos\theta\ne 0\)</span> 时定义 <span displaypfx="inline-" class="mathjax-container">\(\tan\theta\)</span></td>
</tr>
<tr>
<td>与 <span displaypfx="inline-" class="mathjax-container">\(\tan,\cot\)</span> 相关</td>
<td><span displaypfx="inline-" class="mathjax-container">\(1+\tan^2\theta=\sec^2\theta\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(1+\cot^2\theta=\csc^2\theta\)</span></td>
<td>定义域同 <span displaypfx="inline-" class="mathjax-container">\(\tan,\cot\)</span></td>
</tr>
<tr>
<td>和差公式（Angle Addition）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\sin(\alpha\pm\beta)=\sin\alpha\cos\beta\pm\cos\alpha\sin\beta\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(\cos(\alpha\pm\beta)=\cos\alpha\cos\beta\mp\sin\alpha\sin\beta\)</span></td>
<td>傅里叶分析、RoPE 等直觉常用</td>
</tr>
<tr>
<td>二倍角（Double-Angle）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\sin 2\theta=2\sin\theta\cos\theta\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(\cos 2\theta=\cos^2\theta-\sin^2\theta=1-2\sin^2\theta=2\cos^2\theta-1\)</span></td>
<td>同一恒等式的不同等价写法</td>
</tr>
<tr>
<td>周期性（Periodicity）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\sin(\theta+2\pi)=\sin\theta\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(\cos(\theta+2\pi)=\cos\theta\)</span></td>
<td>一个周期（Period）为 <span displaypfx="inline-" class="mathjax-container">\(2\pi\)</span></td>
</tr>
<tr>
<td>常用极限（<span displaypfx="inline-" class="mathjax-container">\(x\to 0\)</span>）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\lim_{x\to 0}\frac{\sin x}{x}=1\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(\lim_{x\to 0}\frac{\tan x}{x}=1\)</span><br /><span displaypfx="inline-" class="mathjax-container">\(\lim_{x\to 0}\frac{1-\cos x}{x^2}=\frac{1}{2}\)</span></td>
<td>推导导数与近似时高频出现</td>
</tr>
</tbody>
</table>
<div class="blog_h3"><span class="graybg">常用特殊角（Special Angles）</span></div>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;"><span displaypfx="inline-" class="mathjax-container">\(\theta\)</span>（弧度）</td>
<td style="text-align: center;">角度制</td>
<td style="text-align: center;"><span displaypfx="inline-" class="mathjax-container">\(\sin\theta\)</span></td>
<td style="text-align: center;"><span displaypfx="inline-" class="mathjax-container">\(\cos\theta\)</span></td>
<td style="text-align: center;"><span displaypfx="inline-" class="mathjax-container">\(\tan\theta\)</span></td>
</tr>
</thead>
<tbody>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(0\)</span></td>
<td>0°</td>
<td><span displaypfx="inline-" class="mathjax-container">\(0\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(1\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(0\)</span></td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\pi/6\)</span></td>
<td>30°</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{1}{2}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{\sqrt{3}}{2}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{1}{\sqrt{3}}\)</span></td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\pi/4\)</span></td>
<td>45°</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{\sqrt{2}}{2}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{\sqrt{2}}{2}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(1\)</span></td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\pi/3\)</span></td>
<td>60°</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{\sqrt{3}}{2}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{1}{2}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\sqrt{3}\)</span></td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\pi/2\)</span></td>
<td>90°</td>
<td><span displaypfx="inline-" class="mathjax-container">\(1\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(0\)</span></td>
<td>未定义（undefined）</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\pi\)</span></td>
<td>180°</td>
<td><span displaypfx="inline-" class="mathjax-container">\(0\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(-1\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(0\)</span></td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(3\pi/2\)</span></td>
<td>270°</td>
<td><span displaypfx="inline-" class="mathjax-container">\(-1\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(0\)</span></td>
<td>未定义（undefined）</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(2\pi\)</span></td>
<td>360°</td>
<td><span displaypfx="inline-" class="mathjax-container">\(0\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(1\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(0\)</span></td>
</tr>
</tbody>
</table>
<div class="blog_h3"><span class="graybg">欧拉公式</span></div>
<p>欧拉公式（Euler's Formula）把指数与三角函数在复数域（Complex Domain）里统一起来：</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">结论</td>
<td style="text-align: center;">公式</td>
<td style="text-align: center;">备注</td>
</tr>
</thead>
<tbody>
<tr>
<td>欧拉公式（Euler's Formula）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(e^{i\theta}=\cos\theta+i\sin\theta\)</span></td>
<td>把“旋转”写成复指数</td>
</tr>
<tr>
<td>辐角相加对应指数相乘</td>
<td><span displaypfx="inline-" class="mathjax-container">\(e^{i\theta_1}e^{i\theta_2}=e^{i(\theta_1+\theta_2)}\)</span></td>
<td>复数乘法：模相乘、辐角相加</td>
</tr>
<tr>
<td>欧拉恒等式（Euler's Identity）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(e^{i\pi}+1=0\)</span></td>
<td>连接 <span displaypfx="inline-" class="mathjax-container">\(e,i,\pi,1,0\)</span></td>
</tr>
</tbody>
</table>
<div class="blog_h2"><span class="graybg">基础函数图像</span></div>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/image-of-common-fns.jpg"><img class="alignnone size-full wp-image-40557" src="https://blog.gmem.cc/wp-content/uploads/2026/03/image-of-common-fns.jpg" alt="image-of-common-fns" width="100%" /></a></p>
<div class="blog_h2"><span class="graybg">复数</span></div>
<p>复数（Complex Number）是对实数系（Real Number System）的扩展，写作 <span displaypfx="inline-" class="mathjax-container">\(a+bi\)</span>，其中 <span displaypfx="inline-" class="mathjax-container">\(a,b\in\mathbb{R}\)</span>，虚数单位（Imaginary Unit）满足 <span displaypfx="inline-" class="mathjax-container">\(i^2=-1\)</span>。几何上，复数可以表示为复平面（Complex Plane）上的点 <span displaypfx="inline-" class="mathjax-container">\((a,b)\)</span>；但更重要的是，它在二维平面上提供了一套封闭、可逆且与乘法兼容的代数结构。</p>
<p>也正因为如此，复数不能简单等同于 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{R}^2\)</span> 里的二维向量。表面上看，二维向量 <span displaypfx="inline-" class="mathjax-container">\((a,b)\)</span> 与复数 <span displaypfx="inline-" class="mathjax-container">\(a+bi\)</span> 确实对应同一个平面点；但它们的<span style="background-color: #c0c0c0;">代数结构</span>完全不同，关键差别在于“乘法”是否自然、闭合且可逆。</p>
<p>对二维向量而言，加法非常自然，但乘法并不形成一个像实数那样稳定的数系：点乘（Inner Product）会把两个向量变成标量，叉乘（Cross Product）又会把结果带到垂直方向；因此二维向量空间本身并没有一个同时兼顾<span style="background-color: #c0c0c0;">封闭性（Closure）</span>与<span style="background-color: #c0c0c0;">可除性</span>的内建乘法。复数则不同：两个复数相乘后仍是复数，非零复数还总能做除法。这使得复平面不只是“几何上的二维平面”，而是一个可自由做加减乘除的完整数系。</p>
<p>这带来两个二维向量本身不具备的优势。第一，复数把二维旋转直接写进了乘法：若 <span displaypfx="inline-" class="mathjax-container">\(z=re^{i\theta}\)</span>，则乘以另一个复数时会自动实现“模相乘、角相加”。换句话说，<span style="background-color: #c0c0c0;">复数乘法天然就是缩放 + 旋转</span>；而若只用二维向量，通常还需要额外引入旋转矩阵。第二，复数让多项式方程的可解性闭合：例如 <span displaypfx="inline-" class="mathjax-container">\(x^2+1=0\)</span> 在实数域无解，但在复数域有解 <span displaypfx="inline-" class="mathjax-container">\(\pm i\)</span>。更深一层地，代数基本定理（Fundamental Theorem of Algebra）说明任意非常数多项式在复数域里都有根，因此复数成为代数方程的自然终点。</p>
<p>因此，二维向量更像是在描述“箭头、位移、速度、受力”的线性对象；复数则是在同一个平面上额外安装了一套兼容乘法、旋转与方程求解的代数机制。对于信号处理（Signal Processing）、交流电分析、傅里叶变换（Fourier Transform）、量子力学以及很多 AI 中的频域方法，复数都不是“二维向量的重复发明”，而是一个更强的二维代数系统。</p>
<div class="blog_h3"><span class="graybg">复数的表示：直角坐标（Rectangular Form）</span></div>
<p>复数（Complex Number）写作 <span displaypfx="inline-" class="mathjax-container">\(z=a+bi\)</span>，其中 <span displaypfx="inline-" class="mathjax-container">\(a,b\in\mathbb{R}\)</span>，虚数单位（Imaginary Unit）满足 <span displaypfx="inline-" class="mathjax-container">\(i^2=-1\)</span>。把 <span displaypfx="inline-" class="mathjax-container">\(z\)</span> 视为二维平面上的点 <span displaypfx="inline-" class="mathjax-container">\((a,b)\)</span>，就得到直角坐标（Rectangular Form）。</p>
<div class="blog_h3"><span class="graybg">复数的表示：极坐标（Polar Form）</span></div>
<p>同一个点也可用极坐标（Polar Form）表示：令 <span displaypfx="inline-" class="mathjax-container">\(r=|z|\)</span> 为模（Modulus），<span displaypfx="inline-" class="mathjax-container">\(\theta=\arg(z)\)</span> 为辐角（Argument），则</p>
<span displaypfx="" class="mathjax-container">\[z=r(\cos\theta+i\sin\theta)=re^{i\theta}\]</span>
<p>两种坐标之间的转换：</p>
<span displaypfx="" class="mathjax-container">\[r=\sqrt{a^2+b^2},\quad a=r\cos\theta,\quad b=r\sin\theta\]</span>
<p><span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 通常用 <span displaypfx="inline-" class="mathjax-container">\(\mathrm{atan2}(b,a)\)</span> 计算，并且 <span displaypfx="inline-" class="mathjax-container">\(\arg(z)\)</span> 不是唯一的：加上任意 <span displaypfx="inline-" class="mathjax-container">\(2\pi k\)</span>（<span displaypfx="inline-" class="mathjax-container">\(k\in\mathbb{Z}\)</span>）表示同一个方向。</p>
<p>例：<span displaypfx="inline-" class="mathjax-container">\(z=1+i\)</span> 的模是 <span displaypfx="inline-" class="mathjax-container">\(\sqrt{2}\)</span>，辐角是 <span displaypfx="inline-" class="mathjax-container">\(\pi/4\)</span>，因此 <span displaypfx="inline-" class="mathjax-container">\(z=\sqrt{2}\,e^{i\pi/4}\)</span>。</p>
<p>棣莫弗公式（De Moivre's Formula）给出幂运算的快捷形式：</p>
<span displaypfx="" class="mathjax-container">\[(\cos\theta+i\sin\theta)^n=\cos(n\theta)+i\sin(n\theta)\]</span>
<div class="blog_h3"><span class="graybg">共轭与模</span></div>
<p>复数 <span displaypfx="inline-" class="mathjax-container">\(z = a + bi\)</span> 的模（Modulus）定义为 <span displaypfx="inline-" class="mathjax-container">\(|z|=\sqrt{a^2+b^2}\)</span>，表示复平面（Complex Plane）中点 <span displaypfx="inline-" class="mathjax-container">\((a,b)\)</span> 到原点的欧氏距离（Euclidean Distance）。</p>
<p>共轭（Conjugate）记作 <span displaypfx="inline-" class="mathjax-container">\(\bar z = a-bi\)</span>。几何上，它把点 <span displaypfx="inline-" class="mathjax-container">\((a,b)\)</span> 关于实轴（Real Axis）镜像到 <span displaypfx="inline-" class="mathjax-container">\((a,-b)\)</span>；数值上，它把“相位（Phase）”取反而保持“幅值（Magnitude）”不变。</p>
<p>共轭与模的核心关系是 <span displaypfx="inline-" class="mathjax-container">\(z\bar z = |z|^2\)</span>，展开即可验证：</p>
<span displaypfx="" class="mathjax-container">\[(a+bi)(a-bi)=a^2+b^2=|z|^2\]</span>
<p>这个恒等式的一个直接用途是复数除法：为了避免分母含有虚部，把分母乘以共轭进行“有理化（Rationalization）”。</p>
<span displaypfx="" class="mathjax-container">\[\frac{a+bi}{c+di}=\frac{(a+bi)(c-di)}{(c+di)(c-di)}=\frac{(a+bi)(c-di)}{c^2+d^2}\]</span>
<p>例： <span displaypfx="inline-" class="mathjax-container">\(\frac{1+2i}{3-4i}=\frac{(1+2i)(3+4i)}{3^2+4^2}=\frac{-5+10i}{25}=-\frac{1}{5}+\frac{2}{5}i\)</span>。这里分母变成实数，是因为 <span displaypfx="inline-" class="mathjax-container">\((3-4i)(3+4i)=3^2+4^2\)</span>。</p>
<div class="blog_h3"><span class="graybg">复数乘法与旋转</span></div>
<p>把复数写成极坐标（Polar Form）：<span displaypfx="inline-" class="mathjax-container">\(z=r(\cos\theta+i\sin\theta)=re^{i\theta}\)</span>。此时复数乘法的几何意义非常直接：</p>
<span displaypfx="" class="mathjax-container">\[z_1 z_2 = (r_1 e^{i\theta_1})(r_2 e^{i\theta_2}) = (r_1 r_2)e^{i(\theta_1+\theta_2)}\]</span>
<p>也就是说：<span style="background-color: #c0c0c0;">模相乘、辐角相加</span>。乘法同时完成缩放（Scaling）与旋转（Rotation）。</p>
<p>例：乘以 <span displaypfx="inline-" class="mathjax-container">\(i=e^{i\pi/2}\)</span> 会把任意复数逆时针旋转 90° 且不改变模；乘以 <span displaypfx="inline-" class="mathjax-container">\(-1=e^{i\pi}\)</span> 会旋转 180°。例如 <span displaypfx="inline-" class="mathjax-container">\((1+2i)\cdot i=-2+i\)</span>，几何上就是把点 <span displaypfx="inline-" class="mathjax-container">\((1,2)\)</span> 旋到 <span displaypfx="inline-" class="mathjax-container">\((-2,1)\)</span>。</p>
<div class="blog_h2"><span class="graybg">数列与级数</span></div>
<p>求和符号（Summation Symbol）<span displaypfx="inline-" class="mathjax-container">\(\sum\)</span> 与乘积符号（Product Symbol）<span displaypfx="inline-" class="mathjax-container">\(\prod\)</span> 是数列与级数推导里最常见的两个“聚合”记号：</p>
<span displaypfx="" class="mathjax-container">\[\sum_{i=1}^{n} a_i=a_1+a_2+\cdots+a_n,\quad \prod_{i=1}^{n} a_i=a_1\cdot a_2\cdots a_n\]</span>
<p>英文里通常把 <span displaypfx="inline-" class="mathjax-container">\(\sum\)</span> 读作 “sigma” 或 “summation”，把 <span displaypfx="inline-" class="mathjax-container">\(\prod\)</span> 读作 “capital pi” 或 “product”。</p>
<div class="blog_h3"><span class="graybg">等差数列 / 等比数列</span></div>
<p>数列（Sequence）是一列按整数下标排列的数 <span displaypfx="inline-" class="mathjax-container">\(\{a_n\}_{n\ge 1}\)</span>。最常见的两类是等差数列（Arithmetic Sequence）与等比数列（Geometric Sequence）。它们都可用“递推定义 + 通项公式 + 前 n 项和”三件套描述。</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">类型</td>
<td style="text-align: center;">递推定义</td>
<td style="text-align: center;">通项（<span displaypfx="inline-" class="mathjax-container">\(a_n\)</span>）</td>
<td style="width: 35%; text-align: center;">前 n 项和（<span displaypfx="inline-" class="mathjax-container">\(S_n=\sum_{k=1}^{n} a_k\)</span>）</td>
</tr>
</thead>
<tbody>
<tr>
<td>等差数列（Arithmetic）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(a_{n}=a_{n-1}+d\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(a_n=a_1+(n-1)d\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(S_n=\frac{n}{2}(a_1+a_n)=\frac{n}{2}\left(2a_1+(n-1)d\right)\)</span></td>
</tr>
<tr>
<td>等比数列（Geometric）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(a_{n}=ra_{n-1}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(a_n=a_1 r^{n-1}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(S_n=\begin{cases}\frac{a_1(1-r^n)}{1-r},&amp; r\ne 1 \\ na_1,&amp; r=1\end{cases}\)</span></td>
</tr>
</tbody>
</table>
<p>例：若 <span displaypfx="inline-" class="mathjax-container">\(a_1=1,d=2\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(a_n=2n-1\)</span> 且 <span displaypfx="inline-" class="mathjax-container">\(S_n=n^2\)</span>。若 <span displaypfx="inline-" class="mathjax-container">\(a_1=1,r=\frac{1}{2}\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(S_n=2\left(1-2^{-n}\right)\)</span>，并随 <span displaypfx="inline-" class="mathjax-container">\(n\)</span> 增大趋近于 2。</p>
<div class="blog_h3"><span class="graybg">无穷级数与收敛</span></div>
<p>无穷级数（Infinite Series）<span displaypfx="inline-" class="mathjax-container">\(\sum_{n=1}^{\infty} a_n\)</span> 的核心对象是部分和（Partial Sum）序列 <span displaypfx="inline-" class="mathjax-container">\(S_N=\sum_{n=1}^{N} a_n\)</span>。若极限 <span displaypfx="inline-" class="mathjax-container">\(\lim_{N\to\infty} S_N\)</span> 存在且为有限值，则级数收敛（Convergence）；否则发散（Divergence）。</p>
<p>必要条件：若 <span displaypfx="inline-" class="mathjax-container">\(\sum_{n=1}^{\infty} a_n\)</span> 收敛，则必有 <span displaypfx="inline-" class="mathjax-container">\(\lim_{n\to\infty} a_n=0\)</span>。反之不成立（例如调和级数 <span displaypfx="inline-" class="mathjax-container">\(\sum 1/n\)</span> 发散）。</p>
<p>绝对收敛（Absolute Convergence）指 <span displaypfx="inline-" class="mathjax-container">\(\sum |a_n|\)</span> 收敛；绝对收敛必推出原级数收敛。仅 <span displaypfx="inline-" class="mathjax-container">\(\sum a_n\)</span> 收敛但 <span displaypfx="inline-" class="mathjax-container">\(\sum |a_n|\)</span> 发散则为条件收敛（Conditional Convergence），此时项的重排可能改变和（甚至导致发散）。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/infinite-series.jpg"><img class="alignnone size-full wp-image-40597" src="https://blog.gmem.cc/wp-content/uploads/2026/03/infinite-series.jpg" alt="infinite-series" width="100%" /></a></p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">判别法</td>
<td style="text-align: center;">条件/计算量</td>
<td style="text-align: center;">结论</td>
</tr>
</thead>
<tbody>
<tr>
<td>几何级数（Geometric Series）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\sum_{n=0}^{\infty} ar^n\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(|r|&lt;1\)</span> 时收敛，且和为 <span displaypfx="inline-" class="mathjax-container">\(\frac{a}{1-r}\)</span>；<span displaypfx="inline-" class="mathjax-container">\(|r|\ge 1\)</span> 时发散</td>
</tr>
<tr>
<td>p-级数（p-series）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\sum_{n=1}^{\infty}\frac{1}{n^p}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(p&gt;1\)</span> 收敛；<span displaypfx="inline-" class="mathjax-container">\(p\le 1\)</span> 发散（调和级数为 <span displaypfx="inline-" class="mathjax-container">\(p=1\)</span>）</td>
</tr>
<tr>
<td>比较判别（Comparison）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(0\le a_n\le b_n\)</span>（充分大时）</td>
<td>若 <span displaypfx="inline-" class="mathjax-container">\(\sum b_n\)</span> 收敛，则 <span displaypfx="inline-" class="mathjax-container">\(\sum a_n\)</span> 收敛；若 <span displaypfx="inline-" class="mathjax-container">\(\sum a_n\)</span> 发散，则 <span displaypfx="inline-" class="mathjax-container">\(\sum b_n\)</span> 发散</td>
</tr>
<tr>
<td>比值判别（Ratio Test）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(L=\limsup_{n\to\infty}\left|\frac{a_{n+1}}{a_n}\right|\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(L&lt;1\)</span> 绝对收敛；<span displaypfx="inline-" class="mathjax-container">\(L&gt;1\)</span>（或无穷大）发散；<span displaypfx="inline-" class="mathjax-container">\(L=1\)</span> 不定</td>
</tr>
<tr>
<td>根值判别（Root Test）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\rho=\limsup_{n\to\infty}\sqrt[n]{|a_n|}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\rho&lt;1\)</span> 绝对收敛；<span displaypfx="inline-" class="mathjax-container">\(\rho&gt;1\)</span> 发散；<span displaypfx="inline-" class="mathjax-container">\(\rho=1\)</span> 不定</td>
</tr>
<tr>
<td>交错级数（Alternating Series）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\sum (-1)^{n-1}b_n\)</span>，其中 <span displaypfx="inline-" class="mathjax-container">\(b_n\downarrow 0\)</span></td>
<td>收敛；截断误差满足 <span displaypfx="inline-" class="mathjax-container">\(|S-S_N|\le b_{N+1}\)</span></td>
</tr>
</tbody>
</table>
<div class="blog_h4"><span class="graybg">调和级数与调和数（Harmonic Series / Harmonic Numbers）</span></div>
<p>调和级数（Harmonic Series）是 <span displaypfx="inline-" class="mathjax-container">\(\sum_{n=1}^{\infty}\frac{1}{n}\)</span>。它是最经典的“项趋于 0 但级数仍发散”的例子：虽然 <span displaypfx="inline-" class="mathjax-container">\(\lim_{n\to\infty}\frac{1}{n}=0\)</span>，但部分和会无界增长。</p>
<p>其部分和称为调和数（Harmonic Number）：</p>
<span displaypfx="" class="mathjax-container">\[H_n=\sum_{k=1}^{n}\frac{1}{k}\]</span>
<p>调和数的渐近行为与对数紧密相关：<span displaypfx="inline-" class="mathjax-container">\(H_n=\log n+\gamma+o(1)\)</span>，其中 <span displaypfx="inline-" class="mathjax-container">\(\gamma\)</span> 是欧拉-马歇罗尼常数（Euler–Mascheroni constant）。因此很多“累积量随步数缓慢增长”的分析最终都会出现 <span displaypfx="inline-" class="mathjax-container">\(\log n\)</span>。</p>
<p>在 AI/优化里，调和级数最常见的用途是解释与验证学习率（Learning Rate）衰减的收敛条件。经典随机逼近（Stochastic Approximation）的一个常用充分条件是：</p>
<span displaypfx="" class="mathjax-container">\[\sum_{t=1}^{\infty}\eta_t=\infty,\quad \sum_{t=1}^{\infty}\eta_t^2&lt;\infty\]</span>
<p>取 <span displaypfx="inline-" class="mathjax-container">\(\eta_t=\frac{1}{t}\)</span> 时，第一项对应调和级数发散（保证“走得足够远”），第二项对应 <span displaypfx="inline-" class="mathjax-container">\(\sum 1/t^2\)</span> 收敛（保证噪声的累计影响有限）。很多 SGD（Stochastic Gradient Descent）及在线学习（Online Learning）的理论推导，会用这组“一个发散、一个收敛”的对比来控制偏差与方差项。</p>
<div class="blog_h3"><span class="graybg">Taylor 展开</span></div>
<p>Taylor 展开（Taylor Expansion）用多项式在局部逼近光滑函数。Taylor 定理（Taylor's Theorem）强调“有限阶近似 + 余项（Remainder）”，Taylor 级数（Taylor Series）强调“无限项级数在收敛时等于原函数”。</p>
<span displaypfx="" class="mathjax-container">\[f(x)=\sum_{k=0}^{n}\frac{f^{(k)}(a)}{k!}(x-a)^k+R_{n+1}(x)\]</span>
<p>当余项在 <span displaypfx="inline-" class="mathjax-container">\(n\to\infty\)</span> 时收敛到 0，才有 <span displaypfx="inline-" class="mathjax-container">\(f(x)=\sum_{k=0}^{\infty}\frac{f^{(k)}(a)}{k!}(x-a)^k\)</span>。并非所有光滑函数都等于其 Taylor 级数。</p>
<p>例：在 <span displaypfx="inline-" class="mathjax-container">\(a=0\)</span> 展开，<span displaypfx="inline-" class="mathjax-container">\(e^x\approx 1+x+\frac{x^2}{2}\)</span>；当 <span displaypfx="inline-" class="mathjax-container">\(|x|\)</span> 很小时，用低阶项就能得到高精度近似。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/taylor-expansion.jpg"><img class="alignnone size-full wp-image-40583" src="https://blog.gmem.cc/wp-content/uploads/2026/03/taylor-expansion.jpg" alt="taylor-expansion" width="100%" /></a></p>
<div class="blog_h2"><span class="graybg">组合数学</span></div>
<p>组合数学（Combinatorics）研究离散结构的计数、构造与存在性。它的典型问题是“有多少种可能”：当选择空间巨大时，计数结果直接决定搜索/采样的复杂度；当把计数结果归一化为概率时，就得到二项分布、超几何分布等常见模型。</p>
<div class="blog_h3"><span class="graybg">排列与组合</span></div>
<p>排列（Permutation）与组合（Combination）的区别只在一个点：<span style="background-color: #c0c0c0;">是否区分顺序</span>。把“先选哪些元素”与“再怎么排序”分开理解，可以避免大量记忆负担。</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">对象</td>
<td style="text-align: center;">记号</td>
<td style="width: 30%; text-align: center;">公式</td>
<td style="text-align: center;">直觉</td>
</tr>
</thead>
<tbody>
<tr>
<td>阶乘（Factorial）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(n!\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(n!=n(n-1)\cdots 2\cdot 1,\ 0!=1\)</span></td>
<td>把 <span displaypfx="inline-" class="mathjax-container">\(n\)</span> 个互异元素全部排列的方式数</td>
</tr>
<tr>
<td>排列（k-permutation）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(P(n,k)\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(P(n,k)=\frac{n!}{(n-k)!}\)</span></td>
<td>从 <span displaypfx="inline-" class="mathjax-container">\(n\)</span> 个里选 <span displaypfx="inline-" class="mathjax-container">\(k\)</span> 个并排序：一步一步填位置</td>
</tr>
<tr>
<td>组合（k-combination）</td>
<td><span displaypfx="inline-" class="mathjax-container">\({n \choose k}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\({n \choose k}=\frac{n!}{k!(n-k)!}\)</span></td>
<td>从 <span displaypfx="inline-" class="mathjax-container">\(n\)</span> 个里选 <span displaypfx="inline-" class="mathjax-container">\(k\)</span> 个，不关心顺序：先选集合</td>
</tr>
<tr>
<td>排列与组合关系</td>
<td><span displaypfx="inline-" class="mathjax-container">\(P(n,k)\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(P(n,k)={n \choose k}\,k!\)</span></td>
<td>先选 <span displaypfx="inline-" class="mathjax-container">\(k\)</span> 个元素，再把它们排序</td>
</tr>
</tbody>
</table>
<p>例：从 5 个候选特征里挑 3 个做一个无序子集，有 <span displaypfx="inline-" class="mathjax-container">\({5 \choose 3}=10\)</span> 种；如果还要给这 3 个特征排“处理顺序”，则变为排列 <span displaypfx="inline-" class="mathjax-container">\(P(5,3)=5\cdot4\cdot3=60\)</span> 种。</p>
<div class="blog_h3"><span class="graybg">二项式定理</span></div>
<p>二项式定理（Binomial Theorem）描述 <span displaypfx="inline-" class="mathjax-container">\((a+b)^n\)</span> 的展开结构：</p>
<span displaypfx="" class="mathjax-container">\[(a+b)^n=\sum_{k=0}^{n}{n \choose k}a^{n-k}b^k\]</span>
<p>系数 <span displaypfx="inline-" class="mathjax-container">\({n \choose k}\)</span> 的组合解释非常直接：把 <span displaypfx="inline-" class="mathjax-container">\((a+b)^n\)</span> 看作 <span displaypfx="inline-" class="mathjax-container">\(n\)</span> 个括号相乘，每一项由“从每个括号里选 <span displaypfx="inline-" class="mathjax-container">\(a\)</span> 或 <span displaypfx="inline-" class="mathjax-container">\(b\)</span>”组成。若最终选了 <span displaypfx="inline-" class="mathjax-container">\(k\)</span> 次 <span displaypfx="inline-" class="mathjax-container">\(b\)</span>，就需要从 <span displaypfx="inline-" class="mathjax-container">\(n\)</span> 个位置里挑出这 <span displaypfx="inline-" class="mathjax-container">\(k\)</span> 个位置，因此系数是 <span displaypfx="inline-" class="mathjax-container">\({n \choose k}\)</span>。</p>
<p>例：<span displaypfx="inline-" class="mathjax-container">\((x+2)^4={4 \choose 0}x^4+{4 \choose 1}x^3\cdot2+{4 \choose 2}x^2\cdot2^2+{4 \choose 3}x\cdot2^3+{4 \choose 4}2^4=x^4+8x^3+24x^2+32x+16\)</span>。</p>
<p>二项式系数还满足递推（Pascal's Rule）：<span displaypfx="inline-" class="mathjax-container">\({n \choose k}={n-1 \choose k-1}+{n-1 \choose k}\)</span>。这等价于“选与不选某个固定元素”的分类讨论。</p>
<p>与概率的连接：若独立伯努利试验（Bernoulli Trial）成功概率为 <span displaypfx="inline-" class="mathjax-container">\(p\)</span>，做 <span displaypfx="inline-" class="mathjax-container">\(n\)</span> 次恰好成功 <span displaypfx="inline-" class="mathjax-container">\(k\)</span> 次的概率是 <span displaypfx="inline-" class="mathjax-container">\({n \choose k}p^k(1-p)^{n-k}\)</span>，其中 <span displaypfx="inline-" class="mathjax-container">\({n \choose k}\)</span> 计数的是“成功出现在哪些轮次”。</p>
<div class="blog_h2"><span class="graybg">不等式</span></div>
<p>不等式（Inequality）是把“难算/难优化/难比较”的表达式替换为“可控的上界或下界”的工具。机器学习中的许多目标函数与泛化分析，本质上都在用不等式把复杂量压到可操作的形式（例如把非线性函数用线性或二次上界近似）。</p>
<div class="blog_h3"><span class="graybg">基本不等式</span></div>
<p>基本不等式（Basic Inequalities）常见来源有两类：一类来自非负量（例如 <span displaypfx="inline-" class="mathjax-container">\((\cdot)^2\ge 0\)</span>），另一类来自范数（Norm）与凸性（Convexity）的结构性质。</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">不等式</td>
<td style="text-align: center;">形式</td>
<td style="text-align: center;">典型用途</td>
</tr>
</thead>
<tbody>
<tr>
<td>平方非负</td>
<td><span displaypfx="inline-" class="mathjax-container">\((a-b)^2\ge 0\Rightarrow a^2+b^2\ge 2ab\)</span></td>
<td>把乘积项 <span displaypfx="inline-" class="mathjax-container">\(ab\)</span> 转成平方项，便于求界或优化（常见于“配方”）</td>
</tr>
<tr>
<td>三角不等式（Triangle Inequality）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(|x+y|\le |x|+|y|\)</span></td>
<td>把“相加后的绝对值”上界成“绝对值之和”；用于误差传播与残差界</td>
</tr>
<tr>
<td>均值不等式（AM-GM）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{a+b}{2}\ge \sqrt{ab}\quad (a,b\ge 0)\)</span></td>
<td>在“和固定时乘积最大”或“乘积/几何平均”相关问题里给出最紧的经典界</td>
</tr>
</tbody>
</table>
<p>例（AM-GM 的“最大乘积”直觉）：在 <span displaypfx="inline-" class="mathjax-container">\(a,b\ge 0\)</span> 且 <span displaypfx="inline-" class="mathjax-container">\(a+b=10\)</span> 的约束下，乘积满足 <span displaypfx="inline-" class="mathjax-container">\(ab\le \left(\frac{a+b}{2}\right)^2=25\)</span>，并且当且仅当 <span displaypfx="inline-" class="mathjax-container">\(a=b=5\)</span> 取等号。</p>
<div class="blog_h3"><span class="graybg">Jensen 不等式</span></div>
<p>Jensen 不等式（Jensen's Inequality）回答一个很具体的问题：<span style="background-color: #c0c0c0;">“平均”与“非线性”交换顺序会发生什么</span>。它是把抽象的凸性（Convexity）变成可用结论的最常用工具之一。</p>
<p>先把术语说清楚：</p>
<ul>
<li>加权平均（Weighted Average）：给一组数 <span displaypfx="inline-" class="mathjax-container">\(x_1,\dots,x_n\)</span> 分配权重 <span displaypfx="inline-" class="mathjax-container">\(\lambda_i\ge 0\)</span> 且 <span displaypfx="inline-" class="mathjax-container">\(\sum_i\lambda_i=1\)</span>，则加权平均是 <span displaypfx="inline-" class="mathjax-container">\(\sum_i\lambda_i x_i\)</span>（把 <span displaypfx="inline-" class="mathjax-container">\(\lambda_i\)</span> 视为“占比”即可）。</li>
<li>凸函数（Convex Function）：函数 <span displaypfx="inline-" class="mathjax-container">\(\varphi\)</span> 若满足对任意 <span displaypfx="inline-" class="mathjax-container">\(x_1,x_2\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(\lambda\in[0,1]\)</span> 都有 <span displaypfx="inline-" class="mathjax-container">\(\varphi(\lambda x_1+(1-\lambda)x_2)\le \lambda\varphi(x_1)+(1-\lambda)\varphi(x_2)\)</span>，则称 <span displaypfx="inline-" class="mathjax-container">\(\varphi\)</span> 是凸的。直观上：它“向上弯”，因此对它做平均会被“惩罚”。</li>
<li>随机变量（Random Variable）：一个在不同试验/样本上会取不同值的量；把 <span displaypfx="inline-" class="mathjax-container">\(X\)</span> 视为“每次取到的数”。</li>
<li>期望（Expectation）<span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[\cdot]\)</span>：可把它理解为“按概率加权的平均”。</li>
</ul>
<p>Jensen 的形式（离散加权平均）：若 <span displaypfx="inline-" class="mathjax-container">\(\varphi\)</span> 凸，则</p>
<span displaypfx="" class="mathjax-container">\[\varphi\!\left(\sum_i \lambda_i x_i\right)\le \sum_i \lambda_i \varphi(x_i)\]</span>
<p>等价的期望形式：对随机变量 <span displaypfx="inline-" class="mathjax-container">\(X\)</span>（且 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[X]\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[\varphi(X)]\)</span> 存在），有</p>
<span displaypfx="" class="mathjax-container">\[\varphi(\mathbb{E}[X])\le \mathbb{E}[\varphi(X)]\]</span>
<p>如果 <span displaypfx="inline-" class="mathjax-container">\(\varphi\)</span> 是凹函数（Concave Function），不等号方向会反过来。</p>
<p>场景 1：凸惩罚下，“波动”本身有代价。设某个系统的代价函数是 <span displaypfx="inline-" class="mathjax-container">\(\varphi(t)=t^2\)</span>（二次惩罚，Convex Penalty），比较两种延迟（Latency）：</p>
<ul>
<li>稳定方案：每次都是 100ms，则平均代价是 <span displaypfx="inline-" class="mathjax-container">\(100^2=10000\)</span>。</li>
<li>波动方案：一半时间 50ms、一半时间 150ms（平均同样是 100ms），则平均代价是 <span displaypfx="inline-" class="mathjax-container">\(\frac{50^2+150^2}{2}=12500\)</span>。</li>
</ul>
<p>两者平均延迟一样，但二次代价更偏好稳定方案；这就是 Jensen 在 <span displaypfx="inline-" class="mathjax-container">\(\varphi(t)=t^2\)</span> 下的直接体现：<span displaypfx="inline-" class="mathjax-container">\(\left(\frac{50+150}{2}\right)^2\le \frac{50^2+150^2}{2}\)</span>。</p>
<p>场景 2：对数损失下，“偶尔很错”会被放大。分类里常用对数损失（Log Loss）<span displaypfx="inline-" class="mathjax-container">\(\varphi(p)=-\log p\)</span>（<span displaypfx="inline-" class="mathjax-container">\(p\)</span> 是正确类别的预测概率），它在 <span displaypfx="inline-" class="mathjax-container">\((0,1]\)</span> 上是凸函数。假设一个模型在同一个样本上两次输出 <span displaypfx="inline-" class="mathjax-container">\(p=0.9\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(p=0.1\)</span>（一次很自信、一次几乎反过来），则</p>
<span displaypfx="" class="mathjax-container">\[-\log\!\left(\frac{0.9+0.1}{2}\right)=-\log 0.5\approx 0.693\le \frac{-\log 0.9-\log 0.1}{2}\approx 1.204\]</span>
<p>含义：在凸损失下，预测的波动会提高平均损失；这也是许多“用不等式构造上界/下界”方法（例如把难优化的期望目标变成可算的界）背后的数学原因。</p>
<p>何时取等号：当所有 <span displaypfx="inline-" class="mathjax-container">\(x_i\)</span> 相等（没有波动），或 <span displaypfx="inline-" class="mathjax-container">\(\varphi\)</span> 在相关区间上近似线性时，不等式可取等号。</p>
<div class="blog_h3"><span class="graybg">Cauchy-Schwarz 不等式</span></div>
<p>Cauchy-Schwarz 不等式（Cauchy–Schwarz Inequality）回答另一个非常基础的问题：<span style="background-color: #c0c0c0;">两组数“对齐相乘再求和”的结果，最多能有多大</span>。它是内积（Inner Product）与范数（Norm）体系的核心约束。</p>
<p>把术语说清楚后，这个不等式就不神秘：</p>
<ul>
<li>向量（Vector）：把一组数按顺序排成列表，例如 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}=(a_1,\dots,a_n)\)</span>。</li>
<li>点积/内积（Dot Product / Inner Product）：<span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}^\top\mathbf{b}=\sum_i a_i b_i\)</span>，可理解为“两组数在同一位置上的重叠程度”。</li>
<li>L2 范数（<span displaypfx="inline-" class="mathjax-container">\(\ell_2\)</span> Norm）：<span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{a}\|_2=\sqrt{\sum_i a_i^2}\)</span>，几何上是向量长度（Length）。</li>
</ul>
<p>不等式本身是：</p>
<span displaypfx="" class="mathjax-container">\[|\mathbf{a}^\top\mathbf{b}|\le \|\mathbf{a}\|_2\,\|\mathbf{b}\|_2\]</span>
<p>几何解释：把 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}^\top\mathbf{b}\)</span> 写成 <span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{a}\|_2\|\mathbf{b}\|_2\cos\theta\)</span>，Cauchy-Schwarz 等价于 <span displaypfx="inline-" class="mathjax-container">\(|\cos\theta|\le 1\)</span>。当且仅当两向量同向或反向（线性相关（Linearly Dependent））时取等号。</p>
<p>场景 1：为什么检索里常用“余弦相似度（Cosine Similarity）”。在向量检索中，常用点积 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{q}^\top\mathbf{d}\)</span> 衡量查询向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{q}\)</span> 与文档向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{d}\)</span> 的相似度。但点积同时受“方向”和“长度”影响：如果某个向量范数很大，即使方向一般，点积也可能很大。</p>
<p>一个最小例子：令查询 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{q}=(1,1)\)</span>，两篇候选文档向量为 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{d}_1=(100,0)\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\mathbf{d}_2=(2,2)\)</span>。点积分别是 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{q}^\top\mathbf{d}_1=100\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\mathbf{q}^\top\mathbf{d}_2=4\)</span>，点积会更偏向 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{d}_1\)</span>。但如果把向量归一化到单位范数（Unit Norm）再比较，则</p>
<span displaypfx="" class="mathjax-container">\[\cos(\mathbf{q},\mathbf{d}_1)=\frac{\mathbf{q}^\top\mathbf{d}_1}{\|\mathbf{q}\|_2\|\mathbf{d}_1\|_2}=\frac{1}{\sqrt{2}},\quad \cos(\mathbf{q},\mathbf{d}_2)=\frac{\mathbf{q}^\top\mathbf{d}_2}{\|\mathbf{q}\|_2\|\mathbf{d}_2\|_2}=1\]</span>
<p>归一化后 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{d}_2\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{q}\)</span> 方向完全一致，更符合“语义对齐”的直觉。Cauchy-Schwarz 保证余弦相似度一定落在 [-1,1]，从而成为一个尺度稳定、可解释的相似度。</p>
<p>场景 2：为什么相关系数（Correlation Coefficient）不可能超过 1。把两组已中心化（Centered，均值为 0）的数据序列看成向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x},\mathbf{y}\)</span>，它们的“协方差方向”可以写成点积 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}^\top\mathbf{y}\)</span>，而各自的尺度由 <span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{x}\|_2,\|\mathbf{y}\|_2\)</span> 给出。Cauchy-Schwarz 直接推出</p>
<span displaypfx="" class="mathjax-container">\[\left|\frac{\mathbf{x}^\top\mathbf{y}}{\|\mathbf{x}\|_2\|\mathbf{y}\|_2}\right|\le 1\]</span>
<p>这就是“线性相关强度最多 100%”的数学原因；取等号对应完全线性关系，即 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{y}=c\mathbf{x}\)</span>。</p>
<div class="blog_h2"><span class="graybg">集合论基础</span></div>
<p>集合论（Set Theory）是现代数学语言的底座：几乎所有“对象 + 结构”的定义都能归结为集合及其上的运算。工程语境里，把对象抽象为集合的好处是：边界清晰、可组合、可用代数规则推导。</p>
<div class="blog_h3"><span class="graybg">集合运算（并 / 交 / 补）</span></div>
<p>集合（Set）是元素（Element）的无序聚合。记 <span displaypfx="inline-" class="mathjax-container">\(x\in A\)</span> 表示 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 属于集合 <span displaypfx="inline-" class="mathjax-container">\(A\)</span>，记 <span displaypfx="inline-" class="mathjax-container">\(A\subseteq B\)</span> 表示子集（Subset）。常用的运算如下。</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">运算</td>
<td style="text-align: center; width: 150px;">记号</td>
<td style="text-align: center;">定义</td>
<td style="text-align: center;">例子</td>
</tr>
</thead>
<tbody>
<tr>
<td>并（Union）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(A\cup B\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\{x\mid x\in A\ \text{或}\ x\in B\}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\{1,2,3\}\cup\{3,4\}=\{1,2,3,4\}\)</span></td>
</tr>
<tr>
<td>交（Intersection）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(A\cap B\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\{x\mid x\in A\ \text{且}\ x\in B\}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\{1,2,3\}\cap\{3,4\}=\{3\}\)</span></td>
</tr>
<tr>
<td>差（Difference）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(A\setminus B\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\{x\mid x\in A,\ x\notin B\}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\{1,2,3\}\setminus\{3,4\}=\{1,2\}\)</span></td>
</tr>
<tr>
<td>补（Complement）</td>
<td><span displaypfx="inline-" class="mathjax-container">\(A^c\)</span></td>
<td>相对于全集 <span displaypfx="inline-" class="mathjax-container">\(U\)</span>： <span displaypfx="inline-" class="mathjax-container">\(A^c=U\setminus A\)</span></td>
<td>若 <span displaypfx="inline-" class="mathjax-container">\(U=\{1,2,3,4\}\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(\{1,2,3\}^c=\{4\}\)</span></td>
</tr>
</tbody>
</table>
<p>De Morgan 律（De Morgan's Laws）是“补运算”与“并/交”之间的互换规则：</p>
<span displaypfx="" class="mathjax-container">\[(A\cup B)^c=A^c\cap B^c,\quad (A\cap B)^c=A^c\cup B^c\]</span>
<p>计数场景常用容斥原理（Inclusion–Exclusion）：<span displaypfx="inline-" class="mathjax-container">\(|A\cup B|=|A|+|B|-|A\cap B|\)</span>。例：一个数据集里“命中规则 A”的样本有 120 个，“命中规则 B”的有 80 个，同时命中的有 30 个，则命中至少一个规则的样本数是 <span displaypfx="inline-" class="mathjax-container">\(120+80-30=170\)</span>。</p>
<div class="blog_h3"><span class="graybg">映射与关系</span></div>
<p>映射（Mapping / Function）用来描述“从输入到输出”的确定性规则。写作 <span displaypfx="inline-" class="mathjax-container">\(f:A\to B\)</span>，其中 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 是定义域（Domain），<span displaypfx="inline-" class="mathjax-container">\(B\)</span> 是陪域（Codomain）。对 <span displaypfx="inline-" class="mathjax-container">\(x\in A\)</span>，输出写作 <span displaypfx="inline-" class="mathjax-container">\(f(x)\in B\)</span>。像集（Image / Range）为 <span displaypfx="inline-" class="mathjax-container">\(f(A)=\{f(x)\mid x\in A\}\)</span>。</p>
<p>关系（Relation）是更一般的概念：它不要求“每个输入对应唯一输出”。在集合论里，一个二元关系 <span displaypfx="inline-" class="mathjax-container">\(R\)</span> 可以看成笛卡尔积（Cartesian Product）上的子集：</p>
<span displaypfx="" class="mathjax-container">\[R\subseteq A\times B,\quad (a,b)\in R\ \text{表示}\ a\ R\ b\]</span>
<p>典型例子：</p>
<ul>
<li>等价关系（Equivalence Relation）：满足自反、对称、传递。例如定义 <span displaypfx="inline-" class="mathjax-container">\(x\sim y\Leftrightarrow x-y\)</span> 能被 <span displaypfx="inline-" class="mathjax-container">\(m\)</span> 整除（同余），它把整数划分为若干等价类（Equivalence Class）。</li>
<li>偏序（Partial Order）：满足自反、反对称、传递。例如 <span displaypfx="inline-" class="mathjax-container">\(\le\)</span> 是实数上的偏序；集合的包含关系 <span displaypfx="inline-" class="mathjax-container">\(\subseteq\)</span> 也是偏序。</li>
<li>一般关系：例如“相似度大于阈值”定义了一个关系，但它通常不具备传递性，因此不是等价关系。</li>
</ul>
<p>把关系写成矩阵/邻接矩阵（Adjacency Matrix）是常用表示：若 <span displaypfx="inline-" class="mathjax-container">\(A=B=\{1,\ldots,n\}\)</span>，定义 <span displaypfx="inline-" class="mathjax-container">\(M_{ij}=1\)</span> 当且仅当 <span displaypfx="inline-" class="mathjax-container">\((i,j)\in R\)</span>。在图论（Graph Theory）与推荐/检索（Retrieval）里，这种表示会直接进入线性代数计算。</p>
<div class="blog_h1"><span class="graybg">线性代数</span></div>
<div class="blog_h2"><span class="graybg">向量</span></div>
<div class="blog_h3"><span class="graybg">向量加减法（Vector Addition / Subtraction）</span></div>
<p>在 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{R}^n\)</span> 中，向量加法与减法按分量（Component-wise）进行。对 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}=(a_1,\ldots,a_n)\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\mathbf{b}=(b_1,\ldots,b_n)\)</span>：</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{a}+\mathbf{b}=(a_1+b_1,\ldots,a_n+b_n),\quad \mathbf{a}-\mathbf{b}=(a_1-b_1,\ldots,a_n-b_n)\]</span>
<p>几何上，加法对应向量合成；减法 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}-\mathbf{b}\)</span> 是从 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{b}\)</span> 指向 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}\)</span> 的位移向量。</p>
<p>例：若 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}=(1,2)\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\mathbf{b}=(3,-1)\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}+\mathbf{b}=(4,1)\)</span>，<span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}-\mathbf{b}=(-2,3)\)</span>。</p>
<p>在 AI 里，残差连接（Residual Connection）是 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}+f(\mathbf{x})\)</span>；梯度下降（Gradient Descent）的更新可写成 <span displaypfx="inline-" class="mathjax-container">\(\theta\leftarrow\theta-\eta\nabla L(\theta)\)</span>。它们都直接依赖向量加减法。</p>
<div class="blog_h3"><span class="graybg">点积（Dot Product）</span></div>
<p>点积（Dot Product）把两个向量映射为标量（Scalar），常用于相似度、投影和方向一致性判断。对 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a},\mathbf{b}\in\mathbb{R}^n\)</span>，定义为 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}\cdot\mathbf{b}=\sum_{i=1}^n a_i b_i\)</span>。当 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a},\mathbf{b}\ne\mathbf{0}\)</span> 时，也可写为 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}\cdot\mathbf{b}=\|\mathbf{a}\|\|\mathbf{b}\|\cos\theta\)</span>。</p>
<p>点积满足交换律（Commutativity）：<span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}\cdot\mathbf{b}=\mathbf{b}\cdot\mathbf{a}\)</span>。若 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}\cdot\mathbf{b}=0\)</span>，两向量正交（Orthogonal）。</p>
<p>向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}\)</span> 在 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{b}\)</span> 方向上的标量投影是 <span displaypfx="inline-" class="mathjax-container">\(\frac{\mathbf{a}\cdot\mathbf{b}}{\|\mathbf{b}\|}\)</span>。投影更常用的是向量形式（Vector Projection）：</p>
<span displaypfx="" class="mathjax-container">\[\mathrm{proj}_{\mathbf{b}}(\mathbf{a})=\frac{\mathbf{a}\cdot\mathbf{b}}{\|\mathbf{b}\|^2}\mathbf{b}\]</span>
<p>当把向量归一化到单位范数（Unit Norm）后，点积就等于余弦相似度（Cosine Similarity）：<span displaypfx="inline-" class="mathjax-container">\(\cos\theta=\mathbf{\hat a}\cdot\mathbf{\hat b}\)</span>，这也是检索与表示学习中常见的相似度度量。</p>
<p>单位向量（Unit Vector）是范数为 1 的向量，常用来“只表示方向”。对非零向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}\)</span>，其单位向量是 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{\hat a}=\frac{\mathbf{a}}{\|\mathbf{a}\|}\)</span>。</p>
<p>方向角（Direction Angles）/方向余弦（Direction Cosines）描述单位向量与各坐标轴的夹角：在三维中，若单位向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{u}=(u_x,u_y,u_z)\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(u_x=\cos\alpha\)</span>、<span displaypfx="inline-" class="mathjax-container">\(u_y=\cos\beta\)</span>、<span displaypfx="inline-" class="mathjax-container">\(u_z=\cos\gamma\)</span>，并满足 <span displaypfx="inline-" class="mathjax-container">\(\cos^2\alpha+\cos^2\beta+\cos^2\gamma=1\)</span>。</p>
<p>点积之所以会出现“乘积”，是因为它等于“被投影长度 × 参照向量长度”： <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}\cdot\mathbf{b}=\|\mathbf{b}\|\cdot \mathrm{projLen}_{\mathbf{b}}(\mathbf{a})\)</span>。当两向量同向时，投影长度就是 <span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{a}\|\)</span>，于是点积变为 <span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{a}\|\|\mathbf{b}\|\)</span>。</p>
<div class="blog_h4"><span class="graybg">二维向量的复数表示</span></div>
<p>在二维空间里，向量 <span displaypfx="inline-" class="mathjax-container">\((a,b)\)</span> 可以写成复数 <span displaypfx="inline-" class="mathjax-container">\(z=a+bi\)</span>。这不是把向量“变成另一种对象”，而是给同一个二维量换一种记法：实部对应 x 轴分量，虚部对应 y 轴分量。</p>
<p>若另一向量 <span displaypfx="inline-" class="mathjax-container">\((c,d)\)</span> 写成 <span displaypfx="inline-" class="mathjax-container">\(w=c+di\)</span>，则复共轭乘积为</p>
<span displaypfx="" class="mathjax-container">\[z\bar w=(a+bi)(c-di)=(ac+bd)+i(bc-ad)\]</span>
<p>其中实部 <span displaypfx="inline-" class="mathjax-container">\(ac+bd\)</span> 恰好就是二维向量的点积：</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{a}\cdot\mathbf{b}=ac+bd=\mathrm{Re}(z\bar w)\]</span>
<p>若再把它们写成极坐标形式 <span displaypfx="inline-" class="mathjax-container">\(z=r_1e^{i\theta_1}\)</span>、<span displaypfx="inline-" class="mathjax-container">\(w=r_2e^{i\theta_2}\)</span>，则</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{a}\cdot\mathbf{b}=\mathrm{Re}(z\bar w)=r_1r_2\cos(\theta_1-\theta_2)\]</span>
<p>这里实部的来源可以直接从指数形式读出：因为 <span displaypfx="inline-" class="mathjax-container">\(\bar w=r_2e^{-i\theta_2}\)</span>，所以 <span displaypfx="inline-" class="mathjax-container">\(z\bar w=r_1r_2e^{i(\theta_1-\theta_2)}\)</span>。再用欧拉公式 <span displaypfx="inline-" class="mathjax-container">\(e^{i\phi}=\cos\phi+i\sin\phi\)</span> 展开，就得到 <span displaypfx="inline-" class="mathjax-container">\(z\bar w=r_1r_2\big(\cos(\theta_1-\theta_2)+i\sin(\theta_1-\theta_2)\big)\)</span>；其中实部正是 <span displaypfx="inline-" class="mathjax-container">\(r_1r_2\cos(\theta_1-\theta_2)\)</span>。</p>
<p>因此，点积既可以看成分量乘加，也可以看成“复数乘积取实部”。后一种写法把<span style="background-color: #c0c0c0;">长度</span>与<span style="background-color: #c0c0c0;">相位差</span>放进同一个式子里，在位置编码、旋转表示与频域分析中尤其方便。后文 RoPE 的复数视角正是沿用这层关系：二维块先写成复数，再让相位随位置旋转。</p>
<p>例：令 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}=(3,4)\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\mathbf{b}=(4,0)\)</span>。则 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}\cdot\mathbf{b}=12\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{a}\|=5\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{b}\|=4\)</span>，所以 <span displaypfx="inline-" class="mathjax-container">\(\cos\theta=\frac{12}{20}=0.6\)</span>。而 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}\)</span> 在 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{b}\)</span> 方向上的标量投影是 <span displaypfx="inline-" class="mathjax-container">\(\frac{12}{4}=3\)</span>，恰好对应 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}\)</span> 的 x 分量。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/vector-ops.jpg"><img class="alignnone size-full wp-image-40599" src="https://blog.gmem.cc/wp-content/uploads/2026/03/vector-ops.jpg" alt="vector-ops" width="100%" /></a></p>
<div class="blog_h3"><span class="graybg">叉积（Cross Product）</span></div>
<p>叉积（Cross Product）定义在三维空间（3D Space）。结果是同时垂直于两个输入向量的向量，大小为 <span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{a}\times\mathbf{b}\|=\|\mathbf{a}\|\|\mathbf{b}\|\sin\theta\)</span>，等于两向量张成平行四边形的面积。</p>
<p>计算上，若 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}=(a_1,a_2,a_3)\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\mathbf{b}=(b_1,b_2,b_3)\)</span>，则：</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{a}\times\mathbf{b}=(a_2b_3-a_3b_2,\ a_3b_1-a_1b_3,\ a_1b_2-a_2b_1)\]</span>
<p>例： <span displaypfx="inline-" class="mathjax-container">\((1,0,0)\times(0,1,0)=(0,0,1)\)</span>。这个例子在几何上对应两个单位正交基向量张成的“正方形面积为 1”，方向由右手定则给出。</p>
<p>叉积为零当且仅当两向量平行（Parallel/Colinear）或至少有一个为零向量：这是因为 <span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{a}\times\mathbf{b}\|=\|\mathbf{a}\|\|\mathbf{b}\|\sin\theta\)</span>，为 0 只能来自 <span displaypfx="inline-" class="mathjax-container">\(\sin\theta=0\)</span> 或 <span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{a}\|=0\)</span> 或 <span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{b}\|=0\)</span>。</p>
<p>方向由右手定则（Right-Hand Rule）确定：四指从 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}\)</span> 旋向 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{b}\)</span>，拇指方向即 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}\times\mathbf{b}\)</span> 方向。旋转“正负”不是绝对物理事实，而是由坐标系（Coordinate System）与观察方向（View Direction）约定决定。</p>
<p>力矩（Torque）可作为叉积方向的直观例子： <span displaypfx="inline-" class="mathjax-container">\(\boldsymbol{\tau}=\mathbf{r}\times\mathbf{F}\)</span>。这里保留物理解释的唯一目的，是帮助理解叉积的方向性。</p>
<div class="blog_h2"><span class="graybg">基（Basis）</span></div>
<p>在 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{R}^n\)</span> 中，一组向量 <span displaypfx="inline-" class="mathjax-container">\(\{\mathbf{b}_1,\ldots,\mathbf{b}_n\}\)</span> 若线性无关（Linearly Independent）且张成（Span）整个空间，则称为一组基（Basis）。任何向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 都能唯一表示为 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=\sum_{i=1}^{n} c_i\mathbf{b}_i\)</span>；系数向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{c}=(c_1,\ldots,c_n)^\top\)</span> 就是 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 在该基下的坐标（Coordinates）。</p>
<p>把基向量按列堆成矩阵 <span displaypfx="inline-" class="mathjax-container">\(B=[\mathbf{b}_1\ \cdots\ \mathbf{b}_n]\in\mathbb{R}^{n\times n}\)</span>，则坐标与原向量满足 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=B\mathbf{c}\)</span>。换基（Change of Basis）在推导里本质就是在不同 <span displaypfx="inline-" class="mathjax-container">\(B\)</span> 之间切换坐标表示。</p>
<div class="blog_h3"><span class="graybg">换基（Change of Basis）：同一个向量，不同坐标</span></div>
<p>换基（Change of Basis）指的是：在不改变几何向量本身的前提下，改用另一组基（Basis）来描述它的坐标（Coordinates）。因此，换基改变的是<span style="background-color: #c0c0c0;">表示方式</span>，不是向量对象本身。直观上，可把几何向量理解为平面/空间里的一支箭头。</p>
<p>这也是为什么“换基”不能理解成“把向量变形”。真正发生变化的是参考基（Basis），因此同一向量在不同基下的坐标数值会不同，而几何对象本身保持不变。</p>
<p>为了不混淆“向量本身”和“向量的坐标表示”，可以用一个约定把它们分开：</p>
<ul>
<li><span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span>：把同一个几何向量用标准基（Standard Basis）写出来的分量列向量（数值计算里最常用的表示）。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(\mathbf{c}\)</span>：把同一个几何向量用某组新基 <span displaypfx="inline-" class="mathjax-container">\(\{\mathbf{b}_i\}\)</span> 写出来的坐标向量（Coordinate Vector），也就是“在新基上要乘的系数”。</li>
</ul>
<p>把新基向量在标准基下的分量按列组成 <span displaypfx="inline-" class="mathjax-container">\(B=[\mathbf{b}_1\ \cdots\ \mathbf{b}_n]\)</span>（可称为基矩阵（Basis Matrix）），则</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{x}=B\mathbf{c}\]</span>
<p>读法：右边 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{c}\)</span> 是“在新基下的坐标”，左边 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 是“在标准基下的分量”。乘上 <span displaypfx="inline-" class="mathjax-container">\(B\)</span> 就把“新基坐标”换算回“标准基分量”。</p>
<p>反过来，如果你已知标准基下的分量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span>，想求新基坐标 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{c}\)</span>，就需要解线性方程组 <span displaypfx="inline-" class="mathjax-container">\(B\mathbf{c}=\mathbf{x}\)</span>。由于基向量线性无关，矩阵 <span displaypfx="inline-" class="mathjax-container">\(B\)</span> 必可逆（Invertible），因此可写成：</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{c}=B^{-1}\mathbf{x}\]</span>
<p>更一般地，若旧基矩阵为 <span displaypfx="inline-" class="mathjax-container">\(B\)</span>、新基矩阵为 <span displaypfx="inline-" class="mathjax-container">\(C\)</span>，同一几何向量满足 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=B\mathbf{c}_{B}=C\mathbf{c}_{C}\)</span>，于是坐标之间的换算是：</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{c}_{C}=C^{-1}B\,\mathbf{c}_{B}\]</span>
<p>矩阵 <span displaypfx="inline-" class="mathjax-container">\(P=C^{-1}B\)</span> 常被称为换基矩阵（Change-of-basis Matrix）：它把“旧基坐标”直接映射为“新基坐标”。</p>
<p>例：在 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{R}^2\)</span> 取 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{b}_1=(1,0)^\top,\ \mathbf{b}_2=(1,1)^\top\)</span>。对 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(2,3)^\top\)</span>，解 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=c_1\mathbf{b}_1+c_2\mathbf{b}_2\)</span> 得 <span displaypfx="inline-" class="mathjax-container">\(c_2=3,\ c_1=-1\)</span>，因此该基下坐标为 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{c}=(-1,3)^\top\)</span>。同一个几何向量，在不同基下的坐标会不同。</p>
<p>把基矩阵写出来会更便于计算： <span displaypfx="inline-" class="mathjax-container">\(B=[\mathbf{b}_1\ \mathbf{b}_2]=\begin{bmatrix}1 &amp; 1\\ 0 &amp; 1\end{bmatrix}\)</span>。此时 <span displaypfx="inline-" class="mathjax-container">\(B\mathbf{c}=\begin{bmatrix}1 &amp; 1\\ 0 &amp; 1\end{bmatrix}\begin{bmatrix}-1\\ 3\end{bmatrix}=\begin{bmatrix}2\\ 3\end{bmatrix}=\mathbf{x}\)</span>；反过来，解 <span displaypfx="inline-" class="mathjax-container">\(B\mathbf{c}=\mathbf{x}\)</span> 等价于 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{c}=B^{-1}\mathbf{x}\)</span>，因此“换基”在计算上就是解一个线性方程组。</p>
<div class="blog_h3"><span class="graybg">标准基（Standard Basis）</span></div>
<p>标准基（Standard Basis）是最常用的一组基。第 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 个标准基向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{e}_i\)</span> 只有第 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 个分量为 1，其余为 0：</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{e}_1=(1,0,\ldots,0)^\top,\ \mathbf{e}_2=(0,1,0,\ldots,0)^\top,\ \ldots,\ \mathbf{e}_n=(0,\ldots,0,1)^\top\]</span>
<p>例：在 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{R}^2\)</span> 中，<span displaypfx="inline-" class="mathjax-container">\((2,3)^\top=2\mathbf{e}_1+3\mathbf{e}_2\)</span>。把 <span displaypfx="inline-" class="mathjax-container">\(\{\mathbf{e}_i\}\)</span> 作为列组成矩阵就是单位矩阵 <span displaypfx="inline-" class="mathjax-container">\(I\)</span>，因此标准基下 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=I\mathbf{x}\)</span> 对应“坐标与分量一致”。</p>
<div class="blog_h3"><span class="graybg">正交基（Orthogonal Basis）</span></div>
<p>正交基（Orthogonal Basis）是指基向量两两正交：对 <span displaypfx="inline-" class="mathjax-container">\(i\ne j\)</span> 有 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{b}_i^\top\mathbf{b}_j=0\)</span>。它不要求单位长度。</p>
<p>正交基的一个关键性质是：坐标可以用投影直接算出。若 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=\sum_i c_i\mathbf{b}_i\)</span> 且 <span displaypfx="inline-" class="mathjax-container">\(\{\mathbf{b}_i\}\)</span> 正交，则</p>
<span displaypfx="" class="mathjax-container">\[c_i=\frac{\mathbf{x}^\top\mathbf{b}_i}{\mathbf{b}_i^\top\mathbf{b}_i}\]</span>
<p>例：取 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{b}_1=(1,1)^\top,\ \mathbf{b}_2=(1,-1)^\top\)</span>，它们点积为 0。对 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(2,1)^\top\)</span>，有 <span displaypfx="inline-" class="mathjax-container">\(c_1=\frac{3}{2},\ c_2=\frac{1}{2}\)</span>，因此 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=\frac{3}{2}\mathbf{b}_1+\frac{1}{2}\mathbf{b}_2\)</span>。</p>
<div class="blog_h3"><span class="graybg">正交标准基（Orthonormal Basis）</span></div>
<p>正交标准基（Orthonormal Basis）要求两两正交且每个基向量单位长度： <span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{u}_i\|_2=1\)</span>，并满足 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{u}_i^\top\mathbf{u}_j=\delta_{ij}\)</span>（克罗内克 delta（Kronecker Delta））。</p>
<p>此时坐标就是内积/投影：若 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=\sum_i c_i\mathbf{u}_i\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(c_i=\mathbf{x}^\top\mathbf{u}_i\)</span>。计算上，这等价于把向量投影到各基方向。</p>
<p>例：令 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{u}_1=\frac{1}{\sqrt{2}}(1,1)^\top,\ \mathbf{u}_2=\frac{1}{\sqrt{2}}(1,-1)^\top\)</span>。对 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(2,1)^\top\)</span>，有 <span displaypfx="inline-" class="mathjax-container">\(c_1=\frac{3}{\sqrt{2}},\ c_2=\frac{1}{\sqrt{2}}\)</span>，于是 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=c_1\mathbf{u}_1+c_2\mathbf{u}_2\)</span>。</p>
<p>把 <span displaypfx="inline-" class="mathjax-container">\(\{\mathbf{u}_i\}\)</span> 按列组成矩阵 <span displaypfx="inline-" class="mathjax-container">\(Q\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(Q^\top Q=I\)</span>，并且坐标变换可写成 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{c}=Q^\top\mathbf{x}\)</span>、重构为 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=Q\mathbf{c}\)</span>。在 PCA（Principal Component Analysis）与 SVD 中，主方向/奇异向量就是正交标准基；投影与重构只需要转置，不需要显式求逆。</p>
<div class="blog_h2"><span class="graybg">矩阵运算</span></div>
<p>矩阵运算（Matrix Operations）是机器学习（Machine Learning）中最核心的计算骨架。前向传播、反向传播和参数更新都可以表示为矩阵与向量的组合。</p>
<div class="blog_h3"><span class="graybg">加法与广播（Addition / Broadcasting）</span></div>
<p>矩阵加法按元素（Element-wise）进行：若 <span displaypfx="inline-" class="mathjax-container">\(X,B\in\mathbb{R}^{m\times n}\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\((X+B)_{ij}=X_{ij}+B_{ij}\)</span>。减法同理。</p>
<p>在深度学习框架里常见的是广播（Broadcasting）：例如对 batch 特征 <span displaypfx="inline-" class="mathjax-container">\(X\in\mathbb{R}^{B\times d}\)</span> 与偏置 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{b}\in\mathbb{R}^{d}\)</span>，写作 <span displaypfx="inline-" class="mathjax-container">\(Y=X+\mathbf{b}\)</span> 意味着把 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{b}\)</span> 复制到每一行后再相加。这是线性层 <span displaypfx="inline-" class="mathjax-container">\(Y=XW+\mathbf{b}\)</span> 的标准形式。</p>
<div class="blog_h4"><span class="graybg">例：矩阵加法</span></div>
<span displaypfx="" class="mathjax-container">\[X=\begin{bmatrix}1 &amp; 2\\ 3 &amp; 4\end{bmatrix},\ B=\begin{bmatrix}10 &amp; 20\\ 30 &amp; 40\end{bmatrix}\Rightarrow X+B=\begin{bmatrix}11 &amp; 22\\ 33 &amp; 44\end{bmatrix}\]</span>
<div class="blog_h4"><span class="graybg">例：广播加偏置（Bias Broadcasting）</span></div>
<p>令 <span displaypfx="inline-" class="mathjax-container">\(X\in\mathbb{R}^{2\times 3}\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\mathbf{b}\in\mathbb{R}^{3}\)</span>：</p>
<span displaypfx="" class="mathjax-container">\[X=\begin{bmatrix}1 &amp; 2 &amp; 3\\ 4 &amp; 5 &amp; 6\end{bmatrix},\ \mathbf{b}=\begin{bmatrix}10 &amp; 20 &amp; 30\end{bmatrix}\]</span>
<p>广播的语义是“把 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{b}\)</span> 复制到每一行”，因此</p>
<span displaypfx="" class="mathjax-container">\[Y=X+\mathbf{b}=\begin{bmatrix}11 &amp; 22 &amp; 33\\ 14 &amp; 25 &amp; 36\end{bmatrix}\]</span>
<p>从线性代数角度，把 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{b}\)</span> 视作行向量，则广播等价于 <span displaypfx="inline-" class="mathjax-container">\(Y=X+\mathbf{1}\mathbf{b}\)</span>，其中 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{1}\in\mathbb{R}^{B\times 1}\)</span> 是全 1 列向量。</p>
<div class="blog_h3"><span class="graybg">矩阵乘法（Matrix Multiplication）</span></div>
<p>矩阵乘法（Matrix Multiplication）在神经网络里通常对应线性层（Linear Layer）：<span displaypfx="inline-" class="mathjax-container">\(Y=XW\)</span>。从“每个输出维度是一个点积”来看更容易记：</p>
<span displaypfx="" class="mathjax-container">\[y_j=\sum_{i=1}^{d_{\text{in}}} x_i W_{ij}\]</span>
<p>在批处理（Batch）场景下，常用形状约定是 <span displaypfx="inline-" class="mathjax-container">\(X\in\mathbb{R}^{B\times d_{\text{in}}}\)</span>、<span displaypfx="inline-" class="mathjax-container">\(W\in\mathbb{R}^{d_{\text{in}}\times d_{\text{out}}}\)</span>、<span displaypfx="inline-" class="mathjax-container">\(Y=XW\in\mathbb{R}^{B\times d_{\text{out}}}\)</span>。矩阵乘法一般不满足交换律（Non-commutativity），形状不匹配时也无法相乘。</p>
<p>从几何（Geometry）角度看，矩阵定义了一个线性变换（Linear Transformation）：它把空间中的点/向量整体“变形”（旋转、缩放、剪切、投影等）。一种实用记法是看基向量（Basis Vectors）如何被映射：如果用列向量约定，矩阵的每一列就是某个基向量变换后的像。</p>
<p>例（二维）：标准基向量（Standard Basis Vectors）为 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{e}_1=(1,0)^\top\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{e}_2=(0,1)^\top\)</span>。对</p>
<span displaypfx="" class="mathjax-container">\[A=\begin{bmatrix}a &amp; c\\ b &amp; d\end{bmatrix}\]</span>
<p>有</p>
<span displaypfx="" class="mathjax-container">\[A\mathbf{e}_1=\begin{bmatrix}a\\ b\end{bmatrix},\quad A\mathbf{e}_2=\begin{bmatrix}c\\ d\end{bmatrix}\]</span>
<p>因此 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 的第 1/2 列分别是 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{e}_1,\mathbf{e}_2\)</span> 的像。对任意 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=x_1\mathbf{e}_1+x_2\mathbf{e}_2\)</span>，根据线性变换的线性性（Linearity）<span displaypfx="inline-" class="mathjax-container">\(A(\alpha\mathbf{u}+\beta\mathbf{v})=\alpha A\mathbf{u}+\beta A\mathbf{v}\)</span>，可得</p>
<span displaypfx="" class="mathjax-container">\[A\mathbf{x}=x_1A\mathbf{e}_1+x_2A\mathbf{e}_2=x_1\begin{bmatrix}a\\ b\end{bmatrix}+x_2\begin{bmatrix}c\\ d\end{bmatrix}\]</span>
<p>数值例子：取</p>
<span displaypfx="" class="mathjax-container">\[A=\begin{bmatrix}2 &amp; 1\\ 0 &amp; 1\end{bmatrix}\]</span>
<p>则 <span displaypfx="inline-" class="mathjax-container">\(A\mathbf{e}_1=(2,0)^\top\)</span>、<span displaypfx="inline-" class="mathjax-container">\(A\mathbf{e}_2=(1,1)^\top\)</span>。若 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(3,4)^\top=3\mathbf{e}_1+4\mathbf{e}_2\)</span>，则</p>
<span displaypfx="" class="mathjax-container">\[A\mathbf{x}=3A\mathbf{e}_1+4A\mathbf{e}_2=3\begin{bmatrix}2\\ 0\end{bmatrix}+4\begin{bmatrix}1\\ 1\end{bmatrix}=\begin{bmatrix}10\\ 4\end{bmatrix}\]</span>
<p>这就是“看列向量理解变换”的核心：先画出两条基向量被送到哪里，整个网格会按相同线性组合随之平移/剪切/旋转/缩放。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/matrix-trans.jpg"><img class="alignnone size-full wp-image-40629" src="https://blog.gmem.cc/wp-content/uploads/2026/03/matrix-trans.jpg" alt="matrix-trans" width="100%" /></a></p>
<p>这对应两种等价视角：</p>
<ul>
<li>变换向量（Active View）：固定坐标轴，让向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 变成 <span displaypfx="inline-" class="mathjax-container">\(A\mathbf{x}\)</span>。</li>
<li>变换坐标轴（Passive View）：固定几何点，把坐标系按 <span displaypfx="inline-" class="mathjax-container">\(A^{-1}\)</span> 变换；同一个点在新坐标系下的坐标会变化。</li>
</ul>
<p>两种视角描述的是同一个线性映射，只是“变的对象”不同。在做特征变换/白化（Whitening）/坐标变换推导时，这个区分能避免符号混乱。</p>
<p>矩阵乘法只有在内维度相等时才有定义：<span displaypfx="inline-" class="mathjax-container">\((m\times n)(n\times p)=(m\times p)\)</span>。把向量视为列向量（<span displaypfx="inline-" class="mathjax-container">\(m\times 1\)</span>）或行向量（<span displaypfx="inline-" class="mathjax-container">\(1\times m\)</span>）后，外积与点积也都可以统一为矩阵乘法的特例。</p>
<ol>
<li>
<p>一般矩阵乘法：<span displaypfx="inline-" class="mathjax-container">\((m\times n)(n\times p)=(m\times p)\)</span>。</p>
<span displaypfx="" class="mathjax-container">\[A=\begin{bmatrix}1 &amp; 2 &amp; 3\\ 4 &amp; 5 &amp; 6\end{bmatrix}\in\mathbb{R}^{2\times 3},\quad B=\begin{bmatrix}7 &amp; 8\\ 9 &amp; 10\\ 11 &amp; 12\end{bmatrix}\in\mathbb{R}^{3\times 2}\]</span>
<span displaypfx="" class="mathjax-container">\[AB=\begin{bmatrix}58 &amp; 64\\ 139 &amp; 154\end{bmatrix}\in\mathbb{R}^{2\times 2}\]</span>
</li>
<li>
<p>外积（Outer Product）：<span displaypfx="inline-" class="mathjax-container">\((m\times 1)(1\times n)=(m\times n)\)</span>。</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{u}=\begin{bmatrix}1\\ 2\\ 3\end{bmatrix}\in\mathbb{R}^{3\times 1},\quad \mathbf{v}=\begin{bmatrix}4 &amp; 5\end{bmatrix}\in\mathbb{R}^{1\times 2}\]</span>
<span displaypfx="" class="mathjax-container">\[\mathbf{u}\mathbf{v}=\begin{bmatrix}4 &amp; 5\\ 8 &amp; 10\\ 12 &amp; 15\end{bmatrix}\in\mathbb{R}^{3\times 2}\]</span>
<p>这是一个秩一（Rank-1）矩阵：它把“列向量 × 行向量”变成矩阵；在低秩近似、注意力权重构造与二阶统计量里都很常见。</p>
</li>
<li>
<p>点积（Dot Product）：<span displaypfx="inline-" class="mathjax-container">\((1\times m)(m\times 1)=(1\times 1)\)</span>。</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{r}=\begin{bmatrix}1 &amp; 2 &amp; 3\end{bmatrix}\in\mathbb{R}^{1\times 3},\quad \mathbf{c}=\begin{bmatrix}4\\ 5\\ 6\end{bmatrix}\in\mathbb{R}^{3\times 1}\]</span>
<span displaypfx="" class="mathjax-container">\[\mathbf{r}\mathbf{c}=\begin{bmatrix}32\end{bmatrix}\in\mathbb{R}^{1\times 1}\equiv 32\]</span>
<p>结果是标量 <span displaypfx="inline-" class="mathjax-container">\(32\)</span>，等价于点积： <span displaypfx="inline-" class="mathjax-container">\(\mathbf{r}\mathbf{c}=\sum_{i=1}^{m} r_i c_i\)</span>。在实现里常写成 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}^\top\mathbf{y}\)</span>。</p>
</li>
</ol>
<div class="blog_h3"><span class="graybg">仿射变换与仿射子空间</span></div>
<p>仿射（Affine）是线性（Linear）的一个自然扩展。线性变换要求 <span displaypfx="inline-" class="mathjax-container">\(f(\mathbf{x})=A\mathbf{x}\)</span>，必须把原点 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{0}\)</span> 映到原点；仿射变换则允许再加一个平移项：</p>
<span displaypfx="" class="mathjax-container">\[f(\mathbf{x})=A\mathbf{x}+\mathbf{b}\]</span>
<p>这里 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 是线性部分，负责旋转、缩放、剪切、投影等形变； <span displaypfx="inline-" class="mathjax-container">\(\mathbf{b}\)</span> 是平移项（Translation / Bias），负责把整个空间整体推走一个位移。因此，仿射变换可以理解为“先做线性变换，再做平移”。</p>
<p>几何上，线性变换像在原点固定不动的前提下拉伸或扭转整张网格；仿射变换则像先把网格按 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 变形，再把整张网格连同原点一起平移到别的位置。两者最核心的区别是：<span style="background-color: #c0c0c0;">线性变换保原点，仿射变换不一定保原点</span>。</p>
<p>最简单的一维例子是 <span displaypfx="inline-" class="mathjax-container">\(f(x)=2x\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(g(x)=2x+3\)</span>。前者是线性的，因为 <span displaypfx="inline-" class="mathjax-container">\(f(0)=0\)</span>；后者是仿射的，因为它先把数轴按 2 倍拉伸，再整体平移 3 个单位，所以 <span displaypfx="inline-" class="mathjax-container">\(g(0)=3\)</span>，不再经过原点。二维里也是同样： <span displaypfx="inline-" class="mathjax-container">\(f(\mathbf{x})=\mathbf{x}\)</span> 是恒等线性变换，而 <span displaypfx="inline-" class="mathjax-container">\(g(\mathbf{x})=\mathbf{x}+\begin{bmatrix}1\\2\end{bmatrix}\)</span> 会把整张平面网格整体向右平移 1、向上平移 2。</p>
<p>仿射函数（Affine Function）在优化与机器学习里极其常见。一维情形的 <span displaypfx="inline-" class="mathjax-container">\(f(x)=ax+b\)</span> 就是最简单的仿射函数；高维里则写成 <span displaypfx="inline-" class="mathjax-container">\(f(\mathbf{x})=\mathbf{w}^\top\mathbf{x}+b\)</span>。因此，神经网络里通常口头说“线性层（Linear Layer）”，但如果带偏置 <span displaypfx="inline-" class="mathjax-container">\(b\)</span>，更严格的数学名称其实是仿射层（Affine Layer）：</p>
<span displaypfx="" class="mathjax-container">\[Y=XW+\mathbf{1}b^\top\]</span>
<p>这里 <span displaypfx="inline-" class="mathjax-container">\(X\)</span> 是输入矩阵， <span displaypfx="inline-" class="mathjax-container">\(W\)</span> 是线性变换矩阵， <span displaypfx="inline-" class="mathjax-container">\(b\)</span> 是偏置向量， <span displaypfx="inline-" class="mathjax-container">\(\mathbf{1}\)</span> 是把偏置广播到每个样本上的全 1 列向量。若没有偏置，才是严格意义上的线性映射。</p>
<p>仿射还有一个重要性质：它保持仿射组合（Affine Combination）。若 <span displaypfx="inline-" class="mathjax-container">\(\sum_i \alpha_i=1\)</span>，则</p>
<span displaypfx="" class="mathjax-container">\[f\!\left(\sum_i \alpha_i \mathbf{x}_i\right)=\sum_i \alpha_i f(\mathbf{x}_i)\]</span>
<p>这意味着直线、平面、平行关系和凸组合结构在仿射变换下会被保留；因此很多几何对象在经过仿射变换后，仍然保持“像线还是线，像平面还是平面”的基本类型，但位置和方向可能改变。</p>
<p>仿射子空间（Affine Subspace）则是“线性子空间整体平移后得到的集合”。若 <span displaypfx="inline-" class="mathjax-container">\(U\)</span> 是一个线性子空间， <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}_0\)</span> 是空间中的某个固定点，则</p>
<span displaypfx="" class="mathjax-container">\[\mathcal{A}=\mathbf{x}_0+U=\{\mathbf{x}_0+\mathbf{u}:\mathbf{u}\in U\}\]</span>
<p>就是一个仿射子空间。它和线性子空间的差别也在于是否经过原点：线性子空间必须包含原点，仿射子空间不必。例如二维中的直线 <span displaypfx="inline-" class="mathjax-container">\(x+y=1\)</span> 就是一个仿射子空间；它的方向部分与线性子空间 <span displaypfx="inline-" class="mathjax-container">\(x+y=0\)</span> 相同，但整条直线被平移开了，因此不经过原点。</p>
<p>这正是为什么超平面 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w}^\top\mathbf{x}+b=0\)</span> 被称为仿射子空间而不是线性子空间：当 <span displaypfx="inline-" class="mathjax-container">\(b\ne 0\)</span> 时，它通常不经过原点，只是由某个线性超平面整体平移而来。优化里的等式约束 <span displaypfx="inline-" class="mathjax-container">\(h_j(x)=0\)</span> 若要求 <span displaypfx="inline-" class="mathjax-container">\(h_j\)</span> 是仿射函数，含义也正是“约束边界仍然保持平直结构，但允许存在偏置和平移”。</p>
<p>更进一步，双仿射（Biaffine）也是同一族概念的延伸。它通常在两个向量之间做一个双线性项 <span displaypfx="inline-" class="mathjax-container">\(h_i^\top U h_j\)</span>，再加上线性项和偏置项，因此既包含“两个变量之间的乘性交互”，也包含仿射偏置修正。理解了仿射，就能把“线性 / 仿射 / 双线性 / 双仿射”看成一条逐步加复杂度的函数族谱。</p>
<div class="blog_h4"><span class="graybg">线性到双仿射的公式族谱</span></div>
<p>把输出视为一个标量时，这条族谱可以写成一组并列的标准形式：</p>
<span displaypfx="" class="mathjax-container">\[f_{\mathrm{linear}}(\mathbf{x})=\mathbf{w}^\top \mathbf{x}\]</span>
<span displaypfx="" class="mathjax-container">\[f_{\mathrm{affine}}(\mathbf{x})=\mathbf{w}^\top \mathbf{x}+b\]</span>
<span displaypfx="" class="mathjax-container">\[s_{\mathrm{bilinear}}(\mathbf{x},\mathbf{z})=\mathbf{x}^\top U\mathbf{z}\]</span>
<span displaypfx="" class="mathjax-container">\[s_{\mathrm{biaffine}}(\mathbf{x},\mathbf{z})=\mathbf{x}^\top U\mathbf{z}+\mathbf{a}^\top\mathbf{x}+\mathbf{c}^\top\mathbf{z}+b\]</span>
<p>其中 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\in\mathbb{R}^{m},\mathbf{z}\in\mathbb{R}^{n}\)</span> 是两个输入向量， <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w},\mathbf{a}\in\mathbb{R}^{m}\)</span>， <span displaypfx="inline-" class="mathjax-container">\(\mathbf{c}\in\mathbb{R}^{n}\)</span>， <span displaypfx="inline-" class="mathjax-container">\(U\in\mathbb{R}^{m\times n}\)</span>， <span displaypfx="inline-" class="mathjax-container">\(b\in\mathbb{R}\)</span>。这里的 <span displaypfx="inline-" class="mathjax-container">\(U\)</span> 是双线性项的参数矩阵（Parameter Matrix）：它不作用于单个向量本身，而是给“ <span displaypfx="inline-" class="mathjax-container">\(x_p\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(z_q\)</span> 同时出现”这类二元交互分配权重。把式子展开后可写成 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}^\top U\mathbf{z}=\sum_{p=1}^{m}\sum_{q=1}^{n}x_p\,U_{pq}\,z_q\)</span>，因此 <span displaypfx="inline-" class="mathjax-container">\(U_{pq}\)</span> 直接控制第 <span displaypfx="inline-" class="mathjax-container">\(p\)</span> 个 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 特征与第 <span displaypfx="inline-" class="mathjax-container">\(q\)</span> 个 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{z}\)</span> 特征之间的交互强度。 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a}^\top\mathbf{x}\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{c}^\top\mathbf{z}\)</span> 是单边线性项，分别描述各自独立的角色偏好； <span displaypfx="inline-" class="mathjax-container">\(b\)</span> 是全局基线偏置。</p>
<p>把这个定义写成一个最小的 2×3 例子，会更容易直接看出“连接强度”来自哪里。令</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{x}=\begin{bmatrix}x_1\\x_2\end{bmatrix},\quad \mathbf{z}=\begin{bmatrix}z_1\\z_2\\z_3\end{bmatrix},\quad U=\begin{bmatrix}u_{11} &amp; u_{12} &amp; u_{13}\\u_{21} &amp; u_{22} &amp; u_{23}\end{bmatrix}\]</span>
<p>则双线性项为</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{x}^\top U\mathbf{z}=\begin{bmatrix}x_1 &amp; x_2\end{bmatrix}\begin{bmatrix}u_{11} &amp; u_{12} &amp; u_{13}\\u_{21} &amp; u_{22} &amp; u_{23}\end{bmatrix}\begin{bmatrix}z_1\\z_2\\z_3\end{bmatrix}\]</span>
<span displaypfx="" class="mathjax-container">\[=x_1u_{11}z_1+x_1u_{12}z_2+x_1u_{13}z_3+x_2u_{21}z_1+x_2u_{22}z_2+x_2u_{23}z_3\]</span>
<p>这一步把抽象的矩阵乘法拆成了六条显式连接： <span displaypfx="inline-" class="mathjax-container">\(u_{11}\)</span> 控制 <span displaypfx="inline-" class="mathjax-container">\(x_1\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(z_1\)</span> 的连接强度， <span displaypfx="inline-" class="mathjax-container">\(u_{23}\)</span> 控制 <span displaypfx="inline-" class="mathjax-container">\(x_2\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(z_3\)</span> 的连接强度。若某个 <span displaypfx="inline-" class="mathjax-container">\(u_{pq}\)</span> 很大且为正，只要对应的 <span displaypfx="inline-" class="mathjax-container">\(x_p\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(z_q\)</span> 同时取大值，这一对特征就会显著抬高总分；若某个 <span displaypfx="inline-" class="mathjax-container">\(u_{pq}\)</span> 为负，则说明这对特征的共同出现会压低分数。</p>
<p>在同一个例子里，双仿射只是在双线性项之外再加上单边项与偏置：</p>
<span displaypfx="" class="mathjax-container">\[s_{\mathrm{biaffine}}(\mathbf{x},\mathbf{z})=\mathbf{x}^\top U\mathbf{z}+\mathbf{a}^\top\mathbf{x}+\mathbf{c}^\top\mathbf{z}+b\]</span>
<span displaypfx="" class="mathjax-container">\[=\mathbf{x}^\top U\mathbf{z}+(a_1x_1+a_2x_2)+(c_1z_1+c_2z_2+c_3z_3)+b\]</span>
<p>其中 <span displaypfx="inline-" class="mathjax-container">\(a_1,a_2\)</span> 描述 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 一侧各特征自身的偏好， <span displaypfx="inline-" class="mathjax-container">\(c_1,c_2,c_3\)</span> 描述 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{z}\)</span> 一侧各特征自身的偏好， <span displaypfx="inline-" class="mathjax-container">\(b\)</span> 给出无条件基线分数。于是，双线性回答的是“这两组特征配在一起有多合适”，双仿射回答的则是“它们配在一起有多合适，并且各自本身是否已经带有倾向”。</p>
<p>若输出不是一个标量分数，而是 <span displaypfx="inline-" class="mathjax-container">\(K\)</span> 个关系类别或标签分数，则通常不只使用一个 <span displaypfx="inline-" class="mathjax-container">\(U\)</span>，而是为每个类别准备一张交互矩阵 <span displaypfx="inline-" class="mathjax-container">\(U^{(k)}\)</span>，或等价地把它们堆成三阶张量 <span displaypfx="inline-" class="mathjax-container">\(U\in\mathbb{R}^{K\times m\times n}\)</span>。这时每个类别都拥有自己的一套“特征两两交互”权重。</p>
<p>从函数结构看，线性与仿射的区别在于是否含偏置；双线性与双仿射的区别同样在于是否在交互项之外再加入单边项与偏置。固定 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{z}\)</span> 时， <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}^\top U\mathbf{z}\)</span> 对 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 是线性的， <span displaypfx="inline-" class="mathjax-container">\(s_{\text{biaffine}}(\mathbf{x},\mathbf{z})\)</span> 对 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 则是仿射的；固定 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 时，对 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{z}\)</span> 也是同样的性质。这正是 “biaffine” 这个名字的数学含义。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/affine-biaffine-family.png"><img class="alignnone size-full" src="https://blog.gmem.cc/wp-content/uploads/2026/03/affine-biaffine-family.png" alt="affine-biaffine-family" width="1920" height="1203" /></a></p>
<p>图中上排用一维切片显示“是否经过原点”这一关键差异： <span displaypfx="inline-" class="mathjax-container">\(f(x)=ax\)</span> 必然经过原点，而 <span displaypfx="inline-" class="mathjax-container">\(f(x)=ax+b\)</span> 由于加入偏置项，整条直线沿输出轴发生平移。下排保持与公式族谱一致，仍写成 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}^\top U\mathbf{z}\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}^\top U\mathbf{z}+\mathbf{a}^\top\mathbf{x}+\mathbf{c}^\top\mathbf{z}+b\)</span>；图像本身展示的是把高维向量关系压到二维后的一个切片。纯双线性项的零等值线体现为对称的交互边界；加入单边项与偏置后，零等值线整体偏移，分数面出现倾斜与平移，表示模型不仅关心“是否匹配”，还关心两个对象各自单独的倾向。</p>
<p>在依存句法（Dependency Parsing）、关系抽取（Relation Extraction）和成对匹配（Pairwise Matching）任务中，这个结构尤其有用。纯双线性项只能表达“组合后是否相容”，双仿射则进一步允许模型学习“某个对象本身就更像 head / dependent”或“某个实体本身就更像某类关系的一端”。因此，双仿射通常既比纯仿射更能表达交互，又比纯双线性更稳定。</p>
<div class="blog_h3"><span class="graybg">转置（Transpose）</span></div>
<p>转置（Transpose）把行列互换：对 <span displaypfx="inline-" class="mathjax-container">\(A\in\mathbb{R}^{m\times n}\)</span>，其转置 <span displaypfx="inline-" class="mathjax-container">\(A^\top\in\mathbb{R}^{n\times m}\)</span> 满足 <span displaypfx="inline-" class="mathjax-container">\((A^\top)_{ij}=A_{ji}\)</span>。</p>
<p>它常用于对齐乘法形状、把点积写成矩阵乘法，以及在推导中“移动”矩阵：例如 <span displaypfx="inline-" class="mathjax-container">\((AB)^\top=B^\top A^\top\)</span>。Transformer 注意力中的 <span displaypfx="inline-" class="mathjax-container">\(QK^\top\)</span> 就是典型的“先转置再相乘”。</p>
<div class="blog_h4"><span class="graybg">例：行列互换与形状变化</span></div>
<p>令</p>
<span displaypfx="" class="mathjax-container">\[A=\begin{bmatrix}1 &amp; 2 &amp; 3\\ 4 &amp; 5 &amp; 6\end{bmatrix}\in\mathbb{R}^{2\times 3}\]</span>
<p>则</p>
<span displaypfx="" class="mathjax-container">\[A^\top=\begin{bmatrix}1 &amp; 4\\ 2 &amp; 5\\ 3 &amp; 6\end{bmatrix}\in\mathbb{R}^{3\times 2}\]</span>
<p>可以直接看到：原矩阵的第 1 行变成转置后的第 1 列；因此 <span displaypfx="inline-" class="mathjax-container">\((m\times n)^\top=(n\times m)\)</span>。</p>
<div class="blog_h3"><span class="graybg">Hadamard 乘积（Hadamard Product）</span></div>
<p>Hadamard 乘积（Hadamard Product）是逐元素（Element-wise）相乘：若 <span displaypfx="inline-" class="mathjax-container">\(X,M\)</span> 形状相同，则 <span displaypfx="inline-" class="mathjax-container">\((X\odot M)_{ij}=X_{ij}M_{ij}\)</span>。</p>
<p>典型用途是掩码（Masking）与门控（Gating）。例：令 <span displaypfx="inline-" class="mathjax-container">\(M\in\{0,1\}^{B\times d}\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(X\odot M\)</span> 会把被屏蔽的特征位置直接置零；也可以用 <span displaypfx="inline-" class="mathjax-container">\(M\in[0,1]^{B\times d}\)</span> 做连续缩放。</p>
<div class="blog_h3"><span class="graybg">矩阵分解（Factorization / Decomposition）</span></div>
<p>矩阵分解（Decomposition）把矩阵写成更“易处理”的结构乘积，用于求解、降维与稳定计算。常见形式包括：</p>
<ul>
<li>SVD： <span displaypfx="inline-" class="mathjax-container">\(A=U\Sigma V^\top\)</span>，用于 PCA（Principal Component Analysis）、低秩近似与数值稳健求解。</li>
<li>QR： <span displaypfx="inline-" class="mathjax-container">\(A=QR\)</span>（<span displaypfx="inline-" class="mathjax-container">\(Q\)</span> 正交、<span displaypfx="inline-" class="mathjax-container">\(R\)</span> 上三角），常用于最小二乘与正交化。</li>
<li>Cholesky：对对称正定（SPD）矩阵 <span displaypfx="inline-" class="mathjax-container">\(A\)</span>，有 <span displaypfx="inline-" class="mathjax-container">\(A=LL^\top\)</span>，常用于高斯模型与二次优化中的快速求解。</li>
</ul>
<div class="blog_h3"><span class="graybg">迹（Trace）</span></div>
<p>矩阵的迹（Trace）定义为对角线元素之和：对方阵 <span displaypfx="inline-" class="mathjax-container">\(A\in\mathbb{R}^{n\times n}\)</span>，</p>
<span displaypfx="" class="mathjax-container">\[\mathrm{tr}(A)=\sum_{i=1}^{n} A_{ii}\]</span>
<p>迹在推导里常用的性质是循环不变性（Cyclic Property）：<span displaypfx="inline-" class="mathjax-container">\(\mathrm{tr}(AB)=\mathrm{tr}(BA)\)</span>（形状匹配时）。一个高频等式是 <span displaypfx="inline-" class="mathjax-container">\(\mathrm{tr}(A^\top A)=\|A\|_F^2\)</span>，它把“平方和”写成迹，便于做矩阵微分与正则化推导。</p>
<div class="blog_h3"><span class="graybg">范数（Matrix Norms）</span></div>
<p>范数（Norm）刻画矩阵的“大小”。最常用的是 Frobenius 范数：</p>
<span displaypfx="" class="mathjax-container">\[\|A\|_F=\sqrt{\sum_{i,j}A_{ij}^2}\]</span>
<p>它等价于把矩阵按元素展平后的 <span displaypfx="inline-" class="mathjax-container">\(\ell_2\)</span> 范数，常用于权重衰减（Weight Decay）/L2 正则。另一个常见的是谱范数（Spectral Norm）<span displaypfx="inline-" class="mathjax-container">\(\|A\|_2\)</span>（最大奇异值），用于控制 Lipschitz 常数与训练稳定性（如 spectral normalization）。</p>
<div class="blog_h3"><span class="graybg">外积与秩一更新（Outer Product / Rank-1 Update）</span></div>
<p>外积（Outer Product）把两个向量映射为矩阵：对 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{u}\in\mathbb{R}^{m}\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{v}\in\mathbb{R}^{n}\)</span>，</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{u}\mathbf{v}^\top\in\mathbb{R}^{m\times n}\]</span>
<p>它是一个秩一（Rank-1）矩阵。外积在统计与学习中常用于构造二阶量：例如样本协方差的无偏估计可写成中心化向量的外积平均 <span displaypfx="inline-" class="mathjax-container">\(\Sigma\approx \frac{1}{N}\sum_{k=1}^{N}(\mathbf{x}_k-\bar{\mathbf{x}})(\mathbf{x}_k-\bar{\mathbf{x}})^\top\)</span>。</p>
<p>例：令 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{u}=\begin{bmatrix}1\\ 2\\ 3\end{bmatrix}\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\mathbf{v}=\begin{bmatrix}4\\ 5\end{bmatrix}\)</span>，则</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{u}\mathbf{v}^\top=\begin{bmatrix}4 &amp; 5\\ 8 &amp; 10\\ 12 &amp; 15\end{bmatrix}\]</span>
<p>直观上，外积得到的矩阵每一列都是 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{u}\)</span> 的缩放：第 <span displaypfx="inline-" class="mathjax-container">\(j\)</span> 列等于 <span displaypfx="inline-" class="mathjax-container">\(v_j\mathbf{u}\)</span>。因此所有列共线，矩阵的秩最多为 1（除非 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{u}\)</span> 或 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{v}\)</span> 为零向量）。</p>
<p>把外积视为线性算子更直接：对任意 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\in\mathbb{R}^{n}\)</span>，有 <span displaypfx="inline-" class="mathjax-container">\((\mathbf{u}\mathbf{v}^\top)\mathbf{x}=\mathbf{u}(\mathbf{v}^\top\mathbf{x})\)</span>。这表示先沿 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{v}\)</span> 做一次投影/打分得到标量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{v}^\top\mathbf{x}\)</span>，再沿 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{u}\)</span> 方向输出。例：取 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=\begin{bmatrix}1\\ 1\end{bmatrix}\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{v}^\top\mathbf{x}=9\)</span>，从而 <span displaypfx="inline-" class="mathjax-container">\((\mathbf{u}\mathbf{v}^\top)\mathbf{x}=9\mathbf{u}=\begin{bmatrix}9\\ 18\\ 27\end{bmatrix}\)</span>。</p>
<p>秩一更新（Rank-1 Update）则是把矩阵写成 <span displaypfx="inline-" class="mathjax-container">\(A\leftarrow A+\mathbf{u}\mathbf{v}^\top\)</span>：只引入一个方向上的低秩结构，常用于用较低代价注入统计量/二阶近似，或在保持主结构的前提下做小幅调整。</p>
<div class="blog_h2"><span class="graybg">行列式</span></div>
<p>行列式（Determinant）把一个方阵 <span displaypfx="inline-" class="mathjax-container">\(A\in\mathbb{R}^{n\times n}\)</span> 映射为标量 <span displaypfx="inline-" class="mathjax-container">\(\det(A)\)</span>。几何上，它是线性变换对体积的缩放因子（Volume Scaling Factor）：绝对值表示缩放倍数，符号表示是否翻转取向（Orientation Flip）。</p>
<p>二维情形最直观：若</p>
<span displaypfx="" class="mathjax-container">\[A=\begin{bmatrix}a &amp; b\\ c &amp; d\end{bmatrix}\]</span>
<p>则</p>
<span displaypfx="" class="mathjax-container">\[\det(A)=ad-bc\]</span>
<p>例： <span displaypfx="inline-" class="mathjax-container">\(A=\begin{bmatrix}2 &amp; 1\\ 0 &amp; 3\end{bmatrix}\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(\det(A)=6\)</span>：面积被放大 6 倍。</p>
<p>关键结论：<span style="background-color: #c0c0c0;">方阵可逆（Invertible）当且仅当行列式非零</span>。当 <span displaypfx="inline-" class="mathjax-container">\(\det(A)=0\)</span> 时，变换会把体积压扁到低维（丢失信息），对应列向量线性相关（Linearly Dependent）。</p>
<p>常用性质：</p>
<ul>
<li><span displaypfx="inline-" class="mathjax-container">\(\det(AB)=\det(A)\det(B)\)</span></li>
<li><span displaypfx="inline-" class="mathjax-container">\(\det(A^\top)=\det(A)\)</span></li>
<li><span displaypfx="inline-" class="mathjax-container">\(\det(I)=1\)</span></li>
</ul>
<p>若把特征值（Eigenvalues）记作 <span displaypfx="inline-" class="mathjax-container">\(\{\lambda_i\}_{i=1}^n\)</span>（按代数重数计），则 <span displaypfx="inline-" class="mathjax-container">\(\det(A)=\prod_i \lambda_i\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\mathrm{tr}(A)=\sum_i \lambda_i\)</span>。</p>
<div class="blog_h2"><span class="graybg">矩阵的秩</span></div>
<p>矩阵的秩（Rank）刻画“列（或行）里最多有多少个线性无关（Linearly Independent）的方向”。对 <span displaypfx="inline-" class="mathjax-container">\(A\in\mathbb{R}^{m\times n}\)</span>，秩定义为列空间（Column Space）的维数：</p>
<span displaypfx="" class="mathjax-container">\[\mathrm{rank}(A)=\dim(\mathrm{col}(A))\]</span>
<p>这一定义的直接含义是：若 <span displaypfx="inline-" class="mathjax-container">\(\mathrm{rank}(A)=r\)</span>，那么 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 的所有列向量都只能张成一个 <span displaypfx="inline-" class="mathjax-container">\(r\)</span> 维子空间，超出这个子空间的方向它完全无法表达。反过来，若某一列可以由其他列线性组合得到，它就不提供新的维度，因此不会增加秩。</p>
<p>它也等于行空间（Row Space）的维数（行秩=列秩）。把 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 看作线性映射 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{R}^n\to\mathbb{R}^m\)</span>，秩就是输出子空间的维度：最多能输出多少个自由方向。</p>
<p>满秩（Full Rank）通常指 <span displaypfx="inline-" class="mathjax-container">\(\mathrm{rank}(A)=\min(m,n)\)</span>。对方阵 <span displaypfx="inline-" class="mathjax-container">\(n\times n\)</span> 而言，满秩等价于可逆（也等价于 <span displaypfx="inline-" class="mathjax-container">\(\det(A)\ne 0\)</span>）。</p>
<p>线性方程组（Linear System）<span displaypfx="inline-" class="mathjax-container">\(A\mathbf{x}=\mathbf{b}\)</span> 的解与秩直接相关：设增广矩阵为 <span displaypfx="inline-" class="mathjax-container">\(\left[A\,\middle|\,\mathbf{b}\right]\)</span>，则</p>
<ul>
<li>若 <span displaypfx="inline-" class="mathjax-container">\(\mathrm{rank}(A)\ne \mathrm{rank}\!\left(\left[A\,\middle|\,\mathbf{b}\right]\right)\)</span>，无解。</li>
<li>若 <span displaypfx="inline-" class="mathjax-container">\(\mathrm{rank}(A)=\mathrm{rank}\!\left(\left[A\,\middle|\,\mathbf{b}\right]\right)=n\)</span>（未知数个数），唯一解。</li>
<li>若 <span displaypfx="inline-" class="mathjax-container">\(\mathrm{rank}(A)=\mathrm{rank}\!\left(\left[A\,\middle|\,\mathbf{b}\right]\right)&lt;n\)</span>，无穷多解（存在自由变量）。</li>
</ul>
<p>与 SVD 的关系非常实用：<span style="background-color: #c0c0c0;">秩等于非零奇异值（Singular Values）的个数</span>，因此在数值计算里常用“奇异值是否接近 0”判断有效秩（Numerical Rank）。</p>
<div class="blog_h2"><span class="graybg">二次型（Quadratic Form）</span></div>
<p>在高中里，一元二次函数常写成 <span displaypfx="inline-" class="mathjax-container">\(ax^2+bx+c\)</span>。把“二次”推广到多元，并且只保留二次项（没有一次项与常数项），就得到二次型（Quadratic Form）。二维里最常见的形式是：</p>
<span displaypfx="" class="mathjax-container">\[q(x,y)=ax^2+bxy+cy^2\]</span>
<p>其中 <span displaypfx="inline-" class="mathjax-container">\(bxy\)</span> 是交叉项（Cross Term）：它把不同变量“耦合在一起”。在解析几何（Analytic Geometry）里，交叉项常对应二次曲线（Conic Section）的主轴（Principal Axes）不与坐标轴对齐（图形呈旋转/倾斜）。</p>
<p>若再把一次项与常数项加回来，就得到更一般的二次多项式（Quadratic Polynomial）<span displaypfx="inline-" class="mathjax-container">\(ax^2+bxy+cy^2+dx+ey+f\)</span>。这时：交叉项 <span displaypfx="inline-" class="mathjax-container">\(bxy\)</span> 主要反映主轴旋转；一次项 <span displaypfx="inline-" class="mathjax-container">\(dx+ey\)</span> 往往表示图形的中心/顶点从原点平移出去；常数项 <span displaypfx="inline-" class="mathjax-container">\(f\)</span> 则改变整体基准值，进而影响图形的截距、大小以及是否与 <span displaypfx="inline-" class="mathjax-container">\(q(x,y)=0\)</span> 相交。只有把一次项和常数项都去掉时，我们讨论的才是纯粹的二次型。</p>
<p>下面两幅图都基于<span style="background-color: #c0c0c0;">等值线（Level Set）</span>生成：先固定常数 <span displaypfx="inline-" class="mathjax-container">\(k\)</span>，在平面上求解 <span displaypfx="inline-" class="mathjax-container">\(q(x,y)=k\)</span> 得到等值线，再把不同 <span displaypfx="inline-" class="mathjax-container">\(k\)</span> 的结果叠加，并与 <span displaypfx="inline-" class="mathjax-container">\(z=q(x,y)\)</span> 的三维曲面对应显示。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/quadratic-forms.png"><img class="alignnone size-full wp-image-40671" src="https://blog.gmem.cc/wp-content/uploads/2026/03/quadratic-forms.png" alt="quadratic-forms" width="100%" /></a></p>
<p>第一幅展示无交叉项（<span displaypfx="inline-" class="mathjax-container">\(b=0\)</span>）的典型形态：等值线与坐标轴对齐，曲面主轴方向也与坐标轴一致。</p>
<p>&nbsp;</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/quadratic-forms-cross.png"><img class="alignnone size-full wp-image-40677" src="https://blog.gmem.cc/wp-content/uploads/2026/03/quadratic-forms-cross.png" alt="quadratic-forms-cross" width="100%" /></a></p>
<p>第二幅展示含交叉项（<span displaypfx="inline-" class="mathjax-container">\(b\ne 0\)</span>）的情形：等值线整体发生旋转/倾斜，三维曲面看起来更“不规则”。</p>
<p>在线性代数里，用矩阵（Matrix）把系数组织起来更方便。令 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(x_1,\ldots,x_n)^\top\)</span>、<span displaypfx="inline-" class="mathjax-container">\(A\in\mathbb{R}^{n\times n}\)</span>，则</p>
<span displaypfx="" class="mathjax-container">\[q(\mathbf{x})=\mathbf{x}^\top A\mathbf{x}=\sum_{i=1}^{n}\sum_{j=1}^{n}A_{ij}x_i x_j\]</span>
<p>上面这条等式不是“记号游戏”，而是把矩阵乘法按分量（Component）展开后的结果。把它分两步看最清楚：</p>
<ol>
<li>先做一次矩阵-向量乘法：令 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{y}=A\mathbf{x}\)</span>，则第 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 个分量是</li>
</ol>
<span displaypfx="" class="mathjax-container">\[y_i=(A\mathbf{x})_i=\sum_{j=1}^{n}A_{ij}x_j\]</span>
<ol start="2">
<li>再做一次点积： <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}^\top\mathbf{y}=\sum_{i=1}^{n}x_i y_i\)</span>。把第 1 步的 <span displaypfx="inline-" class="mathjax-container">\(y_i\)</span> 代入，就得到</li>
</ol>
<span displaypfx="" class="mathjax-container">\[\mathbf{x}^\top A\mathbf{x}=\mathbf{x}^\top(A\mathbf{x})=\sum_{i=1}^{n}x_i\left(\sum_{j=1}^{n}A_{ij}x_j\right)=\sum_{i=1}^{n}\sum_{j=1}^{n}A_{ij}x_i x_j\]</span>
<p>这就是“双重求和（Double Summation）”的含义：每一个矩阵元素 <span displaypfx="inline-" class="mathjax-container">\(A_{ij}\)</span> 都在给二次项 <span displaypfx="inline-" class="mathjax-container">\(x_i x_j\)</span> 分配一个权重；当 <span displaypfx="inline-" class="mathjax-container">\(i=j\)</span> 时就是平方项 <span displaypfx="inline-" class="mathjax-container">\(x_i^2\)</span>，当 <span displaypfx="inline-" class="mathjax-container">\(i\ne j\)</span> 时就是交叉项 <span displaypfx="inline-" class="mathjax-container">\(x_i x_j\)</span>。</p>
<p>二维情形最直观：若希望展开后得到 <span displaypfx="inline-" class="mathjax-container">\(ax^2+bxy+cy^2\)</span>，可以取</p>
<span displaypfx="" class="mathjax-container">\[A=\begin{bmatrix}a &amp; \frac{b}{2}\\ \frac{b}{2} &amp; c\end{bmatrix}\]</span>
<p>这里把向量写成 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(x,y)^\top\)</span>，按矩阵乘法展开一遍：</p>
<span displaypfx="" class="mathjax-container">\[A\mathbf{x}=\begin{bmatrix}a &amp; \frac{b}{2}\\ \frac{b}{2} &amp; c\end{bmatrix}\begin{bmatrix}x\\ y\end{bmatrix}=\begin{bmatrix}ax+\frac{b}{2}y\\ \frac{b}{2}x+cy\end{bmatrix}\]</span>
<span displaypfx="" class="mathjax-container">\[\mathbf{x}^\top(A\mathbf{x})=\begin{bmatrix}x &amp; y\end{bmatrix}\begin{bmatrix}ax+\frac{b}{2}y\\ \frac{b}{2}x+cy\end{bmatrix}=ax^2+\frac{b}{2}xy+\frac{b}{2}yx+cy^2=ax^2+bxy+cy^2\]</span>
<p>可以看到：交叉项 <span displaypfx="inline-" class="mathjax-container">\(xy\)</span> 的系数 <span displaypfx="inline-" class="mathjax-container">\(b\)</span> 实际来自两处对称位置 <span displaypfx="inline-" class="mathjax-container">\(A_{12}\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(A_{21}\)</span> 的“合力”（各贡献一半）。这也会自然导向下一节的结论：二次型只依赖矩阵的对称部分。</p>
<p>例：取 <span displaypfx="inline-" class="mathjax-container">\(q(x,y)=5x^2-4xy+5y^2\)</span>，对应 <span displaypfx="inline-" class="mathjax-container">\(A=\begin{bmatrix}5 &amp; -2\\ -2 &amp; 5\end{bmatrix}\)</span>。这一类表达式不仅在几何里出现（椭圆（Ellipse）/双曲线（Hyperbola）），在优化与统计里也高频出现（曲率（Curvature）、距离度量（Distance Metric））。</p>
<div class="blog_h3"><span class="graybg">对称化（Symmetrization）</span></div>
<p>对任意方阵 <span displaypfx="inline-" class="mathjax-container">\(A\)</span>，二次型只依赖其对称部分：</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{x}^\top A\mathbf{x}=\mathbf{x}^\top\left(\frac{A+A^\top}{2}\right)\mathbf{x}\]</span>
<p>这句话的意思是：无论 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 的非对称部分长什么样，只要 <span displaypfx="inline-" class="mathjax-container">\(\frac{A+A^\top}{2}\)</span> 不变，二次型 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}^\top A\mathbf{x}\)</span> 对所有 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 的取值就完全不变。</p>
<p>把 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 拆开看更直观。定义对称部分（Symmetric Part）与反对称部分（Skew-symmetric Part）：</p>
<ul>
<li><span displaypfx="inline-" class="mathjax-container">\(S=\frac{A+A^\top}{2}\)</span>，满足 <span displaypfx="inline-" class="mathjax-container">\(S=S^\top\)</span>。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(K=\frac{A-A^\top}{2}\)</span>，满足 <span displaypfx="inline-" class="mathjax-container">\(K^\top=-K\)</span>。</li>
</ul>
<p>这里“对称部分（Symmetric Part）”是一个<span style="background-color: #c0c0c0;">定义</span>：对任意方阵 <span displaypfx="inline-" class="mathjax-container">\(A\)</span>，把 <span displaypfx="inline-" class="mathjax-container">\(S=\frac{A+A^\top}{2}\)</span> 定义为它的对称部分。它与 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> <span style="background-color: #c0c0c0;">同型（同大小）</span>，并且一定是对称矩阵；它不是 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 的某个“子矩阵”。</p>
<p>按元素（Entry-wise）写得更直观：对任意 <span displaypfx="inline-" class="mathjax-container">\(i,j\)</span>，</p>
<span displaypfx="" class="mathjax-container">\[S_{ij}=\frac{A_{ij}+A_{ji}}{2},\quad K_{ij}=\frac{A_{ij}-A_{ji}}{2}\]</span>
<p>也就是说：对称部分就是把每一对对称位置 <span displaypfx="inline-" class="mathjax-container">\((i,j)\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\((j,i)\)</span> 的元素取平均；反对称部分则记录它们的“差的一半”。因此 <span displaypfx="inline-" class="mathjax-container">\(A=S+K\)</span> 是把任意矩阵分解成“对称 + 反对称”的标准方式，并且这个分解是唯一的（Unique）。</p>
<p>为什么“取 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(A^\top\)</span> 的平均值”就得到对称部分？因为转置（Transpose）会把非对角元素成对交换： <span displaypfx="inline-" class="mathjax-container">\(A_{ij}\leftrightarrow A_{ji}\)</span>。把它们相加后，非对称性（即 <span displaypfx="inline-" class="mathjax-container">\(A_{ij}-A_{ji}\)</span>）会被抵消，只留下“对称的那一半”（即 <span displaypfx="inline-" class="mathjax-container">\(A_{ij}+A_{ji}\)</span>）。再除以 2，是为了把“加了两份”的量恢复到原始尺度：如果 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 本来就对称（<span displaypfx="inline-" class="mathjax-container">\(A=A^\top\)</span>），那么 <span displaypfx="inline-" class="mathjax-container">\(\frac{A+A^\top}{2}=A\)</span>，不会把矩阵放大一倍。</p>
<p>于是 <span displaypfx="inline-" class="mathjax-container">\(A=S+K\)</span>，并且</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{x}^\top A\mathbf{x}=\mathbf{x}^\top S\mathbf{x}+\mathbf{x}^\top K\mathbf{x}\]</span>
<p>关键点在于：对任意 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span>，都有 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}^\top K\mathbf{x}=0\)</span>。理由很短：它是一个标量，等于它自己的转置，而</p>
<span displaypfx="" class="mathjax-container">\[(\mathbf{x}^\top K\mathbf{x})^\top=\mathbf{x}^\top K^\top \mathbf{x}=\mathbf{x}^\top(-K)\mathbf{x}=-(\mathbf{x}^\top K\mathbf{x})\]</span>
<p>一个数如果等于它的相反数，只能是 0。于是 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}^\top A\mathbf{x}=\mathbf{x}^\top S\mathbf{x}\)</span>，二次型确实只由对称部分决定。</p>
<p>二维展开能直接看到“只依赖对称部分”的具体含义。令 <span displaypfx="inline-" class="mathjax-container">\(A=\begin{bmatrix}a &amp; b\\ c &amp; d\end{bmatrix}\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(x_1,x_2)^\top\)</span>，则</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{x}^\top A\mathbf{x}=ax_1^2+(b+c)x_1x_2+dx_2^2\]</span>
<p>交叉项系数只出现 <span displaypfx="inline-" class="mathjax-container">\(b+c\)</span>（也就是 <span displaypfx="inline-" class="mathjax-container">\(A_{12}+A_{21}\)</span>），而差值 <span displaypfx="inline-" class="mathjax-container">\(b-c\)</span>（反对称部分）完全不会出现。</p>
<div class="blog_h4"><span class="graybg">例：两个不同矩阵，二次型完全一样</span></div>
<p>下面给一个“看得见”的数值例子。取</p>
<span displaypfx="" class="mathjax-container">\[A=\begin{bmatrix}2 &amp; 4\\ -2 &amp; 4\end{bmatrix}\]</span>
<p>它显然不是对称矩阵（因为 <span displaypfx="inline-" class="mathjax-container">\(A_{12}=4\ne -2=A_{21}\)</span>）。计算它的对称部分：</p>
<span displaypfx="" class="mathjax-container">\[\frac{A+A^\top}{2}=\frac{1}{2}\left(\begin{bmatrix}2 &amp; 4\\ -2 &amp; 4\end{bmatrix}+\begin{bmatrix}2 &amp; -2\\ 4 &amp; 4\end{bmatrix}\right)=\begin{bmatrix}2 &amp; 1\\ 1 &amp; 4\end{bmatrix}=S\]</span>
<p>现在比较二次型。对任意 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(x,y)^\top\)</span>：</p>
<span displaypfx="" class="mathjax-container">\[A\mathbf{x}=\begin{bmatrix}2x+4y\\ -2x+4y\end{bmatrix}\Rightarrow \mathbf{x}^\top A\mathbf{x}=x(2x+4y)+y(-2x+4y)=2x^2+2xy+4y^2\]</span>
<span displaypfx="" class="mathjax-container">\[S\mathbf{x}=\begin{bmatrix}2x+y\\ x+4y\end{bmatrix}\Rightarrow \mathbf{x}^\top S\mathbf{x}=x(2x+y)+y(x+4y)=2x^2+2xy+4y^2\]</span>
<p>两者对所有 <span displaypfx="inline-" class="mathjax-container">\((x,y)\)</span> 都完全相同；例如取 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(1,2)^\top\)</span>，都有 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}^\top A\mathbf{x}=\mathbf{x}^\top S\mathbf{x}=22\)</span>。这就直观解释了“二次型只依赖对称部分”的含义：反对称的那一半怎么改，都不会改变 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}^\top A\mathbf{x}\)</span> 的值。</p>
<p>因此讨论二次型时通常可假设 <span displaypfx="inline-" class="mathjax-container">\(A=A^\top\)</span>。这也解释了为什么二次型与对称矩阵/半正定性（Positive Semi-Definite, PSD）紧密绑定。</p>
<div class="blog_h3"><span class="graybg">二次型的标准型（Standard Form）</span></div>
<div class="blog_h4"><span class="graybg">标准型与对角标准型是什么</span></div>
<p>二次型 <span displaypfx="inline-" class="mathjax-container">\(q(\mathbf{x})=\mathbf{x}^\top A\mathbf{x}\)</span> 本身是一个几何对象；它在不同坐标系（Coordinate System）/基（Basis）下的<span style="background-color: #c0c0c0;">矩阵表示</span>会不同：同一个几何对象，用不同坐标轴/基表示时，系数矩阵 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 的元素会改变。</p>
<p>这里的标准型指的是：在一类允许的坐标变换（可逆线性变量替换（Invertible Linear Change of Variables））下，把同一个二次型写成某种<span style="background-color: #c0c0c0;">约定的简化代表</span>。不同教材的约定略有差异，但最常用的目标是：把交叉项（Cross Term）消掉，露出每个坐标轴方向上的“纯平方项”。</p>
<p>把 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=T\mathbf{y}\)</span> 理解成换基（Change of Basis）会更不容易出错： <span displaypfx="inline-" class="mathjax-container">\(\mathbf{y}\)</span> 是同一几何向量在新基下的坐标，矩阵 <span displaypfx="inline-" class="mathjax-container">\(T\)</span> 由新基向量在旧基下的坐标组成。因为 <span displaypfx="inline-" class="mathjax-container">\(T\)</span> 可逆，两套坐标是一一对应的，可以互相换回：</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{y}=T^{-1}\mathbf{x},\quad \mathbf{x}=T\mathbf{y}\]</span>
<p>把 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=T\mathbf{y}\)</span> 代入可得</p>
<span displaypfx="" class="mathjax-container">\[q(\mathbf{x})=\mathbf{x}^\top A\mathbf{x}=\mathbf{y}^\top(T^\top A T)\mathbf{y}\]</span>
<p>这里要求 <span displaypfx="inline-" class="mathjax-container">\(T\)</span> 可逆（Invertible），意味着这个变量代换不会把空间压缩到低维（不会丢维度）。因此在新坐标 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{y}\)</span> 下，二次型对应的系数矩阵变为 <span displaypfx="inline-" class="mathjax-container">\(T^\top A T\)</span>（这叫合同变换（Congruence Transformation））。可以把 <span displaypfx="inline-" class="mathjax-container">\(T\)</span> 理解为“旋转/缩放后的新坐标轴”在旧坐标里的表示：同一个二次型在新坐标系里的系数就由 <span displaypfx="inline-" class="mathjax-container">\(T^\top A T\)</span> 给出。标准型的目标就是选取合适的 <span displaypfx="inline-" class="mathjax-container">\(T\)</span>，把 <span displaypfx="inline-" class="mathjax-container">\(T^\top A T\)</span> 化到更简单的结构。</p>
<p>对角标准型（Diagonal Form）指把二次型写成“只有平方项、没有交叉项”的形式（也常称对角规范形（Diagonal Canonical Form））：</p>
<span displaypfx="" class="mathjax-container">\[q(\mathbf{x})=\sum_{i=1}^{n}\lambda_i y_i^2\]</span>
<p>其中 <span displaypfx="inline-" class="mathjax-container">\(\lambda_i\)</span> 是系数，<span displaypfx="inline-" class="mathjax-container">\(\mathbf{y}\)</span> 是新坐标。对角标准型等价于：在新坐标系下，二次型对应的矩阵是对角矩阵（Diagonal Matrix）；“交叉项” <span displaypfx="inline-" class="mathjax-container">\(y_i y_j\)</span>（<span displaypfx="inline-" class="mathjax-container">\(i\ne j\)</span>）消失。</p>
<p>结论需要明确：标准型与原来的二次型描述的是<span style="background-color: #c0c0c0;">同一个二次型/同一组几何等值集合</span>，只是坐标系不同。给定可逆变换 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=T\mathbf{y}\)</span>，任何关于 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 的几何描述都可以无损地翻译成关于 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{y}\)</span> 的描述，并且可以随时“还原”回去。矩阵层面也一样：若 <span displaypfx="inline-" class="mathjax-container">\(A' = T^\top A T\)</span> 是标准型里的系数矩阵，则 <span displaypfx="inline-" class="mathjax-container">\(A=(T^{-1})^\top A' T^{-1}\)</span> 可把它变回原坐标下的表示。</p>
<p>接下来真正关心的是：<span style="background-color: #c0c0c0;">如何选 <span displaypfx="inline-" class="mathjax-container">\(T\)</span> 才能把交叉项消掉</span>。对二次型而言，一个关键简化是：二次型只依赖矩阵的对称部分，因此总可以先把 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 对称化为 <span displaypfx="inline-" class="mathjax-container">\(\frac{A+A^\top}{2}\)</span> 而不改变 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}^\top A\mathbf{x}\)</span> 的值。于是“消交叉项”的核心问题就变成：对实对称矩阵，能否通过一次正交变基（Orthogonal Change of Basis）把它对角化（Diagonalize）。</p>
<div class="blog_h4"><span class="graybg">怎么来的：换到特征向量基消掉交叉项</span></div>
<p>对实对称矩阵，对角化与“消掉交叉项”来自同一个结构事实：它总可以通过一次正交变基（Orthogonal Change of Basis）写成对角形式。数学依据就是谱定理（Spectral Theorem，也常表述为“实对称矩阵可正交对角化（Orthogonal Diagonalization）”）。若 <span displaypfx="inline-" class="mathjax-container">\(A\in\mathbb{R}^{n\times n}\)</span> 是实对称矩阵（Real Symmetric Matrix, <span displaypfx="inline-" class="mathjax-container">\(A=A^\top\)</span>），则存在正交矩阵（Orthogonal Matrix）<span displaypfx="inline-" class="mathjax-container">\(Q\)</span> 与实对角矩阵（Real Diagonal Matrix）<span displaypfx="inline-" class="mathjax-container">\(\Lambda\)</span> 使得</p>
<span displaypfx="" class="mathjax-container">\[A=Q\Lambda Q^\top,\quad \text{等价于}\quad Q^\top A Q=\Lambda\]</span>
<p>其中 <span displaypfx="inline-" class="mathjax-container">\(Q=[\mathbf{v}_1,\ldots,\mathbf{v}_n]\)</span> 的列向量是一组单位特征向量（Orthonormal Eigenvectors），<span displaypfx="inline-" class="mathjax-container">\(\Lambda=\mathrm{diag}(\lambda_1,\ldots,\lambda_n)\)</span> 的对角元素是对应特征值（Eigenvalues）。该定理同时包含两个常用事实：特征值都是实数；并且可以选出一组两两正交的特征向量作为基。</p>
<p>这就是你熟悉的特征值分解（Eigendecomposition / Eigenvalue Decomposition）的对称矩阵特例。</p>
<p>一般情况下，如果矩阵可对角化（Diagonalizable），可以写成 <span displaypfx="inline-" class="mathjax-container">\(A=V\Lambda V^{-1}\)</span>（或 <span displaypfx="inline-" class="mathjax-container">\(V^{-1}AV=\Lambda\)</span>），其中 <span displaypfx="inline-" class="mathjax-container">\(V\)</span> 的列是特征向量；但 <span displaypfx="inline-" class="mathjax-container">\(V\)</span> 不一定正交（Orthogonal），甚至矩阵可能不可对角化（Non-diagonalizable）。</p>
<p>对称矩阵的额外好处是：可以把 <span displaypfx="inline-" class="mathjax-container">\(V\)</span> 选成正交矩阵 <span displaypfx="inline-" class="mathjax-container">\(Q\)</span>，因此 <span displaypfx="inline-" class="mathjax-container">\(V^{-1}=Q^{-1}=Q^\top\)</span>，分解变成数值上更稳定、几何上更直观的 <span displaypfx="inline-" class="mathjax-container">\(A=Q\Lambda Q^\top\)</span>。</p>
<p>两个最小例子能把“<span displaypfx="inline-" class="mathjax-container">\(V\)</span> 不一定正交 / 甚至不可对角化”说得更具体：</p>
<ul>
<li>
<p><span style="background-color: #c0c0c0;">例 1：可对角化，但 <span displaypfx="inline-" class="mathjax-container">\(V\)</span> 不正交</span>。取</p>
<span displaypfx="" class="mathjax-container">\[A_1=\begin{bmatrix}2 &amp; 1\\ 0 &amp; 1\end{bmatrix}\]</span>
<p>它的特征值是 <span displaypfx="inline-" class="mathjax-container">\(\lambda_1=2,\lambda_2=1\)</span>（两个不同特征值意味着在二维里一定能找到两条线性无关的特征向量，因此可对角化）。对应一组特征向量可以取</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{v}_1=\begin{bmatrix}1\\ 0\end{bmatrix},\quad \mathbf{v}_2=\begin{bmatrix}1\\ -1\end{bmatrix}\]</span>
<p>它们并不正交，因为 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{v}_1^\top\mathbf{v}_2=1\ne 0\)</span>。把它们按列组成矩阵 <span displaypfx="inline-" class="mathjax-container">\(V=[\mathbf{v}_1\ \mathbf{v}_2]\)</span>，则</p>
<span displaypfx="" class="mathjax-container">\[V=\begin{bmatrix}1 &amp; 1\\ 0 &amp; -1\end{bmatrix},\quad \Lambda=\begin{bmatrix}2 &amp; 0\\ 0 &amp; 1\end{bmatrix},\quad V^{-1}=\begin{bmatrix}1 &amp; 1\\ 0 &amp; -1\end{bmatrix}\]</span>
<p>注意：这个例子里 <span displaypfx="inline-" class="mathjax-container">\(V^{-1}\)</span> 恰好等于 <span displaypfx="inline-" class="mathjax-container">\(V\)</span>（只是代数上的巧合），但它仍然不是正交矩阵，因为正交要求 <span displaypfx="inline-" class="mathjax-container">\(V^{-1}=V^\top\)</span>，而这里并不成立。</p>
<p>并且确实有 <span displaypfx="inline-" class="mathjax-container">\(A_1=V\Lambda V^{-1}\)</span>。这个例子说明：一般矩阵即使可对角化，特征向量也未必能选成“互相垂直的方向”。</p>
</li>
<li>
<p><span style="background-color: #c0c0c0;">例 2：不可对角化（特征值重复，但特征向量不够）</span>。取</p>
<span displaypfx="" class="mathjax-container">\[A_2=\begin{bmatrix}1 &amp; 1\\ 0 &amp; 1\end{bmatrix}\]</span>
<p>它的特征值只有 <span displaypfx="inline-" class="mathjax-container">\(\lambda=1\)</span>（在二维里重复出现）。求特征向量需要解 <span displaypfx="inline-" class="mathjax-container">\((A_2-I)\mathbf{v}=\mathbf{0}\)</span>：</p>
<span displaypfx="" class="mathjax-container">\[A_2-I=\begin{bmatrix}0 &amp; 1\\ 0 &amp; 0\end{bmatrix}\Rightarrow (A_2-I)\begin{bmatrix}x\\ y\end{bmatrix}=\begin{bmatrix}y\\ 0\end{bmatrix}=\begin{bmatrix}0\\ 0\end{bmatrix}\Rightarrow y=0\]</span>
<p>因此所有特征向量都形如 <span displaypfx="inline-" class="mathjax-container">\((x,0)^\top\)</span>，只有 1 个线性无关方向。要写成 <span displaypfx="inline-" class="mathjax-container">\(A_2=V\Lambda V^{-1}\)</span>，矩阵 <span displaypfx="inline-" class="mathjax-container">\(V\)</span> 必须可逆（Invertible），这要求有足够多（在二维里是 2 个）线性无关特征向量作为列；该矩阵做不到，所以它不可对角化。</p>
</li>
</ul>
<p>把这个定理放回二次型就能立刻看出“交叉项为什么会消失”。令坐标变换 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{y}=Q^\top\mathbf{x}\)</span>（把 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 在特征向量基下的坐标记作 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{y}\)</span>），则</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{x}^\top A\mathbf{x}=\mathbf{x}^\top(Q\Lambda Q^\top)\mathbf{x}=\mathbf{y}^\top\Lambda\mathbf{y}=\sum_{i=1}^{n}\lambda_i y_i^2\]</span>
<p>注意这里同时出现了两种“换坐标”的写法：线性变换里常写 <span displaypfx="inline-" class="mathjax-container">\(Q^{-1}AQ\)</span>（相似变换（Similarity Transformation）），二次型里写 <span displaypfx="inline-" class="mathjax-container">\(Q^\top A Q\)</span>（合同变换（Congruence Transformation））。对正交矩阵而言 <span displaypfx="inline-" class="mathjax-container">\(Q^{-1}=Q^\top\)</span>，所以它们在这里完全一致：同一个正交变换既给出特征值分解，也把二次型化到没有交叉项的对角标准型。</p>
<p>因此：在对称矩阵的情形，“换到特征向量基”与“把二次型旋转到主轴”是同一件事，只是用不同语言描述。</p>
<p>直观上，特征向量（Eigenvector）给出“主轴方向”（把坐标轴转到这些方向后，交叉项会消失），特征值（Eigenvalue）则是标准型里各平方项前的系数。</p>
<p>详细例子：取</p>
<span displaypfx="" class="mathjax-container">\[A=\begin{bmatrix}5 &amp; -2\\ -2 &amp; 5\end{bmatrix}\]</span>
<p>它是对称矩阵，因此可正交对角化。其特征值与一组单位特征向量可以取为：</p>
<span displaypfx="" class="mathjax-container">\[\lambda_1=3,\ \mathbf{v}_1=\frac{1}{\sqrt{2}}\begin{bmatrix}1\\ 1\end{bmatrix};\quad \lambda_2=7,\ \mathbf{v}_2=\frac{1}{\sqrt{2}}\begin{bmatrix}1\\ -1\end{bmatrix}\]</span>
<p>把它们组成正交矩阵与对角矩阵：</p>
<span displaypfx="" class="mathjax-container">\[Q=[\mathbf{v}_1\ \mathbf{v}_2]=\frac{1}{\sqrt{2}}\begin{bmatrix}1 &amp; 1\\ 1 &amp; -1\end{bmatrix},\quad \Lambda=\begin{bmatrix}3 &amp; 0\\ 0 &amp; 7\end{bmatrix}\]</span>
<p>则 <span displaypfx="inline-" class="mathjax-container">\(A=Q\Lambda Q^\top\)</span>。这里 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{y}\)</span> 不是任意新变量，而是 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 在特征向量基 <span displaypfx="inline-" class="mathjax-container">\(\{\mathbf{v}_1,\mathbf{v}_2\}\)</span> 下的坐标： <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=y_1\mathbf{v}_1+y_2\mathbf{v}_2=Q\mathbf{y}\)</span>。</p>
<p>由于 <span displaypfx="inline-" class="mathjax-container">\(Q\)</span> 是正交矩阵（<span displaypfx="inline-" class="mathjax-container">\(Q^\top Q=I\)</span>），左乘 <span displaypfx="inline-" class="mathjax-container">\(Q^\top\)</span> 可得 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{y}=Q^\top\mathbf{x}\)</span>。这一步就是换基（Change of Basis）：把向量从标准坐标系表达改写为主轴坐标系表达。</p>
<p>因此可显式写出两组坐标关系：</p>
<span displaypfx="" class="mathjax-container">\[y_1=\frac{x_1+x_2}{\sqrt{2}},\quad y_2=\frac{x_1-x_2}{\sqrt{2}}\]</span>
<span displaypfx="" class="mathjax-container">\[x_1=\frac{y_1+y_2}{\sqrt{2}},\quad x_2=\frac{y_1-y_2}{\sqrt{2}}\]</span>
<p>代入标准型：</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{x}^\top A\mathbf{x}=\mathbf{y}^\top\Lambda\mathbf{y}=3y_1^2+7y_2^2\]</span>
<p>把 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{y}\)</span> 用 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 展开，可直接验证“交叉项被旋转消掉”：</p>
<span displaypfx="" class="mathjax-container">\[3y_1^2+7y_2^2=\frac{3}{2}(x_1+x_2)^2+\frac{7}{2}(x_1-x_2)^2=5x_1^2-4x_1x_2+5x_2^2\]</span>
<p>数值校验：取 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(1,2)^\top\)</span>，原式为 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}^\top A\mathbf{x}=17\)</span>；而 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{y}=Q^\top\mathbf{x}=\left(\frac{3}{\sqrt{2}},-\frac{1}{\sqrt{2}}\right)^\top\)</span>，代入 <span displaypfx="inline-" class="mathjax-container">\(3y_1^2+7y_2^2\)</span> 同样得到 17。</p>
<p>几何解释：正交矩阵 <span displaypfx="inline-" class="mathjax-container">\(Q\)</span> 表示旋转/换基，把坐标轴对齐到“主轴方向”（特征向量）；对角矩阵 <span displaypfx="inline-" class="mathjax-container">\(\Lambda\)</span> 表示沿主轴的逐轴缩放（由特征值控制）。因此等值线在 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{y}\)</span> 坐标系里与轴对齐，形状由 <span displaypfx="inline-" class="mathjax-container">\(\lambda_i\)</span> 决定。</p>
<p>若 <span displaypfx="inline-" class="mathjax-container">\(\Lambda\)</span> 中既有正特征值也有负特征值，则二次型是不定的（Indefinite）：沿某些方向 <span displaypfx="inline-" class="mathjax-container">\(q\)</span> 增大，沿另一些方向 <span displaypfx="inline-" class="mathjax-container">\(q\)</span> 减小。二维里它的等值线（Level Set）典型呈双曲线（Hyperbola）形状，优化里对应鞍点（Saddle Point）结构。例：令 <span displaypfx="inline-" class="mathjax-container">\(A=\begin{bmatrix}1 &amp; 2\\ 2 &amp; 1\end{bmatrix}\)</span>，其特征值为 3 与 -1，在某个正交坐标 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{y}\)</span> 下有 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}^\top A\mathbf{x}=3y_1^2-y_2^2\)</span>，可取正也可取负。</p>
<p>进一步允许一般可逆线性变换（不要求是旋转）时，可把对角项缩放为 <span displaypfx="inline-" class="mathjax-container">\(+1,-1,0\)</span>（Sylvester 惯性定理（Law of Inertia））：二次型被分解为若干正平方项、负平方项与零方向，其中正/负/零项的个数在合同变换下保持不变（换言之，“正方向有几个、负方向有几个、平坦方向有几个”是坐标变换改不掉的性质）；正/负项的个数也称为签名（Signature）。在优化里，它们分别对应局部最小、鞍点与平坦方向。</p>
<div class="blog_h3"><span class="graybg">二次型与机器学习（Quadratic Form in Machine Learning）</span></div>
<p>下面这些场景看起来不同，但核心都在计算“某个方向上的能量/代价”：给一个向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{v}\)</span>，二次型 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{v}^\top A\mathbf{v}\)</span> 会告诉你它在矩阵 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 定义的几何里有多大、代价有多高。</p>
<ul>
<li>平方范数（Squared <span displaypfx="inline-" class="mathjax-container">\(L_2\)</span> Norm）：<span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{x}\|_2^2=\mathbf{x}^\top I\mathbf{x}\)</span>。直白地说，它就是“向量长度的平方”，在训练里常作为最基础的“大小惩罚”。例如权重衰减（Weight Decay）把过大的参数拉回去，本质是在最小化 <span displaypfx="inline-" class="mathjax-container">\(\|\theta\|_2^2\)</span> 这种二次型。</li>
<li>最小二乘与二次损失（Least Squares / MSE）：线性回归目标 <span displaypfx="inline-" class="mathjax-container">\(\|X\mathbf{w}-\mathbf{y}\|_2^2\)</span> 展开后是关于 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w}\)</span> 的二次型。通俗理解：模型每偏一点，代价按“平方”增长，所以大误差会被更重惩罚。它的闭式解来自正规方程（Normal Equations）<span displaypfx="inline-" class="mathjax-container">\(X^\top X\mathbf{w}=X^\top\mathbf{y}\)</span>。</li>
<li>PCA（Principal Component Analysis）：对中心化（Centering）数据，方向 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{u}\)</span> 上的方差是 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{u}^\top\Sigma\mathbf{u}\)</span>。这句话的直觉是：“把数据投影到某个方向后，能展开多宽”。PCA 就是在所有单位方向里找让这个二次型最大的方向（主成分），因此主成分就是“信息最密集”的方向。</li>
<li>马氏距离（Mahalanobis Distance）与高斯负对数似然（Gaussian NLL）：核心项是 <span displaypfx="inline-" class="mathjax-container">\((\mathbf{x}-\boldsymbol{\mu})^\top\Sigma^{-1}(\mathbf{x}-\boldsymbol{\mu})\)</span>。可以把它理解成“先按数据真实尺度做校正，再测距离”：方差大的方向偏离一点不算太异常，方差小的方向偏离同样大小则更异常。异常检测（Anomaly Detection）和高斯判别模型都依赖这个量。</li>
<li>二阶近似与优化曲率（Second-order Approximation / Curvature）：在参数点附近，损失变化可写成 <span displaypfx="inline-" class="mathjax-container">\(\frac{1}{2}\Delta^\top H\Delta\)</span>。它告诉你“往哪个方向走会涨得快/慢”：特征值大表示该方向很陡，特征值小表示平坦，正负混合则是鞍点（Saddle）。这也是为什么牛顿法、预条件（Preconditioning）和学习率调度都在关心 Hessian 的谱结构。</li>
</ul>
<p>在机器学习的实现层面，二次型也常先通过可逆变量替换 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=T\mathbf{y}\)</span> 化到更易计算的表示： <span displaypfx="inline-" class="mathjax-container">\(q(\mathbf{x})=\mathbf{x}^\top A\mathbf{x}=\mathbf{y}^\top(T^\top A T)\mathbf{y}\)</span>。若 <span displaypfx="inline-" class="mathjax-container">\(A=A^\top\)</span>，原坐标有 <span displaypfx="inline-" class="mathjax-container">\(\nabla_{\mathbf{x}}q=2A\mathbf{x}\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\nabla^2_{\mathbf{x}}q=2A\)</span>；在新坐标下 <span displaypfx="inline-" class="mathjax-container">\(\nabla_{\mathbf{y}}q=2A'\mathbf{y}\)</span>（<span displaypfx="inline-" class="mathjax-container">\(A'=T^\top A T\)</span>）。若进一步化到对角标准型 <span displaypfx="inline-" class="mathjax-container">\(A'=\Lambda\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(\frac{\partial q}{\partial y_i}=2\lambda_i y_i\)</span>，逐坐标解耦，推导与实现都会更直接。</p>
<p>这里要区分“性质不变”和“数值不变”：在可逆变量替换下，正定/半正定/不定性质与正负零方向个数（惯性（Inertia））保持不变，因此局部最小/鞍点等优化结构不变；但一般合同变换 <span displaypfx="inline-" class="mathjax-container">\(T^\top A T\)</span> 不要求逐个保留特征值数值，只有正交相似变换 <span displaypfx="inline-" class="mathjax-container">\(Q^\top A Q\)</span> 才逐个保留特征值。</p>
<div class="blog_h2"><span class="graybg">对角矩阵（Diagonal Matrix）</span></div>
<p>对角矩阵（Diagonal Matrix）是只有对角线元素可能非零的方阵。写作 <span displaypfx="inline-" class="mathjax-container">\(D=\mathrm{diag}(d_1,\ldots,d_n)\)</span>，其非对角元素全为 0：</p>
<span displaypfx="" class="mathjax-container">\[D=\begin{bmatrix}d_1 &amp; 0 &amp; \cdots &amp; 0\\ 0 &amp; d_2 &amp; \cdots &amp; 0\\ \vdots &amp; \vdots &amp; \ddots &amp; \vdots\\ 0 &amp; 0 &amp; \cdots &amp; d_n\end{bmatrix}\]</span>
<p>对角矩阵乘以向量等价于“逐维缩放”：若 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(x_1,\ldots,x_n)^\top\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(D\mathbf{x}=(d_1x_1,\ldots,d_nx_n)^\top\)</span>。例：令 <span displaypfx="inline-" class="mathjax-container">\(D=\mathrm{diag}(2,0.5)\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(3,4)^\top\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(D\mathbf{x}=(6,2)^\top\)</span>。</p>
<p>在 AI 里，对角矩阵最常见的用途是把“逐元素缩放”写成线性算子：例如 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\odot \mathbf{s}=\mathrm{diag}(\mathbf{s})\mathbf{x}\)</span>。很多优化器的自适应学习率也可以视为对角预条件（Diagonal Preconditioner）：例如 Adam/Adagrad 里的 <span displaypfx="inline-" class="mathjax-container">\(1/\sqrt{v+\epsilon}\)</span> 本质上是按参数维度缩放梯度。</p>
<div class="blog_h2"><span class="graybg">单位矩阵（Identity Matrix）</span></div>
<p>单位矩阵（Identity Matrix）<span displaypfx="inline-" class="mathjax-container">\(I_n\)</span> 是对角线上全为 1、其他元素为 0 的方阵：</p>
<span displaypfx="" class="mathjax-container">\[I_n=\begin{bmatrix}1 &amp; 0 &amp; \cdots &amp; 0\\ 0 &amp; 1 &amp; \cdots &amp; 0\\ \vdots &amp; \vdots &amp; \ddots &amp; \vdots\\ 0 &amp; 0 &amp; \cdots &amp; 1\end{bmatrix}\]</span>
<p>它是矩阵乘法的单位元：对任意形状匹配的矩阵 <span displaypfx="inline-" class="mathjax-container">\(A\)</span>，有 <span displaypfx="inline-" class="mathjax-container">\(AI=IA=A\)</span>；对任意向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span>，有 <span displaypfx="inline-" class="mathjax-container">\(I\mathbf{x}=\mathbf{x}\)</span>。例：若 <span displaypfx="inline-" class="mathjax-container">\(I_2=\begin{bmatrix}1 &amp; 0\\ 0 &amp; 1\end{bmatrix}\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(I_2(3,4)^\top=(3,4)^\top\)</span>。</p>
<p>在 AI/数值计算里，<span displaypfx="inline-" class="mathjax-container">\(A+\lambda I\)</span>（<span displaypfx="inline-" class="mathjax-container">\(\lambda&gt;0\)</span>）用于改善条件数、提高可逆性与数值稳定性：例如岭回归（Ridge Regression）把 <span displaypfx="inline-" class="mathjax-container">\(X^\top X\)</span> 替换为 <span displaypfx="inline-" class="mathjax-container">\(X^\top X+\lambda I\)</span>；在高斯模型与协方差估计里常见 <span displaypfx="inline-" class="mathjax-container">\(\Sigma+\epsilon I\)</span> 来保证 Cholesky 分解可用。</p>
<div class="blog_h2"><span class="graybg">对称矩阵（Symmetric Matrix）</span></div>
<p>对称矩阵（Symmetric Matrix）是满足 <span displaypfx="inline-" class="mathjax-container">\(A=A^\top\)</span> 的实方阵，即 <span displaypfx="inline-" class="mathjax-container">\(A_{ij}=A_{ji}\)</span>。直观上，它的上三角与下三角互为镜像。</p>
<p>例： <span displaypfx="inline-" class="mathjax-container">\(\begin{bmatrix}2 &amp; 1\\ 1 &amp; 3\end{bmatrix}\)</span> 是对称矩阵；而 <span displaypfx="inline-" class="mathjax-container">\(\begin{bmatrix}2 &amp; 1\\ 0 &amp; 3\end{bmatrix}\)</span> 不是，因为非对角元素不成对相等。</p>
<p>对称矩阵拥有更“干净”的谱结构：所有特征值都是实数，并且可正交对角化（Spectral Theorem）：<span displaypfx="inline-" class="mathjax-container">\(A=Q\Lambda Q^\top\)</span>（<span displaypfx="inline-" class="mathjax-container">\(Q^\top Q=I\)</span>）。这使得很多推导都可以在旋转后的坐标系里逐维分析二次型、曲率与能量。</p>
<p>在 AI 里，对称矩阵高频出现于：</p>
<ul>
<li>协方差矩阵（Covariance Matrix）<span displaypfx="inline-" class="mathjax-container">\(\Sigma\)</span>：例如高斯模型与特征白化（Whitening）里，要求 <span displaypfx="inline-" class="mathjax-container">\(\Sigma\succeq 0\)</span>，并常用 <span displaypfx="inline-" class="mathjax-container">\(\Sigma+\epsilon I\)</span> 保证数值稳定。</li>
<li>Gram 矩阵（Gram Matrix）<span displaypfx="inline-" class="mathjax-container">\(X^\top X\)</span> 与核矩阵（Kernel Matrix）<span displaypfx="inline-" class="mathjax-container">\(K\)</span>：它们天然对称/半正定，是最小二乘、岭回归与核方法的核心对象。</li>
<li>海森矩阵（Hessian）：当目标函数二阶连续可导时，Hessian 对称；其特征值决定局部曲率，从而决定“极小/极大/鞍点”的类型与优化难度。</li>
</ul>
<div class="blog_h2"><span class="graybg">厄米矩阵（Hermitian Matrix）</span></div>
<p>厄米矩阵（Hermitian Matrix）是复数域上与对称矩阵对应的概念。若复矩阵 <span displaypfx="inline-" class="mathjax-container">\(A\in\mathbb{C}^{n\times n}\)</span> 满足</p>
<span displaypfx="" class="mathjax-container">\[A=A^\ast\]</span>
<p>则称 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 为厄米矩阵，其中 <span displaypfx="inline-" class="mathjax-container">\(A^\ast\)</span> 表示共轭转置（Conjugate Transpose）：先转置，再对每个元素取复共轭。因此，厄米矩阵满足按元素关系 <span displaypfx="inline-" class="mathjax-container">\(A_{ij}=\overline{A_{ji}}\)</span>。可以把它直接理解为<span style="background-color: #c0c0c0;">复数版本的对称矩阵</span>。</p>
<p>例： <span displaypfx="inline-" class="mathjax-container">\(\begin{bmatrix}1 &amp; 2+i\\ 2-i &amp; 3\end{bmatrix}\)</span> 是厄米矩阵，因为非对角元素互为复共轭，而对角线元素必须是实数。厄米矩阵保留了实对称矩阵最重要的好性质：特征值全为实数，并且可以被酉矩阵（Unitary Matrix）对角化。因此在复数信号处理、量子力学、复数优化与某些频域分析里，它扮演的角色与实对称矩阵在实数域中的角色完全对应。</p>
<div class="blog_h2"><span class="graybg">可逆矩阵与奇异矩阵（Invertible vs Singular）</span></div>
<p>可逆矩阵（Invertible Matrix）是存在逆矩阵的方阵：对 <span displaypfx="inline-" class="mathjax-container">\(A\in\mathbb{R}^{n\times n}\)</span>，若存在 <span displaypfx="inline-" class="mathjax-container">\(A^{-1}\)</span> 使得 <span displaypfx="inline-" class="mathjax-container">\(AA^{-1}=A^{-1}A=I\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 可逆；否则称 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 为奇异矩阵（Singular Matrix）。</p>
<p>等价判据（常用）：<span displaypfx="inline-" class="mathjax-container">\(A\)</span> 可逆 <span displaypfx="inline-" class="mathjax-container">\(\Leftrightarrow \det(A)\ne 0 \Leftrightarrow \mathrm{rank}(A)=n\)</span>（列向量线性无关）。</p>
<p>例（可逆）：令 <span displaypfx="inline-" class="mathjax-container">\(A=\begin{bmatrix}2 &amp; 1\\ 1 &amp; 1\end{bmatrix}\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(\det(A)=1\)</span>，并且 <span displaypfx="inline-" class="mathjax-container">\(A^{-1}=\begin{bmatrix}1 &amp; -1\\ -1 &amp; 2\end{bmatrix}\)</span>。</p>
<p>例（奇异）：令 <span displaypfx="inline-" class="mathjax-container">\(B=\begin{bmatrix}1 &amp; 2\\ 2 &amp; 4\end{bmatrix}\)</span>，第二行是第一行的 2 倍，因此秩为 1、行列式为 0，无法求逆。对应线性方程组 <span displaypfx="inline-" class="mathjax-container">\(B\mathbf{x}=\mathbf{b}\)</span> 可能无解（例如 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{b}=(3,5)^\top\)</span>），也可能有无穷多解（例如 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{b}=(3,6)^\top\)</span>）。</p>
<p>在 AI 里，奇异性最常出现在最小二乘与协方差：当特征共线、维度远大于样本数（<span displaypfx="inline-" class="mathjax-container">\(d\gg N\)</span>）时，<span displaypfx="inline-" class="mathjax-container">\(X^\top X\)</span> 往往奇异或病态（Ill-conditioned）。常见处理是正则化（<span displaypfx="inline-" class="mathjax-container">\(X^\top X+\lambda I\)</span>）或用 SVD/QR 求解并使用伪逆（Pseudoinverse）<span displaypfx="inline-" class="mathjax-container">\(A^+\)</span>。</p>
<p>实现上通常避免显式求 <span displaypfx="inline-" class="mathjax-container">\(A^{-1}\)</span>：更稳定的做法是直接求解 <span displaypfx="inline-" class="mathjax-container">\(A\mathbf{x}=\mathbf{b}\)</span>（Solve），或用分解（Cholesky / QR / SVD）替代。</p>
<div class="blog_h2"><span class="graybg">正交矩阵（Orthogonal Matrix）</span></div>
<p>正交矩阵（Orthogonal Matrix）是满足 <span displaypfx="inline-" class="mathjax-container">\(Q^\top Q=QQ^\top=I\)</span> 的实方阵。它的列向量（或行向量）构成一组正交标准基（Orthonormal Basis），因此保持长度与点积：对任意向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 有 <span displaypfx="inline-" class="mathjax-container">\(\|Q\mathbf{x}\|_2=\|\mathbf{x}\|_2\)</span>，对任意向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{a},\mathbf{b}\)</span> 有 <span displaypfx="inline-" class="mathjax-container">\((Q\mathbf{a})^\top(Q\mathbf{b})=\mathbf{a}^\top\mathbf{b}\)</span>。</p>
<p>正交矩阵的列向量不需要“沿着坐标轴方向”。要求只有一个：列向量两两正交且都是单位向量，也就是构成一组正交标准基。标准基（<span displaypfx="inline-" class="mathjax-container">\(\mathbf{e}_1,\mathbf{e}_2,\ldots\)</span>）只是其中最常用的一组。</p>
<p>例（旋转 45°）：令</p>
<span displaypfx="" class="mathjax-container">\[Q=\frac{1}{\sqrt{2}}\begin{bmatrix}1 &amp; -1\\ 1 &amp; 1\end{bmatrix}\]</span>
<p>它的两列分别是 <span displaypfx="inline-" class="mathjax-container">\(\frac{1}{\sqrt{2}}(1,1)^\top\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(\frac{1}{\sqrt{2}}(-1,1)^\top\)</span>，都不与坐标轴对齐，但它们正交且单位长度，因此</p>
<span displaypfx="" class="mathjax-container">\[Q^\top Q=\frac{1}{2}\begin{bmatrix}1 &amp; 1\\ -1 &amp; 1\end{bmatrix}\begin{bmatrix}1 &amp; -1\\ 1 &amp; 1\end{bmatrix}=\begin{bmatrix}1 &amp; 0\\ 0 &amp; 1\end{bmatrix}=I\]</span>
<p>例（二维旋转 90°）：令</p>
<span displaypfx="" class="mathjax-container">\[R=\begin{bmatrix}0 &amp; -1\\ 1 &amp; 0\end{bmatrix},\quad R^\top=\begin{bmatrix}0 &amp; 1\\ -1 &amp; 0\end{bmatrix}\]</span>
<p>则</p>
<span displaypfx="" class="mathjax-container">\[R^\top R=RR^\top=\begin{bmatrix}1 &amp; 0\\ 0 &amp; 1\end{bmatrix}=I\]</span>
<p>在 AI 里，正交矩阵常用于正交初始化（Orthogonal Initialization）、QR 分解与正交约束参数化；核心目的是把谱范数控制在 1 附近，改善深层网络与 RNN 的数值稳定性。</p>
<div class="blog_h2"><span class="graybg">酉矩阵（Unitary Matrix）</span></div>
<p>酉矩阵（Unitary Matrix）是复数域上的“长度保持”线性变换。对复矩阵 <span displaypfx="inline-" class="mathjax-container">\(U\in\mathbb{C}^{n\times n}\)</span>，若满足</p>
<span displaypfx="" class="mathjax-container">\[U^\ast U=UU^\ast=I\]</span>
<p>则称 <span displaypfx="inline-" class="mathjax-container">\(U\)</span> 为酉矩阵，其中 <span displaypfx="inline-" class="mathjax-container">\(U^\ast\)</span> 是共轭转置（Conjugate Transpose）。酉矩阵的列向量构成一组正交归一基（Orthonormal Basis），因此对任意向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 都有 <span displaypfx="inline-" class="mathjax-container">\(\|U\mathbf{x}\|_2=\|\mathbf{x}\|_2\)</span>。</p>
<p>实数域特例：当矩阵元素为实数时，酉矩阵退化为正交矩阵（Orthogonal Matrix），即满足 <span displaypfx="inline-" class="mathjax-container">\(Q^\top Q=QQ^\top=I\)</span>。</p>
<p>例（复数域）：令</p>
<span displaypfx="" class="mathjax-container">\[U=\begin{bmatrix}1 &amp; 0\\ 0 &amp; i\end{bmatrix},\quad U^\ast=\begin{bmatrix}1 &amp; 0\\ 0 &amp; -i\end{bmatrix}\]</span>
<p>则可直接计算：</p>
<span displaypfx="" class="mathjax-container">\[U^\ast U=\begin{bmatrix}1 &amp; 0\\ 0 &amp; -i\end{bmatrix}\begin{bmatrix}1 &amp; 0\\ 0 &amp; i\end{bmatrix}=\begin{bmatrix}1 &amp; 0\\ 0 &amp; 1\end{bmatrix}=I,\quad UU^\ast=\begin{bmatrix}1 &amp; 0\\ 0 &amp; i\end{bmatrix}\begin{bmatrix}1 &amp; 0\\ 0 &amp; -i\end{bmatrix}=I\]</span>
<p>在 AI 里，正交/酉矩阵常用于控制数值稳定性：例如正交初始化（Orthogonal Initialization）与正交/酉参数化可把谱范数压在 1 附近，缓解深层网络与 RNN 中的梯度爆炸/消失；一些长序列建模会使用 unitary/orthogonal RNN 来更好地传播长程信息。</p>
<div class="blog_h2"><span class="graybg">正定矩阵</span></div>
<p>正定矩阵（Positive Definite Matrix）把“二次型总是正”形式化。对对称矩阵（Symmetric Matrix）<span displaypfx="inline-" class="mathjax-container">\(A=A^\top\)</span>，若对任意非零向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\ne\mathbf{0}\)</span> 都有</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{x}^\top A\mathbf{x} &gt; 0\]</span>
<p>则称 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 正定，记作 <span displaypfx="inline-" class="mathjax-container">\(A\succ 0\)</span>。若是 <span displaypfx="inline-" class="mathjax-container">\(\ge 0\)</span> 则为半正定（Positive Semi-Definite, PSD），记作 <span displaypfx="inline-" class="mathjax-container">\(A\succeq 0\)</span>。</p>
<p>几何上，把 <span displaypfx="inline-" class="mathjax-container">\(q(x,y)=\mathbf{x}^\top A\mathbf{x}\)</span> 画成 <span displaypfx="inline-" class="mathjax-container">\(z=q(x,y)\)</span> 的三维曲面时，正定对应“向上开口的碗”（椭圆抛物面（Elliptic Paraboloid））：原点是唯一最低点，任意非零方向都往上抬升。若没有交叉项（<span displaypfx="inline-" class="mathjax-container">\(bxy\)</span> 项为 0），等值线与坐标轴对齐；若有交叉项（<span displaypfx="inline-" class="mathjax-container">\(b\ne 0\)</span>），碗的主轴会旋转，但“向上碗”的本质不变。半正定则可能出现平坦方向（Flat Direction），典型形状是槽（Trough）而非严格碗底。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/matrix-pd-psd.png"><img class="alignnone size-full wp-image-40695" src="https://blog.gmem.cc/wp-content/uploads/2026/03/matrix-pd-psd.png" alt="matrix-pd-psd" width="100%" /></a></p>
<p>从特征值（Eigenvalues）角度看，对称矩阵 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 的二次型类型可直接由特征值符号判别（下述以二维 <span displaypfx="inline-" class="mathjax-container">\(\lambda_1,\lambda_2\)</span> 为例）：</p>
<ul>
<li><span displaypfx="inline-" class="mathjax-container">\(\lambda_1&gt;0,\lambda_2&gt;0\)</span>：正定（Positive Definite, PD），向上开口碗。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(\lambda_1&lt;0,\lambda_2&lt;0\)</span>：负定（Negative Definite, ND），向下开口碗。</li>
<li>一个为 0、另一个大于 0：半正定（Positive Semi-Definite, PSD），出现平坦方向，形状更像槽。</li>
<li>一个为 0、另一个小于 0：半负定（Negative Semi-Definite, NSD），对应“倒槽”。</li>
<li>一正一负：不定（Indefinite），对应鞍面（Saddle Surface）。</li>
</ul>
<p>因此图里“有交叉项”并不改变正负定类型；它主要改变主轴方向（旋转等值线），而“是不是碗/槽/鞍”由特征值符号决定。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/matrix-nd-nsd.png"><img class="alignnone size-full wp-image-40703" src="https://blog.gmem.cc/wp-content/uploads/2026/03/matrix-nd-nsd.png" alt="matrix-nd-nsd" width="100%" /></a></p>
<p>例：令</p>
<span displaypfx="" class="mathjax-container">\[A=\begin{bmatrix}2 &amp; 1\\ 1 &amp; 2\end{bmatrix}\]</span>
<p>对任意 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(x_1,x_2)^\top\)</span>，有</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{x}^\top A\mathbf{x}=2x_1^2+2x_1x_2+2x_2^2=(x_1+x_2)^2+x_1^2+x_2^2&gt;0\quad (\mathbf{x}\ne\mathbf{0})\]</span>
<p>因此 <span displaypfx="inline-" class="mathjax-container">\(A\succ 0\)</span>。同时它的特征值为 3 与 1（均为正），并且存在 Cholesky 分解：</p>
<span displaypfx="" class="mathjax-container">\[A=LL^\top,\quad L=\begin{bmatrix}\sqrt{2} &amp; 0\\ \frac{1}{\sqrt{2}} &amp; \sqrt{\frac{3}{2}}\end{bmatrix}\]</span>
<p>等价刻画（常用）：</p>
<ul>
<li><span displaypfx="inline-" class="mathjax-container">\(A\succ 0\)</span> 当且仅当所有特征值 <span displaypfx="inline-" class="mathjax-container">\(\lambda_i&gt;0\)</span>。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(A\succ 0\)</span> 当且仅当存在 Cholesky 分解 <span displaypfx="inline-" class="mathjax-container">\(A=LL^\top\)</span>（<span displaypfx="inline-" class="mathjax-container">\(L\)</span> 下三角且对角为正）。</li>
</ul>
<p>它在优化里非常关键：若函数的海森矩阵（Hessian）在某点正定，则该点是严格局部极小；若 Hessian 半正定，则函数局部凸（Locally Convex）。</p>
<div class="blog_h2"><span class="graybg">特征值与特征向量</span></div>
<p>特征值（Eigenvalue）与特征向量（Eigenvector）描述线性变换的“固有方向”：若存在非零向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{v}\ne\mathbf{0}\)</span> 与标量 <span displaypfx="inline-" class="mathjax-container">\(\lambda\)</span> 使得</p>
<span displaypfx="" class="mathjax-container">\[A\mathbf{v}=\lambda \mathbf{v}\]</span>
<p>则 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{v}\)</span> 是特征向量，<span displaypfx="inline-" class="mathjax-container">\(\lambda\)</span> 是对应特征值。几何上，沿特征向量方向的向量经过变换后方向不变，只被缩放（若 <span displaypfx="inline-" class="mathjax-container">\(\lambda&lt;0\)</span> 还会翻转）。</p>
<p>当矩阵可对角化（Diagonalizable）时，可写为 <span displaypfx="inline-" class="mathjax-container">\(A=V\Lambda V^{-1}\)</span>，其中 <span displaypfx="inline-" class="mathjax-container">\(\Lambda\)</span> 是特征值对角矩阵，列向量 <span displaypfx="inline-" class="mathjax-container">\(V=[\mathbf{v}_1,\dots,\mathbf{v}_n]\)</span> 是特征向量。</p>
<p>对称矩阵（Symmetric Matrix）是最重要的特例：它的特征向量可取为一组正交归一基（Orthonormal Basis），因此</p>
<span displaypfx="" class="mathjax-container">\[A=Q\Lambda Q^\top,\quad Q^\top Q=I\]</span>
<p>这正是 PCA（Principal Component Analysis）等方法背后的谱分解（Spectral Decomposition）基础。</p>
<div class="blog_h2"><span class="graybg">谱、谱定理与谱范数</span></div>
<div class="blog_h3"><span class="graybg">谱（Spectrum）</span></div>
<p>矩阵的谱（Spectrum）指的是矩阵全部特征值构成的集合。对方阵 <span displaypfx="inline-" class="mathjax-container">\(A\in\mathbb{C}^{n\times n}\)</span>，常记为 <span displaypfx="inline-" class="mathjax-container">\(\sigma(A)\)</span>：</p>
<span displaypfx="" class="mathjax-container">\[\sigma(A)=\{\lambda\in\mathbb{C}\mid \det(A-\lambda I)=0\}\]</span>
<p>这里之所以会把行列式（Determinant）扯进来，是因为特征值定义本身就会自然导向这个条件。若 <span displaypfx="inline-" class="mathjax-container">\(\lambda\)</span> 是特征值，按定义必须存在某个非零向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{v}\ne \mathbf{0}\)</span> 使得</p>
<span displaypfx="" class="mathjax-container">\[A\mathbf{v}=\lambda \mathbf{v}\]</span>
<p>把右边移到左边，就是</p>
<span displaypfx="" class="mathjax-container">\[(A-\lambda I)\mathbf{v}=\mathbf{0}\]</span>
<p>这说明：矩阵 <span displaypfx="inline-" class="mathjax-container">\(A-\lambda I\)</span> 对应的齐次线性方程组必须有<span style="background-color: #c0c0c0;">非零解</span>。而线性代数里，一个方阵齐次方程组有非零解，当且仅当该矩阵不可逆；对方阵而言，不可逆又等价于行列式为 0。因此就得到</p>
<span displaypfx="" class="mathjax-container">\[\det(A-\lambda I)=0\]</span>
<p>也就是说，行列式在这里不是额外硬塞进来的工具，而是“特征向量存在非零解”这一要求的等价写法。解这个方程得到的多项式根，就是矩阵的全部特征值。</p>
<p>这个定义的关键不是“列出所有特征值”本身，而是把矩阵最核心的线性作用浓缩成一组标量。许多稳定性、可逆性、收敛性与几何性质，最终都可以回到谱上来判断。例：若 <span displaypfx="inline-" class="mathjax-container">\(0\in \sigma(A)\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 不可逆；若所有特征值都为正，且 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 对称，则它是正定矩阵。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/spectrum.png"><img class="alignnone size-full wp-image-42063" src="https://blog.gmem.cc/wp-content/uploads/2026/03/spectrum.png" alt="spectrum" width="1024" height="1024" /></a></p>
<p>与谱紧密相关、但不能混为一谈的另一个概念是谱半径（Spectral Radius）：</p>
<span displaypfx="" class="mathjax-container">\[\rho(A)=\max_{\lambda\in\sigma(A)}|\lambda|\]</span>
<p>它只取特征值模长中的最大者。谱是整个特征值集合，谱半径只是其中的最大模长摘要。在线性迭代、RNN 稳定性与幂法（Power Method）里，谱半径尤其常见。</p>
<div class="blog_h3"><span class="graybg">谱定理（Spectral Theorem）</span></div>
<p>谱定理（Spectral Theorem）是线性代数里最重要的结构定理之一。对实对称矩阵 <span displaypfx="inline-" class="mathjax-container">\(A=A^\top\)</span>，存在正交矩阵 <span displaypfx="inline-" class="mathjax-container">\(Q\)</span> 与实对角矩阵 <span displaypfx="inline-" class="mathjax-container">\(\Lambda\)</span>，使得</p>
<span displaypfx="" class="mathjax-container">\[A=Q\Lambda Q^\top\]</span>
<p>等价地说， <span displaypfx="inline-" class="mathjax-container">\(Q\)</span> 的列向量是一组两两正交的单位特征向量， <span displaypfx="inline-" class="mathjax-container">\(\Lambda\)</span> 的对角线上放着对应特征值。这条定理的含义非常深：对称矩阵不仅“有特征值”，而且它的全部作用都可以被解释为<span style="background-color: #c0c0c0;">先换到特征向量基，再按各坐标轴独立缩放</span>。这也是为什么二次型、协方差矩阵、Hessian、图 Laplacian 等对象一旦对称，分析就会变得异常清爽。</p>
<p>在复数域上，对应版本是厄米矩阵（Hermitian Matrix）<span displaypfx="inline-" class="mathjax-container">\(A=A^\ast\)</span> 可被酉矩阵（Unitary Matrix）对角化：</p>
<span displaypfx="" class="mathjax-container">\[A=U\Lambda U^\ast\]</span>
<p>这类“可由一组正交 / 酉基完全分解”的矩阵，在数值上更稳定、几何上更透明，也正因此成为机器学习里最重要的一类矩阵对象。</p>
<div class="blog_h3"><span class="graybg">谱范数（Spectral Norm）</span></div>
<p>谱范数（Spectral Norm）记作 <span displaypfx="inline-" class="mathjax-container">\(\|A\|_2\)</span>，定义为矩阵对单位向量能造成的最大放大倍数：</p>
<span displaypfx="" class="mathjax-container">\[\|A\|_2=\max_{\|\mathbf{x}\|_2=1}\|A\mathbf{x}\|_2\]</span>
<p>这一定义直接揭示了它的几何意义：找出所有长度为 1 的输入向量，看矩阵 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 最多能把哪一个方向拉得最长。对任意矩阵，都有</p>
<span displaypfx="" class="mathjax-container">\[\|A\|_2=\sigma_{\max}(A)=\sqrt{\lambda_{\max}(A^\top A)}\]</span>
<p>其中 <span displaypfx="inline-" class="mathjax-container">\(\sigma_{\max}(A)\)</span> 是最大奇异值。若 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 还是实对称矩阵，则奇异值等于特征值绝对值，于是谱范数进一步化为</p>
<span displaypfx="" class="mathjax-container">\[\|A\|_2=\max_i |\lambda_i(A)|\]</span>
<p>因此，对一般矩阵要通过奇异值来理解谱范数；对对称矩阵，则可以直接通过特征值来理解。要特别区分：谱范数与谱半径在对称 / 正规矩阵上常常一致，但对一般非正规矩阵并不总相同。</p>
<p>在 AI 中，谱范数最常用于表达“局部放大能力”与 Lipschitz 常数控制。若某层线性映射的谱范数过大，它会把某些方向的扰动显著放大，进而加重训练不稳定、梯度爆炸或对抗脆弱性；这也是谱归一化（Spectral Normalization）、正交初始化与某些鲁棒优化方法反复关注它的原因。</p>
<div class="blog_h2"><span class="graybg">奇异值分解（SVD）</span></div>
<p>奇异值分解（SVD, Singular Value Decomposition）对任意矩阵 <span displaypfx="inline-" class="mathjax-container">\(A\in\mathbb{R}^{m\times n}\)</span> 都成立：</p>
<span displaypfx="" class="mathjax-container">\[A=U\Sigma V^\top\]</span>
<p>其中 <span displaypfx="inline-" class="mathjax-container">\(U\in\mathbb{R}^{m\times m}\)</span>、<span displaypfx="inline-" class="mathjax-container">\(V\in\mathbb{R}^{n\times n}\)</span> 是正交矩阵（Orthogonal Matrix），<span displaypfx="inline-" class="mathjax-container">\(\Sigma\in\mathbb{R}^{m\times n}\)</span> 是对角（更准确说是“对角形”）矩阵，其对角线元素 <span displaypfx="inline-" class="mathjax-container">\(\sigma_1\ge\sigma_2\ge\cdots\ge 0\)</span> 为奇异值（Singular Values）。</p>
<p>几何解释非常直接：<span style="background-color: #c0c0c0;">先用 <span displaypfx="inline-" class="mathjax-container">\(V^\top\)</span> 旋转/换基，再用 <span displaypfx="inline-" class="mathjax-container">\(\Sigma\)</span> 沿坐标轴缩放，最后用 <span displaypfx="inline-" class="mathjax-container">\(U\)</span> 再旋转</span>。因此 SVD 是“旋转-缩放-旋转”的标准分解。</p>
<p>SVD 与特征值的关系要分左右两侧一起看：</p>
<ul>
<li>右奇异向量（Right Singular Vectors）是 <span displaypfx="inline-" class="mathjax-container">\(A^\top A\)</span> 的特征向量，即 <span displaypfx="inline-" class="mathjax-container">\(A^\top A\mathbf{v}_i=\sigma_i^2\mathbf{v}_i\)</span>。</li>
<li>左奇异向量（Left Singular Vectors）是 <span displaypfx="inline-" class="mathjax-container">\(AA^\top\)</span> 的特征向量，即 <span displaypfx="inline-" class="mathjax-container">\(AA^\top\mathbf{u}_i=\sigma_i^2\mathbf{u}_i\)</span>。</li>
</ul>
<p>其中<span displaypfx="inline-" class="mathjax-container">\(\sigma_i^2\)</span> 是 <span displaypfx="inline-" class="mathjax-container">\(A^\top A\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(AA^\top\)</span> 的特征值；<span displaypfx="inline-" class="mathjax-container">\(\sigma_i\)</span> 为奇异值（即这些非零特征值的平方根）。</p>
<p>矩阵形式分别是 <span displaypfx="inline-" class="mathjax-container">\(A^\top A=V\Sigma^\top\Sigma V^\top\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(AA^\top=U\Sigma\Sigma^\top U^\top\)</span>，因此非零奇异值满足 <span displaypfx="inline-" class="mathjax-container">\(\sigma_i=\sqrt{\lambda_i(A^\top A)}=\sqrt{\lambda_i(AA^\top)}\)</span>。这也解释了为什么奇异值总是非负，而一般矩阵的特征值可以为负甚至为复数。</p>
<p>若 <span displaypfx="inline-" class="mathjax-container">\(\sigma_i&gt;0\)</span>，左右奇异向量还可互相对应： <span displaypfx="inline-" class="mathjax-container">\(\mathbf{u}_i=\frac{A\mathbf{v}_i}{\sigma_i}\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\mathbf{v}_i=\frac{A^\top\mathbf{u}_i}{\sigma_i}\)</span>。</p>
<p>特殊地，若 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 是对称矩阵，则它可正交对角化，此时奇异值等于特征值的绝对值：<span displaypfx="inline-" class="mathjax-container">\(\sigma_i=|\lambda_i(A)|\)</span>；若 <span displaypfx="inline-" class="mathjax-container">\(A\succeq 0\)</span>（半正定），则 <span displaypfx="inline-" class="mathjax-container">\(\sigma_i=\lambda_i(A)\)</span>。</p>
<p>为什么 SVD 可用于压缩与降维（Compression &amp; Dimensionality Reduction）？因为很多数据/权重矩阵在有效意义下是低秩（Low-rank）的：只有前几个 <span displaypfx="inline-" class="mathjax-container">\(\sigma_i\)</span> 很大，后面的奇异值接近 0。保留前 <span displaypfx="inline-" class="mathjax-container">\(k\)</span> 项得到秩 <span displaypfx="inline-" class="mathjax-container">\(k\)</span> 近似：</p>
<span displaypfx="" class="mathjax-container">\[A_k=U_{(:,1:k)}\Sigma_{(1:k,1:k)}V_{(:,1:k)}^\top\]</span>
<p>它在 Frobenius 范数（Frobenius Norm）与谱范数（Spectral Norm）意义下都是最优的秩 <span displaypfx="inline-" class="mathjax-container">\(k\)</span> 近似（Eckart–Young 定理）：用最少的信息保留最大的能量（由奇异值平方决定）。</p>
<p>在 PCA 中，对中心化数据矩阵 <span displaypfx="inline-" class="mathjax-container">\(X\)</span> 做 SVD： <span displaypfx="inline-" class="mathjax-container">\(X=U\Sigma V^\top\)</span>，右奇异向量 <span displaypfx="inline-" class="mathjax-container">\(V\)</span> 给出主方向（Principal Directions），奇异值刻画各方向的方差贡献（Variance Explained）。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/svd.png"><img class="alignnone size-full wp-image-42053" src="https://blog.gmem.cc/wp-content/uploads/2026/03/svd.png" alt="svd" width="1024" height="1024" /></a></p>
<div class="blog_h2"><span class="graybg">范数（L0 / L1 / L2 / L∞）</span></div>
<p>范数（Norm）刻画“向量大小”。在 AI 中，它最常出现在三类地方：距离度量（Distance Metric）、正则化（Regularization）与鲁棒性约束（Robustness Constraint）。对 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\in\mathbb{R}^d\)</span>，当 <span displaypfx="inline-" class="mathjax-container">\(p\ge 1\)</span> 时 <span displaypfx="inline-" class="mathjax-container">\(L_p\)</span> 范数定义为</p>
<span displaypfx="" class="mathjax-container">\[\|\mathbf{x}\|_p=\left(\sum_{i=1}^{d}|x_i|^p\right)^{1/p},\quad p\ge 1\]</span>
<p>并且 <span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{x}\|_\infty=\max_i |x_i|=\lim_{p\to\infty}\|\mathbf{x}\|_p\)</span>。</p>
<div class="blog_h3"><span class="graybg">L0 “范数”（L0 “norm”）</span></div>
<p><span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{x}\|_0\)</span> 定义为非零分量的个数：</p>
<span displaypfx="" class="mathjax-container">\[\|\mathbf{x}\|_0=\#\{i\mid x_i\ne 0\}\]</span>
<p>严格来说它不是范数：例如对任意非零标量 <span displaypfx="inline-" class="mathjax-container">\(\alpha\ne 0\)</span>，有 <span displaypfx="inline-" class="mathjax-container">\(\|\alpha\mathbf{x}\|_0=\|\mathbf{x}\|_0\)</span>，不满足齐次性（Homogeneity）<span displaypfx="inline-" class="mathjax-container">\(\|\alpha\mathbf{x}\|=|\alpha|\|\mathbf{x}\|\)</span>。</p>
<p>例：若 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(3,0,-1,0)\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{x}\|_0=2\)</span>。</p>
<p>在 AI 里，<span displaypfx="inline-" class="mathjax-container">\(\|\cdot\|_0\)</span> 用来表达稀疏性（Sparsity）：特征选择（Feature Selection）、压缩感知（Compressed Sensing）与网络剪枝（Pruning）常以“非零个数最少”为目标。但直接优化 <span displaypfx="inline-" class="mathjax-container">\(\|\cdot\|_0\)</span> 一般是组合优化，常用 <span displaypfx="inline-" class="mathjax-container">\(\|\cdot\|_1\)</span> 或其他可优化的替代目标近似。</p>
<div class="blog_h3"><span class="graybg">L1 范数（L1 Norm）</span></div>
<span displaypfx="" class="mathjax-container">\[\|\mathbf{x}\|_1=\sum_{i=1}^{d}|x_i|\]</span>
<p>例：若 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(3,4)\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{x}\|_1=7\)</span>。几何上，二维 <span displaypfx="inline-" class="mathjax-container">\(L_1\)</span> 等值线是菱形；与 <span displaypfx="inline-" class="mathjax-container">\(L_2\)</span> 的圆相比，它更容易在坐标轴上产生“尖角”，对应优化时更容易把部分坐标推到 0。</p>
<p>在 AI 里，<span displaypfx="inline-" class="mathjax-container">\(L_1\)</span> 正则化是稀疏学习（Sparse Learning）的标准工具：在凸模型中会得到稀疏解（例如 Lasso）；在深度模型中也常用于诱导稀疏权重/稀疏特征、做轻量化。</p>
<div class="blog_h3"><span class="graybg">L2 范数（L2 Norm）</span></div>
<span displaypfx="" class="mathjax-container">\[\|\mathbf{x}\|_2=\sqrt{\sum_{i=1}^{d}x_i^2}\]</span>
<p>例：若 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(3,4)\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{x}\|_2=5\)</span>，对应欧氏距离（Euclidean Distance）。在连续优化中，<span displaypfx="inline-" class="mathjax-container">\(\|\theta\|_2^2\)</span> 具有良好的光滑性（Smoothness），使得许多推导与数值计算更稳定。</p>
<p>在 AI 里，<span displaypfx="inline-" class="mathjax-container">\(L_2\)</span> 正则化（权重衰减（Weight Decay））会惩罚大权重、改善泛化并缓解病态问题；在二次目标里它也对应“加 <span displaypfx="inline-" class="mathjax-container">\(\lambda I\)</span>”的稳定化（例如岭回归）。</p>
<div class="blog_h3"><span class="graybg">L∞ 范数（L-infinity Norm）</span></div>
<span displaypfx="" class="mathjax-container">\[\|\mathbf{x}\|_\infty=\max_{i}|x_i|\]</span>
<p>例：若 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(3,0,-1,0)\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{x}\|_\infty=3\)</span>。它度量的是“最大坐标幅度”。</p>
<p>在 AI 里，<span displaypfx="inline-" class="mathjax-container">\(L_\infty\)</span> 最常与鲁棒性相关：对抗样本（Adversarial Examples）中的 <span displaypfx="inline-" class="mathjax-container">\(L_\infty\)</span> 约束表示“每个像素的改动幅度不超过 <span displaypfx="inline-" class="mathjax-container">\(\epsilon\)</span>”；一些鲁棒优化与最坏情况界也会用 <span displaypfx="inline-" class="mathjax-container">\(\|\cdot\|_\infty\)</span> 表达最大误差。</p>
<div class="blog_h3"><span class="graybg">距离与正则化</span></div>
<p>由范数诱导的距离（Norm-induced Distance）写作 <span displaypfx="inline-" class="mathjax-container">\(d(\mathbf{x},\mathbf{y})=\|\mathbf{x}-\mathbf{y}\|\)</span>。常见对应关系：</p>
<ul>
<li><span displaypfx="inline-" class="mathjax-container">\(L_2\)</span>：欧氏距离（Euclidean Distance），<span displaypfx="inline-" class="mathjax-container">\(d_2(\mathbf{x},\mathbf{y})=\|\mathbf{x}-\mathbf{y}\|_2=\sqrt{\sum_{i=1}^{d}(x_i-y_i)^2}\)</span>。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(L_1\)</span>：曼哈顿距离（Manhattan Distance），<span displaypfx="inline-" class="mathjax-container">\(d_1(\mathbf{x},\mathbf{y})=\|\mathbf{x}-\mathbf{y}\|_1=\sum_{i=1}^{d}|x_i-y_i|\)</span>。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(L_\infty\)</span>：切比雪夫距离（Chebyshev Distance），<span displaypfx="inline-" class="mathjax-container">\(d_\infty(\mathbf{x},\mathbf{y})=\|\mathbf{x}-\mathbf{y}\|_\infty=\max_{i}|x_i-y_i|\)</span>。它度量的是“最坏维度”的偏差：例如 <span displaypfx="inline-" class="mathjax-container">\(d_\infty(\mathbf{x},\mathbf{y})\le \epsilon \Leftrightarrow \forall i,\ |x_i-y_i|\le \epsilon\)</span>，即每一维的误差都被同一个上界约束。直觉上，如果一次操作允许同时修改所有坐标、且每步每个坐标最多改 1，那么从 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 变到 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{y}\)</span> 的最少步数就是 <span displaypfx="inline-" class="mathjax-container">\(\max_i|x_i-y_i|\)</span>（更一般地，每步上限为 <span displaypfx="inline-" class="mathjax-container">\(\epsilon\)</span> 时步数为 <span displaypfx="inline-" class="mathjax-container">\(d_\infty(\mathbf{x},\mathbf{y})/\epsilon\)</span> 的向上取整）。</li>
</ul>
<p>关于 <span displaypfx="inline-" class="mathjax-container">\(L_0\)</span>：常见写法是 <span displaypfx="inline-" class="mathjax-container">\(d_0(\mathbf{x},\mathbf{y})=\|\mathbf{x}-\mathbf{y}\|_0=\#\{i\mid x_i\ne y_i\}\)</span>，它统计两向量在多少个坐标上不相等。本质上这是逐坐标“相等/不相等”的计数度量；当取值来自离散集合时，它对应哈明距离（Hamming Distance）。但 <span displaypfx="inline-" class="mathjax-container">\(\|\cdot\|_0\)</span> 严格来说不是范数，因此 <span displaypfx="inline-" class="mathjax-container">\(d_0\)</span> 不属于“由范数诱导”的距离家族。</p>
<p>在学习目标中，正则化通常写成：</p>
<span displaypfx="" class="mathjax-container">\[\min_{\theta}\ \frac{1}{m}\sum_{i=1}^{m}\ell\!\left(f_{\theta}(x^{(i)}),y^{(i)}\right)+\lambda\Omega(\theta)\]</span>
<p>式中各成分含义如下：</p>
<ul>
<li><span displaypfx="inline-" class="mathjax-container">\(\theta\)</span>：模型参数（Parameters），优化的对象。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(m\)</span>：训练样本数（Number of Samples）。</li>
<li><span displaypfx="inline-" class="mathjax-container">\((x^{(i)},y^{(i)})\)</span>：第 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 个样本与标签。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(f_{\theta}(x^{(i)})\)</span>：模型对第 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 个样本的预测。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(\ell(\cdot,\cdot)\)</span>：单样本损失函数（Per-sample Loss），衡量预测与标签偏差。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(\frac{1}{m}\sum_{i=1}^{m}\ell(\cdot)\)</span>：经验风险（Empirical Risk），即平均训练误差。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(\Omega(\theta)\)</span>：正则项（Regularizer），约束参数复杂度。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(\lambda\)</span>：正则化系数（Regularization Strength），平衡“拟合训练数据”与“控制模型复杂度”。</li>
</ul>
<p>常见的 <span displaypfx="inline-" class="mathjax-container">\(\Omega(\theta)\)</span> 包括 <span displaypfx="inline-" class="mathjax-container">\(\|\theta\|_1\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\|\theta\|_2^2\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\|\theta\|_0\)</span>（稀疏性目标）与 <span displaypfx="inline-" class="mathjax-container">\(\|\theta\|_\infty\)</span>（最大幅度约束）。同一个思想也可写成“约束形式”（Constraint Form）：<span displaypfx="inline-" class="mathjax-container">\(\min_\theta \frac{1}{m}\sum_i \ell(\cdot)\ \text{s.t.}\ \Omega(\theta)\le c\)</span>。惩罚系数 <span displaypfx="inline-" class="mathjax-container">\(\lambda\)</span> 与约束半径 <span displaypfx="inline-" class="mathjax-container">\(c\)</span> 在凸优化（Convex Optimization）里可通过对偶（Duality）联系起来。</p>
<div class="blog_h1"><span class="graybg">微积分</span></div>
<div class="blog_h2"><span class="graybg">极限与连续</span></div>
<div class="blog_h3"><span class="graybg">极限的定义</span></div>
<p>极限（Limit）回答的问题是：当输入“逼近”某个值时，函数输出“逼近”什么值。它关心的是趋势而不是是否刚好取到该点。</p>
<span displaypfx="" class="mathjax-container">\[\lim_{x\to a}f(x)=L\]</span>
<p>严格定义（<span displaypfx="inline-" class="mathjax-container">\(\varepsilon-\delta\)</span> 定义）可写为：</p>
<span displaypfx="" class="mathjax-container">\[\forall \varepsilon \gt 0,\ \exists \delta \gt 0,\ \text{s.t.}\ 0 \lt |x-a| \lt \delta \Rightarrow |f(x)-L| \lt \varepsilon\]</span>
<p>工程上可把它理解为：把输入控制得足够近，输出误差就能被压到任意小。</p>
<p>在 AI 里，极限直觉用于理解“收敛（Convergence）”：例如训练步长变小后，参数更新是否趋于稳定；以及损失函数在某点附近是否可被低阶展开近似。</p>
<div class="blog_h3"><span class="graybg">连续性</span></div>
<p>连续（Continuity）可理解为“函数图像没有跳断”。在点 <span displaypfx="inline-" class="mathjax-container">\(a\)</span> 处连续的三个条件是：</p>
<ol>
<li><span displaypfx="inline-" class="mathjax-container">\(f(a)\)</span> 有定义；</li>
<li><span displaypfx="inline-" class="mathjax-container">\(\lim_{x\to a}f(x)\)</span> 存在；</li>
<li><span displaypfx="inline-" class="mathjax-container">\(\lim_{x\to a}f(x)=f(a)\)</span>。</li>
</ol>
<p>连续是可导（Differentiable）的前提之一（但连续不必然可导）。例如 <span displaypfx="inline-" class="mathjax-container">\(|x|\)</span> 在 <span displaypfx="inline-" class="mathjax-container">\(x=0\)</span> 连续但不可导。</p>
<p>在优化里，连续性保证“小步更新不会导致目标突变”，这也是学习率（Learning Rate）可调与训练可控的基础假设之一。</p>
<div class="blog_h3"><span class="graybg">无穷小与无穷大</span></div>
<p>无穷小（Infinitesimal）描述“趋近于 0 的量”，无穷大（Infinity）描述“无界增长”。在推导里常通过渐近记号（Asymptotic Notation）表达量级关系：</p>
<p>这里的 <span displaypfx="inline-" class="mathjax-container">\(o\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(O\)</span> 不是变量，而是两种记号：小 <span displaypfx="inline-" class="mathjax-container">\(o\)</span>（little-o）表示“严格更小一个量级”，大 <span displaypfx="inline-" class="mathjax-container">\(O\)</span>（big-O）表示“至多同量级的上界”。</p>
<ul>
<li><span displaypfx="inline-" class="mathjax-container">\(f(x)=o(g(x))\)</span>：当 <span displaypfx="inline-" class="mathjax-container">\(x\to a\)</span> 时 <span displaypfx="inline-" class="mathjax-container">\(f/g\to 0\)</span>（高阶小量，增长/衰减速度严格慢于 <span displaypfx="inline-" class="mathjax-container">\(g\)</span>）。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(f(x)=O(g(x))\)</span>：存在常数 <span displaypfx="inline-" class="mathjax-container">\(C\)</span> 使 <span displaypfx="inline-" class="mathjax-container">\(|f(x)|\le C|g(x)|\)</span>（同阶或更小的上界）。</li>
</ul>
<p>例如一阶 Taylor 展开里的 <span displaypfx="inline-" class="mathjax-container">\(o(\Delta x)\)</span> 表示“比 <span displaypfx="inline-" class="mathjax-container">\(\Delta x\)</span> 更小得多”的误差项。算法分析中的时间复杂度 <span displaypfx="inline-" class="mathjax-container">\(O(Nd)\)</span>、<span displaypfx="inline-" class="mathjax-container">\(O(N^2)\)</span> 也属于同一套量级语言。</p>
<div class="blog_h2"><span class="graybg">常见求导法则与公式</span></div>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">法则</td>
<td style="text-align: center;">公式</td>
<td style="text-align: center;">条件</td>
</tr>
</thead>
<tbody>
<tr>
<td>常数倍法则</td>
<td><span displaypfx="inline-" class="mathjax-container">\((Cu)' = C u'\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(C\)</span> 为常数</td>
</tr>
<tr>
<td>和差法则</td>
<td><span displaypfx="inline-" class="mathjax-container">\((u \pm v)' = u' \pm v'\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(u,v\)</span> 可导</td>
</tr>
<tr>
<td>乘法法则</td>
<td><span displaypfx="inline-" class="mathjax-container">\((uv)' = u'v + uv'\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(u,v\)</span> 可导</td>
</tr>
<tr>
<td>除法法则</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\left(\frac{u}{v}\right)'=\frac{u'v-uv'}{v^2}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(u,v\)</span> 可导，且 <span displaypfx="inline-" class="mathjax-container">\(v \ne 0\)</span></td>
</tr>
<tr>
<td>链式法则</td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{d}{dx}f(g(x)) = f'(g(x))g'(x)\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(f,g\)</span> 可导</td>
</tr>
</tbody>
</table>
<div class="blog_h3"><span class="graybg">常见函数导数</span></div>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">函数 <span displaypfx="inline-" class="mathjax-container">\(f(x)\)</span></td>
<td style="text-align: center;">导数 <span displaypfx="inline-" class="mathjax-container">\(f'(x)\)</span></td>
<td style="text-align: center;">备注/条件</td>
</tr>
</thead>
<tbody>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(c\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(0\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(c\)</span> 为常数</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(x^n\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(n x^{n-1}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(n\)</span> 为常数；非整数 <span displaypfx="inline-" class="mathjax-container">\(n\)</span> 时需注意实数域定义域</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\sqrt{x}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{1}{2\sqrt{x}}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(x&gt;0\)</span></td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(e^x\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(e^x\)</span></td>
<td>自然指数（Natural Exponential）</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(a^x\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(a^x\ln a\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(a&gt;0,a\ne 1\)</span></td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\ln x\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{1}{x}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(x&gt;0\)</span></td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\log_a x\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{1}{x\ln a}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(x&gt;0,\ a&gt;0,\ a\ne 1\)</span></td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\sin x\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\cos x\)</span></td>
<td> </td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\cos x\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(-\sin x\)</span></td>
<td> </td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\tan x\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\sec^2 x\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\cos x\ne 0\)</span></td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(|x|\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\mathrm{sign}(x)\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(x&gt;0\)</span> 时导数为 <span displaypfx="inline-" class="mathjax-container">\(1\)</span></p>
<p><span displaypfx="inline-" class="mathjax-container">\(x&lt;0\)</span> 时导数为 <span displaypfx="inline-" class="mathjax-container">\(-1\)</span></p>
<p>在 <span displaypfx="inline-" class="mathjax-container">\(x=0\)</span> 不可导（优化中常用次梯度 <span displaypfx="inline-" class="mathjax-container">\(g\in[-1,1]\)</span>）</p>
</td>
</tr>
</tbody>
</table>
<div class="blog_h2"><span class="graybg">导数（Derivative）</span></div>
<p>导数是点 <span displaypfx="inline-" class="mathjax-container">\(x_0\)</span> 处的瞬时变化率（Instantaneous Rate of Change）：</p>
<span displaypfx="" class="mathjax-container">\[f'(x_0)=\lim_{\Delta x\to 0}\frac{f(x_0+\Delta x)-f(x_0)}{\Delta x}\]</span>
<p><span displaypfx="inline-" class="mathjax-container">\(x_0\)</span> 不是“很小的数”，而是定义域中的固定位置；趋近于 0 的小量是 <span displaypfx="inline-" class="mathjax-container">\(\Delta x\)</span>（或记作 <span displaypfx="inline-" class="mathjax-container">\(dx\)</span>）。</p>
<p>一阶展开把导数解释为“线性项的系数”：当 <span displaypfx="inline-" class="mathjax-container">\(\Delta x\to 0\)</span> 时，</p>
<span displaypfx="" class="mathjax-container">\[f(x_0+\Delta x)=f(x_0)+f'(x_0)\Delta x+o(\Delta x)\]</span>
<p>可按“等于三项相加”理解：左边 <span displaypfx="inline-" class="mathjax-container">\(f(x_0+\Delta x)\)</span> 是扰动后的真实函数值；右边第一项 <span displaypfx="inline-" class="mathjax-container">\(f(x_0)\)</span> 是基点函数值，第二项 <span displaypfx="inline-" class="mathjax-container">\(f'(x_0)\Delta x\)</span> 是一阶线性近似，第三项 <span displaypfx="inline-" class="mathjax-container">\(o(\Delta x)\)</span> 是比 <span displaypfx="inline-" class="mathjax-container">\(\Delta x\)</span> 更小的高阶余项（High-order Remainder）。</p>
<div class="blog_h2"><span class="graybg">中值定理（Mean Value Theorems）</span></div>
<p>中值定理（Mean Value Theorems）是一组把“区间上的平均变化”与“某一点的瞬时变化率”连接起来的核心定理。它们在形式上不同，但共同结构是：在闭区间连续、在开区间可导，进而保证存在某个中间点 <span displaypfx="inline-" class="mathjax-container">\(c\in(a,b)\)</span> 使得斜率关系成立。</p>
<div class="blog_h3"><span class="graybg">罗尔中值定理</span></div>
<p>设 <span displaypfx="inline-" class="mathjax-container">\(f\)</span> 在 <span displaypfx="inline-" class="mathjax-container">\([a,b]\)</span> 上连续、在 <span displaypfx="inline-" class="mathjax-container">\((a,b)\)</span> 上可导，且 <span displaypfx="inline-" class="mathjax-container">\(f(a)=f(b)\)</span>。则存在 <span displaypfx="inline-" class="mathjax-container">\(c\in(a,b)\)</span> 使</p>
<span displaypfx="" class="mathjax-container">\[f'(c)=0\]</span>
<p>几何直觉：若曲线两端高度相同，那么中间至少有一点的切线是水平的。</p>
<div class="blog_h3"><span class="graybg">拉格朗日中值定理</span></div>
<p>设 <span displaypfx="inline-" class="mathjax-container">\(f\)</span> 在 <span displaypfx="inline-" class="mathjax-container">\([a,b]\)</span> 上连续、在 <span displaypfx="inline-" class="mathjax-container">\((a,b)\)</span> 上可导。则存在 <span displaypfx="inline-" class="mathjax-container">\(c\in(a,b)\)</span> 使</p>
<span displaypfx="" class="mathjax-container">\[f'(c)=\frac{f(b)-f(a)}{b-a}\]</span>
<p>几何直觉：区间割线斜率（平均变化率）等于某个点的切线斜率（瞬时变化率）。</p>
<div class="blog_h3"><span class="graybg">柯西中值定理</span></div>
<p>设 <span displaypfx="inline-" class="mathjax-container">\(f,g\)</span> 在 <span displaypfx="inline-" class="mathjax-container">\([a,b]\)</span> 上连续、在 <span displaypfx="inline-" class="mathjax-container">\((a,b)\)</span> 上可导。则存在 <span displaypfx="inline-" class="mathjax-container">\(c\in(a,b)\)</span> 使</p>
<span displaypfx="" class="mathjax-container">\[(f(b)-f(a))g'(c)=(g(b)-g(a))f'(c)\]</span>
<p>当分母不为 0 时，可写成比值形式：</p>
<span displaypfx="" class="mathjax-container">\[\frac{f'(c)}{g'(c)}=\frac{f(b)-f(a)}{g(b)-g(a)}\]</span>
<p>它把“单函数斜率比较”推广为“两个函数变化率的比较”，是洛必达法则（L'Hospital's Rule）证明链中的关键步骤。</p>
<div class="blog_h3"><span class="graybg">三类中值定理的区别</span></div>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">定理</td>
<td style="text-align: center;">涉及函数</td>
<td style="text-align: center;">额外条件</td>
<td style="text-align: center; width: 40%;">结论形式</td>
<td style="text-align: center;">关系</td>
</tr>
</thead>
<tbody>
<tr>
<td>罗尔中值定理</td>
<td>1 个函数 <span displaypfx="inline-" class="mathjax-container">\(f\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(f(a)=f(b)\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(f'(c)=0\)</span></td>
<td>拉格朗日定理的特殊情形</td>
</tr>
<tr>
<td>拉格朗日中值定理</td>
<td>1 个函数 <span displaypfx="inline-" class="mathjax-container">\(f\)</span></td>
<td>无额外端点相等条件</td>
<td><span displaypfx="inline-" class="mathjax-container">\(f'(c)=\frac{f(b)-f(a)}{b-a}\)</span></td>
<td>柯西定理取 <span displaypfx="inline-" class="mathjax-container">\(g(x)=x\)</span> 的特例</td>
</tr>
<tr>
<td>柯西中值定理</td>
<td>2 个函数 <span displaypfx="inline-" class="mathjax-container">\(f,g\)</span></td>
<td>两个函数都满足连续+可导</td>
<td><span displaypfx="inline-" class="mathjax-container">\((f(b)-f(a))g'(c)=(g(b)-g(a))f'(c)\)</span></td>
<td>三者中最一般形式</td>
</tr>
</tbody>
</table>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/mean-value-theorems.png"><img class="alignnone size-full wp-image-40785" src="https://blog.gmem.cc/wp-content/uploads/2026/03/mean-value-theorems.png" alt="mean-value-theorems" width="100%" /></a></p>
<div class="blog_h3"><span class="graybg">中值定理和AI</span></div>
<p>在 AI 系统中，中值定理主要作为理论工具出现：工程代码很少直接“调用定理”，但大量优化、稳定性与误差分析都在使用它的核心变形，即把“两个点的函数值差”转写为“某个中间点的导数（梯度）信息”。</p>
<ul>
<li>优化收敛分析（Optimization Convergence）：训练中常关心一步更新后损失变化 <span displaypfx="inline-" class="mathjax-container">\(L(\theta+\Delta)-L(\theta)\)</span>。中值定理把它连接到中间点的梯度，进而用于学习率条件与下降性证明。</li>
<li>Lipschitz 界与鲁棒性（Lipschitz Bound &amp; Robustness）：中值定理给出“输入小扰动导致输出变化”的上界形式。若梯度有界，则输出变化可控；这正是对抗鲁棒性分析和梯度惩罚（Gradient Penalty）类方法的数学基础之一。</li>
<li>有限差分与梯度估计（Finite Difference / Gradient Estimation）：割线斜率与切线斜率之间的关系来自拉格朗日中值定理，是数值优化里差分近似、线搜索（Line Search）和误差估计的核心依据。</li>
</ul>
<p>从“纯数学”到“AI 实践”的桥梁可以一句话概括：<span style="background-color: #c0c0c0;">中值定理把宏观变化量（函数值差）变成可优化的微观信息（导数/梯度）</span>。</p>
<div class="blog_h2"><span class="graybg">偏导数（Partial Derivative）</span></div>
<p>对多元函数 <span displaypfx="inline-" class="mathjax-container">\(f:\mathbb{R}^n\to\mathbb{R}\)</span>，偏导数把“只沿某一坐标轴方向的导数”形式化：固定其余变量，只让第 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 个变量变化。先写成最直接的极限定义：</p>
<span displaypfx="" class="mathjax-container">\[\frac{\partial f}{\partial x_i}(x_0)=\lim_{h\to 0}\frac{f(x_{0,1},\dots,x_{0,i-1},x_{0,i}+h,x_{0,i+1},\dots,x_{0,n})-f(x_0)}{h}\]</span>
<p>这里的 <span displaypfx="inline-" class="mathjax-container">\(h\)</span> 是“第 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 个变量的微小增量”（Increment）：只加在第 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 个坐标上，其他坐标保持不变。</p>
<p>在线性代数记号下，上式等价写成（更紧凑）：令 <span displaypfx="inline-" class="mathjax-container">\(e_i\)</span> 为第 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 个标准基向量（Standard Basis Vector），则</p>
<span displaypfx="" class="mathjax-container">\[\frac{\partial f}{\partial x_i}(x_0)=\lim_{h\to 0}\frac{f(x_0+h e_i)-f(x_0)}{h}\]</span>
<p>更常用的导数视角（计算视角）是：<span style="background-color: #c0c0c0;">把其余变量暂时当常数，把目标变量当自变量，直接套一元求导法则</span>。也就是说，极限定义负责“定义正确性”，日常计算通常用求导规则完成。</p>
<p>例如 <span displaypfx="inline-" class="mathjax-container">\(f(x,y)=x^2y\)</span>：对 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 求偏导时把 <span displaypfx="inline-" class="mathjax-container">\(y\)</span> 视作常数，得 <span displaypfx="inline-" class="mathjax-container">\(\frac{\partial f}{\partial x}=2xy\)</span>；对 <span displaypfx="inline-" class="mathjax-container">\(y\)</span> 求偏导时把 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 视作常数，得 <span displaypfx="inline-" class="mathjax-container">\(\frac{\partial f}{\partial y}=x^2\)</span>。</p>
<p>切换为极限视角，令 <span displaypfx="inline-" class="mathjax-container">\(f(x,y)=x^2y\)</span>，在点 <span displaypfx="inline-" class="mathjax-container">\((1,2)\)</span>。</p>
<span displaypfx="" class="mathjax-container">\[\frac{\partial f}{\partial x}(1,2)=\lim_{h\to 0}\frac{f(1+h,2)-f(1,2)}{h}\]</span>
<span displaypfx="" class="mathjax-container">\[=\lim_{h\to 0}\frac{2(1+h)^2-2}{h}\]</span>
<span displaypfx="" class="mathjax-container">\[=\lim_{h\to 0}(4+2h)=4\]</span>
<span displaypfx="" class="mathjax-container">\[\frac{\partial f}{\partial y}(1,2)=\lim_{h\to 0}\frac{f(1,2+h)-f(1,2)}{h}\]</span>
<span displaypfx="" class="mathjax-container">\[=\lim_{h\to 0}\frac{(2+h)-2}{h}=1\]</span>
<p>可以看到：求 <span displaypfx="inline-" class="mathjax-container">\(\partial f/\partial x\)</span> 时把 <span displaypfx="inline-" class="mathjax-container">\(y\)</span> 当常数；求 <span displaypfx="inline-" class="mathjax-container">\(\partial f/\partial y\)</span> 时把 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 当常数。这正是“其余变量固定”的具体计算含义。</p>
<p>梯度（Gradient）就是把所有偏导数按坐标收集成向量： <span displaypfx="inline-" class="mathjax-container">\(\nabla f(x)=(\partial f/\partial x_1,\dots,\partial f/\partial x_n)^\top\)</span>。</p>
<div class="blog_h2"><span class="graybg">微分（Differential）</span></div>
<p>在一元情形中，微分是“把函数增量线性化”的记号：给定一个小增量 <span displaypfx="inline-" class="mathjax-container">\(dx\)</span>，定义</p>
<span displaypfx="" class="mathjax-container">\[df\big|_{x_0}=f'(x_0)\,dx\]</span>
<p>此时真实增量满足 <span displaypfx="inline-" class="mathjax-container">\(\Delta f = df + o(dx)\)</span>。给定 <span displaypfx="inline-" class="mathjax-container">\(dx\)</span> 后， <span displaypfx="inline-" class="mathjax-container">\(df\)</span> 才对应一个确定数值。</p>
<p>例：若 <span displaypfx="inline-" class="mathjax-container">\(f(x)=x^2\)</span>，在 <span displaypfx="inline-" class="mathjax-container">\(x_0=3\)</span> 且 <span displaypfx="inline-" class="mathjax-container">\(dx=0.1\)</span> 时， <span displaypfx="inline-" class="mathjax-container">\(df=2x_0dx=0.6\)</span>，而 <span displaypfx="inline-" class="mathjax-container">\(\Delta f=f(3.1)-f(3)=0.61\)</span>。微分给出一阶近似，误差来自高阶项。</p>
<div class="blog_h2"><span class="graybg">全微分（Total Differential）</span></div>
<p>对多元函数 <span displaypfx="inline-" class="mathjax-container">\(f(x_1,\dots,x_n)\)</span>，全微分把“多方向小扰动下的一阶线性响应”写成：</p>
<span displaypfx="" class="mathjax-container">\[df=\sum_{i=1}^n \frac{\partial f}{\partial x_i}dx_i\]</span>
<p>令 <span displaypfx="inline-" class="mathjax-container">\(d\mathbf{x}=(dx_1,\dots,dx_n)^\top\)</span>，则向量形式是：</p>
<span displaypfx="" class="mathjax-container">\[df=(\nabla f(x))^\top d\mathbf{x}\]</span>
<p>若进一步把扰动分解为“方向 + 步长”： <span displaypfx="inline-" class="mathjax-container">\(d\mathbf{x}=\mathbf{u}\,ds\)</span>（<span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{u}\|_2=1\)</span>），则</p>
<span displaypfx="" class="mathjax-container">\[\frac{df}{ds}=\nabla f(x)\cdot \mathbf{u}\]</span>
<p>右侧就是方向导数（Directional Derivative）：全微分给出任意小位移的一阶近似，方向导数则把位移约束在单位方向并除去步长。</p>
<p>例：令 <span displaypfx="inline-" class="mathjax-container">\(f(x,y)=x^2y\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(\frac{\partial f}{\partial x}=2xy\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\frac{\partial f}{\partial y}=x^2\)</span>。在点 <span displaypfx="inline-" class="mathjax-container">\((x_0,y_0)=(1,2)\)</span>，若 <span displaypfx="inline-" class="mathjax-container">\(dx=0.1\)</span>、<span displaypfx="inline-" class="mathjax-container">\(dy=-0.05\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(df=2xy\,dx+x^2dy=2\cdot1\cdot2\cdot0.1+1\cdot(-0.05)=0.35\)</span>，给出 <span displaypfx="inline-" class="mathjax-container">\(\Delta f\)</span> 的一阶近似。</p>
<div class="blog_h2"><span class="graybg">向量微积分</span></div>
<p>Nabla 算子（Nabla Operator）记作 <span displaypfx="inline-" class="mathjax-container">\(\nabla\)</span>，本质上是把偏导算子按坐标排列成的“向量形式”：</p>
<span displaypfx="" class="mathjax-container">\[\nabla=\left(\frac{\partial}{\partial x_1},\dots,\frac{\partial}{\partial x_n}\right)^\top\]</span>
<p>它本身不是一个数，而是一个算子（Operator）。作用在标量场上得到梯度（Gradient）；与向量场点乘得到散度（Divergence）；与向量场叉乘得到旋度（Curl）；对标量场再取散度得到拉普拉斯（Laplacian）。</p>
<p>符号 <span displaypfx="inline-" class="mathjax-container">\(\|\cdot\|\)</span>（双竖线）表示范数（Norm）。因此 <span displaypfx="inline-" class="mathjax-container">\(\|\nabla f(x)\|\)</span> 是梯度向量的长度；而 <span displaypfx="inline-" class="mathjax-container">\(\|\nabla\|\)</span> 作为“算子范数”在工程推导中很少直接使用，通常需要明确它作用的函数空间与范数定义。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/nabla.jpg"><img class="alignnone size-full wp-image-40609" src="https://blog.gmem.cc/wp-content/uploads/2026/03/nabla.jpg" alt="nabla" width="100%" /></a></p>
<div class="blog_h3"><span class="graybg">梯度</span></div>
<p>梯度（Gradient）把标量函数 <span displaypfx="inline-" class="mathjax-container">\(f:\mathbb{R}^n\to\mathbb{R}\)</span> 的局部变化率组织成向量：</p>
<span displaypfx="" class="mathjax-container">\[\nabla f(x)=\left(\frac{\partial f}{\partial x_1},\dots,\frac{\partial f}{\partial x_n}\right)^\top\]</span>
<p>它指向函数增长最快的方向（Steepest Ascent Direction），模长刻画该方向上的最大斜率。在优化里，梯度下降（Gradient Descent）沿 <span displaypfx="inline-" class="mathjax-container">\(-\nabla f\)</span> 走，是因为这是一阶近似下最快下降方向。</p>
<p>例： <span displaypfx="inline-" class="mathjax-container">\(f(x,y)=x^2+2y^2\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(\nabla f=(2x,4y)\)</span>，在点 <span displaypfx="inline-" class="mathjax-container">\((1,1)\)</span> 处梯度为 <span displaypfx="inline-" class="mathjax-container">\((2,4)\)</span>，表示沿 y 方向的增长更陡。</p>
<p>方向导数（Directional Derivative）把“沿某个方向的变化率”写成点积：若 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{u}\)</span> 是单位方向向量，则</p>
<span displaypfx="" class="mathjax-container">\[D_{\mathbf{u}}f(x)=\nabla f(x)\cdot \mathbf{u}\]</span>
<p>符号先约定： <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 是当前点， <span displaypfx="inline-" class="mathjax-container">\(\mathbf{u}\)</span> 是单位方向（<span displaypfx="inline-" class="mathjax-container">\(\|\mathbf{u}\|_2=1\)</span>）， <span displaypfx="inline-" class="mathjax-container">\(\varepsilon\)</span> 是沿该方向的步长（可正可负的小实数）。方向导数定义为</p>
<span displaypfx="" class="mathjax-container">\[D_{\mathbf{u}}f(x)=\lim_{\varepsilon\to 0}\frac{f(x+\varepsilon\mathbf{u})-f(x)}{\varepsilon}\]</span>
<p>对 <span displaypfx="inline-" class="mathjax-container">\(f(x+\varepsilon\mathbf{u})\)</span> 做一阶 Taylor 展开：</p>
<span displaypfx="" class="mathjax-container">\[f(x+\varepsilon\mathbf{u})=f(x)+\varepsilon\,\nabla f(x)\cdot\mathbf{u}+o(\varepsilon)\]</span>
<p>代回定义式：</p>
<span displaypfx="" class="mathjax-container">\[\frac{f(x+\varepsilon\mathbf{u})-f(x)}{\varepsilon}\]</span>
<span displaypfx="" class="mathjax-container">\[=\nabla f(x)\cdot\mathbf{u}+\frac{o(\varepsilon)}{\varepsilon}\]</span>
<p>令 <span displaypfx="inline-" class="mathjax-container">\(\varepsilon\to 0\)</span>，由于 <span displaypfx="inline-" class="mathjax-container">\(o(\varepsilon)/\varepsilon\to 0\)</span>，得到 <span displaypfx="inline-" class="mathjax-container">\(D_{\mathbf{u}}f(x)=\nabla f(x)\cdot\mathbf{u}\)</span>。</p>
<div class="blog_h3"><span class="graybg">散度</span></div>
<p>场（Field）是“把空间中每个点映射到一个量”的函数。标量场（Scalar Field）<span displaypfx="inline-" class="mathjax-container">\(f(x)\)</span> 在每个点输出一个标量；向量场（Vector Field）<span displaypfx="inline-" class="mathjax-container">\(\mathbf{F}(x)\)</span> 在每个点输出一个向量。梯度作用在标量场上，散度/旋度作用在向量场上。</p>
<p>散度（Divergence）作用在向量场 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{F}=(F_1,\dots,F_n)^\top:\mathbb{R}^n\to\mathbb{R}^n\)</span> 上。这里先把两个术语说清楚：</p>
<span displaypfx="" class="mathjax-container">\[J_{\mathbf{F}}(x)=\left[\frac{\partial F_i}{\partial x_j}\right]_{i,j=1}^n\]</span>
<p>上式是雅可比矩阵（Jacobian）：第 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 行第 <span displaypfx="inline-" class="mathjax-container">\(j\)</span> 列表示 <span displaypfx="inline-" class="mathjax-container">\(F_i\)</span> 对 <span displaypfx="inline-" class="mathjax-container">\(x_j\)</span> 的偏导。迹（Trace）是矩阵对角线元素之和，因此</p>
<span displaypfx="" class="mathjax-container">\[\mathrm{tr}(J_{\mathbf{F}})=\sum_{i=1}^n \frac{\partial F_i}{\partial x_i}\]</span>
<p>而散度按定义正是这条和式，所以“散度 = Jacobian 的迹”：</p>
<span displaypfx="" class="mathjax-container">\[\nabla\cdot \mathbf{F}(x)=\mathrm{tr}(J_{\mathbf{F}}(x))=\sum_{i=1}^n \frac{\partial F_i}{\partial x_i}\]</span>
<p>几何/物理直觉：把 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{F}\)</span> 想成“流体速度场（Velocity Field）”，散度衡量一个点附近是否像“源（Source）/汇（Sink）”——单位体积的净流出率。散度为正表示净流出，为负表示净流入。</p>
<p>例：二维场 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{F}(x,y)=(x,y)\)</span> 的 Jacobian 是 <span displaypfx="inline-" class="mathjax-container">\(\begin{bmatrix}1&amp;0\\0&amp;1\end{bmatrix}\)</span>，其迹为 <span displaypfx="inline-" class="mathjax-container">\(1+1=2\)</span>，所以散度也等于 2，在任意点都表现为均匀“发散”。</p>
<div class="blog_h3"><span class="graybg">旋度</span></div>
<p>旋度（Curl）衡量向量场的局部旋转（Local Rotation）。在三维中：</p>
<span displaypfx="" class="mathjax-container">\[\nabla\times \mathbf{F}=\left(\frac{\partial F_3}{\partial y}-\frac{\partial F_2}{\partial z},\ \frac{\partial F_1}{\partial z}-\frac{\partial F_3}{\partial x},\ \frac{\partial F_2}{\partial x}-\frac{\partial F_1}{\partial y}\right)\]</span>
<p>直觉上，可把它理解为“放一个很小的桨轮（Paddle Wheel）在该点附近，桨轮是否会被带着转”。保守场（Conservative Field）满足 <span displaypfx="inline-" class="mathjax-container">\(\nabla\times\mathbf{F}=\mathbf{0}\)</span>，这与“路径无关”/“存在势函数”是等价刻画。</p>
<p>例：二维旋转场 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{F}(x,y)=(-y,x,0)\)</span> 的旋度为 <span displaypfx="inline-" class="mathjax-container">\((0,0,2)\)</span>，表示绕 z 轴的均匀旋转趋势。</p>
<p>拉普拉斯算子（Laplacian）作用在标量场上，定义为梯度的散度：</p>
<span displaypfx="" class="mathjax-container">\[\nabla^2 f=\nabla\cdot(\nabla f)=\sum_{i=1}^n \frac{\partial^2 f}{\partial x_i^2}\]</span>
<p>它常出现在扩散（Diffusion）与平滑（Smoothing）问题中，也常被用作“曲率/粗糙度”的度量。例： <span displaypfx="inline-" class="mathjax-container">\(f(x,y)=x^2+y^2\)</span> 则 <span displaypfx="inline-" class="mathjax-container">\(\nabla^2 f=2+2=4\)</span>。</p>
<div class="blog_h2"><span class="graybg">Jacobian 矩阵</span></div>
<p>当函数的输出不再是一个标量，而是一个向量时，梯度这个概念就不够用了。此时需要把“每个输出分量对每个输入变量的一阶变化率”统一收集起来，这个对象就是 Jacobian 矩阵（Jacobian Matrix）。它是一阶导数在向量值函数上的自然推广，也是 Hessian 的直接前置概念。</p>
<p>设向量值函数</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{F}:\mathbb{R}^n\to\mathbb{R}^m,\qquad \mathbf{F}(\mathbf{x})=\begin{bmatrix}F_1(\mathbf{x})\\ \vdots\\ F_m(\mathbf{x})\end{bmatrix}\]</span>
<p>其中输入 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(x_1,\dots,x_n)^\top\)</span>，输出 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{F}(\mathbf{x})\)</span> 有 <span displaypfx="inline-" class="mathjax-container">\(m\)</span> 个分量。Jacobian 矩阵定义为：</p>
<span displaypfx="" class="mathjax-container">\[J_{\mathbf{F}}(\mathbf{x})=\left[\frac{\partial F_i}{\partial x_j}(\mathbf{x})\right]_{i=1,\dots,m;\,j=1,\dots,n}\]</span>
<p>按矩阵展开，就是一个 <span displaypfx="inline-" class="mathjax-container">\(m\times n\)</span> 矩阵：</p>
<span displaypfx="" class="mathjax-container">\[J_{\mathbf{F}}(\mathbf{x})= \begin{bmatrix} \frac{\partial F_1}{\partial x_1} &amp; \frac{\partial F_1}{\partial x_2} &amp; \cdots &amp; \frac{\partial F_1}{\partial x_n}\\ \frac{\partial F_2}{\partial x_1} &amp; \frac{\partial F_2}{\partial x_2} &amp; \cdots &amp; \frac{\partial F_2}{\partial x_n}\\ \vdots &amp; \vdots &amp; \ddots &amp; \vdots\\ \frac{\partial F_m}{\partial x_1} &amp; \frac{\partial F_m}{\partial x_2} &amp; \cdots &amp; \frac{\partial F_m}{\partial x_n} \end{bmatrix}\]</span>
<p>这里第 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 行第 <span displaypfx="inline-" class="mathjax-container">\(j\)</span> 列的元素 <span displaypfx="inline-" class="mathjax-container">\(\frac{\partial F_i}{\partial x_j}\)</span> 表示：第 <span displaypfx="inline-" class="mathjax-container">\(j\)</span> 个输入变量发生微小变化时，第 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 个输出分量会怎样一阶变化。按矩阵读法，<span style="background-color: #c0c0c0;">行对应输出分量，列对应输入变量</span>，因此 Jacobian 本质上是一张局部灵敏度表（Local Sensitivity Table）。</p>
<p>它描述的不是全局非线性结构，而是函数在某个点附近的局部线性映射：输入空间里的一个小扰动向量 <span displaypfx="inline-" class="mathjax-container">\(d\mathbf{x}\)</span> 经过 Jacobian 作用后，变成输出空间中的一阶近似扰动 <span displaypfx="inline-" class="mathjax-container">\(d\mathbf{F}\)</span>。因此，Jacobian 可以理解为“该点附近最能代表原函数的一阶线性算子”。</p>
<p>它与全微分的关系最直接。若在点 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 附近加入一个小扰动 <span displaypfx="inline-" class="mathjax-container">\(d\mathbf{x}\)</span>，则输出的一阶变化满足：</p>
<span displaypfx="" class="mathjax-container">\[d\mathbf{F}\approx J_{\mathbf{F}}(\mathbf{x})\,d\mathbf{x}\]</span>
<p>这条式子就是向量值函数的一阶线性化。也就是说，Jacobian 在局部扮演的角色，类似于一元函数里的导数：它给出“最好的线性近似”。若输出是一维，即 <span displaypfx="inline-" class="mathjax-container">\(m=1\)</span>，Jacobian 就退化成一个 <span displaypfx="inline-" class="mathjax-container">\(1\times n\)</span> 的行向量；它与梯度本质上包含同一组偏导数，只是排布约定可能不同。</p>
<p>一个二维到二维的例子最容易看清。设</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{F}(x,y)=\begin{bmatrix}x^2y\\ x+y^2\end{bmatrix}\]</span>
<p>则第一行来自分量函数 <span displaypfx="inline-" class="mathjax-container">\(F_1(x,y)=x^2y\)</span>，第二行来自 <span displaypfx="inline-" class="mathjax-container">\(F_2(x,y)=x+y^2\)</span>。逐项求偏导可得：</p>
<span displaypfx="" class="mathjax-container">\[J_{\mathbf{F}}(x,y)= \begin{bmatrix} 2xy &amp; x^2\\ 1 &amp; 2y \end{bmatrix}\]</span>
<p>例如在点 <span displaypfx="inline-" class="mathjax-container">\((1,2)\)</span>，Jacobian 为</p>
<span displaypfx="" class="mathjax-container">\[J_{\mathbf{F}}(1,2)= \begin{bmatrix} 4 &amp; 1\\ 1 &amp; 4 \end{bmatrix}\]</span>
<p>这表示：在该点附近，若输入发生微小变化 <span displaypfx="inline-" class="mathjax-container">\((dx,dy)^\top\)</span>，则输出变化近似为</p>
<span displaypfx="" class="mathjax-container">\[d\mathbf{F}\approx \begin{bmatrix} 4 &amp; 1\\ 1 &amp; 4 \end{bmatrix} \begin{bmatrix} dx\\ dy \end{bmatrix}\]</span>
<p>第一行说明输出第一分量大致按 <span displaypfx="inline-" class="mathjax-container">\(4dx+dy\)</span> 变化，第二行说明输出第二分量大致按 <span displaypfx="inline-" class="mathjax-container">\(dx+4dy\)</span> 变化。Jacobian 因而可以被理解为局部灵敏度矩阵（Sensitivity Matrix）。</p>
<p>对标量函数 <span displaypfx="inline-" class="mathjax-container">\(f:\mathbb{R}^n\to\mathbb{R}\)</span>，梯度 <span displaypfx="inline-" class="mathjax-container">\(\nabla f:\mathbb{R}^n\to\mathbb{R}^n\)</span> 本身就是一个向量值函数，因此 Hessian 可以直接看成梯度映射的 Jacobian：</p>
<span displaypfx="" class="mathjax-container">\[\nabla^2 f(\mathbf{x})=J_{\nabla f}(\mathbf{x})\]</span>
<p>这就是把 Jacobian 放在 Hessian 前面的原因：先理解“向量值函数的一阶导数如何组织成矩阵”，再看“标量函数的梯度再求一次导”，Hessian 的结构就不会显得突兀。</p>
<p>在机器学习中，Jacobian 最常出现在三类地方：</p>
<ol>
<li>反向传播（Backpropagation）：本质上是在链式法则（Chain Rule）下逐层组合这些局部 Jacobian。前一层输出的微小变化如何传到后一层，正是由对应层的 Jacobian 决定。</li>
<li>向量场分析：散度（Divergence）等于 Jacobian 的迹（Trace）。</li>
<li>生成模型、正则化与鲁棒性分析：常关心 Jacobian 的谱范数（Spectral Norm）或 Frobenius 范数，以度量局部放大效应。</li>
</ol>
<p>若输出维度和输入维度都很大，显式构造完整 Jacobian 也会很贵，因此工程上常直接计算 Jacobian-Vector Product 或 Vector-Jacobian Product，而不是把整块矩阵完全展开。</p>
<p>在神经网络语境里，Jacobian 到底“针对激活值还是针对权重”，取决于谁被当作自变量。若研究层与层之间的信号传播，常写成 <span displaypfx="inline-" class="mathjax-container">\(\frac{\partial h^{(l+1)}}{\partial h^{(l)}}\)</span>，这时它针对的是激活值（Activation）或层表示；若研究模型输出对输入的敏感度，可写成 <span displaypfx="inline-" class="mathjax-container">\(\frac{\partial y}{\partial x}\)</span>；若研究输出对参数的敏感度，也可以写成 <span displaypfx="inline-" class="mathjax-container">\(\frac{\partial y}{\partial \theta}\)</span>。因此，Jacobian 的本质是“一个向量怎样对另一个向量发生一阶变化”，并不预先限定变量一定是激活值还是权重。</p>
<div class="blog_h2"><span class="graybg">Hessian 矩阵</span></div>
<p>梯度（Gradient）回答的是“函数沿各坐标方向的一阶变化率”；Hessian 矩阵（Hessian Matrix）进一步回答的是“这些一阶变化率本身又在怎样变化”。这一点可以直接从“梯度是一个向量值函数”展开出来。对标量函数 <span displaypfx="inline-" class="mathjax-container">\(f:\mathbb{R}^n\to\mathbb{R}\)</span>，梯度写成</p>
<span displaypfx="" class="mathjax-container">\[\nabla f(\mathbf{x})=\begin{bmatrix}\frac{\partial f}{\partial x_1}\\ \frac{\partial f}{\partial x_2}\\ \vdots\\ \frac{\partial f}{\partial x_n}\end{bmatrix}\]</span>
<p>这里 <span displaypfx="inline-" class="mathjax-container">\(\nabla f\)</span> 已经不是标量，而是把输入向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 映射为另一个向量的函数。因此可以像对任何向量值函数那样，对它再求一次 Jacobian：</p>
<span displaypfx="" class="mathjax-container">\[J_{\nabla f}(\mathbf{x})=\frac{\partial (\nabla f)}{\partial \mathbf{x}}\]</span>
<p>把梯度各分量逐项代进去，Jacobian 的第 <span displaypfx="inline-" class="mathjax-container">\((i,j)\)</span> 个元素就是“梯度第 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 个分量对输入第 <span displaypfx="inline-" class="mathjax-container">\(j\)</span> 个变量的偏导数”：</p>
<span displaypfx="" class="mathjax-container">\[\big[J_{\nabla f}(\mathbf{x})\big]_{ij}=\frac{\partial}{\partial x_j}\left(\frac{\partial f}{\partial x_i}\right)=\frac{\partial^2 f}{\partial x_j\partial x_i}\]</span>
<p>于是整块矩阵就是</p>
<span displaypfx="" class="mathjax-container">\[J_{\nabla f}(\mathbf{x})=\begin{bmatrix}\frac{\partial^2 f}{\partial x_1\partial x_1} &amp; \frac{\partial^2 f}{\partial x_2\partial x_1} &amp; \cdots &amp; \frac{\partial^2 f}{\partial x_n\partial x_1}\\ \frac{\partial^2 f}{\partial x_1\partial x_2} &amp; \frac{\partial^2 f}{\partial x_2\partial x_2} &amp; \cdots &amp; \frac{\partial^2 f}{\partial x_n\partial x_2}\\ \vdots &amp; \vdots &amp; \ddots &amp; \vdots\\ \frac{\partial^2 f}{\partial x_1\partial x_n} &amp; \frac{\partial^2 f}{\partial x_2\partial x_n} &amp; \cdots &amp; \frac{\partial^2 f}{\partial x_n\partial x_n}\end{bmatrix}\]</span>
<p>这正是 Hessian：</p>
<span displaypfx="" class="mathjax-container">\[\nabla^2 f(\mathbf{x})=J_{\nabla f}(\mathbf{x})\]</span>
<p>这个等式的含义很直接：Hessian 不是凭空引入的另一种矩阵，而就是“梯度这个向量场对输入的 Jacobian”。</p>
<p>直接从二阶导角度看，Hessian 是多元函数的二阶导数对象，用来描述局部曲率（Curvature）、凹凸性以及临界点附近的二阶形状。</p>
<p>设标量函数 <span displaypfx="inline-" class="mathjax-container">\(f:\mathbb{R}^n\to\mathbb{R}\)</span>，输入向量为 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}=(x_1,\dots,x_n)^\top\)</span>。Hessian 矩阵记作 <span displaypfx="inline-" class="mathjax-container">\(\nabla^2 f(\mathbf{x})\)</span> 或 <span displaypfx="inline-" class="mathjax-container">\(H_f(\mathbf{x})\)</span>，定义为：</p>
<span displaypfx="" class="mathjax-container">\[\nabla^2 f(\mathbf{x})=\left[\frac{\partial^2 f}{\partial x_i\partial x_j}(\mathbf{x})\right]_{i,j=1}^{n}\]</span>
<p>这里 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 和 <span displaypfx="inline-" class="mathjax-container">\(j\)</span> 都从 <span displaypfx="inline-" class="mathjax-container">\(1\)</span> 遍历到 <span displaypfx="inline-" class="mathjax-container">\(n\)</span>，因此 Hessian 会收集所有变量对 <span displaypfx="inline-" class="mathjax-container">\((x_i,x_j)\)</span> 的二阶偏导。之所以自然形成一个 <span displaypfx="inline-" class="mathjax-container">\(n\times n\)</span> 的“全组合”矩阵，是因为一阶导数 <span displaypfx="inline-" class="mathjax-container">\(\nabla f\)</span> 本身已经有 <span displaypfx="inline-" class="mathjax-container">\(n\)</span> 个分量；再对这 <span displaypfx="inline-" class="mathjax-container">\(n\)</span> 个分量分别对 <span displaypfx="inline-" class="mathjax-container">\(n\)</span> 个输入变量各求一次导，就得到 <span displaypfx="inline-" class="mathjax-container">\(n\times n\)</span> 个二阶偏导项。前面展开的 <span displaypfx="inline-" class="mathjax-container">\(J_{\nabla f}(\mathbf{x})\)</span> 就是这块矩阵，因此这里不再重复写一遍。</p>
<p>把梯度记为 <span displaypfx="inline-" class="mathjax-container">\(\nabla f(\mathbf{x})=(g_1,\dots,g_n)^\top\)</span>，其中 <span displaypfx="inline-" class="mathjax-container">\(g_i=\frac{\partial f}{\partial x_i}\)</span>，则 Hessian 的第 <span displaypfx="inline-" class="mathjax-container">\((i,j)\)</span> 个元素可以直接写成 <span displaypfx="inline-" class="mathjax-container">\(H_{ij}=\frac{\partial g_i}{\partial x_j}\)</span>。这个记号把它的意义说得很清楚：它衡量“第 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 个方向上的斜率”会不会随着第 <span displaypfx="inline-" class="mathjax-container">\(j\)</span> 个变量的变化而改变。</p>
<p>对角线元素 <span displaypfx="inline-" class="mathjax-container">\(\frac{\partial^2 f}{\partial x_i^2}\)</span> 描述沿单一坐标方向的纯二阶曲率，也就是该方向本身的弯曲强弱；非对角元素 <span displaypfx="inline-" class="mathjax-container">\(\frac{\partial^2 f}{\partial x_i\partial x_j}\)</span> 描述不同方向之间的局部耦合（Local Coupling）。当 <span displaypfx="inline-" class="mathjax-container">\(H_{ij}=0\)</span> 时，意味着在当前点附近，变量 <span displaypfx="inline-" class="mathjax-container">\(x_j\)</span> 的微小变化不会改变第 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 个方向上的一阶斜率；当 <span displaypfx="inline-" class="mathjax-container">\(H_{ij}\neq 0\)</span> 时，两个方向在局部二阶结构上发生耦合。</p>
<p>这种耦合会直接反映在等高线（Contour）形状上：若非对角项接近零，局部二次近似更接近与坐标轴对齐的“正椭圆碗”；若非对角项明显非零，等高线会发生倾斜，说明改变一个变量会连带改变另一个方向上的坡度。</p>
<p>若 <span displaypfx="inline-" class="mathjax-container">\(f\)</span> 足够光滑，满足二阶混合偏导连续，则由 Clairaut / Schwarz 定理可得</p>
<span displaypfx="" class="mathjax-container">\[\frac{\partial^2 f}{\partial x_i\partial x_j}=\frac{\partial^2 f}{\partial x_j\partial x_i}\]</span>
<p>因此 Hessian 矩阵是对称矩阵（Symmetric Matrix）。这点非常重要，因为一旦 Hessian 对称，就可以用特征值（Eigenvalue）来判断局部曲率：正特征值对应向上弯，负特征值对应向下弯，正负并存则意味着不同方向上的弯曲趋势相反。</p>
<p>Hessian 的几何意义可以通过二阶 Taylor 展开看得最清楚。对点 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}\)</span> 附近的微小扰动 <span displaypfx="inline-" class="mathjax-container">\(\Delta \mathbf{x}\)</span>，有：</p>
<span displaypfx="" class="mathjax-container">\[f(\mathbf{x}+\Delta\mathbf{x})\approx f(\mathbf{x})+\nabla f(\mathbf{x})^\top \Delta\mathbf{x}+\frac{1}{2}\Delta\mathbf{x}^\top \nabla^2 f(\mathbf{x})\Delta\mathbf{x}\]</span>
<p>这里第一项 <span displaypfx="inline-" class="mathjax-container">\(f(\mathbf{x})\)</span> 是当前函数值，第二项 <span displaypfx="inline-" class="mathjax-container">\(\nabla f(\mathbf{x})^\top \Delta\mathbf{x}\)</span> 是一阶线性变化，第三项 <span displaypfx="inline-" class="mathjax-container">\(\frac{1}{2}\Delta\mathbf{x}^\top \nabla^2 f(\mathbf{x})\Delta\mathbf{x}\)</span> 就是二阶曲率修正项。也就是说，梯度告诉你“朝哪边走函数会立刻增减”，Hessian 则告诉你“地形本身是碗状、山丘状，还是马鞍状”。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/hessian-locality-preview.png"><img class="alignnone size-full" src="https://blog.gmem.cc/wp-content/uploads/2026/03/hessian-locality.png" alt="hessian-locality" width="2307" height="1169" /></a></p>
<p>二维情形最直观。设</p>
<span displaypfx="" class="mathjax-container">\[f(x_1,x_2)=x_1^2+3x_1x_2+2x_2^2\]</span>
<p>先求梯度：</p>
<span displaypfx="" class="mathjax-container">\[\nabla f(x_1,x_2)=\begin{bmatrix}2x_1+3x_2\\3x_1+4x_2\end{bmatrix}\]</span>
<p>再求二阶偏导，可得：</p>
<span displaypfx="" class="mathjax-container">\[\frac{\partial^2 f}{\partial x_1^2}=2,\qquad \frac{\partial^2 f}{\partial x_1\partial x_2}=3,\qquad \frac{\partial^2 f}{\partial x_2^2}=4\]</span>
<p>因此 Hessian 为：</p>
<span displaypfx="" class="mathjax-container">\[\nabla^2 f(x_1,x_2)=\begin{bmatrix}2 &amp; 3\\3 &amp; 4\end{bmatrix}\]</span>
<p>这个例子还有一个关键特征：Hessian 与 <span displaypfx="inline-" class="mathjax-container">\((x_1,x_2)\)</span> 无关，因此它说明该函数在整个空间里都是同一种二次曲面（Quadratic Surface）。对二次函数而言，Hessian 足以完整决定其曲率结构。</p>
<p>在极值判别里，Hessian 主要出现在临界点（Critical Point）附近。若某点 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}^*\)</span> 满足 <span displaypfx="inline-" class="mathjax-container">\(\nabla f(\mathbf{x}^*)=\mathbf{0}\)</span>，则：</p>
<ul>
<li>若 <span displaypfx="inline-" class="mathjax-container">\(\nabla^2 f(\mathbf{x}^*)\)</span> 正定（Positive Definite），即对任意非零向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{v}\)</span> 都有 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{v}^\top \nabla^2 f(\mathbf{x}^*)\mathbf{v}&gt;0\)</span>，则该点是局部极小值（Local Minimum）。</li>
<li>若 <span displaypfx="inline-" class="mathjax-container">\(\nabla^2 f(\mathbf{x}^*)\)</span> 负定（Negative Definite），即对任意非零向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{v}\)</span> 都有 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{v}^\top \nabla^2 f(\mathbf{x}^*)\mathbf{v}&lt;0\)</span>，则该点是局部极大值（Local Maximum）。</li>
<li>若 Hessian 不定（Indefinite），即存在方向使二次型为正，也存在方向使其为负，则该点是鞍点（Saddle Point）。</li>
<li>若 Hessian 只有半正定、半负定，或出现零特征值，则二阶信息不足以单独判定，还需要更高阶分析或结合函数结构进一步判断。</li>
</ul>
<p>这套判据和一维情形完全一致：一维里 <span displaypfx="inline-" class="mathjax-container">\(f''(x^*)&gt;0\)</span> 表示“碗底”， <span displaypfx="inline-" class="mathjax-container">\(f''(x^*)&lt;0\)</span> 表示“山顶”；Hessian 只是把这个二阶导概念推广到了多维空间。</p>
<p>在优化中，Hessian 的意义更直接。牛顿法（Newton's Method）用它近似局部曲面，并据此选择更合理的更新方向：</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{x}_{t+1}=\mathbf{x}_t-\big(\nabla^2 f(\mathbf{x}_t)\big)^{-1}\nabla f(\mathbf{x}_t)\]</span>
<p>与只看一阶斜率的梯度下降不同，牛顿法还利用了局部曲率信息：若某个方向很陡但也弯得很厉害，步长就应更谨慎；若某个方向很平缓，更新可以相对更大。这也是为什么 Hessian 会出现在牛顿法、拟牛顿法（BFGS / L-BFGS）以及很多二阶优化分析中。</p>
<p>在机器学习里，Hessian 还常用来讨论损失面的尖锐度（Sharpness）、参数可辨识性以及训练稳定性。但深度学习模型维度极高，完整 Hessian 的存储与求逆代价非常大：若参数维度为 <span displaypfx="inline-" class="mathjax-container">\(d\)</span>，Hessian 大小就是 <span displaypfx="inline-" class="mathjax-container">\(d\times d\)</span>。因此工程上更常用 Hessian 向量积（Hessian-Vector Product）、对角近似、低秩近似，或拟牛顿方法来间接利用二阶信息，而不是显式构造整块矩阵。</p>
<p>在神经网络里，单独说 Hessian 时，默认通常指损失函数对参数向量 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 的 Hessian，即 <span displaypfx="inline-" class="mathjax-container">\(\nabla_\theta^2 L(\theta)\)</span>。原因很直接：优化真正要更新的是权重，因此人们最关心的是“损失面对参数空间的局部曲率”。当然，Hessian 也可以对输入或中间激活值来求，例如 <span displaypfx="inline-" class="mathjax-container">\(\nabla_x^2 f(x)\)</span> 或 <span displaypfx="inline-" class="mathjax-container">\(\nabla_h^2 f(h)\)</span>，它们分别描述输入空间或表示空间中的局部弯曲；只是从工程语境看，这类用法通常不是默认含义。</p>
<div class="blog_h2"><span class="graybg">积分</span></div>
<div class="blog_h3"><span class="graybg">不定积分</span></div>
<p>不定积分（Indefinite Integral）也叫反导数、原函数。是“由变化率反推原函数（Antiderivative）”：已知 <span displaypfx="inline-" class="mathjax-container">\(f\)</span>，寻找所有满足 <span displaypfx="inline-" class="mathjax-container">\(F'(x)=f(x)\)</span> 的函数 <span displaypfx="inline-" class="mathjax-container">\(F\)</span>。</p>
<p><span style="background-color: #c0c0c0;">一句话强调：不定积分就是“已知导函数（导数），求原函数”的过程。</span></p>
<span displaypfx="" class="mathjax-container">\[\int f(x)\,dx=F(x)+C\]</span>
<div class="blog_h4"><span class="graybg">从变化率反推状态</span></div>
<p>把导数看作“瞬时变化率”最容易理解积分的方向。若 <span displaypfx="inline-" class="mathjax-container">\(s(t)\)</span> 是位置、<span displaypfx="inline-" class="mathjax-container">\(v(t)\)</span> 是速度，则 <span displaypfx="inline-" class="mathjax-container">\(s'(t)=v(t)\)</span>。当只知道 <span displaypfx="inline-" class="mathjax-container">\(v(t)\)</span> 时，要恢复 <span displaypfx="inline-" class="mathjax-container">\(s(t)\)</span> 就是在做积分。</p>
<span displaypfx="" class="mathjax-container">\[s'(t)=v(t)\ \Longrightarrow\ s(t)=\int v(t)\,dt\]</span>
<div class="blog_h4"><span class="graybg">为什么必须有 +C</span></div>
<p>因为微分会“抹掉常数项”。不同函数只要相差一个常数，导数就完全一样：</p>
<span displaypfx="" class="mathjax-container">\[\frac{d}{dx}(x^2)=\frac{d}{dx}(x^2+5)=\frac{d}{dx}(x^2-100)=2x\]</span>
<p>所以当你从 <span displaypfx="inline-" class="mathjax-container">\(f(x)=2x\)</span> 反推原函数时，只能确定主体是 <span displaypfx="inline-" class="mathjax-container">\(x^2\)</span>，无法确定常数偏移。这就是积分常数（Constant of Integration）<span displaypfx="inline-" class="mathjax-container">\(C\)</span> 的来源。若再给一个初值条件（Initial Condition），例如 <span displaypfx="inline-" class="mathjax-container">\(F(x_0)=y_0\)</span>，<span displaypfx="inline-" class="mathjax-container">\(C\)</span> 才会被唯一确定。</p>
<div class="blog_h4"><span class="graybg">几何图像：不是一条曲线，而是一族</span></div>
<p><span displaypfx="inline-" class="mathjax-container">\(\int f(x)\,dx\)</span> 的结果对应一族函数 <span displaypfx="inline-" class="mathjax-container">\(\{F(x)+C\mid C\in\mathbb{R}\}\)</span>。它们形状完全相同，只是沿 <span displaypfx="inline-" class="mathjax-container">\(y\)</span> 轴上下平移；在同一个 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 处，这族曲线的切线斜率都等于 <span displaypfx="inline-" class="mathjax-container">\(f(x)\)</span>。</p>
<div class="blog_h4"><span class="graybg">一个最小可算例</span></div>
<span displaypfx="" class="mathjax-container">\[\int 2x\,dx=x^2+C\]</span>
<p>验算： <span displaypfx="inline-" class="mathjax-container">\(\frac{d}{dx}(x^2+C)=2x\)</span>。这一步强调的是“求导与积分互为逆过程”，但逆过程会保留一个常数不确定性。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/indefinite-integral1.png"><img class="alignnone size-full wp-image-40773" src="https://blog.gmem.cc/wp-content/uploads/2026/03/indefinite-integral1.png" alt="indefinite-integral" width="100%" /></a></p>
<div class="blog_h3"><span class="graybg">微积分基本定理（Fundamental Theorem of Calculus）</span></div>
<p>不定积分与定积分的连接点是微积分基本定理（Fundamental Theorem of Calculus）。它包含两条互补结论：</p>
<ol>
<li>若 <span displaypfx="inline-" class="mathjax-container">\(F'(x)=f(x)\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(\int_a^b f(x)\,dx=F(b)-F(a)\)</span>。这告诉我们：定积分可以通过任意一个原函数在端点处相减来计算。</li>
<li>定义 <span displaypfx="inline-" class="mathjax-container">\(G(x)=\int_a^x f(t)\,dt\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(G'(x)=f(x)\)</span>。这告诉我们：把函数从 <span displaypfx="inline-" class="mathjax-container">\(a\)</span> 到 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 累积起来，得到的累积函数本身就是一个原函数。</li>
</ol>
<p><span style="background-color: #c0c0c0;">一句话强调：定积分就是原函数（不定积分）在区间两端的函数值“收尾相减”</span>，即 <span displaypfx="inline-" class="mathjax-container">\(\int_a^b f(x)\,dx=F(b)-F(a)\)</span>。</p>
<p>例： <span displaypfx="inline-" class="mathjax-container">\(f(x)=2x\)</span>，取原函数 <span displaypfx="inline-" class="mathjax-container">\(F(x)=x^2\)</span>，则</p>
<span displaypfx="" class="mathjax-container">\[\int_1^3 2x\,dx=F(3)-F(1)=9-1=8\]</span>
<div class="blog_h3"><span class="graybg">定积分</span></div>
<p>定积分（Definite Integral）可看成“带符号面积（Signed Area）”或“连续求和”。Riemann 和定义为：</p>
<span displaypfx="" class="mathjax-container">\[\int_a^b f(x)\,dx=\lim_{n\to\infty}\sum_{k=1}^{n}f(\xi_k)\Delta x_k\]</span>
<p>若上下界中出现 <span displaypfx="inline-" class="mathjax-container">\(\infty\)</span> 或 <span displaypfx="inline-" class="mathjax-container">\(-\infty\)</span>，它仍然属于定积分范畴，只是更准确地叫广义积分（Improper Integral）或广义定积分：本质上仍是在一个区间上求累积量，只是需要先把无穷区间截断，再用极限恢复。例如</p>
<span displaypfx="" class="mathjax-container">\[\int_a^{\infty} f(x)\,dx:=\lim_{R\to\infty}\int_a^R f(x)\,dx\]</span>
<p>因此“上下界无穷”不是不定积分，而是<span style="background-color: #c0c0c0;">定积分的特殊形式</span>。</p>
<p>在 AI 里，连续概率密度函数（Probability Density Function, PDF）的概率计算 <span displaypfx="inline-" class="mathjax-container">\(P(a\le X\le b)=\int_a^b p(x)\,dx\)</span> 本质上就是定积分。</p>
<div class="blog_h3"><span class="graybg">常用积分公式</span></div>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">被积函数</td>
<td style="text-align: center;">积分结果</td>
<td style="text-align: center;">备注</td>
</tr>
</thead>
<tbody>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(x^n\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{x^{n+1}}{n+1}+C\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(n\ne -1\)</span></td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{1}{x}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\ln|x|+C\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(x\ne 0\)</span></td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(e^x\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(e^x+C\)</span></td>
<td>指数函数</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\sin x\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(-\cos x+C\)</span></td>
<td>三角函数</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\cos x\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\sin x+C\)</span></td>
<td>三角函数</td>
</tr>
<tr>
<td><span displaypfx="inline-" class="mathjax-container">\(\frac{1}{1+x^2}\)</span></td>
<td><span displaypfx="inline-" class="mathjax-container">\(\arctan x+C\)</span></td>
<td>反三角函数</td>
</tr>
</tbody>
</table>
<div class="blog_h3"><span class="graybg">多重积分</span></div>
<p>多重积分（Multiple Integrals）是把一维积分的“连续求和”推广到更高维区域上的积分运算。它积分的对象不再只是线段上的小长度，而是平面区域上的小面积、空间区域中的小体积，或者曲面上的小面片。因此，多重积分处理的是“在二维、三维或更一般区域上，把局部量连续累加成整体量”的问题。</p>
<p>它的阅读难点通常不在计算本身，而在于符号会很快遮住几何直觉。理解的关键仍然是把“积分”看成连续求和，只不过求和对象已经从一维区间扩展到了更高维区域。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/multiple-integral.jpg"><img class="alignnone size-full wp-image-40789" src="https://blog.gmem.cc/wp-content/uploads/2026/03/multiple-integral.jpg" alt="multiple-integral" width="100%" /></a></p>
<div class="blog_h4"><span class="graybg">从一维面积到三维体积</span></div>
<p>一重积分 <span displaypfx="inline-" class="mathjax-container">\(\int f(x)\,dx\)</span> 常被理解为曲线下的面积：在 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 轴上切出很多极窄的小条，每条小条的面积近似是“高度 <span displaypfx="inline-" class="mathjax-container">\(\times\)</span> 宽度”，也就是 <span displaypfx="inline-" class="mathjax-container">\(f(x)\,dx\)</span>，再把它们全部加起来。</p>
<p>双重积分把这个想法从“一条线”推广到“一块区域”。设 <span displaypfx="inline-" class="mathjax-container">\(D\)</span> 是平面上的一块区域，曲面高度由 <span displaypfx="inline-" class="mathjax-container">\(z=f(x,y)\)</span> 给出，那么</p>
<span displaypfx="" class="mathjax-container">\[\iint_D f(x,y)\,dx\,dy\]</span>
<p>就可以理解为：在区域 <span displaypfx="inline-" class="mathjax-container">\(D\)</span> 的每个小块 <span displaypfx="inline-" class="mathjax-container">\(dx\,dy\)</span> 上立起一根很细的小柱子，柱高是 <span displaypfx="inline-" class="mathjax-container">\(f(x,y)\)</span>。这些小柱子拼起来，形成曲面下方的一整块立体体积。于是双重积分最直观的几何意义就是：<span style="background-color: #c0c0c0;">把区域上方由高度函数堆出来的整块三维体积连续累加起来</span>。</p>
<p>再往上推广，三重积分</p>
<span displaypfx="" class="mathjax-container">\[\iiint_\Omega f(x,y,z)\,dV\]</span>
<p>表示在空间区域 <span displaypfx="inline-" class="mathjax-container">\(\Omega\)</span> 内，对每个微小体积元 <span displaypfx="inline-" class="mathjax-container">\(dV\)</span> 的函数值做累加。此时它不一定是在“求一个更高维体积”，更准确地说，是在整个空间体内部对某个量做总汇总，例如总质量、总能量、总代价或总概率权重。可以把它和一重积分放在同一条理解链上来看：速度函数在时间上的累积给出位移，密度函数在空间上的累积给出质量，能量密度（Energy Density）在区域或体积上的累积给出总能量。若 <span displaypfx="inline-" class="mathjax-container">\(\rho(x,y)\)</span> 是面密度，则 <span displaypfx="inline-" class="mathjax-container">\(\iint_D \rho(x,y)\,dA\)</span> 表示区域 <span displaypfx="inline-" class="mathjax-container">\(D\)</span> 上的总质量；若 <span displaypfx="inline-" class="mathjax-container">\(\rho(x,y,z)\)</span> 是体密度，则 <span displaypfx="inline-" class="mathjax-container">\(\iiint_\Omega \rho(x,y,z)\,dV\)</span> 表示空间区域 <span displaypfx="inline-" class="mathjax-container">\(\Omega\)</span> 内的总质量。积分符号的重数，本质上对应的是累积区域的维度。</p>
<div class="blog_h4"><span class="graybg">高度函数到底表示什么</span></div>
<p>双重积分里最需要读懂的是 <span displaypfx="inline-" class="mathjax-container">\(f(x,y)\)</span>。它并不总是“真实高度”，而是一个随位置变化的量。你可以把它看成“每个点上放了多少东西”。积分的过程，就是把整块区域上的这些局部贡献全部收集起来。</p>
<ul>
<li>当 <span displaypfx="inline-" class="mathjax-container">\(f(x,y)=1\)</span> 时，每个位置的高度都恒为 1，所以积分值在数值上就等于区域 <span displaypfx="inline-" class="mathjax-container">\(D\)</span> 的面积。此时双重积分退化为“面积公式”。</li>
<li>当 <span displaypfx="inline-" class="mathjax-container">\(f(x,y)\)</span> 是密度函数（Density Function）时，积分得到的是总质量、总电荷或总概率。也就是说，函数值越大，说明该位置“堆得越多”，对总量贡献越大。</li>
<li>当 <span displaypfx="inline-" class="mathjax-container">\(f(x,y)\)</span> 表示代价、风险、热量、响应强度等场量时，积分得到的是这类量在整个区域上的累积结果。</li>
</ul>
<p>因此，多重积分做的是一件很具体的事：把无穷多个微小局部量累加成一个整体量。</p>
<div class="blog_h4"><span class="graybg">带圈的积分号是什么意思</span></div>
<p>有时会看到带圈的双积分号 ∯。这个圈表示积分域是闭合的（Closed）：不是一块敞开的平面区域，而是一个完整包起来的曲面，例如球壳表面、气泡表面或任意封闭外壳。为了把这个“带圈”符号直接看出来，下面就直接写成在闭合曲面 <span displaypfx="inline-" class="mathjax-container">\(S\)</span> 上的积分。</p>
<p style="text-align: center; font-size: 1.15em;"><span style="text-align: center; font-size: 2em;">∯</span><sub>S</sub> <span displaypfx="inline-" class="mathjax-container">\(\mathbf{F}\cdot d\mathbf{S}\)</span></p>
<p>这里的含义通常不是“求面积”，而是计算向量场（Vector Field）穿过闭合曲面的总通量（Flux）。直观地说，就是看有多少“流”从这个封闭外壳内部穿出，或者从外部流入。它和高斯散度定理（Gauss's Divergence Theorem）直接相关，因此在偏微分方程（PDE）、连续介质建模、计算流体以及物理信息神经网络（Physics-Informed Neural Networks, PINNs）中十分重要。</p>
<div class="blog_h4"><span class="graybg">多重积分和AI</span></div>
<p>在 AI 中，多重积分最常见的身份是<span style="background-color: #c0c0c0;">概率分布上的总量计算器</span>。如果 <span displaypfx="inline-" class="mathjax-container">\(p(x,y)\)</span> 是二维随机变量的概率密度，那么</p>
<span displaypfx="" class="mathjax-container">\[\iint p(x,y)\,dx\,dy=1\]</span>
<p>表示整张概率曲面下方的总体积必须等于 1。这句话的本质是：所有可能情况加起来，概率总和必须是 100%。</p>
<p>进一步，期望（Expectation）就是在这个概率地形上做加权平均。以一维为例，</p>
<span displaypfx="" class="mathjax-container">\[\mathbb{E}[X]=\int x\,p(x)\,dx\]</span>
<p>表示每个位置 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 都按其概率权重 <span displaypfx="inline-" class="mathjax-container">\(p(x)\)</span> 参与平均；多维情形下则自然推广为多重积分。用几何语言说，期望就是这堆“概率质量”在各坐标方向上的重心位置。</p>
<p>这也是为什么高斯分布归一化、边缘分布（Marginal Distribution）、条件分布、变分推断（Variational Inference）、连续潜变量模型以及能量模型（Energy-Based Models）都离不开多重积分。很多时候模型真正要做的事，并不是求一个公式值，而是在高维概率空间里累计、归一化、消去变量或计算期望。</p>
<div class="blog_h2"><span class="graybg">卷积（Convolution）</span></div>
<p>卷积（Convolution）把两个函数/序列组合成第三个函数/序列，最常见的语义是：<span style="background-color: #c0c0c0;">“一个信号在另一个信号的权重/响应下做累积叠加”</span>。它同时是信号处理（Signal Processing）、系统理论（Systems Theory）与 CNN 的基础运算。</p>
<div class="blog_h3"><span class="graybg">连续卷积（Continuous Convolution）</span></div>
<p>对连续函数 <span displaypfx="inline-" class="mathjax-container">\(f(t)\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(g(t)\)</span>，卷积定义为：</p>
<span displaypfx="" class="mathjax-container">\[(f*g)(t)=\int_{-\infty}^{+\infty} f(\tau)\,g(t-\tau)\,d\tau\]</span>
<p>经典记忆法：<span style="background-color: #c0c0c0;">翻转（Flip）→ 平移（Shift）→ 相乘（Multiply）→ 积分（Integrate）</span>。其中 <span displaypfx="inline-" class="mathjax-container">\(g(t-\tau)\)</span> 这一项等价于把 <span displaypfx="inline-" class="mathjax-container">\(g\)</span> 先时间反转再按 <span displaypfx="inline-" class="mathjax-container">\(t\)</span> 平移。</p>
<div class="blog_h3"><span class="graybg">离散卷积（Discrete Convolution）</span></div>
<p>对离散序列 <span displaypfx="inline-" class="mathjax-container">\(x[n]\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(h[n]\)</span>，卷积定义为：</p>
<span displaypfx="" class="mathjax-container">\[(x*h)[n]=\sum_{k=-\infty}^{+\infty} x[k]\,h[n-k]\]</span>
<p>当序列有限长度时，上式求和区间会自然收缩为有限项。二维卷积（2D Convolution）/图像滤波可以视为把求和从一维扩展到二维索引。</p>
<div class="blog_h3"><span class="graybg">因果性与单侧卷积（Causality）</span></div>
<p>工程系统常满足因果性（Causality）：系统在时刻 <span displaypfx="inline-" class="mathjax-container">\(t\)</span> 的输出只依赖过去与当前输入，不依赖未来输入。若输入 <span displaypfx="inline-" class="mathjax-container">\(f(t)\)</span> 与系统的冲激响应（Impulse Response）<span displaypfx="inline-" class="mathjax-container">\(g(t)\)</span> 都是因果的（<span displaypfx="inline-" class="mathjax-container">\(t&lt;0\)</span> 时为 0），则卷积积分可写成单侧形式：</p>
<span displaypfx="" class="mathjax-container">\[(f*g)(t)=\int_{0}^{t} f(\tau)\,g(t-\tau)\,d\tau\]</span>
<p>这个形式更符合直觉：时刻 <span displaypfx="inline-" class="mathjax-container">\(t\)</span> 的结果由 <span displaypfx="inline-" class="mathjax-container">\([0,t]\)</span> 区间内“所有过去输入”的贡献叠加而来。</p>
<div class="blog_h3"><span class="graybg">直觉例子：打点滴的累积药效</span></div>
<p>把卷积理解成“累积药效”通常更直观。设 <span displaypfx="inline-" class="mathjax-container">\(r(t)\)</span> 是单位时间的滴注速率（Infusion Rate），<span displaypfx="inline-" class="mathjax-container">\(h(t)\)</span> 是“单位剂量在体内的药效/浓度随时间衰减曲线”（可以把它理解为冲激响应）。在时刻 <span displaypfx="inline-" class="mathjax-container">\(t\)</span> 的总药效/浓度 <span displaypfx="inline-" class="mathjax-container">\(c(t)\)</span> 可以写成：</p>
<span displaypfx="" class="mathjax-container">\[c(t)=(r*h)(t)=\int_{0}^{t} r(\tau)\,h(t-\tau)\,d\tau\]</span>
<p>解释：在过去每个时刻 <span displaypfx="inline-" class="mathjax-container">\(\tau\)</span> 滴入的一小部分药量 <span displaypfx="inline-" class="mathjax-container">\(r(\tau)\,d\tau\)</span>，到现在时刻 <span displaypfx="inline-" class="mathjax-container">\(t\)</span> 已经“经过了” <span displaypfx="inline-" class="mathjax-container">\(t-\tau\)</span> 的代谢时间，因此它的残留贡献按 <span displaypfx="inline-" class="mathjax-container">\(h(t-\tau)\)</span> 衰减；把所有过去贡献叠加，就得到当前总效果。这正是卷积“用一个响应核去累积历史”的核心语义。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/convolution.jpg"><img class="alignnone size-full wp-image-40805" src="https://blog.gmem.cc/wp-content/uploads/2026/03/convolution.jpg" alt="convolution" width="100%" /></a></p>
<div class="blog_h3"><span class="graybg">卷积与互相关（Cross-Correlation）</span></div>
<p>互相关（Cross-Correlation）与卷积的形式非常接近，但没有“核翻转”（Kernel Flip）：一维离散互相关常写成 <span displaypfx="inline-" class="mathjax-container">\(\sum_k x[k]\,w[n+k]\)</span>（不同资料索引略有差异）。深度学习框架里多数“卷积层”实现的是互相关，而不是严格数学卷积；由于卷积核参数是可学习的，翻不翻转并不会改变可表达的函数族，但在信号处理里二者语义不同，需注意约定。</p>
<div class="blog_h2"><span class="graybg">链式法则</span></div>
<p>链式法则（Chain Rule）是反向传播（Backpropagation）的核心：当计算图（Computation Graph）由一系列函数复合组成时，总导数等于沿路径的局部导数相乘。</p>
<p>在微分语言下更紧凑：若 <span displaypfx="inline-" class="mathjax-container">\(y=g(x)\)</span>、<span displaypfx="inline-" class="mathjax-container">\(z=f(y)\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(dz=f'(y)\,dy\)</span> 且 <span displaypfx="inline-" class="mathjax-container">\(dy=g'(x)\,dx\)</span>，合并得 <span displaypfx="inline-" class="mathjax-container">\(dz=f'(g(x))g'(x)\,dx\)</span>。反向传播做的就是把这些局部“系数”从输出一路乘回输入。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/rule-of-chains.jpg"><img class="alignnone size-full wp-image-40809" src="https://blog.gmem.cc/wp-content/uploads/2026/03/rule-of-chains.jpg" alt="rule-of-chains" width="100%" /></a></p>
<div class="blog_h2"><span class="graybg">最小二乘法</span></div>
<p>最小二乘法（Least Squares）解决“拟合误差最小”的问题。给定样本矩阵 <span displaypfx="inline-" class="mathjax-container">\(X\)</span> 与目标 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{y}\)</span>，线性模型 <span displaypfx="inline-" class="mathjax-container">\(\hat{\mathbf{y}}=X\mathbf{w}\)</span> 的目标是：</p>
<span displaypfx="" class="mathjax-container">\[\min_{\mathbf{w}}\ \|X\mathbf{w}-\mathbf{y}\|_2^2\]</span>
<p>当 <span displaypfx="inline-" class="mathjax-container">\(X^\top X\)</span> 可逆时，闭式解满足正规方程（Normal Equations）：</p>
<span displaypfx="" class="mathjax-container">\[X^\top X\mathbf{w}=X^\top\mathbf{y},\quad \mathbf{w}^*=(X^\top X)^{-1}X^\top\mathbf{y}\]</span>
<p>几何直觉： <span displaypfx="inline-" class="mathjax-container">\(X\mathbf{w}\)</span> 只能落在 <span displaypfx="inline-" class="mathjax-container">\(X\)</span> 的列空间（Column Space）中，最小二乘解就是把 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{y}\)</span> 正交投影（Orthogonal Projection）到这个空间上，剩余误差向量与列空间正交。</p>
<p>在 AI/统计实践中，若 <span displaypfx="inline-" class="mathjax-container">\(X^\top X\)</span> 病态或奇异，常用岭回归（Ridge Regression）：</p>
<span displaypfx="" class="mathjax-container">\[\min_{\mathbf{w}}\ \|X\mathbf{w}-\mathbf{y}\|_2^2+\lambda\|\mathbf{w}\|_2^2,\quad (X^\top X+\lambda I)\mathbf{w}=X^\top\mathbf{y}\]</span>
<p>它本质上是把二次目标做稳定化，降低方差并提升泛化。</p>
<div class="blog_h2"><span class="graybg">凸函数与凸优化</span></div>
<p>凸函数（Convex Function）是“碗状”的函数：任意两点连线上的函数值不超过端点函数值的线性插值。形式化定义：</p>
<span displaypfx="" class="mathjax-container">\[f(\lambda x_1+(1-\lambda)x_2)\le \lambda f(x_1)+(1-\lambda)f(x_2),\quad \lambda\in[0,1]\]</span>
<p>凸优化（Convex Optimization）之所以重要，是因为凸目标在凸可行域上没有“坏局部最小值”：任一局部最小值都是全局最小值。</p>
<p>若 <span displaypfx="inline-" class="mathjax-container">\(f\)</span> 二阶可导，则 Hessian 提供了最直接的局部判据：在一维中 <span displaypfx="inline-" class="mathjax-container">\(f''(x)\ge 0\)</span> 对应凸；在多维中，若对所有 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 都有 <span displaypfx="inline-" class="mathjax-container">\(\nabla^2 f(x)\succeq 0\)</span>（半正定，Positive Semidefinite），则 <span displaypfx="inline-" class="mathjax-container">\(f\)</span> 是凸函数。若处处 <span displaypfx="inline-" class="mathjax-container">\(\nabla^2 f(x)\succ 0\)</span>（正定，Positive Definite），则函数通常具有更强的严格凸性（Strict Convexity）。</p>
<p>损失函数的形状可以非常多样。需要区分两层含义：</p>
<ul>
<li>损失形式本身：例如 BCE/CE（对概率或对线性模型的 logits）是凸的，MSE 也是凸的。</li>
<li>对参数的整体目标：当把损失与深度网络的非线性参数化组合后，目标函数通常变成非凸（Non-convex），这不是“交叉熵不凸”，而是“网络映射让问题不凸”。</li>
</ul>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/loss-fn-convex.jpg"><img class="alignnone size-full wp-image-40813" src="https://blog.gmem.cc/wp-content/uploads/2026/03/loss-fn-convex.jpg" alt="loss-fn-convex" width="100%" /></a></p>
<div class="blog_h3"><span class="graybg">拉格朗日乘数法</span></div>
<p>拉格朗日乘数法（Lagrange Multiplier Method）处理约束优化（Constrained Optimization）：在满足约束的前提下最小化/最大化目标函数。常用写法是把约束写成函数形式：等式约束（Equality Constraints）<span displaypfx="inline-" class="mathjax-container">\(g_i(x)=0\)</span>，不等式约束（Inequality Constraints）<span displaypfx="inline-" class="mathjax-container">\(g_i(x)\le 0\)</span>。</p>
<p>对等式约束，构造拉格朗日函数（Lagrangian）：</p>
<span displaypfx="" class="mathjax-container">\[\mathcal{L}(x,\lambda)=f(x)+\sum_{i=1}^{m}\lambda_i g_i(x)\]</span>
<p>其中 <span displaypfx="inline-" class="mathjax-container">\(f(x)\)</span> 是目标函数（Objective），<span displaypfx="inline-" class="mathjax-container">\(g_i(x)\)</span> 是约束函数（Constraint Function），<span displaypfx="inline-" class="mathjax-container">\(\lambda_i\)</span> 是拉格朗日乘子（Lagrange Multiplier）。新增部分 <span displaypfx="inline-" class="mathjax-container">\(\sum_i \lambda_i g_i(x)\)</span> 称为拉格朗日项（Lagrange Term），单个约束对应的项是 <span displaypfx="inline-" class="mathjax-container">\(\lambda_i g_i(x)\)</span>。</p>
<p>在不同应用里乘子的记号可能不同：在优化理论里常写 <span displaypfx="inline-" class="mathjax-container">\(\lambda_i\)</span>，在支持向量机（SVM）里常写 <span displaypfx="inline-" class="mathjax-container">\(\alpha_i\)</span>（每个样本约束对应一个乘子）。</p>
<p>把 <span displaypfx="inline-" class="mathjax-container">\(\mathcal{L}(x,\lambda)\)</span> 看作关于原变量 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 与乘子 <span displaypfx="inline-" class="mathjax-container">\(\lambda\)</span> 的二元函数后，鞍点（Saddle Point）结构是约束被编码进目标函数后的直接结果。 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 的角色是压低总代价， <span displaypfx="inline-" class="mathjax-container">\(\lambda\)</span> 的角色是放大任何尚未满足的约束，因此两者天然形成极小极大（Min-Max）结构。</p>
<p>先看等式约束 <span displaypfx="inline-" class="mathjax-container">\(g(x)=0\)</span>。这里必须先把“为什么内层是最大化”说清楚：这不是记号习惯，而是为了把约束编码成一个<span style="background-color: #c0c0c0;">可行点保留原目标、不可行点直接罚到 <span displaypfx="inline-" class="mathjax-container">\(+\infty\)</span></span> 的机制。因此，固定某个 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 后，内层写成 <span displaypfx="inline-" class="mathjax-container">\(\max_\lambda \, (f(x)+\lambda g(x))\)</span>。如果 <span displaypfx="inline-" class="mathjax-container">\(g(x)\neq 0\)</span>，由于 <span displaypfx="inline-" class="mathjax-container">\(\lambda\)</span> 不受符号限制，最大化者总能把 <span displaypfx="inline-" class="mathjax-container">\(\lambda\)</span> 取到与 <span displaypfx="inline-" class="mathjax-container">\(g(x)\)</span> 同号且绝对值任意大，使 <span displaypfx="inline-" class="mathjax-container">\(\mathcal{L}(x,\lambda)\to\infty\)</span>；只有当 <span displaypfx="inline-" class="mathjax-container">\(g(x)=0\)</span> 时，拉格朗日项才消失，内层最大值才退化为 <span displaypfx="inline-" class="mathjax-container">\(f(x)\)</span>。因此 <span displaypfx="inline-" class="mathjax-container">\(\max_\lambda \mathcal{L}(x,\lambda)\)</span> 的作用，是把所有不满足等式约束的点直接排除掉。</p>
<p>不等式约束更容易看出这种“过滤”机制。若约束是 <span displaypfx="inline-" class="mathjax-container">\(g(x)\le 0\)</span> 且乘子满足 <span displaypfx="inline-" class="mathjax-container">\(\lambda\ge 0\)</span>，那么当 <span displaypfx="inline-" class="mathjax-container">\(g(x)&gt;0\)</span> 时，最大化者会把 <span displaypfx="inline-" class="mathjax-container">\(\lambda\)</span> 推大，使 <span displaypfx="inline-" class="mathjax-container">\(\lambda g(x)\to\infty\)</span>；当 <span displaypfx="inline-" class="mathjax-container">\(g(x)\le 0\)</span> 时，继续增大 <span displaypfx="inline-" class="mathjax-container">\(\lambda\)</span> 只会让值变小，因此最优选择是 <span displaypfx="inline-" class="mathjax-container">\(\lambda=0\)</span>。于是 <span displaypfx="inline-" class="mathjax-container">\(\max_{\lambda\ge 0}\mathcal{L}(x,\lambda)\)</span> 对可行点返回原始代价 <span displaypfx="inline-" class="mathjax-container">\(f(x)\)</span>，对不可行点返回“无限罚款”。外层再对 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 做最小化，就等价于只在可行域内最小化 <span displaypfx="inline-" class="mathjax-container">\(f(x)\)</span>。</p>
<span displaypfx="" class="mathjax-container">\[\min_x\ \max_\lambda\ \mathcal{L}(x,\lambda)\]</span>
<p>几何上，这正对应马鞍形曲面：沿 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 方向切开， <span displaypfx="inline-" class="mathjax-container">\(\mathcal{L}\)</span> 像一个向上开的“碗”，因为这里在做最小化；沿 <span displaypfx="inline-" class="mathjax-container">\(\lambda\)</span> 方向切开， <span displaypfx="inline-" class="mathjax-container">\(\mathcal{L}\)</span> 像一个向下开的“拱”，因为这里在做最大化。鞍点 <span displaypfx="inline-" class="mathjax-container">\((x^*,\lambda^*)\)</span> 的含义是：固定 <span displaypfx="inline-" class="mathjax-container">\(\lambda=\lambda^*\)</span> 时， <span displaypfx="inline-" class="mathjax-container">\(x^*\)</span> 已经不能再把值压低；固定 <span displaypfx="inline-" class="mathjax-container">\(x=x^*\)</span> 时， <span displaypfx="inline-" class="mathjax-container">\(\lambda^*\)</span> 也已经不能再把值抬高。原问题的最优解与约束的恰当作用强度，就在这个交点同时确定。</p>
<p>记号约定：上标星号（Asterisk）<span displaypfx="inline-" class="mathjax-container">\(^*\)</span> 通常表示“最优/最优点处的取值”，例如 <span displaypfx="inline-" class="mathjax-container">\(x^*\)</span> 是最优解， <span displaypfx="inline-" class="mathjax-container">\(\lambda^*\)</span> 是与之对应的最优乘子。</p>
<p>在鞍点 <span displaypfx="inline-" class="mathjax-container">\((x^*,\lambda^*)\)</span>，固定 <span displaypfx="inline-" class="mathjax-container">\(\lambda=\lambda^*\)</span> 时 <span displaypfx="inline-" class="mathjax-container">\(x^*\)</span> 使 <span displaypfx="inline-" class="mathjax-container">\(\mathcal{L}\)</span> 最小；固定 <span displaypfx="inline-" class="mathjax-container">\(x=x^*\)</span> 时 <span displaypfx="inline-" class="mathjax-container">\(\lambda^*\)</span> 使 <span displaypfx="inline-" class="mathjax-container">\(\mathcal{L}\)</span> 最大，可用不等式写成：</p>
<span displaypfx="" class="mathjax-container">\[\mathcal{L}(x^*,\lambda)\le \mathcal{L}(x^*,\lambda^*)\le \mathcal{L}(x,\lambda^*)\]</span>
<p>上面的鞍点不等式给出的是几何刻画；真正求解时，还需要把“这个点已经不能再降、也不能再升”的直观条件改写成可计算的方程。做法是检查拉格朗日函数（Lagrangian）<span displaypfx="inline-" class="mathjax-container">\(\mathcal{L}\)</span> 对各个变量的一阶变化：若在候选点附近，沿某个允许方向还能继续把值压低（对 <span displaypfx="inline-" class="mathjax-container">\(x\)</span>）或继续把值抬高（对 <span displaypfx="inline-" class="mathjax-container">\(\lambda\)</span>），那么该点就不可能是鞍点。</p>
<p>这就是一阶必要条件（First-Order Necessary Condition）的来源：若 <span displaypfx="inline-" class="mathjax-container">\(x^*\)</span> 是最优解，则一阶（线性）变化项必须已经消失，否则还存在继续改进的方向。这里“必要”不等于“充分”：满足一阶条件只说明它有可能是最优点，不说明它一定最优；要得到充分结论，还需要二阶条件、凸性（Convexity）或其他结构。</p>
<p>无约束情形最直接。在一维中，若 <span displaypfx="inline-" class="mathjax-container">\(x^*\)</span> 是可微且不在边界上的局部最小点，则向左或向右移动都不能让函数更小，因此斜率必须满足 <span displaypfx="inline-" class="mathjax-container">\(f'(x^*)=0\)</span>；多维里把“斜率”推广为梯度（Gradient），于是条件变为 <span displaypfx="inline-" class="mathjax-container">\(\nabla f(x^*)=0\)</span>。</p>
<p>把同样的思路移到等式约束上，求解目标就从“找原函数 <span displaypfx="inline-" class="mathjax-container">\(f\)</span> 的极小点”变成“找拉格朗日函数 <span displaypfx="inline-" class="mathjax-container">\(\mathcal{L}(x,\lambda)\)</span> 的鞍点”。对可导问题，一阶条件写成：</p>
<span displaypfx="" class="mathjax-container">\[\nabla_x \mathcal{L}(x^*,\lambda^*)=0,\quad g_i(x^*)=0\]</span>
<p>第一式表示：固定 <span displaypfx="inline-" class="mathjax-container">\(\lambda=\lambda^*\)</span> 后，已经找不到能继续降低 <span displaypfx="inline-" class="mathjax-container">\(\mathcal{L}\)</span> 的 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 方向；第二式就是可行性（Feasibility）本身。又因为 <span displaypfx="inline-" class="mathjax-container">\(\frac{\partial \mathcal{L}}{\partial \lambda_i}=g_i(x)\)</span>，所以“对乘子求偏导为 0”本质上只是把约束 <span displaypfx="inline-" class="mathjax-container">\(g_i(x)=0\)</span> 原样写回。</p>
<p>不等式约束时，乘子必须满足 <span displaypfx="inline-" class="mathjax-container">\(\lambda_i\ge 0\)</span>，因此鞍点结构相应写成：</p>
<span displaypfx="" class="mathjax-container">\[\min_x\ \max_{\lambda\ge 0}\ \mathcal{L}(x,\lambda)\]</span>
<p>此时除了驻点条件，还必须同时满足 KKT 条件（Karush–Kuhn–Tucker Conditions）。其中最关键的是互补松弛（Complementary Slackness）<span displaypfx="inline-" class="mathjax-container">\(\lambda_i g_i(x^*)=0\)</span>：每个约束在最优点只有两种状态——要么它是紧的（Active），即 <span displaypfx="inline-" class="mathjax-container">\(g_i(x^*)=0\)</span>；要么它不紧，此时对应乘子必须为 0，表示该约束在最优点处没有实际作用。</p>
<p>例（等式约束）：最小化 <span displaypfx="inline-" class="mathjax-container">\(f(x,y)=x^2+y^2\)</span>，约束 <span displaypfx="inline-" class="mathjax-container">\(x+y=1\)</span>。拉格朗日函数：</p>
<span displaypfx="" class="mathjax-container">\[\mathcal{L}(x,y,\lambda)=x^2+y^2+\lambda(x+y-1)\]</span>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/plot-lagrange.png"><img class="alignnone size-full wp-image-40821" src="https://blog.gmem.cc/wp-content/uploads/2026/03/plot-lagrange.png" alt="plot-lagrange" width="100%" /></a></p>
<p>其中 <span displaypfx="inline-" class="mathjax-container">\(\lambda(x+y-1)\)</span> 是拉格朗日项（Lagrange Term）：它把等式约束 <span displaypfx="inline-" class="mathjax-container">\(x+y-1=0\)</span> 以乘子加权的形式并入目标函数。</p>
<p>令偏导为零： <span displaypfx="inline-" class="mathjax-container">\(\frac{\partial \mathcal{L}}{\partial x}=2x+\lambda=0\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\frac{\partial \mathcal{L}}{\partial y}=2y+\lambda=0\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\frac{\partial \mathcal{L}}{\partial \lambda}=x+y-1=0\)</span>。注意 <span displaypfx="inline-" class="mathjax-container">\(\frac{\partial \mathcal{L}}{\partial \lambda}=0\)</span> 就是把约束 <span displaypfx="inline-" class="mathjax-container">\(x+y=1\)</span> 写回来；联立可得 <span displaypfx="inline-" class="mathjax-container">\(x=y=\frac{1}{2}\)</span>。几何上，这意味着最优点处目标函数等高线与约束曲线相切。</p>
<p>例（不等式约束）：最小化 <span displaypfx="inline-" class="mathjax-container">\(f(x)=x^2\)</span>，约束 <span displaypfx="inline-" class="mathjax-container">\(x\ge 1\)</span>。直觉上，无约束最小值在 <span displaypfx="inline-" class="mathjax-container">\(x=0\)</span>，但它不满足约束，所以最优点只能落在边界 <span displaypfx="inline-" class="mathjax-container">\(x=1\)</span>。</p>
<ol>
<li>把约束改写成标准形式：令 <span displaypfx="inline-" class="mathjax-container">\(g(x)=1-x\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(x\ge 1\Leftrightarrow g(x)\le 0\)</span>。</li>
<li>构造拉格朗日函数： <span displaypfx="inline-" class="mathjax-container">\(\mathcal{L}(x,\lambda)=f(x)+\lambda g(x)=x^2+\lambda(1-x)\)</span>。其中 <span displaypfx="inline-" class="mathjax-container">\(\lambda(1-x)\)</span> 是拉格朗日项（Lagrange Term），不等式情形要求 <span displaypfx="inline-" class="mathjax-container">\(\lambda\ge 0\)</span>。</li>
<li>写出 KKT 的核心条件：可行性（Feasibility）<span displaypfx="inline-" class="mathjax-container">\(1-x\le 0\)</span>；乘子非负 <span displaypfx="inline-" class="mathjax-container">\(\lambda\ge 0\)</span>；驻点（Stationarity）<span displaypfx="inline-" class="mathjax-container">\(\frac{d\mathcal{L}}{dx}=2x-\lambda=0\)</span>；互补松弛（Complementary Slackness）<span displaypfx="inline-" class="mathjax-container">\(\lambda(1-x)=0\)</span>。</li>
<li>解：由 <span displaypfx="inline-" class="mathjax-container">\(2x-\lambda=0\)</span> 得 <span displaypfx="inline-" class="mathjax-container">\(\lambda=2x\)</span>。互补松弛要求 <span displaypfx="inline-" class="mathjax-container">\(\lambda=0\)</span> 或 <span displaypfx="inline-" class="mathjax-container">\(x=1\)</span>。若 <span displaypfx="inline-" class="mathjax-container">\(\lambda=0\)</span> 则 <span displaypfx="inline-" class="mathjax-container">\(x=0\)</span>，但违反 <span displaypfx="inline-" class="mathjax-container">\(x\ge 1\)</span>；因此 <span displaypfx="inline-" class="mathjax-container">\(x^*=1\)</span>，进而 <span displaypfx="inline-" class="mathjax-container">\(\lambda^*=2\)</span>。</li>
<li>解释：在最优点处 <span displaypfx="inline-" class="mathjax-container">\(1-x^*=0\)</span>，该约束是“紧的”（Active），互补松弛允许乘子 <span displaypfx="inline-" class="mathjax-container">\(\lambda^*&gt;0\)</span>，它刻画了该约束在最优点处对解的影响强度。如果最优点落在可行域（Feasible Set）内部（约束不紧， <span displaypfx="inline-" class="mathjax-container">\(1-x^*&lt;0\)</span>），互补松弛会强制 <span displaypfx="inline-" class="mathjax-container">\(\lambda^*=0\)</span>。</li>
</ol>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/plot-lagrange-2.png"><img class="alignnone size-full wp-image-40825" src="https://blog.gmem.cc/wp-content/uploads/2026/03/plot-lagrange-2.png" alt="plot-lagrange-2" width="100%" /></a></p>
<div class="blog_h3"><span class="graybg">对偶问题</span></div>
<p>对偶问题（Dual Problem）从原始问题（Primal Problem）导出下界函数，用于分析可行性、间隙与最优性。标准形式：</p>
<span displaypfx="" class="mathjax-container">\[\min_x\ f(x)\ \text{s.t.}\ g_i(x)\le 0,\ h_j(x)=0\]</span>
<span displaypfx="" class="mathjax-container">\[g(\lambda,\nu)=\inf_x\Big(f(x)+\sum_i \lambda_i g_i(x)+\sum_j \nu_j h_j(x)\Big),\ \lambda_i\ge 0\]</span>
<span displaypfx="" class="mathjax-container">\[\max_{\lambda,\nu}\ g(\lambda,\nu)\ \text{s.t.}\ \lambda\ge 0\]</span>
<p>把括号中的表达式记为拉格朗日函数（Lagrangian）<span displaypfx="inline-" class="mathjax-container">\(\mathcal{L}(x,\lambda,\nu)=f(x)+\sum_i \lambda_i g_i(x)+\sum_j \nu_j h_j(x)\)</span>，则对偶函数（Dual Function）就是 <span displaypfx="inline-" class="mathjax-container">\(g(\lambda,\nu)=\inf_x \mathcal{L}(x,\lambda,\nu)\)</span>：固定乘子后先对原变量求下确界，把它“消去”，再对乘子最大化这个下界。</p>
<div class="blog_h4"><span class="graybg">例：SVM 对偶函数是怎么把变量“消掉”的</span></div>
<p>SVM 的对偶函数（Dual Function）来自一个标准过程：先写出原始问题（Primal Problem）的拉格朗日函数（Lagrangian），再对原变量取下确界（Infimum），把优化问题改写为只依赖乘子变量的形式。在线性支持向量机（Support Vector Machine, SVM）里，这个过程最清楚，因为 <span displaypfx="inline-" class="mathjax-container">\(\boldsymbol{\alpha}\)</span> 的出现既解释了“为什么叫对偶”，也把“把原变量消掉”变成了可逐步计算的代换。</p>
<p>考虑硬间隔（Hard-margin）线性 SVM。原始问题是：</p>
<span displaypfx="" class="mathjax-container">\[\min_{\mathbf{w},b}\ \frac{1}{2}\|\mathbf{w}\|_2^2\quad \text{s.t.}\quad y_i(\mathbf{w}^\top \mathbf{x}_i+b)-1\ge 0,\ i=1,\dots,n\]</span>
<p>把约束改写成标准不等式形式：</p>
<span displaypfx="" class="mathjax-container">\[g_i(\mathbf{w},b)=1-y_i(\mathbf{w}^\top \mathbf{x}_i+b)\le 0\]</span>
<p>于是拉格朗日函数为：</p>
<span displaypfx="" class="mathjax-container">\[\mathcal{L}(\mathbf{w},b,\boldsymbol{\alpha})=\frac{1}{2}\|\mathbf{w}\|_2^2+\sum_{i=1}^{n}\alpha_i\big(1-y_i(\mathbf{w}^\top \mathbf{x}_i+b)\big),\quad \alpha_i\ge 0\]</span>
<p>对偶函数（Dual Function）的定义是：固定乘子 <span displaypfx="inline-" class="mathjax-container">\(\boldsymbol{\alpha}\)</span>，对原变量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w},b\)</span> 取下确界：</p>
<span displaypfx="" class="mathjax-container">\[g(\boldsymbol{\alpha})=\inf_{\mathbf{w},b}\mathcal{L}(\mathbf{w},b,\boldsymbol{\alpha})\]</span>
<p>这里的关键结构已经出现了：原始问题直接优化 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w},b\)</span>，而对偶函数先把 <span displaypfx="inline-" class="mathjax-container">\(\boldsymbol{\alpha}\)</span> 固定住，把 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w},b\)</span> 当成待消去变量。随后得到的最大化问题，只剩乘子变量 <span displaypfx="inline-" class="mathjax-container">\(\boldsymbol{\alpha}\)</span>。这就是“对偶”的来源：<span style="background-color: #c0c0c0;">同一个最优化问题，被改写成了另一组变量上的伴随优化问题</span>。</p>
<p>现在把 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w},b\)</span> 完整消掉。先求驻点条件（Stationarity Conditions）。对 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w}\)</span> 求偏导：</p>
<span displaypfx="" class="mathjax-container">\[\frac{\partial \mathcal{L}}{\partial \mathbf{w}}=\mathbf{w}-\sum_{i=1}^{n}\alpha_i y_i \mathbf{x}_i=\mathbf{0}\]</span>
<p>因此</p>
<span displaypfx="" class="mathjax-container">\[\mathbf{w}=\sum_{i=1}^{n}\alpha_i y_i \mathbf{x}_i\]</span>
<p>对 <span displaypfx="inline-" class="mathjax-container">\(b\)</span> 求偏导：</p>
<span displaypfx="" class="mathjax-container">\[\frac{\partial \mathcal{L}}{\partial b}=-\sum_{i=1}^{n}\alpha_i y_i=0\]</span>
<p>因此</p>
<span displaypfx="" class="mathjax-container">\[\sum_{i=1}^{n}\alpha_i y_i=0\]</span>
<p>把这些结果代回拉格朗日函数之前，先把它展开成便于逐项代换的形式：</p>
<span displaypfx="" class="mathjax-container">\[\mathcal{L}(\mathbf{w},b,\boldsymbol{\alpha})=\frac{1}{2}\mathbf{w}^\top\mathbf{w}+\sum_{i=1}^{n}\alpha_i-\sum_{i=1}^{n}\alpha_i y_i\,\mathbf{w}^\top\mathbf{x}_i-b\sum_{i=1}^{n}\alpha_i y_i\]</span>
<p>第一项代入 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w}=\sum_{i=1}^{n}\alpha_i y_i \mathbf{x}_i\)</span>：</p>
<span displaypfx="" class="mathjax-container">\[\frac{1}{2}\mathbf{w}^\top\mathbf{w}=\frac{1}{2}\Big(\sum_{i=1}^{n}\alpha_i y_i \mathbf{x}_i\Big)^\top\Big(\sum_{j=1}^{n}\alpha_j y_j \mathbf{x}_j\Big)\]</span>
<span displaypfx="" class="mathjax-container">\[=\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_j y_i y_j\,\mathbf{x}_i^\top\mathbf{x}_j\]</span>
<p>第二项保持不变：</p>
<span displaypfx="" class="mathjax-container">\[\sum_{i=1}^{n}\alpha_i\]</span>
<p>第三项代入同一个 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w}\)</span> 表达式：</p>
<span displaypfx="" class="mathjax-container">\[-\sum_{i=1}^{n}\alpha_i y_i\,\mathbf{w}^\top\mathbf{x}_i=-\sum_{i=1}^{n}\alpha_i y_i\Big(\sum_{j=1}^{n}\alpha_j y_j \mathbf{x}_j\Big)^\top\mathbf{x}_i\]</span>
<span displaypfx="" class="mathjax-container">\[=-\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_j y_i y_j\,\mathbf{x}_j^\top\mathbf{x}_i\]</span>
<span displaypfx="" class="mathjax-container">\[=-\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_j y_i y_j\,\mathbf{x}_i^\top\mathbf{x}_j\]</span>
<p>最后一项利用 <span displaypfx="inline-" class="mathjax-container">\(\sum_{i=1}^{n}\alpha_i y_i=0\)</span> 直接消失：</p>
<span displaypfx="" class="mathjax-container">\[-b\sum_{i=1}^{n}\alpha_i y_i=0\]</span>
<p>因此</p>
<span displaypfx="" class="mathjax-container">\[g(\boldsymbol{\alpha})=\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_j y_i y_j\,\mathbf{x}_i^\top\mathbf{x}_j+\sum_{i=1}^{n}\alpha_i-\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_j y_i y_j\,\mathbf{x}_i^\top\mathbf{x}_j\]</span>
<span displaypfx="" class="mathjax-container">\[=\sum_{i=1}^{n}\alpha_i-\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_j y_i y_j\,\mathbf{x}_i^\top\mathbf{x}_j\]</span>
<p>于是对偶问题（Dual Problem）就是：</p>
<span displaypfx="" class="mathjax-container">\[\max_{\boldsymbol{\alpha}}\ g(\boldsymbol{\alpha})\quad \text{s.t.}\quad \alpha_i\ge 0,\ \sum_{i=1}^{n}\alpha_i y_i=0\]</span>
<p>此时“对偶”二字的含义就精确了：原始问题在参数空间里直接求 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{w},b\)</span>，对偶问题则在乘子空间里求 <span displaypfx="inline-" class="mathjax-container">\(\boldsymbol{\alpha}\)</span>；两者来自同一个拉格朗日结构，描述的是同一个最优解的两种表示。对 SVM 而言，更重要的结构变化是：数据 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}_i\)</span> 不再单独出现，而只通过内积（Inner Product）<span displaypfx="inline-" class="mathjax-container">\(\mathbf{x}_i^\top\mathbf{x}_j\)</span> 进入目标函数，这正是核技巧（Kernel Trick）的入口。</p>
<p>若问题是凸的且满足 Slater 条件，则强对偶（Strong Duality）成立，可以用鞍点形式表达“先最小化再最大化”与“先最大化再最小化”等价：</p>
<span displaypfx="" class="mathjax-container">\[\min_x\max_{\lambda\ge 0,\nu}\mathcal{L}(x,\lambda,\nu)=\max_{\lambda\ge 0,\nu}\min_x\mathcal{L}(x,\lambda,\nu)\]</span>
<p>对偶函数之所以是“下界”，来自一个简单但关键的不等式：对任意可行解 <span displaypfx="inline-" class="mathjax-container">\(x\)</span>（满足所有约束）与任意 <span displaypfx="inline-" class="mathjax-container">\(\lambda\ge 0\)</span>，都有</p>
<span displaypfx="" class="mathjax-container">\[f(x)\ge f(x)+\sum_i \lambda_i g_i(x)+\sum_j \nu_j h_j(x)\ge \inf_{x'}\Big(f(x')+\sum_i \lambda_i g_i(x')+\sum_j \nu_j h_j(x')\Big)=g(\lambda,\nu)\]</span>
<p>因此对任何 <span displaypfx="inline-" class="mathjax-container">\((\lambda,\nu)\)</span>，都有 <span displaypfx="inline-" class="mathjax-container">\(g(\lambda,\nu)\le p^*\)</span>（原始最优值），这就是弱对偶（Weak Duality）。</p>
<p>弱对偶（Weak Duality）总成立；也就是说，对偶问题给出的值永远不会高于原始问题的最优值。但弱对偶只保证“对偶值是下界”，并不保证这个下界恰好贴住原始最优值。若两者之间还差一截，这个差距就叫对偶间隙（Duality Gap）。</p>
<p>强对偶（Strong Duality）则更进一步：它要求原始最优值与对偶最优值完全相等，也就是对偶问题不只是给出一个保守下界，而是精确刻画了原问题的最优值。对很多凸优化问题而言，Slater 条件正是让这种“下界刚好贴住最优值”的关键保证。</p>
<p>从直观上看，Slater 条件要求可行域内部真的存在一个严格可行点。这意味着约束系统不是被边界死死卡住的退化结构，而是有真实的内部空间。可行域一旦有内部，拉格朗日乘子就更容易稳定地描述“目标函数下降趋势”和“约束反作用力”之间的平衡，因此原始问题与对偶问题之间更不容易出现缝隙。在凸优化里，这就是为什么 Slater 条件常被看作强对偶成立的重要通行证。</p>
<p>直观上，对偶变量（Dual Variables）可以看作约束的“影子价格（Shadow Price）”：如果把约束放宽一点点，最优目标值会如何变化。在很多问题中（例如支持向量机（SVM）），对偶化会把优化变量从“模型参数”转成“约束乘子”，并把数据依赖压缩为内积，从而自然导出核技巧（Kernel Trick）。</p>
<div class="blog_h4"><span class="graybg">影子价格（Shadow Price）</span></div>
<p>对偶变量（Dual Variable）常被称为影子价格（Shadow Price），因为它衡量的是：<span style="background-color: #c0c0c0;">如果把某条约束稍微放宽一点，最优目标值会改善多少</span>。这里的“价格”不是市场价格，而是“约束资源有多值钱”的边际刻度。</p>
<p>可以把约束想成一种稀缺资源。例如训练时有显存限制、预算限制、风险限制或几何边界限制；如果某条约束非常紧，那么它就像一个卡脖子的瓶颈。此时只要把这条约束稍微放宽一点，最优目标值就可能明显改善，于是它对应的对偶变量就会比较大。反过来，如果某条约束本来就很松，放宽它也几乎没有收益，那么它对应的对偶变量通常就是 0 或接近 0。</p>
<p>在数学上，这个直觉可以写成一种局部敏感度关系。若把约束写成</p>
<span displaypfx="" class="mathjax-container">\[g_i(x)\le b_i\]</span>
<p>其中 <span displaypfx="inline-" class="mathjax-container">\(b_i\)</span> 表示第 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 条约束允许的“资源上限”或“边界位置”，那么对应的最优值函数可以记为 <span displaypfx="inline-" class="mathjax-container">\(p^*(b)\)</span>。在适当条件下，对偶变量 <span displaypfx="inline-" class="mathjax-container">\(\lambda_i^*\)</span> 可以理解为最优值对 <span displaypfx="inline-" class="mathjax-container">\(b_i\)</span> 的边际变化率，也就是“把第 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 条约束放宽一点，最优值会朝什么方向变化、变化多快”。</p>
<p>在最小化问题中，若某条约束对应的 <span displaypfx="inline-" class="mathjax-container">\(\lambda_i^*\)</span> 很大，通常表示这条约束非常关键：它一旦被放宽，最优目标值会明显下降；若 <span displaypfx="inline-" class="mathjax-container">\(\lambda_i^*=0\)</span>，则说明该约束在当前最优点并没有真正起作用，放宽它也不会立刻带来收益。这与前面的互补松弛完全一致：<span style="background-color: #c0c0c0;">只有真正卡住最优解的约束，才会拥有非零影子价格</span>。</p>
<p>因此，影子价格提供了一个非常有用的解释视角：原始变量告诉我们“最优解长什么样”，而对偶变量告诉我们“哪些约束最贵、最紧、最值得被放宽”。这也是为什么在优化理论、经济学和机器学习里，对偶变量不仅是求解工具，也是理解模型结构的重要语言。</p>
<div class="blog_h4"><span class="graybg">Slater 条件</span></div>
<p>Slater 条件（Slater's Condition）是凸优化（Convex Optimization）里最常见的正则性条件（Regularity Condition）之一。它的作用不是改变优化问题本身，而是保证对偶理论能够“工作得很干净”：在满足它时，很多凸问题会满足强对偶（Strong Duality），也就是原始问题最优值与对偶问题最优值相等；同时，KKT 条件也更容易从“必要条件”提升为判定最优性的核心条件。</p>
<p>对标准凸优化问题</p>
<span displaypfx="" class="mathjax-container">\[ \min_x f(x)\quad \text{s.t.}\quad g_i(x)\le 0,\ h_j(x)=0 \]</span>
<p>如果 <span displaypfx="inline-" class="mathjax-container">\(f(x)\)</span> 和每个 <span displaypfx="inline-" class="mathjax-container">\(g_i(x)\)</span> 都是凸函数（Convex Function），每个 <span displaypfx="inline-" class="mathjax-container">\(h_j(x)\)</span> 都是仿射函数（Affine Function），那么 Slater 条件要求：<span style="background-color: #c0c0c0;">至少存在一个严格可行点（Strictly Feasible Point）</span> <span displaypfx="inline-" class="mathjax-container">\(\tilde{x}\)</span>，使得所有不等式约束都被“严格满足”，也就是</p>
<span displaypfx="" class="mathjax-container">\[ g_i(\tilde{x})&lt;0,\ \forall i,\qquad h_j(\tilde{x})=0,\ \forall j \]</span>
<p>这里“严格满足”四个字最关键。普通可行点只要求 <span displaypfx="inline-" class="mathjax-container">\(g_i(x)\le 0\)</span>，也就是允许刚好压在边界上；而 Slater 条件要求存在某个点，能让所有不等式约束都留出一点余量，也就是完全处在可行域内部，而不是贴着边界。</p>
<p>这个条件可以用一个非常直观的图像来理解。把不等式约束围成的可行域想成一个房间：</p>
<ul>
<li>如果房间内部真的有空间，存在一个点站在房间里，不碰任何墙，这就是满足 Slater 条件。</li>
<li>如果所谓“可行域”其实只是几面墙交出来的一条线、一个角、甚至一个点，根本没有真正的内部空间，那么 Slater 条件通常就不满足。</li>
</ul>
<p>因此，Slater 条件本质上是在说：<span style="background-color: #c0c0c0;">这个凸约束系统不能只是勉强拼出一个边界碎片，而要有真正的内部</span>。一旦内部存在，原始问题和对偶问题之间的间隙通常就会消失，拉格朗日乘子和 KKT 条件也会变得更稳定、更有解释力。</p>
<p>一个简单例子可以把它说清楚。考虑约束</p>
<span displaypfx="" class="mathjax-container">\[x\ge 0\]</span>
<p>写成标准形式是 <span displaypfx="inline-" class="mathjax-container">\(g(x)=-x\le 0\)</span>。这个约束满足 Slater 条件，因为取 <span displaypfx="inline-" class="mathjax-container">\(\tilde{x}=1\)</span> 时，有 <span displaypfx="inline-" class="mathjax-container">\(g(1)=-1&lt;0\)</span>。这说明可行域 <span displaypfx="inline-" class="mathjax-container">\([0,+\infty)\)</span> 不只是边界点 <span displaypfx="inline-" class="mathjax-container">\(x=0\)</span>，而是真正包含内部区域。</p>
<p>再看一个不满足 Slater 条件的例子：</p>
<span displaypfx="" class="mathjax-container">\[x^2\le 0\]</span>
<p>由于 <span displaypfx="inline-" class="mathjax-container">\(x^2\)</span> 永远不小于 0，这个约束唯一允许的点只有 <span displaypfx="inline-" class="mathjax-container">\(x=0\)</span>。可行域虽然非空，但没有任何点能让 <span displaypfx="inline-" class="mathjax-container">\(x^2&lt;0\)</span> 成立，所以不存在严格可行点，Slater 条件不成立。这样的约束系统只有边界、没有内部。</p>
<p>在机器学习常见的凸问题里，Slater 条件之所以频繁出现，是因为它几乎就是“强对偶成立的通行证”。例如在线性规划、逻辑回归的某些约束变体、支持向量机（SVM）的凸二次规划中，只要能找到一个严格可行点，就通常可以放心地从原始问题走到对偶问题，再用 KKT 条件解释最优解结构。反过来，如果没有 Slater 条件，就可能出现对偶间隙（Duality Gap），也就是对偶最优值严格小于原始最优值，此时只看对偶或只看 KKT 就不一定足够。</p>
<div class="blog_h4"><span class="graybg">概念速查</span></div>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="text-align: center;">概念</td>
<td style="text-align: center;">它回答的问题</td>
<td style="text-align: center;">最核心的一句话</td>
<td style="text-align: center;">在这一章里的作用</td>
</tr>
</thead>
<tbody>
<tr>
<td>弱对偶（Weak Duality）</td>
<td>对偶问题和原始问题之间至少有什么关系</td>
<td>对偶最优值永远不会高于原始最优值；它天然是一个下界</td>
<td>先建立“对偶为什么有意义”的最低保证</td>
</tr>
<tr>
<td>对偶间隙（Duality Gap）</td>
<td>为什么有时对偶值还不等于原始最优值</td>
<td>如果对偶下界还没贴住原始最优值，两者之间的差就是对偶间隙</td>
<td>解释为什么“有对偶”不等于“对偶已经足够”</td>
</tr>
<tr>
<td>强对偶（Strong Duality）</td>
<td>什么时候对偶问题就足以精确刻画原问题</td>
<td>原始最优值与对偶最优值完全相等，对偶不再只是保守下界</td>
<td>为从原始问题转到对偶问题提供理论正当性</td>
</tr>
<tr>
<td>Slater 条件（Slater's Condition）</td>
<td>凸优化里什么条件有助于强对偶成立</td>
<td>只要可行域内部存在严格可行点，很多凸问题就能消除对偶间隙</td>
<td>说明为什么强对偶和 KKT 在凸问题里经常可用</td>
</tr>
<tr>
<td>影子价格（Shadow Price）</td>
<td>对偶变量到底在解释什么</td>
<td>它衡量“把某条约束放宽一点，最优值会改善多少”</td>
<td>赋予拉格朗日乘子清晰的经济 / 几何解释</td>
</tr>
<tr>
<td>KKT 条件</td>
<td>最优解在约束下必须满足哪些平衡关系</td>
<td>目标函数的下降趋势与约束施加的反作用力在最优点平衡</td>
<td>把可行性、乘子、驻点与互补松弛统一成最优性条件</td>
</tr>
</tbody>
</table>
<div class="blog_h3"><span class="graybg">KKT 条件</span></div>
<div class="blog_h4"><span class="graybg">背景和定义</span></div>
<p>KKT 条件（Karush–Kuhn–Tucker Conditions）讨论的是<span style="background-color: #c0c0c0;">带约束优化问题在最优点必须满足什么条件</span>。无约束优化里，常见做法是令梯度（Gradient）为 0；但一旦问题带有不等式约束或等式约束，只看 <span displaypfx="inline-" class="mathjax-container">\(\nabla f(x)=0\)</span> 就不够了，因为最优点很可能被约束“顶”在边界上，而不是落在自由空间里的普通驻点。</p>
<p>标准形式写作：</p>
<span displaypfx="" class="mathjax-container">\[\min_x f(x)\quad \text{s.t.}\quad g_i(x)\le 0,\ h_j(x)=0\]</span>
<p>这里 <span displaypfx="inline-" class="mathjax-container">\(f(x)\)</span> 是目标函数（Objective Function），表示希望最小化的量；<span displaypfx="inline-" class="mathjax-container">\(x\)</span> 是优化变量（Optimization Variable）；<span displaypfx="inline-" class="mathjax-container">\(g_i(x)\le 0\)</span> 是第 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 个不等式约束（Inequality Constraint）；<span displaypfx="inline-" class="mathjax-container">\(h_j(x)=0\)</span> 是第 <span displaypfx="inline-" class="mathjax-container">\(j\)</span> 个等式约束（Equality Constraint）。KKT 条件给出的就是：当 <span displaypfx="inline-" class="mathjax-container">\(x^*\)</span> 真的是一个最优解时，它与对应的拉格朗日乘子（Lagrange Multipliers）之间必须满足一组相互配合的条件。</p>
<p>在凸优化（Convex Optimization）里，如果问题满足适当的正则性条件，例如 Slater 条件（Slater's Condition），KKT 条件往往不只是必要条件，还可以成为判定最优性的核心工具。在线性规划、二次规划、支持向量机（Support Vector Machine, SVM）和许多机器学习训练问题中，KKT 条件都直接参与求解过程。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/kkt-paraboloid-plane.png"><img class="alignnone size-full wp-image-41393" src="https://blog.gmem.cc/wp-content/uploads/2026/03/kkt-paraboloid-plane.png" alt="kkt-paraboloid-plane" width="2107" height="1134" /></a></p>
<div class="blog_h4"><span class="graybg">图解：四组条件如何逐条理解</span></div>
<p>上图使用的是活跃边界 <span displaypfx="inline-" class="mathjax-container">\(g(x)=1-x_1-x_2=0\)</span>。边界 <span displaypfx="inline-" class="mathjax-container">\(x_1+x_2=1\)</span> 的切向方向可取 <span displaypfx="inline-" class="mathjax-container">\((1,-1)\)</span>；与它垂直的向量都是法向量（Normal Vector），例如 <span displaypfx="inline-" class="mathjax-container">\((1,1)\)</span> 或 <span displaypfx="inline-" class="mathjax-container">\((-1,-1)\)</span>。如果把约束写成函数 <span displaypfx="inline-" class="mathjax-container">\(g(x)=1-x_1-x_2\)</span>，那么梯度 <span displaypfx="inline-" class="mathjax-container">\(\nabla g(x)=(-1,-1)\)</span> 就是一条法向量；它指向 <span displaypfx="inline-" class="mathjax-container">\(g(x)\)</span> 增大的方向，也就是不可行侧。</p>
<p>图中的橙色箭头对应驻点条件（Stationarity）里真正参与平衡的两个向量：目标梯度 <span displaypfx="inline-" class="mathjax-container">\(\nabla f(x^*)\)</span> 与乘子加权后的约束法向量 <span displaypfx="inline-" class="mathjax-container">\(\lambda^*\nabla g(x^*)\)</span>。它们在最优点首尾相接后得到 0，于是 <span displaypfx="inline-" class="mathjax-container">\(\nabla f(x^*)+\lambda^*\nabla g(x^*)=0\)</span> 不是抽象记号，而是边界最优点上的几何平衡：</p>
<ul>
<li><span style="background-color: #c0c0c0;">原始可行性（Primal Feasibility）</span>：解必须落在可行域内。对这张图而言，可行域是半空间 <span displaypfx="inline-" class="mathjax-container">\(x_1+x_2\ge 1\)</span>，最优点 <span displaypfx="inline-" class="mathjax-container">\(x^*\)</span> 落在它的活跃边界 <span displaypfx="inline-" class="mathjax-container">\(x_1+x_2=1\)</span> 上。</li>
<li><span style="background-color: #c0c0c0;">对偶可行性（Dual Feasibility）</span>：不等式约束的乘子必须非负，即 <span displaypfx="inline-" class="mathjax-container">\(\lambda^*\ge 0\)</span>。图中的计算给出 <span displaypfx="inline-" class="mathjax-container">\(\lambda^*=0.65\)</span>，表示这条边界在最优点处确实对目标下降施加了正的“反作用”。</li>
<li><span style="background-color: #c0c0c0;">驻点条件（Stationarity）</span>：沿边界的切向方向已经不能继续下降，因此目标梯度不再含有切向分量，只能落在法向空间里。单个活跃约束时，这就变成 <span displaypfx="inline-" class="mathjax-container">\(\nabla f(x^*)=-\lambda^*\nabla g(x^*)\)</span>。图中的两根橙色箭头正是这两个大小相等、方向相反的向量。</li>
<li><span style="background-color: #c0c0c0;">互补松弛（Complementary Slackness）</span>：约束若不接触最优点，就不会产生乘子；约束一旦卡在最优点上，对应乘子才会变成正值。当前图像展示的是活跃边界情形，所以 <span displaypfx="inline-" class="mathjax-container">\(g(x^*)=0\)</span> 且 <span displaypfx="inline-" class="mathjax-container">\(\lambda^*&gt;0\)</span> 同时成立。</li>
</ul>
<p>法向量之所以关键，是因为它刻画了“离开边界最快”的方向；切向方向则刻画了“沿边界滑动”的方向。边界最优点的本质结论是：<span style="background-color: #c0c0c0;">目标函数想继续下降的那一部分趋势，已经完全被约束边界的法向作用抵消；沿边界本身则不存在进一步下降方向</span>。</p>
<div class="blog_h4"><span class="graybg">具像化描述</span></div>
<p>可以把 KKT 条件想成一个“遛狗”问题。优化目标是：狗想尽可能往远处跑；约束条件是：主人手里只有一根 5 米长的狗绳，因此狗的活动范围不能超过这条绳子的长度。不等式约束 <span displaypfx="inline-" class="mathjax-container">\(g_i(x)\le 0\)</span> 的作用，就像在说“不能超过这根绳子允许的极限”；等式约束 <span displaypfx="inline-" class="mathjax-container">\(h_j(x)=0\)</span> 则对应那些必须被精确满足的固定条件。</p>
<p>这个比喻里最重要的是区分“绳子是否真正起作用”。如果狗最后只跑到 3 米处就停下，例如已经闻到味道、找到目标，或者在那里已经达到最优状态，那么绳子仍然是松的，还留有 2 米余量。这时约束虽然存在，但它没有真正限制住解。相反，如果狗拼命往前冲，最后正好跑到 5 米极限，绳子就会被拉紧；此时狗还想继续前进，但被约束挡住了。KKT 条件刻画的正是这种“<span style="background-color: #c0c0c0;">目标继续改进的趋势，与约束施加的阻拦作用，在最优点达到平衡</span>”的状态。</p>
<p>其中最形象的一条就是互补松弛（Complementary Slackness）。它表达的是：每一个不等式约束在最优点都只有两种状态。</p>
<ul>
<li>如果某个约束正好卡在边界上，即 <span displaypfx="inline-" class="mathjax-container">\(g_i(x^*)=0\)</span>，就像狗刚好把 5 米狗绳拉到极限，此时这条绳子真的“顶住了”最优解，它对应的乘子 <span displaypfx="inline-" class="mathjax-container">\(\lambda_i^*\)</span> 可以大于 0。</li>
<li>如果某个约束离边界还有余量，即 <span displaypfx="inline-" class="mathjax-container">\(g_i(x^*)&lt;0\)</span>，就像狗只跑到 3 米处，绳子仍然松弛，那么它对应的乘子必须是 0，也就是 <span displaypfx="inline-" class="mathjax-container">\(\lambda_i^*=0\)</span>。</li>
</ul>
<p>因此，乘子 <span displaypfx="inline-" class="mathjax-container">\(\lambda_i^*\)</span> 可以直观理解为绳子的<span style="background-color: #c0c0c0;">拉力</span>，也就是约束对最优解施加的压力。在优化语言里，这个量也常被解释为影子价格（Shadow Price）：如果把这条约束稍微放宽一点，最优目标值会改善多少。拉力不为 0，说明这条约束正在真正影响解；拉力为 0，说明这条约束虽然存在，但在最优点处并没有发挥作用。</p>
<div class="blog_h4"><span class="graybg">公式逐元素解释</span></div>
<p>把原问题写成统一形式后，先定义拉格朗日函数（Lagrangian）：</p>
<span displaypfx="" class="mathjax-container">\[\mathcal{L}(x,\lambda,\nu)=f(x)+\sum_i \lambda_i g_i(x)+\sum_j \nu_j h_j(x)\]</span>
<p>这个式子里的每个元素都有明确含义：</p>
<ul>
<li><span displaypfx="inline-" class="mathjax-container">\(\mathcal{L}\)</span>：拉格朗日函数，把目标函数和约束统一写进一个式子里。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(x\)</span>：原始变量（Primal Variable），也就是模型真正要优化的参数。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(f(x)\)</span>：目标函数，表示希望最小化的代价、损失或能量。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(g_i(x)\)</span>：第 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 个不等式约束函数；要求它满足 <span displaypfx="inline-" class="mathjax-container">\(g_i(x)\le 0\)</span>。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(h_j(x)\)</span>：第 <span displaypfx="inline-" class="mathjax-container">\(j\)</span> 个等式约束函数；要求它满足 <span displaypfx="inline-" class="mathjax-container">\(h_j(x)=0\)</span>。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(\lambda_i\)</span>：第 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 个不等式约束对应的拉格朗日乘子；它衡量该约束施加的“压力”或“拉力”大小，也可理解为对应约束资源的影子价格。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(\nu_j\)</span>：第 <span displaypfx="inline-" class="mathjax-container">\(j\)</span> 个等式约束对应的拉格朗日乘子。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(\sum_i\)</span> 和 <span displaypfx="inline-" class="mathjax-container">\(\sum_j\)</span>：分别表示把所有不等式约束和所有等式约束的影响累加起来。</li>
</ul>
<p>在此基础上，KKT 条件通常写成四组：</p>
<span displaypfx="" class="mathjax-container">\[\text{Primal feasibility: } g_i(x^*)\le 0,\ h_j(x^*)=0\]</span>
<span displaypfx="" class="mathjax-container">\[\text{Dual feasibility: } \lambda_i^*\ge 0\]</span>
<span displaypfx="" class="mathjax-container">\[\text{Stationarity: } \nabla f(x^*)+\sum_i \lambda_i^*\nabla g_i(x^*)+\sum_j \nu_j^*\nabla h_j(x^*)=0\]</span>
<span displaypfx="" class="mathjax-container">\[\text{Complementary slackness: } \lambda_i^* g_i(x^*)=0\]</span>
<p>这四组条件可以逐条理解：</p>
<ul>
<li><span style="background-color: #c0c0c0;">原始可行性（Primal Feasibility）</span>：最优解 <span displaypfx="inline-" class="mathjax-container">\(x^*\)</span> 首先必须是合法的，不能跑到可行域之外。也就是说，所有不等式约束都要满足 <span displaypfx="inline-" class="mathjax-container">\(g_i(x^*)\le 0\)</span>，所有等式约束都要精确满足 <span displaypfx="inline-" class="mathjax-container">\(h_j(x^*)=0\)</span>。</li>
<li><span style="background-color: #c0c0c0;">对偶可行性（Dual Feasibility）</span>：不等式约束的乘子必须非负，即 <span displaypfx="inline-" class="mathjax-container">\(\lambda_i^*\ge 0\)</span>。这保证了它们表达的是“阻止变量越界的压力”，而不是把解往不可行方向拉过去的反向力量。</li>
<li><span style="background-color: #c0c0c0;">驻点条件（Stationarity）</span>：在最优点处，目标函数的梯度 <span displaypfx="inline-" class="mathjax-container">\(\nabla f(x^*)\)</span> 与所有约束梯度加权后的合力必须平衡为 0。这里 <span displaypfx="inline-" class="mathjax-container">\(\nabla f(x^*)\)</span> 表示目标函数在 <span displaypfx="inline-" class="mathjax-container">\(x^*\)</span> 处最陡上升方向；<span displaypfx="inline-" class="mathjax-container">\(\nabla g_i(x^*)\)</span> 和 <span displaypfx="inline-" class="mathjax-container">\(\nabla h_j(x^*)\)</span> 分别表示约束边界的法向方向；乘子 <span displaypfx="inline-" class="mathjax-container">\(\lambda_i^*\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\nu_j^*\)</span> 则控制这些方向各自施加多少“反作用力”。这条式子本质上是在说：最优点处已经不存在任何仍然可行且还能继续下降的方向。</li>
<li><span style="background-color: #c0c0c0;">互补松弛（Complementary Slackness）</span>：每个不等式约束都满足 <span displaypfx="inline-" class="mathjax-container">\(\lambda_i^* g_i(x^*)=0\)</span>。因为这是两个量的乘积等于 0，所以只能出现两种情况：要么 <span displaypfx="inline-" class="mathjax-container">\(g_i(x^*)=0\)</span>，说明约束正好顶在边界上；要么 <span displaypfx="inline-" class="mathjax-container">\(\lambda_i^*=0\)</span>，说明这条约束在最优点没有施加压力。它精确区分了“活跃约束（Active Constraint）”和“不活跃约束（Inactive Constraint）”。</li>
</ul>
<p>一个一维例子可以把这些符号落到实处。考虑：</p>
<span displaypfx="" class="mathjax-container">\[\min_x\ (x+1)^2\quad \text{s.t.}\quad x\ge 0\]</span>
<p>把约束写成标准形式 <span displaypfx="inline-" class="mathjax-container">\(g(x)=-x\le 0\)</span>，于是拉格朗日函数是：</p>
<span displaypfx="" class="mathjax-container">\[\mathcal{L}(x,\lambda)=(x+1)^2+\lambda(-x)\]</span>
<p>这里 <span displaypfx="inline-" class="mathjax-container">\((x+1)^2\)</span> 是目标函数；<span displaypfx="inline-" class="mathjax-container">\(-x\le 0\)</span> 是不等式约束；<span displaypfx="inline-" class="mathjax-container">\(\lambda\)</span> 是这条约束对应的乘子。KKT 条件变成：</p>
<span displaypfx="" class="mathjax-container">\[x\ge 0,\quad \lambda\ge 0,\quad 2(x+1)-\lambda=0,\quad \lambda x=0\]</span>
<p>这四项分别表示：解必须在 <span displaypfx="inline-" class="mathjax-container">\(x\ge 0\)</span> 的合法区域内；乘子必须非负；目标函数与约束施加的作用力在最优点平衡；约束要么卡住解、要么不施加压力。无约束时， <span displaypfx="inline-" class="mathjax-container">\((x+1)^2\)</span> 的最低点在 <span displaypfx="inline-" class="mathjax-container">\(x=-1\)</span>，但这不满足 <span displaypfx="inline-" class="mathjax-container">\(x\ge 0\)</span>，所以真正最优点被“推”到边界 <span displaypfx="inline-" class="mathjax-container">\(x^*=0\)</span>；再代入驻点条件 <span displaypfx="inline-" class="mathjax-container">\(2(x+1)-\lambda=0\)</span>，得到 <span displaypfx="inline-" class="mathjax-container">\(\lambda^*=2\)</span>。这正对应“边界在最优点处确实对解施加了压力”。</p>
<p>如果把目标函数换成 <span displaypfx="inline-" class="mathjax-container">\(\min_x (x-2)^2\ \text{s.t.}\ x\ge 0\)</span>，无约束最优点就是 <span displaypfx="inline-" class="mathjax-container">\(x=2\)</span>，它本来就在可行域内部，因此约束没有真正碰到最优点。此时 KKT 会给出 <span displaypfx="inline-" class="mathjax-container">\(x^*=2\)</span>、<span displaypfx="inline-" class="mathjax-container">\(\lambda^*=0\)</span>。这就是互补松弛最直观的含义：<span style="background-color: #c0c0c0;">边界没有碰到解，压力就自动消失；边界一旦碰到解，乘子就会变成非零</span>。</p>
<div class="blog_h1"><span class="graybg">概率论与统计</span></div>
<p>概率论与统计处理两类问题：第一类是<span style="background-color: #c0c0c0;">在不确定性下如何描述事件、变量与数据生成过程</span>；第二类是<span style="background-color: #c0c0c0;">在只观察到有限样本时，如何反推总体规律与模型参数</span>。在 AI 中，分类概率、回归噪声、采样、似然训练、置信评估与后验推断都建立在这套语言之上。</p>
<div class="blog_h2"><span class="graybg">基础概念</span></div>
<p>在进入公式前，先区分几个最常混淆的基础对象。概率论不是一开始就讨论“均值”和“方差”，而是先规定<span style="background-color: #c0c0c0;">随机试验的结果空间、结果上的事件，以及把结果映射成数的随机变量</span>，之后才谈分布、期望和统计推断。</p>
<ul>
<li>样本空间（Sample Space）<span displaypfx="inline-" class="mathjax-container">\(\Omega\)</span>：一次随机试验所有可能结果的集合，其中希腊字母 <span displaypfx="inline-" class="mathjax-container">\(\Omega\)</span> 只是“全部可能结果”的记号。掷骰子时 <span displaypfx="inline-" class="mathjax-container">\(\Omega=\{1,2,3,4,5,6\}\)</span>，表示所有可能点数组成的集合。</li>
<li>事件（Event）：样本空间的子集，表示“哪些结果算作某件事发生”。例如“点数为偶数”对应集合 <span displaypfx="inline-" class="mathjax-container">\(\{2,4,6\}\)</span>；这句话的意思是，只要试验结果落在这个集合里，就说该事件发生。</li>
<li>随机变量（Random Variable）<span displaypfx="inline-" class="mathjax-container">\(X\)</span>：把随机结果映射为数的函数，可写作 <span displaypfx="inline-" class="mathjax-container">\(X:\Omega\to\mathbb{R}\)</span>。这里 <span displaypfx="inline-" class="mathjax-container">\(X\)</span> 是这个函数的名字， <span displaypfx="inline-" class="mathjax-container">\(\Omega\)</span> 是输入端的样本空间，箭头 <span displaypfx="inline-" class="mathjax-container">\(\to\)</span> 表示“映射到”， <span displaypfx="inline-" class="mathjax-container">\(\mathbb{R}\)</span> 表示实数集合。也就是说，每个随机结果都会被 <span displaypfx="inline-" class="mathjax-container">\(X\)</span> 变成一个实数。掷骰子时最自然的随机变量就是“点数本身”；在机器学习里，输入 <span displaypfx="inline-" class="mathjax-container">\(X\)</span>、标签 <span displaypfx="inline-" class="mathjax-container">\(Y\)</span>、噪声 <span displaypfx="inline-" class="mathjax-container">\(\epsilon\)</span> 都是随机变量。</li>
<li>概率分布（Probability Distribution）：描述随机变量取不同值的概率规律。离散情形常写作 <span displaypfx="inline-" class="mathjax-container">\(P(X=x)\)</span>，意思是“随机变量 <span displaypfx="inline-" class="mathjax-container">\(X\)</span> 恰好取值 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 的概率”；连续情形常写作密度 <span displaypfx="inline-" class="mathjax-container">\(p(x)\)</span>，它不是某一点的概率本身，而是概率密度函数（Probability Density Function, PDF），需要在区间上积分才得到概率。</li>
<li>期望（Expectation）<span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[X]\)</span>：按概率加权的平均，回答“长期来看这个随机变量的典型水平在哪里”。这里 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}\)</span> 是 expectation 的标准记号，方括号中的 <span displaypfx="inline-" class="mathjax-container">\(X\)</span> 表示“对哪个随机变量取期望”。</li>
<li>方差（Variance）<span displaypfx="inline-" class="mathjax-container">\(\mathrm{Var}(X)\)</span>：围绕期望的波动强度，回答“它通常偏离平均水平多大”。其中 <span displaypfx="inline-" class="mathjax-container">\(\mathrm{Var}\)</span> 是 variance 的记号，括号里的 <span displaypfx="inline-" class="mathjax-container">\(X\)</span> 表示“考察哪个随机变量的波动”。</li>
<li>参数（Parameter）与统计量（Statistic）：参数描述总体，例如高斯分布中的 <span displaypfx="inline-" class="mathjax-container">\(\mu\)</span> 表示均值（Mean）， <span displaypfx="inline-" class="mathjax-container">\(\sigma^2\)</span> 表示方差（Variance）；统计量则由样本计算出来，例如 <span displaypfx="inline-" class="mathjax-container">\(\bar{x}\)</span> 表示样本均值（Sample Mean），上面的横线读作“x bar”，意思是“样本中所有 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 的平均值”。统计学习的核心任务之一，就是用统计量去估计未知参数。</li>
</ul>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/probability.jpg"><img class="alignnone size-full wp-image-40841" src="https://blog.gmem.cc/wp-content/uploads/2026/03/probability.jpg" alt="probability" width="100%" /></a></p>
<div class="blog_h2"><span class="graybg">似然和概率</span></div>
<p>概率（Probability）与似然（Likelihood）都可以写成 <span displaypfx="inline-" class="mathjax-container">\(p(x|\theta)\)</span> 这样的形式，但它们把“谁是已知、谁是待判断对象”放在不同位置。概率把参数 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 视为已知、把数据 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 视为随机结果；似然则把数据 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 固定下来，把参数 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 当作待比较对象。</p>
<p>也正因为公式形式相同，二者很容易混淆；真正的区别不在写法，而在它们回答的是相反方向的问题。条件分布 <span displaypfx="inline-" class="mathjax-container">\(p(x|\theta)\)</span> 在统计里经常同时出现在两种语境中：当参数 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 固定、数据 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 变化时，它表示“在这个模型下观察到不同数据的概率有多大”；当数据 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 固定、参数 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 变化时，它表示“哪些参数更能解释这份已经观察到的数据”。</p>
<p>因此，概率的读法是<span style="background-color: #c0c0c0;">参数已知，看数据</span>。例如抛硬币模型里，若已知正面概率 <span displaypfx="inline-" class="mathjax-container">\(\theta=0.7\)</span>，那么 10 次里出现 8 次正面的概率是</p>
<span displaypfx="" class="mathjax-container">\[P(X=8|\theta=0.7)={10 \choose 8}0.7^8 0.3^2\]</span>
<p>其中 <span displaypfx="inline-" class="mathjax-container">\({10 \choose 8}\)</span> 表示组合数（Binomial Coefficient）：从 10 次试验里选出 8 次作为正面的不同选法一共有多少种。它负责计数“8 次正面可以出现在哪 8 个位置上”，不是额外的概率项。</p>
<p>而 <span displaypfx="inline-" class="mathjax-container">\(0.7^8 0.3^2\)</span> 来自独立重复试验的乘法法则：如果每次抛掷相互独立，且正面概率是 <span displaypfx="inline-" class="mathjax-container">\(0.7\)</span>、反面概率是 <span displaypfx="inline-" class="mathjax-container">\(0.3\)</span>，那么任意一个“8 次正面、2 次反面”的具体序列，其概率都是 8 个 <span displaypfx="inline-" class="mathjax-container">\(0.7\)</span> 与 2 个 <span displaypfx="inline-" class="mathjax-container">\(0.3\)</span> 的乘积，也就是 <span displaypfx="inline-" class="mathjax-container">\(0.7^8 0.3^2\)</span>。</p>
<p>这里被当作变量的是结果 <span displaypfx="inline-" class="mathjax-container">\(X\)</span>；问题是“给定参数，这样的数据是否常见”。这就是通常意义上的概率或概率密度。</p>
<p>似然的读法正好反过来：<span style="background-color: #c0c0c0;">数据已知，看参数</span>。假设现在已经观察到 10 次抛硬币里有 8 次正面，这组数据不再变化；真正变化的是候选参数 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span>。于是同一个模型被改写为似然函数（Likelihood Function）：</p>
<span displaypfx="" class="mathjax-container">\[L(\theta|X=8)=P(X=8|\theta)={10 \choose 8}\theta^8(1-\theta)^2\]</span>
<p>此时 <span displaypfx="inline-" class="mathjax-container">\(L(\theta|x)\)</span> 不是“参数取某个值的概率”，而是一个关于 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 的评分函数：哪个 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 让已观察到的数据 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 更容易出现，哪个 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 的似然就更大。最大似然估计（Maximum Likelihood Estimation, MLE）做的正是这件事：寻找使 <span displaypfx="inline-" class="mathjax-container">\(L(\theta|x)\)</span> 最大的参数。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/likelihood.png"><img class="alignnone size-full wp-image-40879" src="https://blog.gmem.cc/wp-content/uploads/2026/03/likelihood.png" alt="likelihood" width="100%" /></a></p>
<p>这里有一个必须严格区分的点：<span style="background-color: #c0c0c0;">似然不是参数的概率分布</span>。对固定数据来说， <span displaypfx="inline-" class="mathjax-container">\(L(\theta|x)\)</span> 不要求对 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 积分为 1，也不能直接解释为 <span displaypfx="inline-" class="mathjax-container">\(P(\theta|x)\)</span>。只有在贝叶斯框架里，把似然与先验（Prior） <span displaypfx="inline-" class="mathjax-container">\(p(\theta)\)</span> 相乘并做归一化之后，才得到参数的后验概率（Posterior）：</p>
<span displaypfx="" class="mathjax-container">\[p(\theta|x)=\frac{p(x|\theta)p(\theta)}{p(x)}\]</span>
<p>所以可以把三者关系记成一条清晰的链： <span displaypfx="inline-" class="mathjax-container">\(p(x|\theta)\)</span> 作为“关于 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 的函数”时是概率模型；作为“关于 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 的函数”时是似然函数；再结合先验并归一化后，才变成参数的后验概率。很多机器学习教材里说“最小化交叉熵等价于最大化对数似然”，本质上就是固定数据后，在参数空间里寻找最能解释样本的模型。</p>
<div class="blog_h3"><span class="graybg">机器学习视角</span></div>
<p>在机器学习模型里，这种“同一个式子，换个视角名字就变”的现象非常常见。设模型写成 <span displaypfx="inline-" class="mathjax-container">\(p_\theta(y|x)\)</span>，其中 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 是输入或上下文， <span displaypfx="inline-" class="mathjax-container">\(y\)</span> 是真实标签或真实 token， <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 是模型参数。</p>
<p>当参数 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 固定、把输出 <span displaypfx="inline-" class="mathjax-container">\(y\)</span> 当作随机变量时， <span displaypfx="inline-" class="mathjax-container">\(p_\theta(y|x)\)</span> 是概率模型：它回答“在这个模型已经定好的前提下，不同输出有多可能”。例如语言模型会对整个词表输出一个条件概率分布，其中 <span displaypfx="inline-" class="mathjax-container">\(c_t\)</span> 表示第 <span displaypfx="inline-" class="mathjax-container">\(t\)</span> 个位置之前的上下文（context）， <span displaypfx="inline-" class="mathjax-container">\(y_t\)</span> 表示该位置真实出现的 token，因此 <span displaypfx="inline-" class="mathjax-container">\(p_\theta(y_t|c_t)\)</span> 就是“在上下文 <span displaypfx="inline-" class="mathjax-container">\(c_t\)</span> 下，模型给真实 token <span displaypfx="inline-" class="mathjax-container">\(y_t\)</span> 分配的概率”。</p>
<p>当观测到的 <span displaypfx="inline-" class="mathjax-container">\((x,y)\)</span> 固定、把参数 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 当作变量时，同一个式子 <span displaypfx="inline-" class="mathjax-container">\(p_\theta(y|x)\)</span> 就变成似然：它回答“哪些参数更能让这条已经看到的数据显得合理”。于是训练时最大化似然，就等价于最小化负对数似然：</p>
<span displaypfx="" class="mathjax-container">\[-\log p_\theta(y|x)\]</span>
<p>因此可以把这个困惑直接拆开：<span style="background-color: #c0c0c0;">固定参数看输出，它是概率；固定输出看参数，它是似然；对它取负对数后，它就是训练里使用的损失项</span>。在语言建模里，对一个具体 token 而言，给定当前模型参数后， <span displaypfx="inline-" class="mathjax-container">\(-\log p_\theta(y_t|c_t)\)</span> 既可以看成该 token 的负对数概率，也可以在训练语境下看成该 token 对参数的负对数似然；两者是同一个数值对象，只是观察角度不同。</p>
<div class="blog_h2"><span class="graybg">基本概率</span></div>
<p>概率（Probability）描述不确定事件发生的可能性。设样本空间（Sample Space）为 <span displaypfx="inline-" class="mathjax-container">\(\Omega\)</span>，事件（Event）为 <span displaypfx="inline-" class="mathjax-container">\(A\subseteq\Omega\)</span>，则概率公理要求 <span displaypfx="inline-" class="mathjax-container">\(P(A)\in[0,1]\)</span>、<span displaypfx="inline-" class="mathjax-container">\(P(\Omega)=1\)</span>，以及互斥事件可加。这里“互斥事件可加”的意思是：如果两个事件不能同时发生，即 <span displaypfx="inline-" class="mathjax-container">\(A\cap B=\{\}\)</span>，那么“<span displaypfx="inline-" class="mathjax-container">\(A\)</span> 或 <span displaypfx="inline-" class="mathjax-container">\(B\)</span> 发生”的概率就是两者概率直接相加：</p>
<span displaypfx="" class="mathjax-container">\[P(A\cup B)=P(A)+P(B),\quad A\cap B=\{\}\]</span>
<p>之所以能直接相加，是因为两者没有重叠部分，不会重复计数。若有重叠，则不能直接相加，而要减去交集 <span displaypfx="inline-" class="mathjax-container">\(P(A\cap B)\)</span>。</p>
<p>最小例子：掷一枚公平六面骰。样本空间是 <span displaypfx="inline-" class="mathjax-container">\(\Omega=\{1,2,3,4,5,6\}\)</span>。若事件 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 表示“点数为 1”，事件 <span displaypfx="inline-" class="mathjax-container">\(B\)</span> 表示“点数为 2”，则它们互斥，因此 <span displaypfx="inline-" class="mathjax-container">\(P(A\cup B)=1/6+1/6=1/3\)</span>。再看一个非互斥例子：若事件 <span displaypfx="inline-" class="mathjax-container">\(C\)</span> 表示“点数为偶数”，则 <span displaypfx="inline-" class="mathjax-container">\(C=\{2,4,6\}\)</span>，因此 <span displaypfx="inline-" class="mathjax-container">\(P(C)=3/6=1/2\)</span>。</p>
<div class="blog_h3"><span class="graybg">联合概率</span></div>
<p>联合概率（Joint Probability）表示多个事件同时发生的概率，即 <span displaypfx="inline-" class="mathjax-container">\(P(A,B)=P(A\cap B)\)</span>。它回答的是“这些条件一起成立的可能性有多大”。</p>
<span displaypfx="" class="mathjax-container">\[P(A,B)=P(A\cap B)\]</span>
<p>仍用骰子例子：令 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 表示“点数为偶数”，<span displaypfx="inline-" class="mathjax-container">\(B\)</span> 表示“点数至少为 4”，则 <span displaypfx="inline-" class="mathjax-container">\(A\cap B=\{4,6\}\)</span>，所以 <span displaypfx="inline-" class="mathjax-container">\(P(A,B)=2/6=1/3\)</span>。在机器学习里，联合分布 <span displaypfx="inline-" class="mathjax-container">\(p(x,y)\)</span> 表示“输入 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 与标签 <span displaypfx="inline-" class="mathjax-container">\(y\)</span> 一起出现”的总体规律。</p>
<div class="blog_h3"><span class="graybg">独立性与乘法法则</span></div>
<p>独立（Independence）表示一个事件是否发生，不会改变另一个事件发生的概率。若事件 <span displaypfx="inline-" class="mathjax-container">\(A,B\)</span> 相互独立，则它们同时发生的概率可直接写成概率乘积：</p>
<span displaypfx="" class="mathjax-container">\[P(A\cap B)=P(A)P(B)\]</span>
<p>更一般地，若 <span displaypfx="inline-" class="mathjax-container">\(A_1,\dots,A_n\)</span> 相互独立，则</p>
<span displaypfx="" class="mathjax-container">\[P\!\left(\bigcap_{i=1}^{n}A_i\right)=\prod_{i=1}^{n}P(A_i)\]</span>
<p>例：掷一枚公平硬币并同时掷一枚公平骰子。令 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 表示“硬币为正面”，<span displaypfx="inline-" class="mathjax-container">\(B\)</span> 表示“骰子为偶数”，则 <span displaypfx="inline-" class="mathjax-container">\(P(A)=1/2\)</span>、<span displaypfx="inline-" class="mathjax-container">\(P(B)=1/2\)</span>，且二者独立，因此 <span displaypfx="inline-" class="mathjax-container">\(P(A\cap B)=1/2\times 1/2=1/4\)</span>。</p>
<p>独立时还可等价写成 <span displaypfx="inline-" class="mathjax-container">\(P(A|B)=P(A)\)</span>：知道 <span displaypfx="inline-" class="mathjax-container">\(B\)</span> 发生，并不会改变对 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 的判断。</p>
<p>要注意：互斥（Mutually Exclusive）和独立（Independent）不是一回事。互斥表示不能同时发生；独立表示是否发生彼此无关。对非零概率事件而言，互斥通常意味着<span style="background-color: #c0c0c0;">不独立</span>，因为一旦知道 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 发生，就立刻知道 <span displaypfx="inline-" class="mathjax-container">\(B\)</span> 不可能发生。</p>
<div class="blog_h3"><span class="graybg">条件概率</span></div>
<p>条件概率（Conditional Probability）表示“已知 <span displaypfx="inline-" class="mathjax-container">\(B\)</span> 发生时，<span displaypfx="inline-" class="mathjax-container">\(A\)</span> 发生的概率”：</p>
<span displaypfx="" class="mathjax-container">\[P(A|B)=\frac{P(A,B)}{P(B)},\quad P(B)&gt;0\]</span>
<p>关键点不是“再算一次概率”，而是<span style="background-color: #c0c0c0;">样本空间被缩小了</span>。在上面的骰子例子中，已知 <span displaypfx="inline-" class="mathjax-container">\(B\)</span>（点数至少为 4）后，只剩 <span displaypfx="inline-" class="mathjax-container">\(\{4,5,6\}\)</span> 三种可能，其中偶数是 <span displaypfx="inline-" class="mathjax-container">\(\{4,6\}\)</span>，所以 <span displaypfx="inline-" class="mathjax-container">\(P(A|B)=2/3\)</span>，明显不同于原来的 <span displaypfx="inline-" class="mathjax-container">\(P(A)=1/2\)</span>。</p>
<p>在建模中，几乎所有监督学习目标都可写成条件概率最大化，例如分类模型学习的是 <span displaypfx="inline-" class="mathjax-container">\(P(y|x)\)</span>：给定特征 <span displaypfx="inline-" class="mathjax-container">\(x\)</span>，标签 <span displaypfx="inline-" class="mathjax-container">\(y\)</span> 的概率有多大。</p>
<div class="blog_h3"><span class="graybg">边缘概率</span></div>
<p>边缘概率（Marginal Probability）是把不关心的变量“求和/积分掉”后得到的概率：</p>
<span displaypfx="" class="mathjax-container">\[P(A)=\sum_b P(A,b),\quad p(x)=\int p(x,z)\,dz\]</span>
<p>这两个公式的意思完全一致，只是分别对应离散情形与连续情形。 <span displaypfx="inline-" class="mathjax-container">\(P(A,b)\)</span> 表示“<span displaypfx="inline-" class="mathjax-container">\(A\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(b\)</span> 同时发生”的联合概率；若现在只关心 <span displaypfx="inline-" class="mathjax-container">\(A\)</span>，就必须把所有可能的 <span displaypfx="inline-" class="mathjax-container">\(b\)</span> 都加起来。连续情形下同理： <span displaypfx="inline-" class="mathjax-container">\(p(x,z)\)</span> 是关于 <span displaypfx="inline-" class="mathjax-container">\((x,z)\)</span> 的联合密度，若只关心 <span displaypfx="inline-" class="mathjax-container">\(x\)</span>，就把所有 <span displaypfx="inline-" class="mathjax-container">\(z\)</span> 的可能性沿该维度积分掉，得到 <span displaypfx="inline-" class="mathjax-container">\(p(x)\)</span>。</p>
<p>几何上，可以把边缘化（Marginalization）理解为<span style="background-color: #c0c0c0;">把高维分布沿某个方向压扁后得到的投影</span>。设二维联合分布的两个维度分别是身高与体重，平面上的每个位置都对应一个联合概率密度 <span displaypfx="inline-" class="mathjax-container">\(p(\text{height},\text{weight})\)</span>。如果现在根本不关心体重，只想知道身高的总体分布，那么就把每个固定身高处、沿着体重方向的所有概率质量全部累加起来；累加后的结果就是该身高对应的边缘密度 <span displaypfx="inline-" class="mathjax-container">\(p(\text{height})\)</span>。</p>
<p>因此，求和符号 <span displaypfx="inline-" class="mathjax-container">\(\sum_b P(A,b)\)</span> 或积分符号 <span displaypfx="inline-" class="mathjax-container">\(\int p(x,z)\,dz\)</span> 的几何含义，不是“神秘地消掉一个变量”，而是<span style="background-color: #c0c0c0;">把那个维度上的所有可能性叠加到剩余维度上</span>。它像从侧面看一个三维物体的投影：原来的结构仍然在，但你只保留了当前关心的坐标轴信息。</p>
<p>在 AI 中，边缘概率几乎总伴随着隐藏变量（Latent Variable）。例如主题模型里 <span displaypfx="inline-" class="mathjax-container">\(z\)</span> 可以表示隐藏主题（Hidden Topic），<span displaypfx="inline-" class="mathjax-container">\(x\)</span> 表示某个词；若只关心词出现的总体概率，就要把主题变量消去，得到 <span displaypfx="inline-" class="mathjax-container">\(p(x)=\sum_z p(x,z)\)</span>。很多推断算法的难点，本质上就是这个“沿隐藏维度求和/积分”的步骤代价很高。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/marginzation.jpg"><img class="alignnone size-full wp-image-40833" src="https://blog.gmem.cc/wp-content/uploads/2026/03/marginzation.jpg" alt="marginzation" width="100%" /></a></p>
<div class="blog_h3"><span class="graybg">补事件</span></div>
<p>补事件（Complementary Event）满足</p>
<span displaypfx="" class="mathjax-container">\[P(A^c)=1-P(A)\]</span>
<p>它表示“<span displaypfx="inline-" class="mathjax-container">\(A\)</span> 不发生”的概率等于总概率 1 减去 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 发生的概率。</p>
<div class="blog_h3"><span class="graybg">全概率公式</span></div>
<p>第二，若 <span displaypfx="inline-" class="mathjax-container">\(A_1,\dots,A_n\)</span> 把样本空间划分为互斥且完备的几部分（即两两互斥，且并集为 <span displaypfx="inline-" class="mathjax-container">\(\Omega\)</span>），则全概率公式（Law of Total Probability）为</p>
<span displaypfx="" class="mathjax-container">\[P(B)=\sum_{i=1}^{n}P(B|A_i)P(A_i)\]</span>
<p>它的含义是：事件 <span displaypfx="inline-" class="mathjax-container">\(B\)</span> 的总概率，可以拆成“先落入哪一种原因 <span displaypfx="inline-" class="mathjax-container">\(A_i\)</span>，再在该原因下发生 <span displaypfx="inline-" class="mathjax-container">\(B\)</span>”的加权和。贝叶斯公式中的分母 <span displaypfx="inline-" class="mathjax-container">\(P(B)\)</span>，很多时候就是用全概率公式展开出来的。</p>
<div class="blog_h2"><span class="graybg">贝叶斯定理</span></div>
<p>贝叶斯定理（Bayes' Theorem）把“从原因到结果”的概率反转为“从结果反推原因”：</p>
<span displaypfx="" class="mathjax-container">\[P(A|B)=\frac{P(B|A)\,P(A)}{P(B)}\]</span>
<p>把式子写出来并不难，真正容易混淆的是每一项到底在说什么。下面直接用一个具体场景来解释：设 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 表示“患者真的患病”，<span displaypfx="inline-" class="mathjax-container">\(B\)</span> 表示“检测结果为阳性”。已知患病率为 1%，检测的灵敏度（Sensitivity）为 99%，假阳性率（False Positive Rate）为 5%。则：</p>
<ul>
<li>先验（Prior） <span displaypfx="inline-" class="mathjax-container">\(P(A)\)</span>：在还没看到这次检测结果前，对“此人患病”的原始判断。在这个例子里，先验就是总体患病率 <span displaypfx="inline-" class="mathjax-container">\(P(A)=0.01\)</span>。</li>
<li>似然（Likelihood） <span displaypfx="inline-" class="mathjax-container">\(P(B|A)\)</span>：如果一个人确实患病，那么检测为阳性的概率有多大。在这个例子里，检测灵敏度是 99%，因此 <span displaypfx="inline-" class="mathjax-container">\(P(B|A)=0.99\)</span>。</li>
<li>证据（Evidence） <span displaypfx="inline-" class="mathjax-container">\(P(B)\)</span>：不管一个人是否患病，检测结果为阳性在总体上出现的概率。它等于“真阳性 + 假阳性”的总和： <span displaypfx="inline-" class="mathjax-container">\(P(B)=0.99\times 0.01 + 0.05\times 0.99 = 0.0594\)</span>。</li>
<li>后验（Posterior） <span displaypfx="inline-" class="mathjax-container">\(P(A|B)\)</span>：在已经看到“检测阳性”这个证据之后，此人真正患病的更新后概率。代入上面的数值，有</li>
</ul>
<span displaypfx="" class="mathjax-container">\[P(\text{disease}|+) = \frac{0.99\times 0.01}{0.99\times 0.01 + 0.05\times 0.99} = \frac{1}{6} \approx 16.7\%\]</span>
<p>因此，贝叶斯定理说的不是“把公式套进去算一下”，而是一个非常具体的更新过程：<span style="background-color: #c0c0c0;">先从原始信念出发，用证据对它重新加权，再归一化，得到更新后的信念</span>。这也是为什么常把它概括成：<span style="background-color: #c0c0c0;">后验 = 似然 × 先验 ÷ 证据</span>。</p>
<p>这个例子最重要的结论是：检测阳性后，真实患病概率并不是 99%，而只有约 16.7%。原因不是检测太差，而是先验患病率本来就很低；假阳性虽然比例不高，但基数更大。换言之，<span style="background-color: #c0c0c0;">证据不会凭空决定结论，证据必须结合基线发生率一起解释</span>。在 AI 里，这就是“看到证据后更新信念”的统一公式：朴素贝叶斯分类、贝叶斯滤波、概率图模型都在做这件事。</p>
<div class="blog_h3"><span class="graybg">机器学习视角</span></div>
<p>从机器学习视角看，贝叶斯定理的价值在于它清楚地区分了<span style="background-color: #c0c0c0;">只看数据解释能力</span>与<span style="background-color: #c0c0c0;">把数据证据和先验知识合并起来</span>这两件事。前者对应似然（Likelihood）与最大似然估计（MLE），后者对应后验（Posterior）与最大后验估计（MAP）。</p>
<p>仍用上面的患病率例子。假设观测数据已经固定为“检测结果阳性”，把候选状态写成 <span displaypfx="inline-" class="mathjax-container">\(\theta\in\{\text{患病},\text{未患病}\}\)</span>。若只比较似然，则两个候选状态的评分分别是：</p>
<span displaypfx="" class="mathjax-container">\[L(\theta=\text{患病})=P(+|\text{患病})=0.99\]</span>
<span displaypfx="" class="mathjax-container">\[L(\theta=\text{未患病})=P(+|\text{未患病})=0.05\]</span>
<p>此时，按似然大小排序， <span displaypfx="inline-" class="mathjax-container">\(\theta=\text{患病}\)</span> 的确更优。这正是 MLE 式思路的核心：固定数据，寻找最能解释这份数据的候选参数或候选假设。但这里必须严格区分两件事：<span style="background-color: #c0c0c0;">“似然更大”只表示这个假设更能解释当前观测，不等于“它的后验概率就是 99%”</span>。因为似然没有把总体患病率只有 1% 这一先验事实算进去。</p>
<p>若进一步引入先验 <span displaypfx="inline-" class="mathjax-container">\(P(\text{患病})=0.01\)</span>、<span displaypfx="inline-" class="mathjax-container">\(P(\text{未患病})=0.99\)</span>，就得到后验比较：</p>
<span displaypfx="" class="mathjax-container">\[P(\text{患病}|+)\propto P(+|\text{患病})P(\text{患病})=0.99\times 0.01\]</span>
<span displaypfx="" class="mathjax-container">\[P(\text{未患病}|+)\propto P(+|\text{未患病})P(\text{未患病})=0.05\times 0.99\]</span>
<p>归一化之后， <span displaypfx="inline-" class="mathjax-container">\(P(\text{患病}|+)\approx 16.7\%\)</span>。这就是 MAP / 贝叶斯决策与单纯 MLE 的差别：后验判断不仅问“谁更能解释这份数据”，还问“谁在看到数据之前本来就更常见”。在类别极不平衡、小样本、先验知识明确或误判成本不对称的问题里，这个差别往往是决定性的。</p>
<p>朴素贝叶斯（Naive Bayes）正是把这套思路直接写成分类器。给定特征向量 <span displaypfx="inline-" class="mathjax-container">\(\boldsymbol{x}\)</span> 和类别 <span displaypfx="inline-" class="mathjax-container">\(y\)</span>，它比较的是后验概率</p>
<span displaypfx="" class="mathjax-container">\[p(y|\boldsymbol{x})\propto p(y)\,p(\boldsymbol{x}|y)\]</span>
<p>再在条件独立假设下展开成</p>
<span displaypfx="" class="mathjax-container">\[p(y|\boldsymbol{x})\propto p(y)\prod_{j=1}^{d}p(x_j|y)\]</span>
<p>其中 <span displaypfx="inline-" class="mathjax-container">\(p(y)\)</span> 是类别先验，负责表达“哪类样本本来就更常见”； <span displaypfx="inline-" class="mathjax-container">\(p(x_j|y)\)</span> 是条件似然，负责表达“若类别固定，这个特征出现得是否合理”。训练阶段通常先从数据中估计这些概率；最简单的做法是 MLE，即直接用频数比估计先验和条件概率。若再加入拉普拉斯平滑（Laplace Smoothing）或更一般的共轭先验（Conjugate Prior），则更接近 MAP 估计。预测阶段再把先验与似然相乘并归一化，得到后验分数最高的类别。</p>
<p>因此，从机器学习角度看，贝叶斯定理并不只是概率论中的一条恒等式，而是一个完整的建模分工：<span style="background-color: #c0c0c0;">似然负责解释数据，先验负责表达归纳偏置，后验负责把两者合成为最终判断</span>。后面的 MLE、MAP 与朴素贝叶斯，只是这套分工在不同任务上的具体实现。</p>
<div class="blog_h2"><span class="graybg">概率分布</span></div>
<p>这里的“分布（Distribution）”指随机变量取值的不确定性如何在取值空间上分配。严格地说，概率分布（Probability Distribution）是一种概率测度（Probability Measure），它为每个事件 <span displaypfx="inline-" class="mathjax-container">\(A\)</span> 赋予概率 <span displaypfx="inline-" class="mathjax-container">\(P(A)\)</span>。</p>
<p>对一维实值随机变量 <span displaypfx="inline-" class="mathjax-container">\(X\)</span>，分布最常用的统一表述是累积分布函数（Cumulative Distribution Function, CDF）<span displaypfx="inline-" class="mathjax-container">\(F(x)=P(X\le x)\)</span>。离散与连续的差别，主要体现在如何从 <span displaypfx="inline-" class="mathjax-container">\(F\)</span> 得到“点上/区间上”的概率。</p>
<p>不同任务对应不同的数据分布假设（Distribution Assumption）。分布选得对，建模与推断会更稳定；分布假设错得太远，参数估计、置信区间乃至损失函数解释都会失真。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/plot_six_basic_dist.png"><img class="alignnone size-full wp-image-40921" src="https://blog.gmem.cc/wp-content/uploads/2026/03/plot_six_basic_dist.png" alt="plot_six_basic_dist" width="1848" height="1473" /></a></p>
<div class="blog_h3"><span class="graybg">概率密度/概率质量函数</span></div>
<p>若 <span displaypfx="inline-" class="mathjax-container">\(X\)</span> 是离散型随机变量，其概率质量函数（Probability Mass Function, PMF）为 <span displaypfx="inline-" class="mathjax-container">\(p(x)=P(X=x)\)</span>，并满足 <span displaypfx="inline-" class="mathjax-container">\(\sum_x p(x)=1\)</span>。</p>
<p>若 <span displaypfx="inline-" class="mathjax-container">\(X\)</span> 是连续型随机变量，其概率密度函数（Probability Density Function, PDF）为 <span displaypfx="inline-" class="mathjax-container">\(p(x)\)</span>，满足 <span displaypfx="inline-" class="mathjax-container">\(p(x)\ge 0\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(\int_{-\infty}^{+\infty} p(x)\,dx=1\)</span>；区间概率由积分给出：<span displaypfx="inline-" class="mathjax-container">\(P(a\le X\le b)=\int_a^b p(x)\,dx\)</span>。因此 <span displaypfx="inline-" class="mathjax-container">\(p(x)\)</span> 本身不是“点上概率”。</p>
<p>两者都可写成同一 CDF 关系：连续情形 <span displaypfx="inline-" class="mathjax-container">\(F(x)=\int_{-\infty}^{x} p(t)\,dt\)</span>，离散情形 <span displaypfx="inline-" class="mathjax-container">\(F(x)=\sum_{t\le x} p(t)\)</span>。</p>
<div class="blog_h3"><span class="graybg">高斯分布（正态分布）</span></div>
<p>高斯分布（Gaussian / Normal Distribution）由均值 <span displaypfx="inline-" class="mathjax-container">\(\mu\)</span> 与方差 <span displaypfx="inline-" class="mathjax-container">\(\sigma^2\)</span> 决定：</p>
<span displaypfx="" class="mathjax-container">\[p(x)=\frac{1}{\sqrt{2\pi}\sigma}\exp\!\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)\]</span>
<p>它的图像是熟悉的“钟形曲线（Bell Curve）”：离 <span displaypfx="inline-" class="mathjax-container">\(\mu\)</span> 越近，概率密度越高；离得越远，概率密度衰减越快。大量独立小扰动叠加后常近似高斯（中心极限定理的结果），所以测量误差、回归残差、传感器噪声、嵌入向量某些方向上的统计近似都常采用高斯模型。</p>
<p>例：若成年男性身高近似服从 <span displaypfx="inline-" class="mathjax-container">\(\mathcal{N}(170,6^2)\)</span>，则 170 cm 附近最常见，而 190 cm 属于离均值超过 3 个标准差的少见样本。回归里假设残差服从高斯，本质上是在说“误差多数小、极大误差少”。</p>
<div class="blog_h3"><span class="graybg">拉普拉斯分布</span></div>
<p>拉普拉斯分布（Laplace Distribution）也是定义在实数轴上的连续分布，常用位置参数（Location） <span displaypfx="inline-" class="mathjax-container">\(\mu\)</span> 与尺度参数（Scale） <span displaypfx="inline-" class="mathjax-container">\(b&gt;0\)</span> 描述：</p>
<span displaypfx="" class="mathjax-container">\[p(x)=\frac{1}{2b}\exp\left(-\frac{|x-\mu|}{b}\right)\]</span>
<p>它的图像在中心点 <span displaypfx="inline-" class="mathjax-container">\(\mu\)</span> 处更尖、尾部比高斯分布更厚（Heavier Tails）。这表示模型更偏好“大多数误差很小，但偶尔出现相对较大偏差”这一类数据形状，因此它对离群点（Outliers）的容忍度通常高于高斯模型。</p>
<p>拉普拉斯分布和绝对误差（Absolute Error）关系非常紧密：若回归残差假设服从拉普拉斯分布，那么最大似然估计会导向 <span displaypfx="inline-" class="mathjax-container">\(L_1\)</span> 损失；若把参数先验设为拉普拉斯分布，最大后验估计则会导向 <span displaypfx="inline-" class="mathjax-container">\(L_1\)</span> 正则。这也是它在稀疏建模（Sparse Modeling）和鲁棒回归（Robust Regression）里很常见的原因。</p>
<p>例：若某传感器大多数时刻误差接近 0，但偶尔会因为抖动或遮挡产生较大的偏差，那么用拉普拉斯分布描述误差，往往比高斯分布更贴近这种“中心尖、尾部较厚”的统计形状。</p>
<div class="blog_h3"><span class="graybg">伯努利分布</span></div>
<p>伯努利分布（Bernoulli Distribution）描述一次二元结果试验（0/1）：</p>
<span displaypfx="" class="mathjax-container">\[P(X=1)=p,\quad P(X=0)=1-p\]</span>
<p>它是二分类标签建模的最小单元，也是逻辑回归与二分类交叉熵的概率基础。若 <span displaypfx="inline-" class="mathjax-container">\(X\)</span> 表示“用户是否点击广告”，则 <span displaypfx="inline-" class="mathjax-container">\(X=1\)</span> 代表点击、<span displaypfx="inline-" class="mathjax-container">\(X=0\)</span> 代表未点击，模型输出的 <span displaypfx="inline-" class="mathjax-container">\(p\)</span> 就是点击概率。</p>
<p>伯努利变量的期望是 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[X]=p\)</span>，方差是 <span displaypfx="inline-" class="mathjax-container">\(p(1-p)\)</span>。因此当 <span displaypfx="inline-" class="mathjax-container">\(p\)</span> 接近 0 或 1 时，不确定性反而更小；当 <span displaypfx="inline-" class="mathjax-container">\(p=0.5\)</span> 时，不确定性最大。</p>
<p>如果把同一个伯努利试验独立重复 <span displaypfx="inline-" class="mathjax-container">\(n\)</span> 次，并把成功次数加总，那么得到的就不是伯努利分布，而是二项分布（Binomial Distribution）。换句话说，伯努利分布描述“单次是否成功”，二项分布描述“总共成功了多少次”。</p>
<div class="blog_h3"><span class="graybg">二项分布</span></div>
<p>二项分布（Binomial Distribution）描述 <span displaypfx="inline-" class="mathjax-container">\(n\)</span> 次独立伯努利试验中的成功次数。若每次成功概率都是 <span displaypfx="inline-" class="mathjax-container">\(p\)</span>，随机变量 <span displaypfx="inline-" class="mathjax-container">\(X\)</span> 表示总成功次数，则</p>
<span displaypfx="" class="mathjax-container">\[P(X=k)={n \choose k}p^k(1-p)^{n-k},\quad k=0,1,\dots,n\]</span>
<p>这里 <span displaypfx="inline-" class="mathjax-container">\({n \choose k}\)</span> 表示“从 <span displaypfx="inline-" class="mathjax-container">\(n\)</span> 次试验里选出 <span displaypfx="inline-" class="mathjax-container">\(k\)</span> 次成功”的组合数；后面的 <span displaypfx="inline-" class="mathjax-container">\(p^k(1-p)^{n-k}\)</span> 表示某一种具体排列出现的概率。两者相乘，就得到“恰好成功 <span displaypfx="inline-" class="mathjax-container">\(k\)</span> 次”的总概率。</p>
<p>如果 <span displaypfx="inline-" class="mathjax-container">\(X_1,\dots,X_n\)</span> 独立同分布且 <span displaypfx="inline-" class="mathjax-container">\(X_i\sim\mathrm{Bernoulli}(p)\)</span>，那么它们的和</p>
<span displaypfx="" class="mathjax-container">\[S_n=\sum_{i=1}^{n}X_i\sim\mathrm{Binomial}(n,p)\]</span>
<p>因此，二项分布本质上就是“多个伯努利随机变量求和后的分布”。它的期望是 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[X]=np\)</span>，方差是 <span displaypfx="inline-" class="mathjax-container">\(np(1-p)\)</span>。</p>
<p>例：若一枚硬币正面概率为 <span displaypfx="inline-" class="mathjax-container">\(p=0.7\)</span>，连续抛 10 次，则“正面出现几次”服从二项分布。此时恰好出现 7 次正面的概率是</p>
<span displaypfx="" class="mathjax-container">\[P(X=7)={10 \choose 7}0.7^7 0.3^3\]</span>
<div class="blog_h3"><span class="graybg">多项式分布</span></div>
<p>多项式分布（Multinomial Distribution）是“多类别计数版”的伯努利：进行 <span displaypfx="inline-" class="mathjax-container">\(n\)</span> 次独立试验，类别概率为 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{p}\)</span>，计数向量 <span displaypfx="inline-" class="mathjax-container">\(\mathbf{k}\)</span> 的概率为</p>
<span displaypfx="" class="mathjax-container">\[P(\mathbf{k})=\frac{n!}{\prod_i k_i!}\prod_i p_i^{k_i},\quad \sum_i k_i=n\]</span>
<p>若只有一次抽样，通常写作分类分布（Categorical Distribution）：</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/distribution-categorical.png"><img class="alignnone size-full wp-image-40867" src="https://blog.gmem.cc/wp-content/uploads/2026/03/distribution-categorical.png" alt="distribution-categorical" width="100%" /></a></p>
<p>若把一次抽样重复 <span displaypfx="inline-" class="mathjax-container">\(n\)</span> 次并统计每类出现次数，就得到多项式分布，语言模型里的词频计数、主题模型中的词袋（Bag of Words）都与这种计数视角一致。概率分布一节的第三个图就是多项式分布：总计抽样6次，横轴表示分类1的次数，纵轴表示分类2的次数（因为只有3分类，因此不需要绘制三维），颜色表示抽取到不同分类的次数组合的概率。</p>
<div class="blog_h3"><span class="graybg">泊松分布</span></div>
<p>泊松分布（Poisson Distribution）描述单位时间或单位空间内稀有事件的发生次数：</p>
<span displaypfx="" class="mathjax-container">\[P(X=k)=e^{-\lambda}\frac{\lambda^k}{k!},\quad k=0,1,2,\ldots\]</span>
<p>其中 <span displaypfx="inline-" class="mathjax-container">\(\lambda\)</span> 既是平均发生次数，也是方差。它适用于“事件相互独立、平均速率稳定、短时间内多次同时发生概率很小”的场景，例如单位分钟请求数、单位小时故障数、单位页面点击数。</p>
<p>例：若一个接口平均每分钟收到 3 次请求，则 <span displaypfx="inline-" class="mathjax-container">\(\lambda=3\)</span>。此时一分钟内 0 次请求的概率是 <span displaypfx="inline-" class="mathjax-container">\(e^{-3}\approx 0.05\)</span>；5 次请求的概率是 <span displaypfx="inline-" class="mathjax-container">\(e^{-3}3^5/5!\approx 0.10\)</span>。泊松分布常被用来做“到达数 / 故障数 / 事件数”建模。</p>
<div class="blog_h2"><span class="graybg">期望</span></div>
<p>期望（Expectation）是随机变量的“按概率加权的平均”，回答“长期来看这个量的典型水平在哪里”。离散情形下，它把每个可能取值按对应概率加权；连续情形下，则对概率密度做积分：</p>
<span displaypfx="" class="mathjax-container">\[\mathbb{E}[X]=\sum_x x\,p(x)\ \ (\text{或 } \int x\,p(x)\,dx)\]</span>
<p><span style="background-color: #c0c0c0;">期望和均值很像，但不是同一个概念。</span> 期望（Expectation）是总体分布层面的量，由概率模型 <span displaypfx="inline-" class="mathjax-container">\(p(x)\)</span> 决定，描述“如果无限次重复抽样，平均会稳定到哪里”；均值（Mean）通常有两种语境：一是把总体的中心位置也叫“总体均值”，这时它与期望是同一个量；二是指有限样本算出来的样本均值（Sample Mean） <span displaypfx="inline-" class="mathjax-container">\(\bar{x}=\frac{1}{n}\sum_{i=1}^{n}x_i\)</span>，这是用样本近似期望的统计量。</p>
<p>因此可以把三者关系记成：<span style="background-color: #c0c0c0;">总体均值 = 期望；样本均值 = 对期望的估计</span>。例如公平骰子点数的期望是 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[X]=3.5\)</span>；如果你真的掷 6 次，样本均值可能是 3、4 或 4.5，不必恰好等于 3.5，但随着试验次数增多，它会越来越接近期望。</p>
<p>期望最重要的性质之一是线性性（Linearity）：<span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[aX+b]=a\mathbb{E}[X]+b\)</span>，不要求独立。例：公平骰子点数 <span displaypfx="inline-" class="mathjax-container">\(X\)</span> 的期望是 <span displaypfx="inline-" class="mathjax-container">\((1+2+3+4+5+6)/6=3.5\)</span>；若收入模型写成 <span displaypfx="inline-" class="mathjax-container">\(Y=2X+1\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[Y]=2\times 3.5+1=8\)</span>。</p>
<div class="blog_h2"><span class="graybg">矩（Moments）</span></div>
<p>矩（Moment）是概率统计里用来概括分布形状的一组数。理论上，“第 <span displaypfx="inline-" class="mathjax-container">\(k\)</span> 阶”指对 <span displaypfx="inline-" class="mathjax-container">\(k\)</span> 次幂取期望：矩天然与期望/均值绑定。</p>
<p>常用两类定义是：</p>
<ul>
<li>原点矩（Raw Moment / Non-central Moment）：<span displaypfx="inline-" class="mathjax-container">\(m_k=\mathbb{E}[X^k]\)</span>（以 0 为参照）。</li>
<li>中心矩（Central Moment）：<span displaypfx="inline-" class="mathjax-container">\(\mu_k=\mathbb{E}\big[(X-\mathbb{E}[X])^k\big]\)</span>（以均值为参照）。</li>
</ul>
<p>直觉上可以用“跷跷板”来理解：把概率质量看作分布在数轴上的“重量”，期望/均值决定“支点放哪里”才平衡；更高阶矩描述“重量围绕支点如何分布”。</p>
<p>一阶矩（First Moment）回答“中心在哪里”：均值/期望 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[X]\)</span> 给出平衡点。但<span style="background-color: #c0c0c0;">一阶矩无法刻画离散程度</span>：例如 <span displaypfx="inline-" class="mathjax-container">\(X\in\{-1,+1\}\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(X\in\{-10,+10\}\)</span> 都满足 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[X]=0\)</span>，但后者离中心更远。</p>
<p>二阶量用平方偏差的期望刻画离散程度：平方保证非负、避免正负偏差相互抵消，并对远离均值的样本赋予更大权重。在统计里，这对应二阶中心矩——方差 <span displaypfx="inline-" class="mathjax-container">\(\mathrm{Var}(X)=\mathbb{E}[(X-\mathbb{E}[X])^2]\)</span>；在力学类比里，这与转动惯量（Moment of Inertia）中按 <span displaypfx="inline-" class="mathjax-container">\(r^2\)</span> 加权的直觉一致：远处的“重量”对系统的“难摆动/难转动”贡献更大。</p>
<p>二阶原点矩与方差之间满足恒等式：</p>
<span displaypfx="" class="mathjax-container">\[\mathrm{Var}(X)=\mathbb{E}\big[(X-\mathbb{E}[X])^2\big]=\mathbb{E}[X^2]-\mathbb{E}[X]^2\]</span>
<span displaypfx="" class="mathjax-container">\[\mathbb{E}[X^2]=\mathrm{Var}(X)+\mathbb{E}[X]^2\]</span>
<p>它说明二阶原点矩 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[X^2]\)</span> 以 0 为参照，会把两类效应叠加在一起：一是分布整体离 0 的偏移（由均值项 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[X]^2\)</span> 表示），二是围绕自身均值的离散/抖动（由方差项 <span displaypfx="inline-" class="mathjax-container">\(\mathrm{Var}(X)\)</span> 表示）。因此 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[X^2]\)</span> 变大并不等价于“波动更大”；把所有取值整体平移一个常数，方差不变，但二阶原点矩会随偏移显著改变。</p>
<p>一个最小例子可以把差异看得非常清楚。令 <span displaypfx="inline-" class="mathjax-container">\(X\)</span> 等概率取值 <span displaypfx="inline-" class="mathjax-container">\(\{99,100,101\}\)</span>，则</p>
<span displaypfx="" class="mathjax-container">\[\mathbb{E}[X]=\frac{99+100+101}{3}=100,\quad \mathbb{E}[X]^2=100^2=10000\]</span>
<span displaypfx="" class="mathjax-container">\[\mathbb{E}[X^2]=\frac{99^2+100^2+101^2}{3}=\frac{30002}{3}\approx 10000.67\]</span>
<span displaypfx="" class="mathjax-container">\[\mathrm{Var}(X)=\mathbb{E}[X^2]-\mathbb{E}[X]^2=\frac{30002}{3}-10000=\frac{2}{3}\]</span>
<p>可以直接读成一句话：这组数“离 0 很远”（所以 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[X^2]\)</span> 很大），但“围绕自身均值很稳定”（所以方差很小）。</p>
<p>这也解释了 Adam 里的常见误解。Adam 说的“一阶矩/二阶矩”是把 mini-batch 梯度 <span displaypfx="inline-" class="mathjax-container">\(g\)</span> 当作随机变量，分别估计 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[g]\)</span> 与 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[g^2]\)</span>（逐参数维度）。它用的是二阶原点矩 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[g^2]\)</span>，不是方差 <span displaypfx="inline-" class="mathjax-container">\(\mathrm{Var}(g)\)</span>。原因很直接：如果梯度在一段时间内几乎恒定（例如每步都是 <span displaypfx="inline-" class="mathjax-container">\(g=10\)</span>），那么方差为 0，拿它做除法会造成数值灾难；但 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[g^2]=100\)</span> 给出了稳定的“绝对尺度”，使更新项 <span displaypfx="inline-" class="mathjax-container">\(\frac{\mathbb{E}[g]}{\sqrt{\mathbb{E}[g^2]}}\)</span> 仍然是有界的（再加上 <span displaypfx="inline-" class="mathjax-container">\(\epsilon\)</span> 做数值稳定）。</p>
<div class="blog_h2"><span class="graybg">方差</span></div>
<p>方差（Variance）衡量随机变量围绕均值的波动大小。它不是“偏离均值后再平均”，而是“偏离均值的平方再平均”；平方的作用是避免正负抵消，并放大大偏差：</p>
<span displaypfx="" class="mathjax-container">\[\mathrm{Var}(X)=\mathbb{E}[(X-\mu)^2]\]</span>
<p>因此，方差小表示样本更集中在均值附近；方差大表示波动更强。它刻画的是“不确定性的尺度”，而不是取值本身的大小。例如两个模型的平均误差相同，方差更大的那个模型，输出往往更不稳定。</p>
<div class="blog_h2"><span class="graybg">协方差</span></div>
<p>协方差（Covariance）描述两个变量是否倾向同向变化：</p>
<span displaypfx="" class="mathjax-container">\[\mathrm{Cov}(X,Y)=\mathbb{E}[(X-\mu_X)(Y-\mu_Y)]\]</span>
<p>若 <span displaypfx="inline-" class="mathjax-container">\(\mathrm{Cov}(X,Y)&gt;0\)</span>，说明 <span displaypfx="inline-" class="mathjax-container">\(X\)</span> 大时 <span displaypfx="inline-" class="mathjax-container">\(Y\)</span> 也倾向变大；若 <span displaypfx="inline-" class="mathjax-container">\(\mathrm{Cov}(X,Y)&lt;0\)</span>，说明一个变大时另一个倾向变小。直觉例子是：身高与体重常为正协方差，室外温度与暖气功率常为负协方差。</p>
<p>还要区分一点：协方差为 0 不必然意味着独立。例如令 <span displaypfx="inline-" class="mathjax-container">\(X\)</span> 在 <span displaypfx="inline-" class="mathjax-container">\(\{-1,1\}\)</span> 上等概率取值，定义 <span displaypfx="inline-" class="mathjax-container">\(Y=X^2\)</span>，则 <span displaypfx="inline-" class="mathjax-container">\(Y\)</span> 被 <span displaypfx="inline-" class="mathjax-container">\(X\)</span> 完全决定，但 <span displaypfx="inline-" class="mathjax-container">\(\mathrm{Cov}(X,Y)=0\)</span>。因此“零相关”比“独立”弱得多。</p>
<p>协方差矩阵（Covariance Matrix）<span displaypfx="inline-" class="mathjax-container">\(\Sigma\)</span> 在 AI 中极其关键：PCA、马氏距离（Mahalanobis Distance）、卡尔曼滤波与高斯模型都直接依赖它。它编码的是“各方向上的尺度”与“不同维度之间的耦合”。</p>
<div class="blog_h2"><span class="graybg">标准差（Standard Deviation）</span></div>
<p>标准差（Standard Deviation）衡量数据相对均值（Mean）的离散程度（Dispersion）。总体标准差（Population Standard Deviation）定义为：</p>
<span displaypfx="" class="mathjax-container">\[\sigma=\sqrt{\frac{1}{n}\sum_{i=1}^{n}(x_i-\mu)^2}\]</span>
<p>样本标准差（Sample Standard Deviation）使用贝塞尔校正（Bessel's Correction）：</p>
<span displaypfx="" class="mathjax-container">\[s=\sqrt{\frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})^2}\]</span>
<p>先平方再平均是为了避免正负抵消并加重大偏差；最后开平方是为了把单位恢复到原始尺度。若直接用方差，单位会变成“平方单位”，解释往往不直观；标准差则可以直接说成“典型偏离均值大约多少个原始单位”。</p>
<p>例：数据 <span displaypfx="inline-" class="mathjax-container">\(\{2,4,4,4,5,5,7,9\}\)</span> 的均值是 <span displaypfx="inline-" class="mathjax-container">\(5\)</span>，总体方差是 <span displaypfx="inline-" class="mathjax-container">\(4\)</span>，标准差是 <span displaypfx="inline-" class="mathjax-container">\(2\)</span>。这意味着一个典型样本与均值的偏离量级大约是 2，而不是每个点都恰好偏 2。</p>
<p>标准差还常被用来做标准化（Standardization）。例如某考试分数 80 分，班级均值 70、标准差 5，则它的 z-score 是 <span displaypfx="inline-" class="mathjax-container">\((80-70)/5=2\)</span>，表示它比均值高 2 个标准差。近似正态分布下，经验上约有 68% 样本落在 <span displaypfx="inline-" class="mathjax-container">\(\mu\pm\sigma\)</span>，95% 落在 <span displaypfx="inline-" class="mathjax-container">\(\mu\pm2\sigma\)</span>，99.7% 落在 <span displaypfx="inline-" class="mathjax-container">\(\mu\pm3\sigma\)</span>；这就是常见的 68-95-99.7 规则。</p>
<div class="blog_h2"><span class="graybg">最大似然估计（MLE）</span></div>
<p>最大似然估计（Maximum Likelihood Estimation, MLE）先把已经观察到的数据（例如上面抛硬币10次有8次正面）固定住，再在参数空间里寻找“最能生成这批数据”的参数。设数据集为 <span displaypfx="inline-" class="mathjax-container">\(D=\{x_1,\dots,x_n\}\)</span>，参数为 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span>，则定义是：</p>
<span displaypfx="" class="mathjax-container">\[\hat{\theta}_{\mathrm{MLE}}=\arg\max_{\theta}p(D|\theta)\]</span>
<p>其中<span displaypfx="inline-" class="mathjax-container">\(p(D|\theta)\)</span> 是“参数取 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 时看到整批数据 <span displaypfx="inline-" class="mathjax-container">\(D\)</span> 的概率/密度”； <span displaypfx="inline-" class="mathjax-container">\(\arg\max\)</span> 表示“找出让这个值最大的那个参数”。</p>
<p>若样本独立同分布（不相关且在同一个分布，例如抛硬币中10个独立事件。Independent and Identically Distributed, i.i.d.），联合似然可以拆成单个样本似然的乘积：</p>
<span displaypfx="" class="mathjax-container">\[p(D|\theta)=\prod_{i=1}^{n}p(x_i|\theta)\]</span>
<p>于是 MLE 常写成</p>
<span displaypfx="" class="mathjax-container">\[\hat{\theta}_{\mathrm{MLE}}=\arg\max_{\theta}\prod_{i=1}^{n}p(x_i|\theta)\]</span>
<p>实际训练几乎总是改为最大化对数似然（Log-Likelihood）：</p>
<span displaypfx="" class="mathjax-container">\[\ell(\theta)=\log p(D|\theta)=\sum_{i=1}^{n}\log p(x_i|\theta)\]</span>
<p><span style="background-color: #c0c0c0;">取对数不会改变最优解</span>，因为 <span displaypfx="inline-" class="mathjax-container">\(\log\)</span> 是单调递增函数；它只是把难处理的连乘变成易处理的求和。因此，最大化似然与最小化负对数似然（Negative Log-Likelihood, NLL）完全等价。</p>
<p>继续看抛硬币的例子。设单次结果 <span displaypfx="inline-" class="mathjax-container">\(x_i\in\{0,1\}\)</span>，其中 1 表示正面，0 表示反面。设正面概率为 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span>，那么单个样本就服从伯努利分布（Bernoulli Distribution）。它的概率质量函数（Probability Mass Function, PMF，用于描述离散随机变量，直接给出概率。对应概率密度函数PDF，给出给定连续随机变量对应位置的密度，因为连续，特定点的概率必须为0，只能密度和变量范围积分得到概率）写成：</p>
<span displaypfx="" class="mathjax-container">\[p(x_i|\theta)=\theta^{x_i}(1-\theta)^{1-x_i},\quad x_i\in\{0,1\}\]</span>
<p>左边的 <span displaypfx="inline-" class="mathjax-container">\(p(\cdot|\theta)\)</span> 里的 <span displaypfx="inline-" class="mathjax-container">\(p\)</span> 是“概率分布/概率质量函数”的记号， <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 是模型参数，也就是“正面概率”。很多教材会把参数也记成 <span displaypfx="inline-" class="mathjax-container">\(p\)</span>，写成 <span displaypfx="inline-" class="mathjax-container">\(p(x_i|p)\)</span>；这并不算错，因为参数本身就是一个概率，但两个 <span displaypfx="inline-" class="mathjax-container">\(p\)</span> 同时出现时很容易视觉混淆，所以这里改用 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 来区分“模型符号”和“参数符号”。</p>
<p>当 <span displaypfx="inline-" class="mathjax-container">\(x_i=1\)</span> 时，</p>
<span displaypfx="" class="mathjax-container">\[p(x_i=1|\theta)=\theta^1(1-\theta)^0=\theta\]</span>
<p>当 <span displaypfx="inline-" class="mathjax-container">\(x_i=0\)</span> 时，</p>
<span displaypfx="" class="mathjax-container">\[p(x_i=0|\theta)=\theta^0(1-\theta)^1=1-\theta\]</span>
<p>如果 10 次里看到 7 次正面、3 次反面，那么整批数据的似然就是：</p>
<span displaypfx="" class="mathjax-container">\[p(D|\theta)=\theta^7(1-\theta)^3\]</span>
<p>对应的对数似然是</p>
<span displaypfx="" class="mathjax-container">\[\ell(\theta)=7\log \theta+3\log(1-\theta)\]</span>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/plot-binomial-loglik.png"><img class="alignnone size-full wp-image-41091" src="https://blog.gmem.cc/wp-content/uploads/2026/03/plot-binomial-loglik.png" alt="plot-binomial-loglik" width="100%" /></a></p>
<p>我们现在要最大化似然，需要对 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 求导并令导数为 0：</p>
<span displaypfx="" class="mathjax-container">\[\frac{d\ell(\theta)}{d\theta}=\frac{7}{\theta}-\frac{3}{1-\theta}=0\Rightarrow \theta=0.7\]</span>
<p>所以 <span displaypfx="inline-" class="mathjax-container">\(\hat{\theta}_{\mathrm{MLE}}=0.7\)</span>。即“在所有候选 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 里， <span displaypfx="inline-" class="mathjax-container">\(\theta=0.7\)</span> 最能让 7 正 3 反这份数据显得不奇怪”。</p>
<div class="blog_h3"><span class="graybg">从概率建模到损失函数</span></div>
<p>在机器学习里，损失函数往往由<span style="background-color: #c0c0c0;">概率建模假设（Probabilistic Modeling Assumption）</span>诱导出来。做法是先写下观测数据在参数 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 下的概率模型，再把训练集的负对数似然（Negative Log-Likelihood, NLL）当作优化目标。于是，最小化损失就不再只是一个工程规定，而是等价于最大化“已观测数据在模型下出现的可能性”。</p>
<p>以最常见的回归假设为例，若模型输出写成 <span displaypfx="inline-" class="mathjax-container">\(f_\theta(x)\)</span>，并假设真实标签满足</p>
<span displaypfx="" class="mathjax-container">\[y=f_\theta(x)+\varepsilon,\qquad \varepsilon\sim\mathcal{N}(0,\sigma^2)\]</span>
<p>这里的高斯分布指的不是 <span displaypfx="inline-" class="mathjax-container">\(y\)</span> 本身，也不是 <span displaypfx="inline-" class="mathjax-container">\(f_\theta(x)\)</span> 本身，而是<span style="background-color: #c0c0c0;">误差项，也就是残差 <span displaypfx="inline-" class="mathjax-container">\(y-f_\theta(x)\)</span> 的分布</span>。误差总是相对于模型当前给出的预测中心 <span displaypfx="inline-" class="mathjax-container">\(f_\theta(x)\)</span> 来计算：预测值附近最可能出现，偏离越远，概率越低。</p>
<p>从这个误差模型出发，可以把“误差分布”直接改写成“真实标签在给定输入下的条件分布”。因为 <span displaypfx="inline-" class="mathjax-container">\(\varepsilon\)</span> 服从均值为 0 的高斯分布，所以等价地，真实标签服从一个均值为 <span displaypfx="inline-" class="mathjax-container">\(f_\theta(x)\)</span> 的高斯分布：</p>
<span displaypfx="" class="mathjax-container">\[y\,|\,x \sim \mathcal{N}(f_\theta(x),\sigma^2)\]</span>
<p>这条式子的含义是：给定输入 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 之后，模型并不把输出 <span displaypfx="inline-" class="mathjax-container">\(y\)</span> 看成一个确定值，而是把它看成一个<span style="background-color: #c0c0c0;">以预测值 <span displaypfx="inline-" class="mathjax-container">\(f_\theta(x)\)</span> 为中心、方差为 <span displaypfx="inline-" class="mathjax-container">\(\sigma^2\)</span> 的高斯随机变量</span>。根据高斯分布的概率密度函数，可进一步写出条件概率密度：</p>
<span displaypfx="" class="mathjax-container">\[p_\theta(y|x)=\frac{1}{\sqrt{2\pi\sigma^2}}\exp\left(-\frac{(y-f_\theta(x))^2}{2\sigma^2}\right)\]</span>
<p>这时 <span displaypfx="inline-" class="mathjax-container">\(p_\theta(y_i|x_i)\)</span> 的含义就自然了：它评估的是在当前参数 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 下，训练集中已经观测到的真实标签 <span displaypfx="inline-" class="mathjax-container">\(y_i\)</span>，作为“围绕 <span displaypfx="inline-" class="mathjax-container">\(f_\theta(x_i)\)</span> 摆动的一个样本”是否足够合理。被评分的始终是<span style="background-color: #c0c0c0;">真实观测到的 <span displaypfx="inline-" class="mathjax-container">\(y_i\)</span></span>，而不是模型预测出来的 <span displaypfx="inline-" class="mathjax-container">\(f_\theta(x_i)\)</span>。<span displaypfx="inline-" class="mathjax-container">\(f_\theta(x_i)\)</span> 的作用不是直接成为被评分对象，而是作为条件分布的均值或位置参数，决定观测值最可能出现的位置。</p>
<p>这种思路并不限于高斯回归。分类任务里，条件分布不再是高斯，而会改成 Bernoulli 或 Categorical；若把噪声假设换成拉普拉斯分布（Laplacian Distribution），则导出的损失也会从平方误差变成绝对误差。更严谨地说，<span style="background-color: #c0c0c0;">损失函数是概率模型在训练集上的负对数似然写开后的结果</span>：高斯噪声导出平方误差（Squared Error），拉普拉斯噪声导出绝对误差（Absolute Error），Bernoulli 与 Categorical 分布则导出二分类或多分类交叉熵（Cross-Entropy）。</p>
<div class="blog_h3"><span class="graybg">高斯分布的MLE和最小二乘</span></div>
<p>先看监督回归（Supervised Regression）。训练集写成 <span displaypfx="inline-" class="mathjax-container">\(D=\{(x_i,y_i)\}_{i=1}^N\)</span>，其中 <span displaypfx="inline-" class="mathjax-container">\(x_i\)</span> 是输入特征，<span displaypfx="inline-" class="mathjax-container">\(y_i\)</span> 是真实输出。按照上面的统一框架，这里仍然是把 <span displaypfx="inline-" class="mathjax-container">\(x_i\)</span> 当作给定条件，只为输出建模条件分布 <span displaypfx="inline-" class="mathjax-container">\(p_\theta(y|x)\)</span>，并让真实观测到的 <span displaypfx="inline-" class="mathjax-container">\(y_i\)</span> 在模型下尽可能不意外：</p>
<span displaypfx="" class="mathjax-container">\[\hat\theta_{\mathrm{MLE}}=\arg\max_{\theta}\prod_{i=1}^{N}p_\theta(y_i|x_i)\]</span>
<p>这里的参数 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 不在 <span displaypfx="inline-" class="mathjax-container">\(x_i\)</span> 里，而是出现在假设函数 <span displaypfx="inline-" class="mathjax-container">\(f_\theta(x)\)</span> 里。例如线性回归（Linear Regression）可写成 <span displaypfx="inline-" class="mathjax-container">\(f_\theta(x)=\mathbf{w}^\top x+b\)</span>，其中 <span displaypfx="inline-" class="mathjax-container">\(\theta=(\mathbf{w},b)\)</span>。回归里常说的“高斯分布”指的不是整张训练集的 <span displaypfx="inline-" class="mathjax-container">\(y\)</span> 服从高斯分布，也不是模型预测值 <span displaypfx="inline-" class="mathjax-container">\(f_\theta(x)\)</span> 本身服从高斯分布，而是指<span style="background-color: #c0c0c0;">误差项，也就是残差 <span displaypfx="inline-" class="mathjax-container">\(y_i-f_\theta(x_i)\)</span> 的分布</span>。误差总是相对于当前模型给出的中心值 <span displaypfx="inline-" class="mathjax-container">\(f_\theta(x_i)\)</span> 来计算。</p>
<p>具体假设是：</p>
<span displaypfx="" class="mathjax-container">\[y_i=f_\theta(x_i)+\varepsilon_i,\quad \varepsilon_i\sim\mathcal{N}(0,\sigma^2)\ \text{i.i.d.}\]</span>
<p>等价写成条件分布：</p>
<span displaypfx="" class="mathjax-container">\[y_i\,|\,x_i \sim \mathcal{N}(f_\theta(x_i),\sigma^2)\]</span>
<p>上式的意思是：在给定输入 <span displaypfx="inline-" class="mathjax-container">\(x_i\)</span> 的条件下，输出 <span displaypfx="inline-" class="mathjax-container">\(y_i\)</span> 不再被视为确定值，而被建模为随机变量，并且服从均值为 <span displaypfx="inline-" class="mathjax-container">\(f_\theta(x_i)\)</span>、方差为 <span displaypfx="inline-" class="mathjax-container">\(\sigma^2\)</span> 的一维高斯分布（Gaussian Distribution），当然，这里的不确定性就是模型引入的。根据高斯分布的概率密度公式，并结合 i.i.d. 假设（联合似然为逐样本似然的乘积），整批数据的似然为</p>
<span displaypfx="" class="mathjax-container">\[p(D|\theta,\sigma^2)=\prod_{i=1}^{N}\frac{1}{\sqrt{2\pi\sigma^2}}\exp\left(-\frac{(y_i-f_\theta(x_i))^2}{2\sigma^2}\right)\]</span>
<p>取负对数似然（Negative Log-Likelihood, NLL）得到训练时真正被最小化的量：</p>
<span displaypfx="" class="mathjax-container">\[-\log p(D|\theta,\sigma^2)=\frac{N}{2}\log(2\pi\sigma^2)+\frac{1}{2\sigma^2}\sum_{i=1}^{N}(y_i-f_\theta(x_i))^2\]</span>
<p>当 <span displaypfx="inline-" class="mathjax-container">\(\sigma^2\)</span> 视为常数时，第一项与 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 无关，因此最小化 NLL 关于 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 等价于最小化平方误差和（Sum of Squared Errors, SSE）：</p>
<span displaypfx="" class="mathjax-container">\[\hat\theta_{\mathrm{MLE}}=\arg\min_\theta\sum_{i=1}^{N}(y_i-f_\theta(x_i))^2\]</span>
<p>把残差（Residual）记为 <span displaypfx="inline-" class="mathjax-container">\(r_i=y_i-f_\theta(x_i)\)</span>，则上式就是最小化 <span displaypfx="inline-" class="mathjax-container">\(\sum_i r_i^2\)</span>。因此，在“高斯噪声 + 固定方差”的回归假设下，<span style="background-color: #c0c0c0;">最大化似然（等价最大化对数似然）就是最小化残差平方和</span>。</p>
<p>这就是“最小二乘（Least Squares）”为什么会从概率建模里自然出现；均方误差（Mean Squared Error, MSE）只是把 SSE 再除以 <span displaypfx="inline-" class="mathjax-container">\(N\)</span>，不改变最优解。</p>
<p>如果 <span displaypfx="inline-" class="mathjax-container">\(\sigma^2\)</span> 也未知，则 MLE 会同时估计 <span displaypfx="inline-" class="mathjax-container">\((\theta,\sigma^2)\)</span>。在固定 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 时，对 <span displaypfx="inline-" class="mathjax-container">\(\sigma^2\)</span> 的 MLE 为</p>
<span displaypfx="" class="mathjax-container">\[\hat\sigma^2_{\mathrm{MLE}}=\frac{1}{N}\sum_{i=1}^{N}(y_i-f_\theta(x_i))^2\]</span>
<p>注意这里是 <span displaypfx="inline-" class="mathjax-container">\(1/N\)</span>（MLE），而不是无偏估计常用的 <span displaypfx="inline-" class="mathjax-container">\(1/(N-1)\)</span>。</p>
<p>顺带一提：把回归模型退化为“常数预测” <span displaypfx="inline-" class="mathjax-container">\(f_\theta(x)\equiv \mu\)</span>，就回到“在高斯噪声下估计均值 <span displaypfx="inline-" class="mathjax-container">\(\mu\)</span>”，其 MLE 是样本均值。这也是很多教材先从 <span displaypfx="inline-" class="mathjax-container">\(x_i=\mu+\varepsilon_i\)</span> 入手的原因：那是回归的一个最小特例（此时 <span displaypfx="inline-" class="mathjax-container">\(\theta=\mu\)</span>）。</p>
<div class="blog_h3"><span class="graybg">Bernoulli / Categorical 分布和交叉熵</span></div>
<p>分类任务与回归不同：标签通常是离散变量，因此这里使用的不是概率密度函数（Probability Density Function, PDF），而是概率质量函数（Probability Mass Function, PMF）。做最大似然估计时，最常见的做法同样是把输入 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 视为给定条件，只为标签建模条件分布 <span displaypfx="inline-" class="mathjax-container">\(p_\theta(y|x)\)</span>，然后让已观测标签在模型下尽可能“显得合理”。</p>
<p>先看二分类（Binary Classification）。设标签 <span displaypfx="inline-" class="mathjax-container">\(y_i\in\{0,1\}\)</span>，模型输出正类概率 <span displaypfx="inline-" class="mathjax-container">\(\pi_\theta(x_i)=p_\theta(y_i=1|x_i)\)</span>，则单个样本服从伯努利分布（Bernoulli Distribution）：</p>
<span displaypfx="" class="mathjax-container">\[p_\theta(y_i|x_i)=\pi_\theta(x_i)^{y_i}\bigl(1-\pi_\theta(x_i)\bigr)^{1-y_i}\]</span>
<p>在 i.i.d. 假设下，整批数据的似然为</p>
<span displaypfx="" class="mathjax-container">\[p(D|\theta)=\prod_{i=1}^{N}\pi_\theta(x_i)^{y_i}\bigl(1-\pi_\theta(x_i)\bigr)^{1-y_i}\]</span>
<p>取负对数似然，得到</p>
<span displaypfx="" class="mathjax-container">\[-\log p(D|\theta)=-\sum_{i=1}^{N}\Big[y_i\log \pi_\theta(x_i)+(1-y_i)\log\bigl(1-\pi_\theta(x_i)\bigr)\Big]\]</span>
<p>这正是二分类交叉熵（Binary Cross-Entropy, BCE）。因此，在“标签服从伯努利分布”的假设下，<span style="background-color: #c0c0c0;">最大化似然等价于最小化二分类交叉熵</span>。若再把 <span displaypfx="inline-" class="mathjax-container">\(\pi_\theta(x)\)</span> 写成 sigmoid 作用在 logit <span displaypfx="inline-" class="mathjax-container">\(z_\theta(x)\)</span> 上，即 <span displaypfx="inline-" class="mathjax-container">\(\pi_\theta(x)=\sigma(z_\theta(x))\)</span>，就得到工程实现里最常见的 sigmoid + BCE 训练形式。</p>
<p>再看多分类（Multiclass Classification）。设类别总数为 <span displaypfx="inline-" class="mathjax-container">\(C\)</span>，并用 one-hot 向量 <span displaypfx="inline-" class="mathjax-container">\(y_i=(y_{i1},\dots,y_{iC})\)</span> 表示真实标签，其中只有真实类别对应那一项为 1，其余为 0。若模型输出类别概率 <span displaypfx="inline-" class="mathjax-container">\(\pi_{\theta,1}(x_i),\dots,\pi_{\theta,C}(x_i)\)</span>，且满足 <span displaypfx="inline-" class="mathjax-container">\(\sum_{c=1}^{C}\pi_{\theta,c}(x_i)=1\)</span>，则单个样本服从类别分布（Categorical Distribution）：</p>
<span displaypfx="" class="mathjax-container">\[p_\theta(y_i|x_i)=\prod_{c=1}^{C}\pi_{\theta,c}(x_i)^{y_{ic}}\]</span>
<p>整批数据的似然为</p>
<span displaypfx="" class="mathjax-container">\[p(D|\theta)=\prod_{i=1}^{N}\prod_{c=1}^{C}\pi_{\theta,c}(x_i)^{y_{ic}}\]</span>
<p>取负对数似然，得到</p>
<span displaypfx="" class="mathjax-container">\[-\log p(D|\theta)=-\sum_{i=1}^{N}\sum_{c=1}^{C}y_{ic}\log \pi_{\theta,c}(x_i)\]</span>
<p>这正是多分类交叉熵（Categorical Cross-Entropy）。若标签是标准 one-hot，那么每个样本只会保留真实类别那一项，损失就退化成 <span displaypfx="inline-" class="mathjax-container">\(-\log \pi_{\theta,c^*}(x_i)\)</span>；若标签本身是软标签（Soft Label），则公式不变，只是 <span displaypfx="inline-" class="mathjax-container">\(y_{ic}\)</span> 不再只有 0 和 1，而是一个分布。</p>
<div class="blog_h3"><span class="graybg">拉普拉斯分布的MLE和绝对误差</span></div>
<p>若回归任务不再假设误差服从高斯分布，而是假设误差项 <span displaypfx="inline-" class="mathjax-container">\(\varepsilon\)</span> 服从拉普拉斯分布（Laplacian Distribution），即</p>
<span displaypfx="" class="mathjax-container">\[y_i=f_\theta(x_i)+\varepsilon_i,\qquad \varepsilon_i\sim \mathrm{Laplace}(0,b)\ \text{i.i.d.}\]</span>
<p>那么等价地，真实标签在给定输入后的条件分布可写成</p>
<span displaypfx="" class="mathjax-container">\[y_i\,|\,x_i \sim \mathrm{Laplace}(f_\theta(x_i),b)\]</span>
<p>其中 <span displaypfx="inline-" class="mathjax-container">\(f_\theta(x_i)\)</span> 是位置参数（Location Parameter），<span displaypfx="inline-" class="mathjax-container">\(b\)</span> 是尺度参数（Scale Parameter）。拉普拉斯分布的一维概率密度函数为</p>
<span displaypfx="" class="mathjax-container">\[p_\theta(y_i|x_i)=\frac{1}{2b}\exp\left(-\frac{|y_i-f_\theta(x_i)|}{b}\right)\]</span>
<p>在 i.i.d. 假设下，整批数据的似然为</p>
<span displaypfx="" class="mathjax-container">\[p(D|\theta,b)=\prod_{i=1}^{N}\frac{1}{2b}\exp\left(-\frac{|y_i-f_\theta(x_i)|}{b}\right)\]</span>
<p>取负对数似然，得到</p>
<span displaypfx="" class="mathjax-container">\[-\log p(D|\theta,b)=N\log(2b)+\frac{1}{b}\sum_{i=1}^{N}|y_i-f_\theta(x_i)|\]</span>
<p>当 <span displaypfx="inline-" class="mathjax-container">\(b\)</span> 视为常数时，第一项与 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 无关，因此最小化 NLL 关于 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 等价于最小化绝对误差和（Sum of Absolute Errors, SAE）：</p>
<span displaypfx="" class="mathjax-container">\[\hat\theta_{\mathrm{MLE}}=\arg\min_\theta\sum_{i=1}^{N}|y_i-f_\theta(x_i)|\]</span>
<p>这正是平均绝对误差（Mean Absolute Error, MAE）背后的概率来源。与高斯分布相比，拉普拉斯分布在中心更尖、尾部更厚，因此它对应的损失不再像平方误差那样强烈放大大残差，而是按线性方式惩罚偏差。也正因为如此，MAE 通常比 MSE 对离群点（Outlier）更稳健。</p>
<p>因此，高斯分布与最小二乘、拉普拉斯分布与绝对误差、Bernoulli / Categorical 分布与交叉熵，其实是同一个统计逻辑在不同任务类型下的三种展开：<span style="background-color: #c0c0c0;">先假设观测数据服从某个条件分布，再对训练集做最大似然估计；把负对数似然写开后，就得到具体的训练损失</span>。</p>
<div class="blog_h2"><span class="graybg">最大后验估计（MAP）</span></div>
<p>最大后验估计（Maximum A Posteriori, MAP）在 MLE 的“数据解释能力”之外，再加入参数的先验（Prior）信息。它选择后验概率（Posterior）最大的参数：</p>
<span displaypfx="" class="mathjax-container">\[\hat{\theta}_{\mathrm{MAP}}=\arg\max_{\theta}p(\theta|D)\]</span>
<p>根据贝叶斯定理：</p>
<span displaypfx="" class="mathjax-container">\[p(\theta|D)=\frac{p(D|\theta)p(\theta)}{p(D)}\]</span>
<p>其中 <span displaypfx="inline-" class="mathjax-container">\(p(D|\theta)\)</span> 是似然（Likelihood）， <span displaypfx="inline-" class="mathjax-container">\(p(\theta)\)</span> 是先验， <span displaypfx="inline-" class="mathjax-container">\(p(D)\)</span> 是证据（Evidence）。因为 <span displaypfx="inline-" class="mathjax-container">\(p(D)\)</span> 与参数 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 无关，所以在求最大值时它只是常数，可以直接忽略：</p>
<span displaypfx="" class="mathjax-container">\[\hat{\theta}_{\mathrm{MAP}}=\arg\max_{\theta}p(D|\theta)p(\theta)=\arg\max_{\theta}\big(\log p(D|\theta)+\log p(\theta)\big)\]</span>
<p>这个式子清楚地说明了 MAP 的结构： <span displaypfx="inline-" class="mathjax-container">\(\log p(D|\theta)\)</span> 负责拟合数据， <span displaypfx="inline-" class="mathjax-container">\(\log p(\theta)\)</span> 负责约束参数不要偏离先验认知。若改写成最小化形式，则有</p>
<span displaypfx="" class="mathjax-container">\[\hat{\theta}_{\mathrm{MAP}}=\arg\min_\theta\big(-\log p(D|\theta)-\log p(\theta)\big)\]</span>
<p>因此，MAP 可以理解为“负对数似然 + 先验诱导的惩罚项（Penalty）”。这也是为什么很多正则化（Regularization）能够从贝叶斯视角解释：L2 正则通常对应高斯先验，L1 正则通常对应拉普拉斯先验。若先验在可行域内与 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 无关（例如均匀先验： <span displaypfx="inline-" class="mathjax-container">\(p(\theta)=c\)</span>），则 <span displaypfx="inline-" class="mathjax-container">\(\log p(\theta)=\log c\)</span> 是关于 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 的常数；在 <span displaypfx="inline-" class="mathjax-container">\(\arg\max_\theta\)</span> 中加上或去掉这一项都不改变最优点，因此 MAP 与 MLE 给出同一组参数（若均匀先验还隐含“只在某个范围内为常数、范围外为 0”，则等价于在该范围约束下做 MLE）。</p>
<p>继续用抛硬币解释。现在参数已经统一记作 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span>，因此先验也写成 <span displaypfx="inline-" class="mathjax-container">\(p(\theta)\)</span>，而不再写 <span displaypfx="inline-" class="mathjax-container">\(p(p)\)</span>。若对 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 设 Beta 分布（Beta Distribution）先验</p>
<p>Beta 分布是定义在区间 <span displaypfx="inline-" class="mathjax-container">\([0,1]\)</span> 上的连续分布，最常用来描述“某个概率值本身的不确定性”，因此非常适合作为伯努利参数 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 的先验。</p>
<span displaypfx="" class="mathjax-container">\[p(\theta)\propto \theta^{\alpha-1}(1-\theta)^{\beta-1},\quad 0\le \theta\le 1\]</span>
<p>这里 <span displaypfx="inline-" class="mathjax-container">\(\propto\)</span> 表示“正比于”，意思是左边真正的概率密度函数还差一个归一化常数（Normalization Constant），这个常数负责保证密度在区间 <span displaypfx="inline-" class="mathjax-container">\([0,1]\)</span> 上积分为 1。对 MAP 而言，这个常数不影响最大值位置，所以通常省略不写。</p>
<p>参数 <span displaypfx="inline-" class="mathjax-container">\(\alpha\)</span> 和 <span displaypfx="inline-" class="mathjax-container">\(\beta\)</span> 控制分布形状： <span displaypfx="inline-" class="mathjax-container">\(\alpha\)</span> 越大，分布越偏向较大的 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span>； <span displaypfx="inline-" class="mathjax-container">\(\beta\)</span> 越大，分布越偏向较小的 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span>。例如 <span displaypfx="inline-" class="mathjax-container">\(\mathrm{Beta}(2,2)\)</span> 会把概率质量更多放在中间区域，表达“更倾向认为硬币接近公平”； <span displaypfx="inline-" class="mathjax-container">\(\mathrm{Beta}(8,2)\)</span> 则更偏向 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 接近 1。</p>
<p>那么它表达的是：在看到数据之前，我们已经对“硬币正面概率应该落在什么范围”有一个先验偏好。</p>
<p>把这个先验与 7 正 3 反的似然 <span displaypfx="inline-" class="mathjax-container">\(p(D|\theta)=\theta^7(1-\theta)^3\)</span> 相乘，得到后验：</p>
<span displaypfx="" class="mathjax-container">\[p(\theta|D)\propto \theta^{7+\alpha-1}(1-\theta)^{3+\beta-1}\]</span>
<p>这说明后验仍然是 Beta 分布：</p>
<span displaypfx="" class="mathjax-container">\[p(\theta|D)=\mathrm{Beta}(7+\alpha,3+\beta)\]</span>
<p>众数（Mode）指的是<span style="background-color: #c0c0c0;">概率密度函数最高的那个位置</span>，也就是“这个分布最偏好的参数值”。因为 MAP 的定义本来就是寻找后验概率/后验密度最大的参数，所以当后验分布已经写出来时，MAP 估计就是这个后验分布的众数。</p>
<p>因为后验与 <span displaypfx="inline-" class="mathjax-container">\(\theta^{7+\alpha-1}(1-\theta)^{3+\beta-1}\)</span> 成正比，所以只需最大化这个函数。取对数后，等价目标变成</p>
<span displaypfx="" class="mathjax-container">\[(7+\alpha-1)\log \theta+(3+\beta-1)\log(1-\theta)\]</span>
<p>对 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 求导并令导数为 0：</p>
<span displaypfx="" class="mathjax-container">\[\frac{7+\alpha-1}{\theta}-\frac{3+\beta-1}{1-\theta}=0\]</span>
<p>移项并整理可得</p>
<span displaypfx="" class="mathjax-container">\[(7+\alpha-1)(1-\theta)=(3+\beta-1)\theta\Rightarrow \hat{\theta}_{\mathrm{MAP}}=\frac{7+\alpha-1}{10+\alpha+\beta-2}\]</span>
<p>因此，当 <span displaypfx="inline-" class="mathjax-container">\(\alpha,\beta&gt;1\)</span> 时，Beta 分布的众数（Mode）也就是 MAP 估计。</p>
<p>若取 <span displaypfx="inline-" class="mathjax-container">\(\mathrm{Beta}(2,2)\)</span> 先验，则</p>
<span displaypfx="" class="mathjax-container">\[\hat{\theta}_{\mathrm{MAP}}=\frac{7+2-1}{10+2+2-2}=\frac{8}{12}=\frac{2}{3}\]</span>
<p>它比 MLE 的 <span displaypfx="inline-" class="mathjax-container">\(0.7\)</span> 更靠近 <span displaypfx="inline-" class="mathjax-container">\(0.5\)</span>。原因很具体： <span displaypfx="inline-" class="mathjax-container">\(\mathrm{Beta}(2,2)\)</span> 可以理解为在真实观测之外，先额外放入了“1 次正面 + 1 次反面”的温和偏好，所以最终估计不会被7正3反的样本完全带着走。样本很少时，先验的影响明显；样本很多时，数据项占主导，MAP 会逐渐逼近 MLE。</p>
<p>在机器学习里，MAP 与正则化（Regularization）本质上是同一件事的两种表述。不是“随意加一个惩罚项”，而是：<span style="background-color: #c0c0c0;">一旦你给参数指定先验，取负对数后，这个先验就会自动变成优化目标里的正则项</span>。</p>
<p>先看一般形式。MAP 最大化的是后验概率 <span displaypfx="inline-" class="mathjax-container">\(p(\theta|D)\)</span>，等价于最小化负对数后验：</p>
<span displaypfx="" class="mathjax-container">\[-\log p(\theta|D)=-\log p(D|\theta)-\log p(\theta)+\mathrm{const}\]</span>
<p>第一项 <span displaypfx="inline-" class="mathjax-container">\(-\log p(D|\theta)\)</span> 是数据拟合项，第二项 <span displaypfx="inline-" class="mathjax-container">\(-\log p(\theta)\)</span> 就是先验带来的惩罚项。因此“正则化”并不是凭空发明出来的工程技巧，而是贝叶斯先验在优化问题里的直接体现。</p>
<p>若参数向量 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 服从零均值各向同性高斯先验（Isotropic Gaussian Prior），可以写成</p>
<span displaypfx="" class="mathjax-container">\[p(\theta)\propto \exp\left(-\frac{1}{2\tau^2}\|\theta\|_2^2\right)\]</span>
<p>这里 <span displaypfx="inline-" class="mathjax-container">\(\tau^2\)</span> 控制先验方差：方差越小，越强地偏好参数靠近 0。对它取负对数得到</p>
<span displaypfx="" class="mathjax-container">\[-\log p(\theta)=\frac{1}{2\tau^2}\|\theta\|_2^2+\mathrm{const}\]</span>
<p>把常数 <span displaypfx="inline-" class="mathjax-container">\(\frac{1}{2\tau^2}\)</span> 记成 <span displaypfx="inline-" class="mathjax-container">\(\lambda\)</span>，就得到熟悉的目标：</p>
<span displaypfx="" class="mathjax-container">\[-\log p(D|\theta)+\lambda\|\theta\|_2^2\]</span>
<p>这正是 <span displaypfx="inline-" class="mathjax-container">\(L_2\)</span> 正则。它的作用可以理解为：先验认为“大权重不太可信”，所以优化时不仅要拟合数据，还要为过大的参数付出代价。由于高斯先验在 0 附近平滑、尾部衰减快，它通常会把参数整体压小，但不特别鼓励大量参数精确等于 0。</p>
<p>若先验改成拉普拉斯（Laplacian）分布：</p>
<span displaypfx="" class="mathjax-container">\[p(\theta)\propto \exp\big(-\lambda\|\theta\|_1\big)\]</span>
<p>则负对数先验变成</p>
<span displaypfx="" class="mathjax-container">\[-\log p(\theta)=\lambda\|\theta\|_1+\mathrm{const}\]</span>
<p>于是 MAP 等价于最小化</p>
<span displaypfx="" class="mathjax-container">\[-\log p(D|\theta)+\lambda\|\theta\|_1\]</span>
<p>这就是 <span displaypfx="inline-" class="mathjax-container">\(L_1\)</span> 正则。它与 <span displaypfx="inline-" class="mathjax-container">\(L_2\)</span> 的关键区别在于：拉普拉斯先验在 0 处尖得更厉害，因此更强地偏好很多参数直接变成 0，也就是产生稀疏性（Sparsity）。</p>
<p>所以可以把对应关系记成一条很清楚的链：<span style="background-color: #c0c0c0;">高斯先验对应 <span displaypfx="inline-" class="mathjax-container">\(L_2\)</span>，拉普拉斯先验对应 <span displaypfx="inline-" class="mathjax-container">\(L_1\)</span>；正则项的形状，本质上就是先验密度形状的负对数</span>。很多看起来像“人为添加的惩罚项”，其实都可以解释为“在做 MAP”。</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/regularization-distribution-assumptions.png"><img class="alignnone size-full" src="https://blog.gmem.cc/wp-content/uploads/2026/03/regularization-distribution-assumptions.png" alt="regularization-distribution-assumptions" width="1920" height="1064" /></a></p>
<p>这里的分布假设有两个不同落点。若假设的是数据误差或残差 <span displaypfx="inline-" class="mathjax-container">\(\epsilon\)</span> 的分布，它进入的是似然 <span displaypfx="inline-" class="mathjax-container">\(p(D|\theta)\)</span>，决定数据拟合项的形状；若假设的是参数 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 自身的分布，它进入的是先验 <span displaypfx="inline-" class="mathjax-container">\(p(\theta)\)</span>，决定正则项的形状。前者回答“数据会怎样围绕模型波动”，后者回答“参数本身更可能落在什么区域”。</p>
<p>因此，高斯和拉普拉斯并不只用于描述数据集。高斯残差假设会把负对数似然化成平方误差，拉普拉斯残差假设会把负对数似然化成绝对误差；与此同时，零均值高斯参数先验会把负对数先验化成 <span displaypfx="inline-" class="mathjax-container">\(L_2\)</span> 正则，零均值拉普拉斯参数先验会把负对数先验化成 <span displaypfx="inline-" class="mathjax-container">\(L_1\)</span> 正则。它们使用的是同一类分布族，但一个作用在数据项 <span displaypfx="inline-" class="mathjax-container">\(p(D|\theta)\)</span>，一个作用在参数项 <span displaypfx="inline-" class="mathjax-container">\(p(\theta)\)</span>。</p>
<div class="blog_h2"><span class="graybg">大数定律与中心极限定理</span></div>
<div class="blog_h3"><span class="graybg">大数定律（Law of Large Numbers, LLN）</span></div>
<p>大数定律说明：当独立同分布样本越来越多时，样本平均会稳定地靠近真实期望（Expectation）。若 <span displaypfx="inline-" class="mathjax-container">\(X_1,\dots,X_n\)</span> 独立同分布，且 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[X]\)</span> 存在，则</p>
<span displaypfx="" class="mathjax-container">\[\frac{1}{n}\sum_{i=1}^{n}X_i \to \mathbb{E}[X],\quad n\to\infty\]</span>
<p>这里的重点是“平均值会稳定下来”，而不是“每一次新观测都会让结果更接近真值”。它描述的是长期趋势：样本量越大，随机波动在平均过程中被不断抵消，样本平均就越不容易偏离真实期望太远。</p>
<p>最经典的例子是抛公平硬币。设正面记为 1、反面记为 0，则单次试验的期望是 <span displaypfx="inline-" class="mathjax-container">\(\mathbb{E}[X]=0.5\)</span>。前几次抛掷时，正面比例可能是 1、0、0.67、0.25，波动很大；但抛掷次数达到几百、几千次后，样本平均 <span displaypfx="inline-" class="mathjax-container">\(\bar{X}\)</span> 会越来越稳定地靠近 0.5。大数定律回答的是“为什么频率会稳定到概率附近”。</p>
<div class="blog_h3"><span class="graybg">中心极限定理（Central Limit Theorem, CLT）</span></div>
<p>中心极限定理（Central Limit Theorem, CLT）描述的是：在独立同分布且方差有限的条件下，样本均值经过适当标准化后，会趋近于正态分布（Normal Distribution）。它给出的不是“平均值最终落到哪里”的结论，而是“平均值围绕真值波动时，波动形状如何分布”的规律。</p>
<p>因此，中心极限定理讨论的重点不是“均值会不会收敛”，而是<span style="background-color: #c0c0c0;">样本均值在真值附近如何波动，以及这种波动的分布长什么样</span>。标准写法是：</p>
<span displaypfx="" class="mathjax-container">\[\frac{\sqrt{n}(\bar{X}-\mu)}{\sigma}\Rightarrow \mathcal{N}(0,1)\]</span>
<p>这里 <span displaypfx="inline-" class="mathjax-container">\(\mu=\mathbb{E}[X]\)</span> 是总体均值， <span displaypfx="inline-" class="mathjax-container">\(\sigma^2=\mathrm{Var}(X)\)</span> 是总体方差。所谓<span style="background-color: #c0c0c0;">标准化（Standardization）</span>，就是先减去均值 <span displaypfx="inline-" class="mathjax-container">\(\mu\)</span>，把中心移到 0；再除以标准差 <span displaypfx="inline-" class="mathjax-container">\(\sigma\)</span>，把尺度统一成“多少个标准差”；再乘上 <span displaypfx="inline-" class="mathjax-container">\(\sqrt{n}\)</span>，把样本均值随着样本量增大而缩小的波动重新放回可比较的尺度。标准化之后，不同样本量下的波动可以放到同一个参考系里比较。</p>
<p>所谓<span style="background-color: #c0c0c0;">方差有限</span>，就是随机变量的波动强度不是无限大，满足 <span displaypfx="inline-" class="mathjax-container">\(\mathrm{Var}(X)&lt;\infty\)</span>。直观上，这意味着样本虽然会波动，但不会被极端值以“无限强”的方式主导。像伯努利分布、二项分布、泊松分布、均匀分布和高斯分布都满足这个条件；而某些重尾分布则可能不满足，因此不能直接套用最基础的 CLT 表述。</p>
<p>为什么要乘上 <span displaypfx="inline-" class="mathjax-container">\(\sqrt{n}\)</span>？因为样本均值的波动规模大约是 <span displaypfx="inline-" class="mathjax-container">\(\sigma/\sqrt{n}\)</span>：样本越多，均值越稳定。如果不乘 <span displaypfx="inline-" class="mathjax-container">\(\sqrt{n}\)</span>，当 <span displaypfx="inline-" class="mathjax-container">\(n\)</span> 增大时， <span displaypfx="inline-" class="mathjax-container">\(\bar{X}-\mu\)</span> 会越来越接近 0，看不出其分布形状；乘上 <span displaypfx="inline-" class="mathjax-container">\(\sqrt{n}\)</span> 后，波动被拉回到常数量级，才会显现出稳定的正态极限。</p>
<p>继续看硬币例子。设 <span displaypfx="inline-" class="mathjax-container">\(X_i\in\{0,1\}\)</span> 且正面概率为 0.5，则 <span displaypfx="inline-" class="mathjax-container">\(\mu=0.5\)</span>， <span displaypfx="inline-" class="mathjax-container">\(\sigma^2=0.25\)</span>，标准差 <span displaypfx="inline-" class="mathjax-container">\(\sigma=0.5\)</span>。CLT 说的是：</p>
<span displaypfx="" class="mathjax-container">\[\frac{\sqrt{n}(\bar{X}-0.5)}{0.5}\Rightarrow \mathcal{N}(0,1)\]</span>
<p>例如当 <span displaypfx="inline-" class="mathjax-container">\(n=100\)</span> 时，正面比例 <span displaypfx="inline-" class="mathjax-container">\(\bar{X}\)</span> 的标准差大约是 <span displaypfx="inline-" class="mathjax-container">\(0.5/\sqrt{100}=0.05\)</span>。这意味着正面比例通常会落在 <span displaypfx="inline-" class="mathjax-container">\(0.5\pm 0.1\)</span> 这一量级附近；更精确地，用正态近似可写成</p>
<span displaypfx="" class="mathjax-container">\[\bar{X}\approx \mathcal{N}\left(0.5,\frac{0.25}{100}\right)=\mathcal{N}(0.5,0.0025)\]</span>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/plot-clt.png"><img class="alignnone size-full wp-image-40929" src="https://blog.gmem.cc/wp-content/uploads/2026/03/plot-clt.png" alt="plot-clt" width="100%" /></a></p>
<p>上图是样本量分别为1, 5, 20, 100的Bernoulli(0.5)分布，分别进行了30000轮测试，绘制的（每轮）标准化后的分布，可以看到样本量足够多时，其均值倾向于向中心（未标准化前的0.5对应此伯努利分布的总体均值）靠近。</p>
<p>所以 CLT 回答的是“为什么很多统计量在样本足够大时会近似高斯”，而 LLN 回答的是“为什么样本平均会逼近真值”。前者给出分布近似，后者给出收敛结论。置信区间、显著性检验、A/B test 和 mini-batch 梯度噪声分析，主要依赖的是 CLT 提供的近似正态性。</p>
<div class="blog_h3"><span class="graybg">置信度与置信区间</span></div>
<p>置信度（Confidence Level）与置信区间（Confidence Interval）属于统计推断（Statistical Inference）中的区间估计（Interval Estimation）。它们处理的不是“样本本身长什么样”，而是<span style="background-color: #c0c0c0;">在只看到一批有限样本时，怎样给未知总体参数画出一个有覆盖保证的范围</span>。在机器学习实验、A/B test、离线评测和指标报表里，样本均值、准确率、点击率、转化率和误差率后面常跟着一个区间，这个区间就是区间估计的产物。</p>
<p>若目标是估计总体均值 <span displaypfx="inline-" class="mathjax-container">\(\mu\)</span>，样本均值为 <span displaypfx="inline-" class="mathjax-container">\(\bar{X}\)</span>，且样本量足够大或总体近似正态，那么基于中心极限定理，可以构造近似的双侧置信区间：</p>
<span displaypfx="" class="mathjax-container">\[\bar{X}\pm z_{1-\alpha/2}\frac{\sigma}{\sqrt{n}}\]</span>
<p>若总体标准差 <span displaypfx="inline-" class="mathjax-container">\(\sigma\)</span> 未知，而样本来自正态总体或样本量适中且使用样本标准差 <span displaypfx="inline-" class="mathjax-container">\(s\)</span> 近似，则常写作：</p>
<span displaypfx="" class="mathjax-container">\[\bar{X}\pm t_{1-\alpha/2,\,n-1}\frac{s}{\sqrt{n}}\]</span>
<p>这里每个元素的含义分别是：</p>
<ul>
<li><span displaypfx="inline-" class="mathjax-container">\(\bar{X}\)</span>：样本均值（Sample Mean），是当前样本对总体均值的点估计（Point Estimate）。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(n\)</span>：样本量（Sample Size）。样本越多，区间通常越窄。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(\sigma\)</span>：总体标准差（Population Standard Deviation）；若未知，常用样本标准差 <span displaypfx="inline-" class="mathjax-container">\(s\)</span> 替代。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(\frac{\sigma}{\sqrt{n}}\)</span> 或 <span displaypfx="inline-" class="mathjax-container">\(\frac{s}{\sqrt{n}}\)</span>：标准误（Standard Error），表示样本均值本身的波动尺度，而不是单个样本点的波动。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(\alpha\)</span>：显著性水平（Significance Level）。若置信度为 95%，则 <span displaypfx="inline-" class="mathjax-container">\(\alpha=0.05\)</span>。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(z_{1-\alpha/2}\)</span>：标准正态分布的分位数（Quantile）；95% 置信度时大约是 <span displaypfx="inline-" class="mathjax-container">\(1.96\)</span>。</li>
<li><span displaypfx="inline-" class="mathjax-container">\(t_{1-\alpha/2,\,n-1}\)</span>：Student t 分布的分位数，带有 <span displaypfx="inline-" class="mathjax-container">\(n-1\)</span> 个自由度（Degrees of Freedom），用于总体方差未知时。</li>
</ul>
<p>在这个表达式里，<span style="background-color: #c0c0c0;">置信区间</span> 指的是最终得到的区间本身，例如 <span displaypfx="inline-" class="mathjax-container">\([1.8,2.4]\)</span>；<span style="background-color: #c0c0c0;">置信度</span> 指的是构造这个区间的方法在重复抽样下的长期覆盖率，例如 95%、99%。因此，95% 置信区间的严格含义是：如果用同一种抽样方式和同一种区间构造公式反复重复实验，那么大约 95% 的区间会覆盖真实参数。</p>
<p>这一定义有一个极其重要的解释边界。总体参数 <span displaypfx="inline-" class="mathjax-container">\(\mu\)</span> 在经典频率学派（Frequentist）统计里被视为固定但未知的常数；随机的是样本，因此随机的是区间端点。样本一旦观察完成，这次得到的区间要么覆盖 <span displaypfx="inline-" class="mathjax-container">\(\mu\)</span>，要么不覆盖，概率意义已经不再施加在参数本身上。于是，95% 置信度描述的是<span style="background-color: #c0c0c0;">区间构造程序的长期可靠性</span>，而不是“参数有 95% 概率落在这次区间里”的后验概率表述。</p>
<p>置信度并不局限于连续分布。它的定义依赖的是“重复抽样下的覆盖率”，而不是总体分布是否连续。对伯努利分布（Bernoulli Distribution）、二项分布（Binomial Distribution）、泊松分布（Poisson Distribution）这类离散分布，同样可以对参数构造 95% 或 99% 的区间估计。例如对二项分布中的成功概率 <span displaypfx="inline-" class="mathjax-container">\(p\)</span>，就可以根据观测到的成功次数构造 <span displaypfx="inline-" class="mathjax-container">\(p\)</span> 的置信区间；若参数或目标对象不是一维连续量，更宽泛的名称则是置信集合（Confidence Set）。</p>
<p>离散分布与连续分布的差别不在“能不能谈置信度”，而在于区间构造的细节。连续情形下，区间端点可以较平滑地调节到目标覆盖率附近；离散情形下，统计量只能取离散值，覆盖率往往无法恰好等于名义值，例如正好 95%，而常常只能做到“不低于 95%”。因此，离散分布里的精确区间常带有一定保守性（Conservativeness）：区间更宽一些，但覆盖保证更稳。这也是为什么在离散统计推断里，除了近似正态区间外，还常见 Clopper–Pearson 这类精确区间构造方法。</p>
<p>一个具体例子最容易说明这两个概念。设某模型在 100 次独立测试中的平均准确率估计为 <span displaypfx="inline-" class="mathjax-container">\(\bar{X}=0.82\)</span>，样本标准差为 <span displaypfx="inline-" class="mathjax-container">\(s=0.10\)</span>。若采用近似 95% 置信区间，可写成：</p>
<span displaypfx="" class="mathjax-container">\[0.82\pm 1.96\times \frac{0.10}{\sqrt{100}}=0.82\pm 0.0196\]</span>
<p>于是区间约为：</p>
<span displaypfx="" class="mathjax-container">\[[0.8004,\ 0.8396]\]</span>
<p>这里 <span displaypfx="inline-" class="mathjax-container">\([0.8004,0.8396]\)</span> 是置信区间，95% 是置信度。它表示：按这种抽样和构造方式长期重复下去，约 95% 的此类区间会覆盖真实平均准确率；这次具体得到的这个区间只是其中一个实现结果。</p>
<p>区间宽度主要由三个因素共同决定：</p>
<ul>
<li>样本波动越大，即 <span displaypfx="inline-" class="mathjax-container">\(\sigma\)</span> 或 <span displaypfx="inline-" class="mathjax-container">\(s\)</span> 越大，区间越宽。</li>
<li>样本量越大，即 <span displaypfx="inline-" class="mathjax-container">\(n\)</span> 越大，标准误越小，区间越窄。</li>
<li>置信度越高，例如从 95% 提高到 99%，对应分位数更大，区间也会变宽。</li>
</ul>
<p>因此，置信区间是在样本有限时对参数估计可靠性的定量表达；置信度则是这套区间构造方法愿意给出的覆盖承诺。两者必须一起理解：只有区间没有置信度，范围没有统计保证；只有置信度没有区间，覆盖承诺也无法落到具体参数估计上。</p>
<div class="blog_h2"><span class="graybg">随机过程</span></div>
<p>前面讨论的随机变量（Random Variable）通常只对应一次不确定试验，例如抛一次硬币、测一次身高、抽取一个样本标签。随机过程（Stochastic Process）则讨论<span style="background-color: #c0c0c0;">一串彼此有关、按时间或空间索引起来的随机变量</span>。它适合描述会随时间演化的不确定系统，例如天气变化、股价波动、队列长度、用户行为序列、传感器读数，以及自然语言中的 token 序列。</p>
<p>形式上，随机过程可记为：</p>
<span displaypfx="" class="mathjax-container">\[\{X_t\}_{t\in T}\]</span>
<p>这里 <span displaypfx="inline-" class="mathjax-container">\(T\)</span> 是索引集合（Index Set），常表示时间； <span displaypfx="inline-" class="mathjax-container">\(X_t\)</span> 是时刻 <span displaypfx="inline-" class="mathjax-container">\(t\)</span> 的随机变量。若 <span displaypfx="inline-" class="mathjax-container">\(T=\{0,1,2,\dots\}\)</span>，过程是离散时间（Discrete-time）的；若 <span displaypfx="inline-" class="mathjax-container">\(T=[0,\infty)\)</span>，过程则是连续时间（Continuous-time）的。每个 <span displaypfx="inline-" class="mathjax-container">\(X_t\)</span> 都有自己的分布，但更重要的是这些随机变量之间的联合分布（Joint Distribution）与依赖结构，因为随机过程关心的不是“某一时刻单独会怎样”，而是“整个序列怎样一起变化”。</p>
<p>从结果形态看，一次随机过程的实现不再是一个点，而是一条轨迹（Trajectory）或样本路径（Sample Path）。例如，设 <span displaypfx="inline-" class="mathjax-container">\(X_t\)</span> 表示第 <span displaypfx="inline-" class="mathjax-container">\(t\)</span> 天的气温，那么一次观测得到的是一整段温度序列 <span displaypfx="inline-" class="mathjax-container">\((X_1,X_2,\dots,X_T)\)</span>；若 <span displaypfx="inline-" class="mathjax-container">\(X_t\)</span> 表示语言模型在位置 <span displaypfx="inline-" class="mathjax-container">\(t\)</span> 生成的 token，那么一次实现就是一整句文本。</p>
<p>随机过程之所以在机器学习里重要，是因为很多任务天生就是时序问题。时间序列预测关心未来值如何演化，隐马尔可夫模型（Hidden Markov Model, HMM）关心隐藏状态如何随时间转移，强化学习关心状态—动作—奖励序列怎样展开，自回归语言模型则是在建模 token 序列的联合概率。因此，随机过程可以看作“把单个随机变量扩展到整条时间轴上的概率建模语言”。</p>
<div class="blog_h3"><span class="graybg">马尔可夫性与马尔可夫过程</span></div>
<p>马尔可夫性（Markov Property）讨论的是随机过程中的“记忆如何被压缩”。它刻画这样一种情形：<span style="background-color: #c0c0c0;">如果当前状态已经把与未来演化有关的信息概括完整，那么预测下一步时就不再需要显式回看更久的历史</span>。在这种表示下，过去对未来的影响已经通过当前状态被浓缩进来了。</p>
<p>设随机过程为 <span displaypfx="inline-" class="mathjax-container">\(\{X_t\}_{t=0}^{\infty}\)</span>，其中 <span displaypfx="inline-" class="mathjax-container">\(X_t\)</span> 表示时刻 <span displaypfx="inline-" class="mathjax-container">\(t\)</span> 的随机状态。若它满足一阶马尔可夫性，则有：</p>
<span displaypfx="" class="mathjax-container">\[P(X_{t+1}\mid X_t,X_{t-1},\dots,X_0)=P(X_{t+1}\mid X_t)\]</span>
<p>这条式子的含义是：在已经知道当前状态 <span displaypfx="inline-" class="mathjax-container">\(X_t\)</span> 的前提下，再额外知道更早的历史 <span displaypfx="inline-" class="mathjax-container">\(X_{t-1},\dots,X_0\)</span>，不会改变对下一时刻 <span displaypfx="inline-" class="mathjax-container">\(X_{t+1}\)</span> 的条件分布判断。左边是“条件在完整历史上的下一步分布”，右边是“条件在当前状态上的下一步分布”；两者相等，正是马尔可夫性的定义。</p>
<p>一个直接例子是天气变化。若把每天的天气记作随机变量 <span displaypfx="inline-" class="mathjax-container">\(X_t\)</span>，状态空间为 <span displaypfx="inline-" class="mathjax-container">\(\{\text{晴},\text{阴},\text{雨}\}\)</span>，那么常见建模假设是：明天是否下雨主要由今天的天气决定，而不需要把更早几天的天气逐项保留。此时“当前天气”就扮演了压缩历史信息的状态摘要。若今天是雨天，明天继续下雨的概率可以较大；若今天是晴天，明天下雨的概率可以较小。这种“只通过当前状态决定下一步分布”的结构，就是马尔可夫性。</p>
<p>满足马尔可夫性的随机过程，称为马尔可夫过程（Markov Process）或马尔可夫链（Markov Chain，离散时间、有限或可数状态时的常见名称）。因此，马尔可夫性是一个性质，马尔可夫过程是满足该性质的一类随机过程。若状态空间有限，常把一步转移概率写成转移矩阵（Transition Matrix） <span displaypfx="inline-" class="mathjax-container">\(P\)</span>，其中：</p>
<span displaypfx="" class="mathjax-container">\[P_{ij}=P(X_{t+1}=j\mid X_t=i)\]</span>
<p>这里 <span displaypfx="inline-" class="mathjax-container">\(P_{ij}\)</span> 表示“当前在状态 <span displaypfx="inline-" class="mathjax-container">\(i\)</span> 时，下一步转移到状态 <span displaypfx="inline-" class="mathjax-container">\(j\)</span> 的概率”。矩阵的每一行对应当前状态固定后的下一步分布，因此每一行元素都非负，且行和为 1。</p>
<p>马尔可夫过程之所以重要，是因为它把一个潜在上非常复杂的时序依赖问题，压缩成了局部转移规律。隐马尔可夫模型（Hidden Markov Model, HMM）、马尔可夫决策过程（Markov Decision Process, MDP）、很多时间序列状态模型，以及强化学习中的环境状态转移，都建立在这一思想之上。它们的差别不在于是否使用马尔可夫性，而在于：状态是否可见、是否存在动作、是否附带奖励，以及是否只关心下一步还是关心长期回报。</p>
<p>马尔可夫性是一种建模假设，不是自然界自动保证的真理。若“当前状态”定义得不充分，历史信息就没有被真正压缩进去，此时过程在这个状态表示下就不具有马尔可夫性。例如，仅用“当前股价”预测明天走势通常不够，因为成交量、市场情绪、宏观事件等信息并未包含在状态中；但若把更完整的市场状态向量一并纳入，马尔可夫近似会更合理。因此，马尔可夫性的关键不只是公式，而是<span style="background-color: #c0c0c0;">当前状态是否足以成为过去对未来影响的充分摘要</span>。</p>
<div class="blog_h2"><span class="graybg">信息论</span></div>
<div class="blog_h3"><span class="graybg">熵（Entropy）</span></div>
<p>熵（Entropy）刻画一个概率分布的不确定性（Uncertainty）。对离散分布 <span displaypfx="inline-" class="mathjax-container">\(p\)</span>：</p>
<span displaypfx="" class="mathjax-container">\[H(p)=-\sum_i p_i\log p_i\]</span>
<p>把 <span displaypfx="inline-" class="mathjax-container">\(-\log p(x)\)</span> 理解为“事件 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 的信息量（Information Content）/惊奇”，熵就是它的期望值：越均匀的分布越难预测，熵越大；越尖锐（某个事件概率接近 1）的分布越确定，熵越小。</p>
<p>例：若 <span displaypfx="inline-" class="mathjax-container">\(p\)</span> 在 <span displaypfx="inline-" class="mathjax-container">\(K\)</span> 个类别上均匀（<span displaypfx="inline-" class="mathjax-container">\(p_i=1/K\)</span>），则</p>
<span displaypfx="" class="mathjax-container">\[H(p)=\log K\]</span>
<p>对数底决定单位：以 <span displaypfx="inline-" class="mathjax-container">\(\log_2\)</span> 为底单位是比特（Bits），以自然对数为底单位是纳特（Nats）。</p>
<p>语言也能帮助建立对熵的直觉。以字符为单位时，汉字集合更大，单个常用字符的平均出现概率往往更低，因此 <span displaypfx="inline-" class="mathjax-container">\(-\log p(x)\)</span> 更大；同时，汉语序列里的下一字符通常也更难直接预测，所以常给人“字符级信息更密、熵更高”的直觉。对比之下，韩语的字符系统更小，序列模式也通常更规则，下一字符更容易预测，因此字符级冗余感更强、熵的直觉更低。</p>
<p>若再做一个极粗略的字符级估算：把常用汉字集合近似看作 <span displaypfx="inline-" class="mathjax-container">\(V=3000\)</span>、把韩文字母集合近似看作 <span displaypfx="inline-" class="mathjax-container">\(V=40\)</span>，并暂时假设“下一字符”在各自词表上均匀分布，则最大熵分别约为 <span displaypfx="inline-" class="mathjax-container">\(\log_2 3000\approx 11.55\)</span> bits 与 <span displaypfx="inline-" class="mathjax-container">\(\log_2 40\approx 5.32\)</span> bits。这对应的就是：词表越大、单符号平均概率越低，单位符号的潜在信息量上界越高。</p>
<div class="blog_h3"><span class="graybg">KL 散度</span></div>
<p>KL 散度（Kullback–Leibler Divergence）衡量两个分布之间的“相对熵”（Relative Entropy）。对离散分布 <span displaypfx="inline-" class="mathjax-container">\(p,q\)</span>：</p>
<span displaypfx="" class="mathjax-container">\[D_{\mathrm{KL}}(p\|q)=\sum_i p_i\log\frac{p_i}{q_i}\]</span>
<p>它满足 <span displaypfx="inline-" class="mathjax-container">\(D_{\mathrm{KL}}(p\|q)\ge 0\)</span>，且当且仅当 <span displaypfx="inline-" class="mathjax-container">\(p=q\)</span> 时取 0；但它一般不对称（Asymmetric），即 <span displaypfx="inline-" class="mathjax-container">\(D_{\mathrm{KL}}(p\|q)\ne D_{\mathrm{KL}}(q\|p)\)</span>。信息论解释是：用 <span displaypfx="inline-" class="mathjax-container">\(q\)</span> 的码本去编码来自 <span displaypfx="inline-" class="mathjax-container">\(p\)</span> 的样本，会额外多付出多少平均码长。</p>
<p>在机器学习里，KL 常作为正则项出现，例如把新策略/新模型约束在参考分布附近（KL Regularization）。</p>
<div class="blog_h3"><span class="graybg">交叉熵</span></div>
<p>交叉熵（Cross Entropy）是信息论里衡量“用分布 <span displaypfx="inline-" class="mathjax-container">\(q\)</span> 去编码来自分布 <span displaypfx="inline-" class="mathjax-container">\(p\)</span> 的样本”所需平均信息量的量。这里 <span displaypfx="inline-" class="mathjax-container">\(p\)</span> 是真实分布（True Distribution）/数据分布， <span displaypfx="inline-" class="mathjax-container">\(q\)</span> 是模型分布（Model Distribution）/预测分布：</p>
<span displaypfx="" class="mathjax-container">\[H(p,q)=-\sum_{i} p_i\log q_i\]</span>
<p>当 <span displaypfx="inline-" class="mathjax-container">\(p\)</span> 固定时，最小化 <span displaypfx="inline-" class="mathjax-container">\(H(p,q)\)</span> 等价于最小化 KL 散度（Kullback–Leibler Divergence）：</p>
<span displaypfx="" class="mathjax-container">\[H(p,q)=H(p)+D_{\mathrm{KL}}(p\|q)\]</span>
<p>分类问题里，真实标签通常用 one-hot 分布表示，这会把交叉熵简化成对“真实类别概率”的负对数：交叉熵损失（Cross-Entropy Loss）本质上就是负对数似然（Negative Log-Likelihood）。</p>
<p>“信息量为什么和概率有关？”因为在最优编码（Optimal Coding）里，一个事件 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 的最短平均码长与 <span displaypfx="inline-" class="mathjax-container">\(-\log p(x)\)</span> 同阶；以 <span displaypfx="inline-" class="mathjax-container">\(\log_2\)</span> 为底时单位是比特（Bits），以自然对数为底时单位是纳特（Nats）。熵（Entropy）就是期望信息量。</p>
<p>一个具体例子：设真实分布 <span displaypfx="inline-" class="mathjax-container">\(p=(0.5,0.5)\)</span>，模型分布 <span displaypfx="inline-" class="mathjax-container">\(q=(0.9,0.1)\)</span>，则</p>
<span displaypfx="" class="mathjax-container">\[H(p,q)=-0.5\log 0.9-0.5\log 0.1\approx 1.204\ (\text{nats})\]</span>
<p>而真实熵 <span displaypfx="inline-" class="mathjax-container">\(H(p)=-0.5\log 0.5-0.5\log 0.5\approx 0.693\)</span>，两者的差就是 <span displaypfx="inline-" class="mathjax-container">\(D_{\mathrm{KL}}(p\|q)\approx 0.511\)</span>：模型越“错得自信”，KL 越大：</p>
<p><a href="https://blog.gmem.cc/wp-content/uploads/2026/03/plot_entropy_cross.png"><img class="alignnone size-full wp-image-40943" src="https://blog.gmem.cc/wp-content/uploads/2026/03/plot_entropy_cross.png" alt="plot_entropy_cross" width="100%" /></a></p>
<div class="blog_h4"><span class="graybg">惊奇（Surprise）</span></div>
<p>惊奇（Surprise）/信息量是针对单个事件的度量：若事件 <span displaypfx="inline-" class="mathjax-container">\(x\)</span> 的概率为 <span displaypfx="inline-" class="mathjax-container">\(p(x)\)</span>，则</p>
<span displaypfx="" class="mathjax-container">\[\mathrm{Surprise}(x)=-\log p(x)\]</span>
<p>概率越小，惊奇越大；概率越大，惊奇越小。在语言建模里，若当前模型参数已经固定，那么真实 token 的 <span displaypfx="inline-" class="mathjax-container">\(-\log p_\theta(y_t|c_t)\)</span> 本质上是该 token 的负对数概率，也就是它的“惊奇”。这里 <span displaypfx="inline-" class="mathjax-container">\(c_t\)</span> 表示当前位置之前的上下文， <span displaypfx="inline-" class="mathjax-container">\(y_t\)</span> 表示当前位置真实出现的 token。若把同一个式子看成关于参数 <span displaypfx="inline-" class="mathjax-container">\(\theta\)</span> 的函数，它又是该 token 对参数的负对数似然（Negative Log-Likelihood, NLL）。因此这里的“惊奇”和 token-level NLL 在数值上是同一个对象，只是视角不同。如果再按各个事件的真实概率对这种“惊奇”做加权平均，得到的就是熵（Entropy）：<span displaypfx="inline-" class="mathjax-container">\(H(X)=\mathbb{E}[-\log p(X)]\)</span>。换句话说，<span style="background-color: #c0c0c0;">惊奇是单个事件的信息量，熵是这种信息量在整个分布下的期望</span>。</p>
<div class="blog_h4"><span class="graybg">困惑度（Perplexity）</span></div>
<p>困惑度（Perplexity）把“平均惊奇”指数化，得到一个更直观的尺度：可把它理解为模型在每一步预测时的“有效分支数（Effective Branching Factor）”。对长度为 <span displaypfx="inline-" class="mathjax-container">\(N\)</span> 的 token 序列，模型给出的条件概率是 <span displaypfx="inline-" class="mathjax-container">\(q(x_t|x_{&lt;t})\)</span>，则平均 NLL（也就是交叉熵）为：</p>
<span displaypfx="" class="mathjax-container">\[\mathrm{NLL}=-\frac{1}{N}\sum_{t=1}^{N}\log q(x_t|x_{&lt;t})\]</span>
<p>若使用自然对数，困惑度定义为：</p>
<span displaypfx="" class="mathjax-container">\[\mathrm{PPL}=\exp(\mathrm{NLL})\]</span>
<p>因此：分布越均匀（更不确定），熵越高，平均惊奇越大，困惑度也越高。注意困惑度强烈依赖 tokenization 与评测语料，跨不同分词器/词表直接比较往往没有意义。</p>
</div><p>The post <a rel="nofollow" href="https://blog.gmem.cc/ai-knowledge-quick-ref-1">人工智能理论知识 - 数学基础</a> appeared first on <a rel="nofollow" href="https://blog.gmem.cc">绿色记忆</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.gmem.cc/ai-knowledge-quick-ref-1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
