[Deep Learning] 머신러닝 기본 요소

김희진·2021년 4월 3일

DeepLearning

목록 보기
10/12
post-thumbnail

📖 케라스 창시자에게 배우는 딥러닝 (프랑소와 숄레, 박해선, 길벗) 참고

🌠 머신러닝 분류

지도 학습

머신러닝에서 가장 흔한 경우로 샘플 데이터가 주어지면 알고 있는 타깃에 입력 데이터를 매핑하는 방법을 학습하는 것이다. 광학 문자 판독, 음성 인식, 이미지 분류, 언어 번역 같은 딥러닝의 애플리케이션이 지도 학습에 속한다. 지도 학습은 Regression(분류)와 Classification(회귀)로 나눌 수 있다. 또 시퀀스 생성, 구문 트리 예측, 물체 감지, 이미지 분할 등의 다양한 변종이 있다.

비지도 학습

비지도 학습은 어떤 타깃도 사용하지 않고 입력 데이터에 대한 흥미로운 변환을 찾는 것이다. 데이터 시각화, 데이터 압축, 데이터의 노이즈 제거 또는 데이터에 있는 상관관계를 더 잘 이해하기 위해 사용한다. 데이터 분석에서 빼놓을 수 없는 요소기 때문에 종종 지도 학습 문제를 풀기 전에 데이터셋을 잘 이해하기 위해 필수적으로 거치는 단계이기도 하다. 차원 축소, 군집이 비지도 학습에 속한다.

자기 지도 학습

자기 지도 학습은 지도 학습의 특별한 케이스로 사람이 만든 레이블을 사용하지 않는다. 즉, 학습 과정에 사람이 개입하지 않는 지도 학습이다. 보통 경험적인 알고리즘을 사용하여 입력 데이터로부터 레이블을 생성한다. 오토 인코더가 자기 지도 학습의 예시이다.

강화 학습

강화 학습은 환경에 대한 정보를 받아 보상을 최대화하는 행동을 선택하도록 학습된다. 하지만 학습을 할 수 있는 가상 환경이 있어야 하기 때문에 대부분 연구 영역에 속해있다.

🌠 머신 러닝 모델 평가

머신 러닝의 목표는 처음 본 데이터에서 잘 작동하는 일반화된 모델을 얻는 것이다. 머신 러닝 모델의 성능은 어떻게 측정되는 것일까?

Training Data, Validation Data, Testing Data

모델을 개발하는 과정에서 우리는 항상 모델의 설정을 튜닝한다. 훈련 세트와 테스트 세트만을 사용하여 훈련을 하게 되면 과대적합 문제가 생긴다. 그 이유는 테스트 세트로 모델 성능을 평가한 후 Hyperparameter(층의 수, 층의 유닛 수 같은 파라미터들)를 조정하게 되는데 이 때 검증 데이터에 대한 정보가 모델로 새기 때문이다. 모델을 여러 번 조정하게 되면 검증 세트에 대한 정보가 모델에 많이 노출되게 되고 검증 데이터에 의도적으로 잘 수행되는 모델이 만들어지게 된다. 그렇기 때문에 우리는 Training Data, Validation Data, Testing Data 셋으로 분류하고 테스트 세트를 활용해 최종적인 테스트를 진행한다.

데이터가 적을 경우 hold-out validation, K-fold cross-validation, iterated K-fold cross-validation 등을 활용할 수 있다.

Hold-out validation

데이터의 일정량을 테스트 데이터로 떼어 놓는 것이다. 사이킷런의 train_test_split()을 사용하여 훈련, 검증, 테스트 세트로 편리하게 나눌 수 있다.

이 방법은 단순하기 때문에 데이터가 적을 경우 검증 세트와 테스트 세트의 샘플이 너무 적어 전체 데이터를 통계적으로 대표하지 못할 수도 있다.

K-fold cross-validation

Training Data를 무작위로 균등하게 K개의 그룹으로 나누어 검증을 한다. (K-1)개의 Training Fold와 1개의 Validation Fold를 지정한다. 이 때 K는 Hyperparameter이고 일반적으로 5~10 정도의 값을 선택한다. 이 후 K개의 결과 평균을 Validation Data에 적용하여 평가하게 된다.

이 방법은 모델의 성능이 데이터 분할에 따라 편차가 클 때 도움이 된다. 데이터가 충분히 많을 경우 수행한다.

iterated K-fold cross-validation with shuffling

이 방법은 비교적 가용 데이터가 적은 경우 사용하게 된다. k-fold cross validation을 여러 번 적용하되 k개의 분할로 나누기 전 매번 데이터를 무작위로 석게 된다. 최종 점수는 모든 k-fold cross validation을 실행해서 얻은 점수의 평균이 된다.

이 방법은 (반복 횟수 x K)개의 모델을 훈련하고 평가하기 때문에 비용이 많이 든다.

🌠 보편적인 머신 러닝 작업 흐름

  1. 문제 정의와 데이터셋 수집
  2. 성공 지표 선택
  3. 평가 방법 선택
  4. 데이터 준비
  5. 기본보다 나은 모델 훈련하기
  6. 과대적합 모델 구축
  7. 모델 규제와 하이퍼파라미터 튜닝

0개의 댓글