3

編集:

より鋭い質問: 勾配降下法で使用されるソフトマックスの導関数は何ですか?


これは多かれ少なかれコースの研究プロジェクトであり、NN の私の理解は非常に/かなり限られているので、しばらくお待ちください :)


私は現在、入力データセットを調べて、各分類の確率/可能性を出力しようとするニューラル ネットワークを構築中です (5 つの異なる分類があります)。当然、すべての出力ノードの合計は 1 になるはずです。

現在、2 つのレイヤーがあり、非表示レイヤーに 10 個のノードが含まれるように設定しています。

私は2つの異なるタイプの実装を思いつきました

  1. 隠れ層の活性化にはロジスティック シグモイド、出力の活性化にはソフトマックス
  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

4

3 に答える 3

6

使用する勾配は、実際には二乗誤差の場合と同じです: 出力 - ターゲット。これは最初は驚くかもしれませんが、秘訣は、別のエラー関数を最小化することです。

ソフトマックスエラー

(- \sum^N_{n=1}\sum^K_{k=1} t_{kn} log(y_{kn}))

ここで、log は自然対数、N はトレーニング例の数、K はクラスの数 (つまり、出力層の単位) を表します。t_kn は、n 番目のトレーニング例の k 番目のクラスのバイナリ コーディング (0 または 1) を示します。y_kn 対応するネットワーク出力。

勾配が正しいことを示すことは良い練習になるかもしれませんが、私自身は行っていません。

あなたの問題に:数値微分によって勾配が正しいかどうかを確認できます。関数 f と f および f' の実装があるとします。次に、次が成り立つはずです。

ソフトマックスの数値勾配

(f'(x) = \frac{f(x - \epsilon) - f(x + \epsilon)}{2\epsilon} + O(\epsilon^2))
于 2010-04-22T08:28:32.147 に答える
0

リンクを見てください: http://www.youtube.com/watch?v=UOt3M5IuD5s ソフトマックス導関数は: dyi/dzi= yi * (1.0 - yi);

于 2013-07-01T07:13:51.223 に答える
0

オープンソースの Desire シミュレーション プログラムについては、sites.google.com/site/gatmkorn をご覧ください。Windows バージョンの場合、/mydesire/neural フォルダーにはいくつかのソフトマックス分類子があり、一部はソフトマックス固有の勾配降下アルゴリズムを備えています。

例では、これは単純な文字認識タスクにうまく機能します。

Aも参照

Korn, GA: Advanced dynamic-system Simulation、Wiley 2007

ガク

于 2010-08-10T17:56:32.877 に答える