0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

G検定4章|鞍点とは?損失関数・勾配降下法・局所最適解を数学的イメージから理解する

0
Posted at

G検定の第4章を勉強していて、特に理解しにくかったのが**「鞍点(saddle point)」**だった。

損失関数、勾配降下法、局所最適解、鞍点、プラトー……。

それぞれの用語だけを見ると別々の話に見えるが、

ニューラルネットワークは、損失関数という「地形」の中で、一番低い場所を探している

と考えると、一つの話としてつながった。

この記事では、G検定で必要になる範囲を中心に、鞍点とその周辺の数学的なイメージを整理する。


1. そもそもニューラルネットワークは何を探しているのか

ニューラルネットワークでは、大量の**重み(weight)**を調整しながら学習する。

例えば、

入力
↓
ニューラルネットワーク
↓
予測
↓
正解と比較
↓
Loss

という流れがある。

**Loss(損失)**は、

モデルの予測が正解からどれくらい外れているか

を数値化したもの。

そのため、学習では基本的に

Lossをできるだけ小さくする重みを探す

ことになる。


2. 損失関数を「地形」として考える

重みを1つだけ (w) とすると、損失関数は

$$
L(w)
$$

と表せる。

横軸を重み、縦軸をLossとすると、

Loss
↑
│\
│ \
│  \
│   \____
│        \
│          ★
└────────────────→ w

のようなグラフとして考えられる。

★のようなLossの低い場所を見つけたい。

つまり、

横軸 = Weight
縦軸 = Loss

高い場所 = 予測が悪い
低い場所 = 予測が良い

ということになる。


3. 勾配降下法とは「坂を下る方法」

では、Lossの低い場所をどうやって探すのか。

そこで登場するのが**勾配降下法(Gradient Descent)**である。

考え方は、

今いる場所の坂の傾きを調べて、Lossが小さくなる方向へ少し進む

というもの。

Loss
↑
│●
│ \
│   ●
│     \
│       ●
│         \
│           ★
└────────────────→ Weight

これを繰り返すことで、Lossの低い場所へ近づいていく。


4. 微分と勾配の関係

重みが1つだけなら、微分によって

この場所では、どちらへ進めばLossが下がるのか

を調べられる。

例えば、

$$
\frac{dL}{dw}
$$

が正なら、一方へ進むとLossが増える。

反対方向へ進めばLossを減らせる。

ニューラルネットワークでは、

(w_1, w_2, w_3, \dots)

のように大量の重みが存在する。

そこで、それぞれの方向について

Lossがどのように変化するか

をまとめたものが**勾配(gradient)**である。

そのため、大まかには

微分
↓
1つの変数について傾きを調べる

勾配
↓
複数の変数について
Lossがどちらへ変化するか調べる

と考えると分かりやすい。


5. 「勾配が0 = 最適解」とは限らない

ここからが鞍点を理解するうえで重要になる。

谷底では、傾きがなくなる。

つまり、

$$
\nabla L = 0
$$

となる。

そのため、

勾配が0なら最小値なのでは?

と思いたくなる。

しかし、実際にはそうとは限らない。

勾配が0になる場所には、極小値以外も存在する。


6. 局所最小値と大域最小値

例えば、次のようなLossの地形を考える。

Loss
↑
│
│\
│ \      /\
│  \____/  \
│     A        \
│               \____
│                   B
└────────────────────→ Weight

Aも谷底である。

しかしBの方がさらに低い。

この場合、

  • A:局所最小値
  • B:大域最小値

と考えられる。

局所最小値

その周辺だけを見れば一番低い場所。

大域最小値

関数全体で最も低い場所。

つまり局所最小値とは、

「この近所では一番いい。でも、もっと遠くにはさらにいい場所がある」

という状態である。


7. では「鞍点」とは何なのか

鞍点は、局所最小値とは少し違う。

代表的な例として、

$$
f(x,y)=x^2-y^2
$$

を考える。

ポイントは変数が

$$
x,y
$$

の2つ存在することである。


8. x方向だけを見る

(y=0) とすると、

$$
f(x,0)=x^2
$$

となる。

これは、

\       /
\     /
\   /
★

という谷になる。

つまり★は、

x方向から見ると最小値

である。


9. y方向から見ると逆になる

今度は (x=0) とする。

すると、

$$
f(0,y)=-y^2
$$

となる。

これは、

★
/\
/  \
/    \

という山になる。

つまり同じ★なのに、

y方向から見ると最大値

になっている。

まとめると、

x方向から見る
\       /
\     /
★

→ 谷底

y方向から見る
★
/   \

→ 山頂

となる。

これが**鞍点(saddle point)**である。


10. なぜ「鞍」という名前なのか

馬に乗るときに使う「鞍」の形に似ているからである。

鞍の中央を見ると、

前後方向
→ 谷

左右方向
→ 山

という形になっている。

そのため、

ある方向から見ると谷底
別の方向から見ると山頂

となる点を鞍点と呼ぶ。


11. 鞍点では勾配が0になる

先ほどの

$$
f(x,y)=x^2-y^2
$$

について微分すると、

$$
\frac{\partial f}{\partial x}=2x
$$

$$
\frac{\partial f}{\partial y}=-2y
$$

となる。

中心

$$
(x,y)=(0,0)
$$

では、

$$
\frac{\partial f}{\partial x}=0
$$

かつ

$$
\frac{\partial f}{\partial y}=0
$$

になる。

つまり、

$$
\nabla f=(0,0)
$$

である。

勾配は0なのに、最小値ではない。

ここが鞍点を理解するときの重要なポイントになる。


12. 停留点とは

勾配が0になる場所を、

停留点(stationary point)

という。

つまり、

$$
\nabla L=0
$$

となる場所。

ただし、停留点には複数種類ある。

停留点
│
┌───────┼───────┐
↓       ↓       ↓
極小値   極大値    鞍点

したがって、

勾配が0になったからといって、最小値を発見したとは限らない。

ということになる。


13. 二階微分で何が分かるのか

高校数学でも、

$$
f'(x)=0
$$

となる場所を調べただけでは、極大・極小を完全には判断できない。

そこで二階微分を見ることがある。

例えば、

$$
f''(x)>0
$$

なら、

\        /
\______/

のような形になる。

谷型なので極小値になりうる。

反対に、

$$
f''(x)<0
$$

なら、

/ ̄ ̄\
/        \

という山型になる。

つまり二階微分は、

その場所がどちら向きに曲がっているか

を調べる情報でもある。


14. ヘッセ行列とは

ニューラルネットワークでは変数が1つではない。

例えば、

(L(w_1, w_2, w_3, \dots))

という大量の変数を持つ関数になる。

そこで、多変数について二階微分の情報をまとめたものが

ヘッセ行列(Hessian matrix)

である。

G検定を理解する段階なら、

ヘッセ行列 = 多変数版の二階微分情報をまとめたもの

と考えると分かりやすい。


15. 鞍点とヘッセ行列

鞍点では、

ある方向
↓
谷
別の方向
↓
山

になっている。

つまり、

ある方向 → 下に凸
別の方向 → 上に凸

という状態である。

この性質はヘッセ行列の固有値を調べることで判断できる。

典型的な鞍点では、

正の固有値
+
負の固有値

が存在する。

ここで固有値の計算方法まで覚える必要はない。

重要なのは、

正負が混ざる = 方向によって曲がり方が違う

という意味である。


16. なぜニューラルネットワークで鞍点が重要なのか

実際のニューラルネットワークでは、重みが2個どころではない。

例えば、

w1
w2
w3
w4
...
w1000000

のように大量のパラメータを持つ。

したがってLossは、

$$
L(w_1,w_2,w_3,\dots,w_n)
$$

という非常に高次元の関数になる。

人間は3次元までしか直感的に描けないが、実際のニューラルネットワークでは、

数百万、数十億といった大量の方向を持つ「Lossの地形」

を探索することになる。

方向が増えるほど、

この方向では谷
でも
別の方向では山

という状態も考えなければならない。

そのため、ニューラルネットワークの最適化を理解するうえで鞍点という概念が重要になる。


17. プラトーとは

鞍点と一緒に理解しておきたいのが、

プラトー(plateau)

である。

プラトーは、Lossの変化が非常に小さい平坦な領域。

Loss
↑
│\
│ \
│  \____________
│               \
│                 \
└──────────────────→ Weight
↑
Plateau

この場所では、

$$
\nabla L \approx 0
$$

となる。

完全に0ではなくても、非常に小さい。


18. なぜプラトーが問題になるのか

勾配降下法による重みの更新は、大まかに

$$
w \leftarrow w-\eta\nabla L
$$

と表される。

ここで、

  • (w):重み
  • (\nabla L):勾配
  • (\eta):学習率

である。

プラトーでは、

(\nabla L)

が非常に小さい。

すると、

重みを少し更新
↓
Lossがほとんど変わらない
↓
また少し更新
↓
ほとんど変わらない
↓
……

となり、学習が進みにくくなる。


19. ここからMomentumにつながる

こうした最適化上の問題を理解すると、

Momentum

などの最適化手法がなぜ登場するのかも分かりやすくなる。

通常の勾配降下法では、

今いる場所の勾配

を利用して進む。

Momentumでは、それに加えて、

これまで進んできた方向

も考慮する。

坂を転がるボールのようなイメージである。

通常
●
↓
●
↓
●
──────────
平坦になると遅い

Momentum
●
↘
●
↘
●──────→

これまでの「勢い」が残る

そのため、平坦な領域や鞍点付近などでも、単純な勾配降下法とは異なる挙動をする。


20. SGD・Momentum・Adamの話も同じところにつながる

G検定では、

  • SGD
  • Momentum
  • AdaGrad
  • RMSprop
  • Adam

など大量の名前が登場する。

最初は別々のアルゴリズムとして暗記してしまいがちだが、根本的には、

複雑なLossの地形を、どう効率よく下っていくか?

という問題に対する工夫である。

ニューラルネットワーク
↓
大量のWeight
↓
複雑なLoss関数
↓
勾配を計算
↓
Lossを下げたい
↓
でも……
局所最小値
鞍点
Plateau
勾配の大きさの違い
などがある
↓
どう効率よく最適化する?
↓
SGD
Momentum
AdaGrad
RMSprop
Adam

こう考えると、それぞれの最適化手法を学ぶ理由が見えてくる。


21. G検定の図を見るときの読み替え

損失関数の3Dグラフが出てきたら、次のように読み替えると理解しやすい。

図に出てくるもの 意味
横方向 Weightなどのパラメータ
高さ Loss
高い場所 Lossが大きい
低い場所 Lossが小さい
坂 勾配
坂を下る Weightを更新する
谷底 極小値
近所だけで一番低い谷 局所最小値
全体で一番低い谷 大域最小値
方向によって山・谷になる場所 鞍点
平らな領域 Plateau

つまり、あの複雑そうな3Dグラフは、

ニューラルネットワークが学習するときに探索しているLossの地形

をイメージとして描いたものだと考えればよい。


22. 最後に一番重要なポイント

今回、鞍点を理解して一番重要だと思ったのは、

$$
\boxed{\nabla L=0 \neq 必ず最適解}
$$

ということだった。

勾配が0になる場所には、

極小値
極大値
鞍点

などが存在する。

さらに実際のニューラルネットワークでは大量のパラメータが存在するため、Lossの地形は非常に高次元になる。

だからディープラーニングでは、

「勾配を計算して下れば終わり」

ではなく、

複雑なLossの地形の中を、どう効率よく最適化するか

という問題が重要になる。

そして、この問題意識が、

損失関数
↓
勾配
↓
勾配降下法
↓
局所最小値・鞍点・Plateau
↓
Momentum
↓
AdaGrad / RMSprop
↓
Adam

というG検定第4章の話につながっている。

用語を一つずつ暗記するより、

「なぜ次の技術が必要になったのか?」

という順番で追うと、かなり理解しやすくなる。


参考文献

  • 日本ディープラーニング協会(JDLA)『深層学習教科書 ディープラーニング G検定(ジェネラリスト)公式テキスト 第3版』
  • 日本ディープラーニング協会(JDLA)「G検定 シラバス」
  • Goodfellow, Bengio, Courville, Deep Learning, MIT Press, Chapter 8: Optimization for Training Deep Models
  • Sebastian Ruder, An overview of gradient descent optimization algorithms
  • Dauphin et al., Identifying and attacking the saddle point problem in high-dimensional non-convex optimization, NeurIPS 2014

一言で復習

Loss
= AIがどれくらい間違っているか

勾配
= Lossが増える方向・その変化率

勾配降下法
= 勾配の反対方向へ進んでLossを減らす

局所最小値
= 近所では一番低い

大域最小値
= 全体で一番低い

鞍点
= ある方向では谷、別方向では山

Plateau
= ほぼ平坦で勾配が小さい

Momentum
= 過去の更新方向も利用して進む

Adam
= 勾配の情報を利用しながら
パラメータごとの更新量を適応的に調整する

G検定4章では、これらを独立した単語として覚えるのではなく、「Lossの地形をどう下るのか」という一つのストーリーとして理解するのがポイントである。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?