TensorFlowでロジットという単語の意味は何ですか?


250

次のTensorFlow関数では、最終層の人工ニューロンの活性化をフィードする必要があります。私が理解していること。しかし、それがロジットと呼ばれる理由がわかりませんか?それは数学関数ではありませんか?

loss_function = tf.nn.softmax_cross_entropy_with_logits(
     logits = last_layer,
     labels = target_output
)

回答:


215

ロジットとは、さまざまな意味を持つ過負荷の用語です。


Mathでは、Logitは確率([0, 1])をR((-inf, inf))にマッピングする関数です。

ここに画像の説明を入力してください

0.5の確率は0のロジットに対応します。負のロジットは0.5未満の確率に対応し、正から0.5までの確率に対応します。

MLでは、それが可能

分類モデルが生成する生の(正規化されていない)予測のベクトル。これは通常、正規化関数に渡されます。モデルがマルチクラス分類問題を解いている場合、ロジットは通常、softmax関数への入力になります。次に、softmax関数は、可能なクラスごとに1つの値を持つ(正規化された)確率のベクトルを生成します。

ロジット は、シグモイド関数の要素ごとの逆を指すことあります。


127
Tensorflowの場合:これは、このTensorがSoftmaxによって確率にマッピングされている量であることを意味すると考えられている名前です。
サートゥック

1
これは、ソフトマックスの前に累乗されるものと同じですか?つまりsoftmax(logit) = exp(logit)/Z(logit)それからlogit = h_NN(x)?ロジットは「スコア」と同じですか?
チャーリーパーカー、

4
TensorFlowドメインでは、ロジットはソフトマックスへの入力として使用される値です。このテンソルフローチュートリアルに基づいて、この理解に至りました。
Diansheng 2018年

2
これが質問に答えるかどうかはわかりません。多分それが受け入れられなかった理由です。私はロジット関数が何であるかを理解していますが、Tensorflowがこれらの引数をロジットと呼ぶ理由もわかりません。これは、
Tensorflow

1
素晴らしい!簡単な例を作れますか?これは正解?[1, 0.5, 0.5]正規化により[0.5, 0.25, 0.25]、次にソフトマックスは[0,]1つのホットになり[1, 0, 0]ますか?または単に[1, 0, 0]出力が原因で出力はベクトルになるはずですか?
Tina Liu

91

この説明を追加するだけで、これだけ下にスクロールした人は誰でも少なくとも正しく理解できます。

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関数を使用してとして回復できます。

ただし、対数オッズを計算するのにはあまり役に立ちません。


80

ロジットは、確率[0, 1]をにマップする関数です[-inf, +inf]

ソフトマックスは、シグモイド[-inf, +inf][0, 1]同様にマップする関数です。ただし、Softmaxは値(出力ベクトル)の合計を1に正規化します。

Tensorflow "ロジット付き":これは、ソフトマックス関数をロジット数に適用して正規化することを意味します。input_vector / logitは正規化されておらず、[-inf、inf]からスケーリングできます。

この正規化は、マルチクラス分類問題に使用されます。そして、マルチラベル分類問題では、シグモイド正規化が使用されます。tf.nn.sigmoid_cross_entropy_with_logits


10
したがって、ロジットは「スコア」と同じです
チャーリーパーカー

1
Logit関数(統計)とlogits層(テンソルフロー)を明確に区別する回答に行を追加することをお勧めします
AneesAhmed777

62

概要

ディープラーニングのコンテキストでは、ロジットレイヤーとは、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の記事も更新しました。


31

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はコスト関数であり、順方向伝搬では使用されないことに注意してください。


12

これは、将来の読者のための簡潔な答えです。Tensorflow「Sはlogit活性化関数を適用することなく、ニューロンの出力のように定義されます。

logit = w*x + b,

x:入力、w:重み、b:バイアス。それでおしまい。


以下は、この質問には関係ありません。

歴史的な講義については、他の答えを読んでください。Tensorflowの「創造的に」紛らわしい命名規則に敬意を表します。ではPyTorch、1つしかなく、CrossEntropyLoss非アクティブな出力を受け入れます。畳み込み、行列の乗算、およびアクティブ化は同じレベルの演算です。設計ははるかにモジュール化されており、混乱が少なくなっています。これは私が切り替わる理由の一つであるTensorflowPyTorch


8

FOMO sapiens)。

数学のLogit関数をチェックすると、実空間が[0,1]intervalからinfinityに変換されます[-inf, inf]

シグモイドとソフトマックスはまったく逆のことをします。彼らは[-inf, inf]実空間を[0, 1]実空間に変換します。

これが、機械学習でシグモイド関数とソフトマックス関数の前にロジットを使用する理由です(これらは一致するため)。

そしてこれが、シグモイド関数またはソフトマックス関数の前にある機械学習のあらゆるものを「ロジット」と呼ぶ「理由」です。

これは、この用語を使用したJ.ヒントンのビデオです。

PS。期間を確認するためだけにビデオを見るのはお勧めしません。


5

それらは、基本的に、ネットワークから取得できる完全に学習されたモデルであり、必要な数のクラスにのみ適用するために押しつぶされる前に、いくつかの研究者がどのようにそれらを使用して、深いニューラルネットに基づいて浅いニューラルネットをトレーニングするかを確認してくださいネットワークは学んだ:https : //arxiv.org/pdf/1312.6184.pdf

それは、主題を詳細に学習するときに、非常に多くのマイナーなポイントを学習するようなものですが、学生を教えるときに、それを最も単純なケースに圧縮しようとします。学生が今教えることを試みた場合、それはかなり難しいでしょうが、言語を使用するのに十分なほどそれを説明することができます。


1

ロジット(/ ˈloʊdʒɪt / LOH-jit)関数は、数学、特に統計で使用されるシグモイド「ロジスティック」関数またはロジスティック変換の逆関数です。関数の変数が確率pを表す場合、ロジット関数は対数オッズ、つまりオッズp /(1 − p)の対数を与えます。

こちらをご覧くださいhttps : //en.wikipedia.org/wiki/Logit


4
それは統計/数学です。ここでlogitは、異なる意味を持つ機械学習について話します。これこれこれを見てください。
AneesAhmed777

1

ロジット

分類モデルが生成する生の(正規化されていない)予測のベクトル。通常は、正規化関数に渡されます。モデルがマルチクラス分類問題を解いている場合、ロジットは通常、softmax関数への入力になります。次に、softmax関数は、可能なクラスごとに1つの値を持つ(正規化された)確率のベクトルを生成します。

さらに、ロジットは、シグモイド関数の要素ごとの逆を指すこともあります。詳細については、tf.nn.sigmoid_cross_entropy_with_logitsを参照してください。

公式のtensorflowドキュメント


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