勾配とは
勾配とは
勾配は以下の定義で示されます。
これはスカラー場と呼ばれる、スカラ量が分布している空間に対して定義されます。
スカラー場は、各点(x,y,z)に対して一つのスカラ量が定義されている空間のことです。
ここで勾配とは、xyzの各方向における微分を表しています。
また、
勾配の方向は三次元関数fにおいて、fが正の方向に最も激しく変化する方向と一致している。※1
という重要な性質を持ちます。
ここで、勾配の値は相対的な値であることに注意しましょう。
の時、
この意味は、一定の量rだけ動いたときに、どの程度fが変化するのかです。
つまり、z方向にrだけ移動すると、100rだけfが増加し、x方向にrだけ移動すると1rだけfが増加するということです。
偏微分について
この
偏微分とは、
他の変数を固定して特定の変数のみを動かしたとき、その変数を引数に持つ関数がどれだけ変化するかを表したものです。
少しわかりづらいため例を示します。
上記ではこの性質を利用して、勾配の方向を求めています。
実装
実際に機械学習で実装する場合、以下のようになります。
#追記予定
今回はここまでです。読んでいただきありがとうございました!
付録
※1の証明
fの微小変位Δfは、
テイラー展開して
右辺を変形して
となり、内積を用いて
と表すことができる。
内積の定義より
となり、θは移動量の向きとgradfの間の角度であり、Δfが最大になるのはcosθ=1の時なので
θ=0、つまりgradfの向きと移動方向が一致している時である。
よってgradfの方向に移動する時、関数fが正の方向に最も激しく変化する。
Discussion