지난해 겨울 텐서플로우 OpenCV 출간 이후 7개월 만에 2권에 해당하는 “Scikit PyTorch 머신러닝”을 출간하게 되었다. 각권이 450 페이지이므로 합 900 페이지에 달하는 내용이라 무슨 머신러닝을 공부하는데 분량이 왜 이렇게 많은가? 하고 의문을 가질 수도 있겠으나 그 내용이 튜토리얼성에 가까워 사실 그렇게 큰 부담은 없는 책이다. 물론 책 내부에 파이선 코드를 끼워 넣는 먹통 짓은 지금 세상에서는 할 필요가 없을 것이다. 해당 책의 머리말에 써둔 하이퍼링크 목차를 다운받으면 블로그를 직접 열어 볼 수 있으며 거기서 예제 코드를 다운 받을 수 있다.
1권에 해당하는 텐서플로우 OpenCV 머신러닝에서는 2017년 9월경부터 2018년 12월 사이에 머신러닝을 이해하고자 하는 필자의 열공(?) 내용을 담아 보았다면 2권에서는 1권에서 제기되었던 여러 내용들에 대해서 해답을 찾아가는 내용들을 꽤 많이 포함하였다. 2권이라고 해서 내용적으로 완전히 정리된 것은 아니기 때문에 다시 3권의 출발점이 될 수도 있을 것이다.
다소 아쉬운 점은 흥미 위주로 시작했던 1, 2권의 Softmax 관련 내용을 완전히 정리하지는 못했는데 이 그 이유는 R&D 영역으로 넘어갔기 때문이다. 2020년에는그 내용까지도 포함하여 출간할 계획이다.
본 서의 출간 목적은 작가들과 출판사가 염원하는 베스트셀러 화가 목표가 아니다. 사회적으로 인공지능(머신러닝)에 대한 이해 필요성이 점증하는 시기이며, 인공지능 분야의 발전 속도가 상당히 빠르기 때문에 그에 맞춰서 비전공자라 할지라도 머신러닝에 입문해 볼 수 있도록 경험과 생각을 공유해 보고자 하는 것이다.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Fermi-Dirac 입자들의 확률 분포를 구해보자. 동일한(identical) ni개의 입자들이 에너지 레벨을
Ei 로 가정하자. 에너지 레벨 Ei 는 다시 구별이 가능한 서브레벨
gi (degeneracy)를 가지며 각 서브 레벨은 최대 1개의 입자를 포함하거나 비어 있을 수 있다. 에너지 레벨 Ei 는 크기만을 지정하는 스칼라 양이므로 설사 에너지 레벨이 같다고 해도 입자들의 운동량은 벡터이므로 운동 방향이나 회전 방향이 서로 다를 수 있으므로 이들이 속해 있는 서브레벨은 서로 구별이 가능하다.
에너지 레벨이 Ei 에 해당하는 gi 개의 서브레벨에 ni 개의 입자들이 각 서브레벨 별로 최대 1개의 입자를 포함하거나 비어 있게 될 경우의 수를 계산해 보자.
에너지 레벨 Ei 를 사용하여 전체 에너지 레벨의 경우의 수를 계산해 보자.
Boltzman 확률분포 유도과정을 따라 W가 최대값을 가지게 되는 즉 가장 probale 한 물리적 상태를 찾아보자. 통계약학의 Microcanonical Ensemble 에 해당하는입자분포 ni 는 2개의 구속조건(Constraints)을 만족시켜야 한다. 즉 전체 입자의 수는 N 이며 전체 에너지 값이 일정한 값 E 라는 조건을 만족해야 한다.
한편 볼츠만의 엔트로피는 경우의 수 W에 대한 자연로그를 취하고 볼츠만 비례상수 kB 를 곱한 형태로 주어진다.
전체 입자수 및 전체 에너지가 일정하다는 조건들을 라그랑즈 승수 기법을 적용하여 다음과 같이 하나의 식으로 표현하고
볼츠만의 엔트로피를 최대화 할 수 있도록 즉 ni 에 대해서 편미분하여 그 결과를 0 으로 두자. 이 과정에서 큰 수의 Factorial 값들에 대해서 Stirling 의 근사공식 적용이 이루어지며 다음과 같은 형태의 입자 분포 식이 얻어진다.
각 서브레벨별 평균 입자 수는 다음과 같이 표현된다.
T는 절대온도 K 이다. μ는 화학적 포텐셜(Chemical Potential) 또는 Fermi level 이라고도 한다.
만약 특정 소재 속의 입자의 에너지 레벨이 Fermi level 값에 해당하는 μ 라면 pi 값이 (1/2)임을 알 수 있다. 한편 에너지 레벨의 값이 Fermi level 값 μ 보다 훨씬 크다면 pi 값이 1.0에 가까워지며 반면에 에너지 레벨의 값이 Fermi level 값 μ 보다 훨씬 작다면 pi 값은 0.0에 가까워진다. 즉 pi 는 확률밀도 함수가 아니라 likelyhood 함수에 해당하며 머신러닝에서는 랜덤하게 계산되는 hypothesis 값에 대하여 카테고리를 부여하기 위하여 다음과 같이 Sigmoid activation 함수로 표현할 수 있다. Hi 는 랜덤 넘버를 사용하여 계산되기 때문에 입자의 에너지처럼 항상 양의 값이 아니며 ∓값을 가질 수 있다.
뉴론에서 출력하는 값인 hypothesis 가 0.5 이상이면 즉 카테고리가 “True” 이거나 “1” 이며 0.5 이하이면 카테고리가 “False” 이거나 “0” 이 되므로 이원 분류(Binary Classification)에 사용이 가능하다.
'머신러닝' 카테고리의 다른 글
6-29 RNN과 CNN을 결합한 Hybrid 알고리듬에 의한 MNIST 머신러닝 (0) | 2019.09.22 |
---|---|
6-28 RNN 알고리듬에 의한 MNIST 머신러닝 (0) | 2019.09.22 |
6-24 Keras LSTM에 의한 Airline Market RNN 오픈소스 튜토리얼(2) (0) | 2019.09.06 |
6-23 Keras LSTM에 의한 Airline Market RNN 오픈소스 튜토리얼(1) (0) | 2019.09.04 |
3-2 Covariance Softmax 뉴럴 네트워크 적용MNIST 문자 인식률 계산 (0) | 2019.08.26 |