"BOKU"のITな日常

還暦越えの文系システムエンジニアの”BOKU”は新しいことが大好きです。

量子コンピュータについて、ざっくり理解を試みた。

Googleの量子超越性の実験など、話題になることが増えてきた量子コンピュータについて、ちょっと勉強して整理してみました。

f:id:arakan_no_boku:20191111220135p:plain



スーパーコンピュータで1万年かかる計算を200秒で実行?!

 

量子コンピュータというのは「凄い」らしい(笑)です。

先日も、Googleブログにこんな記事がありました。

japan.googleblog.com

この実験について、他の記事でも

従来型の世界最速スーパーコンピューター「Summit」でも1万年かかる計算を、Googleが開発した53量子ビットを持つ量子プロセッサー「Sycamore」は、200秒で計算できた。

などと紹介されていて、とにかく、凄いらしいのはよくわかります。

でも。

量子コンピュータとはどういうものなのか?とか。

どういう理由で「従来のコンピュータより高速」なんて言い切れるのか?とか。

そもそも「量子」って何なんだ?とか。

わかったようでわからないことが多いです。

ちょっと整理してみようと思います。 

 

量子力学の「基本のキ」

 

さて。

まずは量子・・からです。 

ありがたいことに、こんなサイトがありました。

www.ryoushi-rikigaku.com

タイトルは「30分でわかる量子力学の世界」です。

やっぱ。

スタートラインはこういうところからですよ。

ということで、以後、上記の記事から学んだ内容を、かいつまんでまとめていきます。

 

量子力学」とはなにか

 

量子力学というのは、文字通り「量子の物理法則」だということです。

わざわざ「量子」専用の物理法則が必要になる理由は、「量子」というものが従来の物理法則が全く通用しない特殊な存在だから。

そもそも、「量子」というのは、そういう特殊な存在を普通の物質と区別するための呼び名らしいので、さもありなんです。

 

量子はどう「特殊な存在」なのか

 

学校で、元素の特色を失わない範囲で達し得る、最小の微粒子である「原子」というものがあり、それが「原子核」と「電子」で構成されていることは習いました。

f:id:arakan_no_boku:20191113100333p:plain

この「電子」というのは

  • 電子は「状態」しか持たない。
  • 電子は量が増えることで、全く異なる物質になりえる

みたいな特徴をもってます。 

実際、原子を構成する原子核は一つでも、「電子」の数で1つなら「水素」、2つなら「ヘリウム」、3つなら「リチウム」、4つだと「ベリリウム」とかみたいになってますから、間違いないんでしょうね。

でも、これは相当に奇妙なことです。

だって。

状態しかない・・ということは、例えば、海の「波」という「状態」があるのに、「海水(水)」という「物質」がない・・、みたいなものですから。

もうひとつ。

量が増えると全く異なる物質になる・・も、例えば「電子」を「水」とかに置き換えてみると、「水」の量が増えたら「鉄」になったり「塩」になったりするんだよ・・なんていわれてるようなものですし。

とにかく、「電子」は特殊すぎる存在なわけです。

こういう普通の物理法則を適用できない特殊な存在を「量子」と呼んで区別し、専用の物理法則である「量子力学」で扱っている。

そういうことらしいです。 

 

量子コンピューティングは「量子ビット」で情報を扱う

 

量子が「従来の物理法則を適用できない特殊な存在」であることわかりました。

今度は、それが「コンピューティング」にどう関係するか・・です。

そもそも。

従来のコンピュータの「0と1」は所詮、で電圧のあるなしなので、量子コンピュータは量子のあるなし・・で決まるのか?と思うとそうでもなさそうですし。

ここは、量子コンピューティングについて解説している以下のサイトを見てみます。

quantum.fixstars.com

これによると。

従来のコンピュータは「0または1を表すビット」を単位にしますが、量子コンピュータquantum computer)は、「量子ビット」 (quantum bit) で情報を扱うようです。

この量子ビットというのが、上記の「量子」の性質である「量が増えることで、全く異なる物質になりえる」をエミュレートしている感じです。

すなわち。

量子ビットは、複数の0や1を重ね合わせると「0でも1でもない何かに変化」するという方法で多重化を実現するわけです。

そうであるなら。

量子そのものを使ったコンピュータではなく、「量子力学」の考え方を利用したコンピュータってことなんでしょうね。

量子コンピュータは。

そう考えると。

この量子ビットの「複数の0や1を重ね合わせると、0でも1でもない何かに変化」ってのがいかにも量子っぽく、かつ、従来のコンピュータより高速であると考えられる理由でありそうに思えます。

だって、量子ビットを見て、どのように0または1が重ねあわされているのかを特定できるのであれば、超並列化がビット単位で実現されていることになるわけですから。

上記の記事だと、ここのところが

通常のビットと量子ビットの大きな違いとして、

・ビットの状態(0か1か)は確率的に決まる
・測定(出力)するまで値が確定しない
等が挙げられます。

これらの性質を「重ね合わせの原理」と呼びます。

ビットが0である状態と、1である状態とが重なって(両方の状態を同時に持って)いると解釈されます。

みたいな表現になってます。

うん。

なんとなくイメージはできます。

 

量子コンピュータには色々な実現アプローチが試みられている

 

じゃあ。

量子ビットという「普通の物理法則」の外にあるもの実現を、どんな方法でやっているのか?です。

その種類について、日経新聞に種類についてわかりやすい図があったので引用します。

f:id:arakan_no_boku:20191115201758p:plain

とりあえず、今のところは主要な方法は4つあるみたいです。

ただ、左の2つ「光ネットワーク」と「アニーリング」は、あくまで疑似的なもので制限もあります。

なので、右の2つ、「量子アニーリング方式」、「量子ゲート」の2つが主たる方法の候補になっているようで、他の記事を見ても、この2つについて解説しているものがほとんどです。

さらに。

量子アニーリングに見切りをつけ、「量子ゲート」によってきている企業が増えているようだという、こんな記事もあります。

www.itmedia.co.jp

本命は「量子ゲート」方式なんですかね。

ちなみに、今回の記事のきっかけになったGoogle量子コンピュータも「量子ゲート」方式です。

 

量子コンピュータの理論と実際の差

 

さて。

ここからが本題です。

量子コンピュータがどういう原理で動くもので、従来のコンピュータを凌駕する性能をしめす「可能性」があるのはわかりました。

でも。

0または1の状態が重ねあわされて「0でも1でもない状態」になっている量子ビット自体があまりに従来のコンピュータの考え方からかけ離れてます。

本当に。

従来のコンピュータと同様に、現実の問題を解くために利用できるのか?という疑問があります。

その観点で調べてみると、やっぱりそう単純ではなく、論理面と実際には差があるみたいなのですね。

そのへんが一番わかりやすかったのは、こちらのWikipediaの記事です。

ja.wikipedia.org

引用してみます。

まず「理論的」には

量子コンピュータは容易に古典コンピュータをエミュレートすることが可能であるため、古典コンピュータで速く解ける問題(汎用問題)は、量子コンピュータでも同程度以上に速く解くことができる。

よって汎用問題について、量子コンピュータは古典コンピュータ「以上」に強力な計算速度を持つ。

 ということになっています。

これは、いろいろな記事でもよく見かける論調です。

しかし、「現実」に目をむけてみると

古典ゲートによる小規模演算器もシミュレート出来ない。

そのため、量子ゲートマシンの利用には専用アルゴリズム開発が必ず伴う。

であって、処理能力についても

同程度は可能だとしても、「大幅に上回る」かどうかはよくわかっていない。

また、「大幅に上回る」問題の範囲についても、「より大きい」かどうかはよくわかっていない。

なんて書かれています。

なるほど・・。

ようするに「 従来のコンピューターよりも量子ゲートマシンの方が高速に解ける問題が存在する」かどうか自体が問題になっているレベルに、今はある・・みたいですね。

そして、そういう問題が存在することを「量子超越性(Quantum supremacy)」と呼んでして、その存在を、この度、Googleが証明したと発表した・・。

そういうことなんですね。

だから、この記事は大ニュースなんだ!

japan.googleblog.com

やっと、わかりました。

 

現実的な問題を高速で解決するには、時間がかかるのかな

 

Googleの発表にIBMとかがいちゃもんをつけているらしいです。

gigazine.net

ですが。

ややこしいので、一旦、Googleの発表とおり、「従来のコンピューターよりも量子ゲートマシンの方が高速に解ける問題が存在する」ことが証明された前提ですすめます。

問題は、それがどの程度の意味をもつのかです。

量子コンピュータの研究から見ると、これはものすごい出来事です。

量子コンピュータが従来のコンピュータよりも超高速で解くことができる問題があること=量子コンピュータは従来のコンピュータより高速だ!!ということが証明できたわけですから。

でも。

だからといって、従来のコンピュータで解くのに時間がかかりすぎる問題を、量子コンピュータで高速に解けることが保証されたわけではないわけです。

どうも

  • 従来のコンピュータよりも、量子コンピュータの方が高速に解ける問題が存在することを証明したこと。
  • 現実の問題で従来のコンピュータでは処理速度が不足で解決できない問題が量子コンピュータで解けること

この2つの間には、とんでもなく大きな差があるみたいなのです。

Googleの実験はこんな感じだと説明されています。

まず深さを一定にした状態で 12 ~ 53 量子ビットのランダムで単純な回路を実行しました。

その後、量子コンピューターのパフォーマンスを古典的なのシミュレーションで確認しながら、理論的なモデルと比較しました。

システムの動作確認が取れた後、53 量子ビットでランダムにより複雑な回路を作成し、古典的なシミュレーションが不可能になるまで回路の深さを増やしました。

うーん。

凄いことだということはわかりますが、やはり無理やり感があります。

自分の感覚だとこれは。

床にばらまいた米粒を全部きれいにする競争を、こちらは掃除機を使い、競争相手はピンセットで一粒ずつつままないといけないというルールで競争したら、掃除機を使った俺らの方が圧倒的に速かった・・と言っているようにすら見えますしね(笑)

まあ。

とはいえです。

何でも、未知の領域に誰かが一歩踏み込むと、急に進歩が加速するというのはよくあるので、これをきっかけに、どんどん研究が進む可能性はあります。

それでも、量子コンピュータが、現実的な問題を「とてつもない高速で解決する」状態になるのは、もう少し先なのかな・・ということは理解できました。

今回はこんなところで。

ではでは。