※ 베이즈 정리를 모르는 분들은 나이브 베이즈를 알기에 앞서 베이즈 정리에 대해서 먼저 이해해야 한다. 확률의 함정을 간파, 베이즈 정리(Bayes' Theorem) 확률의 함정을 간파, 베이즈 정리(Bayes' Theorem) 베이즈 정리는 일반인들이 알고 있던 통계의 지식을 무너트리는 역할을 한다. 물리학도가 양자역학의 개념을 배울 때 새로운 신세계가 열리는 것처럼 통계에서 베이즈가 그런 역할을 하는 것 needjarvis.tistory.com 나이브 베이즈(Naïve Bayes Classification)의 개념 - 데이터가 각 클래스에 속할 특징 확률을 계산하는 조건부 확률 기반의 분류 방법이다. - 나이브(Naïve) : 예측한 특징이 상호 독립적이라는 가정 하에 확률 계산을 단순화, 나이브라는..
베이즈 정리는 일반인들이 알고 있던 통계의 지식을 무너트리는 역할을 한다. 물리학도가 양자역학의 개념을 배울 때 새로운 신세계가 열리는 것처럼 통계에서 베이즈가 그런 역할을 하는 것 같다. 실제로 통계학도 사이에서도 베이즈 정리는 또 다른 통계의 세계이며, 필자의 부하직원에게 베이즈 정리에 대해서 잘 아는가에 대해 물어봤을 때 "저는 그쪽이 아니라 정통파입니다"라는 답변을 들었을 정도이다. 베이즈 정리에 대한 대표적인 예시로, "확률 게임"에 나온 예시이다. 자동차 사고로 사망한 사람의 40%는 안전띠를 매지 않았다고 한다. 그렇다면 60% 안전띠를 매고 죽었다는 의미인데 안전띠가 더 위험한 것이 아닌가? 위 예시를 보면 정말 그럴듯해보인다. 상대방이 통계를 잘 모르면 아무말을 못하고 당할 것만 같다. ..
요즘 엘론 머스크(Elon Musk)를 보면 회사 가치를 올리기 위해서 너무나 입을 가볍게 놀리고 있다. 엘론 머스크의 한마디 한마디에 귀를 쫑긋 세우면서 배터리 데이(battery day)때 완전 자율주행 자동차를 언급하는 모습을 보면, 계속 주가를 올리기 위한 장난식의 로드맵을 미리 세우지 않았나 싶을 정도이다. 불과 올해 초에 테슬라(Tesla, TSLA)가 1천달라에 가까워 졌을 무렵, 그는 테슬라의 주가가 너무 비싼것 같다라고 말을 한 사람이다. 완전자율주행자동차가 한달앞으로 가까워진 무렵의 엘론 머스크라면 사실 저 말은 테슬라의 방향과 완전 다른 행동을 한 셈이다. 10월 즈음에 완전 자율주행 자동차가 나오는데 천슬라가 비싸다고? ㅎㅎ 테슬라의 로드맵을 보면, 전세계의 팬더믹 상황으로 애플의 ..
과적합의 개념 - 데이터가 너무 Fit하게 학습이 되면서 생기는 문제를 과적합(Over-fitting)이라 부르며, 데이터의 학습이 제대로 되지 않는 상태인 반대 개념을 언더 피팅(Under-fitting)이라 한다 과적합이 발생하는 사유 학습 데이터가 너무 적은 경우 학습 데이터 전처리를 잘못한 경우 특징(Feature) 데이터가 너무 많은 경우 과적합 사례 예를 들어 다음과 같은 설문조사 데이터를 학습 데이터로 사용해보고자 한다. 우리나라 특별시, 광역시, 도를 기반으로 지역 값을 생성하고 10대, 20대와 같은 나이대를 값으로 생성하며, 성별 값, 학력을 feature data로 놓고 최종 labeling 할 데이터를 연봉이라고 가정을 해보자 지역 설계 서울시 0 대전 1 세종 2 광주 3 울산 4..
척도(Metrics)의 개념 척도라는 것은 어떤 모델을 평가(Evaluate)하기 위해서 사용하는 값이다. 그러다보니 비슷한 개념의 목적/손실함수(Loss Function)와의 개념이 헷갈릴 수 있다. 손실함수는 모델의 성능을 끌어올리기 위해서 참조하는 값이다. 즉, 트레이닝(training, 학습)을 위해서만 사용하는 나침반과 같은 존재라고 한다면, 척도는 결과적으로 이 모델의 성능은 얼마짜리야라는 개념이다. 그렇기 때문에 척도와 손실 함수의 개념은 분리되어야 하지만 경우에 따라서는 특정 척도에 따라 최적화 하는 것이 최상일 때도 있다. 둘간의 개념이 사실상 유사하기 때문에 동일한 개념으로 어쩔땐 척도를 사용하기도 하고 어쩔땐 손실함수를 쓰기도 한다. 척도의 종류 정확도(Accuracy) 사실상 가장 ..
목적/손실 함수(Loss Function) 이란? 딥러닝 혹은 머신러닝은 컴퓨터가 가중치를 찾아가는 과정이다. 일단 아래 예를 보도록 해보자. 4 = 2a + b 6 = 3a + b 이와 같은 문제가 있다고 가정을 해보자, 사람들에게 a와 b에 들어가야 되는 답은 무엇인가? 라고 물어본다면 값을 대입해서 문제를 풀어본다던지 직관적으로 풀어본다던지 아니면 여러가지 공식을 써서 풀어본다던지 할 것이다. 2번과 3번과 같은 경우 컴퓨터에게 시키기에는 매우 힘든 작업이다. 반대로 값이 엄청 많을 경우 1번은 인간에게 힘들 수 있다. 물론 위의 문제는 너무 쉽기 때문에 값을 대충 대입해서도 충분히 맞출 것이다. 컴퓨터는 기본적으로 첫번째 방법인 값을 대입해서 문제를 풀어본다. 그래서 대입한 결과와 실제 정답간의 ..
다시 기초부터 포스팅 하나당 신경망 하나를 포스팅하는 것은 쓰는 사람도 그걸 받아들이는 사람들 중에 비전공자는 힘들 수 있다. 이미 MNIST(손글씨)와 유사한 Fashion MNIST(패션 아이콘)를 분류하는 모델을 포스팅한 적이 있지만, 하나하나 디테일하게 설명하지 못한 아쉬움이 있다. 이번 포스팅부터는 좀 더 쉽게 설명하기 위해서 신경망을 하나하나 코딩할 때마다 해당되는 기술들에 대해서 별도의 포스팅을 작성하고 어떤 방법으로 이루어지는지 써보도록 한다. 그리고 성능을 올리기 위해서 어떻게 튜닝을 하는지 적어보도록 하겠다. train에 사용될 매개변수(parameter)들 import tensorflow as tf import numpy as np from tensorflow import keras ..
사람과 컴퓨터는 데이터를 바라보는 형태가 다르다 인간과 컴퓨터는 데이터를 바라보는 형태가 다르다 사람은 어떤 물체를 보더라도 숫자로 인식하지는 않지만 컴퓨터에게 인공지능을 구현시키기 위해서는 컴퓨터가 알아먹기 쉽게 숫자값으로 변환을 해줘야 된다. 예를 들어 내가 지금 여기서 열심히 포스팅을 하고 있는 내용을 컴퓨터에게 이해 시키려면 단어들을 숫자 형태로 정리해서 컴퓨터에게 입력시켜줘야 한다는 것이다. 원핫 인코딩(One-Hot Encoding)은 사람이 매우 쉽게 이해할 수 있는 데이터를 컴퓨터에게 주입시키기 위한 가장 기본적인 방법이다. 원핫인코딩 개념 원핫(One-Hot) 인코딩이라는 말처럼 이 기술은 데이터를 수많은 0과 한개의 1의 값으로 데이터를 구별하는 인코딩이다. 예를 들어, 글자가 적힌 종..
딥러닝(Deep Learning)을 이해하기 위해서는 몇가지 개념들을 확실히 익히고 넘어가야 한다. 사실 딥러닝이라는 것은 프로그램적인 요소보다는 이미 만들어진 것을 어떻게 잘 조율해서 사용해야 하는지에 더 달려있기 때문에(요즘 트렌드 자체가 know-where 이기도 하고...) 너무 복잡하게 수식을 이해할 필요도 없고 간단하게 이해하고 넘어가도 딥러닝을 구현하는데 크게 지장이 없을 것이다. 논문을 쓰고 완전히 이쪽길로 깊게 공부하는 사람들은 당연히 수식까지 짜면서 공부를 해야 하겠지만 개발자이기도 하고 딥러닝도 어느정도 핸들링하는 사람들이라면 어느때에 이 기술이 좋더라 정도만 알아도 개발하는데 전혀 지장이 없다. 활성화 함수(Activation Function) 개념 딥러닝은 다양한 레이어(layer..
인터넷에 아직도 4차 산업을 유령 취급하는 사람들이 있어서 놀라울 뿐이다. 4차 산업 혁명이 일어나면 마치 새마을 운동이라도 하는 것마냥 온 국민들이 4차 산업을 향해서 달려가는 것이라 착각하는 것 같다. 4차 산업혁명의 가장 큰 트렌드는 누가 뭐라고 해도 인공지능(Artificial Intelligence)이다. 그러나 4차 산업혁명이 도래하기 이전부터 인공지능은 이미 예전부터 존재하기는 했었다. 최초의 컴퓨터가 탄생하기 이전부터 인간은 기계를 자동화하기를 원했었고, 꼼수를 써서 몇몇개는 마치 지능이 있는것마냥 행동을 했다. 대표적인 꼼수 인공지능, 전문가 시스템(Expert System) 우리가 일반적으로 인정하는 진정한 최초의 인공지능인 퍼셉트론(Perceptron)도 1950년대에 나온 기술이니,..
이전 포스팅에서는 classification 모델을 MNIST 데이터를 이용하여 분류를 해보았다. 그러나 많은 사람들이 데이터가 약간만 변형이 되어도 즉 틀이 다른 데이터를 어떻게 학습해야 되는지 헷갈려 할수가 있다. 해당 포스팅은 대표적인 데이터셋인 붓꽃(IRIS) 데이터셋을 기반으로 신경망을 수행하고 학습하여 테스트셋 아이리스 값의 정확도를 측정한다. 참고로 해당 포스팅은 연속적인 지식의 습득을 위해 이전 포스팅의 신경망 소스와 크게 다르지 않다. 데이터 구조 아이리스 데이터 구조... 47,5.1,3.8,1.6,0.2,Iris-setosa 48,4.6,3.2,1.4,0.2,Iris-setosa 49,5.3,3.7,1.5,0.2,Iris-setosa 50,5,3.3,1.4,0.2,Iris-setosa..
MNIST(Modified National Institute of Standards and Technology database)는 0~9까지의 숫자를 사람들이 손으로 직접 쓴 손글씨를 이미지화한 데이터셋이다. 딥러닝(Deep Learning)을 제외한 머신러닝(Machine Learning)에 IRIS(붓꽃 데이터)셋이 있다면 딥러닝에는 MNIST가 있으며 그만큼 성능을 자랑하기에 매우 딥러닝에 효율적이며 기본으로 내장이 되어 있어서 언제든지 불러서 실습을 해볼 수가 있는 데이터셋이다. MNIST 데이터셋 최근에는 이에 MNIST보다 조금 더 분류가 힘든 fashion mnist라는 데이터셋이 신규로 추가되었다. 둘의 포맷은 완전히 동일하기에 성능을 측정하기에 MNIST보다 더 수월해보인다. Fashio..