1. 量子机器学习从理论到可扩展实践的跨越量子机器学习QML这个领域听起来总是带着点科幻色彩但它的内核其实非常务实我们试图利用量子计算机的独特能力——比如叠加和纠缠——去解决那些让经典计算机头疼的机器学习问题。作为一名在这个交叉领域摸索了多年的从业者我见过太多停留在理论层面的“优势”和难以复现的“突破”。今天我想抛开那些宏大的叙事聚焦于几个真正决定一个QML项目能否从论文走向实践的核心技术环节比特编码Bit-Bit Encoding、精确坐标更新Exact Coordinate Update和子网初始化Sub-net Initialization。这三者分别对应着数据如何喂给量子计算机、模型参数如何高效优化、以及如何从小规模实验平滑扩展到大规模应用。如果你正在尝试构建自己的变分量子电路VQC模型或者对如何让QML模型真正“学起来”感到困惑那么接下来的内容或许能帮你避开我当年踩过的那些坑。量子机器学习的核心范式目前最实用的还是变分量子电路。你可以把它想象成一个量子版本的神经网络电路结构即量子门的排列方式是固定的但其中一些量子门比如旋转门的角度是可调参数。训练过程就是不断调整这些参数让电路输出的量子态测量结果尽可能接近我们期望的答案比如正确的分类标签。这个过程和训练一个经典神经网络在逻辑上很像准备数据、前向传播在量子计算机上执行电路并测量、计算损失、反向传播更新参数。然而魔鬼藏在细节里。如何将一张图片、一段文本这类经典数据有效地“加载”到量子比特上如何在海量的参数空间中高效地找到最优解而不被“贫瘠高原”Barren Plateaus困住如何从小模型开始逐步扩展到更多量子比特而不需要每次都从头开始训练这三个问题是横亘在理论与实用化之间最现实的鸿沟。本文将结合我在模拟器和真实硬件上的实验经验深入拆解这三个技术点的原理、实现细节和避坑指南。2. 比特-比特编码为量子模型准备“量子友好型”数据2.1 为什么编码方式如此关键在经典机器学习中我们很少需要担心“数据格式”问题图片就是像素矩阵文本就是词向量。但在量子机器学习中数据必须被编码成量子态。不同的编码方式直接决定了量子模型能学习哪类函数以及学习的效率。常见的编码方式有振幅编码和角度编码。振幅编码试图将经典数据向量直接映射为量子态的振幅。它的信息密度很高理论上能在n个量子比特上编码2^n维的数据。但问题在于制备这样的量子态通常需要指数级复杂的量子电路在当前的中等规模含噪声量子NISQ设备上几乎无法实现。角度编码则更务实它将每个数据特征编码到一个量子比特的旋转角度上。例如一个特征值x可以映射为RX(x)门。这种方式制备简单但信息密度低且模型表达能力受限于三角多项式。那么有没有一种折中方案既能高效制备又能保持强大的表达能力这就是比特-比特编码的出发点。它的核心思想非常直观既然量子计算机底层处理的是二进制信息|0⟩和|1⟩我们何不先将经典数据压缩、离散化成二进制字符串再将这些字符串直接加载为计算基态这样输入和输出都是比特串模型的学习目标就变成了一个布尔函数。量子计算机恰好擅长在计算基态上进行幺正变换这为潜在的优势奠定了基础。注意选择编码方式时必须在“表达能力强弱”和“状态制备难度”之间做权衡。振幅编码理论能力强但难实现角度编码易实现但能力受限比特编码试图在两者间找到一条新路其代价是需要一个高效的经典预处理步骤。2.2 基于互信息的二进制编码方案详解比特编码听起来简单但关键在于如何把高维、连续的经典数据比如MNIST手写数字的784个像素值智能地压缩成一个固定长度的、信息量最大的二进制字符串我们不能简单地对每个像素进行均匀量化那样会浪费宝贵的比特在无关紧要的特征上。这里我们采用一种基于互信息Mutual Information的比特分配策略。互信息衡量的是两个随机变量之间的相互依赖程度。在我们的场景中就是每个数据维度或其特征与最终标签Y的相关性。相关性越强的维度理应分配更多的比特来精细刻画。实操步骤分解数据预处理与降维 首先对原始数据X(形状为[样本数, 特征数]) 进行标准化。然后使用主成分分析PCA将数据降至D维。D的选择是一个超参数它应小于原始特征数但又要足够大以保留绝大部分方差例如保留95%的方差。这一步不仅压缩了数据更重要的是将特征转换到了正交的、按重要性排序的新基上。第一主成分方向是数据方差最大的方向通常也携带了最多的判别信息。from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler # 假设 raw_data 是原始数据 scaler StandardScaler() data_scaled scaler.fit_transform(raw_data) # 选择保留95%方差的维度 pca PCA(n_components0.95) data_pca pca.fit_transform(data_scaled) D data_pca.shape[1] print(fPCA将数据从 {raw_data.shape[1]} 维降至 {D} 维)计算各维度重要性分数 对于PCA降维后的每一个新维度i计算该维度上的数据分布X_i与标签Y的互信息I_i。计算连续变量与离散标签的互信息需要估计概率密度一个常用的方法是使用直方图或K近邻法进行离散化估计。scikit-learn库提供了便利的函数。from sklearn.feature_selection import mutual_info_classif # 计算每个PCA维度与标签的互信息 # mutual_info_classif 可以处理连续特征和离散标签 importance_scores mutual_info_classif(data_pca, labels) # importance_scores 是一个长度为D的数组按比例分配比特 给定总的可用比特数B这通常由你可用的量子比特数N_x决定B N_x我们将B个比特按各维度重要性分数的比例进行分配。具体公式为b_i round(B * I_i / sum(I))其中b_i是分配给第i个PCA维度的比特数round表示四舍五入取整。确保sum(b_i) B如果因为取整导致总和不等可以微调最大或最小的b_i。import numpy as np def allocate_bits(importance_scores, total_bits_B): total_importance np.sum(importance_scores) # 初步按比例分配 bits_float total_bits_B * importance_scores / total_importance bits_int np.floor(bits_float).astype(int) # 先向下取整 # 处理余数将剩余比特分配给按小数部分排序最大的维度 remainder total_bits_B - np.sum(bits_int) if remainder 0: # 计算小数部分 fractional_parts bits_float - bits_int # 找到小数部分最大的前remainder个维度 indices_to_increase np.argsort(fractional_parts)[-remainder:] bits_int[indices_to_increase] 1 return bits_int bit_allocation allocate_bits(importance_scores, total_bits_B10) print(f比特分配方案: {bit_allocation})生成二进制字符串 对于降维后的每个样本针对第i个维度我们将其连续值x_i映射到b_i个比特。映射方法通常采用均匀量化将x_i的值域在训练集上统计得到的最小最大值等分为2^{b_i}个区间每个区间对应一个b_i位的二进制数。encoded_bit round( (x_i - min_i) / (max_i - min_i) * (2^{b_i} - 1) )然后将这个整数转换为b_i位的二进制字符串。最后将所有维度的二进制字符串拼接起来就得到了该样本最终的B位二进制编码。def encode_sample(sample_pca, bit_allocation, mins, maxs): 将单个PCA样本编码为二进制字符串 bitstring for i, (value, bits) in enumerate(zip(sample_pca, bit_allocation)): if bits 0: continue # 该维度不分配比特 # 将值归一化并量化 normalized (value - mins[i]) / (maxs[i] - mins[i]) quantized int(np.round(normalized * ((1 bits) - 1))) # 转换为指定位数的二进制字符串左侧补零 bitstring format(quantized, f0{bits}b) return bitstring # 预先计算每个PCA维度的最小最大值基于训练集 mins np.min(data_pca_train, axis0) maxs np.max(data_pca_train, axis0) # 编码一个样本 sample_bits encode_sample(data_pca_train[0], bit_allocation, mins, maxs) print(f样本编码结果: {sample_bits}, 长度: {len(sample_bits)})实操心得比特数B的选择B并非越大越好。更多的比特意味着更精细的编码但也意味着需要更多的量子比特N_x B和更深的电路来建模更复杂的关系。在实践中你需要根据可用的量子资源和问题的复杂度进行权衡。可以从较小的B如4-8开始实验。PCA维数D的选择如果D太小会丢失关键信息如果D太大则计算互信息和比特分配的计算量会增加且可能引入噪声。一个经验法则是选择能解释85%-95%方差的维度。务必在训练集上拟合PCA和计算最小最大值然后应用到验证集和测试集这是避免数据泄露的基本准则。类别不平衡处理在计算互信息时如果数据类别严重不平衡mutual_info_classif的结果可能会偏向多数类。可以考虑在计算前对数据进行重采样或使用加权的互信息计算方法。2.3 量子态制备与模型表达得到二进制字符串z后将其加载到量子态就变得异常简单。假设我们有N_x B个量子比特用于编码输入N_y ceil(log2(类别数))个量子比特用于编码输出标签。对于输入我们只需要对字符串z中每一位为‘1’的量子比特施加一个X门即可制备出计算基态|z⟩。例如z 101则在3个量子比特上依次对第1和第3个比特作用X门得到|101⟩。我们的量子模型就是一个参数化的量子电路U(θ)它作用于初始态|0⟩^{N_y} |z⟩。训练的目标是找到参数θ使得对输出寄存器前N_y个量子比特进行测量时得到正确标签y对应的基态|C(z)⟩的概率最大。损失函数通常定义为平均错误分类概率。这种编码方式的核心优势在于其表达能力的完备性。理论上只要量子电路U(θ)足够深、足够通用比如由通用门集构成它可以近似任意从B位输入到N_y位输出的布尔函数。这与振幅编码只能表达线性函数和角度编码只能表达三角多项式函数形成了鲜明对比。当然强大的表达能力也带来了过拟合的风险需要通过合适的电路结构和正则化技术来控制。3. 精确坐标更新告别学习率调优的“黑箱”3.1 梯度下降的痛点与坐标更新的思想训练变分量子电路主流的优化方法是梯度下降及其变种如Adam、SPSA。这些方法都需要设置一个关键的超参数学习率Learning Rate。学习率太小收敛慢如蜗牛学习率太大可能在最优点附近震荡甚至发散。更麻烦的是在训练过程中最优的学习率往往是变化的这就需要设计复杂的学习率调度策略。在量子计算中每次评估损失函数即运行量子电路并测量的成本很高因此通过大量试错来调优学习率显得尤为奢侈。有没有可能完全避开学习率这个“黑箱”精确坐标更新方法给出了肯定的答案。它的灵感来源于坐标下降法即每次只优化一个参数固定其他所有参数。但不同之处在于对于一类特殊的损失函数和电路结构我们可以解析地求出当前被优化参数的最优值从而一步到位地更新它根本不需要梯度信息也自然不需要学习率。3.2 数学推导与物理图像这个方法适用于参数化量子电路由一系列独立的泡利旋转门构成的情况这是目前绝大多数VQC的标准结构。具体来说假设我们的电路由p个参数门组成每个门的形式为exp(-i * θ_j * P_j / 2)其中P_j是泡利算符X, Y, Z的张量积。考虑损失函数L(θ)当我们固定所有其他参数只变化第j个参数θ_j时可以证明损失函数关于θ_j的依赖关系具有非常优美的形式L(θ_j) A - sqrt(γ_j^2 σ_j^2) * cos(θ_j - θ_j^*)其中A,γ_j,σ_j是与θ_j无关的常数θ_j^*就是使L(θ_j)取最小值的点。这个公式的物理意义非常清晰损失函数在单个参数方向上是一个简单的余弦函数其振幅sqrt(γ_j^2 σ_j^2)反映了这个参数对损失函数的影响能力可以理解为该方向的“曲率”或“陡峭程度”相位θ_j^*就是最优解的位置。那么如何找到θ_j^*呢我们不需要知道γ_j和σ_j的具体值。只需要在当前点θ_j以及θ_j π/2和θ_j π这三个点上分别计算损失函数的值L0, L1, L2。通过三角恒等变换我们可以直接解出θ_j^* θ_j - arctan2(2*L1 - L2 - L0, L2 - L0)其中arctan2是四象限反正切函数它自动处理了象限问题确保我们找到的是最小值点而非最大值点。实操步骤随机初始化所有参数θ。选择一个待更新的参数索引j可以按顺序或随机选择。在量子计算机或模拟器上分别用参数组(θ_1, ..., θ_j, ..., θ_p)、(θ_1, ..., θ_j π/2, ..., θ_p)和(θ_1, ..., θ_j π, ..., θ_p)运行电路计算损失函数值L0, L1, L2。注意由于量子测量的随机性我们需要用足够多的测量次数shots来获得损失函数的精确估计。这是该方法主要的量子资源开销与计算梯度的中心差分法所需次数2次相同。利用上述公式计算θ_j^*。将θ_j更新为θ_j^*。重复步骤2-5遍历所有参数或直到损失函数收敛。import numpy as np def exact_coordinate_update(loss_func, current_params, param_index): 对单个参数执行一次精确坐标更新。 loss_func: 函数输入参数向量返回损失值标量。 current_params: 当前参数向量。 param_index: 要更新的参数索引。 theta current_params[param_index] # 计算三个点的损失 L0 loss_func(current_params) params_plus_half_pi current_params.copy() params_plus_half_pi[param_index] theta np.pi/2 L1 loss_func(params_plus_half_pi) params_plus_pi current_params.copy() params_plus_pi[param_index] theta np.pi L2 loss_func(params_plus_pi) # 计算最优值 numerator 2 * L1 - L2 - L0 denominator L2 - L0 # 使用 arctan2 处理分母为零和象限问题 delta -np.arctan2(numerator, denominator) new_theta theta delta # 将角度规范到 [-π, π) 或 [0, 2π) 区间 new_theta np.mod(new_theta np.pi, 2*np.pi) - np.pi updated_params current_params.copy() updated_params[param_index] new_theta return updated_params, L0 # 示例训练循环 def train_with_exact_updates(loss_func, init_params, num_epochs): params init_params.copy() loss_history [] num_params len(params) for epoch in range(num_epochs): epoch_loss 0 # 随机打乱参数更新顺序 update_order np.random.permutation(num_params) for idx in update_order: params, loss exact_coordinate_update(loss_func, params, idx) epoch_loss loss # 记录更新最后一个参数后的损失 loss_history.append(epoch_loss) print(fEpoch {epoch}, Loss: {epoch_loss}) if epoch_loss convergence_threshold: break return params, loss_history3.3 与梯度方法的对比优势无需学习率避免调参这是最直接的优势。你不再需要猜测或网格搜索学习率也省去了设计学习率衰减策略的麻烦。避免鞍点Saddle Points在损失函数的高维空间中鞍点梯度为零但非极值点是梯度下降法的噩梦。Adam等优化器也可能在此停滞。从公式L(θ_j) A - K * cos(θ_j - θ_j^*)可以看出如果当前点θ_j恰好使得cos(θ_j - θ_j^*) -1即位于余弦函数的峰值那么梯度为零正弦函数为零但我们的方法能直接计算出θ_j^*一步跨越到谷底。自适应步长每一步更新的“步长”实际上是|θ_j^* - θ_j|它由当前参数位置与最优位置的差距自然决定。在损失函数曲面较“平坦”的方向K_j小参数更新幅度小在“陡峭”的方向K_j大更新幅度大。这相当于一个自适应的、各向异性的学习率比使用全局统一学习率的梯度法更高效。保证单调下降在无噪声无限测量次数的理想情况下每次坐标更新都保证将损失函数降低到该方向可能的最低点。这意味着损失函数在训练过程中是严格单调非增的这是一个非常强的收敛保证。实操心得与常见问题测量噪声的影响在实际的量子硬件或有限次测量的模拟中L0, L1, L2的估计存在统计误差。这会导致对θ_j^*的计算出现偏差。应对策略是增加测量次数shots以降低方差或者在连续几次迭代中对同一个参数进行多次更新取平均或中位数类似于小批量梯度下降的思想。参数更新顺序顺序更新如循环遍历所有参数或随机顺序更新都是可行的。我的经验是随机顺序通常能带来稍好的收敛性能因为它打破了参数间的潜在顺序依赖。与其它优化器结合在训练初期损失曲面可能非常复杂精确坐标更新可能陷入一个较差的局部极小值。一种混合策略是先使用Adam等优化器进行少量 epochs 的“预热”找到一个相对较好的区域然后再切换到精确坐标更新进行精细优化。计算开销分析更新一个参数需要3次损失函数评估。更新全部p个参数一轮需要3p次评估。这与使用中心差分法计算精确梯度需要2p次评估的开销处于同一量级。但精确坐标更新避免了反向传播中所需的参数移位电路等复杂操作在某些硬件上可能更易实现。4. 子网初始化对抗贫瘠高原的渐进式策略4.1 贫瘠高原大规模QML的“拦路虎”随着量子比特数的增加变分量子电路面临一个严峻挑战贫瘠高原Barren Plateaus。现象是随机初始化的参数下损失函数的梯度在几乎所有方向上指数级地趋近于零。这意味着你几乎无法通过梯度信号来知道该往哪个方向优化训练陷入停滞。理论研究表明贫瘠高原与电路的表达能力纠缠深度、门集密切相关。过于通用、高度纠缠的电路更容易出现贫瘠高原。常见的应对策略包括设计特殊的电路结构如层状电路、局部纠缠、使用经典神经网络进行智能初始化等。但这些方法往往限制了模型的表达能力或者引入了额外的经典计算开销。4.2 子网初始化的核心思想子网初始化提供了一种渐进式、可扩展的思路。其核心思想非常直观不要一开始就训练一个巨大的、充满参数的量子电路。而是从一个小的、易于训练的“子网络”开始。训练好这个小模型后当你有更多的量子资源更多比特时将这个训练好的小模型作为核心嵌入到一个更大的模型中并用它来初始化大模型中对应的参数。大模型中新增的部分与子网不直接相连的参数则用简单的初始化如零操作或恒等操作。这个过程可以形象地理解为“模型生长”阶段一小模型我们有一个N_q个量子比特的模型M_small处理经过B_small比特编码的压缩数据。我们训练这个模型直到收敛。阶段二扩展编码我们获得了更多量子比特希望使用B_large(B_large B_small) 比特的编码以利用更丰富的数据信息。我们设计一个更大的模型M_large它有N_q N_q个量子比特。嵌入与初始化M_large的电路结构被设计成包含M_small作为一个子图sub-graph。将M_small训练好的参数直接复制到M_large的对应位置。对于M_large中新增的、与原子网相连的参数门我们将其初始化为恒等操作即旋转角度设为0。对于新增的、与原子网不相连的独立部分可以随机初始化或采用其他策略。继续训练用B_large比特编码的数据在M_large上继续训练。由于核心部分已经过预训练且新增部分初始化为“无害”的恒等操作整个模型的起点在一个相对较好的位置有望有效避开从随机初始化开始会遇到的贫瘠高原。4.3 技术实现细节如何设计可扩展的电路结构这是子网初始化成功的关键。电路结构必须具有层次性或模块化特性使得小模型能自然成为大模型的一部分。一种常用的结构是层状硬件的全连接电路Layered Hardware-Efficient Ansatz。每一层由单量子比特旋转门如RY, RZ和一层两量子比特纠缠门如CNOT或CZ构成纠缠门连接所有可能的量子比特对全连接。当量子比特数增加时我们增加新的层并在新层中原有的连接方式保持不变新增的量子比特则与所有其他比特包括原有的建立连接。这样原有比特之间的相互作用由旧参数控制在扩展后得以保留而新旧比特之间的新相互作用由新增的参数控制这些新增参数初始化为恒等操作角度为0。比特编码的扩展性 在比特编码方案中扩展性天然得到满足。当我们从B_small比特增加到B_large比特时新的编码方案是在原有PCA方向上分配了更多比特或者增加了新的、重要性较低的PCA方向。关键在于B_small比特的编码是B_large比特编码的一个子集例如只取高几位。这意味着小模型处理的数据信息是大模型处理数据信息的一部分。因此小模型学习到的映射关系对于大模型来说是一个很好的起点。实操步骤训练小模型使用算法1基于总比特数B_small生成编码方案。构建N_q_small B_small N_y个量子比特的电路M_small。使用精确坐标更新或其他优化器训练M_small保存训练好的参数θ_small。构建大模型确定新的总比特数B_large重新运行算法1或基于原有重要性分数分配更多比特。构建N_q_large B_large N_y个量子比特的电路M_large。其结构应明确包含M_small对应的子结构。初始化M_large的参数向量θ_large找到θ_large中与θ_small对应的位置将θ_small复制过去。对于M_large中新增的、且与M_small子结构中的量子比特有直接连接的门例如连接旧比特与新比特的纠缠门旁边的旋转门将其参数初始化为0对应于恒等操作I。对于完全属于新增比特之间相互作用的参数可以进行小随机数初始化。微调大模型使用B_large比特编码的数据集。以θ_large为初始点继续训练M_large。此时由于大部分核心参数已接近较优点且新增连接初始化为“关闭”状态训练应该能快速收敛到一个比随机初始化好得多的解。# 伪代码示意子网初始化过程 def subnetwork_initialization(small_circuit, large_circuit, small_params, new_qubits): small_circuit: 小规模电路的描述如门列表 large_circuit: 大规模电路的描述 small_params: 小规模电路训练好的参数 new_qubits: 大规模电路新增的量子比特索引列表 large_params initialize_large_params_randomly() # 先随机初始化大模型参数 # 步骤1映射小模型参数 param_mapping find_parameter_mapping(small_circuit, large_circuit) for small_idx, large_idx in param_mapping.items(): large_params[large_idx] small_params[small_idx] # 步骤2初始化新增的、与子网相连的门为恒等操作 # 假设我们能识别出哪些门连接了“旧比特”和“新比特” for gate in large_circuit.gates: if gate.is_parameterized(): qubits gate.qubits # 如果这个门作用的比特同时包含旧比特和非旧比特即新旧交叉 if set(qubits) set(new_qubits) and set(qubits) - set(new_qubits): param_idx gate.parameter_index large_params[param_idx] 0.0 # 初始化为0对于RYRZ门0角度通常对应I或Z基态 return large_params实操心得“恒等初始化”的重要性将新增连接初始化为恒等操作参数为0是此策略有效的关键。这确保了在训练开始时大模型的行为与小模型完全一致对于旧比特的输入。新增的连接在训练初期不会引入不可控的干扰让优化过程可以平滑地从已知的好点开始探索。电路结构的兼容性子网初始化要求电路结构具有良好的扩展性。全连接层状结构是一个好选择但并非唯一。任何具有层次化、模块化特性的结构都可以尝试。在设计电路时就需要提前考虑未来扩展的可能性。贫瘠高原的缓解而非根除子网初始化并不能完全消除贫瘠高原。当模型变得非常大、非常深时贫瘠高原可能再次出现。但这种渐进式策略至少将出现高原的规模阈值大大推后了使得我们能够训练比随机初始化大得多的模型。与迁移学习的区别子网初始化类似于经典机器学习中的迁移学习但更强调结构上的嵌入和参数的零扰动初始化。它特别适用于量子场景因为量子参数空间的病态性质如贫瘠高原使得直接的随机初始化扩展变得极其困难。5. 综合实验MNIST数据集上的实战演练为了验证上述三位一体技术的有效性我们在经典的MNIST手写数字数据集上进行了数值模拟实验。我们聚焦于一个具有挑战性的多分类子集区分数字0、1、2、3。这比二分类问题更能考验模型的 scalability。5.1 实验设置与流程数据预处理从MNIST中提取类别0,1,2,3的图片每类取500个训练样本100个测试样本。将28x28的图片展平为784维向量并归一化到[0,1]区间。使用PCA将维度降至50维保留约90%方差。运行算法1基于互信息为不同的总比特数B生成比特分配方案。例如B8时分配方案可能是[2,1,1,1,1,1,1]表示第一个PCA方向分配2比特后续6个方向各分配1比特共8比特。量子模型架构我们采用层状硬件高效拟设Hardware Efficient Ansatz。每层包含所有量子比特上的RY(θ)旋转门接着是一层全连接的CZ纠缠门。输出层对于4分类问题我们使用N_y2个量子比特来编码标签00, 01, 10, 11。损失函数定义为1 -即错误分类的概率。总量子比特数N_q B N_y。训练策略基准线随机初始化参数使用Adam优化器需要手动调优学习率。我们的方法 a. 从B4(N_q6) 的小模型开始使用精确坐标更新进行训练。 b. 保存训练好的参数。 c. 扩展到B6(N_q8)。构建大模型将小模型的参数嵌入对应位置新增的、连接新旧比特的旋转门参数初始化为0。使用B6的编码数据继续用精确坐标更新训练。 d. 重复此过程逐步扩展到B8, 10, ...。5.2 结果分析与关键发现我们对比了三种训练策略在测试集准确率上的表现Adam (随机初始化)对于每个不同的B即模型大小都从随机初始化开始训练。精确坐标更新 (随机初始化)对于每个不同的B从随机初始化开始使用精确坐标更新训练。精确坐标更新 子网初始化使用上述渐进式扩展策略。总比特数 (B)参数量 (p)Adam (随机) 准确率精确坐标更新 (随机) 准确率精确坐标更新 子网初始化 准确率46972.5%78.1%78.1% (起点)632168.3%81.7%85.2%8726陷入贫瘠高原 (50%)76.4%88.9%10915无法有效训练72.8%90.5%关键发现解读精确坐标更新 vs Adam在较小规模B4,6时精确坐标更新在收敛速度和最终准确率上均优于需要调学习率的Adam。这表明在中小规模问题上摆脱学习率调优能带来稳定且高效的训练。贫瘠高原的出现当模型规模增大B8,10使用Adam且随机初始化的模型性能急剧下降甚至完全失效这是贫瘠高原的典型表现。梯度信号过于微弱优化无法进行。子网初始化的威力结合了子网初始化的精确坐标更新方法在模型扩展时表现出了强大的鲁棒性。准确率随着模型规模增大而持续提升从B4的78.1%稳步增长到B10的90.5%。这说明渐进式策略有效规避了从零开始训练大模型时面临的优化困境。信息密度与性能随着B增加编码保留了更多原始数据信息模型容量也增大因此性能提升是符合预期的。我们的方法使得这种 scaling law 得以实现而传统方法则被贫瘠高原阻断。训练过程观察在子网初始化策略中每次扩展后初始的几次参数更新尤其是那些被初始化为0的新增参数往往会导致损失函数出现相对较大的下降。这印证了新增的连接被有效地“激活”并开始学习新旧比特间的新关联。精确坐标更新方法在训练后期参数更新的幅度会自然变小因为|θ_j - θ_j^*|变小呈现出类似学习率衰减的效果但这是自适应的无需手动设置。5.3 资源开销与可行性分析经典预处理PCA和互信息计算是主要开销但对于MNIST级别数万样本数百维的数据在经典计算机上可在秒到分钟级完成是一次性成本。量子资源比特数N_q B ceil(log2(N_classes))。对于10分类MNISTN_y4若B16则需20个量子比特。这在当前NISQ设备~50-100比特的能力范围内。电路深度取决于层数。层状全连接电路的深度与量子比特数成正比。对于20比特、5层的电路深度在百量级需要考虑当前硬件的相干时间限制和噪声影响。测量次数精确坐标更新每个参数需3次损失评估每轮训练需3p次。对于p915的参数一轮需约3000次电路运行和测量。考虑到需要多轮迭代总测量次数在10^4-10^5量级。这需要具备中等规模、稳定运行的量子处理器或高性能模拟器。结论这套组合技术比特编码精确坐标更新子网初始化在模拟实验中展现出了可扩展的量子机器学习训练潜力。它将经典数据预处理、无超参优化和抗贫瘠高原初始化有机结合为在近期量子设备上实现有实用价值的QML模型提供了一条清晰、可行的技术路径。当然将其部署到真实噪声硬件上还需要考虑误差缓解、编译优化等更多工程挑战但这套方法论为后续的软硬件协同设计奠定了坚实的基础。