編集:
より鋭い質問: 勾配降下法で使用されるソフトマックスの導関数は何ですか?
これは多かれ少なかれコースの研究プロジェクトであり、NN の私の理解は非常に/かなり限られているので、しばらくお待ちください :)
私は現在、入力データセットを調べて、各分類の確率/可能性を出力しようとするニューラル ネットワークを構築中です (5 つの異なる分類があります)。当然、すべての出力ノードの合計は 1 になるはずです。
現在、2 つのレイヤーがあり、非表示レイヤーに 10 個のノードが含まれるように設定しています。
私は2つの異なるタイプの実装を思いつきました
- 隠れ層の活性化にはロジスティック シグモイド、出力の活性化にはソフトマックス
- 隠れ層と出力活性化の両方のソフトマックス
非表示ノードの重みと出力ノードの重みを調整するために、勾配降下法を使用して極大値を見つけています。私はこれがシグモイドに対して正しいと確信しています。私はsoftmax(または勾配降下法をまったく使用できるかどうか)についてあまり確信が持てませんsoftmax'(x) = softmax(x) - softmax(x)^2
. . MATLAB NN ツールキットも調べました。ツールキットによって提供されるソフトマックスの導関数は、サイズ nxn の正方行列を返しました。対角線は、手動で計算したソフトマックス'(x) と一致します。出力行列を解釈する方法がわかりません。
各実装を学習率 0.001 で実行し、逆伝播を 1000 回繰り返しました。ただし、私の NN は、入力データセットの任意のサブセットについて、5 つの出力ノードすべてに対して 0.2 (均等な分布) を返します。
私の結論:
- 降下の勾配が正しく行われていないことは確かですが、これを修正する方法がわかりません。
- おそらく私は十分な隠しノードを使用していません
- 層数を増やせばいいのに
どんな助けでも大歓迎です!
私が取り組んでいるデータセットはここにあります (処理された Cleveland): http://archive.ics.uci.edu/ml/datasets/Heart+Disease