深層学習

勾配の可視化

投稿日:


2変数関数\(f(x_0,x_1)\)を各変数で偏微分する。
地点\((i,j)\)におけるベクトル\((\frac{\partial f(x_0,j)}{\partial x_0},\frac{\partial f(i,x_1)}{\partial x_1})\)を全地点で記録していき、ベクトル場を得る。
このベクトル場が勾配(gradient)。

\(f(x_0,x_1)=x_0^2+x_1^2\)について、\(-4.0 \le x_0 \le 4.0\)、\(-4.0 \le x_1 \le 4.0\)の範囲で、
勾配を求めてみる。また、勾配を可視化してみる。

まず、2変数関数\(f(x_0,x_1)\)の偏微分係数を求める関数の定義。
\((3.0,3.0)\)の偏微分係数は\((6.00..,6.00..)\)。

\(-4.0 \le x_0 \le 4.0\)、\(-4.0 \le x_1 \le 4.0\)の範囲(\(0.5\)刻み)で偏微分係数を求めて、
ベクトル場っぽく表示してみる。matplotlibのquiver()は便利。
各地点において関数の値を最も増やす方向が表示されている。

値が大きい方向に矢印が向いている。例えば\((-3.0,3.0)\)における偏微分係数は\((-6.0,6.0)\)。
左上方向へのベクトル。

参考にしている本にはことわりが書いてあり、勾配にマイナスをつけたものを図にしている。
その場合、関数の値を最も減らす方向が表示されることになる。
各地点において、この勾配を参照することで、どちらに移動すれば関数の値を最も小さくできるかがわかる。

-深層学習
-

Copyright© ikuty.com , 2019 AllRights Reserved Powered by AFFINGER4.