《制約なし最適化》のソースを表示
←
《制約なし最適化》
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、以下のグループに属する利用者のみが実行できます:
登録利用者
。
このページは編集や他の操作ができないように保護されています。
このページのソースの閲覧やコピーができます。
'''【せいやくなしさいてきか (unconstrained optimization)】''' 関数 <math>f:\mathbf{R}^n\to \mathbf{R}</math> が与えられたときに,<math>f(x)\,</math> を変数 <math>x \in \mathbf{R}^n</math> について最小化(もしくは最大化)する問題を[[制約なし最適化]] (unconstrained optimization) 問題という.ここで,<math>f(x)\,</math> を目的関数という.ある <math>x^*\in \mathbf{R}^n</math> に対して <table align="center"> <tr> <td><math>f(x^*) \le f(x) \quad \forall \, x \in \mathbf{R}^n</math></td> </tr> </table> が成り立つとき,<math>x^*\,</math> を最適解,あるいは大域的最適解という.また,ある <math>x^*\,</math> とその適当な近傍 <math>N(x^*)\,</math> に対して <table align="center"> <tr> <td><math>f(x^*) \le f(x) \quad \forall x \in N(x^*)</math> </td> </tr> </table> が成り立つとき,<math>x^*\,</math> を局所的最適解という.<math>f(x)\,</math> が <math>x^*\,</math> で微分可能であるとき,<math>x^*\,</math> が局所的最適解ならば <table align="center"> <tr> <td><math>\nabla f(x^*) = 0</math></td> </tr> </table> が成り立ち,さらに2回微分可能ならば,ヘッセ行列 <math>\nabla^2f(x^*)</math> は半正定値行列になる.逆に,<math>\nabla f(x^*)=0</math> が成り立ち,かつ,<math>\nabla^2 f(x^*)</math> が正定値行列ならば,<math>x^*\,</math> は局所的最適解になる.こうした最適性条件に基づいて,多くの数値解法は停留点,すなわち <math>\nabla f(x)=0</math> を満たす点 <math>x^*\,</math> を見つけることを目指している. 制約なし最適化問題を解くための数値解法は,目的関数値の情報だけを用いる直接探索法と微分の情報を用いる[[勾配法]] (gradient method) とに大別される[2, 3, 4, 5].勾配法は反復法に分類されるもので,適当な初期点 <math>x_0\,</math> から出発して,<math>k\,</math> 回目の反復で近似解 <math>x_k\,</math> と探索方向 <math>d_k\,</math> が与えられたときに <table align="center"> <tr> <td><math>x_{k+1} := x_k + d_k\,</math> </td> </tr> </table> によって点列 <math>\{x_k\}\,</math> を生成していくものである.このとき探索方向の決め方によっていろいろな数値解法が考えられる.探索方向を決めるために,目的関数を何らかの意味で近似したモデル関数を局所的に最小化することが考えられている.モデル関数として,1次モデルと2次モデル <table align="center"> <tr> <td><math>\begin{array}{lll} f(x_k+d) &\approx& f(x_k)+\nabla f(x_k)^{\top}d, \\ \\ f(x_k+d) &\approx& f(x_k)+\nabla f(x_k)^{\top}d +\frac{1}{2}d^{\top}\nabla^2f(x_k)d \end{array}</math></td> </tr> </table> がよく用いられる.1次モデル最小化に基づいた解法として[[最急降下法]] (steepest descent method) がある.この方法は探索方向を <math>d_k :=-\nabla f(x_k)</math> に選ぶものである.他方,2次モデル最小化に基づいた解法には,[[ニュートン法]] (Newton's method),[[準ニュートン法]] (quasi-Newton method),[[共役勾配法]] (conjugate gradient method)などがある.ニュートン法は連立1次方程式 <table align="center"> <tr> <td><math>\nabla^2f(x_k)d_k=-\nabla f(x_k)</math> </td> </tr> </table> を解いて探索方向<math>d_k\,</math>を決定する.また,準ニュートン法はヘッセ行列を行列 <math>B_k\in \mathbf{R}^{n\times n}</math> で近似して,連立1次方程式 <table align="center"> <tr> <td><math>B_kd_k=-\nabla f(x_k)</math> </td> </tr> </table> を解いて探索方向<math>d_k\,</math>を決定する.その際,勾配ベクトル <math>\nabla f(x)\,</math> の情報を含んだ更新公式を利用して <math>B_k\,</math> を逐次生成していくのが特徴である.いろいろな更新公式が提案されているが,特にBroyden-Fletcher-Goldfarb-Shanno (BFGS) 公式が有効であることが認められている.共役勾配法はこれらとは異なった立場の解法で,探索方向は <table align="center"> <tr> <td><math>d_k := -\nabla f(x_k) + \beta_kd_{k-1} \qquad (\beta_k\in \mathbf{R}</math>は適当なパラメータ<math>)\,</math> </td> </tr> </table> で定義される.<math>\beta_k\,</math> の選び方として Fletcher-Reeves公式やPolak-Ribiére-Polyak公式がある.ここで,ニュートン法が2階偏導関数を用いているのに対して,準ニュートン法や共役勾配法は1階偏導関数しか利用しないことに注意されたい. 数値解法の有効性を特徴づける指標として局所的な収束の速さの尺度である[[収束率]] (rate of convergence) と初期点の選び方によらず停留点への収束を保証する[[大域的収束性]] (global convergence) がある.収束率の観点からみれば,最急降下法は高々1次収束しかしない方法,ニュートン法は2次収束する方法,BFGS公式を用いた準ニュートン法は超1次収束する方法であるといえる.実用的には,超1次収束や2次収束する方法であることが望ましい.他方,大域的収束性はそのままでは達成出来ないので,何らかの補助手段を必要とする.代表的な手段として[[直線探索 (数理計画における)|直線探索法]] (line search method) と[[信頼領域法]] (trust region method) がある.直線探索法は,探索方向 <math>d_k\,</math> が与えられたときに,その方向でステップ幅 <math>\alpha_k\,</math> を調節して関数の減少 <math>f(x_k+\alpha_kd_k)<f(x_k)\,</math> を実現し,<math>x_{k+1} :=x_k+\alpha_kd_k\,</math> とおく.直線探索の枠組みで,最急降下法,準ニュートン法,共役勾配法の大域的収束性が示されている.それに対して信頼領域法は,2次モデルによる近似が妥当であると思われる領域で2次モデルを最小化するステップ <math>s_k\,</math> を選んで <math>x_{k+1} :=x_k+s_k\,</math> とする解法である.2次モデルでヘッセ行列を用いた場合(ニュートン法に対応する)やその近似行列を用いた場合(準ニュートン法に対応する)の信頼領域法の大域的収束性が示されている. 実際の応用では,目的関数値を単調に減少させることを緩和した非単調アルゴリズムや,ニュートン法において連立1次方程式を厳密には解かない非厳密ニュートン法などが効率的であることが知られている.また,大規模問題を解くためには,共役勾配法,ヘッセ行列のスパース構造を用いた信頼領域法,ベクトルの形でヘッセ行列の情報を更新する記憶制限準ニュートン法などが利用されている.なお,実際の数値計算では,導関数を解析的に与える代わりに,有限差分近似や自動微分を利用することも試みられている. 以上では微分可能な関数の最小化問題の数値解法を取り上げたが,実際には,目的関数が必ずしも滑らかであるとは限らない.こうした関数を最小化(もしくは最大化)する問題を[[微分不可能最適化]] (nondifferentiable optimization) 問題といい,滑らかな関数を最小化する問題よりも解くのが難しくなる.目的関数 <math>f(x)\,</math> に凸性などの仮定をすれば,最適性条件は次式で与えられる. <table align="center"> <tr> <td><math>0 \in \partial f(x) \qquad (\partial f(x)</math> は劣勾配の集合を表す<math>)\,</math> </td> </tr> </table> この条件を満たす点を見つけるためには,前述した数値解法がそのままでは使えないので,何らかの工夫をしなければならない.目的関数の劣勾配を利用したりヘッセ行列の代用品を利用することが考えられており,たとえば,バンドル法や[[一般化ニュートン法]] (generalized Newton method) などがある[1, 2]. ---- '''参考文献''' [1] J.-B. Hiriart-Urruty and C.Lemaréchal, ''Convex Analysis and Minimization Algorithms (I and II)'', Springer, 1993. [2] 伊理正夫,今野浩,刀根薫監訳,『最適化ハンドブック』,朝倉書店, 1995. [3] 今野浩,山下浩,『非線形計画法』, 日科技連, 1978. [4] J.Nocedal and S.J.Wright, ''Numerical Optimization'', Springer, 1999. [5] 矢部博,『最適化とその応用』, 数理工学社, 2006. [[Category:非線形計画|せいやくなしさいてきか]]
《制約なし最適化》
に戻る。
案内メニュー
個人用ツール
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
その他
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
最近の更新
おまかせ表示
ヘルプ
ORWikiへのお問い合わせ
OR学会HP
OR学会アーカイブ集
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報