見出し画像

G検定 4-4 16. 最適化手法-勾配降下法

シラバス 16. 最適化手法 についてまとめていきます

目標

勾配降下法(gradient descent)の概要を理解する
・勾配降下法の問題とそれを解決するための手法を列挙できる
・勾配降下法の計算を効率化する方法を説明できる
・ハイパーパラメータの概要と代表的な調整方法を列挙・説明できる

キーワード

AdaBound, AdaDelta, AdaGrad, Adam, AMSBound, RMSprop, 鞍点, イテレーション, エポック, オンライン学習, 学習率, 確率的勾配降下法 (SGD), グリッドサーチ, 勾配降下法, 局所最適解,早期終了, 大域最適解, 二重降下現象, ノーフリーランチの定理, ハイパーパラメータ, バッチ学習, ミニバッチ学習, モーメンタム, ランダムサーチディープラーニングの要素技術

Feloで作成

【勾配降下法とパラメータ調整の基本】


勾配降下法(gradient descent)とは

モデルの学習は誤差(コスト関数)を最小化を目指す(パラメータで微分してゼロになる値を求める)が、多次元だとパラメータの解析計算で求められないケースが多い。
そこでアルゴリズムを用いて最適解を探索するアプローチをとる。

この手法は、関数の最小値(または最大値)を見つけるために、関数の勾配(傾き)を利用してパラメータを反復的に調整することによって機能します

勾配降下法(こうばいこうかほう)の仕組み

イテレーション(反復)

イテレーション(反復)は、アルゴリズムが繰り返し実行される単位のことを指します。勾配降下法では、このイテレーションがパラメータを段階的に更新していくステップに該当します。

具体的なイテレーションの流れ

  1. 初期値の設定: 最初に、最適化したい関数のパラメータをランダムまたは適切な値で初期値を設定します。

  2. 勾配の計算: 現在のパラメータにおける関数の勾配(微分値:接線の傾き)を計算します。勾配は、関数の傾きを示し、最も急な下降方向を指し示します。

  3. パラメータの更新: 勾配の方向に反対の方向に学習率(Learning Rate)と呼ばれるパラメータ(ステップサイズ)を調整、更新。

  4. 収束の確認: このプロセスを繰り返し、目的関数の値が収束(十分小さくなる)するか、最大イテレーション数に達するまで繰り返します。

■ハイパーパラメータ

訓練開始前に手動で設定する必要があり、適切な値を選択することでモデルの性能向上や効率的な収束を実現します。

勾配降下法の重要なハイパーパラメータ

  1. 学習率(Learning Rate, η\etaη):

    • 変化量を決めるパラメータ。

    • 学習率が小さすぎると収束が遅く、大きすぎると発散する。

  2. 初期値(Initialization):

    • パラメータの初期値により、最適化の収束速度が影響を受ける。

  3. 収束条件:

    • 勾配の大きさが一定以下になる。

    • 目的関数の変化量が小さくなる。

■勾配降下法の種類

バッチ勾配降下法

  • データセット全体を使用して勾配を計算し、パラメータを更新します。

  • 最急降下法とよぶこともある

  • メモリ不足になりやすい

  • バッチ(batch)とはデータの固まりのこと

  • バッチ学習

確率的勾配降下法(SGD)

  • ランダムに選ばれた予測誤差を一つずつ更新式を解くこと

  • 頻繁にパラメータを更新します。

  • メモリを気にせず探索

  • 速いがノイズが多くなる可能性

  • オンライン学習 (Online Learning)(新しいデータが来るたびに少しずつ知識を更新していく方法。)

  • 全データを1回使うまでのインテレーション数が多くなる

ミニバッチ勾配降下法

  • データを小分けにして学習

  • バランスの取れた方法

  • ミニバッチサイズの選択が重要であり、小さすぎると不安定になり、大きすぎると計算効率が低下する可能性があります。


GPT4miniより
  • エポック…全データを用いる回数。

  • イテレーション…何回繰り返し計算したか

■勾配降下法の問題と改善

局所最適解 (Local Optimum)

  • 近くではそれが一番良いけれど、全体の中ではもっと良い答えがあるかもしれない地点です。

  • これを防ぐ方法として、学習の値を大きく設定する。しかし、大きくしすぎても最適解を飛び越えて探索し続けてしまう問題が起きる。

大域最適解 (Global Optimum)

  • 全体の中で一番良い答えのことです。

鞍点 (Saddle Point)

  • ちょうど谷と山が重なっている地点です。この地点では学習の進み方が難しくなります(こうした停留状態をプラトーという)。ある時点でみれば極小、別の次元から見ると極大となってしまう。

  • ディープランニングではパラメータの次元も大きいので、鞍点が発生する確率が高い。問題回避にはどの方向に沿って勾配を進んでいるときに学習率を大きく(あるいは小さく)すべきか考える必要があります。

  • モーメンタム (Momentum)

    • 前回の練習の進み方を参考にして、次の練習をもっとスムーズにする方法です。

    • 1990年に提唱。物理でいう慣性の考え方を適用したもので、最適化の進行方向に学習を加速させることで、学習の停滞を防ぐもの。


1. 局所最適解に陥る

改善方法:

  • モメンタム(Momentum)
    過去の勾配情報を利用して、更新方向に慣性を持たせることで、局所最適解を突破しやすくします。

  • Adam(Adaptive Moment Estimation)
    モメンタムを取り入れた上で、学習率を適応的に調整します。これにより収束の安定性を向上させ、局所最適に陥る可能性を下げます。


2. 収束が遅い

改善方法:

  • モメンタム(Momentum)
    勾配の更新を滑らかにし、谷間でのジグザグな動きを減らして速い収束を実現します。

  • Nesterov Accelerated Gradient(NAG)
    モメンタムに加え、事前に次のステップを見据えた勾配計算を行う方法です。これにより、収束速度をさらに向上させます。

  • 適応学習率

    • Adagrad: 勾配の二乗和で学習率を動的に小さくして安定化を図ります。

    • RMSProp: Adagradの変種で、過去の勾配の情報を指数平均で考慮することで、収束速度を維持します。

    • Adam: モメンタムとRMSPropの長所を組み合わせ、高速かつ安定した収束を実現します。


3. 発散の可能性

改善方法:

  • 学習率の適切な設定
    最初に小さめの学習率を選択し、試行錯誤を繰り返します。

  • 適応学習率(Adagrad、RMSProp、Adam)
    特徴ごとに異なる学習率を動的に設定することで、大きな変動を防ぎます。

  • 勾配クリッピング(Gradient Clipping)
    勾配が極端に大きくなる場合、その値を一定の閾値で制限します。


4. スケールの影響

改善方法:

  • 特徴量の正規化(Normalization)
    入力データをスケールに合わせて変換(標準化やMin-Maxスケーリング)し、各特徴量の値域を揃えます。

  • 適応学習率
    特徴量ごとのスケールに応じた学習率(例: Adagrad、RMSProp、Adam)で効率的な更新を行います。


5. サドルポイントで停滞

改善方法:

  • モメンタム(Momentum)
    慣性による動きで勾配が小さい領域でも進み続けられるようにします。

  • Adam
    過去の勾配を考慮しつつ、学習率も適応的に変化させ、停滞を回避します。


6. 計算コスト

改善方法:

  • ミニバッチ法
    データセットを小さなミニバッチに分割して更新を行い、全サンプルを使用せず効率化します。
    (例: ミニバッチサイズを32や64に設定)

  • 適応学習率(Adagrad、RMSProp、Adam)
    学習率の動的調整により、より少ない計算量で収束が期待できます。


各改善方法は、単独で用いる場合もありますが、実際には複数の手法を組み合わせて用いることが一般的です。
特に、Adamは多くの問題で汎用的に良い結果を出すため、初期段階での選択として有効です。

■学習率を調整するアルゴリズム

古いものから

AdaGrad (アダグラッド) 

学習するたびに速度を調整して、少しずつ賢くなる方法です。たくさん練習するほど効率的になります。

AdaDelta (アダデルタ) 

手動で速度を設定する必要がなく、自動で過去のデータに基づいて学習の速度を調整する方法です。

RMSprop (アールエムエスプロップ)

  • AdaGradの改良版で、新しい練習問題の難易度に応じて速度を調整する方法です。

  • 過去の勾配を考慮

  • 学習率を自動調整

Adam(アダム) 

  • 最も一般的な最適化手法

  • 適応的な学習率調整

AdaBound (アダバウンド) 

機械学習が「賢く」なるために、学ぶ速度を調整する方法の一つです。学習の速度が急に速くなりすぎないように、ちょうどいい範囲で調整されます。

AMSBound (アムスバウンド) 

Adamの改良版で、学習の速度が変わりすぎないように制御することで、もっと安定した学習を目指します。

■早期終了 (Early Stopping)

過学習を防ぐため学習が行き詰まりそうなときに、無駄に続けるよりもそこで終わる方法です。

GPT40mini

ノーフリーランチの定理 (No Free Lunch Theorem)

  • どんな問題にも使える万能な方法はないという考え方です。

二重降下現象 (Double Descent)

  • 学習が進むと、一回成績が悪くなってから再び良くなるという現象です。

■ハイパーパラメータ調整

ハイパーパラメータは、モデルのトレーニングプロセス中に一定であり、通常ユーザーが設定する必要のあるパラメータです。設定項目が多く、手動で最適なものを選ぶのが大変、、、そこでハイパーパラメータチューニングを用いて機械的に処理させる

手動によるチューニング

  • メリット: 専門知識を活かせる、計算コストが低い

  • デメリット: 時間と労力がかかる、最適な値を見つけるのが難しい

グリッドサーチ (Grid Search)

  • 様々な設定を試して、どの組み合わせが一番良いかを探す方法です。

  • メリット: 実装が簡単

  • デメリット: 次元の呪いにかかりやすい、計算コストが高い

ランダムサーチ (Random Search)

  • 設定をランダムに選んで試してみることで、一番良い設定を探す方法です。

  • メリット: グリッドサーチよりも効率的

  • デメリット: 最適な値を見つける保証がない

ベイズ最適化

  • メリット: 少ない試行回数で最適な値を見つけられる

  • デメリット: 実装が複雑

ハイパーバンディット(Hyperband)

早期終了を利用した効率的なリソース配分アルゴリズム。
多数のモデルを一部のデータで訓練し、優れたパフォーマンスが期待できるモデルに集中。

  • メリット: モデルの性能を大幅に向上させることができます

  • デメリット: 時間と計算リソースを要します

遺伝的アルゴリズム(Genetic Algorithm)

  • メリット: 並列化が容易であり、計算時間を短縮できる。広い探索範囲を持つため、局所最適解に陥りにくい。

  • デメリット:パラメータ設定が難しく、計算コストが高く、時間がかかる場合がある。収束が保証されているわけではない。

いいなと思ったら応援しよう!