一、限带过程与抽样定理的写法
平稳过程这一章剩下最后一段内容,是抽样定理与随机预测。这两件事在确定性信号的处理里早就出现过,把随机过程这一层加进来,结论的形式基本不变,但成立的条件要落到自相关函数与功率谱上,用起来才有边界。
抽样定理在确定性信号里学过,一个函数只要频谱在高频以外为零,就能用等间隔的采样值把它完整重建出来。随机过程的版本多了一步,信号本身是随机的,重建要在均方意义下说。
先给定义。过程 X(t)X(t)X(t) 称为低通的,如果它的功率谱在某个截止频率之外为零
S(ω)=0,∣ω∣>ωcS(\omega) = 0, \quad |\omega| > \omega_cS(ω)=0,∣ω∣>ωc
限带这一条加在功率谱上,自相关函数那边就跟着有了性质。对功率谱做傅里叶逆变换,再对 τ\tauτ 求 nnn 阶导数,求导落到被积函数里的 (jω)n(j\omega)^n(jω)n 上
R(n)(τ)=12π∫−ωcωc(jω)nS(ω)ejωτdωR^{(n)}(\tau) = \frac{1}{2\pi}\int_{-\omega_c}^{\omega_c}(j\omega)^n S(\omega)e^{j\omega\tau}d\omegaR(n)(τ)=2π1∫−ωcωc(jω)nS(ω)ejωτdω
积分区间有限,被积函数里的 ∣ω∣n|\omega|^n∣ω∣n 只是一个多项式,区间有限又被积函数有界,这个积分必然收敛。于是 R(τ)R(\tau)R(τ) 的各阶导数都存在。带限这一个条件换来的是整条自相关曲线的无限次可导,后面写泰勒展开、写各种逼近都用得上。有一处旁注提到,这个泰勒展开式在机器学习里用到展开到第三项为止,再补上函数的凸性与李普希茨条件,这一层没有展开。
自相关函数无限可导,随机过程的泰勒展开就写得出来
X(t+τ)=∑n=0∞X(n)(t)τnn!X(t+\tau) = \sum_{n=0}^{\infty}X^{(n)}(t)\frac{\tau^n}{n!}X(t+τ)=∑n=0∞X(n)(t)n!τn
它把 τ\tauτ 时刻的值用 ttt 时刻的各阶导数接起来。限带让各阶导数都存在,这个展开才立得住。

抽样定理说的是,一个限带过程 X(t)X(t)X(t),其自相关 R(τ)R(\tau)R(τ) 的傅里叶变换 S(ω)S(\omega)S(ω) 在 ∣ω∣>ωc|\omega| > \omega_c∣ω∣>ωc 时为零,那么 R(τ)R(\tau)R(τ) 可以写成
R(τ)=∑n=−∞∞R(nT)sin(ωcτ−nπ)ωcτ−nπR(\tau) = \sum_{n=-\infty}^{\infty}R(nT)\frac{\sin(\omega_c\tau-n\pi)}{\omega_c\tau-n\pi}R(τ)=∑n=−∞∞R(nT)ωcτ−nπsin(ωcτ−nπ)
其中 T=π/ωcT = \pi/\omega_cT=π/ωc。这条式子的意思是,整条自相关曲线完全由它在等间隔点上的取值决定,点与点之间用 sinc 形状的核内插出来。对应的过程本身也展开成同样的形式
X(t)=∑n=−∞∞X(nT)sin(ωct−nπ)ωct−nπX(t) = \sum_{n=-\infty}^{\infty}X(nT)\frac{\sin(\omega_c t-n\pi)}{\omega_c t-n\pi}X(t)=∑n=−∞∞X(nT)ωct−nπsin(ωct−nπ)
采样点上的值乘上内插核再求和,离散与连续在这里通过卷积接上。求和取完之后把变量写成 τ\tauτ,与卷积式逐项对上,结构完全一致。卷积这种形式带来的一个方便之处,是能把采样栅格整体挪到左边或者右边,采样的起点在式子里变成一个可以自由加减的常数。
内插核的零点位置要看清楚,它是整件事能成立的关键。分子 sin(ωct−nπ)\sin(\omega_c t-n\pi)sin(ωct−nπ) 在 ωct=nπ+kπ\omega_c t = n\pi + k\piωct=nπ+kπ 时为零,把 t=mT=mπ/ωct = mT = m\pi/\omega_ct=mT=mπ/ωc 代进去,得到 sin(mπ−nπ)\sin(m\pi-n\pi)sin(mπ−nπ),只要 mmm 与 nnn 不相等就是零,而分母 ωct−nπ\omega_c t-n\piωct−nπ 这时不为零,整项取零。只有 m=nm = nm=n 的时候分子分母同时为零,取极限得到 1。于是核在每一个采样点上是一个单位冲激的形状,在其他采样点上一分贡献都没有。逐点还原的道理就在这里:把 ttt 落在某个采样点上,求和式里只剩下对应那一项,其余全被核的零点灭掉。
采样点有没有偏移,对结论没有影响。把 R(τ)R(\tau)R(τ) 里的 τ\tauτ 换成 τ−a\tau-aτ−a,采样点跟着变成 nT−anT-anT−a,整条栅格平移一个常数,公式的形状不变
R(τ−a)=∑n=−∞∞R(nT−a)sin(ωcτ−nπ)ωcτ−nπR(\tau-a) = \sum_{n=-\infty}^{\infty}R(nT-a)\frac{\sin(\omega_c\tau-n\pi)}{\omega_c\tau-n\pi}R(τ−a)=∑n=−∞∞R(nT−a)ωcτ−nπsin(ωcτ−nπ)
把 aaa 加回去或者减掉,两边照样相等。所以抽样定理不挑起点,从哪一刻开始采、栅格整体偏移多少,只要间隔相等、速率够快,恢复都成立。

历史上抽样定理的变形很多,有一本专门讲它的专著,收进去的形式有十多种。形式多不等于内容多,那些变形处理的是常数偏移、频带位置这类细节,只要频带不发生折叠,实质只有一条。
为什么非得等间隔,可以在频域上看。等间隔采样对应频域里一串规则的搬移,搬移的位置排得整齐,拼起来刚好铺满整个频率轴。间隔一乱,搬移的位置跟着乱,拼缝就对不上。非等间隔采样、速率如何确定、变形的特点、从滤波组的角度怎么看、收敛的条件是什么、能不能做预测,这几条并列摆在一起是思考题,其中真正展开的是速率与预测两件。

二、采样速率、混叠与过采样的用处
采样速率取多少有确定答案,要高于带宽的两倍。临界的位置对应采样间隔 T=π/ωcT = \pi/\omega_cT=π/ωc,采样速率就是 1/T=ωc/π1/T = \omega_c/\pi1/T=ωc/π,正好是单边带宽 fc=ωc/(2π)f_c = \omega_c/(2\pi)fc=ωc/(2π) 的两倍。周期与带宽关系里那个系数 2 就是这么来的。
TTT 大于临界值,采样太稀。采样在频域上做的是一串等间隔的搬移,间隔不够密,相邻的搬移就叠在一起,原本分得开的频率分量被折叠到同一个位置上。这个现象叫混叠,也叫频率折叠。两个本来相差很远的频率分量,采样之后落到同一个位置,单看采样序列区分不出它们各自来自哪里。这不是噪声叠加,是信息本身被抹掉了,没有哪种反卷积能把它们重新分开。
TTT 小于临界值,采样比需要的密,这叫过采样。临界点上一点余量都不留,看着最省,但省下来的这笔账要算清楚。采样密了,同样一段时间里拿到的样本更多,数据量、存储、运算的代价都在涨,这是明面上的支出。换来的是另一样东西。
带宽从 ωc\omega_cωc 换成更宽的 ωc′\omega_c'ωc′,采样间隔变小,工作频率抬高。这个变化能换来一份增益,增益体现在抗噪声的能力上。学过通信的人对这套东西不陌生,扩频通信就是同一个道理。信号本身占的频带很窄,人为把它展宽到很宽的频带上,展宽之后信号在噪声里几乎看不见,到了接收端再用相关的方式把它收回来。占用的频带与信号真实频带之比,就是这份增益的大小。这笔增益可以算,带宽展宽多少倍,压缩回来的那一刻信噪比就抬高多少倍。扩频技术早期服务于军事通信,后来逐步解密转入民用,第三代移动通信系统把 CDMA 作为主流的多址方式,这条技术路线才真正铺开。
所以说,临界速率不是唯一的正确答案。过采样用带宽和运算量换抗噪能力,这笔交换划不划算,取决于噪声环境和硬件条件。变形再多,一定要完成的事情只有一件,就是滤波那一步。只要频带不发生折叠,形式就是那一种。
把确定性函数换成一个宽平稳过程或者限带过程,上面的展开式照样成立,这一点在工程上还有一层意思。大自然的信号,带宽可以认为是无限的,但任何一次观测都要经过前端滤波,手机、相机、各种测量设备,入口处都有一级滤波,滤完之后的信号一定是带限的。既然观测到的信号必然带宽有限,剩下的动作就清楚了:按等间隔采样,乘上内插核求和,信息全在里面。限带不是一条需要额外验证的假设,它是观测这个动作本身的属性。
三、随机过程抽样定理的均方证明
定理的陈述是:若 X(t)X(t)X(t) 是限带过程,则
X(t)=∑n=−∞∞X(nT)sin(ωct−nπ)ωct−nπX(t) = \sum_{n=-\infty}^{\infty}X(nT)\frac{\sin(\omega_c t-n\pi)}{\omega_c t-n\pi}X(t)=∑n=−∞∞X(nT)ωct−nπsin(ωct−nπ)

证明的办法是先造一个估计量,再看它与真值之差有什么性质。把估计量记成
X^(t)=∑n=−∞∞X(nT)sin(ωct−nπ)ωct−nπ\hat X(t) = \sum_{n=-\infty}^{\infty}X(nT)\frac{\sin(\omega_c t-n\pi)}{\omega_c t-n\pi}X^(t)=∑n=−∞∞X(nT)ωct−nπsin(ωct−nπ)
第一件事,把残差 X(t)−X^(t)X(t)-\hat X(t)X(t)−X^(t) 与每一个采样值 X(mT)X(mT)X(mT) 做内积,也就是求它们乘积的期望
E(X(t)−X\^(t)X(mT))=R(t−mT)−∑n=−∞∞R(t−nT)sin(ωct−nπ)ωct−nπ=0E(X(t)-\\hat X(t)X(mT)) = R(t-mT) - \sum_{n=-\infty}^{\infty}R(t-nT)\frac{\sin(\omega_c t-n\pi)}{\omega_c t-n\pi} = 0E(X(t)−X\^(t)X(mT))=R(t−mT)−∑n=−∞∞R(t−nT)ωct−nπsin(ωct−nπ)=0
右端为零的理由在内插核上。把 mTmTmT 这个特殊值代进去,求和里只有 n=mn=mn=m 那一项的内插核等于 1,其余各项的核都是 sin(kπ)/(kπ)\sin(k\pi)/(k\pi)sin(kπ)/(kπ) 这种形状,取值全为零,剩下的那一项正好与前面的 R(0)R(0)R(0) 抵掉。于是残差与每一个采样值都正交。
第二件事,X^(t)\hat X(t)X^(t) 是采样值的线性组合,残差既然与每一个采样值正交,就与它们的任意线性组合正交,也就与 X^(t)\hat X(t)X^(t) 本身正交
E(X(t)−X\^(t)X^(t))=0E(X(t)-\\hat X(t)\hat X(t)) = 0E(X(t)−X\^(t)X^(t))=0
第三件事,算残差与真值的内积
E(X(t)−X\^(t)X(t))=R(0)−∑n=−∞∞R(t−nT)sin(ωct−nπ)ωct−nπ=0E(X(t)-\\hat X(t)X(t)) = R(0) - \sum_{n=-\infty}^{\infty}R(t-nT)\frac{\sin(\omega_c t-n\pi)}{\omega_c t-n\pi} = 0E(X(t)−X\^(t)X(t))=R(0)−∑n=−∞∞R(t−nT)ωct−nπsin(ωct−nπ)=0
用的还是同一件事,ttt 取到采样点上时那个求和正好还原出 R(0)R(0)R(0)。
最后把残差的均方值拆成两项之差
E(X(t)−X\^(t)2)=E(X(t)−X\^(t)X(t))−E(X(t)−X\^(t)X^(t))=0E(X(t)-\\hat X(t)^2) = E(X(t)-\\hat X(t)X(t)) - E(X(t)-\\hat X(t)\hat X(t)) = 0E(X(t)−X\^(t)2)=E(X(t)−X\^(t)X(t))−E(X(t)−X\^(t)X^(t))=0
两项都是零,残差的均方值为零,定理证毕。
证明里出现的是一个很整齐的结构:残差与真值正交,残差与估计值也正交,两条同时成立,残差的均方值就只能为零。这个结构既是抽样定理成立的原因,也是它在实践中跟不上要求的原因,要单独拿出来看。
四、双正交只是一个理想
把上面两条正交性从证明里拎出来。残差与真值正交,意思是估计没有漏掉任何与真值相关的成分;残差与估计值正交,意思是估计里没有混进与残差相关的成分。两条都成立,估计量就等于真值本身。
很多漂亮的结果都是按这个结构写出来的,残差与真值、残差与估计值两两正交的交叉项摆在那里,看着非常整齐。麻烦在于,这两件事在实际问题里几乎不可能同时成立。做不到,退一步的办法是设一个小量 ε\varepsilonε 去控制,让残差与估计值的偏离、残差与真值的偏离都落在 ε\varepsilonε 以内。不追求精确的零,只要求足够小,这才是一个能落地的标准。
正交投影是追求的目标,真做设计的时候却不能把它当成必须满足的约束。做完正交投影之后,无论投影到哪个方向,总有一部分信息落在投影面之外,那部分就是损失,躲不掉。既然两个方向都做不到完全正交,只跟其中一条做到接近正交行不行?不行。只与其中一条正交,设计出来的东西一定不够用。两条线各让一步,谁都不完全对齐,反而能落在一个可用的位置上。
那个 ε\varepsilonε 不是一个误差项,它是一个设计参数。两条正交性同时成立时残差的均方值恰好为零;做不到的时候,能控制的只有 ε\varepsilonε 的量级,而 ε\varepsilonε 取多大,直接决定这套东西能用到哪一步。把 ε\varepsilonε 定得极小,实际做不到,设计出来反而处处受约束;定得合适,误差与代价之间才有一个可用的平衡点。
这件事的分量要说重一点。常见的讲法是做投影就要做正交投影,投影到平面上再看,表面上看是对的,原理上站不住,站不住的地方在于没有一套相关性的理论体系在后面撑着。有人把这类问题归到经验上,说做得多了自然有感觉,其实不是经验的问题。原理上要求的是残差与真值正交、残差与估计值正交,两条都满足才叫完美,而这件事不可能。既然不可能,唯一能立住的体系是双正交体系,也就是两条线各自对齐的那一套。双正交体系本身带着天然矛盾,两条线要完全一致,一般情况下办不到。所谓双正交,指的是两个投影方向各自与自己的对偶基对齐,它并不要求残差同时落到两个方向上。把这两件事混起来,就会得出一个做不到的结论,再照着这个结论去设计,问题从一开始就埋下了。
这套判断落到机器学习上,就是一个取舍问题。追求完美的正交投影,训练出来的东西反而不如别人,回头看会觉得自己的做法每一步都合理,问题出在最前面那一步的前提上。基本的原理错了,后面的技巧再精致也补不回来。
五、信号的随机预测
抽样定理只能做内插,预测是另一件事,先要把两者的分工看清。
内插用的是同一个时刻附近的采样值,前面一半、后面一半都要有,再把中间那一点算出来。预测要用已经拿到的历史值去推后面的值,只有过去,没有将来。
从求和的范围就能看出问题。求和号从 n=−∞n=-\inftyn=−∞ 到 +∞+\infty+∞,两头都要,而人能做到的只是从某一时刻 t0t_0t0 开始往后采,t0t_0t0 之前的那一半没有数据。丢掉一半信息,内插就已经做不完整,预测还得多想一步。
可行的做法是把历史数据存下来,先延迟一段时间,用这段延迟换出一段能用的历史,再从延迟之后的位置上做预测。延迟对内插也是需要的。内插核的形状是一条中间高、两端衰减的曲线,离得近的采样点权重大,离得远的权重小到可以忽略。这意味着拿内插往未来推的时候,前端必须有足够长的一段数据,短了不够用,而这一段只能靠延迟换来。说到底,用内插的方式做预测,做的还是对历史值加权。
具体的构造是这样。取一个由延迟值组成的差分过程
Y(t)=X(t)−(n1)X(t−T)+(n2)X(t−2T)−⋯+(−1)nX(t−nT)Y(t) = X(t) - \binom{n}{1}X(t-T) + \binom{n}{2}X(t-2T) - \cdots + (-1)^n X(t-nT)Y(t)=X(t)−(1n)X(t−T)+(2n)X(t−2T)−⋯+(−1)nX(t−nT)
它是一个线性系统的输出,输入是 X(t)X(t)X(t),输出是 Y(t)Y(t)Y(t)。每一项延迟对应一个 e−jωTe^{-j\omega T}e−jωT 的因子,把这一串组合整理起来
H(ω)=1−(n1)e−jωT+(n2)e−j2ωT−⋯+(−1)ne−jnωT=(1−e−jωT)nH(\omega) = 1 - \binom{n}{1}e^{-j\omega T} + \binom{n}{2}e^{-j2\omega T} - \cdots + (-1)^n e^{-jn\omega T} = (1-e^{-j\omega T})^nH(ω)=1−(1n)e−jωT+(2n)e−j2ωT−⋯+(−1)ne−jnωT=(1−e−jωT)n
右端就是二项展开。系统函数的模平方可以直接算出来
∣H(ω)∣2=∣1−e−jωT∣2n=(2sinωT2)2n|H(\omega)|^2 = \left|1-e^{-j\omega T}\right|^{2n} = \left(2\sin\frac{\omega T}{2}\right)^{2n}∣H(ω)∣2= 1−e−jωT 2n=(2sin2ωT)2n
输出的功率谱等于输入的功率谱乘上模平方
Syy(ω)=Sxx(ω)∣H(ω)∣2=Sxx(ω)(2sinωT2)2nS_{yy}(\omega) = S_{xx}(\omega)|H(\omega)|^2 = S_{xx}(\omega)\left(2\sin\frac{\omega T}{2}\right)^{2n}Syy(ω)=Sxx(ω)∣H(ω)∣2=Sxx(ω)(2sin2ωT)2n

这个构造的道理在频域上很直白。差分对应的系统函数 (1−e−jωT)n(1-e^{-j\omega T})^n(1−e−jωT)n 是一类高通的形式,频率低的时候它接近零,频率涨到 ωT=π\omega T = \piωT=π 附近时模值涨到 2n2^n2n。也就是说,差分运算把低频成分压下去,把高频成分放大。限带过程恰恰没有高频成分,它的能量全落在 ∣ω∣<ωc|\omega| < \omega_c∣ω∣<ωc 这一段里,被抬起来的那部分频段是空的,被压下去的那部分正是信号所在的地方。
光有这个还不够,因为抬高的幅度是 2n2^n2n,看着很危险。真正管住事情的是那个因子的绝对值。2sin(ωT1/2)2\sin(\omega T_1/2)2sin(ωT1/2) 随 ω\omegaω 增大而增大,在 ωc\omega_cωc 处取到最大值。把 T1T_1T1 取得足够小,可以让整个频带上这个因子都小于 1,2n2n2n 次幂就把带内的残差一致地压下去。带宽的上限与采样间隔的下限在这里挂上了钩。
换成估计量的写法。把采样间隔记成 T1T_1T1,构造
X^n(t)=(n1)X(t−T1)−(n2)X(t−2T1)+⋯+(−1)n−1X(t−nT1)\hat X_n(t) = \binom{n}{1}X(t-T_1) - \binom{n}{2}X(t-2T_1) + \cdots + (-1)^{n-1}X(t-nT_1)X^n(t)=(1n)X(t−T1)−(2n)X(t−2T1)+⋯+(−1)n−1X(t−nT1)
真值与估计量之差的均方值是
E(X(t)−X\^n(t)2)=12π∫−ωcωcS(ω)(2sinωT12)2ndωE(X(t)-\\hat X_n(t)^2) = \frac{1}{2\pi}\int_{-\omega_c}^{\omega_c}S(\omega)\left(2\sin\frac{\omega T_1}{2}\right)^{2n}d\omegaE(X(t)−X\^n(t)2)=2π1∫−ωcωcS(ω)(2sin2ωT1)2ndω

带限这个条件在这里派上用场。∣ω∣<ωc|\omega| < \omega_c∣ω∣<ωc,只要采样间隔满足
T1<π3ωcT_1 < \frac{\pi}{3\omega_c}T1<3ωcπ
就有 ∣ω∣T1/2<π/6|\omega|T_1/2 < \pi/6∣ω∣T1/2<π/6。正弦在 0,π/20,\\pi/20,π/2 上单调增,sin(π/6)=1/2\sin(\pi/6) = 1/2sin(π/6)=1/2,所以括号里的项在整个积分区间内都小于 1。被积函数里是一个小于 1 的量的 2n2n2n 次幂,nnn 趋于无穷时它趋于零,积分跟着趋于零
E(X(t)−X\^n(t)2)→0,n→∞E(X(t)-\\hat X_n(t)^2) \to 0, \quad n \to \inftyE(X(t)−X\^n(t)2)→0,n→∞
也就是说,在均方意义下 X^n(t)\hat X_n(t)X^n(t) 收敛到 X(t)X(t)X(t)。

结果的形状很漂亮,就是一个高速内插的形式。它给出的事情是:用 ttt 时刻之前的一串历史值,可以把 ttt 时刻的值估出来,误差在均方意义下随样本数下降。前提有两个,nnn 要足够大,历史样本也要足够多。真正用的时候不必去积那个分,把括号里那一项换成常数、取它的上界,反着解出 nnn 大概取多少就够,这一步计算很简单。
六、预测步长的上限
上面那个结果里藏着一个边界,容易漏掉。
T1<π/(3ωc)T_1 < \pi/(3\omega_c)T1<π/(3ωc) 这个条件加在采样间隔上,而预测能往前推多远,与 T1T_1T1 是同一个量级。估出来的值是 ttt 时刻的,往外推的步长一旦超过 T1T_1T1,误差就不再受控,均方意义下的可控性没有了。
天气预报是一个熟悉的例子。十分钟之内可以说得比较准,一小时后如何、两小时后如何,时间拉得越长,准确度掉得越快。十分钟这个尺度就是这里的 T1T_1T1,它是均方可控的边界。
边界之外不是不能做预测。预测照样可以做,只是必须把预测式用确定的形式写下来,这一步很难。均方不可控说的是误差没有界,不能承诺一个可控的精度,不是说预测本身不成立。
把这件事与大模型的填空放在一起,区别就清楚了。用抽样定理做内插,误差在均方意义下可控;大模型的填空没有这个可控性。目前没有一套机制能把大模型的可控性管起来,所以对它来说,主要的问题是稳定性。
两者用的相关性其实是同一件事。相关系数的另一种写法也是二阶统计量的结果,用的都是相关性。人对文字和图片的理解相对容易,对波形的理解差一些,而大模型在中间做的非线性处理,远远超出人能刻画的范围。现有技术体系里绝大部分内容都是线性相关,自相关系数、自相关函数都属于线性相关的东西。把过程投影到希尔伯特空间上去做,用的均值算子就是积分,连加与线性相关是一回事。大模型做出来的很可能不是线性相关的,神经网络的复杂性摆在那里。有学者把大模型的输出往线性相关上投影,再从投影里得一些结论,这类工作可以读,结论是否站得住,看法并不一致。
再补一句这个类比的意义。大模型从上下文里做预测,用的也是相关性,只不过它把相关性埋进了一层非线性映射里,埋进去之后就看不出它到底用了什么。抽样定理这一边,相关性的形式是明摆着的,就是自相关函数,误差能写成一条积分式,可控性因此可谈。两边都在用相关性,一边可写出来,一边写不出来,这个差别就是能不能谈可控性的分界。工程上要拿一个方法去做事,先得知道它的误差长什么样,写不出误差形式的方法,即便效果看着不错,也很难被放进一个有精度指标的系统里。
希尔伯特空间与欧氏空间的区别正好在这里。欧氏空间是一套正交坐标体系,里面做的事情是正交性,没有相关性的概念。到了希尔伯特空间,矢量之间才谈得上内积,才谈得上相关性。两套空间长得像,技术手段却不一样,混着用容易出问题。希尔伯特空间的名字来自希尔伯特,二十世纪初那批数学问题里就有从这里长出来的分支。
其他模式的随机预测方法也有。ARMA 是最常见的一个,做时间序列的人对它不陌生。现在讲的机器学习,可以看成离散模式下预测的最初版本,把那套东西往上升一级就能看到它们的关系。生成对抗网络的层级更高,做法是把噪声送进一个生成器,输出再经过一个判别器,训练到位之后就成了一个能生成样本的网络。除了逐点的细节校正之外,还叠了一层框架上的校正,框架校正用的是一套概率分布,卡尔曼滤波就是这一类做法里最经典的例子。
把这条线索摊开看,能得出一条判断:历史上重要的方法都有迹可循,不是凭空拍脑袋想出来的。把公式记住之外还要看内容背后的逻辑。哲学上的观点不会变,出现的形式一直在变,从中学到大学的那些哲学原理,内容基本稳定,变的只是它披着的外壳。看懂公式与数学原理背后那一层不变的东西,比多记几条结论更有用。
七、误差指标与规则
做随机预测,绕不开的一个问题是拿什么去评价。
指标要按对象选。点态的估计,最简单的是均方误差,误差平方再取平均。看一整条序列,就要用 L1L_1L1 或者 L2L_2L2 范数。两个概率分布之间的差距用交叉熵。再往上一层是自相似性,自相似性本身也是算相关的方法,相关系数就在这一类里。
这些指标只是入口。真正把工作做出区分度的地方,是提出一套合理的物理指标,把指标体系建起来。沿着别人定的规则做,做到最好也就是在别人的框架里排到前面;提出一套合理的物理指标,才是在定规则。规则的核心就是度量。度量这件事看着小,实际上决定了整个领域怎么比较、怎么判断好坏。度量确定下来,好坏才有意义。
指标在脑子里要装几样。有人说用了一个技巧,跟着用;有人说用了一个指标,跟着用,这样永远走不出别人画的框架。手里有一套指标,才有得挑,才谈得上针对系统的特点去选。
八、平稳过程的收尾与鞅论的入口
第二章到这里收尾。回头看一眼这一章铺出来的东西,大致是这么几层。
平稳性有两个定义,宽平稳与严平稳,区别在于约束加在哪一级统计量上。功率谱有物理意义,用起来要注意的是估出来的谱是随机功率谱,时间足够长的时候它具有遍历特征。线性系统的功率谱有一套算法。随机连续性、可微性,以及在均方误差基础上的泰勒展开,是一条线。遍历性理论自成一段。抽样定理与随机预测是最后一段。这几块之间是有顺序的,前面每一块都在给后面提供工具。
第三章是鞅论,这门课里分量最重的一章,后面几章内容的起点都跟它有关。学随机过程而不谈鞅,是说不过去的。这一章铺得很开:先讲条件概率,再给出鞅的定义与基本性质,然后是鞅的举例与构造方法,接着是上鞅和下鞅,再往后是 Jensen 不等式与下鞅的构造、分解定理、停时与停时定理、上穿不等式、极大值不等式与 Doob 定理,最后是鞅论的应用、Azuma 不等式与它的推广,以及连续鞅论。
真正难的是学会构造鞅。题目不会直接给出一个鞅让人去用,而是给一个具体问题,要自己把它写成鞅,再用鞅的性质去解。上鞅与下鞅的形式是把等号换成大于等于或者小于等于,完美的形式变成不完美的形式,两者与鞅的关系要单独讨论。构造的办法有一整套,其中一条是用 Jensen 不等式构造下鞅,这个不等式在信号检测与估计、模式识别这些课程里都出现过,放到这里是把凸性用在条件期望上。
鞅论的应用面很宽。它反映变量之间的相关性,能用来计算吸收概率,能分析过程路径的结构特征,能推出很多重要的不等式,也能用来判断序列判决与模型控制的有效性、证明随机变量序列的收敛、分析随机逼近迭代过程的收敛性。这一章里的技巧水平相当高,不等式一个接一个。
需要留意的是,能用鞅做事情不等于随便扣一个鞅的架子就能做事情。有人拿鞅去包装大模型分析,架子搭起来了,里面并没有真正用到鞅的性质,后面那些不等式一条也没用上。这一类工作不少,看着热闹,其实与鞅无关。
这一章从条件概率开始,第一个概念就要花功夫。
先看一个情形。平面上三簇数据,每一簇各有一个均值,三簇合起来还有一个整体均值。如果只关心其中一簇,就用这一簇自己的均值去描述它;如果把手上的系统当成一个整体,只看整体均值,那么用整体均值去做预测和评价,得到的是最差的结果。整体均值表面上概括了全局,实际上与任何一簇都不搭。三个局部均值才是各自条件下的均值。条件均值在很多时候比整体均值重要得多。
这个例子的用处是把条件这个概念先立起来。条件与什么有关,接下来用最基础的概率去做。
初等概率里,两个事件同时发生的概率,等于一个事件发生的概率乘上在这个事件发生的条件下另一个事件发生的概率
P(AB)=P(A∣B)P(B)P(AB) = P(A|B)P(B)P(AB)=P(A∣B)P(B)
这条式子成立的条件是 P(B)>0P(B) > 0P(B)>0。P(B)=0P(B) = 0P(B)=0 时,条件概率直接定义为 0,概率为零的事件不会发生,谈不上在它发生的条件下别的概率是多少。
离散随机变量的联合概率分布定义为
P(X=xi,Y=yj)=pijP(X = x_i, Y = y_j) = p_{ij}P(X=xi,Y=yj)=pij
遍历整个概率空间求和,得到
∑i∑jpij=1\sum_i\sum_j p_{ij} = 1∑i∑jpij=1
对其中一个变量求和,得到边缘概率
P(Y=yj)=∑ipij=pjP(Y = y_j) = \sum_i p_{ij} = p_jP(Y=yj)=∑ipij=pj
如果 pj>0p_j > 0pj>0,条件概率就是
P(X=xi∣Y=yj)=P(X=xi,Y=yj)P(Y=yj)=pijpjP(X = x_i|Y = y_j) = \frac{P(X = x_i, Y = y_j)}{P(Y = y_j)} = \frac{p_{ij}}{p_j}P(X=xi∣Y=yj)=P(Y=yj)P(X=xi,Y=yj)=pjpij
在这个基础上,给定条件时的条件数学期望是
E(X∣Y=yj)=∑ixiP(X=xi∣Y=yj)E(X|Y = y_j) = \sum_i x_i P(X = x_i|Y = y_j)E(X∣Y=yj)=∑ixiP(X=xi∣Y=yj)

现在把条件期望与普通的数学期望摆在一起看。熟悉的数学期望是
E(X)=∑ixiP(X=xi)E(X) = \sum_i x_i P(X = x_i)E(X)=∑ixiP(X=xi)
两条式子的形状几乎一样,差别却很大。E(X)E(X)E(X) 是对 XXX 的全体取值做加权平均,权重是每个取值的概率,取完之后随机性被抹平,结果是一个常数。条件数学期望是局限在 Y=yjY = y_jY=yj 划定的那个区域里做加权平均,结果依赖于 yjy_jyj 取哪个值,换一个 YYY 的取值,结果就跟着变。
从全局变化的眼光看,E(X∣Y)E(X|Y)E(X∣Y) 是一个新的随机变量,也可以看成随机变量 YYY 的函数。YYY 取 y1y_1y1、y2y_2y2、y3y_3y3,对应的条件均值就落在三个不同的位置上,把这些点连起来,它就是一条关于 YYY 的函数曲线。条件期望是关于给定条件的函数,这是这一章最重要的一个概念。
养成习惯之后,看一个式子就能判断它是不是条件期望。条件里的变量在运算过程中会被抹掉,xix_ixi 连同它的概率一起被求和消去,剩下的只有条件那一侧的变量,于是自然而然地跳出一个函数来。把运算子当成函数的特征去看,而不是盯着它展开后的具体形式,处理起来会快很多。数学符号的用法是有传承的,同一个意思在不同分支里可能用不同的记号,看不懂记号体系就读不进别人的文章。线性代数那套符号和运算符号看着相似,内容有大量重叠,差别往往来自最初做这件事的人自己定了记号。这些东西不必评判,但需要记住。
九、条件期望的性质与双算子
条件期望的几条性质,任何一本教科书上都找得到,把它们逐条写下来、逐条推一遍,用处在于把符号体系练熟。这一章读起来费劲,原因往往不在内容,而在符号。

第一条
E(E(X∣Y))=E(X)E(E(X|Y)) = E(X)E(E(X∣Y))=E(X)
内层的条件期望是一个关于 YYY 的函数,对这个函数再取一次期望,外层把 YYY 的随机性抹掉,剩下的就是 XXX 的整体均值。这一步可以理解成分两步取平均与一次取平均是一回事。
第二条是线性性
E(∑iaiXi∣Y)=∑iaiE(Xi∣Y)E\left(\sum_i a_i X_i \mid Y\right) = \sum_i a_i E(X_i|Y)E(∑iaiXi∣Y)=∑iaiE(Xi∣Y)
求和与取条件期望可以交换次序,常数提得出来。这条最直白,用起来也最频繁。
第三条处理的是一般函数
E(g(X)h(Y)∣Y)=h(Y)E(g(X)∣Y)E(g(X)h(Y)|Y) = h(Y)E(g(X)|Y)E(g(X)h(Y)∣Y)=h(Y)E(g(X)∣Y)
条件是 YYY,g(x)g(x)g(x) 与 h(y)h(y)h(y) 都是随机变量,后面还要假定它们有界。h(Y)h(Y)h(Y) 里只有条件那一侧的变量,在给定的条件下它是一个常数,常数可以提到期望符号外面。有界这个要求不重,只是为了保证期望存在,不出现 ∞\infty∞ 这种没有意义的取值。
第四条最直接
E(X∣X)=XE(X|X) = XE(X∣X)=X
把 g(X)g(X)g(X) 取成 XXX 本身,外面那一层把 XXX 提到条件之外,里面剩下的就是常数 1,常数 1 的均值永远是 1,结果回到 XXX。
第五条是这几条里最要紧的一条
E(g(X)h(Y))=E(h(Y)E(g(X)∣Y))E(g(X)h(Y)) = E\left(h(Y)E(g(X)|Y)\right)E(g(X)h(Y))=E(h(Y)E(g(X)∣Y))
左端是同时关于 XXX 与 YYY 取平均,是一个二维的求均值。手上没有二维的联合分布,直接做不下去。做法是把一次二维平均拆成两步一维平均:先在给定 YYY 的条件下对 XXX 求平均,得到一个关于 YYY 的函数,再对 YYY 求平均。写成式子的样子就是上面这一条。这里用的记号叫双算子,整套推导只做一件事,往需要的地方插进一个条件,外层算子把插进去的那一层当常量处理,抹掉之后内核保持不变。条件是随便插的,插进去之后能让表达式变简单就插进去。
把这条性质放到计算里看,会得到一个很实际的取舍。双算子的处理方式分成好几层,最里面一层是对 XXX 求平均,往外是对 YYY 求平均,再往外可能还有别的层。真正实现的时候,把外面那三层抹掉,只留中间的部分,很多时候就够了;需要做完整积分的时候,再回到外面那几层上去。数学上知道完整的结构长什么样,实现的时候按任务的需要截取其中一段,这两件事不矛盾。现代机器学习里的很多做法就是这么干的,去掉最后那几层,把中间的部分留下来,任务照样完成。换一个任务,可能是另一个位置截断。
这一条性质在隐变量模型上的影子最明显。把 YYY 看成场景的标记,不同的模型对应不同的场景,模型选得好,中间那一层就能算准。至于最终以什么形式呈现,取决于怎么定义 YYY,这一步需要一点创造性。看不出这一层结构,就只能按给定的 YYY 老老实实地推,中间的差别很大。
第六条处理独立性
E(X∣Y)=E(X)E(X|Y) = E(X)E(X∣Y)=E(X)
XXX 与 YYY 相互独立时,YYY 对 XXX 没有约束力,给定条件不改变任何东西,条件期望退回到普通的期望。这条容易理解,用处却不小,它是判断两个变量之间有没有关系的第一个刻度。
第七条与第八条是一组
E(E(X∣Y,Z)∣Y∈Dj,Z∈Dk)=E(X∣Y∈Dj,Z∈Dk)E\left(E(X|Y,Z) \mid Y\in D_j, Z\in D_k\right) = E\left(X \mid Y\in D_j, Z\in D_k\right)E(E(X∣Y,Z)∣Y∈Dj,Z∈Dk)=E(X∣Y∈Dj,Z∈Dk)
E(E(X∣Y,Z)∣Y)=E(X∣Y)=E(E(X∣Y)∣Y,Z)E\left(E(X|Y,Z) \mid Y\right) = E(X|Y) = E\left(E(X|Y) \mid Y,Z\right)E(E(X∣Y,Z)∣Y)=E(X∣Y)=E(E(X∣Y)∣Y,Z)
两条说的是同一件事:内层与外层各带一个条件,最后留下来的总是这两个条件的交集,也就是范围最小的那一个,内核部分原地不动。第七条里外层条件已经限定到 Y∈Dj,Z∈DkY\in D_j, Z\in D_kY∈Dj,Z∈Dk 这个区域,内层的条件比它宽,最后保留的是窄的那一个。第八条把这条等式正着反着各写一遍,先取细的再取粗的,或者先取粗的再取细的,结果相同。
这两条可以从交集的角度直接理解。YYY 与 ZZZ 各自划定一块区域,两个条件的交集是两块区域重叠的那一部分。把条件加到交集上,等于把条件同时加到两块区域上,多出来的限制被外层抹掉,剩下的就是重叠部分。内核之所以保持不变,是因为它本来就在所有条件的约束之内。
第八条还有一个用处。遇到一个不好处理的条件,可以在里面补进一个额外的条件,只要补进去的东西是合法的,得到的结果与原来的相同。补条件的目的不是改变答案,是把表达式整理成能算的形式。原本看不清、算不动的式子,补一层条件之后就顺了。
补进来的变量与外面有没有关系,这一点不影响结论。求均值的运算说到底是求和,一阶的运算不会引进相关性,只有出现两个量的乘积、出现二阶统计量的时候,相关性才起作用。所以补进去的条件可以任意选,只要它能让式子变简单。反过来说,如果在一个式子里凭空叠很多随机变量、造出一个复杂的联合分布,算到最后往往发现做的都是无用功,因为那些量在一阶运算里根本不参与。
这里还能引出一条关于计算本身的提醒。计算机在这些推导上帮不了太多忙,符号逻辑的东西它可以做,数值上的东西容易出问题。连加一个通项有界的级数,机器能算出一个数来;1/n1/n1/n 从一加到无穷这种不收敛的求和,机器也会给出一个看起来正常的数。舍入误差这种东西,机器自己不清楚,不清楚的地方一定会带来问题。人对某些结构的感知是天然的,这一点机器还替不了。
把条件期望的性质与双算子的用法练熟,是后面所有构造的前提。鞅的定义、上鞅与下鞅的关系、用 Jensen 不等式构造下鞅,都要从这两样东西出发。