- Classification을 위한 Regression
Logistic Regression은 Regression이라는 말 때문에 회귀 문제처럼 느껴진다.
하지만 Logistic Regression은 Classification문제이다.
Logistic Regression과 Linear Regression에 1가지를 추가한 것이다. 그것은 Sigmoid라고 하는 함수이다.
이 함수의 역할은 Linear Regression의 출력 값의 범위를 0과 1사이로 유지해주면서 classification에 적합하게 도와주는 함수이다. 아래 그림처럼 생겼다.
Sigmoid 함수의 정의는 아래에 나온 g(z)의 함수이다. Logistic Regression에서는 아래의 h(x)를 Model로 설정한다. Theta 곱하기 X는 결국 Linear Regression 모델이다. 즉, Logistic Regression은 Sigmoid속으로 Linear Regression이 들어간 모델이라고 말할 수 있다.
Logistic Regression의 Cost Function은 MSE를 쓰지 않는다. 그 이유는 아래와 같이 Cost Function이 Convex하지 않게 되기 때문이다. 이럴 경우 Local Minimum에 빠질 수 있다.
따라서 다음과 같은 함수로 Cost Function을 설정해준다. y와 (1-y)는 순전히 정답이 1일 경우와 0일 경우를 나누기 위한 조작이다. 중요한 것은 log(h(x))의 특징이다.
log(h(x))와 log(1-h(x))는 다음과 같이 0.5를 기준으로 대칭인 모습을 가지고 있다.
각각 정답인 0 또는 1에서 멀수록 Cost가 커지는 경향을 보이고 있다.
이 Cost Function의 Gradient는 Linear Regression의 MSE Cost Function의 Gradient와 같은 모습을 가지고 있다. 자세한 증명은 math.stackexchange.com/questions/477207를 참고하길 바란다.
Multinomial Classification을 위해서 Logistic Regression을 쓸 때는 간단하게 Class개수 만큼의 Binary Classification Logistic Regression 모델을 만들면 된다. 아래 그림은 하나의 입력에 대해서 3개의 개별적인 Linear Regression 모델을 행렬로 표현했다. Multinomial Classification은 3개의 출력에 대해서 또는 일반적으로 n개의(class개수) 출력 값들 전체에 대해서 이전의 Sigmoid 대신 Softmax를 취해주면된다.
Softmax의 공식은 다음과 같다. 위의 경우에는 K가 3개이고 벡터 z가 H(x)의 값들이 된다.
이 Softmax를 하는 목적은 각각의 Linear Model의 출력값이 확률 조건을 만족시키도록 하는데에 있다.
출력값이 확률로 표현되기 위해서는 출력이 모두 양수이어야하고 그 합이 1이어야한다.
Softmax는 Sigmoid의 일반적인 경우로서 Linear Model의 출력값을 0과 1사이로 변환하고 그 합이 1이되도록 하므로서 확률을 최종적으로 출력하도록 해주는 기능을 한다.
(K가 2일때 Sigmoid 함수가 된다. [참고 : https://stats.stackexchange.com/questions/233658])
일반적인 Multinomial Classification은 Class가 서로 배반사건이다. 그래서 A라는 사건과 B라는 사건은 같이 일어나지 못한다고 가정한다. 하지만 A, B가 같이 일어날 수도 있다면 Sigmoid를 취한다.
One-Hot Encoding For Label(Y)
Multinomial Classification의 문제에서 정답 벡터는 One-Hot Encoding을 한다. 정답 1개는 확률이 1이고 나머지는 0으로 만들어서 정답을 표현하는 것이다.
Multinomial Classification에서 Cost Function은 Cross Entropy이다.
label값과 softmax한 후의 값에 log를 취한 값을 곱해서 구한다.
이것은 위의 Binary Classification에서 Cost Function의 일반화이다(n이 2일 때 같은 함수가된다.).
Gradient는 위의 Binary의 경우와 같다. 다만 각각의 요소를 벡터로 바꿔서 생각하면된다.
(참고 : https://stats.stackexchange.com/questions/193473)
Cross Entropy는 어떤 두 확률분포의 차이의 기준이다. Cross Entropy가 크다는 것은 두 확률분포가 많이 차이가 난다는 것이고 작다는 것은 두 확률분포의 차이가 작다는 것이다.
기준점이 되는 확률분포는 정답지인 한개의 1과 나머지의 0으로 이루어진 벡터다.
이것을 다르게 보면 베르누이 확률 분포라고 생각할 수 있다.
정리하면 Cross Entropy의 목적은 Bernoulli 확률분포의 일종인 One Hot Encoding 정답지와 가장 비슷한 확률 분포를 출력하는 Logistic Regression Classification 모델을 만들기 위한 지표로 쓰는 것이다.