비전공자도 쉽게 배우는 인공지능 : Model
목차
서론
•
학습도 중요하지만, 학습-배포 프로세스 관리도 중요하다.
•
실제 ML Code 뿐만이 아니라 데이터 전처리, 검증 과정, 배포 등 여러 신경 쓸 것들이 많다.
•
Kaggle : 데이터 수집 및 여러 문제들에 대한 경쟁 사이트
◦
데이터 정제에 대한 시간을 줄여야 하기 때문
◦
House Prices
▪
정형 데이터셋
•
딥러닝 말고도 좋은 예측모델을 쓰면 딥러닝보다 좋은 결과를 도출 가능하다!
딥 러닝은 머신러닝 안에 포함되어 있는 하나의 방법 중 하나로써, 이 외에도 여러 모델들이 있다!
예측 모델
MLP (Multi-Layer Perceptron)
•
FC (Fully Connected Layer)
◦
Matrix(행렬)로 이해하기
▪
각각 component들이 연결된 선들이 weight를 의미.
▪
hidden layer의 의미는 weight를 묶은 하나의 행렬이다.
•
MLP
◦
FC가 여러개 겹쳐져 있는 것
◦
One-Hot Encoding
▪
ex) 5 → [0,0,0,0,1,0,0,0] 이런식으로 만들어주는 것.
▪
categorical 하게 만들 때 사용
◦
param 갯수 : x*y+bias(y)
▪
ex) 256 X 128 hidden layer → 256*128+128=32896
Decision Tree
•
Machine Learning 알고리즘 중 하나!
•
개념
◦
Impurity : 정보의 순도
▪
두 갈래로 나누었을 때 정확도가 높은 feature를 표현.
▪
Decision Tree의 Node는 Impurity를 활용하여 결정!
◦
Gini
▪
Impurity 측정 방법은 여러가지, Gini 계수가 대표적
▪
낮으면 낮을수록 순도가 높은 것.
▪
Tree의 Gini 계수 구하는 방법.
▪
항목의 Gini 계수 구하는 방법. (Weighted Sum)
◦
Decision Tree 자라는 정도
▪
Tree를 만들었을 때 자체의 Gini 계수가 높아지면 그만두고 그 항목을 의사결정 항목으로 만들어버림.
Ensemble
Random Forest
•
Decision tree를 여러개 만들고, 결과를 voting하여 최종 결과 값으로 사용.
•
서로 다른 Tree 제작
◦
Data를 전부 사용하는 것이 아닌, sampling하여 일부만 사용하여 Decision Tree 제작
◦
여러 개의 tree를 사용하여 결과 종합.
•
Bagging(투표)
◦
Random Forest에서 결과를 voting하여 결과를 종합하는 것을 Bagging이라고 함.
Boosting
•
연속적으로 트리를 만들어 간다. (Sequential)
•
각 모델마다 가중치를 둔다.
•
과정 (AdaBoost)
◦
Bootstrap (샘플을 자르는 행위)을 처음에는 랜덤으로 한다.
◦
그 후 모델의 정확도를 계산한다. 또한 각각 에러들로부터 모델의 weight를 계산.
◦
그 다음 라운드에서 틀린 것/맞은 것들에게 가중치(penalty)를 두어 뽑힐 확률을 조정하여 다음 Bootstrap에 포함될 확률을 높여 반복적으로 학습한다.
◦
다음 각 모델의 결과(+가중치)를 통해 최종적인 결과를 구한다.
•
차이점
◦
Bagging : Overfitting의 위험이 적고 병렬처리로 빠른 실행 가능. 하지만 Boosting에 비해 accuracy가 조금 낮음.
◦
Boosting : 일반적으로 Accuracy가 높음. 하지만 Overfitting의 문제와 순차적으로(하나 하고 가중치를 구한 것을 바탕으로 바뀌기 때문) 하기 때문에 실행 시간이 느리다.
•
'XGBoost'는 License로 인해 설치 필요!
ML Model Deployment(배포)
•
Deployment : 개발한 SW/ML model 등을 사용자가 사용할 수 있도록 배포하는 것
•
배포 방법
◦
Backend deployment : 서버에 배포
▪
대부분 : netflix, google 번역 등
◦
Edge-device deployment : 사용자 기기에 배포
▪
자율주행 자동차
◦
장단점
◦
ex) Apple Core ML
•
구현
◦
REST(Representational State Transfer)
▪
http method를 사용하는 것
▪
계층화 되어있으며 경량화 되어있음.
▪
RESTful : REST 구조를 잘 따르는 웹서비스.
▪
Flask Framework를 사용!