かき氷が食べたい。

機械学習、人工知能、python

量子コンピュータ×人工知能でなにが起きるのかを知って本気でプログラミングの勉強しようってなった話(前編)

初めまして。

きつねと申します(ᵔᴥᵔ)

以後お見知り置きを

 

※追記(1/24)

たくさんのブクマありがとうございます!後編はこちらになります。↓

www.python-deeplearning.com

 

先日「量子コンピュータが人工知能を加速する」を読みました。

 

まずこれを読んだ直後というかむしろ読んでいる途中に感じたことなのですが、

 

とてもとてもワクワクしました。

 

本の内容はタイトルの通り量子コンピュータが人工知能を加速させるだろうという未来予測的(?)な内容なのですが、ここに書かれている未来を想像するとドキドキが止まらなくなります。未来予測というとなんだか胡散臭い内容なのかな?と思われるかもしれないですが、自動運転自動車や医療、ヘルスケアなどすでに人工知能が働いている分野でさらなる飛躍が起こるはずだという話なので特に何かを誇張しているとかではないと思います。

 

東京工業大学の西森教授と東北大学の大関教授という方の共同著作で、量子力学について全く知識がない僕でもわかるように丁寧に解説してくださっているので本当に量子コンピュータとか、人工知能に少しでも興味がある方にはオススメです!どっちも興味があるって人は絶対読んでください笑

 

以下、個人的に気になったところをピックアップして感想を書いていきます。

 

「1億倍速い」コンピュータの誕生

まずは初めはD-waveというベンチャー企業が開発し、すでに商用化されている量子コンピュータの紹介とそのコンピュータの性質の説明がされています。

 

従来のコンピュータに比べて一億倍速いというのは、単純に性能が1億倍ということではなく、「巡回セールスマン問題」などに代表される組み合わせ最適化問題にだけに限り1億倍早く問題を解くことができるという意味だそうです。

 

一億倍と言われても凄すぎてどれだけ速いんだ??という感じですが、簡単に電卓で計算してみると、

f:id:neo_fox:20170115141702p:plain

これはすごいですね〜笑

簡単にいうと従来のコンピュータで3年かかるものが一秒で済むということです笑

 

別の方向から考えると、従来のコンピュータで10億年かかるものが10年あれば計算できるということでしょうか。たぶんここで紹介されているD-waveの量子コンピュータだと今のところ長時間稼働することは不可能らしいので後者の計算には意味がないかもしれません。が、もし完全な量子コンピュータが完成すると今まで人間の力では到底解くことができなかった問題も解けるようになるということですね〜

 

量子アニーリングとは?

第2章では第1章に引き続き、D-waveによって開発された量子コンピュータの特性と北米でのそれに対する反応が書かれています。

 

ファインマンによって構想された量子コンピュータは世界に衝撃を与え、世界中の科学者たちが量子コンピュータの実現を目指し研究している中、突然現れたカナダ人の学生によっていきなり商用化までできるクオリティの量子コンピュータが発表されてしまったという話でした。

 

量子アニーリング方式とは、量子ゲート方式と比較して用いられている用語でここでは詳しくは説明しませんが、量子ゲート方式による量子コンピュータが科学者たちが想像する理想的な量子コンピュータだとすると、量子アニーリング方式は誰も考えもしなかった全く別のアプローチだったようです。

 

実際、現状では量子アニーリング方式の量子コンピュータは不完全性で問題点もあるようですし、そりゃあずっとその研究に生涯を捧げてきた科学者たちからしてみれば初めは簡単に受け入れられなくても仕方ないと思います。しかし、著者はたとえ不完全なマシン出会ったとしても従来のコンピュータよりも格段に速いことは事実であるし、最適解でなくてもより良い近似解を素早く求めることに価値があると言っています。

 

個人的にはこういうところが理学と工学の本質的な違いなんでしょうけど、ここを完全に分断してしまっているところが今の日本の大学教育の悪い習慣だと思っています。

 

自然の力をかりて問題を解く??

第3章になってようやく人工知能が出てきました笑

 

その前に最適化問題の解き方について触れておきたいと思います。

 

最適化問題の解き方について簡単に説明すると従来コンピュータなら全ての組み合わせを考え一つ一つしらみ潰しに計算し最適解を求めるのに対し、

 

(僕の理解が正しければ)量子アニーリング方式では量子ビットを対象となるものに対応させて、0と1両方の状態を持っている量子ビットにかけている横磁場をゼロにすると同時に量子ビット間に相互作用をこちらから与えることで低いエネルギーを勝手に探してくれるようです。

 

ちょっと何を言ってるのかわからないと思うので、イメージでいうと山に雨が降った時に、初めは川に流れたり小さな水溜りを作ったりしますが、最終的に一つの大きな湖に水が集まってくる。そんなイメージです。

 

これは計算してると言えるのか?という疑問はありますが、実際に解は求まるんだからそれでいいじゃないですか笑

 

人間の力の限界を知り、自然の力を借りて問題を解く。それこそがファインマンの構想そのものなのではないでしょうか?

 

 

量子コンピュータ×人工知能でなにが起きるのか

ここでようやく人工知能の話に入ります。

 

どうやらこの本自体は量子コンピュータの方がメインで人工知能というキーワードを入れて最近の人工知能ブームに乗っかってみた、という印象を若干受けますが書いてあることそのものはものすごく興味をそそられることばかりですので一つずつ紹介していきたいと思います。

 

まずここで主張されているのは機械学習においても、組み合わせ最適問題を解かなければいけないことがあり、それが今までではできなかったことが量子コンピュータを使えば可能になるということです。

 

まず、はじめに知っておいて欲しいのは最近流行っている人工知能とか機械学習だとかいうのはこの本でも言っているように「教師なき学習」の方だということです。

 

「教師あり学習」「教師なき学習」というのは、前者が例題と解答を事前に学習させておくことで他の問題を解けるようになるというようなもので、画像を見て犬なのか猫なのか判断するとかいうことをできるようになります。

 

それに対し後者はビックデータを見て、人間が考えることと同じことを人工知能が考えることを指します。具体例を挙げると、このデータとこのデータはここが似ている。など、データの規則性を自分で見つけて分類することが人工知能によって可能なのです。これを「クラスタリング」と言います。

 

そして「クラスタリング」には組み合わせ最適化問題が利用されています。クラスタリングの対象となる要素を増やせば増やすほどその組み合わせ最適化問題を解くことが困難になるのは当たり前で、従来のコンピュータではすぐに限界を迎えてしまうのですが、もし量子コンピュータ使えればその限界を軽々と突破することを可能になることは間違いないでしょう。

 

正直僕もまだまだ勉強不足で詳しいことはわからないのでもっと詳しく知りたい方は

qiita.com

こちらの記事が実際にpythonを使ってその概要を説明してくれているのでオススメです。

 

 

ニューラルネットワークの話とかまだ書きたいことがあるのですが、ちょっと長くなったので続きは後編で書くことにします。

 

ではまた(ᵔᴥᵔ)