[TensorFlow] Lab-05-2 Logistic Regression 모두의 딥러닝 시즌 2 정리...
지난 포스팅에서 Logistic Regression에 대해 정리를 하였다. 이에 대해 간단하게 복습을 해보자면...
우리는 Logistic regression 중 binary 결과 값에 대한 예측을 진행하였다. 0 or 1로만 구분하는 것!!
초기에 우리의 H(x) = Wx와 같은 linear 한 hypothesis에서 출발하였다. 그런데 이런 H(x) = Wx 의 단점은 리턴하는 값이 실수 값이기 때문에 0, 1과 같은 binary 한 결과를 고르는 것에는 적합하지 않았다.
그래서 우리는 g(H(x))을 통해 실수 값으로 크게 분포되어 있던 값들을 0~1 사이의 값으로 압축하는 과정을 진행하였다.
이때의 g(z)을 sigmoid or logistic이라고 하였다.
그렇다면 직관적으로 "Weight를 학습한다" or "logistic classification을 학습시킨다"는 얘기는 무엇인지 살펴보자면 다음과 같다.
위의 그림처럼 ▲, ■ 를 구분하는 선을 찾아내는 일인 것이다. 즉, 이 둘을 구분하는 것을 학습하는 것이다.
참고
위의 그림은 2차원에서 선형 함수를 나타냈지만 여러 차원에서도 나타낼 수 있기 때문에 이를 하이퍼 플레인(hyper plane)이라고도 한다.
*하이퍼 플레인(hyper plane) : p차원 공간에서의 선형 함수
그런데 여기서 결과 값이 0과 1만이 아니라 학점과 같이 A, B, C, D, F와 같은 형태로 다양하게 가져야 한다면 어떻게 예측을 할 수 있을까?
그래서 우리는 위에서 배운 logsitic regression의 원리를 그대로 Multinomial classification에 적용해보고자 한다.
Multinomial classification
multinomial classification은 다항식 분류. 즉, 여러 개의 클래스가 있다는 뜻이다.
예제로 위와 같은 데이터가 주어졌다고 해보자.
위의 데이터에서 공부 시간(hours), 출석일(attendance), 성적(grade)이 feature로 주어졌다. 그리고 이 데이터를 그래프로 나타내었다.
여기서 우리는 우리가 배운 binary classification를 통해서도 위의 multinomial classification 구현이 가능하다.
위의 그림을 예로 들어보면 ⓐ의 경우 "A or not"으로 A이거나 A가 아니거나로 binary classification이 가능하다.
ⓑ의 경우 "B or not"으로 B이거나 아니거나로 binary classification이 가능하다.
마찬가지로 ⓒ 역시 "C or not"으로 C이거나 아니거나로 binary classification이 가능하다.
이처럼 3개의 각각 다른 classification을 갖고도 multinomial classification 구현이 가능하다.
그리고 이러한 것들을 도식화해서 나타내 본다면 아래 그림과 같을 것이다.
또한 위의 그림들을 실제로 구현할 땐 행렬을 사용하여 아래와 같이 표현을 한다.
이때 우리의 Hypothesis는 행렬 WX였고 3개가 있기 때문에 3개의 독립된 형태의 벡터를 갖고 계산을 진행한다.
하지만 이렇게 독립적으로 계산하면 복잡하고 구현할 때도 귀찮음과 복잡함이 동반된다...
그래서 이러한 귀찮음을 해결하기 위해 이것들을 하나로 합친 행렬 식이 바로 아래와 같은 식이다.
이런 식으로 하나의 벡터(행렬)로 처리하게 되면 바로 한 번에 계산이 가능하고 이것이 3개의 독립된 classification처럼 동작하게 된다.
Where is sigmoid?
이런 y hat 값들은 도식화된 그림에서의 z에 대응되는 데이터이기 때문에. 즉, 실수 값이기 때문에 다시 각각의 y hat에 sigmoid함수를 적용해야 한다. 하지만 각각의 y hat에 sigmoid 함수를 적용하는 것보다 보다 효율적인 방법이 존재한다.
이러한 방법에 대해서는 다음 포스팅에서 다루도록 하겠다.