はじめに
先日「量子コンピューティングEXPO」に出展した際に、古典と量子の最適化に関して様々な質問を頂きました。特に「アニーリング」の用語にまつわる質問が多かったです。
中でも非常にややこしいのが、
シミュレーテッドアニーリングと疑似量子アニーリングの違いは何ですか?
これを理解するには周辺の用語も一緒に整理しなければなりません。
ということで気合を入れて整理しました。
「アニーリング」っぽい用語まとめ
画像クリックで拡大します。
「シミュレーテッドアニーリング」と「疑似量子アニーリング」はどちらもCPUなどの古典コンピュータ上で動作するアルゴリズムです。また、どちらも元を辿れば金属の焼きなましから着想を得て生まれたものです。
違いは、「シミュレーテッドアニーリング」は連続値(≒float)も離散値(≒int)も真理値(≒bool)も何でも扱えるのに対し、「疑似量子アニーリング」は-1と+1、もしくは0と1(≒bool)の二値しか扱えないということです。扱えないというより、あえて扱わないと言ったほうが正確かもしれません。(いろんな変数が使えちゃったらシミュレーテッドアニーリングと同じなので…)
0と1の二値しか使わないことは、組合せ最適化問題を解くにあたっては強烈な制限になります。定式化できる問題の種類がかなり狭まります。また、定式化できたとしても求解の性能で劣ることは免れません。
ただ、「疑似量子アニーリング」が完全に劣るとも言い切れません。各社がデジタルとかベクトルとかの名称で出している独自ハードウェアは、0と1だけを扱う場合にはCPUよりも優れているかもしれません。ですから、「CPU/GPU × シミュレーテッドアニーリング」と「独自ハードウェア × 疑似量子アニーリング」を比較した場合にどちらが有利かはケースバイケースなのかもしれません。(知らんけど)
ちなみに、疑似量子アニーリングのことをシミュレーテッドアニーリングと呼んでいるサービスや記事があるせいで世間は大混乱です。まあたしかに量子アニーリングをシミュレーテッドしてると言われればそうなのですが、「シミュレーテッドアニーリング」は40年前からの予約語なので、ちゃんと区別して頂きたいです。
シミュレーテッドアニーリングに代表されるメタヒューリスティクスには40年以上も研究・利用されてきた歴史があります。最近ではGPUに対応しているものもあります。その性能を知らずに疑似量子アニーリングに飛びつくのは、「ちょっとビジネスに踊らされていると言わざるを得ない」というところです。
ちなみに
私たちは2023年から「TYTAN」という疑似量子アニーリングのパッケージを使ったチュートリアル勉強会を継続的に行っています。QUBOの考え方を学ぶレクチャーですね。そろそろ体力が尽きそうです。
ここで「QUBOアニーリング」と呼んでいるのは紛れもなく擬似量子アニーリングです。ただ、これは性能を期待しているものではなく、あくまで教育用の取り組みであることを強調させてください。
「今のうちにQUBO(0と1だけで定式化する方法)を学んでおけば、将来すごい量子アニーラが出たときにすぐに使えますよね」というのが目的で、現時点で難しい組合せ最適化問題が解けることを期待しているわけではありません。
実務では安心と信頼の遺伝的アルゴリズムをゴリゴリ使っていますので悪しからず!
参考文献
こんな感じのお話に興味がある方は、こちらのブログもぜひお読みください。頷きすぎて首がもげかけました。筆者のtasusu様に感謝です。