🎃

量子コンピュータについて理解できたことをアウトプットしていく-その1 (意気込み編)

2024/02/16に公開2

なぜ今量子コンピュータ

最近、量子コンピュータの分野に興味を持ち、独学で勉強を始めました。Googleが2029年までに実用的な量子コンピュータ(100万物理量子ビット※)を完成させると宣言しており、各企業や各国でもの凄い規模の投資が行われている模様です。ではもうすぐ実用化されるかというと、まだまだ課題はあるらしく、完成(FTQCの)については2030年ごろから2050年ごろと見解に差があるようです。ただ、量子コンピュータのハード面の開発以外にも、アルゴリズムやソフトウェア側からも不完全な量子コンピュータを活用しようという取り組みもあり、ハードの完成を待たずして徐々に実用化が始まるという見方もあるとのことです。活用の場面についても研究は進んでおり、企業や研究機関が競って実用化のテーマを探してるという状況の様です。このように、さまざまなアプローチから量子コンピュータの実用化を目指す取り組みがあり、いつ量子コンピュータが日の目を浴びるかは、誰にも分らないというのが現状だと思います。
以下はIBMが示したハード開発のロードマップであり、実用的なハードウェア(1000論理量子ビット※)の完成は2033年以降とされています。ただ、完成を待たずに実用化が始まる可能性はありそうです。

※論理量子ビットは実際に計算に使える量子ビットで、1つの論理量子ビットを作るために1000程度のの物理量子ビットが必要とされていますが、より少ない物理量子ビットから論理量子ビットを作る研究も進んでいるようです。

https://newsroom.ibm.com/2023-12-04-IBM-Debuts-Next-Generation-Quantum-Processor-IBM-Quantum-System-Two,-Extends-Roadmap-to-Advance-Era-of-Quantum-Utility

量子プログラミング難しすぎる問題

量子プログラミング自体はpythonのライブラリも公開されており、慣れ親しんだ言語で開発できるようになっています。ただ、実装には量子力学の知識がどうしても必要となり、おそらく量子プログラミングの実装を見ても、初見では何が書かれているか理解できないと思います。マイクロソフトがAzure Quantumというサービス上で動作する、Q#という言語のサンプルを公開しており、一見C#風の言語ですが、この短いコードでも書かれている内容が全く理解できませんでした。

namespace Superposition {
    @EntryPoint()
    operation MeasureOneQubit() : Result {
        // Allocate a qubit, by default it is in zero state      
        use q = Qubit();  
        // We apply a Hadamard operation H to the state
        // It now has a 50% chance of being measured 0 or 1  
        H(q);      
        // Now we measure the qubit in Z-basis.
        let result = M(q);
        // We reset the qubit before releasing it.
        Reset(q);
        // Finally, we return the result of the measurement.
        return result;
    }
}

https://learn.microsoft.com/ja-jp/azure/quantum/user-guide/program-structure

コードが複雑というよりも、実装が量子力学を前提にしているので、基本知識が無いと太刀打ちができないという状況です。
上記のコードでは、以下の処理を行っており、少し学習を始めた今は、書いてることの意図は多少わかるのですが、Hello Worldのレベルでこの難易度は少し辛いものがあります。

  • Qubit(量子ビット)を生成する
  • QubitにHadamard(アダマール)ゲートを作用させて、0と1が観測される確率を50%ずつにする
  • ブロッホ球上のz軸の値を観測し、量子ビットの値を取得する(観測すると値が決定される)

最初の壁を超えるために

数年前にディープラーニングの実用化が始まった時に、普通のPG/SEだった私がディープラーニングの実装をできるようになるまで、もの凄く苦労をしました。学生時代に数学をちゃんとやっていなかったのが原因なのですが、急に微分や行列(線形代数)の知識を要求されたからです。今度は、量子プログラミング実装のために、量子力学の知識が要求されることになります。いつか量子コンピュータの実用化は確実に始まると思われるので、過去の教訓から、今度は先んじて学習を進めておこうと考え、Studyを始めた次第です。しかし、いざ学習を始めて見ると、オイラーの公式など大学レベルの数学が(説明なく)使われていたりするので、現状は「??」が止まらない状況です。

  • オイラーの公式
    e^{i\theta} = \cos\theta + i\sin\theta

私は、ネイピア数(e)も虚数も三角関数も正直苦手であり、数学とはできれば距離を置きたいのですが、量子プログラミング習得するためには向き合っていかないといけないので、覚悟を決めて学習を進めて行きたいと思います。数学が苦手であるがゆえに、数学が苦手な人の理解の一助になればと思います。

実装に至るまでのロードマップ

今回は文章多めになってしまいましたが、次回から量子プログラミングを実装できるようになるべく、技術的なアウトプットをしていきたいと思います。最後に、今時点で想定している理解のロードマップを記します。ブロッホ球と量子ゲートの理解までが、最初の山場になる予感がしていますが、少しずつ理解を深めて行ければと思います。

ヘッドウォータース

Discussion

まっきーまっきー

メッチャかっこよ!

ブロッホ球と量子ゲートとかオイラーの公式とか、
ワクワクするキーワードだらけですねw

jemiyajemiya

数学は使わないと忘れますよね、復習しないと。。。