目次


IBM Quantum Computing で計算してみよう

クラウド経由で、T.J. Watson Research Center にある本物の量子コンピューターで計算する方法

Comments

IBM は 2016年5月4日に世界で初めて、量子コンピューターをクラウドで公開し、誰でも使えるようにしました。また、今後、数年以内に最大 50 量子ビットの商用量子コンピューターの構築も発表しています。この記事では、この IBM Quantum Experience の使い方や量子コンピューターの概念、簡単なアルゴリズムについて解説します。

1

誰でも使える量子コンピューター “The IBM Quantum Experience”

IBM は、2016年5月4日に世界で初めて、量子コンピューターをクラウドで公開しました(図 1-1)。アメリカ・ニューヨーク州にある、T. J. Watson Research Center に設置されている(図 1-2)、5 ビットの量子コンピューターにクラウド経由で誰でもアクセスができ、使うことができます。こちらのサイトには、実際に研究所に設置されている量子コンピューターの 360° 映像が公開されていますので、ご興味のある方は御覧ください。

この章では、まず、実際にどのように量子コンピューターにアクセスし、計算するのか紹介しますので、一緒にやってみましょう。

図 1-1. タブレットからもアクセスできる “The IBM Quantum Experience”
図 1-2. 量子コンピューターの中身

1.1. 登録とログイン

まず、IBM Quantum Experience のサインアップサイトから登録を行います(図 1-3)。

https://quantumexperience.ng.bluemix.net/qstage/#/signup

Sign up すると、2~3 日で「no-reply@quantumexperience.ng.bluemix.net」からメールが来て Login 可能になります。

図 1-3. Sign up 画面

https://quantumexperience.ng.bluemix.net にログインできましたら、「Composer」タブをクリックします(図 1-4)。

図 1-4. ログイン後、「Composer」タブをクリックします。

ここで、図 1-5 のようなウィンドウが表示され、計算する手段として、「Real Quantum Processor:実際の量子プロセッサー」にするか「Custom Topology:量子シミュレーター」にするかが選択できます。

量子プロセッサーは、IBM T. J. Watson Research Center にある本物の量子コンピューターを使うため、混んでいる場合は、実行は順番待ちになり、実行結果がメールで知らされます。また、過去に同じ内容を計算している人がいた場合、その結果を参照することができます。現在、5bit まで計算可能です。

一方、量子シミュレーターは、実物ではなく、仮想のシミュレーターで理想的な状態で計算することができます。20bit まで計算可能です。

図 1-5. 実物を使うか、仮想的な状態で計算するか選択します。

1.2. 量子シミュレーターによる計算

まずは、量子シミュレーターを使って計算してみましょう。「Custom Topology」を選び、そのままの設定で、「Set Topology」をクリックします(図 1-6)。(Number of Qubits は最大 20 まで設定できます。)

図 1-6. 量子シミュレーターの設定画面

音楽の五線譜のような画面が現れます(図 1-7)。右側にある Gates(演算子)をドラッグ・アンド・ドロップで五線譜の上に置くことができます。

図 1-7. Composer 画面

ここでは、試しに、パウリ X ゲートをドラッグ・アンド・ドロップして q[0]の線上に置き、Measurement operation をその横に置いてみましょう(図 1-8)。パウリ X ゲートは、ビット反転演算子で、 |0〉を |1〉にする操作をします。後ろの章で、主要な演算子については説明します。ポップアップウィンドウでは、測定結果をどのビットに入れるか聞いていますので、Bit number を 0 に指定し、OK します。

図 1-8. 演算子の設置

「Experiment name」を設定し、OK します。次に何回実行するか聞かれますので、適当に 100 を選択し、「Run」させてみましょう。

結果を見てみましょう(図 1-9)。Quantum Sphere(量子球)はマウスを使って回転して見ることができます。水色の線がマイナス Z 軸を向いていますね。これは |1〉の状態を意味します。(後の章で詳しく説明します。)もともと |0〉だったものを |1〉にする(球の上では +Z を -Z にする)計算をしたので、合っていますね。

Quantum State(量子状態)は、 |00001〉の状態の確率が 1.000 になっています。理想的な状態で実行しているシミュレーターなので確率がぴったり 1 になります。5 ビットすべてに 0 が入った、 |00000〉の状態の一つ目(右端)のビットを 0 から 1 へ反転する操作を行ったので、 |00000〉→ |00001〉になったということです。

図 1-9. 量子シミュレーターによる計算結果

1.3. 実際の量子コンピューターによる計算

次に、実際の量子コンピューターを使って同じ計算をしてみましょう。

結果画面の右上「X」をクリックして、「Composer」画面に戻ります。

右側「New」をクリックし、今度は「Real Quantum Processor」を選びます。現在、Cloud で公開されている実物の量子コンピューターは 5 ビットです。

先ほどと同じように、X ゲートと測定オペレーションを q[0]に設置してみましょう(図 1-10)。(その他、色々触ってみますと、シミュレーターの場合と違って、自由に設定できない条件があることがわかります。)

図 1-10. 実際の量子コンピューターによる演算子の設置

設定できたら、「Run」を押し、名前を指定して、「OK」します。何回実行するか聞かれますので、1024 回くらいを選びます。

この計算は、とても単純な計算なので、別の人が実行した同じ計算結果があります。その結果を使うか聞かれます(図 1-11)。

図 1-11. 過去の結果を使うかどうか聞かれる

今回は過去の結果を見てみましょう。「Result from Cache」を選ぶと、いつのキャッシュを見るのか選ぶ画面になりますので、出て来る日時の中から見たいものを選択します(図 1-12)。

図 1-12. 過去のキャッシュの選択

結果を見てみましょう(図 1-13)。

量子状態を見ると |00001〉の確率はほぼ 1.000 ですが、シミュレーターのときのように完全に 1.000 でないのが分かります。代わりに、 |00000〉など他の状態の確率も少しありますね。

量子球は、 |1〉の確率が完全に 1 ではないので、結果がはっきりと出ていません。

結果の下の方にスクロールしていくと、この計算を実行したときの量子コンピューターのコンディションが記載されています。

図 1-13. 実際の量子コンピューターの結果(過去のキャッシュを代用)

他の人の計算結果を見るのではなく、自分で実際に計算してみることもできます。世界中の人が T. J. Watson Research Center にある一つの量子コンピューターを使うため、むやみに実行しない方が良いかと思いますが、やり方だけ記載しておきます。

先程の結果画面の続きでは、右上「X」をクリックして、「Composer」画面に戻り、右側「New」をクリックし、今度は、「New Execution」を選び、OK します。実行の順番待ちとなったことがメッセージされます(図 1-14)。

図 1-14. 実行の順番待ちのメッセージ

混み具合にもよると思いますが、数分後に「no-reply-results@quantumexperience.ng.bluemix.net」から「IBM Quantum Results Ready!」というメールが届き、メール内にあるリンクをクリックすると結果サイトに飛びます。

これまでの説明で、簡単に量子コンピューターを使って計算ができることがわかったと思います。“The IBM Quantum Experience” には、その他に、「Community」や「User Guide」のタブがあります(図 1-15)。「Community」の中には Forum があり、そこで質問すると IBM を含めた世界中の研究者が返信してくれる仕組みになっています。この記事を読んでいただいた皆さんもぜひ、量子コンピューターの世界に触れてみて下さい。

次章では量子コンピューターとは何なのかを少し具体的に説明します。

図 1-15. 「User Guide」や「Community」
2

量子コンピューターとは

この章では、量子コンピューターについて少し詳しく説明します。

これまでのコンピューターは 0 か 1 のどちらかの値をもつビットを使って計算しますが、量子コンピューターは同時に 0 と 1 の状態をもつビットで計算をします。つまり、n 量子ビットがあると、2n の状態を同時に計算できるので、超並列計算を行うことになります。

この量子コンピューターは、すべての計算問題において、画期的なものというのではなく、この並列計算が活用できる問題の場合に計算スピードがとても早くなり、活用価値があります。例えば、データベース検索や素因数分解では、これまでのコンピューターよりずっと高速に計算出来ることが証明されています。

では、同時の複数の状態を取れるとはどういうことなのでしょうか?これを理解するには、量子力学の世界を少し復習する必要があります。

(この章は、竹内繁樹先生の大変わかりやすい解説本『量子コンピュータ』(ブルーバックス)を全面的に参考にさせていただいています。)

2.1. 光は波でもあり粒子でもある

皆さんの中には、光の二重性という言葉を聞いたことがある人もいると思います。光には、波と粒子の二重の性質があることが実験で証明されています。

波の性質は、「干渉」という現象で観察できます。波長の同じ波を重ね合わせると強めあったり打ち消し合ったりする現象です。スリットに光を当てた場合、強めあったり弱め合ったりした結果の縞模様がスクリーン上に現れます(図 2-1)。光が粒子であれば、スリットの形そのものがスクリーンに現れるはずですが、そうはなりません。

図 2-1. 干渉現象

粒子の性質は、「光電効果」という現象で観察できます。金属に光をあてると、電子が飛び出してくる現象(図 2-2)において、1 )波長がある値より短い光の場合に電子が飛び出してくる。2 )飛び出てくる電子の数は光の強さに比例している。3 )波長がある値より長い光では、どんなに強い光でも電子は出てこない。という事がわかっています。

図 2-2. 光電効果

この現象は、光と粒子と考える、光量子仮説で説明ができます。つまり、光のエネルギーには最小の単位(=光量子) があり、一つの電子が一つの光量子を吸収し、光量子のエネルギーが電子の金属の中から飛び出すのに必要なエネルギーを超えた時(光の波長がある値より短くなった時)に、突然電子が飛び出します。光の強さは、このエネルギーのかたまりである、光子の数の多さであると考えるのです。

図 2-3. 光量子仮説

このように波と粒子の二重の性質を持つものを量子と呼びます。(光以外にも電子、中性子なども量子です。)この量子の持つ現象を理論化したものが量子力学です。

2.2 マジックミラーと光

この光の性質を更に見てみましょう。

光を半透明の半透鏡(マジックミラー)に当てると、半分透過して、半分反射されます(図 2-4)。半分になった光をそれぞれ鏡で反射させて、戻ってきた交点にまた半透鏡を置くと、鏡の位置によって、半透鏡から出る光の一方が強まったり、両方同じ強さで出たりします(図 2-5)。(これを干渉計といいます。)干渉計での経路の差を調節すると、1 )経路差が同じ時、A 側が強め合い、B 側が打ち消し合う。2 )経路差が波長の 1/2 のとき、A 側は打ち消し合い、B 側は強め合う。という状態を作ることができます。

図 2-4. 半透鏡に光をあてる
図 2-5. 光の干渉計

光子の場合はどうでしょうか。

光子は、半透鏡では 2 つに分割されないことが実験で観測されています。光子を半透鏡に当てる実験を行うと、透過側か反射側のどちらかにでたらめに検出されます。では、干渉計に光子一つを入れてみる(図 2-6)とどうなるでしょうか?100%の確率で以下の現象が見られます。

1 )経路差が同じ時、光子は A 側に出てくる

2 )経路差が波長の 1/2 のとき、光子は B 側に出てくる

図 2-6. 光子と干渉計

半透鏡で分割されない一粒の光子はどうして経路差を知ることが出来るのでしょうか。この現象から、光子一つでも波の性質を持っていることが分かります。これを確率波という概念で説明します。

干渉計の中の光子は、「ある振幅を持った 2 つの確率波として表される状態にある」といいます。(光子がその経路に存在する確率は、確率波の振幅の二乗です。)

このような状態を「重ね合わせ状態」とよびます。(重ね合わせ状態が壊れることをデコヒーレンスと呼びます。IBM の量子コンピューターは重ね合わせ状態を取れる時間が他の生成法に比べて長いという特徴があります。)量子コンピューターはこの重ね合わせ状態を使って計算します。

2.3 重ね合わせ状態と量子ビット

2 つの確率波がある位相差をもって干渉計の両方の経路に同時にたどっている状態が、重ね合わせ状態です。量子コンピューターは、この重ね合わせ状態を使って、計算を行います。0 または、 1 の 2 つの状態を取る確率波が量子ビットです(図 2-7)。

図 2-7. 干渉計での光子の重ね合わせ状態

量子ビットの状態には、0、1 である確率の情報だけでなく、位相の情報も必要です。これを一目で分かるように表したのが図 2-8 の 3 次元の球(ブロッホ球)です。量子ビットの状態は球面上の 1 点で表されます。

図 2-8. ブロッホ球

球面上のそれぞれの地点は、それぞれ以下に対応しています。

北極:0 の確率が 100%
南極:1 の確率が 100%
赤道:0 と 1 が 50%ずつの重ね合わせ状態
x軸手前:0 と 1 の位相差ゼロ
x軸奥側:0 と 1 の位相差が半波長分

0 の状態を |0〉、1 の状態を |1〉と表記すると、図 2-9 のようにそれぞれの状態がブロッホ球上に表現されます。

図 2-9. ブロッホ球上の量子ビットの状態

図 2-9 の右側 2 つの状態は、それぞれ図 2-7 の左の図と右の図に相当します。

この章をまとめますと、量子コンピューターは、0 と 1 の 2 つの確率波がある位相差をもって干渉計の両方の経路に同時にたどっている、重ね合わせ状態(量子ビット) を使って計算を行います。したがって、n 量子ビットがあると、2n の状態が同時に取れ、この状態に対して演算を行うので高速な並列計算が可能になるのです。

実際の量子コンピューターは、光子で作られる必要はなく、IBM の場合は、シリコンの上の超電導体で作られています。

3

量子ゲートとは

量子ゲートとは、量子ビットに作用させる演算子のことです。

この章では、回転ゲート、アダマールゲート、制御ノットゲートなどの代表的な量子ゲートを簡単に紹介します。

(”The IBM Quantum Experience”の「Composer」タブの中では、量子ゲートは、図 3-1 のように右側にアイコンとして設置されています。)

図 3-1. 「Composer」タブの中での量子ゲート

まず、回転ゲートを 3 つ紹介します。回転ゲートは、量子ビットをある軸周りに一定の角度回転させる操作に対応します。

3.1 ビット反転演算 X

ビット反転演算 X は量子ビットを x 軸回りに 180° 回転させる(X→X, Z→-Z)。 X|0〉=|1〉, X|1〉=|0〉のように、|0〉が |1〉、|1〉が |0〉にビットが反転します(図 3-2)。

図 3-2. ビット反転演算 X

3.2 位相反転演算 Z

位相反転演算 Z は、量子ビットを z 軸回りに 180°回転させる(X→-X, Z→Z)。 Z|0〉=|0〉, Z|1〉=-|1〉のように位相が反転するので、図 3.3 のように |+〉が |-〉に変換されます。

図 3-3 位相反転演算 Z

3.3 アダマールゲート

アダマール変換 H は、量子ビットを z 軸と x 軸の間の軸を中心に 180°回転させます。 のように、 |0〉と |1〉から、 |0〉と |1〉が均等に混ざった重ね合わせ状態を生成します。

図 3-4. アダマールゲート

3.4 制御ノットゲート

2 量子ビットを使ったゲートもあります。制御 NOT ゲートは、制御ゲートと目標ゲートの 2 つを使います。制御ゲートが 0 のとき、目標ゲートを NOT しない。制御ゲートが 1 のとき、目標ゲートを NOT する。という変換をします(図 3-5)。

図 3-5. 制御ノットゲート

量子コンピューターのアルゴリズムでは、これらのゲートを量子ビットに操作させて、計算を行います。

次章で、実際のアルゴリズムを組んでみましょう。

4

グローバーのアルゴリズム(データベースの検索)

グローバーのアルゴリズムという、有名なアルゴリズムを量子コンピューターで組んでみましょう。

バラバラに裏返されたトランプから目的のカードを探す場合には、総当りで順にめくって探していく必要があります。同じように、あいうえお順で名前がソートされている電話帳の中から、ある番号の名前が誰かを検索したい場合(図 4-1)、番号ではソートされていないため、やはり、上から順々に探していく必要があります。

しかし、この問題に量子コンピューターを用いると、すべての数を同時に探索できるので、1 回の実行で答えを求めることができます(図 4-2)。この量子アルゴリズムがグローバーのアルゴリズムです。

図 4-1. ソートされていないデータベースでのこれまでの検索方法
図 4-2 ソートされていないデータベースの量子コンピューターでの検索方法

4.1 グローバーのアルゴリズム概要

グローバーのアルゴリズムとは、例えば、5 ビットの量子コンピューターにおいて、 |00000〉,|00001〉, ・・・ |11111〉の重ね合わせ状態を入力すると探していた値(例えば |01010〉)の確率振幅だけが 1 として観測されるというものです。

図 4-3. 5 量子ビットでのグローバーのアルゴリズム

具体的なアルゴリズムの中身は以下のようになっています(図 4-4)。

  1. 初期状態として、全てのビットに |0〉の状態を入力する。
  2. 全てのビットにアダマールゲートを作用させる。(全ビットが |0〉と |1〉の重ね合わせ状態になる。)
  3. 探したい数字の状態を |k〉とすると、|k〉の位相のみ反転操作する。
  4. すべての状態に何度か折り返し量子回路を作用する。
  5. |k〉の確率振幅だけどんどん大きくなる。(振幅増幅される。)
図 4-4. グローバーのアルゴリズム概要

探したい状態 の確率だけが大きくなっていくことが分かりましたか?

4.2 グローバーのアルゴリズム詳細

では、最も簡単な 2 量子ビットでのグローバーのアルゴリズムを量子コンピューターで実際にコーディングしてみましょう。

|00〉、 |01〉、|10〉、|11〉のうち、今回は |11〉をターゲット(答え)とします。

“IBM Quantum Experience” の「Composer」タブで新たに 2 ビットの New experiment を作成し(図 4-5)、以下の手順で 1 )から順にゲートを設定していきましょう。それぞれにゲートの意味と式を説明していますが、数式を追うのが苦手な人は、数式部分は読み飛ばして下さい。

図 4-5. 2 ビットの New experiment

1 )初期状態として、全 2 ビットに |0〉の状態を入力する。

これは、初期値としてデフォルトで設定されているので、設定の必要はありません。

2 )全 2 ビットにアダマールゲート(HH)を作用させる(図 4-6)。

図 4-6. アダマールゲートの設置

この作用で、以下の式のように展開されるので |0〉|0〉の状態が、 |00〉、|01〉、|10〉、|11〉の重ね合わせの状態になります。それぞれの確率振幅は 1/2 で、検出される確率は (1/2)2 で 1/4 ずつとなります。

3 )探したい数字の状態の |11〉の位相のみ反転操作するために、制御 Z ゲート(CZ)を通す(図 4-7)。

図 4-7. 制御 Z ゲート

この作用で、以下の式のように |11〉にのみマイナスがつきます。

4 )平均値の周りに反転させる(拡散変換 D と呼ばれる)ために、アダマール変換(HH)とビット変換(XX)と制御 Z ゲート(CZ)を使う(図 4-8)。

図 4-8. 拡散変換 D

このアルゴリズムを式で追ってみると以下のようになります。

この結果から分かるように、2 ビットの場合は、1 回の反転で探していた |11〉以外は存在しなくなりました。

最後に Operations ゲートを設置して、それぞれの状態を観測します。図 4-9 のようなアルゴリズムが作成されました。

図 4-9. 2 ビットのグローバーのアルゴリズム( |11〉の探索用)

4.3 グローバーのアルゴリズム計算結果

では作成したアルゴリズムで計算させてみましょう。

図 4-10. グローバーのアルゴリズムの計算結果

|11〉の出現確率が、1.000 となり、 |11〉のみが検出されました(図 4-10)。

5

補足)量子球の見方

“IBM Quantum Experience” の計算結果の一部に、図 5-1 のような量子球があります。これは、マウス操作で回転させて見ることができる 3 次元の球で、視覚的に量子ビットの状態を示すものです。出現確率が高いほど、球の中心から球表面に伸びた線が太くなります。これは、ブロッホ球とは異なるので注意して下さい。

例えば、図 5-1 の量子球は、 を表しており、北極である |0〉の確率と南極の |1〉の確率が、それぞれ 1/2 ずつと同じなので、同じ太さの線が球の中心から北極、南極へ伸びています。同じ状態をブロッホ球で表すと、図 5-2 のようになり、全く違う表記であることがわかると思います。

図 5-1. 量子球
図 5-2. ブロッホ球

 

5 ビットの量子球は図 5-3 のようになります。

図 5-3. 5 ビットの量子球

すべての状態が同じ出現確率の場合を表示させているため、それぞれの状態の出現確率が低く、球の中心から球表面への線は皆とても細く薄くなっています。

ピンク色の北極が |00000〉、北極よりひとつ下のオレンジ色の緯度の円は、 |1〉が一つ含まれた状態( |00001〉, |00010〉, |00100〉, |01000〉, |10000〉)、それより一つ下の黄色の緯度上の円は、 |1〉が 2 つの状態( |00011〉, |00110〉, |01100〉, |11000〉, |10001〉, |10100〉, |10010〉, |01010〉, |01001〉, |00101〉)、次は、 |1〉が 3 つの状態 ・・・ となり、最後の南極は、 |1〉が 5 つの状態 |11111〉を表します。

以上で、今回のシリーズは終了です。量子コンピューターがどんなものか、分かっていただけましたか。より意欲のある皆様は、“IBM Quantum Experience” の User Guide にある、有名なアルゴリズムの演習や独自のアルゴリズム開発に挑戦してみてください。

参考資料

  • 『量子コンピュータ』竹内繁樹 講談社ブルーバックス(2005)
  • 『クラウド量子計算入門』中山茂 カットシステム(2016)

ダウンロード可能なリソース


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cloud computing
ArticleID=1043869
ArticleTitle=IBM Quantum Computing で計算してみよう
publish-date=03172017