量子プロセッサを知る

量子コンピュータはキュビットから構築されています。 しかし、キュービットをたくさん持つだけでは十分ではありません。

完全に孤立して動作する10億キュビットでは、何も達成されません。 彼らはお互いに話す必要があります。 これは、いわゆる制御された操作によって接続する必要があることを意味します。 すべてのデバイスには、キュービットのペアをこの方法で接続できる独自のルールがあります。 デバイスの接続性が高ければ高いほど、強力な量子アルゴリズムを実装するのがより速く簡単になります。

エラーの性質も重要な要素です。 量子コンピューティングの近い将来の時代には、完璧なものはありません。 そのため、発生するエラーの種類、発生する可能性、および対象となるアプリケーションでの影響を軽減できるかどうかを知る必要があります。

これらは、量子デバイスの3つの最も重要な側面です。量子ビット数、接続性、ノイズレベルです。 量子コンピューターで何ができるかを理解するには、それらすべてを知る必要があります。

それでは、量子デバイス上で実行され、これらすべてを直接表示するゲームを作成してみましょう。 ゲームをプレイするだけで、プレーヤーはデバイスの大きさと接続状態を正確に確認できます。 実際のデバイスでの実行をシミュレーターでの実行と比較することにより、彼らはノイズがどれほど強力であるかを正確に知るでしょう。 次に、エラーを軽減することで再び遊ぶことで、わずかに騒々しい量子コンピューターの時代でさえ、どれだけ多くの有用な情報を回収できるかがわかります。 このゲームをQuantum Awesomenessと呼び、「ibmq_16_melbourne」と呼ばれるIBMデバイスでプレイします。

上の画像は、メルボルンデバイスで何が行われているのかについてのクイックガイドです。 色付きの円で示されている0から13までの番号が付けられた14の量子ビットがあります。 制御された操作を介して相互に通信できるキュビットは、線で接続されて示され、それぞれに名前の文字が与えられています。

制御された操作で実行できる最も便利なことは、エンタングルメントの作成と操作です。 これで初めて、私たちはキュービットに開かれた可能性の完全な空間を探求し、古典的なコンピューターでは事実上不可能であることができると期待しています。

最も単純なエンタングルメントには、2つのキュビットしか含まれていません。 それぞれがランダムな出力を生成しますが、それらの間には相関があります。 たとえば、いくつかのキュービットで次のプログラムを考えてみましょう。

これは回路図です。プログラムのキュービットの履歴を左から右に伝えます。

ここでは、角度π/ 2に対してrx演算を実行します。これにより、xゲートの本質的に半分になります。 これは、部分的なNOTゲートを備えた戦艦ゲームで「部分的なNOT」と呼んだ例です。 キュービットを|0⟩から|1⟩に完全にフリップするのではなく、その間に量子重ね合わせ状態で配置します。

両方の量子ビットに作用する操作は制御されたNOTであり、これは上部のビットが状態|1⟩の場合にのみ下部の量子ビットにNOTを適用します。 一番上のものは両方の可能性の重ね合わせにあるため、制御されたNOTの効果は、重ね合わせを一番下のキュービットにも広げることです。両方の|0⟩と両方の|1⟩の組み合わせた重ね合わせです。

回路の最後の部分は、各キュービットから単純なビットを抽出することです。|0⟩は0になり、|0⟩は1になり、重ね合わせはランダムに選択されます。 しかし、この場合、両方のキュビットがランダムな結果をもたらすとしても、それらは常に同意するはずです。

これを確認するには、実行してみましょう。 私が得た結果は、

{'11':503、'00 ':521}

プログラムが実行された1024サンプルのうち、すべての結果は `00`または` 11`のいずれかでした。 そして、それぞれにほぼ同じ数のサンプルがあります。 予想通り。

π/ 2の値を置き換えることにより、重ね合わせの性質を変更できます。 値が小さいと結果は0の出力に偏り、πに近い値は1に偏ります。 これは、各出力が1になる確率を変えることができることを意味します。ただし、どのような値を選択しても、この形式の回路は、2つのキュビットの結果が常に一致することを保証します。

このゲームでは、これらの絡み合ったキュービットのペアをデバイス全体にたくさん作成します。 これを行うには、最初にキュービットを一夫一婦でペアにする方法を選択する必要があります(予備のキュービットが残っている可能性があります)。 このペアリングはランダムに選択され、ゲームの全体のポイントは、ペアリングが何であったかをプレイヤーが推測することです。

ランダムペアリングが完了したら、基本的に、上記の量子プログラムを各独立ペアで実行します。 1つの違いを紹介しますが、ペアごとにrx操作に異なる値をランダムに選択するため、ペアのキュービットによって共有されるランダム性の度合いはペアごとに異なります。

回路を実行すると、結果は14ビットの文字列になります。各ビットは各キュービットの出力を表します。 統計を取るために多くのサンプルに対してそれを実行するので、完全な結果は、それぞれが発生した回数とともに、出てきたすべてのビット文字列のリストになります。

ゲームの目的は、プレーヤーが出力からペアリングを推測することなので、これらのデータをすべてダンプすることができます。 しかし、それはおそらくあまり面白くないでしょう。 代わりに、重要なポイントに焦点を当てることができます。

  • 各キュービットが0ではなく1の出力を与える確率はどのくらいですか?
  • 接続されたキュービットの各ペアが同じ値を与える確率はどれくらいですか?

次に、その情報をデバイスのイメージに配置できます。 たとえば、ここに特定の実行セットがあります。

各キュービットに表示される数は、結果が1であったサンプルのパーセンテージです。各接続の数は、対応するキュビットのペアが一致しない結果を出したサンプルのパーセンテージです。 この情報を使用すると、もつれた量子ビットのペアを簡単に見つけることができます。1を出力する確率が同じである量子ビットを探すか、決して一致しないペアを見つけます。

上記のデータはシミュレータから抽出されたものです。 それでは、実際の量子デバイスで試してみましょう。

ここでは結果はシミュレータほど明確ではありません。 ノイズの影響ははるかに強く、ペアを識別するのがはるかに困難になります。

しかし、すべてが失われるわけではありません! エラーを軽減することができます。 出力には特定の構造が必要であることがわかっているため、その構造を検索し、それを使用して結果をクリーンアップできます。

これを行う非常に単純な方法を次に示します。 まず、各キュービットはそのすべての隣接ビットを調べ、どのキュービットが最も一致するかを確認します。 次に、この最も快適なキュービットがそのパートナーであると想定します。 結果のエラーのバランスをとるために、キュービットの出力が1になる確率を、その両方の平均で置き換えます。

物事は改善しましたが、決して完璧なものにはなりませんでした。 これは、エラーを軽減するスキームが非常に単純で、プロセスの最後に追加されるだけだからです。 エラーの軽減には強力な効果がありますが、量子プログラム自体に組み込むと最も効果的です(このプロジェクトを拡張したい場合は、自分で試してみることができます)。

とりあえず、これらの緩和された結果を使用してゲームをプレイしましょう。

私たちの仕事は、キュービットの数を見て、同じ数のペア、または少なくともできるだけ近い数のペアを見つけることです。 左側の2つの48は良いスタートのようです。 絡み合っていると思われるペアAに行きましょう。

ペアHの2つの46は互いに同じであり、またそれらの隣人とはかなり異なります。 だから私たちもそのために行きます。

次に、ペアEはかなり確かなようです。

そしてCをペアにします

さて、ノイズが私たちにとって少し難しい場所に到達しました。 42は55または56とペアにする必要がありますか? 55の方が値が近いので、ペアOを使用します。

最後に、何もペアになっていないはずの2つのキュービットが残ります。 接続性グラフの構成方法により、このデバイスでは常にそれが発生します。 だから私たちは解決策に到達しました! しかし、それは正しいものでしたか?

正しいペアリングがはるかに見やすいノイズレスシミュレーションをもう一度見てみましょう。

ここで完全な一致を示すペアは、まさに私たちが選んだものです。 だから我々は確かに正しかった。 量子コンピューターでゲームをして勝ちました!

次は何?

量子プログラミングを始めたい場合は、Qiskitチュートリアルにあるこのゲームのソースコードをご覧ください。

私たちはあなたがそれを拡張する方法についていくつかのアイデアを集めました

  • ゲームをプレイするアルゴリズムを記述します。 これは、データを巧みに分析して、ペアをできるだけ正確に推測します。
  • ノイズがない場合、パズルは非常に簡単に解けます。 さまざまな難易度を導入できます。
  • ここで使用されるエラーの軽減は非常に単純化されています。 この講演で説明されている「ロバストな位相推定」など、より洗練されたものを実装してみることができます。
  • 3つの量子ビットを持つ状態など、より複雑な絡み合い状態を使用して、デバイスの量子ビットが楽しみから除外されないようにすることができますか?

これと私たちの他の量子ゲームで楽しんでください!