HELLO CYBERNETICS

深層学習、機械学習、強化学習、信号処理、制御工学、量子計算などをテーマに扱っていきます

抑えておきたい量子アニーリングマシンの教養

 

 

follow us in feedly

f:id:s0sem0y:20180819065800p:plain

はじめに

今回は量子コンピュータとして応用が期待されている(既にされている?)量子アニーリングマシンについて、一般の人にも分かるように数学的な話を避けながら教養としてまとめておきたいと思います。

実際のところは私自身も量子コンピュータについては初歩的な勉強を始めた段階であり、全くの初心者であることをご承知ください。

量子アニーリングマシンの概要

量子コンピュータ

量子コンピュータとは量子力学的な振る舞いを計算に取り入れたコンピュータの総称です。なぜ「総称」なのかというと、今回紹介する量子アニーリングマシン以外にも、量子コンピュータは存在するからです(量子ゲート方式の量子コンピュータが期待されている)。

ところで量子力学的な振る舞いとは一体何でしょうか。この点を認識しておかないと、そもそも何をいっているのか分からないということになってしまいますので、簡単に抑えておきましょう。

従来のコンピュータというのは電子回路で構成されており、電圧のONとOFFをそれぞれ$1$と$0$に見立てて2進数で計算を実行します。例えば”$1000$”のときには値のコピーを、"$0000$"のときには足し算を、"$0001$"のときには引き算をするなどとルールを決めておくことで、適宜計算を実行していくことができます。文字を表すにも、$0$と$1$の組み合わせで表現するようにしておくことになります。

そして、従来のコンピュータを元に考えるならば、"$0000$"と"$0001$"という回路の状態が同時に存在するような振る舞い(足し算と引き算が同時に行われる!!?)をする場合「量子力学的」だと言います。「同時にって何のことなんだ!!?」と、まあ感じるわけですが、実は私達の世界は実際そうなっています。認識できていないだけでこれが世界の実体なのです。

この振る舞いを陽に利用して、効率的な計算を実行させようというのが量子コンピュータの狙いになります。簡単のためかなりいい加減な説明になっていますが、回路の状態を量子的な振る舞いを用いて変化させて、うまい計算をさせてやろうというのが量子ゲート型の狙いになります。

量子ゲート型の話で、同時に複数の計算を出来るから計算が速いのだ!という話をたまに目にしますが、それは誤解で、実際には、同時に複数の計算が行われた結果、取り出せるのは1つの結果だけである。 (本題ではないので詳細は割愛するが)従って量子ゲート型では色々な計算の分岐の中で欲しいものだけを都合よく取り出すようなアルゴリズムが必要になる。

量子アニーリングマシンも、量子力学的な振る舞い(すなわち複数の状態を同時に取る)を利用した計算機なのですが、従来のコンピュータとはだいぶ毛色の違うものになっています。これからその点を詳しく説明していきましょう。

組み合わせ最適化問題

さて、量子アニーリングマシンと切っても切れない関係にある組み合わせ最適化問題について少し触れたいと思います。特に有名なのが下記の巡回セールスマン問題と呼ばれるものです。

巡回セールスマン問題(じゅんかいセールスマンもんだい、英: traveling salesman problem、TSP)は、都市の集合と各2都市間の移動コスト(たとえば距離)が与えられたとき、全ての都市をちょうど一度ずつ巡り出発地に戻る巡回路の総移動コストが最小のものを求める(セールスマンが所定の複数の都市を1回だけ巡回する場合の最短経路を求める)組合せ最適化問題である。 wikipediaより

簡単に言えば「各地点に点在している5人のお客さんを、1回ずつ訪問して元の場所へ戻ってきたい。どのような順番で訪問すれば移動距離が最も短くなるか」という問題です(簡単のため、元の場所へ戻ってくるということを省いて以下説明していきます)。もちろん「5人」で無くてもいいですし、「移動距離」ではなく「移動時間」を最小にしたいという話にしても構いません。

前提として、点在しているそれぞれのお客さんの間の移動距離(あるいは移動時間)は分かっているものとします。例えば下記の図において、どのような順番で訪問していけば良いのか、一目で判断できるでしょうか?(これくらいならわかっちゃうかも)

f:id:s0sem0y:20180819055416p:plain

それぞれの線が移動距離だと思って構いません(本当は道路に沿った距離を考えるべきだし、移動時間ならば混みそうな道を通らなければならないことも考慮すべきだ。そういう意味では最も単純な問題設定と言える)。

果たして"$A, B, C, D, E$"という順番が良いのか、"$B,D,C,A,E$"という順番が良いのか、はたまた全く別の順番か…すぐには検討できないでしょう。この問題の場合は「すべてのパターンでの移動距離をすべて列挙してから、最も短い時間のものを選べば良いのではないか?」と言われればそれでおしまいです。頑張ればいけるでしょう。

では訪問先が20件ならばどうするのでしょうか。100件なら?1000件なら?考えるだけでゾッとしてきます。このような計算はコンピュータを使っても苦労するところです。

問題の書き換え

さて、量子アニーリングマシンの話に入るために、上記の「どういう順番で回るのか」ということの表現を書き換えてみます。具体例として、"$A,B,C,D,E$"という順番で回ることを示す表を見てみましょう。

f:id:s0sem0y:20180819060353p:plain

見方について説明します。例えば1行目は$A$のみが$1$という値が埋められています。これによって1件目の訪問先として$A$を選んだことを示しています。同様に2行目では$B$を、3行目では$C$を選んでいるというわけです。では"$B,D,C,A,E$"ならばどのような表になるのかというと下記のようになります。

f:id:s0sem0y:20180819060935p:plain

さて、ここまで書き下してみて一体何が変わったというのでしょうか。説明します。

先程、「すべてのパターンを試して移動距離を算出し、一番移動距離が少ないパターンを選べば良い」ということを述べました。ということは今回のケースで言えば、「すべての表を書き下してみて、その表に対応する移動距離を求めて一番距離の少ない表を選べばいい」ということになります。

そんなこと「訪問先が増えたらできなくなっちゃうよ!」という話をしたばかりでした。しかし、ここに量子力学的な振る舞いを持ってきてみたらどうなるでしょうか。量子的な振る舞いを持って来れば、それぞれの表に埋められている"$0$"と"$1$"がすべて同時に実現している状態(すなわちすべての表のパターンを網羅した状態)を実現できるのではないでしょうか。

量子アニーリングマシンの動作

さて、かなりの核心に迫ってきたところで量子アニーリングマシンの動作について説明します。

量子アニーリングマシンは、"$0$"と"$1$"を同時に取るような電子をたくさん並べて、あとは自然現象に任せて電子の状態を"$0$"と"$1$"のどれかに落ち着かせた結果(電子はエネルギーの総和が低くなるように落ち着く)を観測するという、ただそれだけのマシンです。

我々が外部から操作できるのは2つです。「たくさん並んで電子に対して(横)磁場を与える」ことと「たくさん並んでいる電子と電子の間の結びつきを調整する」ことです。ちなみに横磁場が作用している間は、電子は"$0$"と$"1"$を同時に実現するように量子的に振る舞い、磁場を取り払うことでいずれかの値に確定していきます。

まとめると、磁場を与えることが「量子的な振る舞いから、あるどれか1つの状態に確定させる」ことを可能にし、電子の結びつきを調整することが「電子と電子が同じような値に確定したがるかを調整する」ことを可能にします。そして、あとは自然現象の振る舞いに任せて実際に電子の値が決定したことを見ることしかできないのです。

巡回セールスマン問題を量子アニーリングマシンで解く

さて、そんな限定的なことしかできない量子アニーリングマシンが一体何の役に立つのでしょうか。既にピンときている方もいらっしゃるかと思います。以下の表をもう一度見てみましょう。

f:id:s0sem0y:20180819060935p:plain

巡回セールスマン問題は「各訪問先を順番に1回だけ訪れて、移動距離が最小になるようにする」という問題でした。

そこでまず、表において「各行、各列いずれで見ても、"$1$"が入るのは一箇所だけ」です。なので、5×5個の電子を配置して、電子の結びつきを上手く調整してこの制約を満たすように仕込みます(つまり各行各列でどれか1つの電子が状態"$1$"なら他は$"0"$となるような結びつけ方をする)。

更に、各お客さんの地点の距離を考慮した結びつけも考えます。例えば$A$から$C$に移動するよりは$A$から$B$や$E$に移動するほうが距離が短いので、距離が短い者同士が連続した順番で選ばれやすいような結びつけ方を考慮します。

f:id:s0sem0y:20180819055416p:plain

このとき、$A$から$B$に移るような電子の状態(表の埋め方)が選ばれるとは限りません(なぜなら、全体で移動距離が短くしようということなのですから)

そして$"0"$と$"1"$の両方の値を同時に取っている電子の状態はエネルギーを最小にするように落ち着いていくのでしたから、電子の状態(つまり表の埋め方)に応じてエネルギーが変動し(掛かる総移動距離が変動し)、最終的にエネルギーが最小(総移動距離が最小)となるように落ち着いてくれるはずなので、その結果を観測すれば答えがわかるということです。

実際には

  1. 電子を必要な個数準備する
  2. 横磁場を掛けて電子に量子的な振る舞いをさせる
  3. 横磁場を弱めつつ、電子の結びつきの制約を入れる
  4. 横磁場を完全に無くした時、制約を満たすエネルギー最小値に状態が落ち着いている

という手順になります。

量子アニーリングマシンの実態

さて、量子アニーリングマシンの実態が見えてきたでしょうか。

量子アニーリングマシンは、現状、先程も述べた下記のような動作のみを行います。

  1. 電子を必要な個数準備する
  2. 横磁場を掛けて電子に量子的な振る舞いをさせる
  3. 横磁場を弱めつつ、電子の結びつきの制約を入れる
  4. 横磁場を完全に無くした時、制約を満たすエネルギー最小値に状態が落ち着いている

従って、「量子アニーリングマシンを使う」ということはすなわち、「何らかの問題を電子の振る舞いを落ち着かせる問題に書き換え、電子の結びつきという形で問題の条件を物理的に実装し、エネルギーが最小になる電子状態を観測して、解を得る」ということなのです。

利用用途は極めて限定的なのがおわかりでしょうか。一方で、電子の振る舞いを落ち着かせる問題に書き換えができさえすれば、あとはやることは毎回同じです。そして、世の中には意外と、このように書き換えられるような問題は数多く存在するのです。

f:id:s0sem0y:20180819065800p:plain

量子アニーリングマシンの応用に向けて

実応用における課題:物理的な事情

ここでは、量子アニーリングマシンを実応用するという場合での課題について述べます。

まず、量子的振る舞いというのは想像以上に繊細です。私達が「複数の状態を同時に取る」ということを生活の中で一切実感したことが無いのも、量子的振る舞いが簡単に壊れてしまうからです。

私達が何かを目にする時、網膜に向けて光が入ってきているということになります。そして何かが見えているということは、その光はその何かに反射してきたということです。量子的振る舞いをしているところに、光なんてものがぶつかって来たらたちまち量子的状態は壊れ、私達がよく知る普通の1つの状態になってしまいます(というイメージで勘弁してください)。

観測するというのはいつでも、何かしらに外部から影響を与え、その反応を見るということです。それによって量子状態は簡単に失われてしまうのです。

量子アニーリングマシンでは(というか量子コンピュータ全般では)、この量子的振る舞いを、ちゃんと目的の動作を達成するまで維持しなければなりません。これが大変難しく、なんと1秒たりとも保たないのです(本当はもっと短い)。すなわち、最適化問題を解かせているとしても、量子アニーリングマシンに与えられた時間というは非常に短く、その間に直ちに解を見つけなければなりません。

もしかしたら疑問に思う人もいるかもしれません。「量子状態はいろいろな状態を同時に取るのだから、最適化問題のすべてのパターンを網羅した上で、一番エネルギーが低い場所をすぐに見つけられるんじゃないの?」という観点での突っ込みがあるかもしれません。

しかし、量子状態というのは状態が確定するとき、その確定値は確率的に振る舞います。エネルギーが低い状態に確定する確率が最も高いのですが、他の状態にも確定する可能性は必ず残ります。量子アニーリングマシンを十分に長い時間起動しておけば、エネルギーが低い状態に確定する確率を十分に挙げられるのですが、先程も述べた通り、それは現状難しいのです。

従って、実際には同じ問題を何度も何度も繰り返し解かせて、本当の解がどこなのかを集計して見るということになります。運が悪ければ、その全てが本物の解とは違うものかもしれません。考えてみてください。巡回セールスマン問題でも、殆ど移動距離が変わらないような訪問の仕方がいくつも存在しそうですね。総移動距離がほとんど変わらないのであれば、エネルギーの値も殆ど変わらなく、すなわち状態が確定する確率もほとんど変わらない(しかもそんな状態がたくさんある)ために、中々真の解が得られないかもしれないわけです。

それでも、最適解とほとんど変わらないのだとすれば、まあそれはそこそこ使える解でしょうということで手を打つしか無いです(最適解とほとんど変わらないかの保証など無いが、最適解がめっぽう他の解よりエネルギーが低いなら、確定する確率も高いはずなのできっと出てきてくれる…)。

更に、今回は便宜的に巡回セールスマン問題に対して5×5の電子の配置を考えて、表を埋めるというようなことを言いました。

f:id:s0sem0y:20180819060935p:plain

しかし、実際のハードウェアとしてこのように電子配置がなされているかといったら実はそうではありません。このように物理的な実装を行う場合において、理想的な電子の配置にどれだけ近づけたマシンを作ることができるのかも課題となります。

社会的応用における課題

量子アニーリングマシンを使う場合には、電子状態を落ち着かせる問題として量子アニーリングマシンに問題を渡さなければなりません。これは、相応に数式を取り扱う能力が必要になりそうです。

これまでの解説を見てきて、「電子の結びつきを調整する」というワードがありましたが、このような調整をどのようにするのか、素人目ではパッ思いつくものではないでしょう。ましてや、もっと複雑な最適化問題となった場合にはどうなるのでしょうか。電子状態を落ち着かせる問題にまで持っていけるのかは不安が残るところです。

この部分が間違っていた場合は、もはや最適解も糞もないわけですね。

f:id:s0sem0y:20180819072049p:plain

そういう意味においては、量子アニーリングマシンに対するプログラミングというのは、最適化問題を電子状態を落ち着かせる問題に書き換えることであると言っても良いかもしれません(また、そもそも社会的問題を最適化問題に落とし込むことも、それぞれの専門家が手がける必要があるでしょう。といっても、そのような問題がゴロゴロと見つかっているからこその量子アニーリングマシンへの注目だと言えるでしょうけど)

機械学習との関連

さて、人工知能として時代の主役に躍り出ている機械学習ですが、量子アニーリングマシンは機械学習にも応用ができるとして注目を浴びています。しかし、これまで解説してきた量子アニーリングマシンとは少し違った問題形式となっていることに注意してください。

ニューラル・ネットワークを例に取りましょう。ニューラル・ネットワークの学習では入力と出力のデータの組があるときに、これらを上手く表現してくれるようなニューロンとニューロンの結びつきを、ある損失関数の最小値を求めるという問題によって実行します。量子アニーリングマシンでは、電子と電子の結びつきは予め与え、エネルギー関数を最小にするような電子の状態を求めています。話が全く逆になっていることがお分かりでしょうか。

ニューラル・ネットワークの入力や出力(あるいは隠れ層のニューロンの値)が量子アニーリングマシンにおける電子の状態に相当し、ニューラル・ネットワークのニューロン間の結びつきが量子アニーリングマシンの電子の状態に相当するのです。 あるエッジ(線)の値が分かっているときに、各ノード(○)の値を求めることは「順問題」と呼ばれ、各ノードの値が分かっているときにエッジの値を求めることは「逆問題」と呼ばれます。

f:id:s0sem0y:20180819073515p:plain

機械学習は逆問題であり、量子アニーリングマシンの(これまで解説していた動作)は順問題なのです。従って量子アニーリングマシンを機械学習に使う場合には、上手いこと動作のさせ方を変えなければなりません。ワードとしては「サンプリングとして量子アニーリングを用いる」ということが行われます(量子アニーリングマシンの数理はボルツマンマシンの発展系であるとされており、更に多層パーセプトロンの学習は制限ボルツマンマシンを繋げたディープビリーフネットワークの近似であるので、そこらへん追えばなんとなく分かるかも)

www.hellocybernetics.tech

ちなみに量子アニーリングマシンはサンプリング装置としても非常に優秀であると見られているようで、これが人工知能・機械学習の発展の元、量子アニーリングに注目が集まっている理由であるとも言えます。

今回、非常に長くなってしまったのでこの辺で切らせていただきます。