LangEdge,Inc.

1

プログラマの為の量子コンピュータ入門

Part 0：イントロダクション（プロローグ）

宮地直人（miyachi@langedge.jp）

Ver1.0 2019年6月２７日

2LangEdge,Inc.

属性：@le_miyachi

技術：古典PKIプログラマ
仕事：ぼっち有限会社（電子署名系）
量子：独自に勉強（書籍・勉強会）
趣味：勉強会の開催、OSS開発
活動：OsSAL.org （オッサル）他
オープンソース署名＆認証ラボ

LangEdge,Inc.

3

Richard Feynman （リチャード ファイマン）“If you think you understandquantum mechanics, you don'tunderstand quantum mechanics.”「もしあなたが量子力学を理解できたと思うならば、それは量子力学を理解できていないと言うことだ。」※ と言うことできっと私も理解できていないので間違い等ご指摘を！

4

LangEdge,Inc.

量子とは？
一般的な定義：

物理量を実数では無く単位量の整数倍で表す場合にその単位量を「量子」と呼ぶ。
※ 量子論/力学以外でも使われる場合がある。
例：アナログ波形のデジタル化を量子化と呼ぶ。

量子化

5

LangEdge,Inc.

古典系と量子系の測定
A=1

A=1A=1A=1古典系回路1X=A÷21回目：X = 0.5
2回目：X = 0.5:n回目：X = 0.5古典系回路2
X = A × 1.3

1回目：X = 1.3
2回目：X = 1.3:n回目：X = 1.3

量子系回路1
X = A × φ(0:25% + 1:75%)

量子系回路2
X = A × φ(0:50% + 1:50%)
φ：波動関数（複数の解を持つ）

1回目：X = 1
2回目：X = 0
3回目：X = 1
:n回目：X = 1
1回目：X = 0
2回目：X = 1
3回目：X = 1:
N回目：X = 0

何度繰り返しても同じ値。
当たり前。

決められた確率で決められた値が出現するので0.5等の数は出ない。
かつ繰り返す度に異なる値になる為再現性が無い。

6

LangEdge,Inc.

二重スリット実験 （光の波動性）
二重スリット通過後に干渉縞が表示される。と言うことは光に波動性があることを示す。
干渉縞は同じ位相を持つ光源が2つあり、距離により位相が強めあう場所と弱めあう場所がある為に生じる現象である。

光源

スリット

スクリーン

光子銃
干渉縞

スリット

光子1個ずつ発射可能な光子銃と光子1個を認識できるスクリーンを使う。光子1個ずつを打ち出しても繰り返すうちに干渉縞が出てくる。
つまり光子1個でも波動性があることになる。

重ね合わせ状態（波動性）

最初の 繰り返し後スクリーン スクリーン7

LangEdge,Inc.

二重スリット実験の観測問題
観測問題：どちらのスリットを通過したかを観測することにより干渉縞が出なくなる。
コペンハーゲン解釈では観測することで量子干渉が壊れて粒子として収束していると考える。
しかし他にも解釈は存在しており（平行宇宙論等）、正確なことは分かっていない。

スリット
観測することで波動性が壊れ粒子性に収束すると考えられる。

観測

観測あり観測無し
観測すると観測縞は現れない。

光子銃

異なる
観測

測定（粒子性）
波動関数の収束

8

LangEdge,Inc.

波動と粒子の二重性 （量子重ね合わせ）
観測しなくても時間が経つと崩壊する

観測

重ね合わせ状態（波動性）

固有値状態（粒子性）
収束

波動関数（列ベクトル）を|ψ と表現すると|ψc0|ψ0c1|ψ1|c0|2 |c1|2 1.0
c0 と c1 は複素数

量子デコヒーレンス

複数の状態が同時に存在して量子干渉を生じている（コペンハーゲン解釈）

固有状態のうち1つの状態|ψ0⟩ または |ψ1⟩ のいずれか波動性は失われる
複素数虚数部は意味を持たない

コペンハーゲン解釈では、粒子状態は波動がパルス状になったと考える。
位置が決まると波長は定まらなくなる。

※ コヒーレンス時間（状態の量子干渉が失われるまでの時間）は短い。

9LangEdge,Inc.

量子ビット （重ね合わせの実現）
0と1の量子重ね合わせの状態が可能な単位。
観測により2つの固有値（0か1）に収束する。
物理的に実現するには幾つかの方法がある。
方式

概要

開発

超伝導
量子ビット

現在主流となっている超伝導状態のシリコン回路で量子ビットを実現する方式（極低温）

IBM, Google,
D-Wave

イオントラップ

捕獲したイオンをレーザーで冷却して利用（室温）
理論的には量子ビット間の全結合が可能

IonQ

量子ドット

原子10～50個で構成した微小半導体を利用（極低温?）

Intel

トポロジカル

超電導体とトポロジカル絶縁体による量子ビット（極低温?）

Microsoft

NVセンター

ダイヤモンドの炭素を窒素に置き換えて生じる欠損部に電子を捕獲して量子ビットに利用（室温）（研究レベル）

光パルスを量子ビットとして利用（室温）
全結合によるアニーリング型の計算が可能（らしい）

NTT/NII/東大（ImPACT）

ダイヤモンド窒素-空孔中心

QNN
量子ニューラルネットワーク

10LangEdge,Inc.

可逆コンピュータは非量子な場合には低電力になっても低性能になる為にほぼ実用化されていない。

可逆コンピュータ

情報が失われる時にエネルギー（熱）が消費される。
可逆コンピュータが実現すると低電力化が可能となる。
IBMから1960年代に出た理論で今も研究が続いている。
※ 量子コンピュータは可逆コンピュータの一種である。
NOTゲートANDゲートCNOTゲート

AX

A

A

X

1

001

出力から入力が再現できるので可逆

可逆

X

B

energy

AX

B

Y

A

B

X

A

B

X

Y

00000000

100

10

1

10

0

10

1

1

1

1

1

1

1

10

出力から入力が再現できない

非可逆（量子計算では使えない）

可逆

Yだけ見るとXOR

11LangEdge,Inc.

量子もつれ（量子エンタングルメント） 量子もつれは、2つの粒子（量子ビット）が互いに影響をおよぼし合い、一方を測定すると、もう一方の値が確定する現象である。
 複数の量子ビット間を、量子もつれにより関連付けることで量子回路を構築する。以下HとCNOTによる例。
CNOTゲート。

重ね合わせ状態を作る
アダマール（H）ゲート。

|0|0

H

X1
Y1

X2
Y2

X2(X1)が確定するとY2も確定する。
上(X)と下(Y)の2つの量子ビットが量子もつれの状態になっている。

X1
Y1|0⟩ : 50%|0⟩|1⟩ : 50%

X2 X1 |0⟩ : 50% |1⟩ : 50%
X1が |0⟩ なら Y2も |0⟩ （Y1そのまま）
X1が |1⟩ なら Y2も |1⟩ （Y1を反転する）

X2Y2 |00⟩ : 50% |11⟩ : 50%※ |01⟩ や |10⟩ は 0%

12LangEdge,Inc.

量子コンピュータの概要
1. 0と1の2つの基底を持つ複数の量子ビットを利用。
2. 重ね合わせた状態のままで量子並列演算を行う。
3. 量子ビット同士を絡み合わせて量子回路を構築。
4. 重ね合わせ状態の出力を観測して固有値に収縮。
5. 繰り返し実行し確率的な固有値の出力分布を得る。
→ 二重スリット実験時に光子の分布により干渉縞を確認するようなもの。
入力（初期）
データ

量子回路（量子並列演算）※ 可逆回路観測（固有値に収縮）

繰り返し実行（100～1000回程度）

出力（結果）
データ実行の度に異なる値になる。

出力分布（最終結果）

LangEdge,Inc.

13

量子コンピュータの種類
量子ゲート型 （狭義の量子コンピュータ）
方式： 量子ゲートの量子回路による量子計算
対象問題： 汎用 （ただし量子アルゴリズムの範囲内）
開発企業： IBM/Google/Intel/Alibaba/Microsoft等

量子アニーリング型 （正確には量子シミュレータ）方式： イジングモデルを使った量子シミュレーション
対象問題： 最適化問題特化 （深層学習等への応用）
開発企業： D-Wave （非量子型では富士通と日立）※ 非量子：富士通 「デジタルアニーラ」、日立 「CMOSアニーリングマシン」。
※ 他に光を使ったCIM（コヒーレントイジングマシン）もあるがここでは省略。

14

LangEdge,Inc.

量子ゲート型とソロバン
ソロバンは珠（たま）を配置したハードウェアを、指で弾いて行くことで計算を進めて行く。各珠の間には桁上がり等の関連性がある。
操
作
量子ビット

HやCNOT等の操作

もつれ

操
作

操
作
量子ビット

もつれ

量子ビット

量子ゲート型は量子ビットを配置したハードウェアを、レーザーや電界で弾いて行くことで計算を進めて行く。
各量子ビット間には量子もつれによる関連性がある。
ソロバンは可逆回路でもある。またソロバンは同じ操作をすれば毎回同じ値になるが量子では異なる。

15

LangEdge,Inc.

量子アニーリング型の計算
初期状態
エネルギー小量子アニーリング

中間状態
量子トンネル効果のすり抜けが発生する

量子ビット間をもつれ合わせて重ね合わせ状態を作るので最初はフラットなモデル。

収束するにつれてモデルが出来てくる。

最終状態重ね合わせが解消して収束した結果。

局所解になる場合も。

時間と共に量子重ね合わせ状態が解消されていく（横磁場を弱めて行く）

量子アニーリングでは量子ビット間の全結合（もつれ）が理想だが…

壁を超えられない場合もある。

シミュレーテッド
アニーリング

シミュレーテッドアニーリングは先にモデルをセットしてから最適解を求めて行く。
シミュレーテッドアニーリングは古くから使われており、現在でも富士通や日立が専用ハードウェアを使ったアニーリングを実現（例：デジタルアニーラ）している。

16

LangEdge,Inc.

NISQの時代（今後5～10年程度）
Q2B: QUANTUM FOR BUSINESS 2017
物理学者 John Preskill による基調講演の論文「Quantum Computing in the NISQ era and beyond 」
https://arxiv.org/abs/1801.00862

NISQ: Noisy Intermediate-Scale Quantum
ノイズエラーがあり中規模量子ビット数の時代
私見：

50～数百量子ビット程度

現在は標準ハードウェアと標準ソフトウェア（アルゴリズム）を確立する時期で、特にソフトウェアは量子シミュレータを使って勉強しておくことで量子コンピュータ時代に備える。

17

LangEdge,Inc.

量子コンピュータの未来予想
量子超越

RSA暗号解読（古典コンピュータでは解けない問題）

2015

2018

2023～2030

2040～2060くらい（予測困難）

万能 （Universal）

量子加速

NISQ

（Quantum Speedup）

ノイズあり中規模

どこかでブレークスルーを生じる
可能性はゼロではないが…

量子コンピュータ

実用性
汎用性

ほぼない

一部あり

あり

（一部を除き古典機の方が早い）（古典機よりも早い分野がある）（ただし得意不得意はある）

信頼性

ノイズ（エラー）あり（部分的な） エラー訂正

エラー訂正あり

量子数

50～数百

（エラー訂正あり） 50～数千

数万以上

利用形態

専用機

専用機・外部接続装置

単独・古典機と融合

参考：（ノイマン型）古典コンピュータの歴史
1950

1955

1970

第１世代

第２世代

第３世代

真空管・試用や研究

トランジスタ・商用化

集積回路・パーソナル化

18

LangEdge,Inc.

量子計算フレームワーク （量子ゲート型）
IBMやGoogleは自社量子コンピュータを使う為の量子計算フレームワークを公開している。実機だけではなくシミュレーション機能を持っているので、量子プログラミングの勉強用として最適だが小規模の量子回路のみとなる。
IBM Qiskit

Google Cirq

構成

Terra: 量子計算の基盤部（Python）
Aqua: 量子アルゴリズムのライブラリ
OpenQASM: 量子低レベル中間言語

Cirq:量子計算基盤Pythonライブラリ
OpenFermion: 量子化学ライブラリ提供

オープンソース（GitHub）

オープンソース（GitHub）

取得

https://qiskit.org/
https://github.com/Qiskit

https://github.com/quantumlib/Cirq

情報https://qiskit.org/documentation/ja/

https://cirq.readthedocs.io/en/latest/

IBM Q Experience: GUI利用

2018年夏に正式公開されたライブラリ
量子コンピュータ実機はまだ使えない項目
ロゴ

その他 ※ GUIからOpenQASMに展開し実行
https://quantumexperience.ng.bluemix.net/

LangEdge,Inc.

19

Q-LEAP （光・量子飛躍フラッグシッププログラム）
https://www.jst.go.jp/stpp/q-leap/

文部科学省の日本国産プロジェクト。
今後10年で国内産学共同で100量子ビット（量子超越）の量子コンピュータやインフラ（開発環境）を開発する…予定だそうです。
人材育成も目的とのことですので、今後日本でもますます量子計算ができる人が求められる時代が来るでしょう。

LangEdge,Inc.

20

量子ゲート型の状況は…
レベルから言えばアセンブラ言語の利用に近い。
アセンブラ言語はハードウェアに密接に関連しているのでハードウェアを理解しないと使えない。
同様に量子回路もIBMはQASM言語に変換して実行している。つまりアセンブラ言語だ。IBMのQiskitはQASMのPython用ラッパーに過ぎない。
今後、量子アルゴリズムAPIを備えたSDKが必要。
プログラマが勉強すべきは量子アルゴリズムAPIの使い方になるだろう。現在SDKを提供している各社はそのレベルを目指しているように見える。

21

LangEdge,Inc.

サル量子部
https://www.ossal.org/qc/

2019夏 に勉強会（サル量子#1）を開催予定

古典プログラマの為の量子プログラミング入門
ショアの第1部：関連数学と1量子ビット計算
アルゴリズムもやります。
第2部：量子ゲート型のプログラミング
第3部：量子アニーリング型のプログラミング

22

LangEdge,Inc.

サル量子
#1の内容

Part 0： イントロダクション（プロローグ）

Part 1： 関連数学と1量子ビット操作
1-1： 線形代数学の基本知識
1-2： ブラケット記法と量子計算
1-3： ブロッホ球と1量子ビット操作
1-4： IBM Q

Part 2：量子ゲート型のプログラミング
2-1： 複数量子ビット操作
2-2： 量子アルゴリズムの基本
2-3： ドイチェ アルゴリズム
2-3： グローバー検索（量子検索）
2-4： 量子フーリエ変換
2-5： ショアのアルゴリズム
2-6： エラー訂正問題
2-7： Cirq （Google）・Blueqat （MDR）

23

LangEdge,Inc.

さんきゅ〜!
http://scienceinoh.jp/schrodinger/