OpenQASM 3.0 を使用した勾配の計算 - Amazon Braket

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

OpenQASM 3.0 を使用した勾配の計算

Amazon Braket は、 shots=0 (完全) モードで実行する場合、オンデマンドシミュレーターとローカルシミュレーターの両方で勾配の計算をサポートします。これは、結合区別方法を使用して実現されます。計算する勾配を指定するには、次の例のコードに示すように、適切なプラグマを指定できます。

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()関数内でラップする必要があり、オブザーバブルの各用語が作用する量子ビットは明示的に指定する必要があります。