問題タブ [softmax]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
matlab - ソフトマックス活性化によるニューラル ネットワーク
編集:
より鋭い質問: 勾配降下法で使用されるソフトマックスの導関数は何ですか?
これは多かれ少なかれコースの研究プロジェクトであり、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
matlab - Softmax 回帰のベクトル化された実装
Octave でソフトマックス回帰を実装しています。現在、次のコスト関数と導関数を使用して、ベクトル化されていない実装を使用しています。
出典:ソフトマックス回帰
今、Octave でベクトル化されたバージョンを実装したいと考えています。これらの方程式のベクトル化されたバージョンを書くのは少し難しいようです。誰かがこれを実装するのを手伝ってくれますか?
ありがとう
ウプル
c++ - ニューラル ネットワークのソフトマックス活性化関数の実装
ニューラル ネットワークの最後の層でSoftmax活性化関数を使用しています。しかし、この関数の安全な実装には問題があります。
単純な実装は次のようになります。
NaN
y が多くの場合 (y(f) > 709 の場合、exp(y(f)) は inf を返す) になるため、これは 100 個を超える隠しノードではうまく機能しません。私はこのバージョンを思いつきました:
は次のようにsafeExp
定義されます
この関数は exp の入力を制限します。ほとんどの場合、これは機能しますが、すべての場合ではなく、どの場合に機能しないかを実際に見つけることができませんでした. 前のレイヤーに 800 個の隠れニューロンがあると、まったく機能しません。
ただし、これが機能したとしても、ANNの結果を何らかの形で「歪め」ました。正しい解を計算する他の方法を考えられますか? この ANN の正確な出力を計算するために使用できる C++ ライブラリまたはトリックはありますか?
編集: Itamar Katz が提供するソリューションは次のとおりです。
そして、それは実際には数学的に同じです。ただし、実際には、浮動小数点の精度のために、いくつかの小さな値が 0 になります。これらの実装の詳細を誰も教科書に書き留めていないのはなぜだろうか。
math - 標準の正規化ではなく、なぜソフトマックスを使用するのですか?
ニューラル ネットワークの出力層では、softmax 関数を使用して確率分布を近似するのが一般的です。
これは、指数のために計算コストが高くなります。すべての出力が正になるように単純に Z 変換を実行し、すべての出力をすべての出力の合計で割って正規化しないのはなぜですか?
machine-learning - ソフトマックス分類器のコスト関数と勾配
softmax 分類器をトレーニングするときに、minFunc 関数を使用しましたMatlab
が、うまくいきませんでした。ステップ サイズがTolX
すぐに到達し、精度は 5% にもなりませんでした。何かが間違っているはずですが、私はそれを見つけることができませんでした。
Matlab
コスト関数と勾配に関する私のコードは次のとおりです。
z=x*W;
%x
は入力データ、m*n 行列、m はサンプル数、n は入力層のユニット数です。W は n*o 行列、o は出力層のユニット数です。
a=sigmoid(z)./repmat(sum(sigmoid(z),2),1,o);
%a
分類器の出力です。
J=-mean(sum(target.*log(a),2))+l/2*sum(sum(W.^2));
%これはコスト関数で、ターゲットは目的の出力で、m*n 行列です。l は重量減衰パラメーターです。
式はここにあります。誰でも私のエラーがどこにあるのか指摘できますか?
r - 2つ以上の状態を持つターゲット列にnnet Rでsoftmaxを使用する
3つの状態を持つターゲット列の分類にnnetパッケージを使用しています
しかし、デフォルトの softmax の代わりにエントロピーを使用したいのですが、 softmax=false を設定すると、次のエラーで失敗します。
このシナリオでエントロピー モデリングを使用する方法はありますか?
python-2.7 - 強化学習の Softmax アクション選択を実装するこれよりも良い方法はありますか?
強化学習タスク ( http://www.incompleteideas.net/book/ebook/node17.html ) の Softmax アクション選択ポリシーを実装しています。
私はこの解決策にたどり着きましたが、改善の余地があると思います。
1-ここで確率を評価します
2-ここでは、ランダムに生成された ]0,1[ の範囲の数値をアクションの確率値と比較しています。
編集:
例: rand_action は 0.78、prob_t[0] は 0.25、prob_t[1] は 0.35、prob_t[2] は 0.4 です。確率の合計は 1 になります。0.78 はアクション 0 と 1 の確率の合計 (prob_t[0] + prob_t[1]) より大きいため、アクション 2 が選択されます。
これを行うより効率的な方法はありますか?