Multinomial Classification 기본적인 작동 원리
익숙했던 “맞다/아니다”와 같은 이진분류 회귀 기법의 연장선인 다중 분류에 대해 다뤄보려고 한다.
가장 큰 차이점은 “맞다/아니다”가 아닌, [일번, 이번, 삼번] 등과 같이 선택지가 세개 이상인 것으로 바뀐점이다.
이렇게만 보면 “음 그렇구나” 싶을 수 있겠지만, 내용적인 측면에서 상당히 복잡해진다.
사용했던 loss 함수, 그리고 분류 선택지가 추가될수록 logistic regression의 개수, 행렬곱을 위한 가중치 및 바이아스의 행렬/배열 사이즈 변화 등등 많은 부분에서 변화가 일어난다.
간단하게 그림으로 살펴보자!
그림에서 볼 수 있는 가장 큰 차이점은 데이터를 가르는 선이 한개에서 세개가 되었다는 부분이다.
시험으로 예를 들어보자면, 최초 binary logistic regression같은 경우에는 [ 합격 / 불합격 ] 여부로만 판단했다면 그 기준을 가르는 선이 하나 필요했다.
하지만 multinomial logistic부터는 성적이 [ A / B / C ] 로 나뉘며, A인지 아닌지 판단하고, B인지 아닌지 판단하며 마지막으로 C인지 아닌지 구분해서 알려준다. 그렇기 때문에 위 그림에선 세개의 선이 필요했다.
이렇듯 class가 하나씩 증가할 때마다 복잡도가 증가한다는 것을 대충 알수 있으리라 믿는다.
위 예제를 다시한번 사용하며 말해보자면, 마찬가지로 매트릭스 연산에서도 조금은 복잡해지는데.. 기존에는 연산을 한번만 하면 되었다면, 같은 연산을 다른 가중치로 넣어 두번 더 하게 된다. A, B, C 각각 한번씩. (왜냐고? 로지스틱 리그레션을 세번하니깐!). 그렇기 때문에 최종 결과 매트릭스의 사이즈가 더 커진다는 것을 인지하도록 하자.
logistic의 sigmoid 또한 모습이 바뀌게 되는데, 기존의
$ y = \frac{1}{1 + e^{-(WX+b)}} $ 에서 $ f(x_i) = \frac{e^{x_i}}{\sum^K_{k=1}e^{x_k}} $ 로 바뀌게 된다.
이를 softmax라고 부른다.
이에 따라 loss 함수의 모양도 조금 바뀌게 되는데 cross entropy라는 이름은 동일하게 쓰인다.
마지막으로 label의 형태를 바꿔주어야 한다.
observation | label 값 | ……………… | 바뀐 label 값 [ A B C] |
---|---|---|---|
1 | A | ……………… | [ 1 0 0 ] |
2 | B | ……………… | [ 0 1 0 ] |
3 | A | ……………… | [ 1 0 0 ] |
4 | C | ……………… | [ 0 0 1 ] |
5 | C | ……………… | [ 0 0 1 ] |
… | …. | ……………… | … |
이렇게 [ A, B, C] 라는 형태로 label의 값을 받게 된다. 쉽게 생각하면 기존에 숫자 또는 문자였던 값이 리스트 형태로 바뀌어서 그 문자 또는 숫자가 위치한 곳에 1이라는 값이 들어간다고 생각하면 쉽다.
이를 테면,
1
2
3
4
5
6
7
[A B C] 가 있다.
예제: A가 정답임 --> [True False False]
이걸 숫자로 치환하면 --> [1 0 0]
예제: C가 정답임 --> [False False True]
이걸 숫자로 치환하면 --> [0 0 1]
이런 식으로 생각하면 도움이 되지 않을까 싶다.
아무쪼록 이런 원리를 인지하고 다중회귀기법을 배우길 바란다.
그럼 끄읏.
👋