この連載でやること――アプリのコードは生成AIに書かせます。そして作ったものを、シミュレータではなく本物の量子コンピュータで動かします。
シミュレータというのは、量子コンピュータの振る舞いを普通のパソコンで計算して真似したものです。理想的な答えが返ってきます。いっぽう本物の機械は、まだ誤りが多く、答えがずれます。そのずれた数字を、そのまま載せます。難しい数式は使いません。
前回までに、同じコードをシミュレータと実機の両方で動かしました。実機の結果を並べます。
| 回 | 回路 | ゲート | 理想からのずれ |
|---|---|---|---|
| 第1回 | 量子コイン | 1個 | 1.4ポイント(486対514) |
| 第2回 | もつれたコイン | 2個 | 11.1%(1,000回中111回) |
ゲートを1つ増やしただけで、ずれが約8倍になっています。
同じ機械で、同じ日に、同じ1,000ショットで測った結果です。今回はこの差がどこから来るのかを見ます。
理由は1つではありません
分かっている範囲で4つに分けられます。
1つ目は、操作そのものが少しずつ間違えることです。HゲートもCXゲートも、実機では完全には実行されません。第2回でCXゲートを「0番目が1なら1番目をひっくり返す」と説明しましたが、その「ひっくり返す」が時々失敗します。
第1回はHゲート1つ、第2回はHとCXの2つ。操作の数が増えれば、失敗する機会もそのぶん増えます。
2つ目は、待っている間に壊れることです。量子ビットは放っておくと状態が崩れます。回路が長くなるほど、崩れる時間も長くなります。
3つ目は、測るところで間違えることです。実際には0なのに1と読んでしまう、ということが一定の割合で起きます。第1回は1量子ビット、第2回は2量子ビットなので、読み違える機会も2倍です。
4つ目が、いちばん意外かもしれません
書いたゲートは、そのままの形では実行されていません。
この機械が直接実行できるのは、ECR、I、RZ、SX、X の5種類だけです。一覧を見てください。HもCXも入っていません。
では第1回と第2回のコードはどうなったのか。実機に載せるとき、この5つの組み合わせに置き換えられています。Hゲート1つが数個の操作に、CXゲートはさらに多くの操作に化けます。
つまり、私たちが書いた「2つのゲート」は、実機の上では2つではありません。置き換えで操作の数が増え、そのぶん1つ目と2つ目の理由が効いてきます。
ゲート1つの追加が8倍のずれになったのは、単純に操作が1つ増えたからではなく、その1つがCXという置き換えの重い操作だったからです。
実機に渡している形
参考までに、実機へ渡すときの形も見ておきます。回路はOPENQASMという共通の書き方に直されます。
from blueqat import Circuit
c = Circuit().h[0].cx[0, 1]
c.m[:]
print(c.to_qasm())出てくるのはこれだけです。
OPENQASM 2.0;
include "qelib1.inc";
qreg q[2];
creg c[2];
h q[0];
cx q[0],q[1];
measure q[0] -> c[0];
measure q[1] -> c[1];ここにはまだ h と cx が書かれています。5種類への置き換えは、この先で行われます。私たちが書いたコードと、実機の上で実際に走るものは別物だ、ということです。
この数字が測れること自体に意味があります
11%と聞くと、使いものにならない機械のように思えるかもしれません。ですが見方を変えてください。
シミュレータでは、この数字は絶対に出ません。手元のパソコンは理想的な量子の振る舞いを計算しているので、何回やっても100%一致します。
実機に投げて初めて「11%ずれた」という数字が手に入ります。そして数字があるから、機械が良くなったかどうかを比べられるようになります。
ニュースで見る忠実度やゲート誤差という言葉は、まさにこの「どれくらいずれるか」を表しています。各社が出している誤り率の数字は、こうした実験を積み重ねて出てきたものです。
誤り訂正が要る理由も、ここから見えます
今回はゲートを2つ使っただけで11%ずれました。
実用的な計算では、操作を何万回、何億回と重ねます。1回ごとのずれが小さくても、積み上がれば答えは完全に崩れます。ゲート1つで8倍になるのを見たあとだと、実感が違うのではないでしょうか。
だから、計算しながら誤りを見つけて直し続ける仕組みが要ります。ニュースでよく見る「論理量子ビット」や「表面符号」は、この積み上がりを止めるためのものです。
次回
ずれる理由のうち、4つ目の置き換えには手を入れられます。
どの量子ビットを使うかを変えるだけでも、置き換え方は変わります。実機の量子ビットは1つずつ性能が違い、つながり方も決まっているからです。
次回は同じ回路で使う量子ビットを変えて、もう一度実機に投げます。11%が動くかどうか、実際に確かめます。

