量子ニューラルネットワークってどんなもの?

投稿者: | 2017年11月21日

 

概要

  • 量子ニューラルネットワークなるものが一般公開されるらしい
  • 量子ニューラルネットワークについて自分なりの理解を整理

量子ニューラルネットワークの一般公開

11月27日から、量子ニューラルネットワーク(QNN)なるものが一般ユーザーに公開されるようです。
(プレスリリース:http://www.jst.go.jp/pr/announce/20171120/ )
インターネットを介してクラウド上で(しかも無償)提供されるらしいので、
恐らく、誰でも使えるのでは、と期待されます。

よくわからないけど、とりあえず無償で面白そうなものが使えるとのことで、
なんだかワクワクするニュースですね。

何がよくわからないかと言うと、「量子ニューラルネットワーク」です。
使えるのはいいけど、これは一体なに?って人が多いと思います。
正直、自分もよくわからないので、
一般公開される前に、どういうものなのかを調べてみることにしました。

量子コンピュータ

プレスリリースによると、量子ニューラルネットワークは、
量子コンピュータの一種のようです。
ところが、これまで考えられてきた量子コンピュータとはかなり毛色が違うので、
「何だ、量子コンピュータか、あれね」という理解をするのは間違ってそうです。
というより、これは量子コンピュータと言っていいのかという議論が起こっているほどです。
(参考:https://togetter.com/li/1173509

というわけで、従来の量子コンピュータとどう違うのかも含めて、
量子ニューラルネットワークの仕組みを調べていきます。

まずは、従来の量子コンピュータがどういうものか、
ごくごく簡単に整理しておきます。

量子

量子コンピュータの主役は量子です。
量子というのは、私たちが普段見ているよりもずっと小さい世界の登場人物で、
そこでは、私たちが日常で経験することとは違い、不思議な現象が起こります。

例えば、量子の重ね合わせはその不思議な現象の一つです。
日常の私たちの世界では、「はい」と「いいえ」の選択肢があり、
「はい」と答えれば、当然、「はい」と答えた後のストーリが始まります。
このとき、「いいえ」と答えていればどうなったか、
推測はできますが、実際にその場面展開がされることはありません。

ところが、量子は不思議なことに、二つの選択を同時に展開できます。
量子ちゃんAが「はい」を選ぶと、量子ちゃんBはその子を「好き」に、
量子ちゃんAが「いいえ」を選ぶと、量子ちゃんBはその子を「嫌い」になるとします。
このとき、量子ちゃんAは「はい」と「いいえ」のどちらも選んだ状態を取ることができます。
これが、量子の重ね合わせ という不思議な性質です。
そして、量子ちゃんBも「好き」と「嫌い」の重ね合わせの状態になります。

量子コンピュータは、このような量子の世界の変わった現象を使って、
今までのコンピュータにできなかった変わった計算をさせることで、
これまで解けなかった問題を解こうというものです。

量子ゲート型の量子コンピュータ

ひと昔前までは、量子コンピュータといえば、
量子ゲート型の量子コンピュータでした。

これは、量子同士の相互作用を量子ゲートと呼ばれる部品で作るというものです。
量子ゲートは、入ってきた量子達に、どんな風に影響し合うべきかを決めているもので、
そのゲートを出ていく頃には、量子は影響し合って、違う状態になって出てきます。
そして、出てきた量子は更に別のゲートに入って、更新を繰り返していきます。

このような、入力と出力で状態を変えていく方式は、
従来のコンピュータを作っている電子回路と同じような仕組みと言えます。
実際、コンピュータの核となる回路は、
ANDゲート、ORゲート、NOTゲートと呼ばれるの3種類のゲートの組み合わせで作ることができます。

ただし、従来のコンピュータでは、全体として一つの状態をゲートを通じて更新していくのに対して、
量子ゲート型の量子コンピュータでは、複数の重ね合わさった状態をゲートによって更新するので、
一度に様々な計算を行うことができ、
これを上手く使うと、従来のコンピュータよりもはるかに高速に問題を解くことができる場合があります。

量子アニーリング型の量子コンピュータ

Google が買収した D-Wave が採用しているのは、
量子アニーリング型の量子コンピュータです。

量子アニーリング型では、量子同士の相互作用はより単純なものが使われます。
この場合、量子同士の相互作用は、隣り合った量子と同じように振る舞うか、逆に振る舞うか、
どの程度同じに振る舞うのか(相互作用の強さ)で決められます。

量子同士の相互作用が順方向か逆方向か、そしてその強さがどの程度かによって、
例えば、下のような相互作用を決めることができます。

  • 隣の量子ちゃんAが「好き」だと言っているから、量子ちゃんBも「好き」だと言う
  • 隣の量子ちゃんAが「好き」だと言っているから、量子ちゃんBは逆に「嫌い」だと言う
  • 右隣の量子ちゃんAが「好き」だと言っているから、量子ちゃんBも「好き」だと言いたいけど、左隣の量子ちゃんCは「嫌い」と言っているから、そっちに合わせて、量子ちゃんBは「嫌い」だと言う

相互作用の強さを決めておくと、状態の更新が進んでいくうちに、
全体として納得のいく状態に落ち着くはずです。

そのため、相互作用の強さを解きたい問題に応じて上手く設定してあげれば、
落ち着いた状態というのは、問題に対して納得のいく答えを表してくれているはずです。

これが量子アニーリングの基本的な仕組みになっています。

この仕組みが従来のコンピュータに比べて優れているかどうかは、
まだ決定的な結果が得られているわけではなく、
むしろ、従来のコンピュータと大差ない可能性が高いようです。
(参考:https://gigazine.net/news/20140623-d-wave-first-quantum-computer/

量子ニューラルネットワーク

ここからが、本題の量子ニューラルネットワークの仕組みです。
上で見てきたように、量子コンピュータと呼ばれているものは、
量子が計算の主役になっていて、量子同士の何かしらの相互作用で計算が進む
という共通した性質がありそうです。

ということで、計算の主役は何か、
計算はどのように進めていくのかに注意して見ていくことにしましょう。

位相が主役

プレスリリースによると、どうやらパルス光を生成して、
その位相が 0 または π のどちらかによって、2つの状態を区別するようです。

つまり、計算の主役はパルス光の位相のようですね。

物性は不勉強なのでよくわかりませんが、
とりあえず、この位相は量子状態としての振る舞いをするのだと思います。

計算の基本アイデアは量子アニーリング型と似ている

次は、状態をどのように更新していくか、
つまり、計算をどう行っていくかです。

これは、量子アニーリング型と似た部分があるようです。
つまり、量子ゲートではなく、
量子同士の間の関係性の強さに応じて、
量子間の相互作用が起こるというものです。

実際の計算はFPGA!?

ところが、全パルス間で相互作用を起こす仕組みを作るのが難しかったらしく、
「測定フィードバック」なる機構を導入しています。

この測定フィードバックでは、すべてのパルスの状態を測定し、
測定結果からi番目のパルスには、他のパルスからどのような相互作用がかかるかを FPGA で計算し、
相互作用用のパルスを各パルスに足し合わせることで、パルスの状態を更新します。

平たく言えば、本来、量子同士が量子の言葉を交わして相互作用するところを、
全量子のペアについて会話の場を作るのが非常に手間がかかるので、
量子の言葉をFPGAが集めて、こういう相互作用をするはずだとFPGAが計算して、
だから次の状態はこれだとFPGAが指示する

という仕組みです。

※ FPGA とは、組み換えの可能な電子回路のことで、従来のコンピュータと同じカテゴリーです。
専用の回路を組めるので、汎用回路の上でソフトウェアを動かす普通のコンピュータに比べると、
高速な計算ができる可能性があります。
(参考:https://japan.zdnet.com/article/35093118/

量子の相互作用とは異なる?

FPGAを介して相互作用を実装していますが、
これは本来の量子同士の相互作用と同じ相互作用を再現できるのでしょうか。

これについては、下記の理由で難しいと思います。

量子状態そのものは測定できない

まず、一つ目は、量子状態そのものは測定できないという事実です。
量子に対して、測定を行うと、ある測定値を得ますが、
そこから元の量子状態を完全に知ることはできません。

FPGA は量子の状態を測定して、
相互作用を計算しますが、測定では元の量子状態が何なのか分からないはずです。

量子同士なら会話が通じますが、
量子とFPGAでは完全な会話ができないので、
情報のロスが生じるわけです。

ロスした情報を基にこういう相互作用をするはずだと計算しても、
本来の相互作用とは違うものになってしまうでしょう。

測定後の量子状態は元の量子状態ではない

二つ目は、量子の重要な性質として、
測定後の量子状態は測定前とは異なるというものです。

相互作用の前に測定を行いますが、
その時点で、量子状態は変化してしまいます。

従って、計算された相互作用だけではなく、
相互作用を加える元の状態についても本来の状態とは違う状態に変化しているはずです。

本来なら生身のAさん、Bさん、Cさんが作用するはずが、
歪められたAさん、Bさん、Cさんが作用することになります。

これでは、元の相互作用とは違ってしまい、
本当に量子としての相互作用をしているのかが分かりません。

でも計算は速くなってる

上の仕組みのように、量子としての振る舞いを本当に持っているのかが良く分からないことに加えて、
量子として振る舞っていたところで、それがどのように効いてくるのかが分からないのですが、
計算は速くなっているという結果がプレスリリースでも示されています。

この結果は、従来のコンピュータに同じ問題を解かせた時の実行結果と比べて計算が速くなったというものです。

ところが、FPGAを使っている時点で、
CPU上でプログラムを走らせるよりは計算が速くなるのは、ある意味当然で、
計算速度の向上が FPGA によるものなのか、量子効果によるものなのかは明らかにされていない印象です。

まとめ

急に使えるツールが増えたという嬉しい知らせから色々と調べてみましたが、
結果、疑問が深まるばかりでした。

おそらく、この記事で書いたくらいの疑問は既に検討されているはずなので、
明確な答えがあるのでしょうが、素人の私の理解ではこの当たりが限界です。

一般公開に合わせて、今後、より分かりやすく、
私の疑問をあっさり解消してくれる解説を待ちたいと思います。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です