回答:
ロジットとは、さまざまな意味を持つ過負荷の用語です。
Mathでは、Logitは確率([0, 1]
)をR((-inf, inf)
)にマッピングする関数です。
0.5の確率は0のロジットに対応します。負のロジットは0.5未満の確率に対応し、正から0.5までの確率に対応します。
MLでは、それが可能
分類モデルが生成する生の(正規化されていない)予測のベクトル。これは通常、正規化関数に渡されます。モデルがマルチクラス分類問題を解いている場合、ロジットは通常、softmax関数への入力になります。次に、softmax関数は、可能なクラスごとに1つの値を持つ(正規化された)確率のベクトルを生成します。
ロジット は、シグモイド関数の要素ごとの逆を指すこともあります。
softmax(logit) = exp(logit)/Z(logit)
それからlogit = h_NN(x)
?ロジットは「スコア」と同じですか?
[1, 0.5, 0.5]
正規化により[0.5, 0.25, 0.25]
、次にソフトマックスは[0,]
1つのホットになり[1, 0, 0]
ますか?または単に[1, 0, 0]
出力が原因で出力はベクトルになるはずですか?
この説明を追加するだけで、これだけ下にスクロールした人は誰でも少なくとも正しく理解できます。
Dianshengの答えとJakeJの答えはそれを正しく理解します。Shital Shahによって投稿され
た新しい回答は、さらに優れた完全な回答です。
はい、logit
数学としての機能の統計では、しかし、logit
ニューラルネットワークの文脈で使用することは異なっています。統計logit
はここでは意味がありません。
正式な定義はどこにも見つかりませんでしたが、logit
基本的には次のことを意味します。
ニューラルネットワークの最後の層から出てくる生の予測。
1.これはargmax
、予測クラスを取得するために関数を適用するまさにそのテンソルです。
2.これはsoftmax
、予測されたクラスの確率を取得するために関数に供給する非常にテンソルです。
また、公式のtensorflowウェブサイトのチュートリアルから:
ロジット層
ニューラルネットワークの最後のレイヤーはロジットレイヤーで、予測の生の値を返します。線形活性化(デフォルト)を使用して、10個のニューロン(各ターゲットクラス0〜9に1つ)の密な層を作成します。
logits = tf.layers.dense(inputs=dropout, units=10)
それでも混乱している場合、状況は次のようになります。
raw_predictions = neural_net(input_layer)
predicted_class_index_by_raw = argmax(raw_predictions)
probabilities = softmax(raw_predictions)
predicted_class_index_by_prob = argmax(probabilities)
どこで、predicted_class_index_by_raw
そしてpredicted_class_index_by_prob
等しくなります。
raw_predictions
上記のコードのの別名はlogit
です。
なぜ logit
...私は考えています。ごめんなさい。
[編集:用語の背後にある歴史的な動機については、この回答を参照してください。]
ただし、必要に応じて、関数から取得logit
したprobabilities
ものに統計を適用できますsoftmax
。
特定のクラスの確率がある場合はp
、
次にログオッズそのクラスのですL = logit(p)
。
また、そのクラスの確率はp = sigmoid(L)
、sigmoid
関数を使用してとして回復できます。
ただし、対数オッズを計算するのにはあまり役に立ちません。
ロジットは、確率[0, 1]
をにマップする関数です[-inf, +inf]
。
ソフトマックスは、シグモイド[-inf, +inf]
と[0, 1]
同様にマップする関数です。ただし、Softmaxは値(出力ベクトル)の合計を1に正規化します。
Tensorflow "ロジット付き":これは、ソフトマックス関数をロジット数に適用して正規化することを意味します。input_vector / logitは正規化されておらず、[-inf、inf]からスケーリングできます。
この正規化は、マルチクラス分類問題に使用されます。そして、マルチラベル分類問題では、シグモイド正規化が使用されます。tf.nn.sigmoid_cross_entropy_with_logits
Logit
関数(統計)とlogits
層(テンソルフロー)を明確に区別する回答に行を追加することをお勧めします
概要
ディープラーニングのコンテキストでは、ロジットレイヤーとは、softmax(または他のそのような正規化)にフィードするレイヤーを意味します。softmaxの出力は分類タスクの確率であり、その入力はロジットレイヤーです。ロジットレイヤーは通常-infinityから+ infinityの値を生成し、softmaxレイヤーはそれを0から1の値に変換します。
歴史的背景
この用語はどこから来たのですか?1930年代と40年代には、数人が確率を予測する問題に線形回帰を適応させようとしていました。ただし、線形回帰は-infinityから+ infinityへの出力を生成しますが、確率の場合、望ましい出力は0から1です。これを行う1つの方法は、確率0から1から-infinityへ+ infinityにマッピングし、通常どおり線形回帰を使用することです。そのようなマッピングの1つは、1934年にチェスターイトナーブリスによって使用された累積正規分布であり、彼はこの「プロビット」モデルを「確率単位」の略であると呼びました。ただし、この関数は計算コストが高く、マルチクラス分類に必要なプロパティの一部が欠けています。1944年にジョセフバークソンは関数を使用しましたlog(p/(1-p))
このマッピングを行うには、「ロジスティックユニット」の略で、ロジットと呼びます。これから派生したロジスティック回帰という用語も同様です。
混乱
残念ながら、深層学習ではロジットという用語が悪用されています。純粋な数学的観点から、ロジットは上記のマッピングを実行する関数です。ディープラーニングでは、ロジット関数にフィードする層を「ロジットレイヤー」と呼び始めました。次に、この層の出力値を「ロジット」と呼び始め、関数のロジットとの混乱が生じました。
TensorFlowコード
残念ながら、TensorFlowコードは、のような名前による混乱をさらに助長しますtf.nn.softmax_cross_entropy_with_logits
。ここでロジットとはどういう意味ですか?これは、上記のように、関数の入力が最後のニューロン層の出力であることを意味します。_with_logits
サフィックスがある、冗長な混乱と無意味。関数は、他の多くのドメインから派生した値に対して実行できる単なる数学的演算であるため、このような非常に具体的なコンテキストに関係なく名前を付ける必要があります。実際、TensorFlowには別の同様の機能sparse_softmax_cross_entropy
があり、幸いにも、_with_logits
サフィックスを追加することを忘れて不整合を生じ、混乱を招いています。一方、PyTorchは、これらの種類のサフィックスを付けずに、単にその関数に名前を付けます。
参照
ロジット/プロビット講義スライドロジットを理解するための最適なリソースの一つです。上記の情報の一部を使用して、Wikipediaの記事も更新しました。
TensorFlowドメインでは、ロジットはソフトマックスへの入力として使用される値です。私はこのテンソルフローのチュートリアルに基づいてこの理解に至りました。
https://www.tensorflow.org/tutorials/layers
ロジットが数学(特に統計)の関数であることは事実ですが、あなたが見ているのと同じ 'ロジット'だとは思いません。イアン・グッドフェローの本「ディープラーニング」で彼は述べました、
関数σ −1(x)は統計ではロジットと呼ばれますが、この用語が機械学習で使用されることはほとんどありません。σ −1(x)は、ロジスティックシグモイド関数の逆関数を表します。
TensorFlowでは、これは最後のレイヤーの名前としてよく見られます。AurélienGéron の著書「Scikit-learnとTensorFLowを使用した実践的な機械学習」の第10章で、この段落に出くわしましたlogits
。
これ
logits
は、softmaxアクティベーション関数を通過する前のニューラルネットワークの出力であることに注意してください。最適化のため、後でsoftmax計算を処理します。
つまり、設計の最後の層では活性化関数としてsoftmaxを使用していますが、計算を簡単にするために、logits
個別に取り出します。これは、一緒に計算softmax
してcross-entropy
損失する方が効率的だからです。cross-entropy
はコスト関数であり、順方向伝搬では使用されないことに注意してください。
これは、将来の読者のための簡潔な答えです。Tensorflow
「Sはlogit
活性化関数を適用することなく、ニューロンの出力のように定義されます。
logit = w*x + b,
x:入力、w:重み、b:バイアス。それでおしまい。
以下は、この質問には関係ありません。
歴史的な講義については、他の答えを読んでください。Tensorflow
の「創造的に」紛らわしい命名規則に敬意を表します。ではPyTorch
、1つしかなく、CrossEntropyLoss
非アクティブな出力を受け入れます。畳み込み、行列の乗算、およびアクティブ化は同じレベルの演算です。設計ははるかにモジュール化されており、混乱が少なくなっています。これは私が切り替わる理由の一つであるTensorflow
にPyTorch
。
(FOMO sapiens)。
数学のLogit関数をチェックすると、実空間が[0,1]
intervalからinfinityに変換されます[-inf, inf]
。
シグモイドとソフトマックスはまったく逆のことをします。彼らは[-inf, inf]
実空間を[0, 1]
実空間に変換します。
これが、機械学習でシグモイド関数とソフトマックス関数の前にロジットを使用する理由です(これらは一致するため)。
そしてこれが、シグモイド関数またはソフトマックス関数の前にある機械学習のあらゆるものを「ロジット」と呼ぶ「理由」です。
これは、この用語を使用したJ.ヒントンのビデオです。
PS。期間を確認するためだけにビデオを見るのはお勧めしません。
それらは、基本的に、ネットワークから取得できる完全に学習されたモデルであり、必要な数のクラスにのみ適用するために押しつぶされる前に、いくつかの研究者がどのようにそれらを使用して、深いニューラルネットに基づいて浅いニューラルネットをトレーニングするかを確認してくださいネットワークは学んだ:https : //arxiv.org/pdf/1312.6184.pdf
それは、主題を詳細に学習するときに、非常に多くのマイナーなポイントを学習するようなものですが、学生を教えるときに、それを最も単純なケースに圧縮しようとします。学生が今教えることを試みた場合、それはかなり難しいでしょうが、言語を使用するのに十分なほどそれを説明することができます。
ロジット(/ ˈloʊdʒɪt / LOH-jit)関数は、数学、特に統計で使用されるシグモイド「ロジスティック」関数またはロジスティック変換の逆関数です。関数の変数が確率pを表す場合、ロジット関数は対数オッズ、つまりオッズp /(1 − p)の対数を与えます。
分類モデルが生成する生の(正規化されていない)予測のベクトル。通常は、正規化関数に渡されます。モデルがマルチクラス分類問題を解いている場合、ロジットは通常、softmax関数への入力になります。次に、softmax関数は、可能なクラスごとに1つの値を持つ(正規化された)確率のベクトルを生成します。
さらに、ロジットは、シグモイド関数の要素ごとの逆を指すこともあります。詳細については、tf.nn.sigmoid_cross_entropy_with_logitsを参照してください。