분류(Classification)는 어떠한 데이터를 기준에 따라 적당한 그룹으로 정하는 것이에요. 말은 거창하지만 쉽게 말해서 어떤 사진이 고양이인지/개인지, 어떤 점수를 바탕으로 A등급이 예상되는지 B 등급이 예상되는지 정하는 것이에요. 이번 글에서는 데이터를 2개의 선택지 중 하나로 분류하는 방법에 대해 다룰 거예요.
우선 데이터를 실수로 표현하기 위하여 첫 번째 선택지를 0, 두번째 선택지를 1로 정하고 각 데이터를 0이상 1이하의 실수로 나타낼께요. 예를 들어 어떤 데이터가 0.01이라는 것은 첫번째 선택지에 가깝다는 거예요. 만약 데이터가 어떠한 기점을 중심으로 선택지가 갈린다면 다음 그래프와 같이 데이터를 나타낼 수 있겠죠.
우리의 목표는 어떠한 점을 기준으로 데이터의 분류가 갈리는지 알아내서 예측하는 거예요. 이를 위해 데이터를 선형 회귀로 분석하고 예측하여 예측된 값이 일정 값 이하면 분류 A로, 아니면 분류 B로 정하는 방법도 가능은 하겠지만 이러면 결괏값이 0부터 1이 아닌 매우 다양한 값이 가능하기 때문에 선형 회귀만을 사용하는 건 적합하지 않아요. 그래서 이번에는 선형 회귀에 이어서 시그모이드 함수(Sigmoid function)를 사용할 거예요.
시그모이드 함수는 다음과 같이 생겼어요.
이 시그모이드 함수는 로지스틱 방정식으로 우리가 사용할 형태로 변형하면 다음과 같이 생기게 돼요.
$S(x)=\frac{1}{1+e^{-x}}$
가설은 다음과 같지요. 시그모이드 함수를 통해 가능한 결과의 범위를 0부터 1 사이의 값으로 줄여요.
$H(X)=S\left(f(X)\right)=\frac{1}{1+e^{-(WX+b)}}$
그렇게 나온 결과가 0에 가까운지 1에 가까운지 판단해서 최종적으로 둘 중 어디인지 확률을 내는 함수를 만들 수 있어요.
이제 cost 함수를 생각해봐야 해요. 여기서 cost 함수는 다음과 같습니다.
$cost(W)=\frac{1}{m}\displaystyle\sum c(H(X),\;Y)$
여기서 함수 $c$는 다음과 같아요.
$c(H(X),\;Y)=\left\{\begin{matrix}-\log(H(X))\;\;\;\;\;\;:Y=1\\-\log(1-H(X)):Y=0\end{matrix}\right.$
로지스틱 회귀에서 선형 회귀에서 쓴 cost 함수를 그대로 사용하지 못하는 것은 학습이 제대로 되지 않을 위험이 있기 때문이에요. 항상 그런 것은 아니지만 데이터에 따라 cost의 최소를 제대로 찾지 못하는 경우가 있거든요.
위 그래프는 다음 데이터를 선형회귀에서 사용한 cost 함수로 W에 따른 cost를 계산한 것이에요.
X | -25 | -20 | -5 | -1 | 3 |
Y | -2 | -1 | 5 | 4 | 6 |
그래프에서 빨간 점과 파란 점이 보이지요. 빨간 점은 모든 점 중 가장 cost가 작은 global minimum으로 우리가 찾고자 하는 점이에요. 한편 파란 점은 local minimum으로 가장 cost가 작은 점이 아니지만 그렇게 오해될 수 있는 점이에요. 학습을 시작하는 지점에 따라 빨간 점에 다다를 수도 있지만 파란 점에 다다를 수도 있지요. 만약 파란 점을 전체의 최소로 오해하면 (local minimum을 global minimum으로 오해하면) 학습된 모델의 성능이 매우 나빠질 거예요. 그래서 cost 함수를 곧게 펴줘야 해요. 그러한 역할을 하는 것이 앞선 cost 함수의 log가 하는 역할이죠.
한편 cost 함수를 왜 앞서 설명한 대로 정할 수 있는지 알아볼게요. 함수 $c$에 집중해봐요.
$c(H(X),\;Y)=\left\{\begin{matrix}-\log(H(X))\;\;\;\;\;\;:Y=1\\-\log(1-H(X)):Y=0\end{matrix}\right.$
$H(X)$ 함수의 치역은 0부터 1이기 때문에 log 함수의 정의역도 0에서 1이에요 이 범위 내에서 log 함수를 그리면 다음과 같아요.
초록색 함수는 $-\log(x)$, 파란색 함수는 $-\log(1-x)$에요.
$Y=1$인 경우 초록색 함수를 따라 1에 가까워질수록 cost가 작아지게 돼요. 예측이 성공할 수록 cost가 작아지죠. 반면 예측에 실패하여 0에 가까운 값을 예측할 수록 cost가 커져요.
$Y=0$인 경우 파란색 함수를 따라 1에 가까워질 수록 cost가 커지게 되요. 예측에 실패했으니 cost가 커지는 게 맞겠죠. 한편 0에 가까운 값을 예측하여 예측에 성공하면 cost가 작아져요.
이렇게 log 함수를 통해 cost 함수를 볼록하게 펴는 한편 cost를 예측의 성공 실패에 따라 적절히 부여할 수 있어요.
하지만 $Y$의 값에 따라 다른 cost 함수를 실행하게 하는 것은 개발에 불편함이 있기 때문에 하나의 식으로 압축하여 다음과 같이 쓰는 것이 일반적이지요.
$c(H(X),\;Y)=-y\log(H(X))-(1-y)\log(1-H(X))$
이것으로 cost 함수를 완성하면 다음과 같아요.
$cost(W)=\frac{1}{m}\displaystyle\sum (-y\log(H(X))-(1-y)\log(1-H(X)))$
cost 함수의 값을 최소로 낮추는 것은 앞서 알아본 경사 하강법을 그대로 쓰면 돼요. cost함수가 볼록하기 때문에 문제 될 것이 없지요.
'이것저것 > AI' 카테고리의 다른 글
Softmax Regression Classification (0) | 2022.03.09 |
---|---|
선형회귀(Linear Regression) (0) | 2021.12.29 |
인공지능 - 머신러닝의 개념 (0) | 2021.12.28 |