量子コンピュータのレビュー
量子化学のfullCIは超高速になる
2018/6/19
中田 真秀
自己紹介
1997年 京都大学工学部工業化学科卒業
博士前期課程入学
1999年 京都大学、博士後期課程入学
2003年 博士(工学)@京都大学
2003-学術振興会特別研究員
2007-基礎科学特別研究員@理研
2011-技師・開発研究員@理研
専門分野: 量子化学、ハイパフォーマンス・コン
ピューティング(線形代数演算)、最適化
量子コンピュータは高速!
• 重要な問題が超高速に解けるようになる
– 因数分解が高速になる 古典では
– 離散対数問題も高速になる
• 上の2つから、公開鍵暗号が破られる可能性がある
– フーリエ変換が高速になる
• 量子化学のfullCIは超高速になる
– 物性物理でいうところのexact diagonalizationだが、こ
ちらは高速にならないかも…
• どういう意味???
古典コンピュータの復習
• 量子コンピュータをやる前にある程度知っておいたほうが良い
• 古典コンピュータ or フォン・ノイマン型コンピュータ(1945)
– 「メモリ」「CPU」「外部との入出力」と三要素からなっている。
CPU
記憶装置
(メモリ
外部
出力
外部
入力
• データは、矢印の方向に流れる
• データとは? “0” “1”の列
“0” “1”の区別は例えば電圧で表す
0V: 0
5V: 1
計算できるってどういうこと?
• 古典コンピュータは“0” “1”の列を処理して、“0” “1”の列を出力す
る。
– 例: スパコン、mac, windows, iPhone…どうやって複雑な計算を
“0” “1”の列の処理と結びつけるのか
– チューリングマシン (1936)
• 計算できるってどういうこと?
– チャーチの提唱 (計算 ノイマン型コンピュータ
チューリングマシン
抽象化具体化0 0 111 0
無限に長いテープ
ヘッド
ヘッドはテープを読み取り、遷移規則を
適用、書き込みを行ったあと移動する
量子コンピュータは
古典コンピュータと同じ問題が解ける
• アルゴリズム(=チャーチの提唱)
– チューリングマシンで表現された計算手続き
– 計算を実行できるような有限の手続き = あるゴリスム
• 量子コンピュータでは、古典コンピュータを超えた表現能力はある
か?
– No (SIAM J. Comput., 26(5), 1411–1473.)
– 帰納的関数のみ計算できる(=古典と同じ)
– 停止問題は古典でも量子でも解けない(あるプログラムを入力として、
これが停止するかどうかを決定するプログラムを書け、という問題)
• 科学基礎論研究 Vol.28 No.2 (2001) 小澤 量子計算とチャーチの提唱
– 量子コンピュータでも古典コンピュータでもできることは同
じ。ただ高速か低速かの違いしかない
回路を作る:ブール関数
• チューリングマシンに必要な関数
– 有限個の“0”, “1”を与えたとき “0” or “1”を出力す
る関数(ブール関数)
– 通りあるのが自明にわかる
– Bool関数の例 (論理演算)
X Y X ∧Y
0 0 0
0 1 0
1 0 0
1 1 1
X Y X ∨Y
0 0 0
0 1 1
1 0 1
1 1 1
x ¬x
0 1
1 0
どんなBool関数も
AND/OR/NOTで作れる
{and, or, not} のようなBool関数(=素子)を回路に実装する事が多い。
問
任意のBool関数を表現するのに必要な素子の種類は?
答
{and, or, not} この3つの素子を組み合わせれば、どんなBool関数も作る
ことが可能。ある素子たちを組み合わせるとどんなBool関数も作れるという
組を完全系とよぶ。
注意: and, or, notの3つの組だけではなく、他の組み合わせもある。たとえば、
{nand}, {xor, 1, and}, {xor, 1, or} の組たちはそれぞれ完全系である。
And, or, not 以外の回路もある xor, nand, norなどは、必要に応じて使う。
どんなBool関数も
AND/OR/NOTで作れる
X Y X ∧Y
0 0 0
0 1 0
1 0 0
1 1 1
X Y X ∨Y
0 0 0
0 1 1
1 0 1
1 1 1
x ¬x
0 1
1 0
AND/OR/NOTは完全系。以下のXORやNANDもAND/OR/NOTの組み合わせでかける
NOT X = X NAND X
X xor Y = (X or Y) and not (X and Y)…
NANDも完全系。実はNANDだけを用いてAND/OR/NOTを書ける。
X Y X xor Y
0 0 0
0 1 1
1 0 1
1 1 0
X Y X nand Y
0 0 0
0 1 1
1 0 1
1 1 1
ブール関数を電気回路で作る
電気回路によって、ブール関数を作れないか?
1937年のシャノンはその修士論文で電気回路(ないし電子回路)が論理演
算に対応することを示した。
AND/OR回路は簡単にできる。
ORの回路図 ANDの回路図
リレーによるNOT回路
1. コイル
2. 接点1
3. 接点2
Off: 電球がつく
On: 電球が消える: コイルにより
鉄板が引き寄せられ、接点1,2
が触れ合い、電流が流れるため
Wikipedia/wikimediaより
没スライド:リレーによるNOT回路
1937年のシャノンはその修士論文で電気回路(ないし電子回
路)が論理演算に対応することを示した。
まずはnotを作ってみよう。電球が灯れば1, 消えていると0を表
す。電磁コイルによって鉄板が上下し、電球が灯ったりする
右図がリレー部がoff(=0)で、電球がon(=1)
左図はリレー部がon(=1)で、電球がoff(=0)
没スライド: 回路を作る(リレー)
• andやorの回路もリレーで作れる
ゲート記号と集積回路
NOTゲート ANDゲート ORゲート
AND/OR/NOTゲートは完全系だったため、これらを使ってあらゆるBool関数(=アルゴリズム
を表現できる) これら基本素子はリレーを使って実装できることを示したが、
いまでは半導体をもちいるのが一般的である。On/Offは5V/0Vなど電位差で示す。
そうすることで安価で小さく、高速かつ安定して動かすことができる。
IC (Integrated Circuitsは)これらが小さいパッケージに入っているだけである。
7400 TTL (1966)
回路の例:半加算器+全加算器
加算はand/or/notの組み合わせでかける。これを回路で作ってみる
1bitの加算は4パターン
入力 入力 出力 出力
A B C S
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
余談:半加算器にXORを使う
AND/OR/NOTを使った半加算器 AND/XORを使った半加算器
素子が4個必要 素子が2個必要
臨機応変に素子を使い分けると
効率的に回路が作れるようになる
全加算器+繰り上がり入力
Carry: 繰り上がりも入力される
半加算器: half adder
全加算器: full adder
入力 入力 入力 出力 出力
X A B C S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
4bit全加算器
• 全加算器を並べて、4bit加算器を作る
A0
B0
S0
A1
B1
A2
B2
S1
S2
S3
C
A3
B3
http://www.ti.com/lit/ds/sdls095a/sdls095a.pdf
製品化されている。
Cf. テキサスインスツルメンツより
4bit全加算器
先程の回路を使うことで
4bit = 2^4 = 16 (10進数) までの足し算を扱える。
Q:
3+3 = 6 をやってみよう
古典コンピュータのまとめ
• コンピュータでプログラムされるアルゴリズムは帰納的関数
(チャーチの提唱)
• アルゴリズムは任意の長さの任意のブール関数を表現でき
たら良い。
– {0,1}のn個の直積を{0,1}に移す関数
• ブール関数はand/or/notで完全。
– どんなブール関数もand/or/notをいくつか組み合わせたら表現可能
– 他にもnand, xor…などある。必要に応じて使う。
• ブール関数は電気回路と等価
– “0”=0V “1”=“5V” 電磁コイルを用いたリレー式から半導体へ!
• あとはロジックをひたすら実装してゆく。
• 実装例として半加算器、全加算器を挙げた
量子コンピュータも基礎は
だいたい同じ
同じところ
• 素子を使った回路設計をやる(のが主流)
違うところ
• bit列が線形重ね合わせをとる(qubitと呼ぶ)
• 最後に観測してある状態の物理量を測定す
る
• 回路がユニタリ
一休み
量子力学について
(不思議な)量子力学
• この世は量子力学で成り立っている。
– 量子力学によると自然は人間の直感からは離れていること多々
– 系の状態=波動関数
– 波動関数はギリシャ文字ψやφで表すことが多い
• 波動関数の線形重ね合わせも波動関数。
– αψ+βφも波動関数(α, βは複素数)
• 波動関数への数学的な条件はψは絶対二乗
可積分であること
量子力学=Hilbert空間論 (≒無限次元の線形代数学)
(不思議な)量子力学
• 物理量は波動関数に作用する演算子になる。
– 例えば、運動量は 、位置は
– 系のエネルギーを表す演算子はハミルトニアン
• 系の時間発展はシュレーディンガー方程式に従う
• 時間によらないシュレーディンガー方程式は固有値問題となる
測定(I)
• 測定可能な物理量はエルミート的な演算子である。
• エルミート演算子の固有関数は完全形をなす。
• 系の状態がΦのとき、Hの測定を行うとHの固有関数のどれ
かにジャンプする(波束の収縮)
測定(II)
どの に波束が収縮するかは、確率的であり、その確率は
である。これより、Aという物理量を状態Φについて測定すると、
期待値が以下のようになる。
電子たちは区別がつかない
• 電子は同じ粒子であり、原理的に区別がつかない。波動関
数は粒子の座標の入れ替えについて反対称(Fermi粒子)
• 電子は1/2 spinを持つ
– 上向きスピンおよび下向きスピンを基底とする。
• このような多電子系ハミルトニアンの最低固有値、固有関数
を知りたい: 量子化学, 物性物理
量子力学の不思議な例
• 波動と粒子の二重性
量子力学の不思議な例
シュレーディンガーの猫: 波動関数の線形重ね合わせも波動関数ならば
生きている猫と死んだ猫の状態の線形重ね合わせも猫の状態であろう。
一時間後に50%の確率でラジウムが崩壊し、猫を死に至らしめるとしよう。
だが、一時間後の猫の生死は測定した瞬間に確定する
量子コンピュータのレビュー
注意
• 今回取り扱うのは回路型量子コンピュータ
– 古典回路の量子力学への一般化と思えばよい
• 量子アニーラーとは見かけ上全然違います。
– アニーラーは本質的にスピン系のHamiltonianの
基底状態を解く
• 観測型の量子コンピュータも扱いません
– 回路型の特殊型ともみなせる
量子bit (qubit)とはなんぞや?
• 量子コンピュータでも、 “0” “1”のビットを取り扱う: qubitとよぶ
– 1 qubit
• たとえば電子の上向きスピンを1 下向きのスピンを0とする
– 2 qubits系
– 3 qubits系
– N qubitsあれば、2N次元の空間を一つの状態ベクトルで考えられる
量子bit/古典bitの本質的な違い
この状態ベクトルたちは、独立なベクトルであるが、量子力学
によると、波動関数の線形重ね合わせもqubitである。
• 2qubits系の例
• もqubitである。
量子コンピュータでの高速化の基本的アイディア
• qubit線形重ね合わせで、n個のqubitのゲートを操作する
=2n個の状態を一気に操作できる≒exponentialなスピードアップ
+ 観測などによる結果の分離
• 古典だとbitたちの線形重ね合わせはできない!!
最後に観測をする
• ある計算をしてqubitが以下のようになったとする
• 系のqubitを測定すると、 に波束が収縮する確率は
• 量子アルゴリズムには、答えとなるbitの状態に振幅を持ってくることが必要
– が答えとするとそこに確率振幅を高めるアルゴリズムが必要!
• 計算と観測は何度も行い、確率的にどのqubit状態が答えなのかを得る。
– 量子コンピュータはアナログコンピュータ
– 非常に運が悪いと答えを見誤る可能性はある
– 量子状態複製不可能定理より、初期状態から何度も計算させて観測する必要がある。
量子コンピュータとSIMD計算機
(≒GPU≒CUDA) ちょっと似ている点
• n個のqubitのゲートを操作する=2n個の状態を一気に操作できる
• SIMD = Single instruction multiple data
N qubit系の量子コンピュータと、2N プロセッサに1bitずつメモリが存在する
古典コンピュータを考える。
この2つのコンピュータのbitを反転操作を考える。
量子コンピュータ: N個のビット反転回路を通す
古典コンピュータ: 2Nのプロセッサに一斉に自分が持っている
1bitのメモリにNOT回路を通す。
量子コンピュータとSIMD計算機
(≒GPU≒CUDA) ちょっと似ている点
X
N qubitを反転操作 : 量子コンピュータ では N個のNOTゲート(Xゲート)を通す
X
X
X
X
2N bitの反転操作: 古典コンピュータ
0
1
0
0
1
1
0
1
0
1
0
0
1
1
0
1
1
0
1
1
0
0
1
0
1
0
1
1
0
0
1
0
1個のゲートを通すと2^Nのビット
に一度に作用するのがSIMD的
2N個のゲート
量子コンピュータとSIMD計算機
(≒GPU≒CUDA) 違う点
X
X
X
X
X
観測するまで、2Nビットのビットの状態はわからない
ビットを観測すると、確率的に波束の収縮が起こり
0か1かに確率的に確定する。
その時、2Nあった情報の大半は失われてしまう。
0
1
0
0
1
1
0
1
0
1
0
0
1
1
0
1
量子 古典
ビットをすべて持っているため
いつでもすべての情報を
取り出せる観測の方法によらない
(原理的な話)
ただし膨大なメモリが必要。
量子コンピュータは速い?
• Yes : 因数分解などたくさんの古典より良いアル
ゴリズムが存在する。
– 因数分解:N qubitで2N状態を操作しつつ、答えになるビット列に
確率振幅を多く与えるようなアルゴリズムが存在する場合
– https://math.nist.gov/quantum/zoo/
– https://www.qmedia.jp/algebraic-number-theoretic-algorithms/
– https://arxiv.org/pdf/1804.03719.pdf
• No: 必ずしも良いアルゴリズムが存在しない場
合がある。
– 並列計算に向かないアルゴリズム…
量子コンピュータの回路
• 量子コンピュータは可逆(=Unitary)な回路で組まれる
– 古典の場合はAND/OR/NOTさえあれば任意のBool関数が表現できた
(universal)。
– 実は可逆な古典回路も存在する
• どんな回路があれば、universal = 任意のユニタリ変換が可
能か?
– Solovay-Kitaevの定理より近似が可能[arXiv:quant-ph/0505030]
– 例えば2 qubitの場合はHadamard gateとcontrolled not gateの2つが
あればok!
• 余談: n qubitを用意できたらそのn体のunitary変換を行うとHartree-Fock波動関数から
厳密解の波動関数に変換できる
よく使われる回路
• アダマールゲート:
• Pauli-X ゲート: (NOTゲート)
• 位相シフトゲート
• CNOTゲート : 注:Hadamardゲート+CNOT = universal
• Toffoliゲート(CCNOTゲート)
量子的な加算器の作成
https://www.slideshare.net/SnehaRamshanker/classical-computation-to-quantum-computation
PRA 54 1035, 1996
トフォリゲート(AND)に CNOTゲートを通すとhalf adderができる
量子化学編
ハバードモデルとどこまでパラレル
でどこからが違うのか
量子化学の定式化
• 第二量子化したハミルトニアン
• シュレーディンガー方程式を解く
• 固有値と波動関数を低い順にいくつかほしい
– 真面目にやる方法 (CI法、厳密解)
– 近似計算する方法 (Hartree-Fock, MP2, CCSD, … / FMO / DFT B3LYP
…)
量子化学の問題点
• 粒子数が増えると波動関数の次元がものすごく高くなる。
• 必要なslater detの数: n 軌道, k電子の場合
• n=2kのとき近似的に
これを
量子コンピュータ
で対角化する!!!
量子化学の問題の楽な点
• 平均場近似で既にかなり良いエネルギーと波動関数が得られる
– 分子理論の展開 p.39 (永瀬、平尾)
• 基底状態と第一励起状態のエネルギーギャップが十分ある。
• Hamiltonianの形は似ているけども
– Spinglassは基底状態付近に状態が密集している
– Hubbard modelは基底状態がHartree-Fockからは遠いからphaseが読め
ない
これらのheuristicsを使うことで、量子コンピュータを使って高速に厳密
対角化を行うことが可能になる
量子コンピュータを使っても
高速にならないかもしれない系
• たとえばSpin glass系の基底状態を求める問題
• ひと目ではわかりにくいが
の形に直せる
この問題は実はNP-hardな問題として知られている(Barahona
1982)
もしかしたらこれも量子コンピュータで高速に解ける?
量子コンピュータを使っても
高速にならない系
• 例えばSpin glass系の基底状態を求める問題
• ひと目ではわかりにくいが
の形に直せる
この問題はNP-hardな問題として知られている(Barahona 1982)
もしかしたらこれも量子コンピュータで高速に解ける?
残念ながら量子コンピュータ
でも多分解けません
Seth Loydの論文
• S. Loyd, Universal Quantum Simulator, Science 273 1073 (1996)
• ファインマンの予想
– 量子的な系のシミュレートは量子コンピューターでできるようになる
– O(exp N) をO(poly(N)) に迂回できる
• ファインマンの予想を示した
– 任意の量子的な系、ローカルな相互作用を持つ場合
• 鍵となるアイディア
– CIベクトルをqubitで持つ; CI ベクトルはoccpation number vectorなので
– Solovay-Kitaev定理: n qubit系の任意のユニタリ行列への近似を生成することが可能
(この論文では鈴木-Trotter分解を使っている)
なぜ解けないか?
• 基底状態が密集している場合がある
– 最悪のケースも考慮に入れる必要あり
– 大抵の問題は解けるはず
• もし解けたら巡回セールスマン問題、ハミルトン閉路問題な
ども解けるはず。
• k<=2 Local HamiltonianはQMA-complete(NP-completeの量子
版)と示された[arXiv:0406180]
• 残念ながら1Dの量子系の基底状態を求めることもQMA-
completeと示された
– the problem of approximating the ground state energy of a system
composed of a line of quantum particles is QMA-complete
[arXiv:0705.4077]
つまり量子コンピュータはものすごく強力
というわけではない
(もう一度)量子化学の問題の楽な点
• 平均場近似で既にかなり良いエネルギーと波動関数が得られる
– 分子理論の展開 p.39 (永瀬、平尾)
• 基底状態と第一励起状態のエネルギーギャップが十分ある。
• Hamiltonianの形は似ているけども
– Spinglassは基底状態付近に状態が密集している
– Hubbard modelは基底状態がHartree-Fockからは遠いからphaseが読め
ない
これらのheuristicsを使うことで、量子コンピュータを使って高速に厳密
対角化を行うことが可能になる
量子化学への応用
• Simulated Quantum Computation of Molecular Energies, A.
Asupuru-Guzik et al., (Science 2005)
• 手法: qubitを分子の波動関数とみなす
• Qubit数=分子軌道の数x2 +
レジスタ部分(定数10-20?)
電子数には依存しない
これで fullCIの空間を扱える!!
Qubitの使い方
• Qubitの波動関数部分(S) およびレジスター部分(R)を用意
• HamiltonianからUnitaryをつくり、位相部に固有値を入
れる
• レジスター部分は、「結果を読み出す」ために使う。計算の最
後には以下の様なqubitになっている
• レジスタ部に逆フーリエ変換を通してφを求める
レジスタ部のqubit数で計算結果の精度を決める。
鍵となるアルゴリズムと仮定
• 量子フーリエ変換
– 位相の読み出し
• 量子位相推定
– QubitにfullCI波動関数をいれる。
– 波動関数をユニタリ変換して位相に系のエネルギー固有値を入れる
• 任意のユニタリ行列を作る
– Hartree-Fockから、CI波動関数を作る。
• 仮定: c0が十分大きいこと が十分大きいことが必要
– 平均場近似と重なりが大きいから位相推定が可能
– エネルギーギャップがある=固有値が分離していて密集してない。
量子フーリエ変換
フーリエ変換の定義
これはqubitにすると
Fourier変換は、あるベクトルに対してユニタリ変換することと等しい
ちょっと変形必要
量子フーリエ変換
• 2進数表記を考える。x_nはxの2進数表記の小数点以下n桁目とする。
• するとQFTは
となる。Expの上に桁が一つずつ乗るという感じ
3qubitでの例
3qubitでの例
量子フーリエ変換
• 離散フーリエ変換を量子的に行った
• オーダーはQFTがO(n2)なので、FFT(n log n)よ
りかは遅い。
量子位相推定
Unitary行列の固有値を求めたい!
近似的にφを求めるアルゴリズムを考える。2進数表記で
について0 or 1で求めてゆく。
固有ベクトルはすでに求まっているとする
さて、 から、 と、位相を計算し、それを
状態ベクトルに一桁ずつ埋め込む、ということをしてみる。
これはどうやってやるべきか?
量子位相推定
• 量子フーリエ変換を思い出すと
• 状態ベクトルをその基底での成分に分解できる。ということは逆
はどうか? 係数を状態ベクトルに埋め込める。N=2nだから
• jはn bitの2進数なので、各ビットをjlとして、
を に変えてやれば、
結局I-QFTをかければ、|φ>が得られる。尚exp(2πikφ)|ψ>=Uk|ψ>
量子位相推定
1. まずすべてのqubitが等しく重ね合わせされている状態を作る
2. 上の変換はアダマールゲートをn回通せば良い
3. 次に に対応した を掛ける。
4. まとめると
量子位相推定
量子化学に適用
• Unitary行列はTrotter-鈴木分解で代用する
• 用意された波動関数は、厳密解に十分近い
exp (iHt) を|ΦHF>にかけても位相が十分読み取れる
鍵となるアルゴリズムと仮定
• 量子フーリエ変換
– 位相の読み出し
• 量子位相推定
– QubitにfullCI波動関数をいれる。
– 波動関数をユニタリ変換して位相に系のエネルギー固有値を入れる
• ゲートで任意のユニタリ行列を作れること
– Hartree-Fockから、CI波動関数を作る。
• 仮定: c0が十分大きいこと が十分大きいことが必要
– 平均場近似と重なりが大きいから位相推定が可能
– エネルギーギャップがある=固有値が分離していて密集してない。
計算方法
• |R>を4 qubitとして、V0を作用させると1/16の精度で位相 が
求まる。
計算方法
• 次はV1を作用させる
• 更に次は
• と、位相を少しずつrefineしてゆく。
• 水分子での位相の
計算の様子
議論
• 初期波動関数はHartree-Fock状態
– 鍵は厳密解とHartree-Fock波動関数の重なりが十分大きいこと
• 初期波動関数に多配置のものは作れないか?
– 任意のものが多項式程度で作れる[Sokilakov, Schack 2006]
– 初期波動関数がHartree-Fockと直交している場合がある (分子の結
合が切れる場合など)
– http://pubsdc3.acs.org/doi/abs/10.1021/acs.jpca.6b04932
– 初期波動関数を改良した論文
• Hubbardモデルに適用するには
– 良い初期波動関数が必要。それがわかればphase
estimationは可能。
– Hubbardモデルへの適用例[arXiv:1506.05135v2]
d-wave resonating valence bond statesから出発
議論
• 大きな系で位相推定が可能か(size-extensiveか)?
– Hartree-Fock状態は系が大きくなるとどんどん重みが小さくなる
– Coupled-Cluster wavefunctionなどはsize extensiveなのでそのような
初期波動関数を用意できる(Scientific Reports volume 4, Article number: 3589 (2014),
https://arxiv.org/abs/1506.00443)
その後
• Variational Eigen solver[arXiv:1304.3061]
– パラメータを用意、初期波動関数と期待値を計算してパラメータを最適化する(Unitary CCに
適用)
• Hardware-efficient Variational Quantum Eigensolver for Small Molecules and
Quantum Magnets[1704.05018] BeH2まで実際に計算した例
• Qubitの数をより少なくする方法
– Bravyi-Kitaev Superfast simulation of electronic structure on a quantum computer
– J Chem Phys 148, 164104 (2018)

量子コンピュータで量子化学のfullCIが超高速になる(かも