MML
  • 数学プログラミング置き場
  • 数学記号記法一覧
  • 機械学習のための数学
    • 確率論
  • 機械学習・データサイエンス
    • 1. 機械学習・データサイエンス(概要)
    • 2. 機械学習
      • 2.1. 機械学習をこれから始める人へ
      • 2.2. 回帰問題
        • 2.2.1. 線形回帰の基礎
        • 2.2.2. 線形回帰モデルと正則化
        • 2.2.3. 線形基底関数モデル
          • いろいろな基底関数
        • 2.2.4. ベイズ線形回帰モデル
        • 2.2.5. カーネル回帰
        • 2.2.6. ガウス過程回帰
        • 2.2.7. 一般化線形モデル
        • 2.2.8. 一般化加法モデル
        • 2.2.9. 分位点回帰
        • 2.2.10. 3層ニューラルネットワーク
        • 2.2.11. 深層学習
        • 2.2.12. 深層学習とガウス過程
      • 分類問題
        • 線形判別分析
        • SVM
        • カーネルSVM
      • 強化学習
    • 3. データサイエンス
      • 主成分分析
      • 白色化
      • 低ランク行列近似
      • 行列補完
      • NMF
      • スパースモデリング
        • LASSO
          • FISTA
          • ADMM
        • 全状態探索法
    • 4. ニューラルネットワーク
      • CNN
      • GAN
      • VAE
      • GNN
      • word2vec
    • 5. ベイズ推論
      • 確率
      • 確率分布
      • ちょっとだけ振り返って
      • MCMC
      • ギブスサンプリング
      • 変分推論
  • 連続最適化
    • 1. Taylor展開と関数近似
    • 2. Taylorの定理と誤差の評価
    • 3. 最適化問題
    • 4. 直線探索法
      • 4.1. 最急降下法
      • 4.2. Armijo条件・Wolfe条件
      • 4.3. ニュートン法
      • 4.4. 共役勾配法
        • 4.4.1. 原始的な共役勾配法
        • 4.4.2. PRP法
        • 4.4.3. HS法
      • 4.5. 準ニュートン法
        • 4.5.1. DFP法
        • 4.5.2. BFGS法
        • 4.5.3. L-BFGS法
        • 4.5.4. Bryoden family of methods
        • 4.5.5. Broyden法
    • 5. 確率的最適化
      • 5.1. 確率的勾配降下法(SGD)
      • 5.2. 確率的準ニュートン法(SQN)
  • 行列計算
    • QR分解
    • コレスキー分解
    • 一般化コレスキー分解
    • 固有値分解
    • 一般化固有値問題
    • 特異値分解
  • その他
    • 位相限定相関法
  • カーネル法
    • カーネル法(概要)
  • Riemannian最適化
    • Riemann多様体って?
    • Riemannian最適化(概要)
    • 概説
    • 詳説
      • 解析学
      • 線形代数学(反変性・共変性・不変量)
      • テンソル解析
      • リーマン積分と微分形式
      • 位相空間論
      • 多様体論(解析幾何学)
      • Riemann多様体
  • プログラミングサイドブック
    • はじめに
    • Step 0. 勉強の仕方
      • いつ始める?どれくらい勉強する?
      • どうやって勉強する?
      • どこから手をつけたらいい?
    • Step 1. インターネットで調べる
    • Step 2. コンピュータの仕組みを学ぶ
    • Step 3. 開発環境を整える
    • Step 4. プログラミング言語を学ぶ
    • Step 5. 次のステップへ進むには
    • Step 6. 情報科学を学ぶ
  • プログラミング
    • プログラミング(概要)
    • システムの構成
    • サーバーのセットアップ
      • OSセットアップ
        • ユーザの作成
        • SSHの設定
        • ファイアウォールの設定
      • ドメインの取得と設定(Google domain)
    • Dockerによる仮想化
    • サーバーサイド(golang/gin)
    • リバースプロキシの設置(nginx)
    • SSL/TLS(Let's Encrypt)
    • フロントエンド(Elm)
    • Authentication(Firebase)
    • DB(MySQL)
    • KVS(Redis)
  • 数学勉強ノート
    • 0. 数学勉強ノート(概要)
    • 1. 第1群(基礎1)
      • 1.1. 集合
      • 1.2. ファジィ集合
      • 1.3. 論理学
      • 1.4. 位相
      • 1.5. 代数学
        • 1.5.1. 群
        • 1.5.2. 環
        • 1.5.3. 体
      • 1.6. 多様体論
    • 2. 第2群(基礎2)
      • 2.1. 線形代数学
      • 2.2. 解析学
        • 2.2.1. 常微分
        • 2.2.2. 全微分/偏微分
        • 2.2.3. 反変・共変と不変量
        • 2.2.4. リーマン積分
        • 2.2.5. 外微分
        • 2.2.6. ベクトル解析
      • 2.3. 複素解析学
      • 2.4. 圏論
      • 2.5. 測度論
      • 2.6. 確率論
    • 3. 第3群(情報科学)
      • 3.1. 情報理論
      • 3.2. 通信符号理論
      • 3.3. 暗号理論
      • 3.4. グラフ理論
    • 4. 第4群(基礎3)
      • 4.1. 位相幾何学
      • 4.2. 微分幾何学
      • 4.3. 関数解析学
      • 4.4. 偏微分方程式論
      • 4.5. 数値解析学
        • 4.5.1. 常微分方程式
        • 4.5.2. 偏微分方程式
        • 4.5.3. 固有値問題/特異値分解
      • 4.6. 数理統計学
    • 5. 第5群(物理学)
      • 5.1. 古典力学
      • 5.2. 剛体力学
      • 5.3. 流体力学
      • 5.4. 解析力学
      • 5.5. 電磁気学
      • 5.6. 相対性理論
      • 5.7. 熱力学
      • 5.8. 統計力学
      • 5.9. 量子力学
    • 6. 第6群(電気・機械工学)
      • 6.1. 電気回路学
      • 6.2. システム制御理論
    • 7. 第7群(基礎4)
      • 7.1. 情報幾何学
      • 7.2. 確率解析
  • 書籍メモ
    • 書籍メモ(概要)
  • 論文メモ
    • 論文メモ(概要)
    • 線形代数
      • The Matrix Cookbook
      • ON THE EARLY HISTORY OF THE SINGULAR VALUE DECOMPOSITION
      • The tensor rank decomposition
    • 行列分解
      • Probabilistic Matrix Factorization
      • Probabilistic Matrix Factorization with Non-random Missing Data
      • Graph Regularized Non-negative Matrix Factorization for Data Representation
      • Alternating least squares for personalized ranking
    • 連続最適化
      • Quasi-Newton Methods: Superlinear Convergence Without Line Searches for Self-Concordant Functions
    • 確率・統計
      • Statistical inference of Langevin distributionfor directional data
      • Bayesian Inference over the Stiefel Manifold via the Givens Representation
      • あとで読む(Langevin distribution)
    • Riemannian最適化
      • A Broyden Class of Quasi-Newton Methods for Riemannian Optimization
      • Riemannian stochastic quasi-Newton algorithm with variance reduction and its convergence analysis
      • Primal-Dual Optimization Algorithms over Riemannian Manifolds: an Iteration Complexity Analysis
      • Extending FISTA to Riemannian Optimization for Sparse PCA
    • RCD空間
      • On the geometry of metric measure spaces. I
      • On the geometry of metric measure spaces. II
      • Cohomology and other analyticalaspects of RCD spaces
      • Untitled
  • 雑記帳
    • 球面幾何(楕円幾何)
    • 双曲幾何
  • なんかの部屋
    • データの表現について
Powered by GitBook
On this page
  • アルゴリズム
  • 準ニュートン法
  • 原理
  • セカント条件
  • 収束性

Was this helpful?

  1. 連続最適化
  2. 4. 直線探索法

4.5. 準ニュートン法

2020/1/13公開

Previous4.4.3. HS法Next4.5.1. DFP法

Last updated 5 years ago

Was this helpful?

アルゴリズム

1. 初期値x(0)∈Rnx _ {(0)} \in \mathbb{R} ^ {n}x(0)​∈Rnを定める(定め方は任意である)

2. 探索方向m(k)m _ {(k)}m(k)​を

m(k)=−B(k)−1grad⁡f(x(k))m _ {(k)} = - B _ {(k)} ^ {-1} \operatorname{grad} f(x _ {(k)})m(k)​=−B(k)−1​gradf(x(k)​)

 または

m(k)=−H(k)grad⁡f(x(k))m _ {(k)} = - H _ {(k)} \operatorname{grad} f(x _ {(k)})m(k)​=−H(k)​gradf(x(k)​)

 によって定める(ただしB(k),H(k)B _ {(k)}, H _ {(k)}B(k)​,H(k)​はセカント条件を満たす正定値行列である)

3. 直線探索によってステップサイズα(k)\alpha_{(k)}α(k)​を定める

4. 収束するまで以下の式を用いて更新を繰り返す

x(k+1)=−α(k)B(k)−1grad⁡f(x(k))B(k+1)=(some update formula)\begin{aligned} x _ {(k+1)} = - \alpha _ {(k)} B _ {(k)} ^ {-1} \operatorname{grad} f (x _ {(k)}) \\ B _ {(k+1)} = ({\rm some \, update \, formula}) \end{aligned}x(k+1)​=−α(k)​B(k)−1​gradf(x(k)​)B(k+1)​=(someupdateformula)​

 または

準ニュートン法

準ニュートン法(quasi-Newton method)は Hesse 行列を勾配によって近似してニュートン法に近い形で最適化を行う手法である。

  1. Hesse 行列が陽な形で計算できない場合

  2. Hesse 行列を直接計算するには計算量が大きくなる場合

  • 高速

  • 省メモリ

  • 高精度

を達成しており、現代で大規模最適化問題を解く際の主流の方法となっている。

原理

ニュートン法の原理の説明のときに現れた 、2次近似した関数の極値への移動を表す (4.3.6) 式を再び以下に示す。

セカント条件

であり、整理すれば

と書き直せる。上の式で誤差の項を無視した

となってセカント条件の第2式が求まる。

収束性

準ニュートン法は超1次収束のアルゴリズムである。

H(k+1)=(some update formula)H _ {(k+1)} = ({\rm some \, update \, formula})H(k+1)​=(someupdateformula)

 B(k),H(k)B _ {(k)}, H _ {(k)}B(k)​,H(k)​の更新式は DFP 法や BFGS 法の項目を参照のこと。

準ニュートン法においても実装の仕方によっては近似した Hesse 行列B(k)B _ {(k)}B(k)​の逆行列を計算せねばならない場合はあるが、その場合でも

には有効である。また、BFGS 法などは Hesse 行列の逆行列H(k)H _ {(k)}H(k)​を直接アップデートできるので逆行列の計算を回避できる。さらに L-BFGS 法ではH(k)H _ {(k)}H(k)​をより小さいサイズのベクトルで近似するので、

Δx=−Hx(k)−1grad⁡f(x(k))(4.5.1)\Delta x = - H _ {x _ {(k)}} ^ {-1} \operatorname{grad} f (x _ {(k)}) \tag{4.5.1}Δx=−Hx(k)​−1​gradf(x(k)​)(4.5.1)

準ニュートン法ではこのHx(k)H _ {x _ {(k)}}Hx(k)​​またはその逆行列Hx(k)−1H _ {x _ {(k)}} ^ {-1}Hx(k)​−1​の計算を回避したい。そこでHx(k)H _ {x _ {(k)}}Hx(k)​​を近似する正定値行列B(k)B _ {(k)}B(k)​を導入して

m(k)=−B(k)−1grad⁡f(x(k))(4.5.2)m _ {(k)} = - B _ {(k)} ^ {-1} \operatorname{grad} f (x _ {(k)}) \tag{4.5.2}m(k)​=−B(k)−1​gradf(x(k)​)(4.5.2)

とする。ニュートン法では更新方向m(k)m _ {(k)}m(k)​とステップサイズα(k)\alpha _ {(k)}α(k)​を合わせたΔx=α(k)m(k)\Delta x = \alpha _ {(k)} m _ {(k)}Δx=α(k)​m(k)​が直接求まったが、準ニュートン法では Hesse 行列を近似したため、改めてα(k)\alpha _ {(k)}α(k)​を直線探索によって求める必要が生じる(Hesse 行列の近似がうまく行っていることを期待して最初はα(k)=1\alpha _ {(k)} = 1α(k)​=1で固定して試してみてもよいが、Hesse 行列は一般に正定値であるとは限らない)。

B(k)B _ {(k)}B(k)​を正定値行列に限ったのは、更新方向m(k)m _ {(k)}m(k)​が目的関数の降下方向であることを保証するためである(証明は最急降下法のページに記した)。

B(k)B _ {(k)}B(k)​の選び方には自由度がある。このB(k)B _ {(k)}B(k)​の選び方によって、これから紹介する DFP 法や BFGS 法といったバリエーションが生じる。

また、L-BFGS 法ではB(k)B _ {(k)}B(k)​を計算せずその逆行列を直接更新することが可能なので、H(k)=B(k)−1H _ {(k)} = B _ {(k)} ^ {-1}H(k)​=B(k)−1​とおいて

m(k)=−H(k)grad⁡f(x(k))(4.5.3)m _ {(k)} = - H _ {(k)} \operatorname{grad} f (x _ {(k)}) \tag{4.5.3}m(k)​=−H(k)​gradf(x(k)​)(4.5.3)

とする。H(k)≈Hx(k)−1H _ {(k)} \approx H _ {x _ {(k)}} ^ {-1}H(k)​≈Hx(k)​−1​なので少々紛らわしいが、慣習的にそう置かれることが多いので容赦していただきたい(数学は常に文字不足に悩まされているのだ)。

正定値行列BkB _ kBk​の選び方には自由度があるといったが、準ニュートン法では正定値性に加えて以下の条件を課す。

B(k+1)s(k)=y(k)H(k+1)y(k)=s(k)where{s(k)=x(k+1)−x(k)y(k)=grad⁡f(x(k+1))−grad⁡f(x(k))(4.5.4)\begin{aligned} B _ {(k+1)} s _ {(k)} &= y _ {(k)} \\ H _ {(k+1)} y _ {(k)} &= s _ {(k)} \end{aligned} \quad {\rm where} \begin{cases} s _ {(k)} = x _ {(k+1)} - x _ {(k)} \\ y _ {(k)} = \operatorname{grad} f(x _ {(k+1)}) - \operatorname{grad} f(x _ {(k)}) \end{cases} \tag{4.5.4}B(k+1)​s(k)​H(k+1)​y(k)​​=y(k)​=s(k)​​where{s(k)​=x(k+1)​−x(k)​y(k)​=gradf(x(k+1)​)−gradf(x(k)​)​(4.5.4)

これをセカント条件(secant condition)という。上式の第1式と第2式はB(k+1)B _ {(k+1)}B(k+1)​が正則ならば同値であり、通常はどちらか一方を満たせばよいものとする。

セカント条件は勾配に対する Taylor の定理から導出される。grad⁡f(x)\operatorname{grad} f(x)gradf(x)についてx(k+1)x _ {(k+1)}x(k+1)​の周りで Taylor の定理を適用すると

grad⁡f(x(k+1)+Δx)=grad⁡f(x(k+1))+<∇grad⁡f(x(k+1)),Δx>+O(∥Δx∥2)(4.5.5)\operatorname{grad} f (x _ {(k+1)}+\Delta x) = \operatorname{grad}f(x _ {(k+1)}) + \left<\nabla \operatorname{grad}f(x _ {(k+1)}), \Delta x \right> + O(\| \Delta x \| ^ 2) \tag{4.5.5}gradf(x(k+1)​+Δx)=gradf(x(k+1)​)+⟨∇gradf(x(k+1)​),Δx⟩+O(∥Δx∥2)(4.5.5)

である。ここでΔx=−(x(k+1)−x(k))\Delta x = - \left( x _ {(k+1)} - x _ {(k)} \right)Δx=−(x(k+1)​−x(k)​)とおくと、

grad⁡f(x(k))=grad⁡f(x(k+1))−<∇grad⁡f(x(k+1)),x(k+1)−x(k)>+O(∥x(k+1)−x(k)∥2)(4.5.6)\operatorname{grad} f (x _ {(k)}) = \operatorname{grad}f(x _ {(k+1)}) - \left<\nabla \operatorname{grad}f(x _ {(k+1)}), x _ {(k+1)} - x _ {(k)} \right> + O(\| x _ {(k+1)} - x _ {(k)} \| ^ 2) \tag{4.5.6}gradf(x(k)​)=gradf(x(k+1)​)−⟨∇gradf(x(k+1)​),x(k+1)​−x(k)​⟩+O(∥x(k+1)​−x(k)​∥2)(4.5.6)
<∇grad⁡f(x(k+1)),x(k+1)−x(k)>=grad⁡f(x(k+1))−grad⁡f(x(k))+O(∥x(k+1)−x(k)∥2)(4.5.7) \left<\nabla \operatorname{grad}f(x _ {(k+1)}), x _ {(k+1)} - x _ {(k)} \right> = \operatorname{grad} f (x _ {(k+1)}) - \operatorname{grad}f(x _ {(k)}) + O(\| x _ {(k+1)} - x _ {(k)} \| ^ 2) \tag{4.5.7}⟨∇gradf(x(k+1)​),x(k+1)​−x(k)​⟩=gradf(x(k+1)​)−gradf(x(k)​)+O(∥x(k+1)​−x(k)​∥2)(4.5.7)

となる。この式は Hesse 行列Hx(k+1)=∇grad⁡f(x(k+1))H _{x _ {(k+1)}} = \nabla \operatorname{grad} f (x _ {(k+1)})Hx(k+1)​​=∇gradf(x(k+1)​)と (4.5.4) 式のs(k),y(k)s_ {(k)}, y _ {(k)}s(k)​,y(k)​を用いれば

Hx(k+1)s(k)=y(k)+O(∥x(k+1)−x(k)∥2)(4.5.7)H _ {x _ {(k+1)}} s _ {(k)} = y _ {(k)} + O(\| x _ {(k+1)} - x _ {(k)} \| ^ 2) \tag{4.5.7}Hx(k+1)​​s(k)​=y(k)​+O(∥x(k+1)​−x(k)​∥2)(4.5.7)
B(k+1)s(k)=y(k)(4.5.8)B _ {(k+1)} s _ {(k)} = y _ {(k)} \tag{4.5.8}B(k+1)​s(k)​=y(k)​(4.5.8)

がセカント条件の第1式である。(4.5.8) 式の両辺に左からH(k+1)=B(k+1)−1H _ {(k+1)} = B _ {(k+1)} ^ {-1}H(k+1)​=B(k+1)−1​をかければ

H(k+1)y(k)=s(k)(4.5.9)H _ {(k+1)} y _ {(k)} = s _ {(k)} \tag{4.5.9}H(k+1)​y(k)​=s(k)​(4.5.9)
4.5.1. DFP法
4.5.2. BFGS法
4.5.3. L-BFGS法
4.5.4. Bryoden family of methods
4.1. 最急降下法