ディープラーニングを始めてみる 7
前回
参考書はこれ
今回は出力層についてやります。
ニューラルネットワークの問題は大まかに分類問題と回帰問題にわけることができます。この問題に合わせて最後の段の活性化関数をh()からσ()に変更してやります。
分類問題は、データが何に分類されるかという問題です。
例えば画像認識で、「それは何か」という判断をしたりするものです。
回帰問題は、データから数値を予測する問題です。
一般的に回帰問題では活性化関数に恒等関数を、分類問題ではソフトマックス関数を使います。
恒等関数は入力をそのまま出力する関数です。
もう完全にそのまま出力、掛け算も足し算もありません。出てきたデータが答え、それが恒等関数です。
ソフトマックス関数は確率を扱います。
これがソフトマックス関数です。
このままではわからないので、詳しくやっていきます。
まずはこれですが、これは自然対数の指数関数です
で、eが2.7182・・・というネイピア数
2.7182をx乗したか、つまりx回掛け合わせたという関数です。
この場合eをak回掛け合わせたということです。
普通に考えるとどんな数値なのかさっぱり理解できなくなりますが問題ありません。
これは数値表や計算機とかで扱うこと前提の数値なので直感的に分からなくて当然です。詳しく知りたい人はwikipediaで検索するか、下のリンクの本を買って勉強してください。結構面白いです。
これはΣでexp(a1)からexp(an)までの全てを合計しています。
この式はようするに、eのak乗を、eのai乗からeのan乗までを合計したもので割っています。要はこれ、いくつも出た結果a1~anの全ての結果のうちakの占める割合というのを自然対数を混ぜてちょっと特殊な出し方をしているだけです。
このソフトマックス関数を図で表すとこんな感じになります。
さて、そもそもなんでこんなソフトマックス関数を使用する必要があるのでしょうか?
それは割合の%で分類したほうがニューラルネットワークの学習が簡単になるから
というのがあります。ソフトマックス関数は学習のための関数で、学習が完了してニューラルネットワークが完成したら必要なくなります。
実際にどう使っているかというと、出力層に分類したいものの数だけニューロンを用意して、それぞれのニューロンに名前をつけておきます。
一番大きい反応があったニューロンについている名前が分類されたものの名前です。
これがソフトマックス関数の使い方です。
今日はここまで