top of page
Quemix image.jpg

BLOG

量子コンピュータとは?

量子コンピュータは、物質を構成する原子や電子などの「量子」の持つ性質を利用して情報処理を行うコンピュータである。将来的に、ある特定の問題に対して、スーパーコンピュータでも膨大な時間のかかる計算を、はるかに短い時間で計算できるようになると期待されている。

IN THE FIRST PLACE

古典(従来型)コンピュータでのビット

コンピュータでは、全ての情報処理は0と1の数字列(ビット(bit)列と言う)として行なわれている。ちなみに、古典コンピュータ上でのビットとしては磁気材料や半導体材料が使われており、磁気材料では磁気モーメント(小さな磁石と思ってもらって良い)が、上を向いているか下を向いているかを0や1に対応付けする。半導体材料としてはMONOS型メモリなどが代表例であるが、電子がある微小空間内にあるかなしかを0や1に対応付けする。

このようにして、各ビットには0か1 かのどちらか確定した値が保存されることになる。0を保存したはずなのに、データを取り出してみると1になっていたりしたらそれはエラーなのである。実際には、保存したデータをどれだけの期間正しく保存し続けられるかは、そのメモリ材料の特性に寄っている。

さて、古典bitの0か1かの状態を表す記号として|0>とか|1>と言う記号を後の量子力学との対応からここで導入しておく。もう一度、古典の1 bitは |0>状態か|1>状態のどちらの状態を取る。

量子コンピュータでのビットと量子重ね合わせ状態

ここから量子コンピュータのビットに話を移す。量子コンピュータのビットはquantum bitから qubit(キュービット)と呼ばれる。まずは、1qubitの場合から話を進めていくことにする。Qubitの場合も、古典bitと同じく各ビットを測定すると必ず|0>状態か|1>状態が観測される。|0.5>状態と か|1.1>状態なんてものが観測されることはない。必ず|0>か|1>かのどちらかなのである。しかし、qubitが古典bitと決定的に異なるのは、量子力学に支配された状態を取ることができ、量子重ね合わせ状態と言う不思議な状態を取ることができると言う点である。量子重ね合わせ状態とはどう言うものかは別の解説記事でも詳しく説明するが、ここでは数学的に「以下のような状態を量子力学の世界では取ることが出来る」とだけ説明する。一般に、qubitは α0|0>+α1|1> (α0やα1 は複素数係数)といった状態、|0>状態と|1>状態が混ぜ合わされた状態(これを量子重ね合わせ 状態と呼ぶ)、を取ることが出来る。つまり、|0>状態と|1>状態がミックスされた状態が一般に量子力学の世界では許されるのである。では、ここでα0とは何か?繰り返しになるが、 α0|0>+α1|1> と言う状態でも観測すると、|0>状態か |1>状態のどちらかなのである。|0>状態と |1>状態の中間の |0.5>状態が観測される訳ではない。

では、α0やα1の物理的意味は何なのか?それは、|α0|^2 と言う確率で|0>状態が観測され、|α1|^2 と言う確率で|1>状態が観測される、と言う物理的な意味を持っている。ちなみに、「必ず」|0>状態か|1>状態のどちらかの状態が測定されるので、|α0|^2+|α1|^2=1 と言う条件が課されている(正規化条件)。ちなみに、例えば、 α0=1 α1=0 の状態の1 qubit状態を用意する(つまり、|0>状態)と、何度測定を繰り返しても|0>状態が観測される。これは古典bitの|0>状態と何ら変わらない状態である。一方で、α0=0 α1=1 の状態の1 qubit状態を用意する(つまり、|1>状態)と、何度測定を繰り返しても|1>状態が観測される。これは古典bitの|1>状態と何ら変わらない状態である。ではもう1つの例である、α0=1/√2, α1=1/√2 の状態の1 qubit状態を用意する(つまり、1/√2(|0>+|1>) 状態)と、測定をすると50%の確率で|0>状態が、50%の確率で|1>状態が観測される。これはqubitメモリが壊れて不具合を起こしている訳ではない。本質的に量子力学的状態というものはそういう状態なのである。そんなあやふや(?)な状態の何が嬉しいのか?それは、後々分かってくる。

また、少し余談になるが、ここで 1/√2(|0>+|1>) 状態というのは、「真に」|0>状態と|1>状 態が現れる確率が半々であり、「誰も」ある一回の測定でどちらの状態が出現するかは、事前に予測することができない状態になっている。通常、「0か1かランダムに出現する」と我々が言った時には、我々の無知さが故に、または正確に予測するにはあまりにも複雑過ぎるが故に、ラン ダムに”見える”という意味合いが入る時が多いのだが、ここでの「1/√2(|0>+|1>) 状態を観測 する時には、|0>状態と|1>状態が半々の確率で測定される」という確率は、「真の」確率であり、人類の無知さに由来しない、自然現象自体に確率的要素が含まれていることを意味している。

さて、長々と書いてきたが、量子コンピュータを理解するには、この係数 α0やα1 の存在を理解する必要がある。そして、この係数α0やα1 の存在を認めると、量子コンピュータのとんでもないご利益が見えてくるようになるのである。とりあえず、まずは1qubit状態では、一般に α0|0>+α1|1> (α0やα1は複素数係数)と言う重ね合わせ状態を取っており、係数の α0やα1 は、それぞれの状態を観測する確率と言う意味を持っていることを知っていてほしい。

LOGIC

量子ビット状態はなぜ莫大なメモリを持てたのか?

その本質にある量子もつれ状態とは。

​さて、ここまで読んでいただいた方の中には、狐につままれたような妙な気持ちになっている方もいると思う。どうして、古典ビットと量子ビットはここまで異なるメモリを持つことになったのか。その気持ち悪さの原因は、量子もつれ状態という古典ビットの際にはなかった状態を量子ビットはうまく使っていることに由来する。少しアドバンストな内容になるが、以下では量子もつれ状態とは何か?を説明する。ここでは、話を簡単にするために、2量子ビットの時の話をする。

今、2量子ビットで次の様な状況を考えてみよう:1/√2(|01>+|10>) 状態。この状態、どのような状態かはお分かりだろう?50%の確率で|01>が50%の確率で|10>が観測される様な状態である。この2量子ビット状態を実際に測定した場合、左の量子ビットだけを単独で考えると、50%で|0>、50%で|1>を測定する。右の量子ビットだけを考えてみても同じである。50%で|0> 、50%で|1>を測定する。左右単独で考えると|0>も|1>も等確率で現れる、いわゆるバラバラ、 またはランダムな状態の様に見える。

しかし、それぞれの量子ビット単独に注目するとランダムに見えるのだが、実は左右の量子ビットを両方考えた際の測定結果は実はランダムにはなっていないのだ。互いに相関、または協調(?)し合っており、|01>か|10>かのどちらかにしか なっていない、という状態になっている。ランダムに見えて、ちゃんと見てみると、|00>や|11>といった状態は出現しないのである。

 

つまり、左の量子ビットで何が測定されたかの結果が、右の量子ビットにも影響を及ぼしており、左の量子ビットの測定結果が、右の量子ビット状態を確定させるという状況になっている。またはその逆もしかりで、右量子ビットで測定した結果が、左量子ビットの状態に影響するという事態になっています。この様な状態を「量子もつれ状態」と呼ぶ。2つの量子ビットが互いに”独立ではなく”、お互いに相関し合いながら存在している状況になっているのである。これは古典ビットからすると異常な現象である。左のビットが測定される、一方で、右のビットは左のビットがなんであれ関係なし。左のビットの測定結果に右のビットが影響を受けることはないのだ。

もちろん、実デバイスでは左のビットの読み出しを行う際の電場や磁場が右のビットにも外乱として影響を及ぼす(クロスタームと呼ばれる)一種のエラーはあるが、あくまでそれはエラーであり、起こるべきではない現象で、誤作動であり、全く別の話になる。量子ビットメモリには、上のような古典ビットではあり得ない、量子もつれ状態を考慮することにより、2^Nという高い自由度を獲得したと言えるのである。

 

ちなみに、余談だが、上で書いた「左右単独で考えると|0>も|1>も等確率で現れる」状態ということから、左量子ビット状態が 1/√2(|0> 左+|1>左) 状態で、右量子ビット状態も 1/√2(|0>右+|1>右) 状態という状態なんじゃないか?と思われるかもしれないが、そうではない。 1/√2(|0>左+|1>左) 1/√2(|0>右+|1>右) = 1/2( |00>+|01>+|10>+|11>)となり、1/√2(|01>+|10>) 状態とは異なる。 1/√2(|0>左+|1>左) 1/√2(|0> 右+|1>右) 状態というのは、左右の量子ビットがそれぞれ”独立に”量子重ね合わせ状態を取っている状態であり、この状態は量子もつれ状態とは言わない。現に、この状態は、単にランダムになっているだけで、|00>状態や|11>状態が発生している事がわかる。

​量子化学計算におけるメモリ爆発問題と量子ビットの有効性

​今のコンピュータでメモリ容量の少なさで苦しんでいる分野に量子化学計算分野が挙げられる。量子化学計算は、最近マテリアルズインフォマティクス(MIと略されることも多い)の潮流もあり、大きく注目されている。これは実際の実験で物質を合成する前に、その物質がどの様な性質や特性を持っているかをあらかじめコンピュータシミュレーション上で予言しようというものである。これによって、新物質開発を効率化し加速しようというのが量子化学計算である。

物質の構成要素は、原子核と電子であり、原子核も電子も量子力学に従って振る舞っているのである。それであれば、量子力学をコンピュータ上でシミュレーションすれば物質の特性を予言する事ができるのである。量子力学に立脚し、実験値を用いないでシミュレーションすることを第一原理計算と呼ぶ。第一原理計算で解くべき方程式は既に知られており、シュレーディンガー方程式と呼ば れている式になる。原理的には、シュレーディンガー方程式を解けば、どんな物質科学の問題も予言する事ができるのである。

 

さて、シュレーディンガー方程式において、現れる波動関数なるものがある。この波動関数が実は曲者の1つになっている。電子はフェルミ粒子と言い、パウリの排他律に従う。パウリの排他律では、1つの状態を電子2つが占有することは禁じられている。今、Norb個の状態があったとする。すると、各状態に電子が占有しているorしていないの2通りがあり、2^Norb個の状態数がとり得る電子配置になっている。通常、小さな分子を考えてさえも Norb=50 程度は必要である。問題はNorbに対して、指数関数で効いてくる点である。あっという間にメモリを圧迫することは想像に易い。Norbが大きくなるに従い、指数関数的なメモリが必要になる。これが、量子化学計算において、苦しめられている問題となってくる。一方で、これを量子コンピュータ上で計算を行うと、Norb個程度の量子ビットがあれば解決されることになる。詳しくは、量子コンピュータを用いた量子化学計算の解説記事で説明する。

STRUCTURE

NEXT

量子コンピュータはメモリが凄い!

1古典bitと1qubitを比べてみても実は大して面白くはない。ところが、3ビット同士を比べると、少しずつその異常さが垣間見えてくる。それでは、ここから3ビット同士で古典bitとqubitsの場合で比較を行っていく。まずは、古典ビットの時から話を進めて行く。古典ビットのそれぞれのビットは|0>か|1>かのどちらかの状態を取るので、3古典bitの状態は|000>, |001>, |010>, |011>, |100>, |101>, |110>, |111>の8つの状態のどれかの状態の「1つ」を確定した状態として取ることになる。ここで、3つの数字の並びは3つの古典bitに対して、順番付けをして並べたものである。例えば、|000>状態は3つの古典bit全てが|0>の状態を取っている状態。|001>状態は、3つの古典ビットのうち一番右端のbitには|1>状態であり他2つのbitは|0>状態となっている状態、のことである。いずれにしても3古典ビット状態は上の8つの状態のうちの”ただ1つ”の状態を確定した状態として取る。何度測定をしても、同じ状態を繰り返し、返し続けることになる。

 

では、3量子ビットではどうだろうか?状況が一変することをこれから説明する。3量子ビット状態では、1qubitの時と同じく、量子ビット状態では一般に重ね合わせ状態を取ることになる。3量子ビット状態では、|000>, |001>, |010>, |011>, |100>, |101>, |110>, |111>の8つの状態の重ね合わせ状態を取ることが出来るのだ。

つまり、α000|000> + α001|001> + α010|010> + α011|011> + α100|100> + α101|101> + α110|110> + α111|111> という様に、観測され得る異なる状態全ての重ね合わせ状態を取ることが出来る。ここで、係数 |α000|^2 の意味は|000>状態が測定される確率、|α001|^2 は|001>状態が測定される確率...を表している。また、8つの状態以外の状態が観測されることはないので、|α000|^2+ |α001|^2+ |α010|^2+....+ |α111|^2=1という関係が成立する(規格化条件)。

 

さて、古典ビットの際には、ケット記号(|と>のペアのこと)で挟まれた3つの数字列(ビット列)の並びを制御して計算などを進めていくことになる。だが、量子コンピュータでは、全く考え方が異なる。ケット記号の中の数字列はいじらない。その前にかかっている係数 (α000やα001など)をいじっていくことになる。なぜか?そうすることによって、莫大な自由度が手に入るからである。今の3qubitsの場合、任意にいじれる8個の自由度(正確には規格化条件があるので、若干の制約が入るが...) が手に入ることを意味する。古典bitでは、ケット記号の中の数字列を何にするか?という形で、 計算を進めていくことになる。一方で、量子コンピュータでは、ケット記号の中身をいじるのではな く、その前にかかっている係数をいじることになる。その方が、莫大な自由度が手に入るからである。もう少し具体的な例を用いた、両者の違いの例示は、この後の一般化の後で示す。そちらをみてもらうと、より強く違いを実感してもらうことができるだろう。

​上の議論を一般化する。つまり、Nビットのケースで、古典bitとqubitsで比較を行う。N古典bitの時には、話は簡単である。|0...00>, |0...01>, ..., |1...11> の2^N個の状態の内のどれか1つの状態を確定した状態として持つことになる。一方で、量子ビットの場合には、大きく話が異なる。N個 のqubitsの場合は、|0...00>, |0...01>, ..., |1...11> の2^N個の状態の重ね合わせ状態を一般に取ることができる。つまり、α_{0...00} | 0...00> + α_{0...01} | 0...01> + ...+ α_{1...11} | 1...11> という状態を取る。ここで、|α_{0...00}|^2は|0...00>状態が観測される確率、|α_{0...01}|^2は|0...01> 状態が観測される確率...と言った具合である。N個の古典bitでは、ケット記号の中の数字列を何にするか?という形で、計算を進めていくことになる。一方で、量子コンピュータでは、ケット記号の中身をいじるのではなく、その前にかかっている係数をいじることになる。その方が、2^N という莫大な自由度が手に入るからである。係数に自由に数字を代入することにより、2^N個の情報をインプットできるメモリを手に入れることができる。

POWERFUL

01. 3ビット状態の時を例に

02. Nビット状態の時の一般化

03. 非自明な例

​さて、ここでは1つの非自明な例を示しながら、古典ビットと量子ビットのもつメモリ量の質的な違いを実感してもらう。ここで示すのは、MNISTの手書き数字文字の例である。この手書き数字文字は28×28=784画素データの白黒画像である。このMNIST数字手書き文字をメモリ上に保存することを考える。この白黒画像データの各画素の色を白を0、黒を1に対応付けることによって784画素の画像データは784ビット列として784古典ビット上に等価な情報として保存することができる。

一方で、このMNIST手書き数字文字を量子ビット上に保存することを考える。何qubits必要だろうか?実は、10qubitで良いことが分かる。どうしてか?10量子ビットには、2^10=1024個の 自由があるからである。実際に、10量子ビットを考えた時、量子ビットの状態は|0...0>, ..., |1...1>の1024個の重ね合わせ状態で表されることになる。

つまり、1024個の係数があり、規格化条件は後で考慮するとして、係数{α}に順番にMNIST手書き数字文字のビット列を入れていくことを考えると、1024個のビット列を収容出来るマス目があるので、十分に10量子ビット上にデータを保存することが出来ることがわかる。このように、古典bitでは784ビット必要だったもの が、量子ビットだと10ビットで足りるようになるのだ。これは量子重ね合わせ状態に由来する 2^Nという指数関数的なメモリ容量の増加に由来している。量子ビットには、その後ろに古典ビットでは想像もつかない莫大なメモリを隠し持っていることを理解していただきたい。実際に、今のコンピュータでは計算スピードそのものよりも、メモリが足りない事がもっと深刻なケースも多いのだ。または、巨大なスーパーコンピュータ上に、メモリを分散させて保存したとしても、今度はデータ通信自体に莫大な時間がかかってしまっているケースも少なくない。

 

今のコンピュータで抱える問題は、計算時間以外にもメモリ不足という問題があり、量子コンピュー タではメモリ不足の問題も解決し得るということを理解していただきたい。メモリ不足が深刻な問題の一例として、量子化学計算が挙げられる。解説記事の最後に、量子化学計算でどうしてメモリ不足がそこまで深刻なのかを説明する。量子化学計算に興味のない方はスルーしてもらって問題ない。

何故量子コンピュータはこんなにも強力なのか?

その2つの理由とは。

2019年10月にGoogleから量子超越のニュースが世界中を駆け巡った。今のスーパーコンピュータをもってしても1万年かかる計算を、量子コンピュータはわずか200秒で解いてしまったというニュースである。このニュースは量子コンピュータという次世代のコンピュータが実現しつつあることを意味している。高度情報化社会の今、コンピュータなしに社会生活を過ごすことは不可能と言っても過言ではない。今以上に計算能力の高いコンピュータが出現すると、今のコンピュータシステムでは導くことのできなかった様々な最適解を導き出し、様々な社会問題が解決されると期待されている。実は、今のコンピュータでは処理しきれない複雑に絡み合った課題が山積しているのである。

まず、今回の解説記事では、量子コンピュータはどうしてそんなに強力な計算能力を持つのか?を説明していく。大きく分けて2つの点で量子コンピュータは凄いのである。その2点というのは、指数関数的なメモリと超並列アルゴリズムである。以下では、それぞれがどう凄いのかを説明していく。

REASON

bottom of page