지난해 겨울 텐서플로우 OpenCV 출간 이후 7개월 만에 2권에 해당하는 “Scikit PyTorch 머신러닝”을 출간하게 되었다. 각권이 450 페이지이므로 합 900 페이지에 달하는 내용이라 무슨 머신러닝을 공부하는데 분량이 왜 이렇게 많은가? 하고 의문을 가질 수도 있겠으나 그 내용이 튜토리얼성에 가까워 사실 그렇게 큰 부담은 없는 책이다. 물론 책 내부에 파이선 코드를 끼워 넣는 먹통 짓은 지금 세상에서는 할 필요가 없을 것이다. 해당 책의 머리말에 써둔 하이퍼링크 목차를 다운받으면 블로그를 직접 열어 볼 수 있으며 거기서 예제 코드를 다운 받을 수 있다.
1권에 해당하는 텐서플로우 OpenCV 머신러닝에서는 2017년 9월경부터 2018년 12월 사이에 머신러닝을 이해하고자 하는 필자의 열공(?) 내용을 담아 보았다면 2권에서는 1권에서 제기되었던 여러 내용들에 대해서 해답을 찾아가는 내용들을 꽤 많이 포함하였다. 2권이라고 해서 내용적으로 완전히 정리된 것은 아니기 때문에 다시 3권의 출발점이 될 수도 있을 것이다.
다소 아쉬운 점은 흥미 위주로 시작했던 1, 2권의 Softmax 관련 내용을 완전히 정리하지는 못했는데 이 그 이유는 R&D 영역으로 넘어갔기 때문이다. 2020년에는그 내용까지도 포함하여 출간할 계획이다.
본 서의 출간 목적은 작가들과 출판사가 염원하는 베스트셀러 화가 목표가 아니다. 사회적으로 인공지능(머신러닝)에 대한 이해 필요성이 점증하는 시기이며, 인공지능 분야의 발전 속도가 상당히 빠르기 때문에 그에 맞춰서 비전공자라 할지라도 머신러닝에 입문해 볼 수 있도록 경험과 생각을 공유해 보고자 하는 것이다.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
확률론에서 대단히 중요한 역할을 담당하는 랜덤 변수는 사실상 변수가 아님에 주목하자. 랜덤 변수라고 하는 것은 결과물을 포함하는 확률적 사건 즉 outcome을에 대해서 실수 값을 설정하는 또는 라벨 명을 설정해 주는 함수라 할 수 있는 것이다.
주사위 던지기 게임에서 던질 때 마다 나오는 outcome 에 종속적인 랜덤 변수를 X 라고 하자. 예를 들어 주사위를 던졌을 때에 주사위 면에 “1”이 나타나는 outcome을 자연스럽게 1 이라고 정하자. 한편 이상스럽긴 하지만 꼭 1 이라고 정할 필요는 없을 것이다. 주사위 면에 무슨 수가 나타나드라도 그 모든 outcome 에 대해서 0 이라고 정의하는 랜덤 변수 Y 가 있을 수 있을 것이며, 주사위 면에 나타나는 수가 “i”인 outcome에 대해서 “i”가 홀이면 2i를 “i”가 짝이면 –i를 매칭시키는 랜덤 변수 Z 가 있을 수도 있다. 요약해 보면 outcome 에 대해서 함수를 사용하여 숫자를 대응 시킬 수 있다는 점이다.
짝과 홀이 나오는 주사위 게임을 다시 생각해 보자. 주사위 면에 나타나는 숫자가 홀이면 “1”을 그렇지 않으면 “0”이 되는 랜덤 변수로 두자. 주사위를 던져서 짝이든 홀이든 나오게 되는 개개의 outcome 자체와 outcome 의 조합으로 이루어질 수 있는 모든 경우의 수에 해당하는 event도 랜덤하며 그에 대응되는 숫자가 “0”과 “1”이 섞인 결과를 얻을 수 있는데 이 또한 랜덤하다고 볼 수 있을 것이다. 이와 같이 “0”과 “1”을 사용한 이원적인 랜덤 변수를 인디케이터 변수(indicator variables)라고도 한다. 특히 개개의 경우닌 outcome 외에도 모든 가능한 경우를 나타내는 event 공간을 고려하는 이유는 전체 확률로 연결시키기 위함이다. 랜덤 변수 X가 특정 값 a를 취하게 될 확률을 각각 P(X,a) 또는 Px(a) 로 정의하자.
조건부 확률(Conditional Probability)에 관해서 알아보자. Y=b 가 주어진 상태에서의 X=a 가 되는 조건부 확률을 계산해 보자.
아래와 같이 달리 표현해 보자.
이 표현식들 중에서 P(X=a, Y=b) 는 만약 outcome Y=b에 대한 모든 경우의 수에 대해서 합산하게 되면 P(X=a) 로 환원된다. 아래의 마진 확률(marginal probaility) 관계식에서 확인이 가능하다. Val(Y)는 랜덤 변수 Y 가 줄 수 있는 값의 영역을 뜻한다.
주사위 게임에서 주사위가 던져진 후 홀수가 나왔다는 사실을 알고 있는 상태에서주사위 면이 “one” 이 될 확률 값 P(X=’one’| Y=1) 을 계산해 보자. 주사위를 던졌을 때 홀수가 나오면 인디케이터 변수 Y를 1로 두자. 이 1 은 주사위 면의 수 “one” 만이 아니라 홀수 즉 ‘one’, ‘three’, 또는 ‘five’ 가 나온 경우에 대한 라벨 값으로서 1 이다. 즉 P(Y=1)=(1/2)이 된다. P(X=’one’| Y=1)은 인디케이터 값이 1 일 때에 주사위 면이 ‘one’ 이 될 즉 조건부 확률로서 (1/3)이 된다. 따라서 마진 확률 P(X=‘one’, Y=1)=(1/3)(1/2)=(1/6) 이 된다. 즉 마진 확률 P(X=‘one’, Y=1)는 주사위를 던졌을 때에 그 나온 숫자가 홀수인지 아닌지 조건을 반드시 따져 보았을 때에 숫자 ‘one’ 이 나올 확률로서 (1/6) 이라는 의미이다.
주사위를 던졌을 때에 홀수든 짝수든 ‘one’ 이란 숫자가 나올 확률은 간단하게 (1/6)임을 알 수 있다. 그렇지만 나오는 숫자가 홀수일 것인지 짝수일 것인지 가능한 경우를 집어넣어 마진 확률을 따지기도 한다.
랜덤 변수의 확률 분포 들 간의 독립성(Independence)에 대해서 알아보자. 샘플 데이터들로부터 학습용 데이터를 뽑도록 하자. 샘플 데이터의 라벨 명이 i 라면 샘플 j 와는 독립이라 볼 수 있다. 실 예로서 MNIST 문제에서 샘플 데이타의 class 들이 0, 1, 2,∙∙∙,9 인데 그 각각은 서로 독립적이라 볼 수 있다.
이와 같이 2개의 랜덤 변수 X 와 Y가 있을 때 그 둘이 서로 독립적이라면 앞서 언급했던 조건부 확률식은 다음과 같이 간략하게 표현된다.
이 식을 사용하면 (2)식도 아래와 같이 간략화 된다.
조건부 확률 개념을 가지고 Bayesian Rule, Law, or Theorem 에 대해서 알아보자.
Bayesian Rule은 Venn Diagram을 가지고 쉽게 증명할 수 있다. 랜점 변수 X 와 Y 가 독립적이 아니라면 상호 겹치는 공통부분이 X∩Y 가 있기 마련이다. 즉 Y 조건이면서 X 와 공통인 씨앗모양 영역은 X 조건이면서 Y와 공통인 부분은 같음을 알 수 있다. 동시에 만족해야 한다는 ∩조건이 바로 조건부 확률의 작대기 ‘|‘에 해당하는 셈이다.
Bayesian Rule의 Classification 응용에서는 바로 이 겹치는 부분 즉 독립성이 훼손되는 영역을 최소화 해야 한다. 이어지는 GaussianNB 예제를 참조하기 바란다.
'머신러닝' 카테고리의 다른 글
1-18 Random Forest 계산 사례 (0) | 2019.08.05 |
---|---|
1-19 GaussianNB Classification (0) | 2019.08.05 |
Covariance 항을 포함한 Softmax Classifier의 XOR 로직 적용 (0) | 2019.08.03 |
Covariance 항을 포함한 Softmax MNIST 적용 (0) | 2019.08.02 |
※참고계산: iris_alpha_02.py (0) | 2019.07.29 |