[PyTorchZerotoAll 내용정리] 06 Logistic(sigmoid) Regression = Linear classification

Linear regression의 경우 우리의 예측 값은 실수형태로 떨어졌다. 즉, 연속된 값을 가정하였다.
이번에는 Binary prediction이 필요한 경우, 즉, 카테고리 분류나 O,X 분류가 필요한 경우를 가정해보자.
실생활에서 이와 같은 경우는 위와 같이, 기나 아니냐 라는 케이스가 대다수이다.
Classfication = Logistic Regression

0,1로 결과값을 제약하려면 어떤 함수가 필요할까??
우리는 Sigmoid함수를 이용할 수 있다.
이런 함수를 activation 함수라고도 하는데, 시그모이드 함수는 그 함수의 특성상 0을 기준으로 값이 급격하게 1로 가까워지거나 0으로 가까워지는 특성이 있다.
즉, 과 1 사이의 실수 결과가 나온다면 특정한 임계치를 정하고 그 이상이면 1로 판단하고, 그것보다 작으면 0으로 판단할 수 있는 것이다.
Cross Entropy loss

동시에 이에 맞추어 우리는 새로운 Loss function을 정의한다. 이는 CE, Cross Entropy loss이다.
이를 사용하는 이유는 기존의 MSE loss의 경우 convex한 형태였기에 global minimum을 찾는 것에 문제가 없었다.
$$J(\theta_1,...\theta_n) =\frac{1}{2m}\Sigma(h_\theta(x_i)-y_i)^2 = \frac{1}{2m}\Sigma(\theta^TX-y^{(i)})^2$$
그러나 이를 logistic regression 식에 사용하는 경우 non-convex한 형태로 식이 나오게 된다.
$$J(\theta_1,...\theta_n) =\frac{1}{2m}\Sigma(h_\theta(x_i)-y_i)^2 = \frac{1}{2m}\Sigma(sigmoid(\theta^TX)-y^{(i)})^2$$
그럼으로 이를 보정하기 위해 새로운 cost function이 필요한 것이다.
어떤 상황에서 어떤 손실함수를 써야할지는 문제의 해석에 따라 달라지기도 한다.
이에 관한 정리는 아래에 되어있다.
https://secundo.tistory.com/68
[ML] Entropy와 Likelihood관점에서의 Loss function
Entropy와 Cross Entropy Entropy 정보의 불확실성의 척도 정보를 표현하는데 있어서 필요한 최소 자원량, 확률이 적은 애를 길게 코딩하고 확률이 큰 아이를 짧게 코딩해라 길이와 확률은 반비례하기에
secundo.tistory.com
Implementation
https://colab.research.google.com/drive/1QB72fSRQTZihbzbp8qf7cf-jRWZFy4Ax#scrollTo=DlW0pSpXyGoP

logistic regression의 구현은 아래와 같다.
sigmoid함수의 경우 기존 torch.nn.functinal에 잘 정의되어있다.
또한 BCE loss의 경우에도 정의되어있는 것을 이용한다.

이에 따른 최종 코드는 아래와 같다.

