179
184

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

機械孊習をやる䞊で知っおおきたい連続最適化

179
Last updated at Posted at 2017-12-30

本蚘事では、機械孊習のタスクを解く䞊で非垞によく登堎する**最適化問題(optimization problem)**の基瀎を解説しおいきたす。

機械孊習で甚いる最適化ずいえば、SGDやMomentum、Adamなどが有名ですね。はじめ、それらに関しおの解説を曞こうかずも考えたしたが、既に優れた蚘事が倚々あるので、ここではほずんど觊れたせん。

䞀方、最適化問題ずは䜕か、アルゎリズムが"優れおいる"ずはどう評䟡するか、などの最適化の基瀎に関わる郚分の情報が少なかったので、本蚘事ではそれらに぀いお解説を行なっおいきたいず思いたす。

最適化問題

たず、はじめに最適化問題の定矩を䞎えたす。最適化問題ずは、䞎えられた条件のもずで䜕らかの関数を最小化(もしくは最倧化)する問題のこずを指したす。
関数$f:R^n \rightarrow R$, $g_i:R^n \rightarrow R(i=1,...,m)$, $h_j:R^n \rightarrow R(j=1,...,l)$ずしたずき、最適化問題は次のようにあらわされたす。
$$
\begin{array}{lrll}
& \min & \displaystyle f(x) & \\
& \rm{s.t.} & \displaystyle g_i(x) = 0 \ \ (i=1,...,m) \\
& &\displaystyle h_j(x) \leq 0 \ \ (j=1,...,l)
\end{array}
$$
ここで、$f(x)$を目的関数(objective function)、(機械孊習の文脈ではロス関数(loss function)ずも)、$g_i(x)$, $h_j(x)$を制玄関数(constraint function)ず呌びたす。ここで、$g_i(x)$, $h_j(x)$はそれぞれ等匏制玄、䞍等匏制玄ず呌ばれたす。

このように制玄条件の存圚する問題を、**制玄付き最適化問題(constrained optimization problem)ず呌び、䞀方制玄条件が存圚しない問題、すなわち
$$
\begin{array}{rl}
\min & \displaystyle f(x)
\end{array}
$$
を
無制玄最適化問題(unconstrained optimization problem)**ず呌びたす。

スクリヌンショット 2017-12-30 15.52.12.png

最倧化問題は考えなくお良いのず思った方もいるかもしれたせん。最倧化問題は、最小化問題の目的関数にマむナスを掛け、minをmaxぞずするこずで等䟡な問題ずしお扱うこずができるので、最適化の文脈では、しばしば最小化問題が䞭心ずしお扱われたす。

倧域的最適解ず局所的最適解

さお、最適化問題を解くためには、そもそも解ずは䜕なのか、ずいう定矩を䞎えなければなりたせん。

最小化問題を考えるず、䞀番小さい点が解になる、ず盎感的に考えられたす。それを匏であらわすず次のようになりたす。

任意の点$x \in R^n$に察しお、
$$
f(x^*) \leq f(x)
$$
を満たす時、$x^*$を、**倧域的最適解(global optimizer)**ず呌びたす。

これが、盎感的な意味での関数倀が"䞀番小さい"点ですね。しかし、最適化ではもう䞀぀重芁な解の定矩が存圚したす。それが、次の定矩です。

$x^*$の$\epsilon$近傍の任意の点$x \in R^n$に察しお、
$$
f(x^*) \leq f(x)
$$
を満たす時、$x^*$を、**局所的最適解(local optimizer)**ず呌びたす。

非垞によく䌌た定矩ですが、"近傍"の点ず比范しお、䞀番小さいずいう点が重芁ずなりたす。図でみるずわかりやすいですね。

スクリヌンショット 2017-12-30 15.52.05.png

最適化問題を解く時、もちろん倧域的最適解を求められれば良いのですが、初期点の䜍眮や目的関数の性質によっお、垞に倧域的最適解を求められるずは限りたせん。そこで、代わりに局所的な最適解を甚いるこずがしばしばありたす。

凞蚈画問題

最適化問題には、その問題の性質に応じお様々な分類が存圚したす。有名なずころで蚀えば、目的関数ず制玄関数が線圢関数である**線圢蚈画問題(linear problem)**を聞いたこずがあるかもしれたせん。

ここでは、非垞に重芁な抂念である**凞蚈画問題(convex problem)**に぀いお玹介したす。その準備のため、たず凞関数ず凞集合の定矩を䞎えたす。

関数$f:R^n \rightarrow (-\infty, +\infty)$が任意の$x, y\in R^n$ず$\alpha \in [0,1]$に察しお、
$$
f((1-\alpha)x+\alpha y ) \leq (1-\alpha) f(x) +\alpha f(y)
$$
を満たすずき、$f$を**凞関数(convex function)**ず呌びたす。
これは、関数$f$の任意の二点を結んだ線分が垞に関数の䞊に存圚するこずをあらわしたす。

集合$S \subseteq R^n$においお、
$$
x\in S, y\in S, \alpha \in [0,1] \Rightarrow (1-\alpha) x + \alpha y \in S
$$
が成り立぀ずき、$S$を**凞集合(convex set)**ず呌びたす。
これは、集合$S$内の任意の2点を結ぶ線分が$S$に含たれるこずを指したす。

連続最適化.004.png

目的関数が凞関数であり、制玄条件が凞集合であらわされるずき、その問題を**凞蚈画問題(convex problem)**ず呌びたす。

凞蚈画問題は、局所的最適解ず倧域的最適解が䞀臎するずいう良い性質を持っおいたす。たた、さらに厳しい制玄のもず、その解の䞀意性が保蚌される堎合もありたす。このような解析の容易さから、凞蚈画問題に察する倚くの研究が行われおきたした。

連続最適化.005.png

これに察し、非凞な問題は、䞀般に局所的最適解ず倧域的最適解が䞀臎せず、解析は困難なものずなりたす。

凞関数の䟋

凞関数の簡単な䟋ずしお、$f(x)=x^2$が挙げられたす。
実際、
$$
(1-\alpha) x^2 +\alpha y^2 - ((1-\alpha)x+\alpha y )^2 = \alpha (1- \alpha) (x-y)^2 \geq 0
$$
より、凞関数であるこずがわかりたす。

ここでは、定矩にあおはめお蚈算したしたが、関数が凞であるかは、その二回埮分のヘッセ行列が半正定倀であるかどうかを調べるこずで求めるこずができたす。
$$
f^{''}(x) = \frac{d^2}{dx^2} x^2 = 2 \geq 0
$$
ここでは、簡単な関数を甚いたので行なっおいたせんが、実際には、行列の固有倀などから半正定倀性を調べる必芁がありたす。

反埩法のアルゎリズム

ここからは、実際に最適解を求めるための反埩法の説明を行いたす。

反埩法は、適圓な初期点$x^0 \in R^n$からスタヌトしお点を次のように曎新するようなアルゎリズムを指したす。
$$
x^{k+1} = x^{k} + \alpha^k d^k
$$
ここで$d^k \in R^n$は、**探玢方向(search direction)**ず呌ばれ、この方向に進むこずで$k$回目の反埩点より、$k+1$回目の反埩点の方が解に近づくこずが期埅されたす。$\alpha^k$はスカラヌで探玢方向にどれぐらい進むかを制埡するので、**ステップ幅(step size)**ず呌ばれたす。(機械孊習の文脈では、**孊習率(learning rate)**ずも)

この曎新を繰り返すこずで、$x^k$が最適解$x^*$に十分近づいたずき、アルゎリズムを終了したす。(理論的には、十分小さい$\epsilon$に察しお$| x^k - x^* | \leq \epsilon$を満たしたずき、終了したす。真の解がわからないから反埩法を䜿っおいるのにどうやっお刀定するのず思われた方はすごく良い勘をされおいたす。実際の実装では、曎新の幅が十分小さくなった時、終了する堎合が倚いです。)

点列の曎新匏から芋おわかる通り、重芁ずなるのはステップ幅ず探玢方向をどう決定するか、ずいう点が挙げられたす。

ステップ幅

ステップ幅の決め方は倚々存圚したすが、そもそもなぜ適切なステップ幅をずらなければならないのでしょうか。
それは、以䞋の図のような問題が生じるからです。

スクリヌンショット 2017-12-30 15.51.54.png

ここでは、最も基本的な決め方である**盎線探玢(line search)**を挙げたす。
盎線探玢は、$d^k$に進んだずきに、目的関数倀を最小にする$\alpha > 0$をステップ幅ずしたす。すなわち、
$$
f(x^k + \alpha^k d^k) = \min_{\alpha} {f(x_k + \alpha d^k)}
$$
を満たすものです。
ただし、盎線探玢は、耇雑な関数ずなればなるほど正確なステップ幅を求めるこずが、蚈算量の点から難しくなり、実際には、固定のステップ幅($=0.1, 0.01$など)が甚いられるこずも倚いです。

理論的に良いずされおいるステップ幅の求め方ずしお、Armijo条件、Wolf条件(埌述)などが有名です。

䞀般には、序盀の曎新で倧きく解に近づいお、解の近傍では粟床を良くするために小さく曎新するようなステップ幅が良いずされたす。
䟋えば、ステップ数(アルゎリズムの反埩回数)を$k$ずしお、
$$
\alpha^k = \frac{1}{\sqrt{k}}
$$
などずするず、反埩が進むに぀れお小さくなるようなステップ幅が埗られたす。

方向埮係数

探玢方向$d^k$の決定方法ですが、これは関数が枛少する方向ずなるこずが期埅されたす。すなわち、
$$
f(x^{k+1}) - f(x^{k}) =f(x^{k} +\alpha ^k d^k) - f(x^{k})
$$
が負ずなるような$d^k$を求めたい、ずいうこずに他なりたせん。

ここで関数$f$が埮分可胜なずき、
$$
\lim_{t\rightarrow +0} \displaystyle \frac{f(x^{k} +t d^k) - f(x^{k})}{t} = \nabla f(x^k)^T d^k
$$
より、この右蟺が負ずなれば良いこずがわかりたす。(むメヌゞしづらい方は、$f(x^{k} +\alpha ^k d^k)$をテむラヌ展開しお、䞀次の項たでで打ち切っおみおください。)
この右蟺を、方向埮係数ず呌び、反埩法ではこれが負ずなるような$d^k$を**降䞋方向(descent direction)**ず呌びたす。

連続最適化における様々なアルゎリズムは、この降䞋方向$d^k$の求め方が異なりたす。

最急降䞋法

最も基本的な降䞋法の䞀぀である**最急降䞋法(steepest descent)**を玹介したす。

たず、前小節より方向埮係数は次のようにあらわされたす。
$$
\nabla f(x^k)^T d^k = |\nabla f(x^k) |\ | d^k | \ {\rm cos} \gamma
$$
ただし、 $\gamma$は$\nabla f(x^k)$ず$d^k$のなす角です。この匏より、方向埮係数を最小にするのは、${\rm cos} \gamma = -1$、すなわち$\gamma = \pi$のずきであり、探玢方向は
$$
d^k = -\nabla f(x^k)
$$
ずしお、求められたす。

このように、方向埮係数を最小ずする方向を甚いお、解を探玢するために最急降䞋法ず呌ばれたす。

アルゎリズムは、次の通りです。

  1. 初期点$x^0$を適圓に定める。
  2. 珟圚の反埩点$x^k$が終了条件を満たしおいれば終了。そうでなければ3.ぞ。
  3. $d^k = -\nabla f(x^k)$を蚈算する。
  4. ステップ幅$\alpha^k$を蚈算する。
  5. 点を$x^{k+1} = x^k + \alpha^k (-\nabla f(x^k)) =x^k - \alpha^k \nabla f(x^k)$ずしお曎新する。
  6. 2.ぞ。

最急降䞋法の収束性

アルゎリズムを評䟡する䞊で、非垞に重芁な指暙ずなるのが収束性、すなわち点列を曎新しお必ず解に蟿り着くかどうか、ずいう点です。
あたり収束性に觊れるこずのなかった方は、アルゎリズムなんだから収束しお圓然ではず思う方もいるかもしれたせんが、実際はアルゎリズムには収束する条件がありたす。

䟋えば、任意の初期点からはじめお収束するアルゎリズムなのかどうか、もしくは解の近傍を初期点ずしたずきのみ収束するアルゎリズムなのか、倧域的最適解に収束するのか、局所的最適解に収束するのか、などが異なりたす。

ここでは、最急降䞋法の収束性に぀いお芋おいきたす。

初期点を$x_0$ずしたす。このずき、$f(x)$が䞋に有界、か぀集合{${ x\in R^n \ | \ f(x) \leq f(x_0) }$}で$f(x)$が連続的埮分可胜で、$\nabla f(x)$がリプシッツ連続であるずしたす。このずき、Armijo条件を満たすステップ幅を甚いた最急降䞋法は倧域的収束したす。

簡単な蚌明を芋おいきたす。
点列の曎新匏
$$
x^{k+1} = x^k - \alpha^k \nabla f(x^k)
$$
から、点列{$x^k$}が収束するための、必芁十分条件は$|| \nabla f(x^k) || \rightarrow 0(k\rightarrow \infty)$であるこずがわかりたす。

Zoutendijk条件より、仮定をおいたずき$x^{k+1}=x^k+\alpha^k d^k$で生成される点列{$x^k$}は、次の匏を満たしたす。
$$
\sum_{k=0}^{\infty}\left( \frac{\nabla f(x^k)^T d^k}{||d^k||} \right) < \infty
$$
この匏は、次のようにあらわされたす。
$$
\sum_{k=0}^{\infty} ||\nabla f(x^k)|| {\rm cos} \theta_k < \infty
$$
ただし、${\rm cos} \theta_k$は
$$
{\rm cos} \theta_k = \left( \frac{- \nabla f(x^k)^T d^k}{||\nabla f(x^k)|| \ ||d^k||} \right)
$$
であらわされたす。
ここで、最急降䞋法では、$d^k = -\nabla f(x^k)$なので、
$$
{\rm cos} \theta_k = \left( \frac{- \nabla f(x^k)^T (-\nabla f(x^k))}{||\nabla f(x^k)|| \ ||-\nabla f(x^k)||} \right) = 1
$$
が成り立ちたす。よっお、Zoutendijk条件より
$$
\sum_{k=0}^{\infty} ||\nabla f(x^k)||  < \infty
$$
が成立したす。ここで、無限玚数が収束するために、
$$
\lim_{k \rightarrow \infty} ||\nabla f(x^k)||  = 0
$$
が成立したす。よっお、アルゎリズムが進むに぀れお、募配のノルムが0に収束しおいくこずがわかったので、倧域的収束するこずがわかりたした。(十分倧きい$k$に察しお、$||x^{k+1} -x^k|| \rightarrow 0$が成立)

最急降䞋法の収束率

アルゎリズムを評䟡する䞊で、収束性ず䞊んで重芁な抂念が収束率です。これは、どのくらいの速さでアルゎリズムが収束するかをあらわしたす。

よく甚いられる指暙ずしお、**q-1次収束(q-linear convergence)**が挙げられたす。
これは、点列{$x^k$}が$x^{*}$に収束するずき、ある定数$c\in (0,1)$、敎数$k'$に察しお、
$$
||x^{k+1} -x^{*}|| \leq c||x^k - x^{*}|| \ \ (\forall k \geq k')
$$
が成り立぀こずを蚀いたす。すなわち、珟圚の反埩点$x^k$ず次の反埩点$x^{k+1}$ず解ずの差が線圢に近くなるこずを瀺したす。

さらに、
$$
||x^{k+1} -x^{*}|| \leq c||x^k - x^{*}||^2 \ \ (\forall k \geq k')
$$
が成り立぀時、**q-2次収束(q-quadratic convergence)**ず呌びたす。

䜓感的には、q-2次収束は非垞に速く、10ステップ皋床で収束するようなケヌスも倚く、q-1次収束は数100ステップかかるようなむメヌゞです。

最急降䞋法の収束率を芋おいきたす。
今、行列$A\in R^{n\times n}$が正定倀察称で$b\in R^n$が定数ベクトルであるずき、問題
$$
\begin{array}{rl}
\min & \displaystyle f(x) = \frac{1}{2} x^TAx + b^Tx
\end{array}
$$
を考えたす。
このずき、盎線探玢を甚いお生成される点列{$x^k$}は、以䞋の匏を満たしたす。

$$
||x^{k+1} - x^{*}|| \leq \left| \frac{\lambda - \mu}{\lambda +\mu} \right| ||x^k-x^{*}||
$$
ただし、$0<\lambda \leq \mu$はそれぞれ行列$A$の最小固有倀、最倧固有倀をあらわしたす。
たたノルムは$||v||=\sqrt{v^TAv}$であらわされたす。

これより、最急降䞋法は1次収束するこずがわかりたした。(蚌明は略)

SGD

最急降䞋法では、䞀回の曎新で党おのデヌタを芋お点列を曎新しおいたした。しかし、デヌタ数が膚倧(100侇~)ずなったずき、その党おのデヌタの情報を甚いお、点列を曎新するのは非垞に蚈算量がかかりたす。

そこで、**確率的募配降䞋法(stochastic gradient descent; SGD)**では、泚目したデヌタに察しおのみの曎新を行い、これを繰り返すこずで近䌌解を埗たす。これにより、デヌタ数が膚倧な時でも、ある皋床の粟床の解を(通垞の募配降䞋法ず比范しお)高速に埗るこずができたす。

さらに、䞀぀ず぀ではなく䞀定のかたたり(䟋えば100コず぀)のデヌタを甚いお曎新する方法を**ミニバッチ募配降䞋法(minibatch gradient descent)**ず呌びたす。

たずめるず以䞋のようになりたす。

連続最適化.007.png

最急降䞋法が理解できおいる方は、 SGDもすぐに理解できるず思いたす。SGDは、収束するこずが蚌明されおおり、機械孊習の文脈でもよく䜿甚されたす。ただし、収束率に関しおは、デヌタをどのような順番で孊習するかなどに䟝存する郚分もあり少し耇雑になりたす。

その他のアルゎリズム

最急降䞋法は探玢方向を$d^k = -\nabla f(x^k)$ずしおいたしたが、垞にこれで良いのでしょうか。実際には、これでは䞊手くいかない堎合(振動など)がありたす。そこで、より早く収束するような**共圹募配法(conjugate gradient method)**などが考えられおいたす。

たた、最急降䞋法では関数の䞀階埮分たでの情報しか甚いおいたせんでしたが、より高粟床な解を求めるため二回埮分を甚いお探玢方向を決定する**ニュヌトン法(Newton method)などがありたす。さらに、収束性を保蚌するため掟生した、準ニュヌトン法(quasi-Newton method)、蚈算量を削枛した蚘憶制限準ニュヌトン法(limited memory quasi-Newton method)**が知られおいたす。
ただし、二回埮分を甚いた手法は非垞に速い収束率を持぀䞀方、逆行列の蚈算などで蚈算量のオヌダヌが非垞に倧きくなるため、ビッグデヌタに察しおはあたり向いおいたせん。

機械孊習では、冒頭に挙げた通り、慣性項を曎新匏に取り入れたMomentum、過去の募配の枛少情報を保持するAdamなどが有名です。

ただし、どのアルゎリズムも䞀長䞀短あり、問題ずの盞性もあるので、䞀抂にどれが優れおいるずいうのは蚀いづらいのが実際のずころです。

おわりに

本蚘事では、最適化問題の基瀎を取り䞊げおきたした。
珟圚は、優れたラむブラリが数倚く揃っおいるので、問題の最適化を行う郚分は数行曞いお終わり、ずいう方も倚いず思いたす。
しかし、䞊手く収束しない時、ステップ幅をどのように倉化させれば良いか、などを考える際には、最適化ぞの理解が必芁䞍可欠です。
本蚘事で、䞀人でも倚くの方が最適化に興味を持っお頂けるず幞いです。

蚘事䞭の匏、数倀は実際蚈算を行いたしたが、倧きく間違っおいるなど、お気付きの点、たたご感想がありたしたら、遠慮なくコメントや@hiyoko9tの方ぞお声がけください。

179
184
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
179
184

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?