アニーリングマシン向け - ipa · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0...

24
アニーリングマシン向け プログラミング言語 SpoonQ 小津 泰生 (担当: 棚橋 PM) 2020/02/09 名古屋大学 理学研究科 St

Upload: others

Post on 12-Aug-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

アニーリングマシン向け

プログラミング言語 SpoonQ

小津 泰生 (担当: 棚橋 PM)

2020/02/09

名古屋大学 理学研究科 St研

Page 2: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

0 10 20 30 40 50 60

0

10

20

30

40

50

602.0

1.5

1.0

0.5

0.0

0.5

1.0

1.5

2.0

2

行列の例a11 a12 a13 · · · a1Na21 a22 a23 a2Na31 a32 a33 a3N

.... . .

...

aN1 aN2 aN3 · · · aNN

Page 3: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

H =A1

∑v∈V

(1−

N∑j=1

xv,j

)2

+ A2

N∑j=1

(1−

∑v∈V

xv,j

)2

+ A3

∑(u,v)̸∈E

N∑j=1

xu,jxv,j+1 + A4

∑(uv)∈E

Wuv

N∑j=1

xu,jxv,j+1

3

Page 4: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

4

⃝ citiesの定義

distanceの定義} 最小化

なんとなく分かる

※最新版とは仕様が異なります

Page 5: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

高輪ゲートウェイ

5

Page 6: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

6

鹿島サッカースタジアム駅

空港第 2 ビル駅

行川アイランド駅

千葉みなと駅八王子みなみ野駅 四ツ谷駅

さいたま新都心駅

あしかがフラワーパーク駅

41.1km

119km

74.2km139km 99.3km

106km

123km

86.4km

37.9km110km 70.0km

78.7km

113km

67.4km121km 108km

125km

174km

81.1km 41.5km

57.6km

107km

40.6km

45.1km

88.9km

26.6km

81.7km

54.9km

KS

KD

NI

CMHM YT

SF

AF

※道のりは正確ではありません c⃝CC-BY-SA c⃝OpenStreetMap

Page 7: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

巡回セールスマン問題とは

制約条件

すべての を 1度ずつ訪問し戻ってくるルートの中で

最適化項

道のりが最短なものを 求める。

制約条件+最適化項= 組合せ最適化問題

7

Page 8: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

8

⃝ citiesの定義

distanceの定義} 最小化

※最新版とは仕様が異なります

Page 9: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

9

KS

KD

NI

CMHM YT

SF

AF572.5km

c⃝CC-BY-SA c⃝OpenStreetMap

Page 10: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

組合せ最適化問題

世の中の多くの問題は

組合せ最適化問題 で記述される

アニーリング によって

組合せ最適化問題を早く解けるようになると期待されている

10

Page 11: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

他の組合せ最適化問題の例

• グラフ分割問題

• 集合詰め問題

• 頂点被覆問題• 最小最大マッチング問題• グラフ彩色問題• ハミルトン閉路問題• ...

11

type group A | B | Cgroup [ @NODE_1, @NODE_2, @NODE_3, @NODE_4, @NODE_5, @NODE_6, @NODE_7, @NODE_8 ] : pminimize {

1 : @NODE_1 == @NODE_21 : @NODE_1 == @NODE_31 : @NODE_1 == @NODE_51 : @NODE_1 == @NODE_61 : @NODE_1 == @NODE_81 : @NODE_2 == @NODE_41 : @NODE_2 == @NODE_51 : @NODE_2 == @NODE_71 : @NODE_3 == @NODE_41 : @NODE_3 == @NODE_51 : @NODE_3 == @NODE_61 : @NODE_3 == @NODE_81 : @NODE_4 == @NODE_51 : @NODE_4 == @NODE_71 : @NODE_5 == @NODE_71 : @NODE_6 == @NODE_7

}solve(p)print(p)

type bool := yes | nobool [ @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8 ] : subsets@v1 != yes || @v4 != yes@v1 != yes || @v6 != yes@v2 != yes || @v5 != yes@v2 != yes || @v8 != yes@v3 != yes || @v7 != yes@v4 != yes || @v5 != yes@v4 != yes || @v8 != yes@v5 != yes || @v7 != yes@v7 != yes || @v8 != yesmaximize {

1 : @v1 == yes1 : @v2 == yes1 : @v3 == yes1 : @v4 == yes1 : @v5 == yes1 : @v6 == yes1 : @v7 == yes1 : @v8 == yes

}solve(subsets)print(subsets)

type colored := yes | nocolored [ @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8 ] : vertices@v1 == yes, @v4 == yes@v2 == yes, @v5 == yes@v4 == yes, @v5 == yes@v5 == yes, @v7 == yesminimize {

1 : @v1 == yes1 : @v2 == yes1 : @v3 == yes1 : @v4 == yes1 : @v5 == yes1 : @v6 == yes1 : @v7 == yes1 : @v8 == yes

}solve(vertices)print(vertices)

type color red | orange |pinkcolor [@BC, @YK, @NW, @AB, @SK, @NV, @MT, @ON, @QB, @NB, @NS, @PE, @NL] : p@BC != @AB, @BC != @YK, @BC != @NW@YK != @BC, @YK != @NW@NW != @YK, @NW != @BC@AB != @BC, @AB != @NW, @AB != @SK@SK != @AB, @SK != @NW, @SK != @MT@NV != @NW, @NV != @MT@MT != @NV, @MT != @SK, @MT != @ON@ON != @MT, @ON != @QB@QB != @ON, @QB != @NB, @QB != @NL@NB != @QB, @NB != @NS@NS != @NB@NL != @QBsolve(p)print(p)

※最新版とは仕様が異なります

Page 12: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

12

Page 13: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

古典コンピュータとアニーリングマシン

ノイマン型コンピュータ

ADD %rbp

EOR %rax

アニーリング

0 10 20 30 40 50 60

0

10

20

30

40

50

602.0

1.5

1.0

0.5

0.0

0.5

1.0

1.5

2.0

13

機械語アセンブリ言語

構造化プログラミング言語

QUBO ライブラリ(PyQUBOなど) ??

Page 14: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

SpoonQの紹介

14https://github.com/SpoonQ/

Page 15: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

SpoonQの紹介

問題を記述する1

答を教えてくれる2

無料ですぐ使える

15Image: CC0 license

Page 16: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

デモ

16

Page 17: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

プログラミングに詳しい方向けの説明

17

Page 18: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

開発者の方へ

構文解析構文木

ハミルトニアン生成

QUBO生成

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

外部アニーラ

解の検証

出力 パラメタサーチ

最適化項 制約項

QUBO

結果外部API

OK NG

ソースコード

やり直し

START

GOAL

OR

18

重要

※現時点で実装されていない機能もあります

Page 19: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

開発者の方へ

現状の SpoonQでは大きな問題は解けない

ハミルトニアン生成 パラメタサーチに改善の余地

19

Page 20: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

開発者の方へ

アニーリングへの敷居を下げることで利用人口を増やし · · ·

2020年を///////////////////////////////東京オリンピックアニーリング元年

に!

20

Page 21: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

開発者の方へ

201X年は機械学習元年?

• 機械学習の初期 ... 研究者が独自にアルゴリズムを開発• 限られた人しか機械学習を活用できない

• 機械学習ライブラリの発展• 利用人口の増加• 新しいパラダイムの出現• さらなる機械学習ライブラリの出現

SpoonQでアニーリング

業界 に火 をつけたい21

2020年現在

アニーリングはこの段階

Page 22: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

開発者の方へ

問 1.

処理系をつくることの困難さ

≒Programming Language

is one of

22

Page 23: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

新しい道具をつくり,初めて見える世界を探検したい

23Image: CC0 license

Page 24: アニーリングマシン向け - IPA · 0 ナ ヮ æ 僧 醯 請 0 ナ ヮ æ 僧 醯 請 レ0 ト5 ト0 べ5 べ0 べ5 ト0 ト5 レ0 2 行列の例 a11 a12 a13 ··· a1N a21

まとめ

• SpoonQはアニーリング向けプログラミング言語

• 有名な組合せ最適化問題だけでなく、より一般的な問題を記述できることを目指している

• ユーザーの方へ アニーリングをもっと身近に!

• 開発者の方へ 「道具」をつくることでアニーリングの発展に貢献!

第 41回量子情報技術研究会(QIT41)

口頭発表

情報処理学会第 82回全国大会

口頭発表 (予定)

https://github.com/SpoonQ/

24