ラベル CMOS Annealing の投稿を表示しています。 すべての投稿を表示
ラベル CMOS Annealing の投稿を表示しています。 すべての投稿を表示

2022年4月10日日曜日

日立Annealing Cloud Webを試すためのスマホアプリの作成(その2)

  前回記事の続編です。日立のCMOS Annealingマシンを利用するためのチュートリアル「画像のノイズリダクション」の解説を読み、それに従って、自分でイジングモデルの設定を行い、実機での実行結果を(少しだけですが)検討しました。(その後、図1に関して若干変更してあります。)

■2値画像のノイズ低減をイジングモデルで解く
 この問題をどのようにイジングモデルへ導くかは、参考資料[1]に丁寧に書かれており、すんなり納得できると思います。実は、これは、イジングモデルに取り組む初心者にとって絶好の例題なのです!

 というのも、(詳細は[1]にありますが)導かれたエネルギー関数(コスト関数)の形が、そのままダイレクトにイジングモデルを表すことになるからです。他の問題では、そうは行かずに、苦労することになります。2値画像のノイズ低減のためのエネルギー関数は、図1の上部に示した通りです。

■スマホアプリから日立Annealing Cloud Webを使って解く
 
前回と同様、小生の作成したスマホアプリから、Annealing Clowd Webへイジングモデルの設定値(スピン結合関係、相互作用係数、外部磁場係数など)を送って、結果を得ることができました。図1にその一例を示します。

 128x128の2値画像に対して、ここでは、ランダムに50個のノイズを載せました。多くのノイズが除去されていることがわかります。(特に黒電話受話器と持ち手周辺などです。)画像やノイズのタイプで除去性能はかなり変わるでしょう。また、エネルギー関数の第1項と第2項の効果のバランスを取るためのこのパラメータηの値にも敏感なようです。アニーリングは、ヒューリスティックなので、そういうものでしょう。難しい問題では、最適解でなくても、かなり良い解を欲しいというケースも多いです。

(補足)白黒の2値画像なのですが、ピクセルに対応するスピンの向き(南北)のイメージを鮮明にするため、ノイズ除去後の画像は、青(南向き)と赤(北向き)にしました。

■浮動小数点版GPU32bit Floatマシンも使ってみる
 
このノイズリダクションでは、一般にη=2 or 3が推奨されるようです。しかし、図1に示した通り、小生が採用した簡単な画像では、η=1が良い結果を出しました。そこで、さらに、η=0.75としたところ、結果が異常になりました。ここまで使ってきたマシンは整数版だったのですね。でも、ちゃんと浮動小数点版もありました!ケースバイケースなので、断定的には何とも言えませんが、小生の画像に限れば、η=0.75がさらに良い結果を出すようです。図2がそれです。

(注)画素(スピン)間の結合をどのように与えるかに関してはこちらの(その3)をご覧ください。

参考資料

[1] Hitachi Annealing Cloud Web
https://annealing-cloud.com/ja/index.html


2022年4月8日金曜日

日立Annealing Cloud Webを試すためのスマホアプリの作成(その1)

 量子コンピュータが話題になっています。中には、これを使うだけで「先進性」をアピールできるなどと考える人もいるようです。そうではなく、量子アニーリングなどの考え方のもとに、もっと堅牢性があり実用性の高いハードウェアで問題解決することも盛んに行われています。ここでは、その一つと考えられる(量子回路ではなく先端CMOS技術で製造された)日立のCMOS Annealingマシンに注目します。

(続編:画像のノイズリダクション例題についてはこちらに書きました。)

■日立のAnnealing Cloud Web
 日立製作所では、従来のノイマン型コンピュータとは別物の大規模CMOS Annealing マシンを開発し、それを一般の人が使えるようにAnnealing Cloud Webサービス[1]を提供しています。シミュレータではありません!大規模で超高速なAnnealingマシン実機を使えるのです!

 古くから知られているアニーリング法と、ここでの量子アニーリングは別物です。(多分、考え方に共通点はあると思いますが。)このマシンによって、種々の組合せ最適化問題(IoT世界での物流、金融工学、勤務シフト作成、等々)を極めて高速に解くことができるようです。

 このWebサイトには、アニーリングマシンとイジングモデルなどの基礎知識から、簡単な例題の計算の仕方までが、丁寧かつ簡潔に解説されており、とても有用です。図1は、デモとして載っている、グラフの最小頂点カバー問題(その具体例としてのネットワーク堅牢性問題)の最適解の例です。

 自分の組合せ最適化問題を解くには、それをイジングモデル化する必要があります。その際に、目的に応じたエネルギー関数(コスト関数)を設定する必要があります。この辺りが初心者にはちょっと難しいのですが、丁寧な解説もあるので、これを頼りに、徐々に使えるようになるはずです。

 具体的な使い方としては、イジングエディタを使って、ビジュアルに、スピンのトポロジーやスピン頂点毎の外部磁場係数や、スピン間の相互作用係数を設定することができます。さらに進めたい場合には、これらの設定値を引数として、curlコマンドでwebサービスをリクエストし、レスポンスをjson形式で受け取ることもできます。(この場合は、Web APIキー取得の申請が必要です。)

■Annealing Cloud Webを試用するための独自のスマホアプリの作成
 
このように、コマンドラインからcurlでWebサービスを呼び出せるのに、なぜ、スマホアプリが必要なのか?

 [答え] 楽しい。ワクワク感があります。解くべき問題をイジングモデル化した後、スマホからこれらの設定値をwebサービスへ送り、レスポンスとしてのjsonを解析して、その結果をグラフ表示します。強力なAnnealingマシンの利用が、このようにスマホだけで完結するのは意味があるのではないでしょうか。

 図2は、作成したスマホアプリによって、図1に示した最小頂点カバー問題を解いたものです。頂点カバーに入るスピンが、赤い北向き矢印↑で示されており、図1の場合と同じ結果が得られています。

 スマホでの設定を容易にするため、ここではスピンの頂点は座標値ではなく、一連番号で与えています。webサービスへ送信する時、また、結果のグラフを描く際には、この一連番号を(x, y)座標に変換しています。

 ところで、スマホ画面の中央にある、「外部磁場設定」と「相互作用設定」の係数はどうやって計算して入力したのでしょうか?疑問に思われた方は、こちらの(その4)をご覧ください。

 このスマホアプリから解くことのできるスピントポロジーはKing's グラフの場合ですが、いろいろ他にも試すことができます。まだまだ、初歩的な段階ですが、アニーリングマシンを使うための入門の意味はあると思います。

参考資料

[1] Hitachi Annealing Cloud Web
https://annealing-cloud.com/ja/index.html