화이트 모드로 보시길 권장합니다

이 글은 [핸즈온 머신러닝 2판] 시리즈로
Hands on Machine Learning with Scikit-Learn, Keras & TensorFlow을 통해 공부하는
머신러닝, 딥러닝에 대한 내용을 정리한 글이다.

머신러닝이란?

What is Machine Learning?

일반적 정의 :

"머신러닝(Machine Learning)은 명시적 프로그래밍 없이 컴퓨터가 학습하는 능력을 갖추게 하는 연구 분야이다"

( _Arthur Samuel; 아서 새뮤얼 )

 

공학적 정의 :

"어떤 작업 T에 대한 컴퓨터 프로그램의 성능을 P로 측정했을 때 경험 E로 인해 성능이 향상됐다면, 이 컴퓨터 프로그램은 작업 T와 성능 측정 P에 대한 경험 E로 학습한 것이다."

( _Tom Mitchell; 톰 미첼 )

 

ex. 스팸 필터 )

스팸 필터는 스팸 메일과 일반 메일의 샘플의 구분법을 배우는 머신러닝 프로그램.

학습하는 데 사용되는 샘플을 훈련 세트(Training set, 각 훈련 데이터 = 훈련 사례;Training instance, 샘플)라 함.

작업T: new 메일이 스팸 메일인지 판단, 경험E: 훈련 데이터;Training data, 성능 측정P: 정확도;Accuracy.

 

Why use Machine Learning?

데이터를 기반으로 패턴을 자동으로 감지하여 데이터를 판단하기에 가장 좋은 패턴을 자동으로 학습하기 때문이다.

  • 알고리즘으로는 복잡한 문제 :  머신러닝이 코드를 간단하게 하여 기존 알고리즘보다 더욱 좋은 성능 발휘 가능.
  • 새로운 데이터에 쉽게 적응 가능.
  • 대용량 데이터에서 통찰을 얻음.

Machine Learning System 종류

머신러닝 시스템의 종류

머신러닝 시스템의 종류는 배타적이지 않으며 서로가 연결될 수 있다.

학습할 때의 감독 유무&정보의 종류 :

지도(Supervised)·비지도(Unsupervised)·준지도(Semi-supervised)·강화(Reinforcement) 학습.

 

실시간, 점진적으로 학습하는가? :

온라인(Online), 배치(Batch) 학습.

 

데이터 판단 방법 :

사례 기반(Case-based), 모델 기반(Model-based) 학습.

 

지도 학습(Supervised Learning)

머신러닝 알고리즘에 제공하는 훈련 데이터에 레이블(label)이 포함되어 있다.

지도학습의 종류로는 분류(Classification), 회귀(Regression)가 있다.

( 필자는 여태껏 label을 '라벨'이라 발음하였다. 라벨이 어감상 더 좋은데 레이블이라니 아쉽다. )

분류(Classification) :

주어진 데이터 라벨에 맞춰 패턴을 학습하여, 입력되는 데이터를 분류한다.

분류 알고리즘을 회귀에 사용할 수 있다.

 

회귀(Regression) :

특성(feature; 예측 변수predictor variable)을 사용해 타깃(target) 수치를 예측한다.

회귀 알고리즘을 분류에 사용할 수 있다.

로지스틱 회귀(Logistic Regression)는 클래스에 속할 확률을 도출한다.

  • k-nearest neighbors
  • linear regerssion
  • logistic regression
  • support vector machine(SVM)
  • decision tree&randrom forest
  • neural networks

 

비지도 학습(Unsupervised Learning)

훈련 데이터에 레이블이 포함되어 있지 않은 것이다.

정답이 없고, 시스템이 스스로 데이터를 분석하여 비숫한 것들을 그룹화한다.

군집화(Clustering) :

시스템이 스스로 데이터 간의 연결성을 찾아 비슷한 것들을 묶는 것이다.

계층 군집(Hierarchical Clustering) 알고리즘을 사용하여 각 그룹을 세분화할 수 있다.

( 계층 군집 : 데이터를 점차 병합하여 계층적인 구조로 군집화 하는 것이다. 트리구조로 표현 )

 

시각화(Visualization) 알고리즘:

고차원 데이터를 도식화 가능한 2D|3D 표현으로 만들어 준다.

가능한 한 구조를 그대로 유지하려 하기에 데이터의 구조를 이해할 수 있고, 패턴을 발견할 수 있다.

차원 축소(Dimensionality reduction) : 

너무 많은 정보를 잃지 않으며 데이터를 간소화한다.

머신러닝 알고리즘에 데이터를 입력하기 전, 차원 축소를 통해 훈련 데이터의 차원을 줄이는 것이 유용할 수 있다.

(실행속도 증가, 메모리 차지 감소, 성능 증가)

  • 특성 추출(feature extraction) : 상관관계가 있는 데이터를 하나로 합치는 방법이 있다.

이상치 탐지(Outlier detection) :

훈련 데이터에 포함된 대부분이 정상 샘플이며, 다른 샘플들의 패턴들과는 다른 패턴을 가진 샘플을 탐지한다.

 

특이치 탐지(Novelty detection) :

훈련 데이터의 모든 샘플을 정상 데이터로 인식하며, 훈련 데이터와는 다른 새로운 샘플을 탐지한다.

 

연관 규칙 학습(Association rule learning) :

대량의 데이터에서 각 특성 간의 관계를 찾는 것이다.

 

준지도 학습(Semi-supervised learning)

일부만 레이블이 있는 데이터를 사용한다.

지도학습과 비지도 학습의 조합으로 이루어져 있다.

심층 신뢰 신경망(Deep belief network; DBN) :

비지도 학습인 제한된 볼츠만 머신(Restricted Boltzmann machine;RBM)을 쌓아 만든 신경망이다.

  1. 비지도 학습(RBM 학습) : 레이블이 없는 데이터를 사용해 학습하며, 각 층이 데이터의 숨겨진 구조를 학습한다.
  2. 지도 학습(세밀 조정) : 비지도 학습을 통해 전체 네트워의 초기 구조를 설정한 후, 지도 학습 방식으로 세밀하게 조정한다. 레이블이 있는 데이터를 사용해 분류 등의 성능을 향상한다.

ex). 두 개의 클래스; 새로운 샘플이 레이블이 있는 클래스 네모에 가깝지만, 레이블이 없는 샘플이 새로운 샘플을 삼각형 클래스로 분류하는데 도움을 준다.

 

강화 학습(Reinforcement learning)

용어 :

  • 에이전트(Agent) : 학습하는 시스템
  • 환경(Environment)
  • 행동(Action)
  • 보상(Reward)
  • 벌점(Penalty)
  • 정책(Policy)

환경을 관찰하여 행동을 실행, 결과로 보상 혹은 벌점을 받는다. 시간이 지나 가장 큰 보상을 얻기 위해 정책이라 하는 최상의 전략을 스스로 학습한다. 정책은 주어진 환경에서 에이전트가 어떤 행동을 할지 선택한다.


배치 학습(Batch Learning)&오프라인 학습(Offline Learning)

시스템이 점진적으로 학습할 수 없다.

모든 데이터를 사용해 훈련해야 하기 때문에 시간과 자원을 많이 소모하기에 주로 오프라인에서 수행된다. 

시스템을 훈련시킨 후, 제품을 시스템에 적용하면 추가적인 학습 없이 실행된다.

위와 같은 방식을 오프라인 학습(Offline Learning)이라 한다.

 

새로운 데이터를 학습하기 위해선, 전체 데이터를 사용해 시스템의 새로운 버전을 처음부터 다시 학습시킨다.

머신러닝 시스템을 훈련, 평가, 론칭하는 전체 과정이 쉽게 자동화되기에, 데이터를 업데이트하고, 새 버전이 필요한 만큼 자주 훈련시켜 변화에 적응이 가능하다.

대량의 데이터를 사용해 매일 처음부터 훈련하도록 자동화해 둘 경우, 큰 비용이 발생하게 될 것이다.

 

온라인 학습(Online Learning)

데이터를 순차적으로 한 개 혹은 미니 배치( Mini-batch)라 부르는 작은 묶음 단위로 입력하여 학습시킨다.

매 학습마다 빠르고, 비용이 적게 들기에 데이터가 도착하는 대로 즉시 학습할 수 있다.

빠른 변화에 적응해야 하는 시스템에 적합하다.

단점 :

비정상적인 데이터가 입력될 경우 시스템의 성능이 점차 감소하게 된다.

해결방법 : 

  • 모니터링을 통해 성능 감소가 감지될 경우 학습을 중지시킨다.
  • 이상치 탐지 알고리즘 등 데이터 모니터링을 통해 비정상적인 데이터를 잡아낸다.

학습률(Learning rate) :

모델이 데이터로부터 배우는 속력을 제어하는 하이퍼 파라미터이다.

'속력'이란 경사하강법에서 파라미터가 어느 방향으로 업데이트되고, 파라미터가 업데이트되는 크기를 의미한다.

학습률이 높을수록 좋은 파라미터 값을 찾기 위해 파라미터의 값이 크게 업데이트되기 때문에 최저점에 수렴하지 못할 수 있다.

학습률이 낮을수록 천천히 학습되기에 학습 시간이 오래 걸리고 컴퓨팅 리소스가 많이 소모되게 된다.

 

 

외부 메모리 학습(Out-of-core Learning)&점진적 학습(Incremental Learning) :

매우 큰 데이터셋을 학습하는 시스템에 온라인 학습 알고리즘을 사용할 수 있다.

알고리즘이 데이터 일부를 읽어 들이고, 훈련 단계를 수행하며 전체 데이터가 적용될 때까지 과정을 반복한다.

이 학습은 주로 오프라인에서 실행되기에(실시간 시스템에서 수행되지 않음) 점진적 학습(Incremental Learning)이라 할 수 있다.


 

사례 기반 학습(Instance-based Learning)

시스템이 훈련 샘플을 기억하는 것으로 학습한다.

입력 데이터와 기존 데이터의 유사도를 측정해 비교하는 방식으로 일반화(Generalize) 한다.

입력 데이터와 가장 유사한 데이터가 속해있는 클래스로 예측한다.

(일반화 : 새로운 데이터에서 좋은 예측을 하는 것 )

(필자가 만든 '얼굴 인종 예측'모델이 이에 해당한다. )

https://github.com/JungbeomLee/Face_race_classification_with_FaceNet

 

모델 기반 학습(Model-based Learning)

샘플들의 모델을 만들어 예측(Prediction)에 사용한다.

모델 선택(Model Selection) : 

데이터를 분석하여 데이터에 맞는 학습 모델을 찾는 것이다.

 

ex. 선형 모델(Liear Model) :

간단 선형 모델 수식

간단한 선형 모델은 모델 파라미터(Model parameter)  θ_{0}, θ_{1}을 가진다.

(θ, ω, β는 모델 파라미터를 표현할 때 사용된다.)

 

측정 지표인 '효용함수(Utility Function || 적합도함수;Fitness Function) : 모델의 좋은 정도를 평가', '비용함수(Cost Function) : 모델의 나쁜 정도를 평가'를 정의하여 모델이 최상의 성능을 내는 파라미터 값을 구할 수 있다.

(선형 모델의 경우 예측 값과 실제 값 사이의 거리값을 재는 비용함수를 사용한다. 이 거리값을 최소화하는 것이 목표이다.)

 

선형 회귀(Linear Regression) 알고리즘에 훈련 데이터를 제공하고, 데이터에 가장 잘 맞는 파라미터를 찾는다. 이를 훈련(Training)시킨다고 한다.

 

+ Recent posts