跳转至

GQCO作用分析

1. GQCO 的作用?

训练好的 GQCO 本质上是一个**“从问题到量子电路”的条件生成模型**,具体作用是:

给定一个组合优化问题(已经写成伊辛哈密顿量形式),GQCO 直接生成一个量子电路,该电路在 \(|0\rangle^{\otimes n}\) 上作用后,通过测量即可**以较高概率得到该问题的近似最优解(基态比特串)**。

使用方式可以概括为:

  1. 你准备一个优化问题的伊辛哈密顿量 \(H=\sum_{i<j} J_{ij}\sigma_i^z\sigma_j^z + \sum_i h_i\sigma_i^z\)
  2. \(\{h_i, J_{ij}\}\) 送入已经训练好的 GQCO 编码器;
  3. 解码器按条件分布 \(p_\theta(U|x)\) 生成门序列(即量子电路 \(U\));
  4. 在模拟器或真实量子设备上运行 \(U|0...0\rangle\),测量若干次,从结果分布中挑选概率最高的比特串,作为该优化问题的解。

因此,训练完的 GQCO 就是一台“问题 → 量子电路 → 近似解”的自动求解器,不再需要为每个新问题单独做 VQA 式的参数优化。


2. GQCO 的输入可以是什么?

在该工作中,输入限定为:

伊辛形式的组合优化问题参数
也就是每个比特的外场 \(h_i\) 和每条边的耦合 \(J_{ij}\)

具体实现上,它们被组织为一个图:

  • 节点:对应自旋/比特 \(i\),节点权重为 \(h_i\)
  • :若 \(J_{ij}\neq 0\),则在节点 \(i,j\) 之间连一条边,边权重为 \(J_{ij}\)

然后论文对节点、边做了特征工程(你如果要自己实现,需要遵守同样的编码方式):

  • 节点特征 \(v_i\):包含
  • 本身的场强 \(h_i\)
  • 与邻居场强的符号关系 \(\text{sgn}(h_i-h_j)\)
  • \((h_j, J_{ij})\) 的乘积符号等;
  • 边特征 \(e_{ij}\):包含
  • \(\text{sgn}(J_{ij})\)\(\text{sgn}(J_{ij}-h_i)\)\(\text{sgn}(J_{ij}-h_j)\)\(\text{sgn}(h_i h_j J_{ij})\)

编码器是 Graph Transformer,直接吃的就是这样的**图结构 + 特征**。

从应用角度看,你可以输入的就是:

  • 任意可以被写成伊辛模型的**二值组合优化问题**(如 Max-Cut、某些 0/1 规划的 Ising 化版本);
  • 给出它的 \(h_i, J_{ij}\),按论文格式构造图特征后送入模型。

3. 对输入有哪些重要限制?

可以分为四类限制:问题类型、规模、分布/编码、门池/结构

3.1 问题类型限制

  • 必须能写成**伊辛哈密顿量**:
  • 变量是二值 \(\pm 1\)(或 \(|0\rangle, |1\rangle\));
  • 目标函数能映射到 \(\{h_i\}, \{J_{ij}\}\)
  • 非二值、连续变量优化题不在本文设定范围内。

3.2 规模限制(qubit 数)

  • 模型结构上:门池最多支持 20 个量子比特 的电路;
  • 实际训练与评测:只在 3–10 qubit 随机实例上训练和测试;
  • MoE 和课程学习都是围绕 3–10 qubit 设计的。

因此,如果你把一个 >10 qubit 的伊辛问题直接丢给这版已训练模型,其行为并没有经过实验验证,很可能不可靠;>20 qubit 在门池定义上都不被支持。

3.3 分布与编码限制

  • 训练数据是**随机生成**的伊辛实例(具体分布由作者设定),因此:
  • 如果你输入的伊辛系数分布与训练分布差异很大(比如极端稀疏/极端强耦合结构),性能可能显著衰减;
  • 必须遵循文章定义的**图特征工程**(节点/边的符号特征等)。
    如果你用完全不同的编码方式(例如单纯把 \(h_i, J_{ij}\) flatten 成一个向量),那就不是这篇论文训练出的模型了,需要重新训练对应的编码器。

3.4 电路结构与长度限制

  • 最大电路深度:生成的门数上限是 \(2n\)\(n\) 为比特数),并在生成到 4 个以上门时,如果采样到结束 token 就提早截断;
  • 解码器词汇表是固定的门池(后面会提),因此:
  • 只能生成**由这些门构成**的电路;
  • 不支持任意连续角度,只支持设定的那些离散角度。

4. 想加入更多“可训练的量子门”,需不需要重新训练?

需要,原则上必须重新训练(至少要重训/微调解码器部分)。

原因可以从模型结构上严格说明:

4.1 门池 = token 词表,是模型定义的一部分

  • 这篇工作中,作者事先定义了一个**固定的门池**:
  • 基本 ½ 比特门:Hadamard、旋转门 \(R_X,R_Y,R_Z\)、CNOT、QAOA 式 \(R_{ZZ}\) 等;
  • 每个门的目标/控制比特允许各种配置;
  • 旋转角只允许 6 个离散值:\(\{\pm\pi/3,\pm\pi/4,\pm\pi/5\}\)
  • 总计得到 1,901 个候选门(包括恒等门)。
  • 这 1,901 个门在解码器侧就是**1,901 个 token**,和自然语言里的词表是一回事:
  • 解码器的 embedding 矩阵和输出层的 logit 都是以这套词表为索引训练出来的。

一旦你“加新门”,就相当于:

  • 扩张词表维度;
  • 原有 embedding / 输出层尺寸都变了;
  • 旧模型参数与新词表结构不再一一对应。

因此,不能简单在推理阶段“添加门”而不改模型

4.2 训练目标与门空间强绑定

GQCO 是通过 DPO / CPO 优化

\[ p_\theta(U|x) \]

在**给定门池定义的电路空间**上,使得采样到低能量电路的概率变大。你变更门池,相当于变更了整个搜索空间:

  • 原有分布 \(p_\theta(U|x)\) 学的是“在旧门池上哪些门序列好”;
  • 加新门后,旧分布既无法为新门赋予合理概率,也无法保证原有“好电路”依然占优势。

这在数学上等价于「换了优化变量的定义域」,原解不再是新问题的解,自然需要重新优化(训练)。

4.3 实际上可以怎么做?

  • 想增加新的门类型/角度(例如加 Toffoli、不同的 \(R_Z\) 角度):
  • 需要用新的门池重新定义 token 词表;
  • 重新训练解码器,最好同时微调整个模型(尤其是解码器和 MoE 专家)。
  • 想适配特定硬件的原生门集
  • 最优做法是**一开始就用“硬件原生门”定义门池**,然后从头训练;
  • 或在现有模型上,替换门池 + 重训解码器(可能可以部分继承编码器参数作为初始化,但仍需做大量训练)。
  • 仅想在同一门池下加约束(比如限制 CNOT 数量、更浅电路)
  • 这不需要改门池,只需要在损失函数或采样策略中加上惩罚项/约束,可以在原模型基础上做一次额外微调。

所以,“加更多可训练量子门”本质是改变门池定义,必须重新训练;而“在相同门池下改变目标(如深度惩罚)”可以通过继续训练来实现。


5. 小结(给你做实现/改进时的要点)

  • 训练后作用
    GQCO = “伊辛问题 → 量子电路”的条件生成器,用来快速给出求解该问题的量子电路,并通过测量得到近似最优解。

  • 可接受输入
    任何能写成伊辛哈密顿量的二值组合优化问题,输入为 \(\{h_i,J_{ij}\}\) 及其构成的图特征。

  • 输入限制

  • 类型:必须是伊辛型二值组合优化;
  • 规模:当前已训练模型可靠范围是 3–10 qubit(结构上支持到 20 qubit,但未验证);
  • 编码:必须按论文给定的图特征形式;
  • 电路:由固定 1,901 门池产生,旋转角为 6 个离散值,电路深度 \(\leq 2n\)

  • 增加量子门是否要重训

  • ,因为门池就是 token 词表,改变它就改变了模型的输入/输出空间;
  • 实践上,可以复用部分参数做迁移学习,但解码器至少要重新训练一轮才能学会合理使用新门。

如果你接下来打算自己实现/扩展 GQCO,可以先明确:
是要**换门池**(那就接受重训成本),还是**在现有门池上加约束/改任务**(那只需微调即可)。