Table of contents
Quantum annealing for you 05
ブラックボックス最適化
のような形にする必要があり、現実の問題をこの定式化に落とし込む必要があります。
ではそもそもこの形で書けるかどうかわからない場合はどのように量子アニーリングで解けば良いでしょうか。それをなんとかする方法がブラックボックス最適化です。
今、
我々にはQUBO行列を作ることしかできないので、この関数を真似するような
のような最小2乗法を考えます。最後の項、データ(手掛かり)が少ないのに対してパラメータが多い場合を考えるため、過学習を防ぐためのものL2ノルム(の2乗)正則化項です。このようにすると、これは
例えば
L1ノルムをつけても良いですが、その場合には近接勾配法を用いる必要があります。
のように1とクロスタームも含めた形に書き直しましょう。また
のように対角項と非対角項を並べたベクトルを作ります。ここで
例えば
のようにベクトルの内積で表現されることがわかります。
このような手続きによって
よって
のようになり、微分が0の場所もしくは平方完成することで最小値を求めることができます。
ここで
逆行列を用いることで
のように、既知の量から
まずデータセットから
ブラックボックス最適化は
ちなみに平方完成では
のようになります。2次関数の頂点部分は今までのデータが一番良く説明できる箇所に当たります。ではその推定がどれくらい正しいと言えるでしょうか。それはこの下に凸の2次関数の鋭さからわかります。
- 鋭いならば、その推定から少しずれただけでデータを説明できなくなることを意味する。よってこの場合はその推定は自信がある。
- 鈍いと、その推定から少しずれてもデータをまあまあ説明することができる。よってその推定には自信がない。
(3)式から、その鋭さが
スクリプト
P = 1 + N + N * (N-1) // 2
のように//2
を用いると、Pがfloatではなくintになります。キャストする必要がないので便利です。
この計算のボトルネックは逆行列の計算です。またデータが多くなると、その通信量が大きくなります。
2次関数の鋭さと解の発見パターンには、関係があります。
var = 0.5 * XXinv
において係数を0にしてしまうと、極小解にハマりやすくなります。逆にこの係数を大きくすると、手がかりを信用せずにあてもなく探索をするため、良い解が求まりません。
最初に用意するデータはできるだけ似ていないものを選んだ方が、QUBOを推定しやすくなります。これは大局的な振る舞いを知るためです。ただし集められてきたデータがあまりにもバラバラだと、そこから得られるヒントもバラバラなので、上手く探索を深堀りできないことがあります。よってデータが集まってきたら、ある程度そのQUBO推定結果を信じる方が良いです(アニーリングのようにvarを小さくした方が良い?)。