コンピュータの頭脳と言われるCPUは、様々な処理のプログラムを実行する仕組みで、以下の部品で構成されています。
このようなシンプルな仕組みを組み合わせてプログラムがやりたいことを実行しているのです。さまざまな処理をプログラムすることで汎用的な計算を実現しています。
従来のコンピュータは、半導体の微細化の進展によりCPUの性能が向上し、それに伴いコンピュータの性能も向上していました。ただ、微細化の限界に近付いており、性能向上が頭打ちになりつつあります。そこで、処理する用途を特定の処理に特化することで高い性能を実現する用途特化型のコンピュータが提案されています。アニーリングマシンは、最適化という用途に絞った用途特化型のコンピュータの一種です。
従来のノイマン型コンピュータで問題を解くためには、その問題に応じた解く手順(アルゴリズム)を考え、そのアルゴリズムをCPUの命令列として記述し、CPUは命令列を逐次的に実行していました。複数の命令を並列に実行して高速化を図る技法も利用されていますが、本質的には逐次的な命令列を実行していくことが、従来型のコンピュータの特徴となっています。
それに対しアニーリングマシンとは、抽象化された物理的な模型(イジングモデル)を定義し、求めたい組合せ最適化問題をこのモデルに入れ込みます(マッピング)。その模型のエネルギーを推移させ、最もエネルギーが低くなった状態(基底状態)でその答えが得られるという方式をとります。
0/1の二進数で演算を行い、分岐・判定・繰り返しのプロセスによって逐次的に処理を実行するノイマン型コンピュータにくらべ、イジングモデルによる処理の過程はまるで生き物や、波、風のような自然現象に感じられ、ナチュラルコンピューティングとも言われる手法です。つまり、問題を逐次的に処理するのではなく、自然現象そのものが持つ収束動作で処理を行うため、問題が大規模になった時にも高速に問題を解くことが可能となります。
イジングモデルをどのようにイメージすればよいのでしょうか。簡単に言えば、スピンと結合の集合体です。イジングモデルにおける一つの要素はスピンと呼ばれ、+1/-1の2つの値を取ります。たくさんのスピンが互いに作用しあい、またそれぞれのスピンに+もしくは-の外部の力が与えられます。その際に、スピンの集合=イジングモデル全体としてどのような振る舞いを示すかを表現するモデルなのです。量子アニーリングマシンでは、量子ビットがこのスピンの役割を担っています。CMOSアニーリングマシンでは半導体メモリとデジタル回路でスピンのふるまいを疑似的に表現することで最適化問題を解いています。
イジングモデルでは、接続されたスピンが互いに影響(相互作用)し合うことによって、イジングモデル全体が持つエネルギーが高い場合や低い場合の無数のパターン(組み合わせ)が存在していることになります。そして最もエネルギーが低い状態に落ち着いた時のスピンの組み合わせ、すなわち、どれが+1でどれが-1なのかの組み合わせが、求めるべき最適化問題の最適解を表します。
ノイマン型コンピュータでは超えられない壁をアニーリングマシンでなら超えられると考えられるのは、アニーリングマシンが用途特化型の非ノイマン型コンピュータであるから、と言えるでしょう。
組合せ最適化を身近な組合せ最適化問題として分かりやすい2つの例を用いて解説します。また、IoT社会における組合せ最適化処理の高速解法の重要性について述べます。
COVID-19の流行に伴い、感染リスクを考慮した制約条件の下、研究員のシフト作成をアニーリングマシンで行うユースケースを紹介しています。
自然災害リスクに対応するため、保険会社が保有する膨大なデータを活用した再保険ポートフォリオ策定をアニーリングマシンで行うユースケースを紹介しています。
初級者向けに、アニーリングマシンで最適化問題を解く工程を、「課題整理と要件定義」「定式化」「入力データ作成」「アニーリングマシン実行」の4段階に分けて手順やポイントを解説します。
アニーリングマシンが得意とする問題の特徴である「二次」「離散」を中心に、知っておくべき数学的前提を易しく解説します。