14. Softmax Regression- 기본 개념 소개 (lec 06-1)
Logistic Regression을 부르는 다른 이름은 binary classification이다. 데이터를 1과 0의 두 가지 그룹으로 나누기 위해 사용하는 모델이다. softmax는 데이터를 2개 이상의 그룹으로 나누기 위해 binary classification을 확장한 모델이다.
softmax라는 용어 때문에 많이 헷갈렸었다. 통계에서 가장 큰 값을 찾는 개념을 hardmax라고 부른다. softmax는 새로운 조건으로 가장 큰 값을 찾는 개념을 말한다. 일반적으로는 큰 숫자를 찾는 것이 hardmax에 해당하고, 숫자를 거꾸로 뒤집었을 경우에 대해 가장 큰 숫자를 찾는다면 softmax에 해당한다. 여기서는 우리가 알고 있는 큰 숫자를 찾는 것이 아니라는 뜻으로 쓰인다.
앞에서 배운 logistic regression을 보여주는 그림이다. 좌표상에 표현된 데이터를 2개의 그룹으로 나누는 decision boundary 직선이 인상적이다. 여기서 중요한 것은 Wx의 결과로 z가 나오고, S로 표현되는 sigmoid에 전달되고 최종적으로 Y를 예측한다. Y에 모자를 씌운 Y hat은 Y를 예측한 값을 의미한다.
여러 개의 label을 갖는 multinomial classification을 어떻게 구현할 수 있는지 보여주는 그림이다. 좌표상에 A, B, C의 3개의 그룹이 있고, 오른쪽 그림에서 binary classification에서 사용한 decision boundary를 여러 개 그려 놓았다.
이 원리는 프로그래밍에서 사용하는 if문과 완전히 동일하다. if문으로는 2개 중에 하나만 선택할 수 있는데, 이걸 여러 번 늘어 놓아서 다중 선택을 구현하게 된다. if문과 똑같이 A이거나 아니거나, B이거나 아니거나, C이거나 아니거나와 같은 방식으로 걸러내게 된다.
여러 개로 분류를 하기 위해서는 그림 오른쪽에 있는 것처럼 여러 개의 binary classification이 필요하다는 말씀을 하셨다.
binary classification을 구현하려면, 그림 왼쪽에 있는 것처럼 각각 행렬 1개씩을 요구한다. 3개의 binary classification이 필요하니까, 이걸 3x3 행렬로 결합하는 그림이 오른쪽에 있다. 복잡해졌다고 생각할 수 있지만, 프로그래밍에서는 변수 1개로 처리할 수 있기 때문에 당연히 결합해야 한다.
이번 그림에서 나중까지 잘못 알고 있었던 사실이 하나 있다. 왜 그랬는지 여러 번 반복해야 하는 것은 W가 아니라 x라고 생각했었다. 3x3 행렬에는 x가 들어가야 한다고 생각했다.
softmax는 binary classification을 여러 번 결합한 결과다. 예측 결과가 A, B, C 중의 하나가 되어야 한다면, 동일한 x에 대해 A가 될 확률, B가 될 확률, C가 될 확률을 모두 구해야 한다. x는 3번 사용되지만, W는 A, B, C에 대해서 한 번씩 필요하니까 3번 반복된다. 그래서, W는 예측해야 하는 숫자만큼 필요하게 된다. 10개 중에서 예측한다면 10개의 W가 나와야 한다.
반면 x는 위의 그림만 놓고 보면, 1개밖에 없는 것처럼 보일 수 있다. 나중에는 100개 또는 1,000개 정도로 데이터의 갯수가 커지면, x 또한 행렬이 된다. 물론 지금도 행렬이긴 하지만, 3행 1열이라서 행렬같은 느낌은 없다.
행렬 곱셈을 보여주고 있다. 행렬 A와 행렬 B를 곱하면, A의 행과 B의 열을 곱하게 되어 있다. 그래서, 이번 행렬 곱셈의 결과는 3행 1열의 행렬이 만들어 진다.
binary classification을 여러 번 적용해서 구한 행렬에 대해 sigmoid를 적용하는 곳은 어디인지 묻고 있다. 이 부분은 다음 글에서 살펴본다.
'딥러닝_김성훈교수님' 카테고리의 다른 글
16. TensorFlow로 Softmax Classification의 구현하기 (lab 06) (0) | 2016.07.27 |
---|---|
15. Softmax classifier 의 cost함수 (lec 06-2) (0) | 2016.07.27 |
13. 파이썬으로 Logistic Regression 직접 구현 (0) | 2016.07.27 |
12. TensorFlow로 Logistic Classification의 구현하기 (lab 05) (0) | 2016.07.27 |
11. Logistic Regression의 cost 함수 설명 (lec 05-2) (0) | 2016.07.27 |