데이터eng 2016. 6. 5. 16:43

신경망을 이용한 classification 문제를 풀어보다가 multiclass 에 대한 처리 및 확률기반의 output이 필요하여 그 방법에 대하여 알아보고 정리한다.  Logistic regression 의 내용( cost function, optimize, loss, activation function 등의 개념)을 이용하여 정리하려는데 해당 알고리즘의 설명은 생략? 함...


아래는 일반적인 regression 의 cost function 이다. 데이터(x는 input data, w는 학습 파라미터) 와 실제값(y) 의 차이를 표현한것인데(에러^2 총합의 평균을 최소화한다는 법칙?), 이것을 Gradient Decent 알고리즘을 통하여 optimize(minimize) 하는 것을 반복하게 된다.  



하지만 이 결과값(output)은 input vector의 크기에 따라서 범위가 아주 클수도 작을 수도 있다. 수치 예측을 위한 문제에서 적합한 것이다.  그래서 우리는 분류문제에  출력값을 0 ~ 1 로 내주는 sigmoid 와 같은 특성함수를 사용하게 된다. 

그렇다면 시그모이드를 통과하는 regression 과정은 연산은 아래와 같게 된다.


 


가설함수가 바뀌었으니 최적화를 위해서 cost 함수를 적절하게 바꾸어야한다.(그냥 하게 되면 local minimum에 최약하다. 이부분은 자세한 그래프의 형태가 필요한데 생략. 간단하게는 단순 X^2의 그래프에서 만은 굴곡이 생기는 것으로 이해하면 되겠다.)  그래서 일반적으로  H(x)의 exponential 을 일반화 시키기 위해 log 를 취한다.




위를 그래프로 생각해보면 

y=1일 때는 H(x)=1 이면 cost=0가 되고, H(x)=0이면 cost= 무한대가 된다.( h(x)가 0일 수록 cost가 커지는 형태) 

y=0일 때는 H(x)=0 이면 cost=0가 되고, H(x)=1이면 cost= 무한대가 된다.( h(x)가 1일 수록 cost가 커지는 형태) 

이렇게 log 함수의 단조증가 성질을 이용하여 실제 값과 예측값의 차이에 비례?하는 cost를 만들어낸다.

이러한 cost 함수를 아래와 같이 다시 정의해 볼 수 있다.



위 식에 y=1, y=0을 각각 넣어 정리해보면 위의 분리된 식을 갖을 수 있다. (다만 하나로 표현해놓은것. 나중 살제 로직에서 한번에 cost 함수를 표현해야 하기 때문에)

3차원의 input vector(데이터)를 이용하여 3개의 multiclass 분류를 한다면 아래와 같이 표현이 가능하다(차례로 클래스1,2,3으로 가정). 

아래의 아웃풋을 각각 sigmoid 함수 연산을 통해 0 ~ 1 로 각각의 값을 구할 수 있겠다.




3개의 클래스에 대한 output(score) 이 나올 것인데, 우리는 이것에 대한 원하는 형태가 있다.

각 클래스에 대한 확률 형태( 합은 1, scale 된 수치(0~1) ) 를 원하는데, 여기서 사용되는 것이 softmax이다. 


y = H(x) = Wx 로 볼 수 있겠다.


이렇게 우리는 데이터로부터 각 클래스별 확률로 볼 수 있는 값을 갖을 수 있는 것이다. 그 후 최고 확률 수치를 갖는 것을 one-hot encoding (argmax) 로 찾아내어 분류결과를 낼 수 있다.


학습 시에 어떻게 에러(loss) 를 줄일가?

cross entropy!!

softmax 로 부터 정규화된 값을 통해 실제 정답과 비교하여 에러를 줄이는 것을 해야한다. 이부분에 많이 사용되는 것이 cross entropy라는 것이 있다. y 는 실제 데이터에서 주어진 정답, y^hat 은 모델의 예측값이다.



3 클래스의 분류라고 했을 때 y =[ [1,0,0], [0,1,0], [0,0,1] ] 을 갖을 수 있을 것이다. softmax를 통과한 y^hat 의 one-hot encoding vector와 각원소별 곱을 한다는 의미이다.  

똑같이 0~1 사이의 log 그래프의 무한대와 0 사이의 결과값을 이용하여 error 를 구하고 그 합을 최종 loss 로 취하게 된다.


'데이터eng' 카테고리의 다른 글

통계학 시작  (1) 2016.07.05
sigmoid 함수 미분 과정  (1) 2016.05.29
[라그랑제 승수]조건부 최적화 문제 풀기  (0) 2016.01.12
MLE(최우도 추정)에 관해  (0) 2015.12.31
bayes rule  (0) 2015.12.30
//