본문 바로가기
AI

머신러닝 스터디 -03 Softmax Classification

by Wonryeol 2020. 3. 15.

SoftMax 를 이해하기 위해서는 Logistic 의 기본 개념을 이해 해야 한다. 

 

Logistic 함수는 Linear Regression 에서 파생된 개념 응용이라고 볼 수 있는데, 그 이유는 Logistic Regression을 통해 일정 사이의 수 ( 0 ~ 1 ) 의 값으로 Linear Regression 의 아웃풋값을 변형시켜 준 다음, 특정 기준을 통해 True 0 / False 1 로 변환 시켜 주는 것이기 때문이다. 

 

그 식을 sigmoid 함수라고 하는데, 

 

다음과 같다. 그리고  e 상단의 z 에 H(x) 값 ( WX + B ) 의 값을 대입한다. 

 

즉 이해해 보면 간단한 대입식이다.

 

하지만 더욱 깊게 다루고자 하는 것은  softmax classification 이다. 이는 특정 객체를 여러 군집중 가장 맞는 군집으로 배정시켜 주는( 예측하는 ), 일종의 sigmoid 함수의 변형판이다.

 

Softmax classification 은  단 두가지의 군집을 비교하던 Sigmoid 함수를 k개를 비교할 수 있게끔 일반화 시킨 함수라고 이해할 수 있다. 

 

좀 더 자세히 이해하기 위해 sigmoid 를 통합하여 이해해 보자, 

 

 

 

 

 

해당 데이터 군집이 있을때, 각 데이터 군집별 Linear Regression 을 형성 시켜 줘서 각각의 sigmoid 함수를 만들어 준다고 생각해보자.

 

 

 

 

 

 

그렇다면 해당 그림과 같은 일차선 그래프가 그려지며, 각 linear 마다 필요한 식이 만들어진다. 

 

 

 

 

 

 

그렇다면, 각 각 의 일차선 그래프 식은 각 군집의 특성에 맞는 것으로 표현을 했음으로, 타 군집의 데이터라면 sigmoid(Logistic) 을 돌렸을때 상당히 낮은 숫자가 나온다. 

 

하지만 이 sigmoid는 1대1의 군집단을 비교하는 것임으로 일 대 다, 다 대 다, 의 군집 상황을 비교해야 하는 경우 상당히 많은 계산 과정을 거쳐야 한다. 

그리하여 좀더 간단한 계산 절차를 위해, 이 softmax 알고리즘이 부각 된 것이다. 

 

일반화 공식은 

https://opentutorials.org/module/3653/22995 

 

logit, sigmoid, softmax의 관계 - 한 페이지 머신러닝

[logit, sigmoid, softmax의 관계] 이번에는 logit, sigmoid, softmax의 관계에 대해서 알아보겠습니다. 이것들이 서로 다 다른 개념같지만 서로 매우 밀접하게 관련이 있는데요. 그림의 가운데 부분에서 세 개념의 관계를 화살표로 엮어놓았습니다.   결론부터 일단 말씀드리면 - logit과 sigmoid는 서로 역함수 관계이고 - 2개 클래스를 대상으로 정의하던 logit을 K개의 클래스를 대상으로 일반화하면 softmax함수

opentutorials.org

해당 페이지에서 자세히 설명하였다.

 

이해를 하자면, 

일반적인 Linear에 맞는 특성을 보였을때의 값은 다음과 같다. Ya 의 예측값, Yb의 예측값, Yc의 예측값이다.

 

 

 

 

 

 

즉,

Softmax 을 돌림으로써, 해당 데이터가 얼마나 맞는 데이터라는 것을 0~1의 값으로 보여주는데, 이의 값을 모두 더하면 1과 같다

모두 더하면 1이며, 1 이하의 어떤값이라고 보면, 확률 개념과 동일시 하다.

그렇다, A가 특정 집단에 포함될 확률을 백터로 표현한 것이다. 

 

그렇다면, Softmax regression 을 돌렸을 경우, 해당 군집으로 보내 줄 확률 개념으로 결과값을 리턴하며, 해당 데이터가 확률이 가장 큰 값에 해당하는 특정 군집에 포함 될 것이라고 예측 가능하다.

 

이것이 Softmax Classification 의 적용 방법이다.

 

하지만 이를 머신러닝 시켜  Cost 값을 나타내고자 할 때에는 또 다른 이해가 필요하다. 

 

물론 크게 본다면, Softmax Regression 은 Logistic Regression 과 일맥상통 함으로 Cost값을 도출 해 내는 방법 또한 일맥상통하다.

 

 

cost 의 식이다.

 

여기서의 L 은 Label 의 값, 즉 (0 or 1) 의 값이다.

 

S 는 Softmax Classification 의 값(예측값)이며, 이는 확률로 나타내어 진다.

 

-Log 함수를 자세히 보면 , 

 

v-logX 그래프 

 

필수적이게 이해 해야 하는 것은 log 0 이 무한으로, log 1 이 0에 가깝게 간다는 뜻이다. 

 

이를 바탕으로 cost식을 분석하여 보면, 행렬이 몇가지 경우를 만들어 주고 있다는 것을 확인 가능한데,  밑과 같다.

 

 

해당 경우, 맞는 경우이다. 

1 과 Log1 이 곱해지기 때문에,  0과 곱해진다.  즉 옳은 답을 선택 했을 때는 cost 가 0이 된다. 

 

하지만 이 경우, 틀린경우이다. 

1과 log0 이 곱해지기 때문에 무한대와 곱해진다. 즉 틀린 답을 선택 했을 경우, 매우 큰 cost 값이 곱해진다는 것이다.

 

 

 

 

김성은 박사님은 해당 식이 같은 의미이다며 왜 같은지 그 의미를 분석 해봐라고 하셨는데 , 이는 다음과 같다 .

 

윗쪽의 식은 y값이 0이거나 1일때의 케이스를 분류하여, 케이스에 맞게 올바른 식을 제공 해 주기 위함인데, 이는 윗 상단의 해석 식과 같은 의미이다.  김성은 교수님의 의도는 케이스를 분류 하는 방법이 백터, 행렬에도 있다는 것을 보여주기 위함 아니였나 싶다. 단지 차이가 있다면 행렬식은 일반화 가능하여 k개로써 표현 가능하다는 점이다. 

 

 

댓글