使用 OpenQASM 3.0 计算梯度 - Amazon Braket

使用 OpenQASM 3.0 计算梯度

shots=0(精确)模式下运行时,Amazon Braket 支持在按需模拟器和本地模拟器上计算梯度。通过使用伴随微分法,可以实现这一点。要指定所计算的梯度,可以提供相应的编译指示,如以下示例中的代码所示。

OPENQASM 3.0; input float alpha; bit[2] b; qubit[2] q; h q[0]; h q[1]; rx(alpha) q[0]; rx(alpha) q[1]; b[0] = measure q[0]; b[1] = measure q[1]; #pragma braket result adjoint_gradient h(q[0]) @ i(q[1]) alpha

您不必明确列出所有单独的参数,可以在编译指示中指定 all 关键字。这样可以计算出所列的所有参数的梯度,当 input 参数数量非常大时,这可能是一个方便的选择。在这种情况下,编译指示与以下示例中的代码类似。

#pragma braket result adjoint_gradient h(q[0]) @ i(q[1]) all

Amazon Braket 的 OpenQASM 3.0 实现支持所有可观察类型,包括单个运算符、张量乘积、哈密特量可观测值和 Sum 可观测值。计算梯度时要使用的特定运算符必须封装在 expectation() 函数中,而且必须明确指定可观测值的每一项所作用的量子比特。