본문 바로가기

DeepLearning Specialization(Andrew Ng)/Improving Deep Neural Networks

[Week 3] 3. Multi-class classification

728x90
Multi-class classification
1. Softmax Regression
2. Training a softmax classifier

 

1. Soft max Regression

 

 별건 아니고 Logistic Regression의 일반화 버젼이라고 이해하면 된다. Logistic Regression이 C(class) = 2 일 때의 경우라고 한다면, Muliti-class classification은 C가 3이상인 모든 경우를 일컫는다.  

 

 Logistic Regression에서는 단지 sigmoid 함수에 입력값을 넣으면 끝났지만, 이번에는 class의 개수가 여러개이므로 단순히 그렇게 계산되어서는 안된다. 캡쳐에서 확인할 수 있듯이 입력값이 class 개수만큼의 벡터로 나오므로, 우리가 산출해야할 값들은 데이터 X가 입력되었을 때, 각각의 class에 속할 확률이다. P(yi = 1 | X) 라고 표현될 수 있을 것이다.

 

 이를 위해 sigmoid가 아닌 soft max activation 함수를 outlayer에 활용해하는데, 식은 위와 같다. 자연상수 e를 이용하며, 복잡해보이지만 t 라는 임시변수를 만들고 각 요소를 전체 요소로 나누어 확률을 구한 것. 특징은 전체요소의 t 값을 더한 값이 각 요소에 활용이 되어야 하므로 벡터가 입력되고 벡터가 산출된다. sigmoid는 그냥 실수를 넣으면 실수를 산출하지만....

 

 당연히 C=2 인 경우, Logistic Regression과 같은 효과를 지닌다. 산출 유닛이 2개이지만, 이는 1일 확률 0이 확률로 나타낼 수 있으며 하나의 유닛으로 축약이 가능하기 때문. 실제로 C=2 일 때의 soft max activation 은 sigmoid랑 같게 된다. 증명은 교수님도 귀찮고 나도 귀찮으니 패스.


2. Training a softmax classifier

 

 sigmoid와 마찬가지로 soft max를 활용하는 multi classification의 경우에도 Loss 함수를 구하고 이를 통해 Back propagation을 해야한다. 

 

1) Loss function

 

 Loss 함수는 위와 같고 이를 이용해 구한 모든 example m에 대한 Cost function은 J(W,b)와 같다. Loss 함수를 잘 보면 y=1 일때의 y_hat과 실제 y(1)에 대한 Loss 값을 산출한다. 

 

2) Gradient Descent

 

 앞서 구한 Cost function에 대한 z의 편미분 값은 위와 같다. 이제 이를 통해 back propagation하면 끝.

 

왜 편미분값이 저런지는 Logistic 때와 마찬가지로 log를 미분하고 어쩌고 하면 되는데, 난 미분을 잘못하고 배우기 귀찮아서 그러려니 한다.

 궁금한 분은 Logistic Regression Back propagation 혹은 Soft max back propagation을 찾아보면 될 듯하다. 

 

 

 

 

질문과 비판은 언제나 환영입니다. 많이 꾸짖어 주십쇼.

 

 

 

 

 

 

 

728x90