본문 바로가기

ComputerScience/Machine Learning

Hands-On-Machine Learning : 29p ~ 66p

728x90

본 도서를 공부하며 정리한 내용입니다.

Library & API 소개

Scikit-Learn : 사용법이 쉬운, 효율적으로 구현된  많은 머신러닝 알고리즘들이 구현되어있다.

TensorFlow : tensorflow 라이브러리를 사용하면 수백대의 GPU서버에서 계산을 분산하여 대규모 신경망을 효과적으로 훈련시킬 수 있다. 구글에서 만들었다.

Keras : 고수준 딥러닝 API, 신경망을 매우 쉽게 훈련하고 실행할 수 있다. 텐서플로는 자체적인 케라스 API구현을 tf.keras라는 이름으로 포함하고 있다.

기본 용어 정리

스팸메일을 판별하는 스팸필터는 어떤 메일이 스팸메일인지 먼저 train해야한다. 이 프로그램이 학습하는데 사용하는 샘플 데이터를 training set이라고 하고 각 훈련 데이터를 training instance라고 한다. 이 데이터를 학습하면 training data가 된다. 학습을 마치고 스팸필터가 스팸을 잘 걸러내는지의 성능을 accuracy라고 한다.

머신러닝의 장점

전통적인 알고리즘은 예외의 경우가 발생했을때 유지보수가 필요하다. 반면 머신러닝은 새로 생긴 변수도 학습하여 스스로 알고리즘을 진화시킨다. 방대한 양의 데이터를 머신러닝 알고리즘이 학습하다 보면 인간이 발견하지 못한 데이터끼리의 관계를 파악할 수도 있다. 인간이 발견하기 어려운 패턴을 찾아내는 것이다. 이를 data mining이라고 한다.

 머신러닝 종류

  • Supervised Learning

알고리즘에 주입하는 training data에 label이라는 원하는 답을 붙여서 준다. 예를 들면 중고차에 대한 features(특징)를 중고차의 가격에 대한 정보와 함께 model에게 준다. 그럼 이를 학습하여 features만 가지고 target인 중고차의 가격을 예측하도록 한다. 이런 종류의 문제들을 regression problems라고 한다.

특징과 정답을 함께 알려주어 학습시키는 것이다.

지도 학습을 위한 여러 알고리즘이 있다.

- neural networks

- linear regression

- logistic regression 등

  • Unsupervised Learning

training data에 label이 없다. 시스템이 아무런 도움없이 data만 가지고 학습한다. data의 features가지고 스스로 판단하여 데이터들을 군집화 할 수 있다. 혹은 새로운 의미있는 패턴을 발견할 수도 있을 것이다.

- clustering

- visualization 등

  • Semisuperivsed learning

데이터에 레이블을 다는 것은 시간과 비용이 많이 들기 때문에 일부는 레이블 있는 데이터를 다른 일부는 레이블 없는 데이터를 사용해서 학습하는 알고리즘이다.

  • Reinforcement learning

학습하는 시스템을 agent라고 한다. agent는 environment를 관찰해서 action을 취하는데 실행 결과가 옳았을 때 reward를 받고 그 반대의 경우 penalty를 받는다. 이를 통해 스스로 최상위 전략인 policy를 만들어 행동 선택을 정의한다. 보행 로봇, 알파고가 좋은 예이다.

  • batch learning

한번 제공된 데이터를 모두 사용해서 훈련한다. 이렇게 훈련을 마치면 더 이상 학습 없이 제품에 적용된다. 만약 새로운 데이터에 대해 학습하려면 전체 데이터를 사용해서 처음부터 다시 학습해야한다. 훈련시간이 오래 걸릴 수 있으며 많은 컴퓨팅 자원을 필요로 한다.

  • online learning

데이터를 순차적으로 mini batch씩 학습한다. 데이터가 도착하는 즉시 점진적으로 학습이 가능하다. 빠른 변화에 적응해야할 때 혹은 컴퓨팅 자원에 제한이 있을 때 유용하다. 이 학습 방식에서 중요한 parameter중 하나는 learning rate이다. 데이터에 얼마나 빠르게 적응하는가?를 나타낸다. learning rate가 높으면 최신 데이터는 빠르게 학습하지만 이전 데이터를 빠르게 잊는다. 반대로 learning rate가 느리면 데이터의 잡음이 들어와도 덜 민감해진다.  이 학습 방식에서는 나쁜 데이터가 주입되면 성능이 점차 낮아질 수 있기 때문에 지속적인 모니터링이 필요하다.

  • model based learning

학습한 샘플들을 구분하는 model을 만들어 새로운 데이터에 대해서 예측한다. 앞시간 kaggle deep learning에서 했던 방식이 이에 속한다. 

머신러닝 도전과제

머신러닝에 있어서 데이터를 학습하는 일은 매우 중요하다. 따라서 학습 데이터들이 대표성을 잘 띄고 있어서 bias, noise가 없도록 해야한다. 

한편 훈련 데이터에 너무 잘 맞아서 일반적인 실제 사례에 잘 맞지 못하는 경우를 overfitting이라고 한다. 훈련 데이터에 있던 noise까지 model이 학습해버려서 일반화를 방해하는 패턴을 찾아버린 것이다. 반대로 훈련시에도 패턴을 찾지 못하는 경우는 underfitting이라고 한다.

그래서 deep learning에서는 모델이 아닌 학습 알고리즘의 parameter인 hyperparameter를 규제해서 overfitting과 underfitting 사이를 적절히 찾도록 해야한다.

테스트와 검증

training set으로 학습을 하고 나면 모델의 성능을 판단하기 가장 좋은 방법은 실제 test set를 가지고 시험해보는 것이다. 만약 training set을 너무 잘 맞추는데 test/validation set을 잘 못 맞춘다면 이는 훈련 데이터를 overfitting하여 실제 세계를 잘 못 예측하고 있는 것이다. 이렇게 결과를 분석하여 튜닝하는 과정이 필요하다. 

728x90
반응형