본문 바로가기

머신러닝

핸즈온 머신러닝 3판 1장

핸즈온 머신러닝(3판)에 대한 책을 읽고 정리해보려고 한다.

1장은 머신러닝에 대한 기본적인 사항들에 대해 알려준다.

https://bit.ly/homl3-git 에서 오픈소스 코드를 확인할 수 있다.


 

머신러닝

  • training set: 시스템이 학습하는데 사용하는 샘플
  • sample(training istance): 각각의 훈련 데이터
  • model: 머신러닝 시스템에서 학습하고 예측을 만드는 부분(ex. 신경망 등)

 

  • data mining: 대용량의 데이터를 분석하여 숨겨진 패턴을 발견하는것.

 

머신러닝 시스템의 종류

  • 훈련 지도 방식
    • 지도 학습(supervised learning): 알고리즘에 주입하는 훈련 데이터에 레이블이라는 원하는 답이 포함됨.
      • classification이 전형적인 지도 학습 작업이며, 스팸 필터를 좋은 예로 들고 있다.
        • 스팸인지 아닌지 분류
      • regression: 특성을 사용해 target 수치 예측.
    • 비지도 학습(unsupervised learning): 훈련 데이터에 레이블이 없음. 즉, 답이 없으므로 시스템이 아무런 도움 없이 학습해야함.
      • 군집 알고리즘
      • 시각화 알고리즘
      • 차원 축소: 데이터 간소화
      • 이상치 탐지(outlier detection): 새로운 샘플을 보고 정상 데이터인지 이상치인지 판단함.
      • 특이치 탐지(novelty detection): 훈련 세트에 있는 모든 샘플과 달라 보이는 새로운 샘플을 탐지하는 것이 목적.
      • 연관 규칙 학습: 대량의 데이터에서 특성 간의 흥미로운 관계를 찾음.
    • 준지도 학습(semi-supervised learning): 레이블이 일부만 있는 데이터를 다룸.
      • 지도 학습과 비지도 학습의 조합으로 이루어져 있음.
    • 자기 지도 학습(self-supervised learning): 레이블이 전혀 없는 데이터셋에서 레이블이 완전히 부여된 데이터셋을 생성하는 것.
      • 예를 들어, 레이블이 없는 이미지로 구성된 대량의 데이터셋이 있다면 각 이미지의 일부분을 랜덤하게 마스킹하고 모델이 원본 이미지를 복원하도록 훈련할 수 있음.
      • 훈련하는 동안 마스킹된 이미지는 모델의 '입력'으로 사용되고 원본 이미지는 레이블로 사용됨.
      • 즉, 레이블이 전혀 없는 데이터셋을 사용해 훈련하는 동안 생성된 레이블을 사용함.
    • 강화학습(reinforcement learning)
      • agent: 학습하는 시스템
      • 에이전트가 환경을 관찰해서 행동을 실행하고 그 결과로 보상 또는 벌점을 받는다. 
      • 시간이 지나면서 가장 큰 보상을 얻기 위해 정책(policy)이라고 부르는 최상의 전략을 스스로 학습함.
      • 정책은 주어진 상황에서 에이전트가 어떤 행동을 선택해야 할지 정의함.
  • 실시간으로 점진적 학습을 하는지
    • 배치 학습: 시스템이 점진적으로 학습할 수 없음.(non-incremental learning)
      • 가용한 데이터를 모두 사용해 훈련시켜야 함. -> 시간과 자원을 많이 소모하므로 오프라인에서 수행됨.
      • 오프라인 학습: 학습한 것을 적용만 하고 실행 중에는 학습을 하지 않음.
    • data drift: 모델의 성능이 시간에 지남에 따라 천천히 감소하는 경향. -> 이를 해결하기 위해서는 최신 데이터에서 모델을 정기적으로 재훈련하는 것이다.
    • 대량의 데이터를 사용하면 많은 자원과 시간이 필요하다. 이를 자원이 시스템에서 사용하기 위해서는 점진적으로 학습할 수 있는 알고리즘을 사용하는 것이 낫다. -> 온라인 학습
    • 온라인 학습(incremental learning)
      • 데이터를 순차적으로 한 개씩 또는 미니배치라 부르는 작은 묶음 단위로 주입하여 시스템을 훈련시킴.
      • 매 학습 단계가 빠르고 비용이 적게 들어 시스템은 데이터가 도착하는 대로 즉시 학습할 수 있다.
      • 온라인 학습에서는 모델을 훈련하고 제품을 론칭한 뒤에도 새로운 데이터가 들어오면 계속 학습함.
      • 온라인 학습은 극도로 빠른 변화에 적응해야 하는 시스템(ex. 주식시장)에 적합함.
      • 학습률(learning rate): 변화하는 데이터에 얼마나 빠르게 적응할 것인지.
  • 일반화
    • 사례 기반 학습
      • 두 데이터 사이의 유사도(similarity)를 측정해서 공통점이 많으면 같은 부류로 취급.
      • 샘플을 기억하는 것이 학습
    • 모델 기반 학습
      • 샘플들의 모델을 만들어 예측에 사용하는 것 -> 모델 식을 만듦.
      • 모델 파라미터 값을 정의하기 위해 측정 지표를 정해야함. 
        • 효용함수(utility function) 또는 적합도 함수(fitness function): 모델이 얼마나 좋은지 측정
        • 비용함수(cost function): 모델이 얼마나 나쁜지 측정
          • 선형 회귀에서는 보통 선형 모델의 예측과 훈련 데이터 사이의 거리를 재는 비용 함수를 사용함. -> 이 거리를 최소화하는 것이 목표!
        • 가장 잘 맞는 선형 모델의 파라미터를 찾는 것을 '모델을 훈련시킨다.'라고 함.
          1. 데이터 분석
          2. 모델 선택
          3. 훈련데이터로 모델 훈련(학습 알고리즘이 비용 함수를 최소화하는 모델 파라미터를 찾음)
          4. 새로운 데이터에 모델을 적용해 예측을 만듦.(추론(inference))
        • 데이터 분석 -> 모델 선택 -> 훈련데이터로 모델 훈련 -> 새로운 데이터에 모델을 적용해 예측을 만듦(추론)

 


데이터

나쁜 데이터란?

  • 충분하지 않은 양의 훈련 데이터
  • 대표성 없는 훈련 데이터(편향이 있을 수 있음)
  • 낮은 품질의 데이터

나쁜 알고리즘이란?

  • 훈련 데이터 과대 적합(overfitting)
    • overfitting: 모델이 훈련데이터에는 잘 맞지만 '일반성이 떨어짐.'
    • overfitting은 훈련 데이터의 양과 잡음에 비해 모델이 너무 복잡할 때 일어남.
      • 해결 방법
        • 파라미터 수가 적은 모델 선택(고차원 다항 모델 -> 선형 모델)
        • 훈련 데이터에 있는 특성수 줄임
        • 모델에 제약을 가하여 단순화시킴(규제)
          • 학습하는 동안 적용할 규제의 양은 하이퍼파라미터(hyperparameter)가 결정한다. 
          • 하이퍼파라미터: (모델이 아니라)학습 알고리즘의 파라미터. 학습 알고리즘으로부터 영향을 받지 않으며, 훈련 전에 미리 지정되고, 훈련하는 동안에는 상수로 남아있음.
          • 규제 하이퍼파라미터를 매우 큰 값으로 지정하면(기울기가 0에 가까운) 거의 평판한 모델을 얻게 된다. -> 오버피팅은 안 되지만 좋은 모델이 되지 못함.
        • 훈련 데이터를 더 많이 모음
        • 훈련 데이터의 잡음을 줄임.(오류 데이터 수정과 이상치 제거)
    • 훈련 데이터 과소 적합(underfitting)
      • underfitting: 모델이 너무 단순해서 데이터의 내재된 구조를 학습하지 못할 때 일어남.
        • 해결 방법
          • 모델 파라미터가 더 많은 강력한 모델 선택
          • 학습 알고리즘에  더 좋은 특성을 제공함.
          • 모델의 제약을 줄임.(규제 하이퍼파라미터를 감소시킴)

테스트

모델이 새로운 샘플에 얼마나 잘 일반화되는지 알기 위해서 테스트를 수행한다.

새로운 샘플에 대한 오차 비율을 일반화 오차라고 한다.

 

(훈련 데이터를 훈련 세트와 테스트 세트로 나눔)

훈련 오차가 작지만(즉, 훈련 세트에서의 모델 오차가 작음) 일반화 오차가 크다면 해당 모델은 오버피팅(즉, 샘플에 너무 과적합됨)됐다고 볼 수 있다.

 

모델 평가

  • 테스트 세트와 검증 세트를 통해서 선택한 모델이 적절한지 평가할 수 있다.

 


 

애플리케이션 사례

  1. 긴 문서를 자동으로 요약하기
    • 텍스트 요약이라 불리는 NLP의 한 분야. NLP도구 사용
      • NLP(Natural Language Processing): 자연어 처리. 머신러닝을 사용하여 텍스트(인간 언어)의 구조와 의미를 파악함.   
  2. 챗봇 또는 개인 비서 만들기
    • 자연어 이해(NLU)와 질문-답변 모듈을 포함해 여러가지 NLP컴포넌트가 필요함.
  3. 음성 명령에 반응하는 앱 만들기
    • 음성 인식 작업. 오디오 샘플을 처리해야함. 
    • 이는 길고 복잡한 시퀀스이므로 일반적으로 RNN, CNN, 트랜스포머를 사용함.

등등..

 


총정리

머신러닝은 기계가 데이터로부터 학습함.

'머신러닝' 카테고리의 다른 글

sklearn, pandas, numpy, matplotlib  (0) 2024.10.09
핸즈온 머신러닝 3판 2장(2)  (1) 2024.10.09
핸즈온 머신러닝 3판 2장(1)  (3) 2024.10.09
Kernel  (0) 2024.10.07
핸즈온 머신러닝 3판 2장  (0) 2024.10.06