それでは一体どうやって式を立てるのかを、このサイトのデモアプリ「画像のノイズリダクション」の場合に照らして説明します(チュートリアルの「画像のノイズリダクション」のページ参照)。この問題は、とある画像にノイズ(画像データ上の不正確なドット)を、そのノイズを取り除くという問題を設定してアニーリングマシンに解かせています。この問題は、結果が元の画像に近ければ近いほど正解なので、この場合、解く前から正解をわかっているという前提で、アニーリングマシンの働きを確認するというデモアプリです。アニーリングマシンで解くための式を立てる(定式化)の試みは、以下のような根拠に基づいて行われています。
(a), (b)の事情を考慮して式を作ることで、正解=後から入れたノイズが取り除かれた状態を導き出しています。
さて、$\Sigma$という記号がなんだったかさっぱり思い出せない、という人に向けて説明していきたいと思います。(そんなのは不要、という方はここから先は飛ばして「コスト関数の作り方の続き」から読んでください。)コスト関数は、いくつかの項の足し算で表されています。ですが、白黒の点が膨大にあるので、足し算の式を全部書くのはものすごく大変だということは想像できると思います。そこで、足し算の式を全部書くのはやめて、$\Sigma$で表現しています。
ではノイズリダクションのデモアプリの式を作りながら確認していきます。ノイズリダクションのチュートリアルにある、式(1)を見てみましょう。これは前述の根拠(a)を表現した式です。
$y_i$は入力画像(最適化処理前のノイズが入った画像)の$i$番目の点の値($+1$ or $-1$)で、$s_i$は出力画像(最適化されてノイズが除去された画像)の$i$番目の値($+1$ or $-1$)です。
とは、$ys$つまり$y \times s$の計算を1番目から最後まですべて足しなさいという意味です。
$i \in V$とあるのは、この計算を行う範囲です。$i$は$V$の集合に含まれているという意味です。当然ながら画像の範囲にのみドットが存在しているので、$y_1s_1+y_2s_2+y_3s_3+……$は無限に計算する必要はなく、$V$の範囲(画像の範囲)内であることを数式上、定義しているという意味です。
ここでチュートリアルに戻ってみます。以下のように記述されています。
つまり、ノイズの黒点を除く大多数の画素は入力前と出力後で同じ(黒か白)であるため、入力前後で掛け合わせると$(+1)\times(+1)$もしくは$(-1)\times(-1)$となり、一律正の値になるはずです。今回、求める最適解ではエネルギーが最小になるという前提で式を立てています。ですので、正の値をすべて足した和である$\Sigma$の前に$-$をつけることで、全体が最も小さい値になるようにしているのです。
次に、条件(b)を表した式(2)を見てみましょう。
根拠(b)を表した式(2)は「隣り合う画素は同じことが多い」ことを表しています。
$\Sigma$の中身は$s_is_j$、$\Sigma$の下には$(i,j)\in E$と添えられており、$E$とは「隣接画素ペアの集合」と説明されています。つまり、正しい画像では隣り合った点は同じ色であることが多いことを表しています。
最後に、(1)と(2)を足し合わせたのが以下の式で、これでコスト関数が完成となります。最後にもう一工夫されていることを確認します。
(1)と(2)を足し合わせただけでなく$\eta$という文字が登場していますね。これについては以下のように解説されています。
つまり、式(1)だけにすると画像が真っ黒あるいは真っ白になってしまいうまくいきません。また、式(2)だけになってしまうと入力前後が全く同じ画像になってしまうわけなのでノイズが全く消えず、これもうまくいきません。ちょうどうまくいくように、(2)の前に2か3をかけるとうまくノイズが除かれるということになります。
このように、アニーリングマシンに式を入れるためには、事実に寄り添うために、ユーザーのさじ加減により$\eta$を$2$か$3$に設定するというような調整が大切です。
いかがでしょうか?あの白黒画像からノイズを除去するという問題をエネルギーの最小化という問題にあてはめていくことがなんとなくわかって頂ければ嬉しいです。
$\Sigma$を使った式をアニーリングマシンに入れる時は、Pythonなどのプログラミング言語で簡単に書き表すことができます。そうするとアニーリングマシンの働きによってコスト関数をイジングモデルに当てはめ、最もエネルギーが小さくなる場合の式に入れた組合せを導き出すことができる、というような方式で問題を解くことができます。
この記事はACWスキルロードマップの一部です。スキルロードマップを使ってACWを学んでみてください。
記事が役に立ちましたか?他の人に共有してみてください。
組合せ最適化を身近な組合せ最適化問題として分かりやすい2つの例を用いて解説します。また、IoT社会における組合せ最適化処理の高速解法の重要性について述べます。
COVID-19の流行に伴い、感染リスクを考慮した制約条件の下、研究員のシフト作成をアニーリングマシンで行うユースケースを紹介しています。
自然災害リスクに対応するため、保険会社が保有する膨大なデータを活用した再保険ポートフォリオ策定をアニーリングマシンで行うユースケースを紹介しています。
初級者向けに、アニーリングマシンで最適化問題を解く工程を、「課題整理と要件定義」「定式化」「入力データ作成」「アニーリングマシン実行」の4段階に分けて手順やポイントを解説します。