微分のおさらい
つっても公式だけ。 証明することが重要なのではなくて、名前と概念を一致させることが最も重要と想定。
というのも、AI系の数学眺めて一番困るケースが
- なんでそうなるの?→公式の知識不足
- 説明の意味が分からない→単語の持ってる概念が分かってない
用語の説明を実に受けたくなりますねぇ
常微分
これは基本的な部分か。とりあえず公式だけ列挙
微分の表し方。
に対して、導関数(微分された関数)は以下左右どっちかの書き方をする。
公式
基本式
これを微分する場合、
となる。ついでを言うと、微分対象の x を含まない定数に微分をかけると、その項は消滅する。
複数関数の微分の場合は、各項に微分がそれぞれかかるとみなせる
これをサンプル的に試すと
関数積の微分
2関数の積を微分するとこうなる
定数を含む関数の微分
定数(ここでは k)は外に出すことができる
微分対象変数が累乗だった場合
微分対象変数が累乗だった場合の特殊条件
a がネイピア数(e) だった場合は log 不要。
自然対数(log_e)の微分
この場合は分数に化ける
ここまでは高校数学
連鎖律
合成関数を微分する場合、各関数の導関数の積で表せるというルール。
合成関数というのは
のように、複数関数が入れ子になっている関数のこと。
この時に、連鎖律のルールはこんな感じ
仮に
と仮定すると
大学数学なので、理系でそっち系を学ばないと単語からして「???」出るあたり。
証明過程は今回はスキップ。
偏微分
これも大学の数学。とはいえ、これは言ってることはたいして難しくない。
複数パラメータの存在する式で、特定のパラメータだけ微分するという考え方。
因みに個人的にはアインシュタインの一般相対性理論に出てくるイメージ(十元連立非線形偏微分方程式とかいう通称「アインシュタイン方程式」。式が一つに見えて、テンソルパラメータが4次元空間上では対称性をもつので、10の入力に化けるというもの テッサたんが6歳で解いたアインシュタイン方程式 )。
という式を 「y
を定数とみなして、x
を微分する」というやり方
これはニューラルネットの学習の時に、多次元テンソルのパラメータのうち、一つのパラメータ以外をすべて定数とみなして、前後極小で動かし(偏微分して)そのパラメータに付与すべき係数値を算出する…というように使った。
因みにこうして出てきた導関数は、通常の導関数と明確に分けるために 偏導関数 と呼ぶ。
全微分
z
を次の様に定義したとき、この z
の微分を 全微分 と呼ぶ。
この全微分をこんな感じに書けるらしい。
形見ればわかるけど、偏微分して足しただけだコレ。
ただし、ニューラルネットの入力テンソルで考えると、パラメータ数が不定なので、一般的な表し方をすると
多変数の連鎖律
これを全微分を適用して
さらに連鎖律を適用してこんな形になる。
パラメータ数を不定(i
)とするならこんな感じか
ということで、ちょっと考える
x
, y
の変化が全体 (z
)に与える影響は、x
, y
それぞれに対して偏微分すると出てくるので
なので、関連する関数数(≒ニューロン数や階層数)や、変数(≒入力パラメータ数)が増えた場合を想定すると
という式にできるはず。
ここまで飲み込むのに結構時間食ったな…
思考実験
'z' が変数 z1, x2.....xn
の関数で、m 階層の合成関数であるとき、パラメータ 'xN' の時の導関数は
'N' は単一の定数で思考すると、
とすると、これは行列のドット積で書けるので
とみなせる。
ここで 'N' とぼかしたが、可変長の として置き換えると
Oh 行列計算。ってニューラルネットワークの学習ってこの辺がめんどい…