見出し画像

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

※上の画像はStable Diffusionで生成しました

 量子コンピュータという言葉はかなりのバズワードで、近所の八百屋のおばちゃんも口を開けば量子コンピュータと言ってるくらいです(大嘘)。

 そんな量子コンピュータについて興味を持たれている方も多いと思いますが、どうやって勉強したらいいものか悩んでいる人もいると思います。実際、僕がそうでした。量子コンピュータは物理学と情報工学の間に位置するような分野なのでどうしてもいろんな勉強が必要になりそうな気がしてきます。

「量子」ってついてるから量子力学勉強しないといけないのかな?
コンピュータサイエンスの知識は必要?

勉強を始めた頃はかなり迷走していました。

 そんなわけで、ここまで数週間量子コンピュータについて勉強してきたのですが紆余曲折あって少しずつ見通しが立ってきたので、ここまでの道のりを振り返りながら結局どんな勉強をすれば良さそうなのかみていきたいと思います。

 勉強は好きなタイプなので、線形代数や情報理論などの基礎の基礎から勉強を始めました。線形代数はかなり面白くて、大学でも講義があったのでいい感じに学習が進んでいました。一方で情報理論の勉強は一向に進まない。そもそも量子コンピュータとどれだけ関係があるのかもほとんど知らないまま、モチベもどんどんと下がり続ける一方…

 こんな時はゴールから逆算して勉強計画を立てるのが吉です。基礎は必要になったらやればいい!と吹っ切れて、量子コンピュータそのものを勉強することにしました。量子コンピュータと言ってもゲート方式の量子コンピュータです。まずはじめに取り組んだのはネット上にある以下のような学習教材です。

 最初に読み始めたのはQiskitの学習教材です。Qiskitというのは量子コンピュータに指示を出すプログラムを書くためのライブラリで、IBMが主導しながらオープンソースで開発されています。この教材はそこそこ本格的で量子ビットの説明からブラケット表示の導入、数式を用いた理論的説明まで比較的わかりやすく説明されています。ただ、英語ですし、やや細かめに説明されているので全体像が見えてこなかったためすぐに挫折してしまいました。

 そこで次に読み始めたのがQuantum Native Dojo!です。このサイトはQunaSysという日本のベンチャー企業が提供しているので当然日本語で書かれていますし、とても読みやすいです。このサイトのおかげで始めて量子ビットがどんなものなのかイメージできるようになった気がします。ただ、第1章はスラスラと読めてある程度理解できたのですが、第2章の量子フーリエ変換のところから全くわからなくなってしまい挫折してしまいました。そもそもフーリエ変換の知識が不足している上、量子ビットの位相が全然イメージできていなかったことが挫折の原因だと思います。

 これらのリソースは無料で読めますし、専門書よりもかなり砕けた感じに書かれているので初心者向けなんだと思いますが、僕にはまだ早すぎました。全体を通して、量子ビットについての理解が不十分だったのと、線形代数の知識が足りていなかったのが良くなかったのかなと思います。
 ただ、今思えばここまでの学習でゲート方式についての基礎知識が固まりつつあった気がします。アダマールゲートとかCNOTゲートとかがあって、どうやったら半加算器が作れるとか、どうやったら乱数を得られるとか、そう言った知識は断片的に身についていたと思います。このことがこの後の勉強で大きなアドバンテージになっていたと感じています。

 ネット上に優れた無料の教材があるにも関わらず活かしきれなかった僕はついに本を買うことを決意します。量子コンピュータなどのニッチな専門書はとにかく値段が高いです。この分野で最も有名なNielsen-Chuangは洋書で約10,000円、日本語版は3巻に分かれていてそれぞれ5,000円近くします。3,000円のものでも安く感じてしまうくらいには相場が高めの分野なので買うにも覚悟が必要です。とは言っても本を買う以外に大した出費はないので大丈夫です。リアルの充実度は大丈夫じゃないですけど。
 そこで買ったのが以下の2冊。

 1冊目に買ったのが『量子コンピューティング:基本アルゴリズムから量子機械学習まで』という本です。買った理由は、一般書でも妥協せずに書かれている本が欲しかったからです。一般向けの量子コンピュータの本といえば他にもいろいろありますが、中でもこの本はしっかりと数式を使って割と本格的に書かれています。もちろん専門書のレベルではないですが、専門書を読む前の予行練習としてちょうどいいくらいに噛み砕かれた内容だと感じました。さらに、この本の素晴らしいところは参照している文献をかなり詳細に示していることです。サーベイ論文のように参照している文献や論文を細かく示してあるので、自分で調べる時にとても役に立ちますし、自分が知らない本などが知れて今後の学習にも役立つと感じました。実際、次に買った本はこの本の参考文献に載っていた本でした。

 2冊目に買ったのが『動かして学ぶ量子コンピュータプログラミング』という本です。買った理由は、1冊目に買った本で紹介されていたいくつかの実装方法がこの本からの引用だったからです。加えて、立ち読みした時に感じたライトな語り口とわかりやすい図解が自分に合っていると思ったからというのもあります。まだ読んでいる途中ですが、正直この本から勉強を始めれば良かったと思っているくらい素晴らしい本だと感じています。まず、この本は量子力学や線形代数の知識を前提としていません。コンピュータについて多少の知識がないと読み進めづらい感じはありますが、総じてかなり初心者向けの内容となっている気がします。何と言っても数式が少なくて、理論よりも実践を重んじている内容となっています。プログラミング言語の勉強をするのに必ずしもコンピュータの仕組みを理解しなくてもいいのと同じように、量子コンピュータのプログラミングをするだけなら量子コンピュータの仕組みを知らなくても問題ないということです。こと本のおかげで量子コンピュータで何ができるのか、どうやってそれを実現するのかについてかなり具体的に理解できたと思います。

 こんな感じで今に至るのですが、結論として量子コンピュータについて学びたければまずは量子プログラミングから入るのが早いんじゃないかと思います。量子コンピュータの仕組みが知りたいんだ!とか、量子暗号に興味があるんだ!って人も、線形代数や量子力学の基礎知識がないのであれば量子プログラミングから始めた方が全体像を見渡しやすくなります。どんな分野を勉強するにしても、全体像を把握しておくことは重要です。どの知識とどの知識が繋がっていて、今やってる分野は全体から見た時どんな役割を果たしているのかについて理解できていると、どの部分に注目して勉強を進めればいいのかがはっきりとするので勉強の質が向上すると思います。
 そんなわけで、量子コンピュータ関連の勉強をしたい人はまずは量子プログラミングから始めてみましょう!というお話でした。個人的には先ほど紹介した『動かして学ぶ量子コンピュータプログラミング』がめちゃくちゃおすすめです。他にも東北大学の大関先生が公開されている「Quantum computing for you」という公開講義の講義動画もおすすめです。講義の中でIBMの量子コンピュータを使って量子プログラムを実行するパートがあるのですが、本物の量子コンピュータで計算した結果が帰ってくるとかなり感動的です。なんと無料公開されているのでものすごく長いですがかなりおすすめです。
 結局、測定ってなんだ?とか量子もつれってなんだ?とか理論的な話は後回しの方が理解しやすいんじゃないかなと思います。量子力学から量子コンピュータへと進めるのではなく、量子コンピュータから入って後から量子力学を勉強するとかなりスムーズに理解が進みます。少なくとも僕はかなりスムーズに進んでいる印象です。

 最後に量子力学関連で、量子コンピュータにやや近い感じのおすすめ本を2つ紹介して終わります。

1冊目は『量子力学の考え方:物理で読み解く量子情報の基礎』というSGCライブラリの本です。どうやらもう売ってないらしいですが、物理学徒以外に向けた量子力学の本で歴史的な経緯に縛られずに、量子力学を理解するために必要な考え方がかなりスマートにまとめられている本です。量子ビットについての話も出てきますし、量子ゲートについても触れられています。それだけでなく、量子力学の数学的構造がどうして線形代数で記述されるのかや、量子ゲートが行列で記述される理由についても理解できるという点で、量子コンピュータを理論からしっかり理解したい人におすすめの本です。

2冊目はスーパーラーニングシリーズの『量子力学』です。量子力学の教科書について調べてもなかなか出てこない気がするこの本ですが、初心者向けに書かれている上、スピンやベルの不等式など量子コンピュータの実装において重要になる理論について触れられているので読みやすい割に量子コンピュータに役立つ内容となっています。一応、高校で物理をやっていない人も読者として想定されていますが、高校数学の基礎知識と線形代数の基礎知識はないと厳しいです。


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