[tensorflow] TensorFlow에서 로짓이라는 단어의 의미는 무엇입니까?

다음 TensorFlow 함수에서, 우리는 최종 층에서 인공 뉴런의 활성화를 공급해야합니다. 이해합니다. 그러나 왜 그것이 로짓이라고 불리는 지 이해하지 못합니까? 수학 함수가 아닌가?

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



답변

로 짓은 많은 다른 것을 의미 할 수있는 과부하 된 용어입니다.


Math 에서 Logit 은 확률 ( [0, 1])을 R ( (-inf, inf))에 매핑하는 함수입니다.

여기에 이미지 설명을 입력하십시오

확률 0.5는 0의 로짓에 해당합니다. 음의로 짓은 0.5보다 작고 0.5보다 큰 확률에 해당합니다.

ML에서 , 그것은 할 수있다

분류 모델이 생성하는 원시 (비정규 화 된) 예측 벡터로, 보통 정규화 함수로 전달됩니다. 모형이 다중 등급 분류 문제를 해결하는 경우로 짓은 일반적으로 softmax 함수의 입력이됩니다. 그런 다음 softmax 함수는 가능한 각 클래스에 대해 하나의 값으로 (정규화 된) 확률로 구성된 벡터를 생성합니다.

로 짓은 또한 때때로 시그 모이 드 함수의 요소 별 역수를 나타냅니다.


답변

이 해명을 추가하면 아래로 스크롤하는 모든 사람이 적어도 올바른 답을 얻을 수 있습니다.

Diansheng의 답변 과 JakeJ의 답변 이 맞습니다. Shital Shah가 게시
한 새로운 답변 은 더 좋고 완전한 답변입니다.


그렇습니다. 통계에서 logit 수학적 함수사용 되지만 logit신경망의 맥락 에서 사용되는 것은 다릅니다. 통계 logit는 여기에서도 의미가 없습니다.


나는 어디에서나 공식적인 정의를 찾을 수 없었지만 logit기본적으로 다음을 의미합니다.

신경망의 마지막 계층에서 나오는 원시 예측.
1. 이것은 argmax예측 클래스를 얻기 위해 함수를 적용하는 매우 텐서입니다 .
2. 이것은 softmax예측 된 클래스에 대한 확률을 얻기 위해 함수에 피드하는 매우 텐서입니다 .


또한 공식 tensorflow 웹 사이트 의 자습서 에서

로짓 층

신경망의 마지막 계층은 로짓 계층이며 예측에 대한 원시 값을 반환합니다. 선형 활성화 (기본값)를 사용하여 10 개의 뉴런 (각 대상 클래스 0–9에 대해 하나씩)으로 조밀 한 레이어를 만듭니다.

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를 적용 할 수 있습니다 .probabilitiessoftmax

특정 클래스의 가능성이있는 경우 p,
그 다음 로그 확률 이 클래스의입니다 L = logit(p).

또한 해당 클래스의 확률은 함수를 p = sigmoid(L)사용하여 로 복구 할 수 있습니다 sigmoid.

그러나 로그 홀수를 계산하는 데별로 유용하지 않습니다.


답변

로 짓은 확률 [0, 1]을에 매핑하는 함수입니다 [-inf, +inf].

소프트 맥스는 매핑 함수 [-inf, +inf][0, 1]S 상 유사한. 그러나 Softmax는 또한 값 (출력 벡터)의 합을 1로 정규화합니다.

Tensorflow “with logit” : 숫자를 로짓하기 위해 softmax 함수를 적용하여 정규화합니다. input_vector / logit는 정규화되지 않았으며 [-inf, inf]에서 확장 할 수 있습니다.

이 정규화는 다중 클래스 분류 문제에 사용됩니다. 그리고 멀티 라벨 분류 문제의 경우 시그 모이 드 정규화가 사용됩니다.tf.nn.sigmoid_cross_entropy_with_logits


답변

요약

딥 러닝과 관련하여 로짓 레이어소프트 맥스 (또는 다른 정규화)로 공급되는 레이어를 의미합니다. softmax의 출력은 분류 작업의 확률이며 입력은 로짓 레이어입니다. 로짓 레이어는 일반적으로 -infinity에서 + infinity까지의 값을 생성하고 softmax 레이어는이를 0에서 1까지의 값으로 변환합니다.

역사적 맥락

이 용어는 어디에서 유래합니까? 1930 년대와 40 년대에 여러 사람들이 확률 예측 문제에 선형 회귀를 적용하려고했습니다. 그러나 선형 회귀 분석은 -infinity에서 + infinity로 출력을 생성하지만 확률의 경우 원하는 출력은 0 대 1입니다.이를 수행하는 한 가지 방법은 확률 0-1에서 -infinity로 + infinity로 매핑 한 다음 평소와 같이 선형 회귀를 사용하는 것입니다. 그러한 매핑 중 하나는 1934 년 Chester Ittner Bliss가 사용한 누적 정규 분포이며 “확률 단위”의 약자 인이 “프로 빗”모델이라고 불렀습니다. 그러나이 함수는 계산 비용이 많이 들고 멀티 클래스 분류에 바람직한 특성이 없습니다. 1944 년 조셉 버크 슨은log(p/(1-p))이 매핑을 수행하기 위해 “logistic unit”의 줄임말입니다. 로지스틱 회귀라는 용어도 이것에서 파생됩니다.

혼란

불행하게도 로짓이라는 용어는 딥 러닝에서 남용됩니다. 순수한 수학적 관점에서로 짓은 위의 매핑을 수행 하는 함수 입니다. 딥 러닝에서 사람들은 로짓 기능에 공급되는 “로깅 레이어”레이어를 호출하기 시작했습니다. 그런 다음 사람들 은이 계층 의 출력 을 “logit” 호출하기 시작 하여 logit 함수 와 혼동을 일으켰습니다 .

텐서 플로우 코드

불행히도 TensorFlow 코드는와 같은 이름으로 혼란을 더합니다 tf.nn.softmax_cross_entropy_with_logits. 여기서로 짓은 무엇을 의미합니까? 그것은 단지 함수의 입력이 위에서 설명한 것처럼 마지막 뉴런 층의 출력이어야한다는 것을 의미합니다. _with_logits접미사입니다 중복 혼란과 무의미 . 함수는 다른 여러 도메인에서 파생 된 값에서 수행 할 수있는 수학적 연산이기 때문에 매우 구체적인 컨텍스트와 상관없이 이름을 지정해야합니다. 실제로 TensorFlow에는 다른 유사한 기능 sparse_softmax_cross_entropy_with_logits있어 불일치가 생기고 혼동을 일으키는 접미사 를 추가하는 것을 잊었습니다 . 반면 PyTorch는 단순히 이러한 종류의 접미사없이 기능을 명명합니다.

참고

로짓 / 프로 빗 강의 슬라이드는 로짓을 이해하는 가장 좋은 자원 중 하나입니다. 또한 위의 정보 중 일부로 Wikipedia 기사 를 업데이트했습니다 .


답변

TensorFlow 도메인에서 개인 이해는 로짓이 softmax에 대한 입력으로 사용되는 값입니다. 이 tensorflow 튜토리얼을 기반 으로이 이해에 도달했습니다.

https://www.tensorflow.org/tutorials/layers


로짓이 수학 (특히 통계)의 함수라는 것은 사실이지만, 나는 그것이 당신이보고있는 동일한 ‘로깅’이라고 생각하지 않습니다. Ian Goodfellow의 Deep Learning 이라는 책 에서 그는

함수 σ -1 (x)는 통계적으로 로짓이라고하지만이 용어는 기계 학습에서 거의 사용되지 않습니다. σ -1 (x)는 로지스틱 시그 모이 드 함수의 역함수를 나타냅니다.

TensorFlow에서는 종종 마지막 레이어의 이름으로 표시됩니다. Aurélien Gé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하나만 CrossEntropyLoss있으며 활성화되지 않은 출력을 허용합니다. 컨벌루션, 행렬 곱셈 및 활성화는 동일한 수준의 작업입니다. 디자인은 훨씬 모듈화되고 혼동되지 않습니다. 이것이에서 Tensorflow로 전환 한 이유 중 하나입니다 PyTorch.


답변

( FOMO 사피엔스).

math Logit 함수를 확인하면 실제 공간이 [0,1]interval에서 infinity 로 변환 [-inf, inf]됩니다.

Sigmoid와 softmax는 정반대입니다. [-inf, inf]실제 공간을 [0, 1]실제 공간으로 변환합니다 .

이것이 머신 러닝에서 시그 모이 드와 소프트 맥스 기능 이전에 로짓을 사용할 수있는 이유입니다.

그리고 이것이 기계 학습에서 S 자형 또는 소프트 맥스 함수 앞에있는 모든 것을로그 “라고 부르는 이유 입니다 .

이 용어를 사용한 J. Hinton 비디오 는 다음과 같습니다 .

추신. 용어를 확인하기 위해 비디오를 보는 것은 권장하지 않습니다.