前回からだいぶ時間が空いてしまいました。誰も見てないものかと...多層パーセプトロンの学習法として使われる誤差逆伝播法について書いていきますが、この記事シリーズのルール「長いけど平易」を守るとけっこうな長さになったので、分割して掲載します。今回は一言で言えば誤差逆伝播法の理論で使う記号の定義をするだけです。僕のような数式に慣れていない人間にとっては、実はここが一番の難関かも知れないとすら思っているので、腰をすえてじっくりやろうと思います。先にこの項のまとめを書いておくとこうです。一般化して記述するそれだけなのですが、せっかくなのでそのあたりの現状に軽く触れておこうと思います。活性化関数とは、ユニットの出力値を決める関数のことでした。単純パーセプトロンの説明では、次のようなステップ関数を活性化関数として挙げました。大きいか小さいかで入力を評価するものとしました。これらのステップ関数の定義はそれにマッチしています。これらは動物の神経細胞の発火状態と非発火状態を大幅に簡略化して表現したものとみなすことができます。実は、多層パーセプトロンではこの活性化関数が使えません。詳細は次回解説しますが、学習時に活性化関数の“微分値”が重要になるからです。ステップ関数だと有効な微分値が導けません。1そこで、多層パーセプトロンでは下記のような活性化関数がよく使われてきました。左はシグモイド関数、右は双曲線正接関数と呼ばれるものです。式自体にはあまり意味がないと思っていいです。グラフの形に注目してみましょう。2どちらも・0を境に急激に変化している・出力値の範囲という点は前述のステップ関数と似ていますが、グラフが滑らかな曲線になっています。グラフが滑らかなのは微分可能な関数の特徴ですね。出力が0と1の二値ではなく連続値3をとることに注意してください。近年、中間層においては下記のような活性化関数を用いるとよいことが発見されました。Unit)と呼ばれるものです。4上記は数学的に言うと微分可能ではありませんが、プログラム上では下記のように微分値を定義することができます。層内の出力値を全て足し合わせると1になるよう調整するソフトマックス関数や、層内の複数の出力値の中で最も大きい値を出力するMaxoutなど、同じ層にある他のユニットの影響も受けるような活性化関数もあります。いう形で統一して記述することにします。多層パーセプトロンでは、大量のユニットと、それら各々に紐づく重みの値を扱う必要があります。添え字が1つだけの記号では足りないので、ここで新たに記号を割り当てなおします。新しい記号では添え字をたくさん使うので、これが式の中に現れると何だかとてつもなく難しく見えてしまいます。添え字のせいで難しく見えるだけで、式自体はこれまでの知識で理解できるものなので、図を見ながら把握してみてください。おき、入力層を第0層、その次を第1層...というように呼ぶことにします。層ということになります。