[모두의 딥러닝] lab 06-1. TensorFlow로 Softmax Classification 구현하기
Softmax function
- 여러 개의 class를 예측할 때 굉장히 유용
- binary의 경우보다는 실생활에서는 여러 개를 예측하는 경우가 많음.
ex) 학점: A, B, C, D, F
- N개의 예측할 것들이 있을 때 사용한다.
- 주어진 X 값에 학습한 Weight를 곱하여 값을 만드는 것부터 시작.
- 나오는 값들은 실수인 score에 불과
- softmax 함수를 통과시키면 확률로 나오게 됨.
- 모든 class의 label들을 더하게 되면 1이 된다.
--> TensorFlow로 구현
- SCORES 값을 Logit 이라고도 부름.
- 결과: hypothesis가 어떤 label이 될 것인가에 대한 확률로 나오게 된다.
Cost function: cross entropy
- loss function은 tensorflow로 쉽게 구현 가능.
--> 이 값은 여러 개의 matrix 값이 될 것. 이것을 합을 한 후 평균 낼 것.
- cost를 minimize
--> gradient descent 알고리즘 적용
소스코드
- [x1, x2, x3, x4]의 4개 element씩 x_data가 있다.
- y_data 이전 binary data에는 숫자 하나 0 or 1로 주어졌지만
여러 class를 쓸 때는 한 자리로 표현하는 것이 불가
ex) 0, 1, 2의 class 중 어떻게 표시할까? ==> 'ONE-HOT' ENCODING
: 세 자리 중 하나만 HOT 하게 한다. (=1.0)
y_value를 one-hot encoding으로 표시하였음.
- placeholder
: shape 항상 조심!!
y의 개수는 ONE-HOT으로 표시하고 있기 때문에 3개!
= ONE-HOT으로 표시할 때는 y의 개수가 label의 개수(class의 개수)
- W, b
: shape 항상 조심!!
W = [X(들어오는 개수), Y(nb_class. 출력 값)]
b = [Y(nb_class. 출력 값)]
Test & one-hot encoding (어떻게 출력될까?)
- softmax를 통과하면 확률로 주어지게 된다.
- 여기에서 우리는 이것을 이용하여 feed_dict로 새 값을 던져준 후 예측해보고 싶다!
- 전체의 합은 1. 제일 큰 값이 최강자다. 이 과정을 tensorflow에서 자동으로 해주는 것: arg_max
- 결론: softmax 값을 우리가 원하는 label로 바꿀 때는 arg_max를 사용!
여러 개를 동시에 질문하는 경우?
- 확률로 답을 돌려준다.
'인공지능' 카테고리의 다른 글
[모두의 딥러닝] lec 07-1. Application & Tips: 학습 rate, Overfitting, 그리고 일반화 (Regularization) (0) | 2019.05.03 |
---|---|
[모두의 딥러닝] lab 06-2. TensorFlow로 Fancy Softmax Classification 구현하기 (0) | 2019.05.03 |
[모두의 딥러닝] lec 06-2. Softmax classifier의 cost 함수 (0) | 2019.04.08 |
[모두의 딥러닝] lec 06-1. Softmax Regression: 기본 개념 소개 (0) | 2019.04.08 |
[모두의 딥러닝] lab 05. TensorFlow로 Logistic Classification 구현 (0) | 2019.04.08 |
댓글