最適化とは
ある制約のもとで実数値関数を最小化(または最大化)する問題を最適化問題と呼びます。最適化問題はさまざまなところに現れます。例えば、
- なるべく少ない費用で必要な栄養素を得られる食事をつくる計画をたてる
- なるべくアルバイトの希望に沿うように仕事の割当をスケジューリングする
- なるべく短い時間でA地点からB地点までドライブする計画を立てる
- なるべく高いポイントを得られるようにゲームをプレイする
- 関数がなるべくうまく事象を説明できるようにハイパーパラメータを調整する
などなど。
問題を一旦「最適化問題」という形で捉えると、次は「それを(計算機を使って)解こう」ということになります。このとき必要になるのが最適化アルゴリズムです。最適化問題の性質により、使えるアルゴリズムが変わってきます。そのあたりを考え始めると、最適化の中では理論的な研究ということになります。
また、最適化問題はいつでも「解ける」とは限りません。さまざまな理由で「解けない」ことの方がむしろ多いのです。最小化したい関数が多くの局所最適解をもっている場合など、最適解を見出すことが困難な状況はいくらでも考えられます。それでも「解きたい」気持ちはあるので、いろいろなことを考えることになります。例えば
- 最適解(最適値)にある程度近いという保証のある解(値)を見出す
- 保証はないが、とにかく関数値を下げるアルゴリズムを構成する
- 局所的最適解で我慢する(それさえ見つけることが難しいこともあります)
などなど。深層学習などでは誤差が小さくなるようにニューラルネットワークの重みを調整しますが、あれは「ある程度関数値が下がればそれで我慢する」という思想で、むしろ最適解など眼中にない感じです。
凸最適化問題とは
凸最適化問題(正確な定義は教科書を参考にしてください)は局所的最適解が最適解になるという良い性質をもつ最適化問題で、私が熱心に研究している対象です。中でも凸錐とアフィン空間の交わりを許容集合とする錐線形計画は、21世紀の線形計画とも呼ばれ、世界中で研究が進んでいます。これに関しては現在科研費もいただいて研究を進めています。