Japanese
言語
English
Japanese
German
Korean
Portuguese, Brazilian
French
  • Docs >
  • 量子コンピューティングの概要
Shortcuts
_images/qiskit_nutshell.png

量子コンピューティングの概要

量子計算は、量子力学の基本原理を利用して計算を行う、新しい計算のパラダイムです。これを読んでいる方は量子計算の将来性が、素因数分解、量子シミュレーション、最適化といった古典的なコンピュータの能力を超える一部のタスクを、効率的に実行できる可能性にあるということを聞いたことがあるでしょう。

量子計算の強みは、量子力学の二つの原理、すなわち 重ね合わせエンタングルメント に基づいています。 Qiskit は、 量子回路 の枠組みでこうした量子力学の原理を活用して、量子計算を実行するための SDK です。量子ゲート、命令、古典的な制御ロジックから構成される量子回路は、複雑なアルゴリズムやアプリケーションを抽象的に表現し、量子コンピュータ上で実行することができます。その中核をなす Qiskit は、量子回路の構築、最適化、実行エンジンです。また、アルゴリズムやアプリケーションのレイヤーでは、古典的な計算リソースを連携させながら量子回路を利用することで、最適化、量子化学、物理学、機械学習、金融などの問題を解きます。

重ね合わせ

古典的なコンピューターと同様に、量子コンピューターもビット上で動作します。しかし、古典ビットは 0 と 1 の状態しか取りませんが、量子ビットは 0 と 1 の値およびそれらの線形結合を表現することができます。これらの線形結合は 重ね合わせ (あるいは重ね合わせ状態) と呼ばれ、指数関数的に多くの論理状態を同時に表現し、処理することができます。

このリソースが量子計算でどのように利用されているかをみるために、まず古典的なアナログである、ノイズキャンセリングに目を向けます。ノイズキャンセリングは、例えばノイズキャンセリング・ヘッドフォンで行われているように、 \(\pi\) (あるいは \(\pi\) の奇数倍) だけ位相のずれた、ほぼ同じ周波数と振幅の音波を生成して、重ね合わせの原理と干渉を活用することで、不要なノイズの振幅を小さくしています。

_images/noise_cancel.png

図 1 およそ \(\pi\) だけ位相のずれた、振幅のほぼ等しい音波による、ノイズ信号の近似的な打ち消し合い

上記のように、位相差が \(\pi\) の奇数倍に近い場合、二つの波の重ね合わせは干渉をもたらし、元の波と比べて振幅が大幅に減少した出力が得られます。その結果、ノイズの影響を受けない信号が得られます。この処理はデジタル回路で行われますが、振幅と思想は連続変数であるため、完全に一致することはなく、不完全な補正となってしまいます。

量子コンピューター上での一般的な計算は、ノイズキャンセリングとよく似ています。まず、すべての計算状態の重ね合わせを準備します。これは、所定のアルゴリズムにしたがって、重ね合わせの成分を選択的に干渉させる 量子回路 への入力として使用されます。入力状態の相対的な振幅と位相を打ち消した後に残るのは、量子回路によって実行される計算の解となっています。

_images/quantum_interference.png

図 2 干渉発生過程としての量子計算

エンタングルメント

量子計算が利用することのできる量子力学の第二原理は、 エンタングルメント という現象です。エンタングルメントとは、二つ以上の量子ビット (あるいは一般に複数粒子) の状態のことで、量子ビットの結合した状態は、単独の量子ビットよりも多くの情報を含んでいます。複数量子ビットの量子状態の圧倒的多数はエンタングルした状態であり、貴重なリソースとなっています。例えば、量子ビット間のエンタングル状態は量子テレポーテーションに用いることができます。量子テレポーテーションでは、二つの量子ビット間に共有されたエンタングル状態を操作することで、物理世界における相対的な近さによらず、一方の量子ビットからもう一方の量子ビットへ情報を転送することができます。量子系の自然な状態としてのエンタングル状態は、多くの場合に解がエンタングルした複数量子ビット状態となる量子化学や量子シミュレーションのような分野でも重要です。また例えば、複数量子ビットの非常にエンタングルした量子状態を利用することで、正真正銘の乱数を生成することもできます。これを行うための Qiskit パッケージ さえ用意されています。

量子回路

量子力学的なリソースを利用するアルゴリズムやアプリケーションは、 量子回路 の枠組みで簡単かつ効率的に記述することができます。量子回路とは、量子ビットに保持されているような量子データに対するコヒーレントな量子演算と、リアルタイムの古典計算を同時に行う計算ルーチンのことです。回路内の各水平線は量子ビットを表し、線の左端が初期の量子データ、右端が量子回路の計算によって生成される最終的な量子データとなっています。量子ビットに対する演算は、これらの線上に配置することができ、箱として表されます。

_images/teleportation_detailed.png

図 3 量子状態テレポーテーション回路再訪

量子回路は、量子コンピューターが古典的な情報を取り込んで、古典的な解を出力することを可能にし、 重ね合わせエンタングルメント といった量子力学の原理を利用して計算を実行します。

典型的な量子アルゴリズムのワークフローは、以下のように構成されています。

  • 解決したい問題

  • 量子回路の記述を生成する古典的なアルゴリズム

  • 量子ハードウェア上で実行される量子回路

  • それが生成する問題に対しての古典的な出力解

量子ゲートは、量子データの最も基本的な操作をなしています。量子ゲートは量子ビットに格納された量子データの情報保存および可逆的な変換を表現しています。これらの「ユニタリー」変換は量子回路の量子力学的な本質を表しています。 \(X\) (\(\oplus\) とも書かれる) や \(CX\) といったいくつかのゲートは、それぞれビット反転や \(XOR\) 演算のような古典的なアナログを持っていますが、他のゲートにはそれがありません。アダマール (\(H\)) ゲートは、パラメータ表示された回転 \(rX(\theta)\)\(rY(\theta)\) とともに、非古典的な重ね合わせ状態を生成します。 \(Z\)\(rZ(\theta)\) , \(S\) , \(T\) といったゲートは、干渉に用いることのできる位相に影響を与えます。 \(CX\) ゲートのような二量子ビットゲートは、量子ビット対の間にエンタングルメントを生成したり、ある量子ビットから別の量子ビットへ位相を「キック」したりするために用いられます。ゲートとは対照的に、「測定」のような操作は、線が「ターゲット」ワイヤに接続されている、箱の中のメーターシンボルで表され、位相を含む量子ビットの状態に関する十分な情報を抽出し、それを古典ビットとして表現して、その古典ビットをターゲットワイヤ (多くの場合、読み出しデバイスでこれは完全に古典的なワイヤです) に書き込むことができます。これが、量子データから古典デバイスに情報を取り込む典型的な方法です。 \(H\), \(rZ(\theta)\), \(CX\) と測定ゲート、すなわちユニバーサルゲートセットだけによって、自然界の任意の物理システムのダイナミクスを効率的に計算できるものを含む、あらゆる量子回路を構築できるということに注意してください。

ワークロードの中には、量子回路と古典計算を交互に配置した、拡張シーケンスを含むものがあり、例えば変分量子アルゴリズムでは最適化ループ内で量子回路を実行します。このようなワークロードでは、量子回路をパラメータ化し、回路実行と古典計算の間の遷移を効率的に行うことで、システムの性能を大幅に向上させることができます。そこで、計算時間を高速化するために開発されたハードウェアを用いて、量子回路を繰り返し利用するアルゴリズムを用いた計算を near-time computation と定義します。 near-time computation では、古典計算は量子計算のコヒーレンスよりも長い時間スケールで行われます。これは、古典的な計算が量子デバイスのデコヒーレンス時間内に行われる real-time computation とは対照的です。

最小限の労力で、複雑な量子回路を構築することが、 Qiskit の核心です。たった数行のコードで、上記のような複雑な回路を構築することができるでしょうか。

qr = QuantumRegister(3, 'q')
cr = ClassicalRegister(2, 'zx_meas')
qc = QuantumCircuit(qr,cr)
qc.reset(range(3))
qc.barrier()
qc.h(1)
qc.cx([1,0],[2,1])
qc.h(0)
qc.barrier()
qc.measure([0,1], [0,1])
qc.barrier()
qc.z(2).c_if(cr, 1)
qc.x(2).c_if(cr, 2)

豊富な操作の機能セットをサポートしており、 量子コンピューター や古典的なシミュレーターに渡すことができます。

量子コンピューター

_images/system_one.jpeg

図 4 IBM Quantum System Oneの内側

量子回路を用いてプログラムされた量子コンピューターは、 ゲートベースの量子コンピューター と呼ばれています。このようなシステムは、量子ビット素子を定義することのできる量子技術を用いて構成することができ、単一および複数量子ビットのゲート演算を高精度に実装することができます。現在、超伝導回路、トラップイオン、半導体量子ドット、光子、中性原子に基づいたアーキテクチャーが積極的に開発されており、その多くはインターネットを介してユーザーがアクセスできるようになっています。 Qiskit は与えられた量子システムの基礎となるアーキテクチャーにとらわれず、量子デバイスのエンタングルゲートトポロジーに合わせて量子回路をコンパイルして、回路命令をデバイスのネイティブゲートセットにマッピングし、結果として得られた量子回路を最適化することで忠実度を高めることができます。

上述のノイズキャンセリングの例と同様に、量子ビットの振幅と位相は連続的な自由度であるため、演算が正確に行われることはありません。これらのゲートエラーは、量子コンピューターの置かれた環境からのノイズとともに、コンパイル以外の段階において計算を台無しにする可能性があります。そのため、ノイズの影響を受けやすい現在の量子システムで高忠実度の出力を得るためには、追加の緩和手順が必要になります。 Qiskit ではそのコンパイル戦略において、様々なデバイス較正指標 (下図参照) を考慮することができ、量子回路を実行するために最適な量子ビットのセットを選択することができます。さらに Qiskit には、量子回路の出力の忠実な表現を得るための、ノイズ緩和テクニックが集められています。

_images/system_error.png

図 5 IBM Quantum ibmq_manhattan システムのトポロジーとエラー率

次なる学び

量子計算が提供するものを読者の皆さんに体験してもらい、さらに多くのことを知りたいと思ってもらえたことを期待しています。もしそのようであれば、興味のあるかもしれない資料がいくつか用意されています。