You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qiskit中VQC模型的梯度与海森矩阵计算方法问询

VQC模型的梯度与海森矩阵计算方案

梯度计算

  • 用QNN内置梯度配置:你用的VQC基于NeuralNetworkClassifier/Regressor,底层的EstimatorQNN支持直接配置梯度计算方式,不用碰qiskit.algorithms.gradients。构建QNN时指定梯度类即可:

    from qiskit_machine_learning.neural_networks import EstimatorQNN
    from qiskit.primitives.gradients import ParamShiftGradient
    
    # 假设你已经定义好ansatz量子电路、观测器observable,以及输入/权重参数
    qnn = EstimatorQNN(
        circuit=ansatz,
        observables=observable,
        input_params=input_params,
        weight_params=weight_params,
        gradient=ParamShiftGradient()  # 用参数移位法算梯度
    )
    

    把这个QNN传给VQC后,直接调用qnn.gradient(input_data, weights)就能拿到梯度值,训练时也会自动用这个梯度更新参数。

  • 适配新版API:如果你的Qiskit是较新版本,qiskit.algorithms.gradients已经迁移到qiskit.primitives.gradients,用这里的ParamShiftGradient或者FiniteDiffGradient都能适配VQC的参数计算。

海森矩阵计算

官方的海森计算功能已弃用,目前可以这么搞:

  • 手动嵌套梯度计算:海森矩阵是梯度的梯度,先算模型参数的一阶梯度,再对每个梯度分量再次计算梯度,最后把结果组合成矩阵。这种方法虽然麻烦,但完全基于现有梯度工具就能实现。
  • 社区库替代:一些Qiskit生态的第三方库(比如Qiskit Dynamics)有自动微分工具,可以用来构建VQC并计算海森矩阵,注意核对版本兼容性就行。

关键提醒

  • 新版本Qiskit的梯度API迁移到了qiskit.primitives下,旧的qiskit.algorithms.gradients确实不适配新VQC架构,别再用旧模块了。
  • 参数移位法是量子模型梯度计算的常规操作,虽然参数多了计算量会涨,但小规模VQC完全够用。

内容的提问来源于stack exchange,提问作者Zhelun Li

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 12:53:06