다음 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
를 적용 할 수 있습니다 .probabilities
softmax
특정 클래스의 가능성이있는 경우 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 비디오 는 다음과 같습니다 .
추신. 용어를 확인하기 위해 비디오를 보는 것은 권장하지 않습니다.