定式化の仕方しだいで問題は解きやすくなる


 ある種の問題を解いているときに、どうにもこれ以上改善のしようがなくなってくることがある。その方式を選択した限り避けられない部分だ。そういうときには、別な枠組みを使うことでうまく解けないかを考えてみよう。

 たいがいの場合、今自分が考えている問題によく似た例は、既に知られている問題だ。
ほんの少しの部分が、自分の場合では特殊になっているに過ぎないことが多い。そのような考え方は、問題解決においても、既存の問題解決の事例にヒントを得ることができるとする考え方と共通する。
TRIZ(トゥリーズ)

 数学の問題の場合でも、多くの問題は最小化問題と定式化される問題は多い。よく知られた問題であれば、その問題を解くための定式化は既に考えられていて、まったく違うアプローチも多数存在している。

 数学の幾何の授業には苦しめられた経験を持つ人は多いだろう。でもあれは、答は1つじゃなく、いろんな解き方があるんだということを知る訓練なんだ。

円というのは、
・1点から等距離にある平面状の点の集まり、
・一定の周の長さで面積を最大になるように膨らませたときの平面図形、
・接線の法線が常に一点で交わる図形
といろんな形で記述できる。
 そのような問題の定式化を変えることで問題の解きやすさはいくらでも変わってくる。

屈折の現象だって
スネルの法則と呼ばれるsin関数を含む式で記述することもできるし、
最小時間の原理(フェルマーの原理: 2点を結ぶ経路のうち、光で通過するのにかかる時間が最も小さくなる経路で光は屈折する)で記述することもできる。もし、屈折率が連続的に変わる状況での屈折を考えようとしたら、スネルの法則よりも最小時間の原理の方が解きやすくなる可能性が高くなる。
ホイフェンスの原理の原理によって波として考えることもできる。

 このように問題の定式化の種類によって、問題の解きやすさは、変わってくる。

同じ問題であっても、どう定式化するかで解きやすさは変わってくる。
厳密解を求めるのか、ほどほどの一致を求めるのか、
間違った入力を含むときの安定性を求めるのかどうか。
それらによって使うべき定式化は違ってくる。

学生実験で利用する最小二乗法にしてもそうだ。
最初は、「えいや」と直線を手書きでひいていた時代(中学の理科の実験)。
次に、少しだけ統計を知って、直線の最小2乗法でフィッティング結果を引く時代。
さらに、多変数のパラメータで多項式近似のフィッティングをする時代。
統計データの入力には、外れ値が混入していることを考量して、外れ値の影響を受けにくい処理(ロバストな処理)をする時代。

そのように、ものごとをどう定式化して解きやすくするかが、問題解決のコツである。

 ソフトウェアも実現する内容が、何らかの問題解決である以上、そのソフトウェアで実現する内容を、どのように定式化するかによって、解決のしやすさが格段にかわってくる。
 デザインパターンも、そのような定式化の1例にちがいない。問題解決の定石を手持ちの道具箱に増やしていこう。それらがあなたが立ち向かう課題に対して力を与えてくれるだろう。


機械学習も最小化問題

機械学習の問題は、たいがいの問題で、ある1つの量を最小化する問題として定義されることが多い。
https://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf
のp1の式(1) を見てみよう。
その式の値を最小化する問題として定義されている。

ボルツマン・マシン(https://ja.wikipedia.org/wiki/%E3%83%9C%E3%83%AB%E3%83%84%E3%83%9E%E3%83%B3%E3%83%9E%E3%82%B7%E3%83%B3)も
ネットワーク全体のエネルギー E
の最小化問題として定義されている。

損失関数
深層学習の多くは、与えられたネットワーク構成において、学習データセットに対して損失関数を最小化するものとして表現される。
どの種類の損失関数を採用するかによって、どのような最適化後の結果が得られるかが述べられています。
自分のしたい処理では、どのような結果が得られるののを期待するかで、採用すべき損失関数の種類が決まってきます。

slideShare機械学習の理論と実践 などで学び取ることができます。

機械学習で抑えておくべき損失関数(分類編)

拘束条件つきの最適化問題
拘束条件つきの最適化問題は、
最小化すべき量の中に拘束条件由来の項を追加した新たな量に対する最適化問題に
置き換えることができる。

その手法はラグランジュの未定乗数法と呼ばれ、
様々な分野で広く使われる数学的な手法になっている。

ラグランジュの未定乗数法
http://www.neuro.sfc.keio.ac.jp/~masato/study/SVM/lagrange.htm

計算機の能力が貧弱だった時代には、
数学的な挙動が同じ現象を利用して、
その結果の値を物理的に計測して、それを換算して
知りたい対象の挙動を解析したことがあると、書籍で読んだことがある。
それは、問題をどう定式化するかということで、どう楽ができるかを
考え抜くことで得られたのだと思う。