Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

量子アニーリングマシンのプログラミング

4,601 views

Published on

量子アニーリングマシン(イジングマシン)の入力であるイジングモデルの設計方法について

Published in: Education

量子アニーリングマシンのプログラミング

  1. 1. 量子アニーリングマシン (イジングマシン) のプログラミング 2018-01-12 サイボウズラボ勉強会 西尾 泰和 2018-01-26 加筆
  2. 2. このスライドの目的 • 量子アニーリングマシンについて解説 • 量子アニーリングマシンで問題を解くための 入力フォーマット「イジングモデル」を解説 • イジングモデルの設計の仕方を解説 2
  3. 3. 量子コンピュータ いわゆる「量子コンピュータ」には2種類ある 量子ゲート方式: 素因数分解などが理論上指数関 数的に早く解けるアルゴリズムが知られているが 今のところ約20qbit程度しかない 量子アニーリング方式: 最適化問題を早く解けそ うな気配がある(理論的保証なし、要実験) 2011年にD-waveが商用販売を開始。約2000qbit このスライドでは量子ゲート方式の話はしない 3
  4. 4. イジングモデル 二値変数の間の関係をイジングモデルで記述する コスト(ハミルトニアン)を定義する形になる。 コストが最小になる解が高い確率で出てくる 4 解きたい問題をどうやってこの式の形に落とすか がアニーリングマシンでのプログラミングに相当 ℋ = − ෍ 𝑖𝑗∈𝐸 𝐽𝑖𝑗 𝑥𝑖 𝑥𝑗 − ෍ 𝑖∈𝑉 ℎ𝑖 𝑥𝑖 注: 一般的な物理ではハミルトニアンは2次の項までで制限されない。 イジングモデルの制約。今回はスコープ外なので使い分けないがQUBOとも呼ぶ。
  5. 5. 普通のプログラミングと違う C言語などのような手続型の言語でのプログラミ ングとは全く違う SATソルバに似ている: 二値変数の間の関係をCNF の形で記述し、SATソルバに入力すると、非充足 な項を最小化する解*が返る 再掲: 二値変数の間の関係をハミルトニアンの形 で記述し、アニーリングマシンに入力すると、 ハミルトニアンを最小化する解が返る 5 * 充足する(非充足項=0)の時は確実にそれが返る。非充足の時に何が返るかは実装次第
  6. 6. 「量子」でないアニーリングマシン (例)富士通のデジタルアニーラ: イジングモデルを入力として取るのは同じ 最適化に量子効果を使うのではなく FPGAで専用回路を組むことによって高速化 長所: 量子効果のために超低温まで冷やす必要が ない。普通の半導体なので普通に設置できる。 グラフが全結合*。 短所: 「量子~」ではない 6 * D-waveのマシンは辺を張れない場所があるため 解きたい問題をその制約の下で表現する、という 別の最適化問題を事前に解く必要がある
  7. 7. 「量子」である必要はあるのか? 解きたい問題が高速に解けるなら量子かどうかと 無関係にビジネス上は有用である。 常温で動くこともデバイス設置場所の自由度を上 げてビジネス上有用。GPUが乗ったグラフィック ボードがCPUと分業して問題を解いてきたように イジングモデル処理ユニットが乗ったボードが CPUと分業するかも。 →今後、量子かどうかは気にせず、まとめて 「イジングマシン」と呼ぶことにする 7
  8. 8. コンピュータの歴史のおさらい 8
  9. 9. 1952年 IBM 701 IBMの最初の商用コンピュータ 9 画像出典: https://en.wikipedia.org/wiki/IBM_701 真空管1071本 月額レンタル料1~2万ドル
  10. 10. 1954~1957年 FORTRAN • FORmula TRANslation system(数式変換系) • 現代のほぼすべてのプログラマが使う 「プログラミング言語」のはしり • 抽象レベルの高い数式で書いた指示を 抽象レベルの低い機械語で書いた指示に 変換するシステム(自動プログラミング*) 10 * “The Fortran Automatic Coding System for the IBM 704” (1956) システムができたのが54年、このマニュアルができたのが56年、 一般に入手可能になったのが57年。
  11. 11. プログラミング言語の歴史 11 http://cdn.oreillystatic.com/news/graphics/prog_lang_poster.pdf
  12. 12. プログラミング言語の歴史 12 http://cdn.oreillystatic.com/news/graphics/prog_lang_poster.pdf
  13. 13. 2011年 D-wave One 初の商用量子アニーリングマシン 13 写真は128qbit 売値は1000万ドル~1500万ドルと言われる Photo by D-Wave Systems, Inc.
  14. 14. 参考: Alloy SATソルバに入力するCNFを 人間に分かりやすい記述で生成するための言語 14 抽象によるソフトウェア設計−Alloyではじめる形式手法 sig Object{ has: one Object } run { some Object } for exactly 3 Object p cnf 57 78 -2 -1 -10 0 10 -14 0 -1 11 0 -2 11 0 1 2 -11 0 : 57変数、78節 (not v2 or not v1 or not v10) and (v10 or not v14) and …
  15. 15. イジングモデルプログラミング言語 新しい計算デバイスが商用化されると、顧客は 「より低いコストでプログラムを書きたい」 という商業上のインセンティブを持つ →プログラミング言語の発展を進める力になる イジングモデルを人間に分かりやすい記述で生成 するための高級言語がたくさん生まれるだろう。 15
  16. 16. イジングモデルの設計 実際にいくつかの問題について イジングモデルの設計方法を学ぼう この2つのパラメータを決める 16 ℋ = − ෍ 𝑖𝑗∈𝐸 𝐽𝑖𝑗 𝑥𝑖 𝑥𝑗 − ෍ 𝑖∈𝑉 ℎ𝑖 𝑥𝑖 参考文献: [1302.5843] Ising formulations of many NP problems https://arxiv.org/abs/1302.5843 Q: EとVって何? A: グラフの辺と頂点の集合。慣習的にこう書かれてるけど グラフを全結合にしてiやjが1~Nを走りJijやhiは単なる行列とベクトルと考えてもよい
  17. 17. Number Partition N個の数が与えられる。 これを2つのグループに分けて グループごとの和が一致するようにせよ 例 {1, 2, 3, 4, 5, 6, 7, 8} → {1, 4, 5, 8} {2, 3, 6, 7} どうすればこの問題を解くイジングモデルが 実現できるか考えてみよう! 17
  18. 18. Number Partition ヒント: N個の数があるので、N個の二値変数を用意し それの値が+1か-1かでどちらのグループかを 表現するようにしよう。 18
  19. 19. Number Partition 解答編 かっこの中身が「グループごとの和」の差になる 2乗した値は、中身が0の時に最小値になる。 19 ℋ = ෍ 𝑖∈𝑉 𝑛𝑖 𝑥𝑖 2 ℋ = ෍ 𝑖∈𝑉 ෍ 𝑗∈𝑉 𝑛𝑖 𝑛𝑗 𝑥𝑖 𝑥𝑗
  20. 20. 最初なので一応確認 展開してみる ℋ = ෍ 𝑖∈𝑉 ෍ 𝑗∈𝑉 𝑛𝑖 𝑛𝑗 𝑥𝑖 𝑥𝑗 これは ℋ = − ෍ 𝑖𝑗∈𝐸 𝐽𝑖𝑗 𝑥𝑖 𝑥𝑗 − ෍ 𝑖∈𝑉 ℎ𝑖 𝑥𝑖 𝑤ℎ𝑒𝑟𝑒 𝐸 = 𝑖, 𝑗 𝑖 ∈ 𝑉, 𝑗 ∈ 𝑉 , 𝐽𝑖𝑗 = −𝑛𝑖 𝑛𝑗, ℎ𝑖 = 0 20
  21. 21. 補足: 二値変数 二値変数が {0, 1} だとするケースと {-1, +1} だとするケースがあるけど、 どちらかの仕様で二次の項までで表現できれば もう片方の仕様でも二次の項まえで表現できる 𝑥𝑖 ∈ 0, 1 , 𝑦𝑖 ∈ {−1, +1}について 2𝑥𝑖 − 1 = 𝑦𝑖の時 𝑦𝑖 𝑦𝑗 = 4𝑥𝑖 𝑥𝑗 − 2𝑥𝑖 − 2𝑥𝑗 + 1 21
  22. 22. Exact Cover(言葉での説明) サイズnの集合Uがある Uの部分集合Viがm個ある Vの中からいくつか選んで、 どの2つもdisjointで、 かつ全部unionしたらUになるようにせよ 22
  23. 23. Exact Cover(数式での説明) 日本語はあいまいなので数式で書く。 𝑈 = {𝑥𝑖|0 ≤ 𝑖 < 𝑛} 𝑉 = 𝑉𝑖 𝑉𝑖 ⊂ 𝑈, 0 ≤ 𝑖 < 𝑚 がgivenとして、以下の条件を満たすSを求めよ 𝑆 ⊂ 𝑉 𝑓𝑜𝑟 𝑎𝑙𝑙 𝑆𝑖, 𝑆𝑗 ∈ 𝑆, 𝑆𝑖 ∩ 𝑆𝑗 = 𝜙 ራ 𝑆 𝑖∈𝑆 𝑆𝑖 = 𝑈 23
  24. 24. Exact Cover(実例と図解での説明) {V1, V2}は、unionはUだが、disjointではない {V2, V3, V4}はdisjointでunionがUなのでこれが解 この問題をどうやってイジングモデルで表現する か? 24
  25. 25. 発想の転換 “どの2つもdisjointで、かつ全部unionしたらU” と “任意の頂点について、 Sの中に出現する回数は1である” は等価である 25
  26. 26. 発想の転換(数式での説明) 以下のように定義すると 𝑆𝑖𝑗 ≔ ൝ 1 ⋯ 𝑥𝑖 ∈ 𝑆𝑗 0 ⋯ 𝑥𝑖 ∉ 𝑆𝑗 以下が言える ∀𝑖, ෍ 𝑗 𝑆𝑖𝑗 = 1 なぜなら 26 ∀ 𝑆𝑖, 𝑆𝑗 ∈ 𝑆, 𝑆𝑖 ∩ 𝑆𝑗 = 𝜙 ֞ ∀𝑖, ෍ 𝑗 𝑆𝑖𝑗 < 2 ራ 𝑆𝑖∈𝑆 𝑆𝑖 = 𝑈 ֞ ∀𝑖, ෍ 𝑗 𝑆𝑖𝑗 > 0
  27. 27. 次の一歩 ∀𝑖, ෍ 𝑗 𝑆𝑖𝑗 = 1 これをイジングモデルで表現する 27
  28. 28. Exact Cover解答 iは頂点を走る。jはm個のVを走る。 xjは{0, 1}で「VjがSの要素のとき1」とする。 具体的なVがgivenならSijの{0, 1}の値が確定し 単に展開すればHはxの2次までの項で表現できる 28 ℋ = ෍ 𝑖 1 − ෍ 𝑗 𝑆𝑖𝑗 𝑥 𝑗 2
  29. 29. 余談: Alloyのone述語 Alloyでは変数の集合に対して 「この集合の中の1つだけがTrueである」 と宣言する述語oneが存在する。 29
  30. 30. 塗り分け グラフの頂点を白黒2色で塗り分けて 「辺の両端は違う色である」 という条件を満たすにはどうしたらよいか。 30
  31. 31. 塗り分け解答 色は{+1, -1}とする 同じ値の時に正の値、 異なる値の時に負の値になる。 値が小さくなるように最適化を掛けるので 両端の色が異なる辺が多くなる方向に進む。 これ排他的論理和だよね。 31 ℋ = ෍ 𝑖𝑗∈𝐸 𝑥𝑖 𝑥𝑗
  32. 32. Vertex Cover グラフを白黒2色で塗り分けて 「辺の少なくとも片方は黒である」 という条件を満たしつつ、 黒の頂点を最少にするにはどうしたらよいか。 32 補足: 「黒の頂点を最少にする」という条件がなければ全部黒で塗ればいい
  33. 33. Vertex Cover解答 色は{0, 1}とする 両方0である時にペナルティを発生させたい 1から引くことで論理否定して、 掛け算することで論理積を取り、 頭にマイナスがついてないので論理否定され、 結果的にこれ論理和だよね。 33 ℋ = ෍ 𝑖𝑗∈𝐸 (1 − 𝑥𝑖)(1 − 𝑥𝑗) ド・モルガンの法則!
  34. 34. ここまでのまとめ one, xor, and, not, orが出てきた 34
  35. 35. 今回のラスボス: 3SAT N個の二値変数がある。これを連言標準形で組み 合わせた論理式が与えられる。 論理式を充足するように各変数の真偽値を定めよ 連言標準形とは: m個の節がandで結ばれており、 各節の中はorで結ばれている形。 例: (x1 or x2 or x3) and (x3 or not(x1) or x4) 今回は各節の中の変数が最大3個とする(3SAT) 35
  36. 36. 組み合わせて… andやorやnotはもう出て来ているから 組み合わせればいい! …というのはCPU脳 36
  37. 37. 三次の項 a and b and c は手続型の考え方のCPU脳では 「a and bを計算してxとし、 それからx and cを計算すればよい」となる 一方、二値変数を{0, 1}としたら a and b は a * b で表現できるが、 a and b and c は a * b * c になって 三次の項になってしまう! 37
  38. 38. 三次の項を二次に落とすルール もし仮に新しい変数xを導入して ab = x となる制約を作ることができれば 三次の項abcは二次の項xcに落とせる ab = x はどうすれば作れるか? 38
  39. 39. 全通り書き出してみる *: ab=c とする。 a b c ab bc ca * 0 0 0 0 0 0 T 0 0 1 0 0 0 F 0 1 0 0 0 0 T 0 1 1 0 1 0 F 1 0 0 0 0 0 T 1 0 1 0 0 1 F 1 1 0 1 0 0 F 1 1 1 1 1 1 T 39
  40. 40. 数学パズル Tの時0、Fの時正の値になるような式Hを作れ a b c ab bc ca * 0 0 0 0 0 0 T 0 0 1 0 0 0 F 0 1 0 0 0 0 T 0 1 1 0 1 0 F 1 0 0 0 0 0 T 1 0 1 0 0 1 F 1 1 0 1 0 0 F 1 1 1 1 1 1 T 40
  41. 41. 数学パズル Tの時0、Fの時正の値になるような式Hを作れ a b c ab bc ca * 0 0 0 0 0 0 T 0 0 1 0 0 0 F 0 1 0 0 0 0 T 0 1 1 0 1 0 F 1 0 0 0 0 0 T 1 0 1 0 0 1 F 1 1 0 1 0 0 F 1 1 1 1 1 1 T 41 H=c で8ケース中6ケース充足 111の時、H=0にしなければ ならない 110の時、H>0にしなければ ならない
  42. 42. 111の時H=0 「他に影響せずに111の時だけ-1する」 →無理。「111の時だけ」を表現するのに 三次の項が出てくる どういう影響なら許されるか? →非0の値が、別の非0の値に変わるのはOK 42
  43. 43. 数学パズル Tの時0、Fの時正の値になるような式Hを作れ a b c ab bc ca * H 0 0 0 0 0 0 T 0 0 0 1 0 0 0 F 2 0 1 0 0 0 0 T 0 0 1 1 0 1 0 F 1 1 0 0 0 0 0 T 0 1 0 1 0 0 1 F 1 1 1 0 1 0 0 F 0 1 1 1 1 1 1 T 0 43 H=2c – bc – caなら 111の時H=0 次は110の時H>0を 目指す
  44. 44. 数学パズル a b c ab bc ca * 0 0 0 0 0 0 T 0 0 1 0 0 0 F 0 1 0 0 0 0 T 0 1 1 0 1 0 F 1 0 0 0 0 0 T 1 0 1 0 0 1 F 1 1 0 1 0 0 F 1 1 1 1 1 1 T 44 110の時H>0で Tの時0になるような式H’ があれば、それを足して やればよい a, bの係数は0であるべき ab, bc, caが100の時正で 111の時0になる式H’ 2ab – bc – ca はどうか?
  45. 45. 数学パズル a b c ab bc ca * H' 0 0 0 0 0 0 T 0 0 0 1 0 0 0 F 0 0 1 0 0 0 0 T 0 0 1 1 0 1 0 F -1 1 0 0 0 0 0 T 0 1 0 1 0 0 1 F -1 1 1 0 1 0 0 F 1 1 1 1 1 1 1 T 0 45 2ab – bc – ca は 011と101 で-1になる これが悪影響を及ぼさな いためにはその2つのケー スでH>1である必要があ る H=2c – bc – caだと1にな るのでH=4c – 2bc – 2caに すればよいのではないか
  46. 46. 数学パズル 合計すると H=4c+2ab-3bc-3ca 検算してみるとHは Tの時0、Fの時正の値 めでたしめでたし 46 a b c ab bc ca * H 0 0 0 0 0 0 T 0 0 0 1 0 0 0 F 4 0 1 0 0 0 0 T 0 0 1 1 0 1 0 F 1 1 0 0 0 0 0 T 0 1 0 1 0 0 1 F 1 1 1 0 1 0 0 F 2 1 1 1 1 1 1 T 0 Tの時0、Fの時正の値になるような式Hを作れ
  47. 47. 三次の項を二次の項に というわけでH = abcは H=cd+4d+2ab-3bd-3da 検算してH=0の所を観察すると 確かにabc=0になる7パターンだけが H=0になっている 47 0,0,0,0: H=0 0,0,0,1: H=4 0,0,1,0: H=0 0,0,1,1: H=5 0,1,0,0: H=0 0,1,0,1: H=1 0,1,1,0: H=0 0,1,1,1: H=2 1,0,0,0: H=0 1,0,0,1: H=1 1,0,1,0: H=0 1,0,1,1: H=2 1,1,0,0: H=2 1,1,0,1: H=0 1,1,1,0: H=2 1,1,1,1: H=1
  48. 48. 解法1 上記解法1は参考にしたサイト*で 変換式が天下り的に与えられていたので 「ab=dの制約を入れる」という点だけ採用して 変換式を自力で導出してみたもの 参考サイトと違う形の式になった! というわけで別解は色々ありそう、試してみよう 48 * イジング模型への変換 – Quantum Computing Information Site https://quantum.fixstars.com/introduction_to_quantum_computer/ quantum_annealing/programming/conversion/
  49. 49. 解法2 abcはすべてが1の時だけ1 つまり (a + b + c) = 3 の時だけ 1 H = (a + b + c – 3) ** 2 とやると 111の時だけ0… あ、目的と逆だ… 49 0,0,0: H=9 1,0,0: H=4 0,1,0: H=4 1,1,0: H=1 0,0,1: H=4 1,0,1: H=1 0,1,1: H=1 1,1,1: H=0
  50. 50. 解法3: 機械学習 イジングモデル設計とはいわば N^2+N個の係数を定める作業 機械学習の一部のアルゴリズムは 「好ましいふるまいについてのデータ」 を与えることで係数を調整するアルゴリズム →連携できるのではないか? 50
  51. 51. 実験 3bitの入力とその2次までの掛け合わせを 入力データとしてロジスティック回帰 →線形識別できて、係数は以下のようになった 7.8 * (ab + ac + bc) - 1.12 * (a + b + c + a^2 + b^2 + c^2) 51
  52. 52. 検算 111の場合だけハミルトニアンが かなり大きくなることがわかる(差15以上) 52 a b c aa ab ac bb bc cc [0, 0, 0, 0, 0, 0, 0, 0, 0] 0 0.0 [1, 0, 0, 1, 0, 0, 0, 0, 0] 0 -2.24494646 [0, 1, 0, 0, 0, 0, 1, 0, 0] 0 -2.24494646 [1, 1, 0, 1, 1, 0, 1, 0, 0] 0 3.33641013 [0, 0, 1, 0, 0, 0, 0, 0, 1] 0 -2.24494646 [1, 0, 1, 1, 0, 1, 0, 0, 1] 0 3.33641013 [0, 1, 1, 0, 0, 0, 1, 1, 1] 0 3.33641013 [1, 1, 1, 1, 1, 1, 1, 1, 1] 1 16.74406977
  53. 53. 任意のNbit入力 入力ビット数を増やしても線形分離 =任意のNbitの乗算をNbitで近似できる ただしビット数の指数オーダーの時間がかかる ビット数 所要時間(秒) 12 0.495441913605 13 1.25184321404 14 2.98895788193 15 6.37683296204 16 19.0442888737 17 34.7080688477 18 97.6587619781 53
  54. 54. future work • 今回ロジスティック回帰で実験したが、 解法1をやってみて「0か非0か」が重要だと わかったのでコスト関数の工夫が有益そう • 数学パズルの解法を言語化できれば それを素朴に実装して探索問題として 解くこともできるかも 54
  55. 55. future work • 今回ロジスティック回帰で実験したが、 要求仕様に合わせてコスト関数を変えた方が 良さそう • Trueの場合とFalseの場合に十分な差があれば十分 or Tの時にHが0である必要がある or T, Fが{0, 1}に対応する必要がある • 数学パズルの解法を言語化できれば それを素朴に実装して探索問題として 解くこともできるかも 55
  56. 56. 数学パズルの解法 今回の僕の解法を言語化しておく • まず最も要求を充足する変数を選ぶ • 非充足な行を充足に変える方法を考える • 非0を0にする方が制約が厳しいので優先 • 0を非0にする修正に関しては、 他の非0の行に影響を与えてもよい 正の影響なら無視、負の影響なら適当にス ケールすることで影響をなくせる 56
  57. 57. 追記 中谷さんからab=cの数学パズルに関して 線形不等式の解を求める問題として捉えたら 探索空間の次数が割と小さくて網羅的探索できる という指摘がありました。 整数係数の範囲で c=3 では ab=1, bc=ca=-2 の1つだけ。 c=4 では ab=2, bc=ca=-3 と ab=1, bc=-2, ca=-3と ab=1, bc=-3, ca=-2 の3通りがあり、 cを増やすと無数にあるとのこと。 57
  58. 58. まとめ • イジングマシンの上でのプログラミングは 係数を調整して二次式を組み立てること • 機械学習などの既存の手法を使って 人間の「プログラミング」を支援出来そう • きっとこれに特化したプログラミング言語が 生まれてくるに違いない →とても面白い 58
  59. 59. 59
  60. 60. 追記 60
  61. 61. SATの実応用問題の大きさ 最も大きいもので200万変数 61 http://www-erato.ist.hokudai.ac.jp/docs/seminar/nabeshima.pdf
  62. 62. ビット数の観点 今CPU上でのSATで競われている問題 (出題されるが大きすぎて解けない問題) が現時点のアニーリングマシン(2000qbit)の およそ1000倍の大きさ。 qbitが仮に1.5年で2倍になるとすると その規模に達するのは15年後。 ビットコインのマイニングで CPU→GPU→FPGA→ASICの流れに掛かった年数を 考えると、金が絡めば速くなるのではとも思う。 62
  63. 63. 商業的観点 そもそもSATはCPU上で効率よく解く方法を 長年試行錯誤されてカリカリチューンされてる。 SATで解ける問題はSATソルバーに押し付けて SATの形にうまくフィットしない問題を イジングマシンで解くという分業が良さそう。 3D描画のニーズでGPUが生まれ AI高速化のニーズでTPUが生まれたように Ising Processing Unitが生まれてCPUと分業する のが正しい進化の方向なのではないかと僕は思う 63

×