본문 바로가기
인공지능/모두를 위한 딥러닝 시즌 2

Softmax Classifier

by SH_L 2023. 8. 6.
반응형

Lec

 

[Multinomial classification]

 

Binary classification: 두 개의 class를 구분할 수 있음

Multinomial classification: 여러 개의 class를 구분할 수 있음

 

 

왼쪽의 데이터를 그래프 상에 나타내면 오른쪽 그래프처럼 나타낼 수 있다.

 

 

Binary classification만을 가지고도 Multinomial classification 구현이 가능하다. A인지 아닌지, B인지 아닌지, C인지 아닌지 구분하는 세 개의 각각 다른 classification으로 Multinomial classification을 구현하게 된다.

 

 

세 개의 각각 다른 classification이 존재하기에 이를 구현하기 위해서 세 개의 독립된 형태의 벡터를 가지고 행렬 계산을 하게 된다.

 

 

3번의 계산이 이뤄진다면 구현하는데 복잡해지기에 다음과 같이 matrix multiplication을 이용하여 한 번에 계산을 진행해준다. 결과 값으로 각각 독립적인 Binary classification이 구해진다.

 

 

 

[Where is sigmoid?]

 

위에서 구한 Binary classification 값은 실수이기 때문에 sigmoid function을 적용하여 해당 값을 01 사이의 값으로 변환해주어야 한다. 각각 독립적으로 구한 Binary classificationsigmoid function을 적용할 수도 있지만 보다 효율적으로 Softmax를 적용하여 01사이의 값으로 나타낼 수 있다.

 

 

 

[SOFTMAX]

 

 

1. 결과 값이 0에서 1 사이 값으로 존재한다.

2. 전체 값의 합이 1이 된다.

 

 

3. 각 값을 확률이라 볼 수 있다.

-> a가 나올 확률이 0.7, b가 나올 확률이 0.2, c가 나올 확률이 0.1이라고 볼 수 있다.

4. Softmax을 통해 나온 결과 값 중 가장 높은 확률을 가지는 값을 찾아 1.0을 부여하고, 나머지는 0.0을 부여한다. 해당 과정을 one hot encoding이라 한다.

 

 

 

[Cost function]

 

예측한 값과 실제 값이 차이를 나타내는 Cost를 최소화함으로써 학습을 완성하게 된다.

-> 예측한 값이 맞으면 Cost 값을 0, 예측한 값이 틀리면 Cost 값을 무한대로 큰 값을 부여한다.


Lab 01

 

[Sample Dataset]

 

 

1. y_data one hot encoding 적용을 위해 다음과 같이 특정 부분만 1로 표현하고 나머지는 0으로 표현한다.

2. x_data, y_data는 학습을 용이하게 하기 위해 numpy 형태로 변환시킨다.

 

 

 

[Softmax function]

 

 

1. 주어진 입력 값 x와 가중치 w를 통하여 score를 구하는 방식으로 이뤄진다.

2. score 값을 구한 다음에 softmax function을 적용하면 출력 값이 확률로 변경된다.

 

 

3. Logistic Classifier를 행렬 곱셈을 활용하여 구현한다.

4. softmax functiontf.nn.softmax를 활용하여 구현한다.

5. 4개의 특징 값과 3개의 class를 통해 weightbias 값을 구현한다.

6. Softmax를 적용한 결과 값에서 0.9302204가 최대 값이므로 one hot encoding 과정에서 해당 값이 선정된다.

 

 

 

[Cost function]

 

 

1. cross entropy를 구한 다음에 전체 합의 평균을 구하여 cost 값을 구한다.

2. 경사면을 타고 내려와 cost의 최적 값을 찾는 과정을 구현한다.

 

 

3. Softmax를 적용하여 logits 값을 구한다.

4. 각각의 cross entropy 구한 뒤에 평균 값을 구한다.

 

 

 

[Gradient function]

 

 

1. Cost Function을 적용한 뒤 최적 값을 찾기 위하여 gradient decent을 적용한다.

2. cost 값을 바탕으로 경사 하강 알고리즘을 적용시켜 모델의 파라미터가 얼마나 변하는지 판단한다.

3. variables는 이전에 정의한 weightbias 값을 의미한다.

 

 

 

[Train & Result]

 

 

1. 지금까지의 결과를 통합하여 확인할 수 있도록 fit function으로 학습을 진행한다.

2. 2000번의 epochs gradient descent를 활용하여 파라미터 값을 업데이트하면서 100번마다 값을 출력한다.

 

 

 

[Prediction]

 

 

tf.argmax function을 이용하여 출력 값 중 가장 높은 확률 값을 뽑아 선택한다.


Lab 02

 

[Softmax_cross_entropy_with_logits]

 

 

이전에는 cross entropy를 구한 다음에 전체 합의 평균을 구하여 cost 값을 구하였다. 이를 간소화하기 위해서 Softmax_cross_entropy_with_logits를 활용한다. hypothesis가 아닌 logits를 입력 값으로 넣고 전체 합의 평균을 구하여 cost 값을 구한다.

 

 

 

[Sample Dateset]

 

 

1. 동물의 특징을 추출하여 동물의 종을 추측하는 Dateset으로 0부터 6까지 총 7종으로 분류한다.

2. numpy 라이브러리를 활용하여 csv 파일을 로드한다.

3. x_data는 마지막 column을 제외한 모든 column을 포함하고, y_data는 마지막 column을 선택한다.

 

 

 

[Tf.one_hot_and_reshape]

 

 

1. Tf.one.hot function을 활용하여 y_dataone hot encoding 시켜준 다음 Y_one_hot에 저장한다.

2. one hot encoding 시켜주게 되면 한 차원이 더 추가된다. (N차원에서 N+1차원으로 변환됨)

([0], [3]) -> ([[1, 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 1, 0, 0, 0]])

3. tf.reshape function을 활용하여 ([1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0])와 같이 학습에 필요한 구조로 다시 변환시킨다.

 

 

 

[Implementation – Load Dataset]

 

 

1. class의 값을 7로 설정한다.

2. 모델에 맞게 Y_one_hot의 구조를 tf.one_hot functiontf.reshape function을 활용하여 변환시킨다.

 

 

 

[Implementation – Softmax Classifer]

 

 

1. weightbias의 값을 설정하고 weightbias의 값을 업데이트 할 variables을 저장한다.

2. 학습을 진행하면서 정확도를 맞추기 위해 hypothesis function을 구현한다.

 

 

3. prediction function에서 위에서 구현한 hypothesis function을 사용한다.

4. prediction function에서 정확률 accuracy를 구하여 return 해준다.

 

 

 

[Implementation – Training]

 

 

1. 지금까지의 결과를 통합하여 확인할 수 있도록 fit function으로 학습을 진행한다.

2. 업데이트 되는 파라미터의 값과 함께 정확률 accuracy를 보여준다.

반응형

'인공지능 > 모두를 위한 딥러닝 시즌 2' 카테고리의 다른 글

딥러닝의 기본 개념  (0) 2023.08.13
application and tips  (0) 2023.08.06
logistic_regression  (0) 2023.08.06
Multi variable linear regression  (0) 2023.07.30
Liner Regression and How to minimize cost  (0) 2023.07.30