首页 / 资讯中心 / 文章详情

统一频率原则:经典与量子模型在频谱域的共性

统一频率原则:经典与量子模型在频谱域的共性 ★ FEATURED ARTICLE
如果你同时泡在量子机器学习和经典深度学习两个圈子里大概会在不少论文里撞见同一个词统一频率原则。单看这个名字很容易以为是什么高深的数学定理但它背后其实藏着一个特别朴素、特别接地气的问题——神经网络在训练时到底先学会什么量子模型又先学会什么这两类架构完全不同的模型底层会不会遵循同一条规律这篇文章想做的事情很具体把“统一频率原则”这件事从概念上掰开揉碎从数学表达上对齐经典和量子两侧再从实操角度拆解它分别能怎么用。适合谁看正在学机器学习基础的学生、准备入门量子机器学习的工程师还有所有对“模型到底怎么学会泛化”这件事感到好奇的人。我会尽量不堆公式但关键形式和处理逻辑会给出保证你能跟上思路。1. 从“神经网络在学什么”说起频率域视角1.1 把训练过程看成“频谱加工”为什么值得这么做要理解统一频率原则得先切换看问题的角度。平时我们盯的都是 loss 曲线、准确率曲线这些指标只能告诉我们“模型学得怎么样”回答不了“模型先学了什么、后学了什么”。频率域视角就是用来回答后一个问题的。任何函数无论是一维曲线还是二维图像都可以被分解成不同频率的正弦波叠加。低频成分对应大尺度结构高频成分对应局部细节。这个过程就是傅里叶变换干的事。把目标函数 yf(x) 看成“一堆频率成分的叠加”之后神经网络的训练过程就有了新的解释它不是在逐点逼近每一个样本而是在逐步逼近这些不同频率的分量。我用的生活类比是画画。画一幅人物肖像一定是先打轮廓把头部、肩部的大结构画出来然后再刻画五官、头发丝这些细节。打轮廓就是在拟合低频描细节就是在补充高频。合奏音乐也是一样低音乐器先铺底高音旋律再进来。神经网络的学习顺序也遵循类似的节奏——先大尺度后细节只是我们平时从 loss 曲线上根本看不出来。有了这个视角很多平时解释不清的现象就有了统一的解释框架为什么小数据集上网络容易过拟合为什么某些高频特征特别难学为什么网络天然具备一定的抗噪能力这些问题的答案都藏在“频率”两个字里。1.2 经典这边的关键现象低频优先也叫 Spectral Bias经典神经网络被发现存在一个非常稳定的现象训练过程中模型输出的误差频谱里低频分量总是先下降高频分量的下降明显滞后。这个现象在文献里有两个名字一个叫 spectral bias一个叫 frequency principle中文经常翻译成“频谱偏差”或“频率原则”。我自己在做一维函数拟合实验时对这一点印象特别深。用一个小型 ReLU 网络去拟合一个带锯齿状细节的函数训练前几百步网络输出是一条很平滑的曲线几乎没有任何锯齿再训练很久细节才慢慢长出来。如果你把每轮训练后的预测值做一次傅里叶变换会看到误差的功率谱里高频部分的衰减速度远远慢于低频部分。为什么会出现这个现象从不同理论视角都能解释一部分。从神经正切核NTK视角看梯度下降的收敛速度和核矩阵特征值的分布有关不同频率分量的特征向量对应不同的收敛速率低频方向往往特征值更大、收敛更快。从再生核希尔伯特空间RKHS视角看网络倾向于优先拟合“函数空间里代价更低”的方向低频方向恰好代价更低。无论从哪个角度切入结论都指向同一个事实经典神经网络不是平等对待所有频率成分的。这个现象的实际影响非常大。它解释了为什么深度网络在样本量有限时依然能够泛化——网络先学低频结构而不是去死记高频噪声。但它也带来麻烦当任务本身需要大量高频细节时比如图像分割里的边缘、医学影像里的病灶边界网络就需要特别长的训练时间甚至可能根本学不出来。1.3 量子这边的底层逻辑模型的输出天然就是傅里叶级数量子机器学习里最常见的模型是变分量子电路也叫参数化量子线路。一般来说它由三部分组成数据编码层把经典数据 x 映射到量子态上变分层通过一系列参数化旋转门调整量子态最后测量某个可观测量得到模型输出。你可能觉得这套东西和神经网络八竿子打不着但稍微做点数学展开就会发现一个惊人的事实。大多数常见编码方式下变分量子电路的输出对输入 x 来说可以被严格写成有限项傅里叶级数的形式。也就是说量子模型的输出长这样f(x) Σ c_ω e^{iωx}。求和里的每一项都是一个频率为 ω 的正弦分量系数 c_ω 由变分层参数决定而频率集合 {ω} 完全由数据编码层决定。这个结论我要再强调一遍量子模型的频率集合是编码层“锁死”的变分层只能改系数改不了频率。这就好比一个乐器编码层决定了它能发出哪些音高变分层决定的是每个音高上的音量。如果编码层根本没有某个频率那模型无论如何优化变分层参数都不可能表达出那个频率的成分。所以量子模型的训练过程本质上就是在一组固定的频率集合上通过梯度下降去调整每个频率前面的系数让整个傅里叶级数去逼近目标函数。这和经典神经网络“先学低频、后学高频”的底层逻辑已经相当接近了。接下来真正的问题就是两边在数学上到底能不能统一起来实验现象是否一致2. 统一频率原则经典与量子在谱域凭什么殊途同归2.1 数学骨架对齐两边都是“谱梯度流”先把经典神经网络和量子变分电路的训练过程并排放着看。经典网络在参数空间里做梯度下降每一步更新参数等价于在函数空间里推动模型输出 f_t(x) 向目标函数 y(x) 靠拢。把两者都做傅里叶展开训练过程就可以写成每个傅里叶系数随时间演化的动力学方程。不同频率分量的收敛速率不同低频分量对应的“广义梯度”更大衰减更快。量子变分电路也是类似。模型输出写成有限傅里叶级数后梯度下降更新变分参数 θ本质上就是在更新每个频率分量前面的系数 c_ω。对某个频率 ω 的系数来说它的梯度大小和当前误差在该频率上的残差有关也和参数化线路本身对该频率的敏感程度有关。两边一旦都写成这种“谱域中的梯度流”形式统一频率原则的含义就很清楚了无论参数化函数的长相多么不同它们的训练动力学都遵循同一个基本规则——不同频率分量的误差按不同速率衰减低频模式先衰减高频模式后衰减。这不是谁模仿谁而是两类模型在谱域结构上的天然共性。我把两侧的对应关系整理成了表格方便你对齐对比维度经典神经网络量子变分电路函数表示隐层非线性叠加逼近目标函数输出为有限项傅里叶级数基函数由激活函数和网络结构隐含决定由数据编码方式显式决定频率来源网络结构、宽度、深度共同决定编码层结构严格决定可调系数所有网络参数变分层参数主导学习顺序低频优先高频滞后低频优先高频滞后梯度来源反向传播参数偏移规则或测量估计这个表格让我意识到两边真正不同的地方集中在“频率从哪里来”这一行。经典网络的频率来源是隐式的没人告诉你网络到底覆盖了哪些频率量子电路的频率来源是显式的编码层一设计完频率集合就清清楚楚。这也是量子模型在可解释性上比经典网络有优势的一个侧面。2.2 实验里的同一条曲线低频误差先归零理论对齐是一回事实际观察又是另一回事。我在复现量子机器学习实验时做过一个很小的测试用 4 个量子比特的变分电路去拟合一个包含多频率成分的一维函数同时用一个小型经典神经网络去拟合同一个函数。两边各自训练然后每隔若干轮记录一次预测值和目标值之间的残差再做傅里叶分析。结果非常直观两边残差的频谱分布变化趋势几乎一致——低频部分的误差快速下降很快接近零高频部分的误差下降缓慢甚至在训练初期还会出现先上升再下降的奇怪现象。如果你不看横纵坐标的标注甚至分不清哪条曲线来自量子模型哪条来自经典网络。这个“高频误差先升后降”的现象其实特别好解释。训练初期模型先拟合低频分量而这个过程中高频系数可能会被临时扰动导致高频误差短暂放大随后模型开始修正高频误差才掉下来。我在经典网络一维回归实验里见过一模一样的情况这说明两边的学习动力学确实共享某种深层的结构相似性。实验做完之后我特别感慨一件事很多时候我们把量子机器学习和经典深度学习当成两个完全不同的领域但实际上它们在高层次的行为模式上有一致性。如果能及时捕捉到这种一致性很多经典侧积累的诊断方法完全可以迁移到量子侧来用。2.3 统一频率原则带来的三个直接推论第一个推论机器的表达能力和学习能力不是一回事。一个模型能表达哪些频率和它实际上能学会哪些频率完全是两码事。量子电路可以通过精心设计的编码层构造出很宽的频率集合但如果训练策略不当、测量噪声太大它依然学不会高频分量。经典神经网络同理网络越深越宽理论上表达能力越强但实际训练时常被优化困难束缚。第二个推论数据预处理本质上是频率匹配问题。下采样、模糊化、标签平滑这些常见操作都是在调整数据里的频率成分分布。如果任务的主要信息在低频那预处理时压制高频噪声就是对的如果任务的主要信息在高频比如边缘检测那过分平滑数据就相当于把答案给抹掉了。很多调参经验本质上都是在隐式地做频率匹配。第三个推论频域分析可以成为跨界迁移的桥梁。经典信号处理领域积累了大量频率分析工具比如小波变换、多尺度分解、频谱估计。这些工具完全可以拿过来诊断量子模型。我可以直接对量子模型的预测误差做频谱分析看到模型卡在哪个频段再对应调整编码层设计。这个思路在传统量子机器学习教程里很少被提到但实际用起来非常顺手。3. 把原则落地经典与量子两个侧的实操思路3.1 经典侧实操先稳住低频再慢慢放高频理解了低频优先原则之后训练策略就可以做得很讲究。我试过最有效的一个做法是多尺度课程训练。具体操作很简单训练前期把图像做高斯模糊或者直接下采样让网络先只接触低频结构等 loss 进入平台期之后再切换成原始分辨率继续训练。我做过一组对照实验同样一个图像分类网络一组直接训练原始图像一组先用模糊图像训练 30 个 epoch 再切回原始图像。结果是后者收敛更快最终精度还略高一点。原因就是模糊图像把高频噪声先过滤掉了网络在前期集中精力把低频结构学扎实切换到原始图像后只需要补充细节不容易被噪声带偏。另一个低成本的操作是标签平滑。把 one-hot 标签从 0/1 改成 0.9/0.1 之类的软标签本质上是给标签的频谱做了低通处理压制极端高频成分。这个操作在所有经典分类任务里几乎都能带来轻微提升背后正是利用频率原则稳住学习节奏。还有一个思路是给梯度做频率层面的正则化。最简单的实现方式是使用带动量的优化器Adam 或者带动量的 SGD 自带低通效果能够抑制高频震荡。更激进的做法是在损失函数里显式加入高频惩罚项不过这个需要针对具体任务调权重我一般只在任务明确对高频敏感时才用。3.2 量子侧实操频率谱设计的关键在编码层不在变分层量子机器学习里有一个特别常见的坑大家习惯性地把注意力放在变分层的设计上觉得层数越多、旋转门组合越复杂模型就越强。但基于前面的分析变分层只能调节傅里叶系数改变不了频率集合本身。想让量子模型学会目标函数里的某个高频成分第一步必须确认编码层产生的频率集合确实覆盖了这个频率。数据重上传是目前最实用的频率扩展技巧。常规做法是只把 x 编码一次此时频率集合通常只有一两个基础频率数据重上传的思想是分成多个片段在电路的多个位置重复编码比如 x 的第一段在第一层编码第二段在第二层编码同时每层之间插入变分门。这样处理之后频率集合会扩展成多个基础频率的整数线性组合覆盖面大得多。我做小规模实验时对比过单次编码和三次重上传编码对同一个目标函数的拟合效果。目标函数里包含一个比较高的频率分量单次编码的模型无论如何调参都拟合不出那个高频峰而重上传编码的模型在相同训练轮数下轻松就拟合出来了。这个差异完全来自编码层变分层结构没做任何改动。不过频率覆盖只是必要条件不是充分条件。就算编码层生成了某个频率变分层还得有能力把对应系数调到合适的值这需要线路有足够的参数和纠缠结构。实操中我建议按照“先扩展频率再调整变分层结构”的顺序排查问题不要一上来就盲目加深线路。3.3 初始化与频带匹配两个我踩过的坑初始化这块经典网络和量子电路都有自己的讲究但背后都服从频率原则。经典网络我踩过的坑是在小数据集上使用初始化范围过大的参数导致网络初始输出就带有明显的高频震荡训练过程又慢又不稳定。后来换成方差较小的初始化之后模型从低频起步训练明显顺滑很多。量子电路这边坑更深。我第一次搭变分量子电路时直接把所有旋转参数按均匀分布随机初始化在 0 到 2π 之间结果训练 loss 死活降不下去。后来分析才发现大范围初始化让电路输出直接落在了高频主导的区域梯度下降一开始就被困在一个对高频误差不敏感的区域里。把初始化范围改成很小的区间比如 ±0.1电路输出回到近似线性的低频区域训练就正常了。关于频带匹配我的经验是训练之前先对数据做一个快速的频谱分析。不用很精确只要大致知道主要能量集中在哪个频段。然后对照模型能表达的频率范围看两者是否匹配。如果数据有高频成分而模型表达不了训练再久也没用如果模型能表达很高的频率但数据里根本没有那就相当于白白增加过拟合风险。这个“先看频谱再定模型”的习惯帮我省掉了大量试错时间。4. 常见误区与排查技巧实录4.1 误区一把“低频优先”理解成“低频最重要”低频优先是学习顺序不是重要性排序。我见过有人读完统一频率原则相关的文章后得出结论说低频成分比高频成分重要训练时应该主动过滤掉所有高频。这个结论在大多数情况下是错的。一个典型的反例是医学图像里的病灶边缘检测。病灶边界信息恰恰集中在中高频段如果做强力低通滤波病灶边缘会被模糊掉检测模型直接失效。所以正确的做法是判断你的任务信息主要分布在哪个频段低频为主的场景优先保证低频学稳高频为主的场景反而要避免过度平滑。频率原则告诉你的是学习的顺序规律不是要你据此做静态的频段取舍。4.2 误区二以为加深变分层就能学到更高频这个误区在量子机器学习里特别普遍但单纯加深变分层真的是事倍功半。变分层的作用是调整傅里叶系数频率集合由编码层决定前面已经反复强调了。如果目标函数含有编码层频率集合之外的分量无论变分层多深、参数多到爆炸都不可能表达出来。排查这个问题的思路非常直接先列出你的编码方式对应的频率集合再把目标函数的主要频率分量算出来做一个集合包含关系的检查。如果不包含优先改造编码层比如引入数据重上传、改变编码门的旋转角度参数。如果包含了但还是学不好再回头加深变分层。按这个顺序排查能省下大量无效调参时间。4.3 误区三把经典优化器无脑搬进量子电路经典深度学习里有 Adam、SGD 等成熟优化器很多人想当然地直接套用到量子电路上。但量子电路梯度的获取方式和经典网络完全不同它一般通过参数偏移规则或者采样估计得到天然带有测量噪声。噪声大的时候梯度估计的误差会直接污染频率分量的更新过程表现就是训练曲线极其抖动或者频谱分析结果失真。我自己的经验是在模拟器上调试阶段可以用较大的测量次数来压低噪声先把频率行为验证清楚上真实硬件之前再逐渐降低测量次数同时配合更稳健的优化器。另外在评估量子模型频谱特性时千万不要用很少的测量次数直接做傅里叶分析否则高频部分会被测量噪声淹没得出错误的结论。4.4 快速排查清单一条一条对着看症状可能原因排查方向训练前期收敛快后期迟迟不降低频学完高频不在模型频率集合内检查编码层频率覆盖必要时扩展频率量子电路在模拟器上好硬件上抖动剧烈测量噪声干扰高频系数更新提高测量次数换抗噪编码方式经典网络在噪声标签上过拟合严重模型学习了高频噪声成分加标签平滑降低数据分辨率相同代码多次运行结果差异巨大初始化落在高频主导区域缩小参数初始化范围改为小角度初始化目标函数有高频峰但模型拟合不上变分参数调节能力不足或编码频率缺失先扩展频率集合再加深变分层频谱分析结果杂乱无规律评估时测量次数太少噪声掩盖信号增加测量次数重复多次取平均这张表是我自己调试模型时常用的排查顺序列表。遇到问题先不看具体代码先对照症状定位到底是频率覆盖、系数调节、初始化还是噪声的问题然后再动手改模型。最后再分享一个我自己的小习惯。现在我做任何机器学习项目无论是经典还是量子都不再只盯着 loss 曲线看。我会隔一段训练轮数把模型在当前验证集上的预测取出来做一次快速傅里叶变换直接看误差的频谱分布。这个习惯让我能直观看到模型目前在哪个频段挣扎也让“统一频率原则”从论文里的概念变成了我工具箱里一个真正趁手的诊断工具。希望你也能试试从频率的角度去看一眼你正在训练的模型也许会发现很多以前没注意到的问题。
阅读完成 · 觉得有帮助?
咨询建站