머신러닝

Application of Statistical softmax To TensorFlow Iris flower data classification

coding art 2019. 7. 23. 15:40
728x90



지난해 겨울 텐서플로우 OpenCV 출간 이후 7개월 만에 2권에 해당하는 “Scikit PyTorch 머신러닝을 출간하게 되었다. 각권이 450 페이지이므로 합 900 페이지에 달하는 내용이라 무슨 머신러닝을 공부하는데 분량이 왜 이렇게 많은가? 하고 의문을 가질 수도 있겠으나 그 내용이 튜토리얼성에 가까워 사실 그렇게 큰 부담은 없는 책이다. 물론 책 내부에 파이선 코드를 끼워 넣는 먹통 짓은 지금 세상에서는 할 필요가 없을 것이다. 해당 책의 머리말에 써둔 하이퍼링크 목차를 다운받으면 블로그를 직접 열어 볼 수 있으며 거기서 예제 코드를 다운 받을 수 있다.


 

1권에 해당하는 텐서플로우 OpenCV 머신러닝에서는 20179월경부터 201812월 사이에 머신러닝을 이해하고자 하는 필자의 열공(?) 내용을 담아 보았다면 2권에서는 1권에서 제기되었던 여러 내용들에 대해서 해답을 찾아가는 내용들을 꽤 많이 포함하였다. 2권이라고 해서 내용적으로 완전히 정리된 것은 아니기 때문에 다시 3권의 출발점이 될 수도 있을 것이다.

 

다소 아쉬운 점은 흥미 위주로 시작했던 1, 2권의 Softmax 관련 내용을 완전히 정리하지는 못했는데 이 그 이유는 R&D 영역으로 넘어갔기 때문이다. 2020년에는그 내용까지도 포함하여 출간할 계획이다.

 

본 서의 출간 목적은 작가들과 출판사가 염원하는 베스트셀러 화가 목표가 아니다. 사회적으로 인공지능(머신러닝)에 대한 이해 필요성이 점증하는 시기이며, 인공지능 분야의 발전 속도가 상당히 빠르기 때문에 그에 맞춰서 비전공자라 할지라도 머신러닝에 입문해 볼 수 있도록 경험과 생각을 공유해 보고자 하는 것이다.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


뉴럴 네트워크 텐서플로우에 의한 Iris data classification 에 통계학적 Softmax 기법을 적용해 보자. Softmax의 엑스포넨트에 포함시켜야 할 항은 linear classifier에 더해 Covariance(공분산) classifier 항을 추가하기로 하며 각각 서로 독립적으로 랜덤하게 설정되는 웨이트들이 다음과 같이 사용된다.


위 식에서 input pixel data 와 웨이트 벡터와의 곱은 매트릭스 곱하기 연산인 반면에 연산자 는 리스트 데이터 간의 곱하기를 뜻한다. Hypothesis는 아래와 같이 함수 model을 사용하여 처리하되 기존의 뉴럴 네트워크 모델에서 웨이트와 바이아스가 각각 2벌씩 합계 4벌의 랜덤 넘버가 사용되는 반면에 여기서는 각각 3벌 씩 합계 6벌의 랜덤 넘버가 사용되었다

이 코드(iris_alpha_01.py)에서 특기할만한 사실은 함수 model에서 처음에 한번 Covariance 처리 루틴을 사용하였다.



텐서플로우 코드 실행에 필요한 학습용 데이타는 각 종별로 40개씩이며 테스트용 데이타는 그 나머지인 10개씩으로 구성한다. validation 0.2 20% 가 사용되는 셈이다. 기존의 Softmax를 사용하는 iris_01.py 실행 결과 초기 랜덤한 웨이트 및 바이아스 설정의 영향을 받아 Accuracy는 평균 98.3 이며 최대 99.1 최소 97.5 사이 값을 가진다.


반면에 Covariance 인덱스를 고려하는 Softmax 모델은 거의 Accuracy 1.0이 된다. 이미 1-0 에서 Scikit-learn 라이브러리 모듈 편에서도 벤치마킹이 있었지만 LDA97.5%, SVM이 최고 99.2% 인 점을 비교해 보면 놀라운 결과를 보여준다.


그밖에 100% classification 결과를 보여주는 기법으로는 5-23LDA+every classifier 기법을 참조해 보기 바란다.

5-23 LDA+Every Classifier leads to 100% Accuracy!

https://steemit.com/kr/@codingart/5-23-lda-every-classifier-leads-to-100-accuracy


 iris_alpha_01.py 텐서플로우 코드는 곧 출간 예정인 "파이선 코딩 초보자를 위한 Scikit PyTorch 머신 러닝" 본문에 기재된 url 주소로 직접 연결하여 다운받아야 한다.