Multi-class classification

geunyeongii·2021년 11월 22일
0

인공지능

목록 보기
7/10
post-thumbnail

Linear Regression은 y값이 숫자로 몇점을 맞을 지 예측을 했고, Binary classfication은 y값이 합격 또는 불합격인 딱 두가지의 클래스를 예측하였습니다.
이제는 더 나아가 여러개의 클래스를 예측하는 Multinomial classification을 배워봤습니다.
이것은 몇시간 공부 하고 몇 번 출석을 했을 때 점수, 또는 합격여부가 아닌 A~C같은 여러 등급 클래스를 예측 하는 분류 모델입니다.

쉽게 말해서 세개의 클래스가 있다면 같은 데이터 X를 세개의 분류기에 던져서 분류기마다 질문을 통해 결과값을 도출해 내는 방식입니다.

분류기1번은 C인지 아닌지, 분류기 2번은 B인지 아닌지, 마지막으로 분류기3번은 A인지 아닌지 총 3번의 질문을 통하여 A~C클래스 결과값을 도출해냅니다.

가설 설정

W1x1 +w2x2 + w3*x3 = y 부분을 행렬로 표현하면 이렇게 표현이 되는데 이 때 W1~W3가 분류기에 해당합니다.

그래서 각각 세번을 계산하는 것이 아닌 행렬로 이렇게 계산이 가능하여, 크게 W*X 로 표현할 수 있게 됐습니다.

Sigmoid의 문제점

그 후 에 각 분류기들에서 통과해 나온 값들은 Sigmoid함수를 거쳐서 결국 0과 1사이로 바운드된 값으로 최종 y값들을 0과 1로 분류를 하게 됩니다.

여기서 조심해야 할 점이 있습니다.

각 분류기를 통해서 나온 값들을 Sigmoid에 집어 넣기 전에 이런 값들이 나왔습니다.
이 것을 Sigmoid를 태우면

1, 1, 0으로 변환이 되는데 실제 정답은 a값인 첫 번 째 라벨만 1이 나와야 합니다.
이렇게 Sigmoid를 통해서 나온 값에서 1은 단 하나여야 합니다. 그래서 Sigmoid에서 바로 나온 값들은 Mulinomial classification에 사용하기엔 부적합합니다.

연구원들은 그럼 어떻게 하면 하나의 클래스에만 1을 띄울 수 있을까? 라는 고민을 하게 되었습니다.

가설 재설정 - Softmax의 도입

결국 Softmax라는 함수를 도입하게 됐습니다.

이 함수는 Sigmoid를 지나기 전 값인 2.0, 1.0, 0.1이란 값을 태워서 0.7, 0.2, 0.1 이라는 값으로 변환을 해줍니다.

이것은 모든 값들을 0과 1사이로 만들어줌과 동시에 전체 합이 1이 되도록 확률 정규화를 해줍니다. 우리는 이것을 통해 argmax 함수를 사용하여 가장 큰값만 1로 지정해주어 정답을 도출해낼 수 있게 됐습니다.
가장 큰 값만 1로 반환하고 나머지는 0으로 반환하는 이 방법론은 one-hot Encoding이라는 방법론이라고도 불립니다.

Cost 재설정 - Cross-Entropy의 도입

지난 시간에 배웠던 것 처럼 가설을 재설정 해주었으면 Cost도 뒤따라 재설정 해주어야 한다는 것을 배웠습니다.
그래서 지금과 같은 상황에서도 가설설정을 바꾸었으니 Cost도 변경해주어야 합니다.

Softmax와 같은 상황에 대해선 우리는 Cost Function은 Cross-Entropy를 사용하면 됩니다.
이 것도 Linear Regression을 사용해서 Binary classification을 하기 위해 정답과 가까워지면 cost는 작게, 정답과 멀어지면 cost값은 커지게 설계하면 됐습니다.

즉, Multi-class classification에 사용되는 cost function을 정리해보면
H(x)=Wx+b 의 값을 softmax function에 대입하여 나온 값을 Cross Entropy를 통하여 Loss(cost,오차)를 구하면 됩니다. 그래서 결국 함수는 부드러운 2차 곡선이 나오며 Gradient descent 방법론을 사용하게 됐습니다.


- 정리 -

처음에는 Linear Regression으로 점수를 예측 할 수 있었고,더 나아가 합격 여부를 예측하기 위해서 Linear Regression에 쓰이던 가설을 Sigmoid를 사용하여 재설정합니다. sigmoid를 사용하여 0~1사이로 Bound시킨 것이 바로 Logistic Regression이라는 것이었습니다. 그리고 정답에 가까울 때는 cost값이 작아지고, 정답에서 멀어질수록 cost값이 커지도록 디자인하기 위해 Logistic function을 통해 cost도 재설정 해주었습니다. 그리고 여기에서 Multi-class classification을 하기 위해선 가설 설정을 Softmax로 바꾸고, cost도 softmax를 통하여 나온 값을 Cross Entropy에 대입해 오차를 구하면 된다는 것을 배웠습니다.

profile
✏️세상의 모든 기록 ✏️

0개의 댓글