0

機械学習に関する数理1

71
0

バックプロパゲーションを理解しよう

んちゃ!
今回は機械学習の入門的記事としてバックプロパゲーションについて書いていくのだ。
ちなみに、いつも通り厳密性より分かるを重視しているので、「どんなものでも厳密でなければならぬ!」と考えている方はブラウザバック推奨なのだ。

ニューラルネットワークの構成

層(layer)

層とは次のようなものなのだ。入力xRm、重みWRm×Rn、バイアスbRn、非線形関数列f={fi}i=1,2,...,n、出力yRnとするとき、次の様な処理を行うものの事なのだ。
y=f(xW+b)
ただし、f()とは成分で書くと次の様に定義されているのだ。
yi=fi(jmxjWji+bi)
ちなみに、以下重みW、バイアスb、非線形関数列fの層をL(W,b,f)の様に書くことにするのだ。

NeuralNetwork

NewuralNetworkとは、層Li(Wi,bi,fi)(i=1,2,...,N)を接続して処理を行ったものなのだ。

バックプロパゲーション

高次のテーラー展開

ベクトル場f:RmRnxRmでのTaylor展開は次の様に書けるのだ。
f(x+ϵ)=k=0(ϵ)kk!f(x)

fi(x+ϵt)=g(t)=k=01k!dkdxkg(0)=k=0(ϵt)kk!fi(x)

勾配降下法

パラメータa=(a1,a2,...,aN)を持つスカラー関数f(a1,a2,...,aN):Rnxf(a1,a2,...,aN;x)Rを極小にするパラメータは次のような方法を続ける事で近似できるのだ。
aaλaf(a,x)(λR+λ)

ϵaRNを考えると
f(aλaf(a,x),x)f(a,x)λ||af(a,x)||2
と書けるので、||λaf(a,x)||20なので、かならず負の値になるからなのだ。

チェインルール

実数xRから実ベクトルv(x)=(F1(x),F2(x),...,Fn(x))Rnへの関数と、目的関数E:RnRを考えるのだ。この時、dEdxは次の様に書けるのだ。
dEdx=k=1ndFkdxEFk

dEdx=limΔx01Δx[E(F1(x+Δx),F2(x+Δx),...,Fn(x+Δx))E(F1(x),F2(x+Δx),...,Fn(x+Δx))+E(F1(x),F2(x+Δx),...,Fn(x+Δx))E(F1(x),F2(x),...,Fn(x+Δx))++E(F1(x),F2(x),...,Fn(x+Δx))E(F1(x),F2(x),...,Fn(x))]=k=1ndFkdxEFk

自己微分と目的微分

先の微分でdFkdx(k=1,2,...,n)を自己微分列、EFk(k=1,2,...,n)を目的微分列と呼ぶことにするのだ。
*自己微分列、目的微分列なる様な用語は一般的に使われていないので注意。この記事の中だけで通じる用語です。目的微分は誤差関数を入力xで微分したもの。勾配降下法ではこの微分したものが最も重要なことが分かるだろうなのだ。

逆誤差伝播法実装手順

チェインルールを考慮すると下記画像の様にして目的微分を求める事ができる。 画像の名前 画像の名前 つまり、グラフ的に考えると次の様に目的微分を求めることで、すべての頂点に対して目的微分を求めることができるのだ。

  1. まず各頂点について、自己微分を求める処理を行う。
  2. 出次元が0の頂点について目的微分を求めるのだ。
  3. 次に、これら頂点に隣接する頂点を抜き出し、各々頂点を始点側の自己微分列、終点側の目的微分列との内積を求めるのだ。
  4. 以下同様の操作を繰り返すのだ。
  5. この操作が完了すれば各頂点上の目的微分が求められるのだ。
  6. ゆえに、パラメータを入力ととらえれば、これに対する目的微分も求められるので、勾配降下法を用いてパラメータを変更し、誤差関数を減少させることができるのだ。
  7. この勾配降下法を用いることで誤差関数の極小値を求めることができるのだ。
なおこの計算手順はトポロジカルソートで実装できるので調べてみてください。

投稿日:2024917
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. バックプロパゲーションを理解しよう
  2. ニューラルネットワークの構成
  3. バックプロパゲーション