티스토리 뷰

AI/딥러닝(sung kim)

softmax and cost function

취뽀가자!! 2018. 6. 12. 19:34

where is sigmoid?


그림 중에 빨간색으로 표시되어 있는 부분은 예측된 Y의 값이다. 이것을 우리는 Y hat이라고 부른다. 이 값은 W에 X를 곱하기 때문에 굉장히 크거나 작은 값일 수 있기에 0과 1사이로 값을 표현할 것이다.


Softmax



softmax는 점수로 나온 결과를 전체 합계가 1이 되는 0과 1 사이의 값으로 변경해 준다. 모두 더했을 때 1이 되는 이유는 0과 1사이의 값으로 나온 값이 확률이기 때문이다. 예를 들어 0.7이라는 것은 70%확률이 된다는 뜻이다.


검정 상자 안에 0과 1로 변환시켜 주는 softmax를 구현공식이 있는데, tensorflow에서는 softmax라는 함수가 있어서 그냥 호출해서 쓰면 된다. 굳이 구현을 하자고 하면 나의 크기가 전체 크기 중에서 어느 정도인지를 판단하면 되기 때문에 (내 크기/전체 합계)공식으로 간단히 생각할 수 있다. 그리고 분모에는 시그마가 있고, 분자에는 없는 것을 볼 수 있다.


softmax의 역할을 정리해보면 2가지가 된다.


1. 입력을 sigmoid와 마찬가지로 0과 1사이의 값으로 변환해준다.

2. 변환된 결과에 대한 합계가 1이 되도록 만들어준다.

One-hot encoding



y를 예측한 다음의 과정을 알려주는 그림이다. one-hot encoding은 softmax로 구한 값 중에서 가장 큰 값을 1로 만들어 준다. one-hot encoding을 이용해 1로 만들어 주는 이유는 컴퓨터에게 확실함을 주기 위함이다. one-hot encoding은 직접 구현할 수도 있지만 tensorflow에서 argmax라는 함수로 그 기능을 제공한다.


Cost function

여기서 S(Y)는 softmax가 예측한 값이고, L(Y)는 실제 Y의 값으로 L은 Label을 의미한다. cost함수는 예측한 값과 실제 값의 거리(distance, D)를 계산하는 함수로, 이 값이 줄어드는 방향으로, 즉 entropy가 감소하는 방향으로 진행하다 보면 최저점을 만나게 된다. 


Cross-entropy cost function



cross-entropy cost함수가 제대로 동작한다는 것을 설명하는 그림이다. 공식의 오른쪽에 나타난 log는 Logistic regression에서 사용한는 것과 같은 의미이다. 


위 그래프처럼 1이 되면 0에 수렴하게 되고, 0이 되면 무한대가 되어 선택할 수 없는 값이 된다. 따라서 우리는 최소 비용이 되는 것을 찾기에 1이 되어 0에 수렴하는 값을 찾아야 한다.


여기서 헷갈리지 말아야 할 것이지금 그림에서는 실제 계산을 y hat으로 하고 있지만 처음 공식에는  S(sigmoid)를 가리키고 sigmoid는 0부터 1사이의 실수이므로 실제 결과는 0 또는 무한대가 아니라 작은 값이나 큰 값이 나오게 된다. 이들 값을 취합해서 cost를 게산하고 그에 따라 weight를 계산하면서 조절해서 최저점을 찾게 된다.




위 식을 전개해보면 위 그림과 같다. L은 label의 약자로 Y의 실제 값이다. Y hat은 Y를 예측한 값으로, 맞게 예측했을 때와 틀리게 예측했을 때를 보여주고 있다. 


여기서 L이 2개의 값을 갖는 것은 binary classification을 두 번 진행한다는 뜻이다. 만약 3개 중에서 고른다면 L은 3개가 되어야 한다. 각각의 요소는 binary classification의 결과다. 공식에서 보면 L의 i번째라고 표현하는 것은, 여기서는 두 개 있으니깐 두 번 반복하게 된다. Y를 예측한 값이 0 또는 1일 수밖에 없는 이유는 one-hot encoding을 거쳤기 때문이다.


위 그림에서 실제 값은 두 번째 것을 가리키고 있으니 첫 번째 y hat이 맞게 예측하였고, 두 번째 y hat은 틀리게 예측했다. element-wise 곱셈을 적용한 최종 결과를 보면, 맞게 예측했을 경우 0이 나왔고, 틀리게 예측했을 경우에는 무한대가 나왔다. 따라서 잘 동작하는 cost 함수라는 것을 알 수 잇다.


Logistic cost VS cross entropy


둘은 같은 의미이다. 어떻게 같은지 수학식으로 도출해 보겠다.


우선 Logistic regression cost function을 변형해 보겠다.


이제 y를 p1, H(x)를 q1, y-1을 p2, 1-H(x)를 q2로 치환해 보겠다.


이 식은 다시 다음과 변형이 가능하다.

위 식을 일반화 하면 최종적으로 다으모가 같은 식이 나오는데 이 식이 바로 Cross-entropy식이다.


제대호 된 cross-entropy의 개념은 이보다 자세하지만 이 정도로만 이해하고 넘어가겠다.

더 자세한 내용이 궁금하면 여기 에서 확인해보자.

Cost function

WX + b는 지겹도록 본 공식으로 y를 예측한다. 왼쪽에 있는 L은 loss의 약자로 다른 말로는 cost 또는 error라고 한다. 비용이라고 하는 것은 결국 잘못 예측했을 때의 값, 즉 에러(error)라고 볼 수 있다. training set을 갖고 작업해야 한다고도 얘기한다. training set으로 학습하고 validation set으로 검증하고, test set으로 최종 확인까지 한다.

Gradient descent


cross-entropy cost 함수를 만들었다면, gradient descent 알고리즘에 적용해서 최소 비용을 찾아야 한다. 역시 이때 중요한 것은 그림에 표현된 w1, w2의 값이다. 알파는 learning rate로 어느 정도로 이동할 것인지를 알려주고, 알파 오른쪽에 삼각형은 델타로 미분을 한다는 의미이다.


여기서도 저번에 설명한 Gradient descent이므로 learning rate에 미분 결과를 곱한 값을 빼야 한다는 점이다. 








-----------------------------------------

이 글은 김성훈 교수님의 모두의 딥러닝을 보고 정리한 글입니다.











댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함