派遣で働くエンジニアのスキルアップを応援するサイト

PRODUCED BY RECRUIT

初心者でもわかる量子コンピュータの計算の仕組み 【第1話】数式なしで量子コンピュータの現状を理解しよう

f:id:itstaffing:20220208091002p:plain

ここ数年、量子コンピュータに関するニュースが増えました。その度に、これまでのコンピュータはいずれ不要になるのか、量子コンピュータは実用化されたのか、量子力学を学んだほうがいいのか、など疑問や不安に思う方もいるかもしれません。

一方で、量子コンピュータに関して専門知識がなくても理解できる解説はまだまだ多くありません。そこでこの連載では、量子コンピュータ・プログラマの束野仁政さんに、できるだけわかりやすく量子コンピュータの計算の仕組みを解説いただきます。

【筆者】束野 仁政さん
量子コンピュータ・プログラマ。学生時代に数学を専攻したのち、ソフトウェア・エンジニアを経て、現在は研究機関にて量子コンピュータの仕事をしている。量子コンピュータの面白さを多くの人に広めたいと思い、雑誌記事や同人誌の執筆、勉強会での発表等を行う。著書は「Elasticsearch NEXT STEP」(インプレスR&D)。
・Twitterアカウント(https://twitter.com/snuffkin

今回のサマリ

・量子コンピュータと従来のコンピュータの違いとは
・量子コンピュータによくある誤解
      1.量子コンピュータは、あらゆる計算が速くなる?
      2.量子コンピュータが実現すれば、スーパーコンピュータは不要?
      3.量子コンピュータはすでに実用化されている?
・(コラム)量子力学がわからなくても量子コンピュータを理解するには

■免責
本連載は情報の提供のみを目的としています。
本連載の内容を実行・適用・運用したことで何が起きようとも、それは実行・適用・運用した人自身の責任であり、著者や関係者はいかなる責任も負いません。

■商標
本連載に登場するシステム名や製品名は、関係各社の商標または登録商標です。 また本書では、™、®、© などのマークは省略しています。

リクルートスタッフィング

量子コンピュータと従来のコンピュータの違いは

私たちが使っているコンピュータは20世紀に大きく発展し、普及しました。ムーアの法則が提唱されたように、コンピュータの計算能力は指数関数的に向上しました。ただし、集積回路の小型化など、物理的な限界に達しつつあります。

f:id:itstaffing:20220204103126j:plain

▲ 図1.1:ムーアの法則
(出典)「ムーアの法則」(2020年12月29日 22:02 UTCの版)Wikipedia
https://en.wikipedia.org/wiki/File:Moore%27s_Law_Transistor_Count_1970-2020.png

>> 拡大表示

一方で、コンピュータが発展するにつれ、人類が扱うデータ量は急激に増大しています。画像や動画といった大きなサイズのデータや、ビデオ会議の普及などにより、今後もデータ量が増大していくと推測されます。

f:id:itstaffing:20220204103138j:plain

▲ 図1.2:世界のトラフィックの推移及び予測(トラフィック種別)
(出典)総務省
https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/r01/html/nd112110.html

こうした中、指数関数的な計算能力の成長の候補となるのが量子コンピュータ(quantum computer)です。ここでは、量子コンピュータを区別するため、従来のコンピュータを古典コンピュータ(classical computer)といいますが、ネガティブな意味はありません。

まずは、量子コンピュータと古典コンピュータの違いについてみていきましょう。

私たちが普段使っている古典コンピュータの情報の単位はビット(bit)です。量子コンピュータのビットと区別するため、本連載では古典ビット(classical bit)といいます。1古典ビットは0または1で、2種類の情報を表せます。2古典ビットであれば00,01,10,11の4通りの情報を表せます。このように、n古典ビットでは2n通りの情報を表せます。ただし、古典ビットがいくつあっても、同時に持てる値は1通りです。また、古典ビットは、同じ操作を行えば毎回同じ結果を得ることができます。

一方、量子コンピュータの情報の単位は量子ビット(quantum bit, qubit)といいます。1量子ビットは |0⟩ または |1⟩ という記号を使い、2種類の情報を表せます。2量子ビットであれば |00⟩ , |01⟩ , |10⟩ , |11⟩ の4通りの情報を表せます。n量子ビットの情報は2n通りの情報を表せます。ここまでは、古典ビットも量子ビットも同じです。

しかし、量子ビットは古典ビットとは違った性質を持っています。実は、n量子ビットは2n通りの情報を同時に持てます。また、量子ビットを測定した結果は確率的に決定され、量子ビットの状態も変わってしまいます。同じ操作をしても |0⟩ が返ってきたり、 |1⟩ が返ってきます。

ただし、2n通りの情報を同時に持てても、測定で取り出せる情報は1通りです。古典コンピュータの並列計算は同時に複数の計算を行って複数の結果を取り出せるため、量子コンピュータの計算とはイメージが異なります。したがって、量子コンピュータで普通に計算しても高速にはなりません。量子コンピュータを効果的に使うにはアルゴリズムの工夫が必要になります。量子コンピュータ用のアルゴリズムを量子アルゴリズム(quantum algorithm)といいます。

古典ビットと量子ビットの特徴をまとめると、表のようになります。

▼ 表:古典ビットと量子ビットの特徴

f:id:itstaffing:20220210162824j:plain
f:id:itstaffing:20220204103146j:plain

▲ 図1.3:古典ビット、量子ビットが同時に持てる値

n量子ビットで表せる情報の種類が2n通りであるため、数式としては2n次元ベクトル*1で表せます。量子コンピュータによる計算は、n量子ビットの情報(2n次元ベクトル)を別のn量子ビットの情報(2n次元ベクトル)に変換する処理であるため、2n×2n次行列で表せます。もう少し正確にいうと、量子コンピュータで計算できる形には制約があるため、ユニタリ行列(unitary matrix)という種類の行列になります。ユニタリ行列は、ベクトルにかけても長さを変えない行列です。このユニタリ行列を計算すれば、古典コンピュータで量子コンピュータをシミュレーションできます。

f:id:itstaffing:20220204103155j:plain

▲ 図1.4:ベクトルxにユニタリ行列Uをかけても、ベクトルの長さは変わらない(xの長さ=Uxの長さ)

ただし、行列のサイズが量子ビット数に対して指数関数(=2n)になるため、量子ビット数が増えると行列の計算時間やメモリ使用量も指数関数で増加します。そのため、古典コンピュータによるシミュレーションは量子ビット数が増えてくると、現実的に困難になります。

*1 プログラミングとしては2n次元配列のイメージ

一方、量子コンピュータは量子ビット数が増えても、計算時間への影響は少ないです。そのため、量子コンピュータは指数関数的に巨大なユニタリ行列を高速に計算できます。

量子コンピュータによくある誤解

量子コンピュータの研究が急速に発展しており、興味を持つ方も増え、期待が高まっているのを感じます。一方で、誤解されていると思われる話題も増えています。ここでは、量子コンピュータによくある誤解と実際の性能について説明します。

1.量子コンピュータは、あらゆる計算が速くなる
先述のように、量子コンピュータはユニタリ行列の計算を高速に行えます。しかし、あらゆる計算が速くなる訳ではありません。同時に持てる値は複数ですが得られる結果は1通りだけですので、並列計算で複数の計算結果を得るイメージとは異なります。そのため、量子コンピュータ用に工夫したアルゴリズムが発見された計算のみが高速化できます。

2.量子コンピュータが実現すれば、スーパーコンピュータは不要
2019年に「スーパーコンピュータで1万年かかる見込みの計算を、量子コンピュータで 200秒で計算した」という論文をGoogleが発表しました。このニュースが広まると共に、「量子コンピュータはスーパーコンピュータより圧倒的に速い」という誤解も広まったように思います。

この論文で計算したのは「量子コンピュータが得意な問題」です。量子コンピュータの実機で高速に計算できる問題が存在することを示すために、あえてこのような問題設定にしましたが、実用的な問題ではありません。そのため、実用的な問題は、現状ではスーパーコンピュータの方が速く解けます。それどころか、スーパーコンピュータで解くような大きな問題を現在の量子コンピュータで実行しても、正しい答えに辿り着けないでしょう。

量子コンピュータで高速化できるのは、量子アルゴリズムが発見されている問題だけです。したがって、量子コンピュータが実用化されても、特定の問題を高速に計算できるアクセラレータとして使われ、スーパーコンピュータと量子コンピュータは共存することになるはずです。

3.量子コンピュータはすでに実用化されている
「実用化」を「生活などに役立つ計算に使われ、古典コンピュータより高速に計算できる」と捉えた場合、量子コンピュータはまだ実用化していません。一方、量子コンピュータの実機はクラウドで公開されており、本連載でも利用します。また、利用料が必要となる量子コンピュータもあるため、商用化しているといえるかもれません。この状況が誤解を招きやすくなっています。

現在の量子コンピュータの性能を航空機でたとえると、ライト兄弟の初飛行の段階です。確かに実機は存在して動いていますが、大勢乗せる(大量の量子ビットを扱う)ことはできませんし、安全に長時間飛ぶ(正確に長時間計算する)こともできません。実用化にはまだ時間がかかる状態です。

では、実用的な計算に必要な量子ビット数の量子コンピュータはいつ頃できるでしょうか。正確な予測は難しいですが、私の予測ではよっぽどのことがない限り、5年や10年くらいで実用化する可能性は非常に低いと考えています。

ただし、話題性やアクセス数を求めるために、煽るような表現や不当に貶めるような情報もインターネットには溢れています。そういった情報に振り回されることなく、冷静に学びたいですね。

今回のコラムはここまでです。次回は、高校レベルの行列と確率を使い、量子コンピュータの計算の仕組みを説明します。数式は登場しますが、できるだけ平易に説明します。
次回もお楽しみに。

(コラム)量子力学がわからなくても量子コンピュータを理解するには

本連載を読まれる方は、量子コンピュータに期待を持ち、学びたいと考えている方でしょう。なかには、すでに量子コンピュータの勉強をはじめており、「量子コンピュータの本を読んだけれど理解できなかった」という方もいらっしゃるかと思います。また、量子コンピュータそのものではなく、量子力学の理解でつまずいてしまう方も少なくないかもしれません。

本連載は量子コンピュータについて説明していますが、量子力学の知識が必要な説明は行いません。実証されている科学(量子力学)の結果を信じ、そういうルールだと割り切る前提で進めます。

たとえば、半導体が物理学レベルでどう動作しているのか理解していなくても、「普通の人」が「使う立場」でパソコンやスマートフォンなどの古典コンピュータを使いこなしています。そのため、量子力学の詳細を理解していなくても、使い方のルールがわかれば使いこなせると考えています。「普通の人」が「使う立場」で学ぶのであれば、難しく考えずにそういうルールだと受け入れ、どんどん使って慣れるのが早いでしょう。

このような理由により、本連載では量子力学固有の専門用語は使用せず、行列と確率を使って量子コンピュータをわかりやすく解説します。また、理解を定着させるために、実際に手を動かして計算することを重視しています。ルールに沿って実際に手を動かして慣れましょう。

▼これまでの「初心者でもわかる量子コンピュータの計算の仕組み」
【第1話】数式なしで量子コンピュータの現状を理解しよう
【第2話】量子コンピュータで使用する計算の土台を学ぼう
【第3話】量子コンピュータの基本のルールを学ぼう
【第4話】基本の量子ゲートと量子回路をおさえよう
【第5話】量子プログラミングをやってみよう
【最終話】現在の量子コンピュータの限界とこれから

束野仁政さんの著書『量子コンピュータの頭の中――計算しながら理解する量子アルゴリズムの世界(技術評論社)』もあわせてご覧ください。(2023年7月追記)

リクルートスタッフィング