問題タブ [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.
deep-learning - ロジスティック回帰に対する SoftMax の序数ターゲットの損失関数
Pylearn2 OR Caffe を使用して、深いネットワークを構築しています。私の目標は公称です。適切な損失関数を見つけようとしていますが、Pylearn2 または Caffe で見つけることができません。
「好みレベルの損失関数: 離散順序ラベルによる回帰」という論文を読みました。一般的なアイデアはわかりましたが、最後のレイヤーが Logistic Regression 上の SoftMax (確率を出力する) である場合、しきい値がどうなるかはわかりません。
そのような損失関数の実装を指摘することで、私を助けることができますか?
ありがとうございます。それでは、お元気で
machine-learning - SoftMax回帰で「ソフト」と「最大」を解釈する方法は?
ソフトマックス回帰の形式は知っていますが、なぜそのような名前が付けられているのか気になります。それとも歴史的な理由でしょうか?
python - PyMC3 の Categorical を使用した Softmax 選択確率
次のシナリオで、softmax 選択関数の単一パラメーターのパラメーター推定を実行しようとしています。
各試行では、3 つのオプション値 (例: [1,2,3]) が与えられ、被験者はオプション (0、1、または 2) から選択を行います。softmax 関数は、温度パラメーター (ここでは 0 ~ 10 の範囲) に応じて、オプション値を選択確率 (3 つの確率のベクトル、合計すると 1) に変換します。
各試行での選択は、softmax から計算された試行選択確率を持つカテゴリ分布としてモデル化されることになっています。カテゴリカルの選択確率はオプション値に依存するため、試行ごとに異なることに注意してください。
これが私が思いついたものです:
このコードは、50 などより大きい nTrials では失敗し、非常に長い警告/エラー メッセージが表示されます。
警告:
エラー:
私は PyMC (および Theano) にかなり慣れていないので、私の実装は本当にぎこちなく、最適ではないと感じています。どんな助けやアドバイスも大歓迎です!
フェリックス
編集:コードをノートブックとしてアップロードし、警告とエラーメッセージを完全に表示しました: http://nbviewer.ipython.org/github/moltaire/softmaxPyMC/blob/master/softmax_stackoverflow.ipynb
machine-learning - ソフトマックス分類器について
このリンクから Softmax 分類子の単純な実装を理解しようとしています - CS231n - Convolutional Neural Networks for Visual Recognition。ここでは、単純なソフトマックス分類器を実装しました。リンク上の Softmax Classifier の例では、2D 空間上にランダムな 300 ポイントとそれらに関連付けられたラベルがあります。ソフトマックス分類器は、どのポイントがどのクラスに属しているかを学習します。
ソフトマックス分類器の完全なコードは次のとおりです。または、私が提供したリンクを見ることができます。
ここで勾配をどのように計算したか理解できません。ここで勾配を計算したと思います-
しかし、どのように?つまり、なぜ勾配が なのdW
ですnp.dot(X.T, dscores)
か? そして、なぜ勾配db
はnp.sum(dscores, axis=0, keepdims=True)
?? では、重みとバイアスの勾配をどのように計算したのでしょうか? また、なぜ彼らは計算したのregularization gradient
ですか?
畳み込みニューラル ネットワークとディープ ラーニングについて学び始めたばかりです。CS231n - Convolutional Neural Networks for Visual Recognition
そして、それはそのための良い出発点だと聞きました。深層学習関連の投稿をどこに配置すればよいかわかりませんでした。だから、私はそれらをstackoverflowに置きました。深層学習に関する質問を投稿できる場所があれば教えてください。
matlab - ソフトマックス損失を使用する場合、動径基底関数ネットワークの偏導関数をどのようにデバッグしてベクトル化しますか?
標準のクロス エントロピー (softmax 損失) を使用する場合、(確率的またはバッチ) 勾配降下を実行しようとしています。
モデルとして放射基底関数 (RBF)ネットワークを使用する場合 (必要に応じてここでcaltech の講義を見ることができます) マルチクラス分類に拡張する場合 (RBF ネットワークの出力をソフトマックス層に供給するだけで簡単に拡張できます)。次のようP(y=l|x)
に、ラベルごとにソフトマックス層を介して RBF ネットワークの出力を渡すことによって単純に計算さl
れます。
where\theta_l
は、 label の予測を行うパラメータのインデックスですl
。
この点で、パラメータに関する導関数を計算してモデルを最適化したいと考えました。c
放射基底関数ネットワークで最適化するパラメーターは、最終層の重みとt
最初の層の中心であることを思い出してください。weight に関する導関数を計算する方法を実装してデバッグしましたc
。偏導関数が数値導関数と一致するため、コードは期待どおりに機能します。単体テスト コードはこちらにあります。
また、中心に関する導関数を実装するコードを作成しようとしましたが、導関数の実装を数値導関数と一致させることができないようです。私が実装しようとJ
しているセンターに関する損失の導関数の方程式は次のとおりです。t_k
ここでh_{\theta_l}
、 label の予測を担当する RBF の出力に対応しますl
。実際、次のh_{\theta_l}
ように表現するのは非常に簡単です。
私の主な問題は、 (上記の式)J
に関する微分を計算することt_k
です。そのために、ベクトル化せずに単純に計算する次の関数を実装しました。
数値微分コードと一致しません。
それが機能するかどうかを確認するためにさまざまなことを試しました。ここでそれらすべてを説明します。誰かが追加のアイデアを持っている場合は、自由に共有してください。これをデバッグしようとするための良い新しいアイデアが不足しているように感じます。
- 最初の良い自然な質問は、私が実装しようとしている導関数の数学的導関数は正しいですか?
c
数学的な導出を誰かに明示的に確認したことはありませんが、モデルに関する偏導関数の導出t
は同一であり、シンボル\theta
を問題のパラメータに変更するだけであるため、正しいと確信しています。に関する導関数を既に実装しており、すべての導関数テストに合格しているため、または任意のパラメーターc
に関する導関数の導関数は正しいはずです。この方程式の導出は、math.stack exchange hereで確認できます。t
\theta
compute_dJ_dt
1つのオプションは、私が期待している方程式を実際に実装していない可能性があります。これは実際にそうである可能性があり、紙に書き留めた方程式を実際に実装しているかどうかを確認するために、そのコードのわずかにベクトル化されたバージョンを個別に実装したことを確認します。方程式の 2 つのバージョンは同じ微分値を出力するので、それらが計算していること、確かに私が疑う方程式であることに高い自信を持っています (また、誰かがこの方程式をさらにベクトル化する方法を持っているなら、それは素晴らしいことです! 私が追加したベクトル化は些細なことなので、あまり面白くないように見えたり、パフォーマンスが大幅に向上したりすることはありませんが、for ループが 1 つ削除されます)。
私が紙に書いた方程式は (高い確率で) 正しく、その方程式の 2 つのバージョンが同じ値を出力するため、方程式の実装は正しいように見えるので、数値微分コードにバグがある可能性があると結論付けます。 .
- 数値導関数コードは非常に単純なので、一体何が間違っているのかを確認するのは困難です。私が間違っている可能性がある唯一のことは、 softmax コスト Jの実装が間違っている可能性があるということですが、私はそれを非常に疑っています...私はすでにユニットテストを書いています!
c
さらに、これを使用して、 に関する数値導関数と ALWAYS パスの導関数をチェックするc
ので、間違っているとは想像できませんJ
。 - 最後に重要な確認事項は、
compute_dh_dt
正しく計算されているかどうかです。私はdh_dt のユニット テストを作成しました。それらは実行ごとに対応する数値導関数と一致するため、コードが正しいと思われます。
この時点で、私は他に何をしようとしているのか 100% 確信が持てません。私は今何を考えるべきか分かりません。ヘルプと時間のコミュニティに感謝します!
neural-network - softmax で (log) ではなく (exp) を使用するのはなぜですか?
log と exp の関係についてはよくわかりません。しかし、ソフトマックス回帰ではログが使用されないことに混乱していますか?