인공지능

[모두의 딥러닝] lec 06-2. Softmax classifier의 cost 함수

여니두 2019. 4. 8.

Where is sigmoid?

 

X를 주게 되면 이전처럼 0, 1로 나오지 않고 vector로 나올 것임. (A, B, C)

빨간색처럼 실수 값이 나오는 것이 아니라 우리는 0~1 사이의 값으로 나오길 원한다!

 

정리

- logistic classifier를 이용하여 벡터를 주어 계산을 하게 되면 y와 같은 입력 값에 대한 세 개의 vector 값이 나오게 된다.

- A: 2.0 B: 1.0 C: 0.1 (각각 해당되는 값들)

- p의 값을 모두 더하면 1이 되는 형태로 표현하면 어떨까?

--> 이것을 하기 위한 것이 Softmax

 

Softmax 함수

n개의 값을 softmax에 넣게 되면 값이 산출된다. 여기에는 우리가 원하는 것들이 다 들어있다.

1) 이것이 0~1 사이의 값이다.

2) 전체의 합이 1이 된다. --> 각각을 확률로 볼 수 있다.

 

A가 나올 확률이 0.7, B가 나올 확률이 0.2, C로 나올 확률이 0.1이라고 말할 수 있음.

- 'ONE-HOT' ENCODING 기법

: 이들 중 하나를 고를 수 있는 기법

: 제일 큰 값을 1로 두고 나머지를 0으로 둔다.

: argmax 이용 (tensorflow)

 

==> 여기까지 우리의 hypothesis는 완성됨.

 

Cost function

예측 값과 실제 값이 얼마나 차이나는 지 알려주는 cost function을 설계해야 함.

cost function을 최소화함으로써 학습을 완성.

 

- CROSS-ENTROPY cost function

L(=이전에서는 Y라 함): 실제 값

S(Y) (=Y의 hat. softmax 함수에 넣은 값.): 예측 값

: 이 둘 사이의 차이를 알기 위하여 CROSS-ENTROPY 함수를 통하여 구한다. (파란 네모)

 

: -log 함수는 지난번에 본 그래프임.

: softmax를 통과한 값이라 항상 0~1 사이의 값을 가진다.

이 함수는 값이 0일 때는 무한대, 1일 때는 0에 가까워진다.

 

(ex1) 실제 값은 B가 나왔음.

두 가지 label (A, B)이 있다고 가정

예측 경우 두 가지)

- cost function이 하고 싶은 것은 예측이 맞을 때는 값이 작고, 틀릴 때는 값이 큰 것일 것

1) 예측이 맞은 경우(B)

element wise 곱 후 각 element를 합한다. 최종 값 = 0.

--> good! (이유: 예측이 맞았을 때는 cost가 최소화되어야 함)

 

2) 예측이 틀린 경우(A)

최종 값 = 무한대

--> good! (이유: 예측이 틀렸을 때 cost가 큰 값이 나와야 함)

element wise 곱

(ex2) 실제 값은 A가 나왔음.

L(실제 값)이 A가 나왔을 때!

예측 경우 두 가지)

1) 예측이 맞은 경우(A)

최종 값 = 0

2) 예측이 틀린 경우(B)

최종 값 = 무한대

 

==> 우리가 원하는 형태의 cost 함수!!!!

 

Logistic cost VS cross entropy

이 두 줄은 같은 것이다.

(왜 그런지 한번 생각해보기)

 

 

많은 형태의 training data가 있을 경우에는?

전체의 거리를 (D) 구한 후 합하여 개수 나누기(평균)

 

마지막 단계: Gradient descent (cost를 최소화하는 W vector 찾기)

 

LOSS(Cost) function은 밥그릇 모양.

어디서 시작하든 경사면을 타고 내려가면 최저값을 찾을 수 있다.

경사면(기울기) = 함수를 미분하는 것.

여기에서는 loss 함수가 복잡하기 때문에 미분하는 것은 다루지 않을 것.

알파 값만큼 한 발자국씩 내려가면서 최저값을 찾게 됨.

댓글