タグ付けされた質問 「softmax」

すべてのエントリが0〜1になり、合計が1になるように数値ベクトルを変換する正規化指数関数。これは、分類タスクを実行するニューラルネットワークの最終層としてよく使用されます。


6
Softmax /クロスエントロピーによる逆伝播
私は、ソフトマックス/クロスエントロピー出力層での逆伝播の仕組みを理解しようとしています。 クロスエントロピー誤差関数は E(t,o)=−∑jtjlogojE(t,o)=−∑jtjlog⁡ojE(t,o)=-\sum_j t_j \log o_j とニューロンにおける目標出力としてそれぞれ。合計は、出力層の各ニューロンに対するものです。自体は、関数の結果です。tttooojjjojojo_j oj=softmax(zj)=ezj∑jezjoj=softmax(zj)=ezj∑jezjo_j=softmax(z_j)=\frac{e^{z_j}}{\sum_j e^{z_j}} この場合も、合計は出力層の各ニューロンあり、はニューロンへの入力です。zjzjz_jjjj zj=∑iwijoi+bzj=∑iwijoi+bz_j=\sum_i w_{ij}o_i+b これは、対応する出力とニューロンに対する重みにバイアス加えた、前の層のすべてのニューロンの合計です。oioio_iwijwijw_{ij}jjjbbb ここで、出力層のニューロンを前の層のニューロンに接続する重みを更新するには、チェーンルールを使用して誤差関数の偏微分を計算する必要があります。wijwijw_{ij}jjjiii ∂E∂wij=∂E∂oj∂oj∂zj∂zj∂wij∂E∂wij=∂E∂oj∂oj∂zj∂zj∂wij\frac{\partial E} {\partial w_{ij}}=\frac{\partial E} {\partial o_j} \frac{\partial o_j} {\partial z_{j}} \frac{\partial z_j} {\partial w_{ij}} ニューロンへの入力として、。zjzjz_jjjj 最後の用語は非常に簡単です。と間に重みが1つしかないため、導関数は次のようになります。iiijjj ∂zj∂wij=oi∂zj∂wij=oi\frac{\partial z_j} {\partial w_{ij}}=o_i 最初の項は、出力に関するエラー関数の導出です。ojojo_j ∂E∂oj=−tjoj∂E∂oj=−tjoj\frac{\partial E} {\partial o_j} = \frac{-t_j}{o_j} 中間項は、その入力に対する関数のが難しいことです。zjzjz_j ∂oj∂zj=∂∂zjezj∑jezj∂oj∂zj=∂∂zjezj∑jezj\frac{\partial o_j} {\partial z_{j}}=\frac{\partial} {\partial z_{j}} \frac{e^{z_j}}{\sum_j …

1
出力層のクロスエントロピーまたは対数尤度
このページを読む:http : //neuralnetworksanddeeplearning.com/chap3.html また、クロスエントロピーを備えたシグモイド出力層は、対数尤度を備えたsoftmax出力層と非常に類似していると述べました。 出力層で対数尤度を持つシグモイドまたはクロスエントロピーを持つソフトマックスを使用するとどうなりますか?大丈夫ですか?なぜなら、クロスエントロピー(eq.57)の方程式にはほとんど違いがないからです: C= − 1n∑バツ(ylna + (1 − y)ln(1 − a )))C=−1n∑バツ(yln⁡a+(1−y)ln⁡(1−a))C = -\frac{1}{n} \sum\limits_x (y \ln a + (1-y) \ln (1-a)) および対数尤度(eq.80): C= − 1n∑バツ(lnaLy)C=−1n∑バツ(ln⁡ayL)C =-\frac{1}{n} \sum\limits_x(\ln a^L_y)

4
ディープラーニングモデルの場合、softmax出力が不確実性の指標として適切ではないのはなぜですか?
私は現在、主にセマンティックセグメンテーション/インスタンスセグメンテーションの画像データで、畳み込みニューラルネットワーク(CNN)を使用しています。ネットワーク出力のソフトマックスを「ヒートマップ」として頻繁に視覚化して、特定のクラスのピクセルごとのアクティベーションの高さを確認しました。低活性化は「不確実」/「自信がない」と解釈し、高活​​性化は「特定」/「自信がある」予測と解釈しました。基本的に、これは、softmax出力(内の値)をモデルの確率または(不)確実性尺度として解釈することを意味します。(0,1)(0,1)(0,1) (たとえば、ピクセル全体で平均された低いソフトマックスアクティベーションを持つオブジェクト/エリアは、CNNが検出するのが難しいと解釈したため、CNNはこの種のオブジェクトの予測について「不確か」です。) 私の認識では、これはよく機能し、トレーニング結果に「不確実な」領域のサンプルを追加すると、これらの結果が改善されました。しかし、ソフトマックスの出力を(不)確実性の尺度として使用/解釈するのは良い考えではなく、一般的にはお勧めできないと、さまざまな側面からよく耳にします。どうして? 編集:ここで私が尋ねていることを明確にするために、この質問に答える際のこれまでの洞察について詳しく説明します。しかし、同僚、監督者から繰り返し言われたように、なぜそれが一般的に悪い考えであるのか、以下の議論のどれも私に明らかにしませんでした。 分類モデルでは、パイプラインの最後に取得された確率ベクトル(softmax出力)は、モデルの信頼度として誤って解釈されることがよくあります。 またはここの「背景」セクションで: たたみ込みニューラルネットワークの最終ソフトマックスレイヤーによって与えられた値を信頼スコアとして解釈するのは魅力的かもしれませんが、これを読みすぎないように注意する必要があります。 上記の原因は、ソフトマックス出力を不確実性の尺度として使用するのが悪い理由です。 実画像に対する知覚できない摂動は、深いネットワークのソフトマックス出力を任意の値に変更する可能性があります これは、softmax出力が「知覚できない摂動」に対してロバストではないことを意味します。したがって、その出力は確率として使用できません。 別の論文では、「softmax output = Confidence」という考え方が取り上げられており、この直観ではネットワークは簡単にだまされる可能性があり、「認識できない画像に対する信頼性の高い出力」が得られると主張しています。 (...)特定のクラスに対応する(入力ドメイン内の)領域は、そのクラスのトレーニングサンプルが占めるその領域のスペースよりもはるかに大きい場合があります。この結果、画像はクラスに割り当てられた領域内にあるため、softmax出力の大きなピークで分類されますが、トレーニングセットのそのクラスで自然に発生する画像からは遠くなります。 これは、トレーニングデータから遠く離れたデータは、モデルが(それを見たことがないので)確信できないため、高い信頼を得ることはないことを意味します。 ただし、これは一般的に、NN全体の一般化特性を単純に疑問視しているのではありませんか?すなわち、ソフトマックス損失を伴うNNは、(1)「知覚できない摂動」または(2)認識できない画像などのトレーニングデータから遠く離れた入力データサンプルにうまく一般化しないということです。 この推論に続いて、私はまだ理解していません、なぜ実際にトレーニングデータ(すなわち、ほとんどの「実際の」アプリケーション)に対して抽象的および人為的に変更されていないデータで、ソフトマックス出力を「疑似確率」として解釈するのが悪いのか考え。結局のところ、彼らは私のモデルが正しいとは限らない場合でも、そのモデルが確信していることをよく表しているようです(この場合、モデルを修正する必要があります)。そして、モデルの不確実性は常に「単なる」近似ではありませんか?

2
各値をベクトルの合計で除算できるのに、softmax関数を使用して確率を計算するのはなぜですか?
ベクター上にソフトマックス関数を適用する間に、「確率」との値を生成する及び。 000111 しかし、我々はまた、ベクトルの和によって各値を分割することができ、それは間確率と値を生成する及び。000111 私はここで答えを読みましたが、理由はそれが微分可能であるためだと言いますが、両方の関数は微分可能です。

1
順序データを出力するようにニューラルネットワークを設定する方法は?
出力変数が序数である場所を予測するために、ニューラルネットワークを設定しています。3つの可能な出力A <B <Cを使用して以下に説明します。 ニューラルネットワークを使用してカテゴリデータを出力する方法は非常に明白です。出力は最後の(通常は完全に接続された)レイヤーのソフトマックスであり、カテゴリごとに1つであり、予測カテゴリは最大の出力値を持つものです(これは多くの一般的なモデルのデフォルト)。序数値には同じ設定を使用しています。ただし、この場合、出力は意味をなさないことがよくあります。たとえば、AとCのネットワーク出力は高くてもBは低くなります。これは順序値には当てはまりません。 これには、出力をAの1 0 0、Bの1 1 0、Cの1 1 1と比較して損失を計算するというアイデアがあります。正確なしきい値は、別の分類器(たとえば、ベイジアンを使用して後で調整できます。 )しかし、これは、特定の間隔スケールを規定することなく、入力の順序付けの本質的なアイデアを捉えているようです。 この問題を解決する標準的な方法は何ですか?さまざまなアプローチの長所と短所を説明する研究や参考文献はありますか?

1
キャレットglmnetとcv.glmnet
glmnetwithin caretを使用して最適なラムダを検索cv.glmnetし、同じタスクを実行するために使用することの比較には、多くの混乱があるようです。 次のような多くの質問が提起されました。 分類モデルtrain.glmnet対cv.glmnet? キャレットでglmnetを使用する適切な方法は何ですか? 「キャレット」を使用して「glmnet」を相互検証する しかし、答えはありません。これは、質問の再現性による可能性があります。最初の質問に続いて、非常に似た例を挙げますが、同じ質問があります:推定されるラムダはなぜそんなに違うのですか? library(caret) library(glmnet) set.seed(849) training <- twoClassSim(50, linearVars = 2) set.seed(849) testing <- twoClassSim(500, linearVars = 2) trainX <- training[, -ncol(training)] testX <- testing[, -ncol(testing)] trainY <- training$Class # Using glmnet to directly perform CV set.seed(849) cvob1=cv.glmnet(x=as.matrix(trainX),y=trainY,family="binomial",alpha=1, type.measure="auc", nfolds = 3,lambda = seq(0.001,0.1,by = …

3
頻度の低い単語に対しては階層的なソフトマックスが優れているのに対し、頻度の高い単語に対してはネガティブサンプリングが優れているのはなぜですか?
word2vecのCBOWモデルとskip-gramモデルで、階層的なソフトマックスが頻度の低い単語に対して優れているのに対し、ネガティブサンプリングが頻繁な単語に対して優れているのはなぜかと思います。https://code.google.com/p/word2vec/で申し立てを読みました。

2
クロスエントロピー損失関数のさまざまな定義
私は、neuralnetworksanddeeplearning dot comチュートリアルでニューラルネットワークについて学び始めました。特に第3章には、クロスエントロピー関数に関するセクションがあり、クロスエントロピー損失を次のように定義しています。 C=−1n∑x∑j(yjlnaLj+(1−yj)ln(1−aLj))C=−1n∑x∑j(yjln⁡ajL+(1−yj)ln⁡(1−ajL))C = -\frac{1}{n} \sum\limits_x \sum\limits_j (y_j \ln a^L_j + (1-y_j) \ln (1 - a^L_j)) ただし、Tensorflowの概要を読むと、クロスエントロピー損失は次のように定義されます。 C=−1n∑x∑j(yjlnaLj)C=−1n∑x∑j(yjln⁡ajL)C = -\frac{1}{n} \sum\limits_x \sum\limits_j (y_j \ln a^L_j)(上記と同じ記号を使用する場合) 次に、何が起こっているのかを探すために周りを検索すると、クロスエントロピー損失の完全に異なる定義を使用する別のメモセット(https://cs231n.github.io/linear-classify/#softmax-classifier)が見つかりました。ニューラルネットワークではなく、ソフトマックス分類器の時間。 誰かが私にここで何が起こっているのか説明できますか?なぜ矛盾があるのですか?クロスエントロピー損失はどのように定義されますか?いくつかの包括的な原則はありますか?

2
MLのソフトマックス関数と熱力学のボルツマン分布の間の関係はどのくらい深いですか?
実数を確率に変換するためにニューラルネットワークで一般的に使用されるソフトマックス関数は、ボルツマン分布と同じ関数です。これは、熱力学の特定の温度Tにおける熱平衡状態の粒子のアンサンブルのエネルギーの確率分布です。 これが実用的である理由として、いくつかの明確な発見的理由を見ることができます。 入力値が負であっても、softmaxは合計が1になる正の値を出力します。 それは常に微分可能であり、逆伝播に便利です。 これには、ネットワークの小さな値に対する許容度を制御する「温度」パラメーターがあります(Tが非常に大きい場合、すべての結果は等しく可能性が高く、非常に小さい場合、最大の入力を持つ値のみが選択されます)。 ボルツマン関数は、実用的な理由でソフトマックスとしてのみ使用されているのですか、それとも熱力学/統計物理学との関係が深いのですか?

3
畳み込みニューラルネットワークの最終Softmax層の前の非線形性
私は畳み込みニューラルネットワークを調査して実装しようとしていますが、この質問は一般に多層パーセプトロンに当てはまると思います。 ネットワークの出力ニューロンは、各クラスのアクティブ化を表しています。最もアクティブなニューロンは、特定の入力の予測クラスに対応しています。トレーニングのクロスエントロピーコストを検討するために、各ニューロンの活性化値が確率値として解釈されるように、ネットワークの最後にsoftmaxレイヤーを追加しています。 私の質問は、出力層のニューロンが非線形関数を入力に適用する必要がありますか?私の直感はそれが必要ではないということです: 入力場合番目の出力ニューロンはドット積であるX T θ IベクトルとX(前のレイヤからの)と重みがθ Iをそのニューロンため、iiixTθixTθix^T\theta_ixxxθiθi\theta_i シグモイドやReLUのような単調な非線形関数を使用する場合 次いで、より大きな活性化出力は、依然として最大に対応するように非線形関数が予測を変更しないであろうこのような観点から、。xTθixTθix^T\theta_i この解釈に何か問題がありますか?出力の非線形性を必要とする、見落としているいくつかのトレーニング要素はありますか? max(0,xTθi)max(0,xTθi)\max(0,x^T\theta_i) 編集 答えが基本的に「依存する」であったカレルの答えを参照して、ここに私のネットワークと疑問のより詳細な説明があります: N個の非表示レイヤーがあり、出力レイヤーがクラスを表すニューロンのセットの単なるソフトマックスレイヤーであるとします(したがって、期待される出力は、入力データが各クラスに属する確率です)。最初のN-1層に非線形ニューロンがあると仮定すると、N番目の隠れ層で非線形ニューロンと線形ニューロンを使用することの違いは何ですか?


1
Softmaxオーバーフロー[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新することがありますので、話題のクロス検証済みのため。 2年前休業。 CourseraでのAndrew Ngの次のコースを待っている間に、Pythonで最後のレイヤーにsoftmax関数を使用して分類子をプログラミングし、さまざまな確率を得ようとしています。ただし、CIFAR-10データセット(入力:(3072、10000))で使用しようとすると、指数を計算するときにオーバーフローが発生します。確かに、私は5000、10000または25000のような数字を持っています。 私はすでに2つのことを試しました: 指数を計算する前に定数をマトリックスに減算しますが、数値間に大きな違いがあるため、それを行うことはできません。 行列の対数の指数を計算しますが、まだオーバーフローしています。 誰かがこの問題を回避するのを手伝ってくれる? ありがとうございました 編集:https : //github.com/Kentena/softmax/
10 softmax  numerics 

3
scikit-learnで多層パーセプトロンのアクティベーション機能としてSoftmaxを適用する方法 [閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新することがありますので、話題のクロス検証済みのため。 10か月前に閉鎖。 Softmaxアクティベーション機能をscikitの多層パーセプトロンに適用する必要があります。ニューラルネットワークモデル(教師あり)のトピックに関するscikitのドキュメントでは、「MLPClassifierは出力関数としてSoftmaxを適用することにより、マルチクラス分類をサポートしています」と述べています。問題は、関数をどのように適用するかです。 以下のコードスニップで、アクティベーションパラメーターの下にSoftmaxを追加すると、受け入れられません。 MLPClassifier(activation='Softmax', alpha=1e-05, batch_size='auto', beta_1=0.9, beta_2=0.999, early_stopping=False, epsilon=1e-08, hidden_layer_sizes=(15,), learning_rate='constant', learning_rate_init=0.001, max_iter=200, momentum=0.9, nesterovs_momentum=True, power_t=0.5, random_state=1, shuffle=True, solver='lbfgs', tol=0.0001, validation_fraction=0.1, verbose=False, warm_start=False) エラーコードは: ValueError:アクティベーション「Softmax」はサポートされていません。サポートされるアクティベーションは( 'identity'、 'logistic'、 'tanh'、 'relu')です。 scikit-learnのマルチクラス分類にSoftmaxアクティベーション関数を適用する方法はありますか?

2
多項ロジスティック損失vs(クロスエントロピーvs二乗誤差)
Caffe(ディープラーニングフレームワーク)がほとんどのモデルサンプルの出力層としてSoftmax Loss Layer SoftmaxWithLossを使用していることを確認しました。 私の知る限り、Softmax損失層は、多項ロジスティック損失層とSoftmax層の組み合わせです。 カフェから、彼らはそれを言った Softmax Loss Layerの勾配計算は、数値的に安定しています。 ただし、この説明は私が望む答えではありません。説明は、レイヤーごとではなく、多項ロジスティック損失レイヤーとソフトマックス損失レイヤーの組み合わせを比較するだけです。しかし、他のタイプの損失関数と比較しないでください。 しかし、教師付き学習の観点から、これらの3つのエラー関数である多項ロジスティック損失、クロスエントロピー(CE)、二乗誤差(SE)の違い/利点/欠点は何ですか?支持記事はありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.