데이터분석/Deep Learning

평균제곱오차와 교차엔트로피 분류오차 차이

늘근이 2017. 11. 10. 22:25

본 글에서 스페이스바가 이상하게 먹힌건, 애플이 스페이스바가  초기불량난 상태의 맥북을 신제품 맥북이라고 팔아먹고, 도저히  못쓰겠어서 3달된 이놈을 고치려고 다시 가져가니 소비자과실로 덤탱이씌우고 100만원을 요구했기때문이다. 이런 바보같은 제품을 비싸게 주고사지않았으면 하는 간절한 마음이다.

만약 열심히 번호판을 신경망을 훈련시키고나서 다음과 같은 결과가 나왔다고  하자.

소프트맥스를 통과시키면 모든 클래스에 대해 합이 1로 떨어지게 된다. 예를들어, 숫자에는  1~3밖에 나올수 없다고 치면,

1로 분류 - 10%

2로 분류  -  20%

3로 분류 - 70% (정답)

이런식으로 튕겨나온다는것이다.  소프트맥스는 일반 시그모이드의 함수와 다를바가  없으나 모든 클래스에대해  합이  100%가 나오게 조정해준다는 점이 다르다. 참고로, 시그모이드  함수는 모든 값이  0~1로 튀어나오는 로지스틱  회귀의 일반버전 (평균0, 표준편차1인 표준정규분포와 마찬가지의..) 이라고  할수있다.

어쨌든  개념은  그렇고, 위와같이 분류가 되었는데, 실제값은 3이라고 하자. 그렇다면 사실은 정답을 70%라는 그나마  높은 확률로 제대로 맞춘것이긴하다. 다만, 별로 찜찜한것이 정답이 나왔든 나오지 않았든 다음과 같은 소프트맥스  결과값이 튀어나온다면 어떠한  판단을 할것인가?

1로 분류 - 33%

2로  분류  -  33%

3로  분류  - 34% (정답)

다음에도  맞춘다는 보장이 있을까? 이의 오차를 수정하기 위해 평균제곱오차 방법(MSE, Mean Square  Error)과  교차 엔트로피 방법을 쓸수있다.

평균제곱오차방법은, 오답은 0, 정답은 1로 두고 이에따른 차이를 제곱한값을 더한값이다.

처음의 예제의 경우 0-0.1에 대해 제곱을 하고, 0-0.2에대해 제곱을하고 1-0.7에 대해 제곱을 한다. 두번째 예제의 경우는 0-0.33, 0-0.33, 1-0.34 에 대해 제곱을 한다. 만약 0%, 0%, 100%로 맞추는 초능력 예측기라면, 이 MSE는 0이 떨어진다.

교차엔트로피는 다음의  식으로  표현된다.

iyilog(yi)

의 경우 오답인경우는 0, 정답인 경우는 1이 떨어지는 단순한 값이며, y'이 경우가 위에서 구한 예측확률이다. 0을 곱하는걸 보면 알겠지만, 아예 예측을 하지않은경우에는 0이 되니, 정답인 경우의 1이 떨어지는 경우만 log(0.7)과 같이 구해주면돤다.

log에다가 소수점을 취해보면 알겠지만, log 1의  경우는 0이며, 에러가 없는 상황이다. 0에 가까워질수록 숫자가 높아지며, 분류오차도 커진다고 판단하며 0은 계산불가상태이다. 가중치를 0으로 초기화해서는 안되는 이유이기도 하다.

평균제곱오차방법은, 거의 100%에 가까울경우 값이 굉장히 적게나와 훈련을 멈추기도 하는데 교차엔트로피의 방법에 따르면 무리없이 훈련을 계속 진행할수있다.


iyilo