머신러닝이란 : 컴퓨터가 데이터에서부터 명시적인 프로그래밍 없이 학습하는 능력을 갖추게 하는 연구분야이다.
시스템이 학습하는데 사용하는 샘플(example) : 훈련 세트 training set
각 훈련데이터 : 훈련 사례 training instance or example
머신러닝의 접근 방법 :
-> 문제 연구 -> 머신러닝 알고리즘 훈련 (<- 데이터) -> 솔루션 평가 ->-> 런칭 or 반복
전통적인 방법과 다른점 : 데이터에서 자주 보여지는 특성을 명시적으로 코딩하지 않아도 알아서 학습함.
데이터 마이닝 : 잘 알지못하는 문제해결 알고리즘을 머신러닝을 통해 적합한 솔루션을 생성하고, 그 솔루션을 분석함으로 문제를 더 잘 이해하게된다. 더 나은 이해를 바탕으로 다시 머신러닝을 지도한다.
ex) one, two 의 음성인식하는 문제에서, 잘 알지못하는 one 과 two의 특성 차이를 머신러닝을 통해 솔루션을 생성하고, 그것을 분석함으로 겉에서 보이지 않던 패턴을 발견한다.
머신러닝이 뛰어난 분야 :
- 기존 솔루션으로 많은 수동 조정과 규칙이 필요한 문제
- 전통적인 방법으로 해결법이 없는 복잡한 문제
- 유동적인 환경
애플리케이션 사례
- 생산라인에서 제품 이미지를 분석해 자동으로 분류 : CNN
- 뇌를 스캔하여 종양 진단 : CNN
- 자동으로 뉴스 분류 : NLP, RNN, CNN, Transformer
- 토론 포럼에서 부정적인 코멘트를 자동으로 분류 : NLP
- 긴 문서를 자동으로 요약 : NLP
- 챗봇 또는 개인 비서 : NLU(Natural language understanding) , NLP
- 다양한 지표를 통해 회사의 수익 예측 : Regression
- 음성 명령에 반응하는 앱 : 오디오 샘플 처리 , RNN, CNN, Transformer
- 신용 카드 부정 거래 감지 : 이상치 탐지
- 구매 이력을 통한 다양한 마케팅 : 군칩 clustering
- 고차원 데이터의 그래프 표현 : 데이터 시각화, 차원 축소 dimensionality reduction
- 구매 이력을 통한 상품 추천 : 추천 시스템
- 지능형 게임 봇 : 강화학습 reinforcement learning
머신러닝 시스템의 종류
- 사람의 감독? 지도, 비지도, 강화 학습
- 실시간으로 점진적인 학습? 온라인 학습, 배치 학습
- 기존 데이터와 비교 or 패턴 발견 : 사례 기반 학습 (instance-based learning) , 모델 기반 학습
지도학습 : 알고리즘에 주입하는 레이블(label) 원하는 답이 포함됨
ex)
- 분류classification
- 회귀regression : 예측변수 predictor variable인 특성feature으로 타깃target수치를 예측하는 것.
일부 회귀 알고리즘을 분류에, 일부 분류알고리즘을 회귀에 사용가능하다.
중요한 지도학습 알고리즘
- k-nearest neighbors
- linear regression
- logistic regression
- support vector machine (SVM)
- decision tree, random forest
- neural networks
비지도 학습 : 훈련데이터에 레이블이 없어 훈련데이터로만 학습해야함
ex) 군집 : 블로그 방문자에 대한 데이터를 통해 방문자 사이의 연관관계를 찾음. 더 작은 그룹으로 세분화 가능.
시각화 : 대규모 고차원 데이터를 도식화가 가능한 2D 3D 표현을 만들어준다.
차원 축소 : 되도록 많은 정보를 잃지 않으면서 데이터를 간소화. 상관관계가 있는 여러 특성을 하나로 결함. -> 특징 추출feature extraction
이상치 탐지outlier detection : 정상 데이터를 이를 인식하고, 새로운 샘플을 통해 판단. ex) 학습 알고리즘에 주입하는 데이터셋에서 이상한 값을 자동으로 제거
특이치 탐지novelty detection : 학습한 모든 데이터와 달라보이는 특이하고 새로운 샘플을 탐지하는 것. 주의) 깨끗한 데이터셋이 필요함
연관 규칙 학습assiciation rule learning : 대량의 데이터에서 특성 간 흥미로운 관계를 찾음. ex) 바비큐 소스 와 감자를 산사람이 스테이크를 많이사는 관계 등..
중요한 비지도 학습 알고리즘
- 군집 clustering
-- k-means
-- DBSCAN
-- hierarchical cluster analysis(HCA)
-- outlier detection, novelty detection
-- one-class SVM
-- isolation forest
- visualization, dimensionality reduction
-- principal component analysis(PCA)
-- kernel PCA
-- locally-linear embedding(LLE)
-- t-SNE t-distributed stochastic neighbor embedding
- association rule learning
-- Apriori
-- Eclat
준지도 학습 : 모든 데이터에 레이블을 포함하는 것은 힘든일이기 때문에, 데이터의 일부에만 레이블을 포함시킴.
지도학습과 비지도 학습의 조합, 심층 신뢰 신경망deep belief network 은 여러 겹의 restricted Boltzmann machine(RBM)인 비지도 학습에 기초함. 순차적으로 RBM이 비지도학습으로 훈련된 후 전체 시스템이 지도 학습으로 세밀하게 조정된다.
강화 학습 :
학습하는 시스템 = 에이전트
에이전트의 활동 구역 = 환경environment
에이전트의 반응 = 행동action
에이전트 행동의 결과 = 보상reward or 페널티penalty
에이전트의 보상을 얻기위한 전략 = 정책policy
에이전트는 보상을 최대화 하기위해 최상의 정책을 스스로 학습한다.
배치학습과 온라인 학습 : 입력 데이터의 스트림stream으로부터 점진적으로 학습 가능한지 여부
배치학습 : 점진적으로 학습 불가, 가용한 데이터(배치)를 전부 사용하여 훈련해야함.
보통 시간과 자원을 많이 소모하므로 오프라인에서 수행되고, 시스템에 적용되면 더이상의 학습은 없이 실행된다.
= 오프라인 학습offline learning
새로운 데이터를 추가해서 학습하려면 전체 데이터를 통해서 다시 학습해야한다. 대량의 데이터를 훈련시킬시 많은 컴퓨팅 자원이 필요하다. 컴퓨팅 자원이 적거나 자주 변경되어야 하는 시스템에는 점진적으로 학습가능한 알고리즘이 더낫다
온라인 학습 : 데이터를 순차적으로 한 개씩 또는 미니배치(mini batch)라 부르는 작은 묶음 단위로 주입하여 시스템을 훈련한다. 매 학습 단계가 빠르고 비용이 적게든다.
새로운 데이터 샘플을 학습하고 학습이 끝나면 더는 필요하지 않으므로 버리면 된다. 공간절약
온라인 학습(점진적 학습)의 중요한 파라미터는 학습률learning rate이다. 변화하는 데이터에 얼마나 빠르게 적응할 것인지를 나타낸다.
문제점 : 시스템에 나쁜 데이터가 주입되었을 때, 시스템 성능이 점진적으로 감소한다. 시스템을 면밀히 모니터링 해야한다.
사례기반 학습, 모델기반 학습
머신러닝 작업은 주어진 훈련 데이터로 학습하고 새로운 데이터에서도 좋은 예측을 만들어야 (일반화되어야) 한다.
사례 기반 학습 : 시스템이 훈련 샘플을 기억함으로 새로운 샘플과의 유사도를 측정해서 일반화 한다.
모델 기반 학습 : 훈련 샘플의 모델을 만들어 예측에 사용한다. 새로운 샘플을 모델에 입력시켜 그 결과를 통해 일반화 한다.
모델을 정의하고 평가하기 위해, 얼마나 좋은지를 나타내는 효용 함수 utility function(적합도 함수fitness function),
얼마나 나쁜지 나타내는 비용 함수cost function을 정의한다.
선형 회귀에서 선형 모델 예측과 훈련 데이터의 거리를 최소화 시키느 것을 목표로 한다.
머신러닝의 도전과제
충분하지 않은 훈련 데이터 : 대부분의 머신러닝 알고리즘에서 데이터가 매우 많아야 하고 많은 시간과 돈이 필요하다. 문제가 복잡할 수록 알고리즘보다 데이터가 중요하다.
대표성 없는 훈련 데이터 : 일반화하려는 사례들을 대표하는 훈련 세트를 사용하는 것이 매우 중요하지만, 샘플이 작으면 샘플림 잡음sampling noise(우연에 의해 대표성 없는 데이터)이 생기고, 매우 큰 샘플도 표본 추출 방법이 잘못되면 대표성을 띠지 못할 수 있다. 이를 샘플링 편향sampling bias라고 한다.
낮은 품질의 데이터 : 훈련 데이터에 에러, 이상치, 잡음으로 가득하면 시스템에 내장된 패턴을 찾기 어려워 잘 작동하지 않게 된다. 따라서 훈련 데이터 정제에 시간 투차할 가치는 충분하다.
- 일부 샘플이 이상치라는 게 명확하면 무시하거나, 수동으로 고치거나 할수 있다.
- 일부 샘플에 특성 몇개가 빠져있다면(나이를 기록하지않음...) 이 특성을 모두 무시할지, 샘플을 무시할지, 빠진 값을 채울지, 포함한 모델과 제외한 모델을 따로 훈련시킬지 결저해야 한다.
관련 없는 특성 : 관련 없는 특성이 없고, 관련 있는 특성이 충분해야 시스템이 학습 가능하다.
- 특성 선택feature selection : 특징중에서 가장 유용한 특성을 선택
- 특성 추출feature extraction : 특성을 결합하여 더 유용한 특성을 만든다.-> 차원축소
- 새로운 데이를 수집해 새 특성을 만든다.
훈련 데이터 과대적합 : 과도하게 일반화 하는 현상. 과대적합overfitting. 훈련데이터에는 너무 잘 맞지만 일반성이 떨어지는 뜻.
잡음이 많거나, 데이터 셋이 너무 작으면 잡음이 섞인 패턴을 감지하고, 이런패턴은 새로운 샘플에 일반화 되지 못한다.
과대적합은 훈련 데이터에 있는 잡음의 양에 비해 모델이 너무 복잡할 때 일어난다.
해결
- 파라미터 수가 적은 모델을 선택하거나(다항 회귀->선형 회귀) 훈련 데이터에 있는 특성 수를 줄이거나, 모델에 제약을 가해 단순화 시킨다.
- 훈련 데이터를 많이 모은다.
- 훈련 데이터의 잡음을 줄인다.(오류 데이터 수정과 이상치 제거)
모델을 단순하게 하고, 모델에 제약을 가하는것 : 규제regularization
자유도degree of freedom를 낮춘다 -> 모델을 단순하게 한다.
하이퍼 파라미터 : 학습하는 동안 적용할 규제의 양을 결정하는 수치
혼련 데이터 과소 적합 : 과대 적합의 반대, 모델이 너무 단순해서 내재된 구조를 학습하지 못할 때.
해결
- 모델 파라미터가 많은 더 많은 강력한 모델을 선택
- 학습 알고리즘에 더 좋은 특성을 제공
- 모델의 제약을 줄임(ex 규체 파라미터를 감소)
1.6 테스트와 검증 :
훈련 세트와 테스트 세트로 나누어 훈련세트로 모델을 훈련하고, 테스트 세트로 모델을 테스트한다.
새로운 샘플에 대한 오류 비율을 일반화 오차generalization error or 외부 샘플 오차out-of-sample error라고 한다.
하이퍼 파라미터 튜닝과 모델선택 :
모델 평가는 테스트 세트를 사용해서 얼마나 잘 일반화 되는지 비교한다.
ex) 선형 모델이 더 잘 일반화가정, 하이퍼파라미터 값은 100개의 값으로 100개의 다른 모델을 훈련시켜 테스트 세트를 사용해 일반화 오차를 찾는다. 하지만 실체 성능은 테스트 세트를 사용해서 일반화 오차를 구했기 때문에 새로운 샘플에서 성능을 기대하기 힘들다.
해결방법 : 홀드아웃 검증holdout validation
-> 검증 세트validation을 따로 때낸다.(개발 세트development set 또는 dev set)이라고도 불림.
전체 훈련 데이터에서 훈련 세트, 테스트 세트, 검증 세트를 나누고 훈련 세트로 다양한 하이퍼파라미터 값을 가진 모델을 훈련하고 검증 세트로 최적 모델을 선택하고, 훈련 세트와 검증 세트를 합친 데이터 셋으로 모델을 훈련시킨다.
그후 테스트 세트로 모델을 평가하여 일반화 오차를 추정한다.
이때 교차 검증cross-validation를 수행하여 여러개의 검증 세트를 만들어 최적의 모델을 선택하는 과정을 더 정확하게 할 수있다.
데이터 불일치 :
웹에서 혹은 여러 자료실에서 쉽게 많은 양의 데이터를 얻을 수 있지만, 실제 제품에 사용될 데이터를 완벽하게 대표하지 못할 수 있다. 예를들어 웹에서 꽃사진 10만개를 얻었지만, 앱에서 유저가 찍은 사진을 대표하지 못할 수 있다. 따라서 대표적인 사진(앱에서 찍은 사진)을 1만개 얻었다면 이를 검증 데이터셋, 테스트 데이터셋에 배타적으로 포함되어야 한다.