머신러닝

Multi Hot Code 알고리듬

coding art 2019. 4. 30. 20:25
728x90


파이선 코딩을 배우는 초보자도 머신 러닝에 독학으로 한번 도전해 보자.

왜냐구요? 그다지 어렵지 않으니까요!

머신 러닝을 배우려는 파이선 코딩 초보자들이 가지게 될 확률이 높은 의문점들을

하나하나 찾아내어 실제 풀어보고 결과를 확인해볼 수 있는 머신 러닝!

인터넷 교보문고에서 450페이지19900원에 판매중입니다.











________________________________________________________________________________________________________________________




DecisionTreeClassifier 적용에 따른 단계별 분기점(split)에서 엔트로피 또는 Gini impurity 가 중요한 역할을 한다. 즉 각 단계의 샘플들의 구성비에 의해서 해당 단계의 엔트로피나 Gini impurity를 계산할 수 있으며 아울러 이들을 분류하기 위한 예를 들면 binary question 에 따라서 실제 분류가 이루어진 후에 샘플별로 조건부 확률니 계산되면 아울러 조건부 엔트로피나 Gini impurity 가 쉽게 계산될 수 있다. 이것이 Decision Tree 의 논리이다.

 

반면에 MNIST 수기 문자 판독을 위한 Softmax에서 사용되는 확률적 논리는 단순한 binary question Yes/No 판단에 머무는 것이 아니라 적어도 10가지 종류 즉 10가지 class의 가능성에 대해서 확률을 계산해 보게 된다.



MNIST 문제에서의 큰 비중을 차지하는 전제 조건은 수기 문자 분류를 위한 학습과정에서 문자별로 동일한 수의 샘플들을 사용하며 아울러 10비트로 이루어진 One Hot Code 의 특정 비트 값을 1 로 두어 학습과정에서 웨이트를 계산한다는 점이다. 특정 문자라는 조건부 확률 차원에서 보면 테스트용 문자 머신 러닝 시 해당 엔트로피는 특정 비트에서 최대 봉우리 확률 값을 가져야 하고 나머지 비트들에서의 확률 값은 아주 작은 값으로 억제 되어야 하는데 다시 말하자면 확률 분포 곡선에서 골짜기 부분이 되는 셈이다. 이는 엔트로피 값이 최소화 되어야 한다는 또는 Gini impurity가 최소화 되어야 한다는 조건과 유사하게 맞아 떨어지게 된다.

 

MNIST에서 10종의 class 별 수기문자를 판독하는 머신 러닝 학습과정에서 사용하는 One Hot Code의 특징을 관찰해 보면 특정 비트가 1 이 될 즉 특정 class 가 될 확률이 0.1(1/10) 로서 일정함을 알 수 있다. Code들 간의 비교 차원에서 보면 One Hot Code 는 엔트로피 값이 최대인 형태를 취하고 있는 셈이다. 즉 확률 통계학적 처리과정에서 동일한 비율로 수많은 샘플들을 취하여 신뢰성 있는 확률적 결과를 얻어내고자 함이다.

 

반면에 Shannon number of bits를 계산하기 위한 사례를 살펴보자.

아래와 같이 균일한 확률 분포를 가지는 예에서 이진법적인 2비트 체계로 엔코딩 할 수 있음을 알 수 있다.



한편 확률이 균일하지 않은 다음의 사례에서는 비트 수가 일정하지 않은 2진법적인 체계로 엔코딩 할 수 있음을 알 수 있다.


Shannon 의 사례에 비추어 보면 MNIST One Hot Code 는 이벤트 별 확률이 0.1(1/10) 으로 동일하되 One Hot Code 10비트 체계를 가짐을 쉽게 알 수 있다.

 

이러한 One Hot Code 2진법적인 체계를 결합한 아래의 Multi Hot Code 알고리듬 체계를 고려해 보자.


비트 수는 4 이지만 2진 수 값 “1” 대신에 십진 수인 “1”“(1/2)”, “(1/3)” 이 사용되었으며 각 코드에 있어서 합은 확률 1.0 을 만족 시킨다. 중요한 점은 On Hot Code에서 10개의 확률 요소를 사용함에 비하여 단지 4개의 확률 요소로 10종의 class를 코드화 할 수 있다는 점이다.

 

MNIST10비트를 사용하는 One Hot Code에서 균일한 확률 분포 특성에 비하면 사용하는 비트 수는 4 로 줄었지만 각 비트 위치에서의 확률 값은 위 표에서처럼 분포된 특성을 보여주게 된다.

 

머신 러닝에서 잘 알려진 MNIST 수기 문자 판독을 비롯하여 많은 경우 One Hot Code 가 사용되고 있음이 사실이지만 여기서 새로이 소개하는 Multi Hot Code 는 실수 값이 확률 요소를 사용하면서 비트 수를 크게 줄이는 효과가 있다.

 

그렇다면 학습과 테스트가 이루어져야 하는 머신 러닝 문제에서 Multi Hot Code 사례에 따른 TensorFlow 예제 문제를 다음 회에 다루어 보도록 하자.