見出し画像

量子コンピュータの勉強法についてわかってきたこと2

あれから1年が経ちました

一年前は「量子コンピュータ」という言葉をバズワードだと言ってますが、今の自分にとってはとても大切な存在です。量子コンピュータの難しさと面白さがそこそこわかってきました。

最初に、僕がこれまでの1年間でどのような勉強をしてきたのかをざっくりと振り返ります。続いて具体的な勉強法について考えて、最後に1年前の自分に言いたいアドバイスをまとめます。

今回はネット上で公開されている資料を多めにまとめたので参考にしていただけたら幸いです。

1年間何をしていたか

上の記事を書いたあと、大学のサークルで新入生向けに量子コンピュータの入門記事を書いたり、友達と量子情報の勉強会を始めたりしました。今は2つの勉強会が進行中で、

を読んでいます。1つ目の本はNielsen-ChuangとかQCQIと呼ばれていて、量子コンピュータ・量子情報界のバイブル的存在です。2つ目の本は日本語で書かれた量子情報の本で、日本を代表する量子情報の先生方が書かれています。

勉強会では量子情報の理論を中心に勉強しています。量子コンピュータとは全く関係がない分野も含まれていますが、量子情報という分野そのものもめちゃくちゃ面白いです。独学で使っている本として、

があります。

結局何をすべきなのか

量子コンピュータの勉強について大きく分けると次の二手に分かれると思います。

  1. 量子コンピュータの理論を勉強したい

  2. 量子コンピュータの使い方を勉強したい

それぞれについて何をすべきなのか考えてみました。

量子コンピュータの理論を勉強したい

量子コンピュータの実機がいろいろでてきて、量子ビット数もどんどん増えてきていますが実用的に使うためにはあと10年くらいはかかるんじゃないでしょうか?
なので、今は研究者でなくても量子コンピュータの理論を勉強することに意味があると思います。

まずは前提知識として

  • 線形代数

    • 複素ベクトル、ユニタリ、エルミートなど

    • 行列の計算

    • 線形作用素の理論の基礎

  • 古典計算理論の基礎

    • 回路モデルでの計算可能性

    • Church-Turingの提唱

  • 量子力学の基礎

    • 量子状態とその表現

    • 合成系の表現

などを知っていると良いと思います。Nielsen-Chuangには全部書いてありますが。(線形作用素については手薄ですが、量子情報に深入りしない限りは必要ないので大丈夫だと思います。)

量子コンピュータの理論として基礎的で重要なトピックは

  • 量子ビット、量子ゲート、測定などの基本要素

  • 量子ゲートのユニバーサリティ(任意のユニタリ変換を任意の精度で近似可能)

  • 量子位相推定、量子フーリエ変換、振幅増幅などのサブルーチン

  • 基本的な量子アルゴリズムと複雑性理論

  • 開放系の量子力学とノイズの定量化

  • トレース距離やフェデリティなどを使ったエラーの定量化

  • 量子エラー訂正の基礎理論(エラー訂正条件など)

  • スタビライザー、表面符号などのエラー訂正符号

  • 閾値定理とFTQC

  • 量子コンピュータの実装とアーキテクチャ

  • 測定型量子計算

  • 断熱量子計算

等があると思います。大体はNielsen-Chuangを参考にしたので、最近出てきた概念が触れられてないんですが、どこの講義資料を見てもだいたいこんな感じだったので困らないと思います。

Nielsen-Chuangを参考にしたと聞いて時代遅れなのではないかと思った人もいるかも知れません。Nielsen-Chuangは20年以上前に書かれた本で、それ以来ほとんど改定がありません。最近の研究成果については全く触れられていません。それでも、Nielsen-Chuangがその地位を維持しているのは、量子情報の基礎をしっかりと抑えているからだと思います。Nielsen-Chuangを避けたとしても、結局は同じ概念を勉強する必要があります。現状、これ以上よくまとまっている本が少ないのでNielsen-Chuangで十分だという感じになってます。最近の成果はarxivで見れるので、サーベイで概要を掴んで、原著論文を読めばいいです。

結局は、本格的に勉強するならNielsen-Chuang一択だと思います。必要とされる前提知識はほとんどなく、説明がめちゃくちゃわかりやすいです。さらに、できれば英語版を読んだほうが良いと思います。どういうわけだか、Nielsen-Chuangの英語はすごくシンプルです。大学入試とかで見かける英語よりも簡単です。なので英語が苦手でも比較的読みやすいと思います。どうせ論文は英語ですし、日本語訳が定まっていない概念もあったりします。さらに、英語版のほうが安いです。日本語版は1冊5000円くらいで3巻まであります。どれも重要なトピックを扱っているので、1巻だけ読むのはおすすめしません。(特に第一巻だけ読むのはおすすめしません。イントロダクションと、量子力学、計算理論の基礎だけなので他の本を読んだほうが良いと思います。)

今すぐ勉強したい!という人のために、ネットで公開されている講義資料をまとめておきます。

(量子アルゴリズムについて詳しくまとまっている資料は下でまとめてあります)

量子コンピュータの使い方を勉強したい

つまり、理論はさておき、実践的に勉強して量子コンピュータをガンガン使いたい!という人向けの勉強法について考えます。具体的にどんなことをするかというと

  • 量子コンピュータの基本要素(量子ビット、量子ゲート、測定など)を学ぶ

  • 量子計算のためのライブラリを選ぶ(Qiskit, Cirq, Qulacs, Q#など)

  • 量子回路を使って古典計算をする(四則演算など)

  • 基本的なゲートについて学ぶ

  • 位相推定、量子フーリエ変換、振幅増幅などのサブルーチンを実装する

  • 量子アルゴリズム(ShorとかGrover, VQEなど)を実装する

みたいな感じになると思います。理論に深入りせずに量子プログラミングの基礎を学べる本として

をおすすめします。僕はこの本のおかげで量子コンピュータにはまったと言っても過言ではないです。とにかくわかりやすく、面白いです。特に実践的に学びたい人にはぴったりです。

理論について深くやらないのであればネット上にたくさんのリソースがあります。有名所として、各ライブラリのチュートリアル

他にも

などがあります。今年に入って量子競プロも盛り上がってきたので是非参加しましょう!

Q#を使ったプログラミングコンテストは数年前から行われていて、問題も豊富です。上で紹介したKatasなどを使ってQ#の使い方を学んでから挑戦するのも良さそうです。また、「IBM Quantum challenge」というイベントもあって毎年春と秋にQiskitを使ったプログラミングコンテストが開催されています。

量子アルゴリズムについて詳しくまとまっている資料をまとめます。

今だから言えること

数学については深入りしない

特にテンソル積。深入りするとやばいです。僕はテンソル積が数学的に理解できないくて、『線形代数の世界』という本を読み切りました(理解してないです)。そのせいで2ヶ月間ずっと線形代数をしていました。その経験は役に立っているのですが、量子コンピュータを勉強するだけなら間違いなくオーバーワークでした。テンソル積に限らず、数学について気になっても深入りしないほうが良いです。量子情報で使われている数学は厳密にはなかなか難しいものが多いです。

問題を解く

どんな分野であれ問題を解くことは大切です。概念の正確な理解のためには問題を解くことと具体例を考えることが基本だと思います。それをしないとあらぬ誤解をすることが多いです。特に独学をしていると誤解に気づけないことも多いので問題を解くことはより一層重要になります。

わかった!と思いすぎない

これは量子コンピュータを勉強する上で注意する事というより、量子力学を勉強するときに注意することです。物理学をしっかり学んでいて量子力学にも詳しい人は大丈夫だと思いますが、量子力学初心者の人は「わかった!」に気をつけてください。その「わかった!」は誤解である可能性が高いです。量子力学の世界では直感が働かないと思ったほうが良くて、数学だけが真実だと思うようにすべきです。量子的な直感が働くようになるのはある程度勉強してからだと思うので、はじめのうちは自分の直感を信じすぎないでください。

仲間を見つける

これも量子コンピュータに限った話ではないですが、勉強する仲間は大切です。僕が1年間勉強を続けてこれたのは勉強会をやったり議論をする仲間のおかげです。モチベーションを保つためにも、正確な理解をするためにも仲間を見つけることは大切です。

情報のアンテナを張る

量子コンピュータの世界は日進月歩です。昨日までの当たり前が突然刷新される可能性があります。常々情報をチェックするようにしましょう。僕はSNSを見たり、arxivのプレプリントを確認したりしていますが、他にも色々の手段があると思います。(Google alert使うのもありだと思います)

さいごに

偉そうに色々書いてきましたが、せいぜい1年しか勉強していないので僕もまだまだへっぽこです。でも、量子力学を全く知らない状態から1年でここまで来たのでまあまあ頑張ったと自負しています。それに、これまでの経験が物理系じゃない人が量子コンピュータに入門するのに参考になると思っています。

今年のはじめに量子競プロが出てきて、競プロ界隈の人にも量子コンピュータに興味を持つ人が増えてきていると思います。世間的にも、2023年に国内で量子コンピュータが3台稼働して、IBMなどが1000量子ビットを達成し、QuEraなどが48論理量子ビットを実現するなど注目を集めるニュースが増えています。もはや量子コンピュータは未来の技術ではなく、誰もが学べるオープンな技術になっています。

少しでも興味を持っている人はぜひ入門してください!あなたが想像している以上に量子コンピュータの世界は広く、深く、面白いです!

この記事が気に入ったらサポートをしてみませんか?