다변수 분류(Multinomial classification)
로지스틱 회귀 복습
입력값
에 대하여 계산하는 유닛 가 weight를 가지고 계산해 를 출력한다.결과
를 sigmoid 함수를 통과시켜 0과 1사이의 값 으로 변환한다. : 실제 데이터 값 : 학습을 통한 예측 값
로지스틱 회귀 분류가 하는 역할
아래 그림과 같이
과 에 대하여 네모와 가위표를 분류한다는 것은 네모와 가위표를 분류하는 선을 찾아낸다는 것을 의미한다.
다변수 분류
- 다변수라는 것은 3개 이상으로 분류할 수 있는 데이터가 있다는 것이다.
예를 들어, 아래 그림과 같이 공부한 시간(
)과 수업에 참석한 횟수( )에 따라 3종류의 학점( )를 준다고 가정하고 그래프로 표시하면 오른쪽 그림과 같이 될 것이다.
이진 분류(binary classification)만 가지고도 다변수 데이터를 분류할 수 있다.
이거나 가 아니거나 이거나 가 아니거나 이거나 가 아니거나
- 이진 분류만 가지고도 다변수 데이터를 분류가 가능
각각의 분류기(classifier)
와 , 를 실제로 구현할 때에는 다음과 같이 행렬로 구현을 한다.
- 위의 3개의 분류기, 즉 3개의 독립된 벡터를 가지고 계산을 해야하는데, 이렇게 하면 계산과 구현이 복잡하다.
- 그래서 weight 벡터를 하나로 합쳐서 계산하는 방법을 생각해볼 수 있다.
다음과 같이 계산한 결과
와 , 는 우리가 예측한 결과가 된다.- 3개의 독립된 벡터를 한번의 계산으로 각각의 값을 구할 수 있다.
- 3개의 가설값
와 , 은 우리가 원하는 결과가 아니다.
우리는 예측값이 0과 1 사이의 값을 가지며 예측값이 합이 1이 되는 확률분포가 되기를 원한다. 이런 결과를 나오게 하는 함수가 softmax 함수이다.
SOFTMAX 함수
개의 값을 softmax 함수에 넣으면 우리가 원하는 2개의 조건을 만족하는 값을 만들어줘 확률로 볼 수 있게 해준다.
각각의 값
는 을 만족한다.
- 다음과 같이 예측값이 나올 확률을 구할 수가 있다.
- 그러나 실제로 우리는 위의 예처럼 3개의 값이 아니라 1개의 값을 예측하도록 해야 한다. 즉, 가장 높은 확률을 갖는 값 1개를 예측값으로 만들어야 하는데 이를 'ONE-HOT' 인코딩이라고 한다.
- TensorFlow에서는 one-hot 인코딩을 위해 argmax() 함수를 지원한다.
- 이제 예측하는 모델 Hypothesis는 완성이 되었다.
다변수 분류에서의 Cost 함수
- 예측한 값과 실제의 값이 얼마나 차이가 나는지를 알 수 있는 cost 함수를 설계해야 한다.
- cost 함수를 최소화하도록 해서 학습 알고리즘을 완성시킬 수 있다.
- 다변수 분류에서는 Cost 함수로 CROSS-ENTROPY를 사용한다.
- 아래 그림에서
는 실제의 값인 이고, 는 우리가 예측한 값 이다.
- 이 때
와 의 차이(거리)는 는 다음 식(1)과 같은 CROSS-ENTROPY로 표현할 수 있다.
- CROSS-ENTROPY를 풀어쓰면 식 (2)와 같이 된다. 여기서
는 벡터 원소별 곱셈(element-wise product)을 의미한다.
- 식 (2)에서
는 아래 그림과 같이 일 때, 의 값을 가진다.
- 각각의 경우에 대하여 CROSS-ENTROPY를 계산해보자.
- 실제의 값이
일 때
인 경우에는 이 작아져야 한다.
인 경우에는 이 커져야 한다.
- 실제의 값이
일 때
인 경우에는 이 작아져야 한다.
인 경우에는 이 커져야 한다.
Logistic Cost 함수와 Cross-ENTROPY
- Logistic Cost 함수와 Cross-Entropy는 식 (3)과 같이 서로 같다.
- 이유는 같은 값을 예측할 때에는 0이고, 다른 값을 예측할 때에는
이기 때문이다.
- 학습 데이터가 여러 개인 경우의 Cost(Loss) 함수는 식 (4)와 같다.
Cost(Loss) 함수의 최소값을 찾는 방법
- 이전과 마찬가지로 경사하강법(Gradient Descent Algorithm)을 사용한다.
- 그림과 같이 곡선의 경사면을 따라 가면서 최소값을 찾을 수 있다.
- 어떤 점에서의 기울기는 미분계수를 구함으로써 계산할 수 있다.
- 경사면을 따라 내려가는 간격은
이며 미분계수는 식 (5)와 같다.
'모두를 위한 머신러닝' 카테고리의 다른 글
Lesson 6 : Application & Tips (0) | 2018.04.04 |
---|---|
Lesson 5 연습 : Multinomial Classification: Softmax classification (0) | 2017.05.22 |
Lesson 4 연습 : Logisitc Regression Classification (0) | 2017.04.19 |
Lesson 4 : Logistic (regression) classification (0) | 2017.04.19 |
Lesson 3 연습 : Multi-variable Linear Regression (1) | 2017.04.16 |