오늘은 매우 심히 얇고 넓게 가볼 셈임
제목이 거창한데
[확률, 통계, 머신러닝, 프로그래밍, 오토마타, 수학(논리) 의 관계] 임
각각이 다 한 덩어리의 분야 인데
다른거 같아도 사실은 이리저리 매우 얽혀 있는 것인데
그래서 통합적인 뷰(view)를 제시 를 해보려 함
특히 머신러닝을 한다는데 자꾸 통계니 공부를 하라고 닦달을 하는 이유를 알아봄
잘 봐보길
말이 되는가 안 되는가
그림에는 총 여덟 덩어리의 항목이 있음
==== [Induction] ====
정 가운데를 세로로 뚝 가르면
왼쪽은 귀납 (induction)의 영역임
오른쪽은 연역 (deduction)의 영역임
귀납과 연역이 무엇인지는 예전에 몇 번 말씀을 드렸는데,
이 링크를 참조하셔도 좋겠음
https://opentutorials.org/module/3653/22098
왼쪽의 귀납 (induction) 구역에서는
non deterministic (결정론적)이지 않은 논리를 다룸
뭐냐면 아무도 정확한 고정값은 모른다는 말임.
이럴수도 있고 저럴 수도 있는 상황에서 가능성을 계산함
반면에 오른쪽의 연역 (deduction) 구역에서는
deterministic (결정론적)인 논리를 다룸
뭔 말이냐면
규칙 그대로 실행해서 답도 딱 예상한 정확히 고대로가 나온다는 뜻임
오른쪽의 연역 구역이 전통적인 컴퓨터 가 작동하는 방식의 근간이고
왼쪽의 귀납 구역이 최신의 머신러닝 이 작동하는 방식의 근간임
==== [Theory/Application] ====
왼쪽 벽에는 확률 (probability)과 통계 (statistics)가 있음
오른쪽 벽에는 오토마타 (automata)와 수학 (특히 Logic)이 있음
이 네 가지 덩어리는 이론 (theory) 부분임
가운데 네 덩어리는 응용 혹은 적용 (application)의 영역임
==== [Model Building / Running] ====
이번에는 정 가운데서 가로로 뚝 잘라봄
그러면 위쪽 네 덩어리는 도구를 설계 (model building)하는 영역이고
아래쪽 네 덩어리는 설계된 도구를 실행 (Running 혹은 execution) 하는 영역이 되겠음
==== [Probability] ====
자 그러면 확률 (probability)부터 느긋이 살펴봄
그림의 작은 화살표의 번호를 따라서 이야기를 진행함
확률이란 무엇임
확신할 수 있는 비율 이라고 그랬음
P(red|A)는, A통에서 red공을 뽑을 확률임
공 3개중에 빨간것이 2개 이므로 확률은 2/3 이 되겠음
==== [Statistics] ====
그러면 통계란 무엇임
개별 낱개 말고
집달을 통쳐서 계(셈 하는) 하는 것임
이것을 참고하길
https://opentutorials.org/module/3653/22884
P(A|red)는, 빨간공을 손에 쥐고 있을 때,
그 빨간공이 A통에서 나온 것일 가능성임
우도(likelihood)라고 부름
확률과 우도는 서로 반대의 관계인데,
자세한 흑막은 이것을 참고하길
https://opentutorials.org/module/3653/22860
확률도 통계도, 결론이 확실하지 않고 항상 어느 정도의 가능성만을 말해줌
기대한 일과 다른 일이 발생하는 사건도 종종 일어남
뭔가가 높은 확률로 일어날 수는 있지만
100% 확신하는 경우는 별로 없고 항상 예외를 껴안고 다님
그래서 사건을 관찰해갖고 (완벽하지 않지만) 가장 그럼직한 결론을 내는걸로 만족할 수밖에 없는
귀납(induction)적인 논리를 만들수가 있음
==== [Machine Learning: Training] ====
자 이제 머신러닝 이야기를 해보는데
머신러닝 이야기를 하면서 꼭 통계공부를 하세요 그거는 뭔 말이냐면
데이터를 가지고 머신러닝 모델을 훈련(training)시킨다는 행위가
데이터를 가지고 우도(likelihood)를 계산하라는 말이기 때문임
머신러닝 한다는 것은
통계 내주는 기계를 만들자 하는 것임
머신러닝 모델은,
통계모델에서 알려진 여러가지 분포를 꾸어와서 기본 세팅을 한 다음에
데이터를 거따가 끼워맞춰가면서 세부 세팅을 정밀하게 튜닝하는 식으로 배움(learning)
기타 줄 튜닝하는거나 비슷하다고 보시면 됨
그것을 유식한 말씀으로 파라미터 튜닝(parameter tuning)이라고 부름
==== [Machine Learning: Test] ====
튜닝이 된 모델은, 튜닝이 잘 되었나 안 되었나 테스트를 하는데
이전에 본적 없던 데이터를 모델에 집어넣고 내놓는 답을 봐서
얘가 답을 잘 맞추나 못맞추나 검사를 해서 성능을 알아봄
그 과정을 test 과정이라고 부름
우리는 지금까지 8덩어리 색깔 구역 중
좌측 네 구역을 탐방했음
이제는 우측 네 구역을 탐방해봄
컴퓨터니 프로그램 이니 하는 모든 것의 원천은
논리(logic)임.
==== [Mathematics (Logic)] ====
Modus ponens (MP)
Modus tollens (MT)
Denying the Antecedent (DA)
Affirming the Consequent (AC)
라고 유식해보이는 척을 하는데
뭔 말이냐면 우리 중학교때 배웠던
p이면 q이다 (명제)
not q 이면 not p 이다 (대우)
이런 식으로 논리 를 전개하는 것을 말함
논리란, 정해진 그대로만 전개할 수가 있고
관찰되지 않은 일이 발생하는 일 따위 있을 수 없음
그래서 연역(deduction)논증 이라고 말함
==== [Automata] ====
그런 논리를 수행할 수 있는 기계를
오토마타 (Automata) 라고 부르는데
튜링머신이라는 단어는 들어보셨을 것임
현대 컴퓨터의 시조새인 튜링머신은 오토마타의 한 종류임
이놈은 알파벳이 적힌 길다란 테이프를 좌우로 왔다갔다 하면서 읽고 쓰고 하면서
매우 멍청한 명령을 수행하는 원시 컴퓨터임
==== [Programming] ====
오토마타로 설계된 물건을 우리는 컴퓨터 라고 부르는데
아빠가 용산에서 PC를 조립해 오면
그것은 전원만 들어오는 먹통 이고
내가 그 PC 안에다가 나의 필요에 따라서 윈도우를 깔든 워드를 깔든
이런저런 프로그램을 집어넣어서 작동하는 로직을 완성해야지 비로소 뭔가 일이 되는 컴퓨터가 완성되는 것임
마치 머신러닝의 training 과정에서
통계모델을 빌려와갖고 나머지 파라미터를 튜닝해서 모델을 완성하는 것에 비견될 수 있음
그러나 개념이 유사한 것이지, 프로그래밍을 파라미터 튜닝이라고 부르지는 않음
파라미터 튜닝은 머신러닝 할 때 사용하는 용어임
==== [Execute] ====
그래서 프로그램이 들어간 컴퓨터에 전기를 꽂고 엔터키를 쳐 주면
윙 하면서 실행이 되어 결과를 내어놓는 것임