『Gradients without Backpropagation』
Cartesian Genetic Programmingにおける誤差逆伝播法の導出
まだ導出途中
Cartesian Genetic Programmingの模式図
準備
記号の準備
入力層の出力:\( x_i \)
中間層の出力:\( y_j = f_j(x_{o(j)}, x_{p(j)}, a_j) \)
出力層の出力:\( z_k = g_k(y_{m(k)}, y_{n(k)}, b_k) \)
\(z_k\)の入力1:\(y_{m(k)}\)
\(z_k\)の入力2:\(y_{n(k)}\)
\(y_j\)の入力1:\(x_{o(j)}\)
\(y_j\)の入力2:\(x_{p(j)}\)
中間層のj番目のノードが持つ関数:\(f_j\)
出力層のk番目のノードが持つ関数:\(g_k\)
中間層のj番目のノードが持つ定数:\(a_j\)
出力層のk番目のノードが持つ定数:\(b_k\)
出力層の出力と教師信号からなる損失関数:\(E\)
ゴール
損失関数について中間層のj番目のノードが持つ定数\(a_j\)と出力層のk番目のノードが持つ定数\(b_k\)で微分
損失関数\(E\)を出力層の入力値で微分
\( \frac{\partial E}{\partial z_k} \)の値はいい感じにプログラマが計算して与えるものとする。損失関数を数値微分しても良い。
損失関数\(E\)を中間層の入力値で微分
\(j = m(k)\)あるいは\(j = n(k)\)のときの\(\frac{\partial E}{\partial y_j}\)についてはすでに上にて計算済みであり、使いまわすことができる。
誤差逆伝播法の導出
合っているかは保証しない。ちょっと自信がない。
前置き
ニューラルネットワークの構成
変数の整理
入力層の出力を\(z_i\), 中間層の出力を\(y_j\), 出力層の出力を\(o_k\)と置く。
入力層から中間層への重みを\( v_{ji} \), 中間層から出力層への重みを\( w_{kj} \)と置く。
\(f\)をsigmoidなどの活性化関数と置く。
ニューロンの出力の計算
微分の伝播
損失関数を出力層の出力\(o_k\)で微分
教師信号を\(t_k\), 損失関数を\(L = \cfrac{1}{2}\sum_{k=1}^{K}(t_k - o_k)^2\)と置くと、損失関数\(L\)を出力層の出力\(o_k\)について微分した関数は
となる。
損失関数\(L\)についている\(\cfrac{1}{2}\)は、微分時に発生する2の乗算を打ち消し、微分後の数式を単純化して良い気分になるためについている。実用上はあってもなくても変化がない。学習率で調整される。
出力層の出力\(o_k\)を出力層の重み\(w_{kj}\)で微分
損失関数を出力層の重み\(w_{kj}\)で微分
のちの計算のために、
としておく。
出力層の重みの更新
最急降下法を用いて更新する。
\(w_{kj}\)の変量を\(\varDelta{w_{kj}}\), 学習率を\(\eta\)と置くと、
となり、\(w_{kj}\)は
のように更新する。
損失関数を中間層の出力で微分
より
となる。
損失関数を中間層の重みで微分
簡単化のために
と置くと、
となる。
中間層の重みの更新
出力層の重みの更新と同様に、
のように更新する。
入力層の重みの更新
筆者は力尽きたので読者の宿題とします。
『深層学習 Part 2』
あれ
遺伝的プログラミングと誤差逆伝播法を組み合わせるにあたって、誤差逆伝播法の具体的計算方法がウェブを見ていてもわからんので、『ニューロ・ファジィ・遺伝的アルゴリズム』を戸棚から引き出してきた。誤差逆伝播法の章にt_wの書き込みがされており、理解の道筋をたどることができる算段。
ただ、紙の書籍で取り回しが悪いので、アレしましょう。デライトに書きましょう。
『はじめてのパターン認識 第7章 パーセプトロン型学習規則』
あれ
遺伝的プログラミングで誤差逆伝播法行くぞ!!!
遺伝的プログラミング(Cartesian Genetic Programming)で得られたグラフ構造に内在するパラメーターを誤差逆伝播法で学習してやるのだぁ!!
遺伝的プログラミング単体ではどうにも学習が進まないのでやってやろうじゃねぇかよとなった。
『生成 AI に必要な「基盤モデル」のメモリ使用量 98%削減につながる技術を開発 ─ 自動運転車や工作用ロボット用組み込みシステムへの搭載を目指す』も背中を後押しした。良い構造の小さいモデルで良い性能が出せることが示された。
『Learning Multiagent Communication with Backpropagation』
キャッチ―な言い方をすれば、AI同士にコミュニケーションを学習させる研究
誤差逆伝播法によるマルチエージェントのコミュニケーション学習
誤差逆伝播法を用いて以下を学習する
- エージェントがほかのエージェントに向けて発信する信号
- 受信した信号に対するエージェントのふるまい
著者にFacebook AI Researchに所属している人がいる
以前、「Facebookの人工知能が暴走して独自言語でやり取りし始めた」みたいなやつが出回っていたが、あれとは別のやつ
https://arxiv.org/abs/1605.07736