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

量子与经典机器学习的统一频率原则:从傅里叶视角理解模型本质

量子与经典机器学习的统一频率原则:从傅里叶视角理解模型本质 ★ FEATURED ARTICLE
很多人第一次看到“量子与经典机器学习的统一频率原则”这个说法第一反应八成是这又是哪个组发的高大上paper标题等我拆开揉碎讲完你会发现它其实特别朴素朴素到你在学周志华的《机器学习》或者吴恩达的网课时早就见过它的影子只是没人用“频率”这根线把它们串起来。我这几年前前后后做过不少机器学习的项目也折腾过一阵子量子机器学习的开源框架。踩坑踩得多了慢慢形成一个很个人的判断不管是经典神经网络还是参数化量子电路它们做的事情本质上都是对输入函数做频谱变换学习过程就是在拟合目标函数在频域上的分布。这个视角帮我解决了很多玄学问题比如为什么小数据集上量子模型动不动就崩、为什么经典模型先学低频后学高频、为什么加一个看似无关的正则项效果天差地别。这篇文章就把这套“统一频率原则”的来龙去脉、背后原理、可复现的实操步骤以及我踩过的那些坑一次性讲清楚。内容不挑背景只要你懂一点线性回归或者最基础的深度学习就能跟上。要是你正在学机器学习基础、准备期末复习或者刚接触量子机器学习的论文这篇文章能帮你少走一大段弯路。1. 先说结论我理解的“频率原则”到底是什么1.1 从一次吐槽说起去年有个学生拿一篇QML论文问我说里面全是幺正矩阵、泡利算符、量子测量看得头大。我反问他你把这个模型的输入 x 和输出 f(x) 画出来像不像在做傅里叶展开他愣了几秒回去把代码跑了一遍发现那个看起来高大上的量子电路拟合出来的函数就是个截断的傅里叶级数。这事给我的触动挺大。很多经典机器学习教材包括周志华的西瓜书和吴恩达的课程在讲模型时都从“假设空间”切入也就是模型能表达哪些函数。但一旦深入到具体训练几乎都会提到“模型先拟合低频分量再慢慢补高频细节”的现象。这就是频率视角。所谓统一频率原则说白了就是一句话经典模型和量子模型的学习过程都可以放到频域里统一观察模型结构决定了它能生成哪些频率分量训练过程决定了它按什么顺序拟合这些频率分量。1.2 一个足够直观的类比想象你在用有限个乐器的组合去模仿一段旋律。每种乐器对应一种“波形”它们各自有基频和泛音。你手里的乐器种类越少能覆盖的频率就越有限你会优先把旋律的主旋律低频、大能量部分弹准再去抠装饰音高频、细节部分。机器学习模型的输入 x 就是这段旋律的自变量模型的输出 f(x) 就是波形。无论是经典神经网络的隐藏层还是量子电路的旋转门都在干同一件事生成一组带权重的频率分量用它们的叠加去逼近目标函数。这组频率分量的范围、间隔、最大频率上限就是模型的“表达能力边界”。1.3 为什么偏偏是“频率”成为统一坐标系你可能要问参数个数、网络层数、量子比特数哪个不能描述模型复杂度为什么偏偏看频率我的观点是频率是连接数据、模型、训练动态三者最自然的中间语言。数据的平滑程度用频域能量谱描述最方便模型架构能产生哪些频率由傅里叶分析直接给出训练过程中不同频率分量的收敛速度也有理论支撑比如神经正切核和谱偏置。相比之下参数量只告诉你“模型有多大”层数只告诉你“模型有多深”唯独频率能告诉你“模型在做什么数学变换”。在量子计算里这个视角尤其重要因为量子线路的幺正变换天然对应旋转而旋转天然对应相位相位天然对应傅里叶基。你不是硬把量子模型塞进频率框架它本来就是这么运作的。后面我会详细拆这部分。2. 经典机器学习的频率视角教科书里早就有只是没人明说2.1 线性回归和逻辑回归其实是在选频率你学机器学习入门时一定见过线性回归f(x) wx b。这能有什么频率把输入限定在某个区间里这个线性函数只包含极低频分量它的频谱主要集中在0频率附近。如果数据是非线性的线性回归的效果就会很差因为它压根没有高频分量去拟合曲线细节。逻辑回归稍微好一点sigmoid函数是个平滑的S形它的傅里叶变换是双曲正割型带宽有限且主要集中在低频。所以逻辑回归天然适合“决策边界比较平滑”的分类任务。你往里加多项式特征本质上是扩展频率覆盖范围让模型能表达更多高频细节。这就是为什么很多老手会说“加特征比换模型更直接”因为这个操作直接扩展了模型的频率带宽而不是绕弯子加深复杂度。经典模型对应基函数频率特性擅长任务线性回归x 的线性组合仅含0附近频率光滑线性关系逻辑回归sigmoid 组合带宽有限以低频为主平滑分类边界决策树/GBDT分段常数无限频率但按树深度受限复杂非线性表格数据深度神经网络多层非线性复合谱偏置先低后高大规模数据多模态任务2.2 决策树和GBDT其实是个“分段频谱拼接器”决策树看起来和频率八竿子打不着但你把一棵回归树的输出函数画出来它是分段常数函数。分段常数函数的傅里叶级数有无穷多个频率分量只不过树每分裂一次等于在频域里增加新的高次谐波来逼近边界的不连续性。树越深能逼近的“拐角”越尖锐对应的频率上限越高。GBDT就是在这个视角下的“频谱加法器”每棵树贡献一部分频段逐步拼接出完整的频谱。为什么GBDT在中小表格数据上很强因为表格数据的结构通常是“低频主体局部突变”分段常数函数的表达方式和这种数据非常匹配。而神经网络在表格数据上容易过拟合恰恰因为它会无节制地拟合高频噪声。我实际用GBDT做员工离职预测这类项目时也验证了这一点。特征工程里加入一些交叉特征本质上是在制造新的频率分量让模型更快锁定目标函数的高频区域而不是靠加深模型盲目搜索。2.3 深度学习里的谱偏置现象这里必须提一个深度学习里的经典观察叫F-principle频率原则神经网络训练时loss下降过程中拟合误差的能量谱集中在低频部分也就是说模型先学低频再学高频。很多做深度学习的朋友应该都有体会训练初期模型输出特别“平滑”轮廓先出来细节后出来。这不是什么玄学而是梯度下降在频域里的自然行为。低频分量的梯度方向更一致、更容易平均所以收敛快高频分量梯度震荡大、相互抵消所以学得慢。这个现象背后是Neural Tangent Kernel理论里频率与核特征值的关系。简单说梯度下降对每个频率分量的收敛速度与该频率对应的特征值大小有关而低频分量通常对应更大的特征值。所以频率不仅描述表达能力还描述学习动态。这套说法现在在经典ML里已经很成熟很多人不知道的是量子机器学习里几乎有完全一样的现象。2.4 为什么教材里没有集中讲吴恩达的课和周志华的西瓜书不约而同地省略了频率视角原因也很简单这些教材面向入门用参数、结构、损失函数这些概念就足够让新手跑通流程。频率分析需要傅里叶变换的数学底子对初学者是个额外负担。但如果你做研究或者工程调优迟早会发现参数视角解释不了的问题比如为什么学习率大到一定程度就会发散因为高频分量的梯度震荡被放大为什么BatchNorm能加速收敛因为它重新标定了各频率分量的梯度尺度为什么ResNet能训练更深的网络因为它让高频分量的梯度传播路径更短。这些问题用频率视角都能得到更本质的答案。3. 量子机器学习的频率视角参数化量子电路的傅里叶谱3.1 数据编码这一步其实是在注入频率很多初学者学量子机器学习第一眼看到数据编码就懵了。Angle Encoding把输入 x 直接作为旋转角度放进量子门比如 RY(x) 作用在初始态 |0 上得到 cos(x/2)|0 sin(x/2)|1。这个操作本身就已经把 x 映射到一个周期函数上因为 cos 和 sin 都是周期性的。而IQP编码等更复杂的编码方式会引入 x 的多项式组合作为相位比如 exp(i x^2 Z_i Z_j)。这种非线性组合会生成更多高次频率分量。换句话说选择编码方式就是在确定模型频谱的“题库”。编码越复杂模型能提取的频率上限越高但也会带来更大的泛化风险。这里有个非常实用的推论如果你想控制量子模型的复杂度与其改电路架构不如直接改数据编码方式。这一点在经典机器学习里没有直接对应物是量子模型独有的调参维度。3.2 变分量子电路可学习的稀疏傅里叶级数参数化量子电路通常由一堆带参数的旋转门和固定纠缠门组成。把整个电路看成函数 g(x, θ)其中 θ 是可训练参数。Schuld等人的工作证明了一个干净漂亮的结果这种函数能表示成有限阶傅里叶级数频率集合由数据编码门的特征值决定系数由变分参数决定。举个例子如果编码用 RY(x)变分层用 RY(θ) 和 CNOT 纠缠那么输出函数的形式是f(x, θ) Σ_{ω∈Ω} c_ω(θ) e^{iωx}其中频率集合 Ω 里的元素是由编码门的本征值差决定的。对于RY编码Ω里的频率通常只有0、1、-1这类低次项。如果你想让模型表达更高频的信号就得增加编码门的重复次数这就是所谓的“数据重上传”技术。每次重上传相当于在频谱里多乘一个e^{ix}因子从而让频率集合扩展到更多整数倍数。本质上变分量子电路是一个可学习的稀疏傅里叶级数拟合器。经典神经网络可以近似任意函数但很难说清楚它到底在用哪些频率基量子模型则把谱结构直接写在电路设计中清晰可查。3.3 频率集合的约束条件量子模型的频率不是想要就能有。它由编码哈密顿量的本征值谱决定。如果你用的是单量子比特RY(x)编码本征值差只有 0 和 ±1那么模型无论如何加深变分层最高频率都锁死在1。这是个反直觉的结论加深电路不一定增加频率只改变系数 c_ω。要让频率范围变大要么增加编码门的重复次数数据重上传要么使用多比特相互作用的编码方式让本征值差呈指数组合。多比特编码时频率集合的基数可能随比特数指数增长这也是量子模型潜在的“表达能力红利”所在用多项式数量的门生成指数规模的频率组合。经典神经网络在表达高维函数的频率特征时需要指数多的神经元或数据点量子模型则可以通过叠加态天然携带指数规模的频率组合。这是一个理论上的优势场景实操中能否兑现取决于编码、纠缠结构和数据的匹配程度。3.4 从频率看“量子优势”一说量子优势很多人只想到Shor算法和超导比特跟机器学习没什么关系。但频率视角给了量子机器学习一个非常具体的优势解释当一个目标函数包含大量高频项、且这些高频项的系数结构源自组合爆炸时量子模型的并行频率组合能力可能更匹配。举个例子一个涉及16个比特的IQP编码产生的频率项数量可能达到2^16量级而经典傅里叶拟合要遍历这些项需要指数级的计算量。当然这只是表达能力的优势真正的学习优势还要考虑优化和泛化不能简单划等号。论文里如果声称量子模型“表达力更强”你第一件事该看它的频率集合有多大如果只是多了几个低次谐波而数据根本不那么复杂那这个优势就是写论文用的不是解决实际问题用的。4. 统一在哪一套“频谱设计”方法论的落地4.1 经典与量子模型都是频率滤波器把第2节和第3节放在一起看你会发现经典神经网络和量子电路在频域上服从同一个抽象框架输入变换编码/特征提取决定可用的频率集合 Ω。参数化层权重/变分门决定每个频率分量的系数 c_ω。优化过程梯度下降/参数平移决定哪些频率先被拟合、拟合到什么精度。正则化权重衰减/噪声决定最终频谱的平滑程度。用这个框架看经典和量子没有本质区别只有频率集合的构造方式不同。经典模型用非线性激活函数和卷积结构间接构造频率量子模型用旋转门和纠缠门直接构造频率。这就是我标题里所谓“统一”的真实含义。4.2 统一频率原则能解释QML的“灾难性泛化”我最早被这个视角征服是因为它解释了量子机器学习里一个臭名昭著的现象量子模型在训练集上拟合得很好但验证集上完全随机这被称为灾难性泛化。当时很多论文归因于“量子模型表达能力太强容易过拟合”。这个解释太含糊了什么模型表达能力强都会过拟合关键是要知道它过拟合的是什么。从频率角度解释就清楚得多量子模型生成的频率集合和真实数据的目标频率分布不匹配。如果模型里包含了大量高频分量而训练集采样密度不够模型就会用高频项去逐一穿过每个训练点产生剧烈震荡的频谱。这个频谱在训练集上loss极低但换到验证集上就完全对不上。解决方案也更明确了不要一味降低模型复杂度而是去匹配目标函数的频带。要么减少编码重上传次数降低频率上限要么增加训练集密度要么在训练目标里加入频谱平滑约束。这些方案在经典ML里都有对应只是很少有人把它用到QML上。4.3 实操方法论如何用统一视角设计一个实验我现在设计任何一个小型机器学习实验都会先问三个问题目标函数的主要能量集中在哪个频段比如要做股票序列预测数据是日线收盘价能量基本集中在低频趋势和少数周期分量上模型不需要很高的频率上限。我的模型能覆盖哪些频率经典MLP虽然理论上能近似任何函数但实际受限于激活函数、层数和数据量量子电路则直接数一数编码方式产生的频率集合有多大。训练动态会优先拟合哪些频率如果目标函数高频分量占主导经典梯度下降会非常痛苦这时候考虑要不要换优化器、调整学习率调度或者引入残差结构加速高频学习。这三个问题想清楚很多“玄学调参”就变成了“频谱匹配”工作。4.4 一个小案例逻辑回归 vs 量子模型在同一份数据上的分歧我做过一个极简实验数据是一维分类问题正负样本的边界带有明显的高频震荡。经典逻辑回归在这个数据上的准确率只有65%左右原因就是逻辑回归的频谱带宽有限拟合不了边界的高频起伏。一个简单的角度编码量子电路经过训练能到85%以上因为数据重上传让模型获得了更高频的分量。但换成另一个数据边界非常平滑只含少量低频逻辑回归和量子模型表现几乎一样。这说明量子模型的优势完全取决于目标函数的频谱结构。那些一上来就宣称量子模型全面碾压经典模型的报道基本都是没做频谱分析的结果。5. 实操过程与踩坑记录从公式到可跑代码5.1 最小实验环境搭建为了验证统一频率原则我建议你搭一个最小环境就够了Python 3.9numpy 和 matplotlib用于数据处理和频谱绘制scikit-learn经典模型基线PennyLane 或 Qiskit量子模型个人推荐PennyLane它对自动微分友好写QML代码更像写PyTorch安装只需要一句命令pip install pennylane scikit-learn numpy matplotlib。Qiskit也行但它的测量和梯度处理稍重入门阶段PennyLane的体验更顺手。5.2 生成带频谱结构的数据我用一个合成分类数据来演示统一频率原则。核心思路是构造一个目标分布让它的频域特征非常明确一个低频主瓣加一个高频细节。import numpy as np np.random.seed(42) x np.linspace(-3, 3, 300) # 目标函数低频主体 高频细节 y_true np.sin(x) 0.3 * np.sin(7 * x) 0.1 * np.sin(23 * x) # 二分类标签 y np.where(y_true 0, 1, 0) # 加入少量噪声模拟真实数据 x_train x np.random.normal(0, 0.02, sizex.shape)注意我故意让数据包含三个明显分离的频率分量1、7、23。这让你在后面观察模型频谱时能直观看到哪个频段被拟合了哪个被漏掉了。5.3 经典模型基线训练与频谱分析先训练一个逻辑回归from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split x_train_2d x_train.reshape(-1, 1) X_tr, X_te, y_tr, y_te train_test_split(x_train_2d, y, test_size0.3) lr LogisticRegression() lr.fit(X_tr, y_tr) print(逻辑回归准确率:, lr.score(X_te, y_te))大概率准确率在0.6左右原因就是逻辑回归的频谱主体在低频。再看决策树from sklearn.tree import DecisionTreeClassifier dt DecisionTreeClassifier(max_depth10) dt.fit(X_tr, y_tr) print(决策树准确率:, dt.score(X_te, y_te))树的准确率会高不少因为分段常数函数能表达更丰富的频谱。如果你想观察模型的频谱响应可以用一个高密度的x_grid输入模型拿到预测概率序列再做FFTfrom numpy.fft import fft, fftfreq x_grid np.linspace(-3, 3, 512) prob lr.predict_proba(x_grid.reshape(-1, 1))[:, 1] spectrum np.abs(fft(prob - prob.mean())) freqs fftfreq(512, d(x_grid[1] - x_grid[0])) print(低频能量占比:, spectrum[:20].sum() / spectrum[1:].sum())逻辑回归的低频能量占比会显著高于数据本身的低频占比这说明它把高频细节全部磨平了。5.4 量子模型搭建与频谱测量PennyLane里搭一个带数据重上传的量子模型代码非常紧凑import pennylane as qml import torch n_qubits 1 n_layers 4 dev qml.device(default.qubit, wiresn_qubits) qml.qnode(dev, interfacetorch) def quantum_model(x, weights): # 数据重上传每层都编码一次 for i in range(n_layers): qml.RY(x, wires0) qml.RY(weights[i], wires0) return qml.expval(qml.PauliZ(0))这里要解释几个设计选择。为什么用单比特因为目标是看清频率结构单比特的RY编码本征值差为1重上传n_layers次后频率集合扩展到0,1,...,n_layers。为什么每层都编码这是数据重上传的标准技巧等效于在频谱上不断卷积e^{ix}因子从而扩展频率上限。训练代码和PyTorch几乎没有区别weights torch.randn(n_layers, requires_gradTrue) optimizer torch.optim.Adam([weights], lr0.2) for epoch in range(300): preds [] for xi in X_tr.reshape(-1): preds.append(quantum_model(xi, weights)) preds torch.stack(preds) loss torch.nn.functional.binary_cross_entropy_with_logits(preds, torch.tensor(y_tr, dtypetorch.float)) optimizer.zero_grad() loss.backward() optimizer.step() if epoch % 50 0: print(epoch, loss.item())等训练结束后同样对x_grid计算模型频谱你会发现量子模型的能量谱里多出了接近数据真实频率的成分。而如果我只用一层编码不重上传模型频谱里就只有0和1两个峰无论加深变分参数都拟合不了7和23的高频。5.5 对比统一频率原则的三条观测结论跑完这个实验你大概率会得到和我一致的三个结论经典线性模型的频谱过于“干净”缺少高频能力低高频混合数据上必败。决策树靠分段逼近能覆盖更多频率但频谱形状粗糙容易在边界处抖动。量子模型通过数据重上传能按你的设计精准扩展频率范围但前提是编码层数和数据分布匹配。这个实验直接把理论落到地面整个过程不到半小时非常适合用来向别人解释什么叫“量子与经典机器学习的统一频率原则”。5.6 一个重要的实操提醒上面代码里量子模型每次前向都调用一个QNode在300个样本上循环300次开销其实不小。工程上要加速的话应该把PennyLane的torch接口和批量广播特性用起来一次传入多个样本或者用JAX接口做向量化。但对小实验来说这个朴素写法反而最容易读懂每一步在干什么。6. 常见问题与排查技巧实录6.1 为什么量子模型的频率测量结果和论文不一致我遇到过很多次照着论文画频谱结果自己的模型频率上限永远到不了论文声称的值。排查下来八成是数据编码没对齐。论文用IQP编码生成指数规模的频率集合你拿个RY编码去复现频率项当然少。另外要注意测量方式。expval(PauliZ) 得到的是期望值它其实是输出概率的线性组合频率集合由密度矩阵的对角元决定。而如果测量的是概率本身例如令输出为 |0 态的概率 P(0)那么频率集合里还会混入两倍频项因为概率是振幅的平方。不同测量方式会让频谱结构产生偏移我在早期吃过这个亏分析了一晚上频谱不对最后才发现是测量基的问题。建议动手复现前花10分钟把编码门的本征值谱算一遍测量算子是什么看清楚你再分析频谱时就不会迷茫。6.2 量子模型训练后loss不降先别怪优化器我排过很多次QML训练不收敛的问题。刚开始总怀疑是learning rate不对或者梯度消失。但后来发现很多情况下是模型的频率集合里压根没有目标函数的主要频率分量。比如目标函数有一个7Hz的强分量而你的模型最高只能表达3Hz那无论怎么调学习率loss都会卡在某个平台期。这就像你用一把最高只有C调的笛子去吹一首含高音E的曲子不是笛子不好是音域不够。解决方法很简单增加数据重上传次数或者改用多比特纠缠编码。先检查频谱范围再去调整优化器这是排查顺序问题顺序错了事倍功半。6.3 过拟合本质是高频分量的失控经典ML和QML都会碰到过拟合统一频率原则给出同一个解释模型频谱里高频分量的权重没有被合理约束。训练数据是离散采样的高频分量可以任意弯曲通过每个样本导致验证集上剧烈抖动。解决方案也对应统一加L2正则化等价于对所有频率系数打一个衰减因子噪声注入等价于在频谱上做一个平滑滤波早停则是直接截断训练时长阻止高频分量被拟合。你要是能理解这一步经典ML里的各种trick就都不再是孤立技巧而是同一套频谱控制策略的不同实现。我自己的经验是QML里“加大数据重上传次数”和“加L2正则”要搭配使用。重上传给模型更高频率上限正则压住高频系数两个一起做才能既保住表达能力又防止灾难性的高频抖动。6.4 常见问题速查表现象频率视角解释推荐排查/操作经典模型在非线性数据上欠拟合模型频率上限太低加多项式特征扩展频率集合决策树预测边界剧烈震荡分段常数函数频谱过宽过于贴合噪声限制max_depth、加剪枝神经网络先拟合轮廓后拟合细节低频梯度集中、收敛快属于正常谱偏置无需处理QML模型训练集完美、验证集随机高频分量失控频谱与数据不匹配降低编码重上传次数加正则QML模型loss卡在平台期频率集合不包含目标函数的强分量增加重上传或改用多比特编码频率测量结果与论文不一致编码方式或测量算子不同核对编码门本征值谱和测量基6.5 给刚入门的人一条循序渐进路线如果你是机器学习新手看到这里可能觉得量子部分还是有点重。我给你一条务实的路线第一步把经典部分吃透。拿上面的合成数据分别用线性回归、逻辑回归、决策树、MLP跑一遍用FFT画出它们的预测频谱熟悉“模型结构决定频谱形状”这个感觉。第二步学一点量子计算的基础操作。不急着读教材跑一下PennyLane官方的Hello World试着改编码次数观察函数曲线变得更复杂还是更平滑。第三步回到统一频率原则用自己的实验数据验证“经典模型能表达的频率 vs 量子模型能表达的频率各自是什么”。完成这一步你对机器学习算法的理解深度会超过很多人。网上关于机器学习的资源特别多吴恩达的课、李宏毅的作业、周志华的西瓜书都是很好的基础但真正把经典和量子连在一起的视角目前还没有哪本教材系统讲过。这篇博文就算是帮你补上这块拼图。7. 最后分享两个我常年保留的调参小习惯第一个习惯是任何模型拿到手先画出训练集的频谱分布。不是做复杂的谱分析就简单FFT一下看看能量集中在哪几个区间。这一步能让你在选模型时少走弯路。第二个习惯是调QML模型时永远把数据编码和数据重上传次数当作第一调参对象而不是急着改线路结构。很多人一上来就堆量子比特和纠缠层效果不如人意就加更多最后陷入死循环。我很少改变分层结构通常固定一个4层左右的线路把精力放在编码设计和正则化上问题反而更容易解决。统一频率原则不是要替代你已有的机器学习知识它更像一把尺子让你能同时量经典模型和量子模型。尺子在手调参就有了方向论文里的模型对比也有了更实质的观察维度。以后你再看到“基于机器学习的企业员工离职预测”“逻辑回归做信用评分”这类项目不妨也多问一句这个数据的主要频率在哪模型覆盖得了吗这比盯着单个准确率指标有价值得多。
阅读完成 · 觉得有帮助?
咨询建站