🪐

Qiskit で遊んでみる (1)

2022/03/22に公開

目的

blueqat メンバによる IBM Quantumで学ぶ量子コンピュータ をメインに Qiskit Textbook を副読本として学習をおこなった。途中 量子コンピュータと量子通信Quantum Circuit Learning の論文などにも軽く目を通してみたが、雑なメモばかりできあがったので、なんとか量子・古典ハイブリッド機械学習を目指してメモを再構築したい。

本記事では、どう再構築しようかというもやもやについて、書いてみたかった持論を交えたポエム 100% で記述しながら切り口を模索することを目的とする。後で使うかどうかも分からない記号類や関係性だけざっと書いてみておく。そして、ニールセン&チャンは確かに良い本だなという感想を述べて締め括る。

背景

数学や物理をもっと活用できないか?と思っていたところに手頃なネタとして「量子コンピュータ」が目に入ったので本を読んでみた。機械学習はやっていたので、ゴールを量子機械学習に設定して前述の書を読むこと人した。物理としての量子力学は専門ではないのだが、読み進めるうちに「とりあえずは量子力学のことは忘れても問題ない、単純に量子計算の要件?を満たすようなコンピュータが存在するという前提で読めば良さそう」と気づいたので最後まで読み進めることができた[1]

次節はどちらかというとそういう気づきを得るまでの右往左往の過程での思い出のようなものである。たぶん不要だが、後の記事で使えるかもしれないので入り口としてだけ残しておく。

物理と数学の2重らせん

物理と数学の2重らせんという本が結構好きで、もっと物理と数学が歩み寄れば良いと考えている。例えば記号類はもっと混同されたり自由に行き来できると良いと思う。

ブラケット記法

現代の量子力学(上)第2版などのちょっと進んだ量子力学の本を読むと、P. A. M. Dirac によって導入されたブラケット記法が出てくる。量子情報の本や量子コンピュータの本はガンガン利用しているので少し面食らう部分がある。ケットベクトル \ket{\alpha} とブラベクトル \bra{\beta} と観測可能量 A を使って \braket{\beta|A|\alpha} などと書いたりするやつである。
量子情報の本でも、アダマールゲート H と量子ビット \ket{0} および \ket{1} があって、H \ket{0} = \frac{1}{\sqrt{2}}(\ket{0} + \ket{1}) になりますといった話が出てきて少しへこむ[2]

このブラケット記法を少し数学の目で見直すことができる。

関数解析における内積

ヒルベルト空間と量子力学という本は分類としては数学書ということになるが、J. von Neumann による量子力学の数学的基礎を遥かに優しく噛み砕いたような本で、コンパクトながらためになる面白い本だと思う。

同書などに見られる記号を物理に寄せて書きくだしてみよう。ヒルベルト空間なる何かしらベクトルが所属する空間 \mathcal{H} が用意されていて、\mathcal{H} \times \mathcal{H} から複素数 \mathbb{C} への写像 \braket{\cdot,\cdot} が存在して、次のような性質を満たしているとする:

\begin{align*} \braket{\alpha,\alpha} &\geq 0 \\ \braket{\alpha,\alpha} = 0 &\Rightarrow \alpha = 0 \\ \braket{\beta,c_\alpha \alpha + c_{\alpha^\prime} \alpha^\prime} &= c_\alpha \braket{\beta,\alpha} + c_{\alpha^\prime} \braket{\beta,\alpha^\prime} \\ \braket{\beta,\alpha} &= \braket{\alpha,\beta}^* \end{align*}

ここで \alpha, \alpha^\prime, \beta \in \mathcal{H}c_\alpha, c_{\alpha^\prime} \in \mathbb{C} であって、^* は複素共役である。
この時、\braket{\cdot,\cdot}\mathcal{H}内積と呼ぶ。

何が嬉しいか?

もやもや感を少し払拭できる。

一度この枠組みを覚えてしまうと、量子力学の観測可能量 A はヒルベルト空間 \mathcal{H} の演算子(無限次元行列)に、そしてブラケット記法でいう \braket{\beta|A|\alpha} は内積による \braket{\beta,A\alpha} に対応付く。

量子力学の本で \braket{\beta|\alpha} を何となく理解した後に \ket{\beta}\!\bra{\alpha} が出てきて打ちのめされる気持ちになることも数学に翻訳すればかなり気持ちが楽になる。前者はベクトル \alpha\beta の内積 \braket{\beta,\alpha} に対応する。後者はちょっとヘンテコりんな書き方になるが \braket{\alpha,\cdot} \beta という射影演算子に対応する。つまり \beta の張る 1 次元部分ベクトル空間への射影である。ブラケットを強引に数学的な記述にすると \braket{\alpha|\cdot} \ket{\beta} となりそうだが、これはこれで少し気持ち悪いかもしれない。

よく見かける \sum_a \ket{a}\!\bra{a} = 1 も数学の目で見たら完全正規直交系による展開、或は広い意味でのフーリエ級数展開として見直すことができて気持ちが良い。全然新しい概念ではなく既出のよくある概念ということだ。

とにかくよく分からない正体の分からない記号類に、よりはっきりした実体を与えられるような気がして安心感が得られるのが個人的には嬉しい。このため、量子力学の本にはヒルベルト空間の入り口だけ入ってさっさと帰ってしまうのではなく、もう一歩踏み込んでもらえると少し遠回りにはなるがより明確化ができて良いと思う・・・。

量子コンピュータと量子通信I はこの点では第 2 章 量子力学入門 2.1 線形代数として、ガッツリとそれでいて適量の数学で説明がなされていて非常に好感度が高い。道具としてこれくらい数学を活用してもらえると、なんだかむずむずする感じの量子力学が急にただの線形代数に落ち込んで、量子計算に集中できるのが良い。

まとめ

いきなり Deutsch-Jozsa のアルゴリズムがどうとか量子フーリエ変換がどうとかという記事から入るのが躊躇われたので、ポエムを入り口にしてみた。次回以降の記事では、興味があった内容などについて整理していけたらと思う。

脚注
  1. つまり、途中までは Bloch 球の幾何学的性質の探究だとか、量子力学の復習だということで、J.J. Sakurai を読むとかしてしまったが、当面の目的にはそれらは不要だったなということ。 ↩︎

  2. 後から考えると、そういう不思議なビットと論理ゲートが実装された抽象的なコンピュータにおける計算ロジックとして解釈すれば十分だった。物理的な実装としては、核スピンのようなものとかを使ったら実際に実装できたりしますよという程度を押さえれば良さそうだ。 ↩︎

GitHubで編集を提案

Discussion