인공신경망에서 ReLU함수 이전에 주로 사용되었던 activation function(활성화 함수)이며, hidden 노드 바로 뒤에 부착한다.
[출처: 위키피디아]
인공신경망이 결과로 내놓은 K개의 클래스를 확률처럼 해석하도록 만들어 준다. 함수의 범위가 [0, 1]이기 때문이다. 따라서 output 노드 바로 뒤에 부착된다.
logit은 이진 분류 문제(binary classification)이다. y가 으로 분류될 확률이라면 으로 분류될 확률은 1-y이다. (확률의 총합은 1이고, 이진 분류이기 때문)
일 때, 이면 , 이면 이다.
이를 식으로 표현하면 이고 이를 odds 라고 한다. odds가 1보다 크면(y>1-y) , 1보다 작으면(y<1-y) 이다. (odds는 실패비율 대비 성공비율이고, odds가 클수록 성공확률이 더 크다는 뜻이다. odds값의 범위는 [0, ]이다.)
odds에 log를 씌우면 결정의 기준이 0으로 바뀐다. (log1 = 0이므로) 이를 식으로 표현하면 이고, logit (logistic + probit)이라고 부른다.
[logit 함수, 출처: 위키피디아]
logit 변환은 [0, 1]의 범위를 가지는 확률을 [-, ]로 바꿔주는 변환이다. 따라서 예측값(y)과 예측값을 만들어내는 특성값(x)의 관계를 선형 관계(y = wx+b)로 만들 수 있게 한다. y의 범위는 [0, 1]이고, 특성값 x의 범위는 [-, ]이므로 관계를 말할 수 없지만 logit 변환을 사용하면 두 값의 관계를 말할 수 있고, 이로 인해 로지스틱 회귀식을 사용할 수 있게 된다.
[확률과 logit의 비선형 관계, 출처: 로짓(Logit) 이란?]
그러나 분류를 하는 딥러닝에서는 확률화되지 않은 예측 결과를 logit이라고 한다. 확률값을 계산하지 않고 layer를 거쳐 나온 산출물을 그대로 다음 layer에 넘길 때 사용한다. 다시 말하면, logit은 신경망의 최종 레이어가 내놓는 확률값이 아닌 결과이고, 결과값의 범위가 [-, ]이다. 따라서 양수인지, 음수인지에 따라서 클래스를 구분할 수 있다(이진 분류). 다중 분류 문제에서 logit은 보통 Softmax 함수의 입력으로 사용된다. Softmax 함수는 신경망의 결과를 확률로 바꿔준다.
[출처: https://chacha95.github.io/2019-04-04-logit/]
참고: tensorflow의 loss 함수에서의 from_logit
Binary_crossentropy나 Categorical_corssentropy 함수에서는 from_logits 인자를 설정할 수 있다.모델이 해당 클래스의 범위에서 확률을 출력하면 logit=False, 모델의 출력값이 sigmoid 또는 linear를 거쳐 확률이 아닌 값이 나오면 logit=True이다.
[logit, sigmoid, softmax의 관계, 출처: https://opentutorials.org/module/3653/22995]