본문 바로가기

인공지능/딥러닝

1. 처음부터 시작하는 머신러닝과 딥러닝: 입문자를 위한 완벽 가이드

반응형

영어 공부를 하면서 그동안 놓고 있었던, 머신러닝, 인공지능 공부를 다시 시작하려고 한다. 처음부터 천천히 다시 시작해보자.

 

머신러닝이란?

어떤 작업 T에 대해 컴퓨터 프로그램의 성능을 P로 측정했을 때 경험 E로 성능 P가 향상됬다면, 컴퓨터는 경험 E를 통해 학습한 것이라고 한다. - 톰 미첼

 

  • 머신러닝을 사용하는 이유?
    • 전통적인 프로그래밍 기법을 사용해서 스팸 필터를 만든다고 했을 때, 스팸 메일에서 나타나는 공통적인 단어들을 알고리즘으로 작성해 이를 스팸메일로 분류할 수 있는데, 이런식으로 공통적인 단어들을 모두 찾아 작성하기에는 한계가 있다, 반면에 머신러닝 기법을 사용한다면? 알고리즘을 컴퓨터가 직접 학습해 최적의 기준을 만들어 스팸메일을 자동으로 구분하기 때문에, 유지보수에 있어 편하고, 성능 또한 더 믿을 수 있다.

머신러닝 애플리케이션 사례

- 핸즈온 머신러닝 : 사이킷런, 케라스, 텐서플로 2를 활용한 머신러닝, 딥러닝 완벽 실무에 나온 내용을 기반으로 나에게 필요한 것들을 정리해보았다.

  • 생산 라인에서 제품 이미지를 분석해 자동으로 분류하기 : 이미지 분류 작업, 일반적으로 합성곱 신경망 (Convolution Neural Network)을 사용합니다. 
    • 합성곱 신경망은 어떻게 만들 수 있을까?
  • 자동으로 뉴스 기사를 분류하기 : 자연어 차리 (Netural Langauge Processing) 작업, 순환 신경망 (Recurrent Neural Network), CNN, 트랜스포머 (Transformer)를 사용합니다.
  • 다양한 성능 지표를 기반으로 회사의 내년도 수익을 예측하기 : 회귀 (Regression) 작업이다, 선형 회귀 (Linear Regression), 다항 회귀 (Polynormal Regression), 회귀 SVM, 회귀 랜덤 포레스트 (Random FOrest), 인공 신경망 (Artificial Neural Network)와 같은 회귀 모델을 사용한다. 과거 성능 지표를 고려하려면, RNN, CNN 또는 트랜스포머를 이용할 수 있다.
  • 구매 이력을 기반으로 고객을 나누고, 각 집합마다 다른 마케팅 전략을 계획하기 : 군집 (Clustering) 작업이다.
  • 고차원의 복잡한 데이터셋을 명확하고 의미 있는 그래프로 표현하기 : 데이터 시각화 작업이다, 차원 축소 (Dimensionality Reduction) 기법을 사용한다. 

머신러닝 시스템 종류

기준에 따라 종류를 분류할 수 있다.

  • 사람의 감독하에 훈련?
    • 지도 학습
    • 비지도 학습
    • 강화 학습
  • 실시간으로 점진적인 학습? 
    • 온라인 학습
    • 배치 학습
  • 단순하게 알고 있는 데이터 포인트와 새 데이터 포인트를 비교하는 것인지? 과학자들이 하는 것처럼 훈련 데이터셋에서 패턴을 발견해 예측 모델을 만드는지?
    • 사례 기반 학습
    • 모델 기반 학습

배치 학습과 온라인 학습

입력 데이터의 스트림 (Stream)으로부터 점진적으로 학습할 수 있는지 여부에 따른 기준

 

  • 배치학습 (Batch Learning)
    • 배치 학습 시스템이 점전직으로 학습할 수 없습니다. 가용한 데이터를 모두 사용해 훈련시켜야 합니다. 일반적으로 이 방법은 시간과 자원을 많이 소모하므로 보통 오프라인에서 수행됩니다. 먼저 시스템을 훈련하고, 그런 다음 제품 시스템에 적용하면, 더 이상의 학습없이 실행됩니다 -> 이를 오프라인 학습 (Offline Learning)이라고 합니다.
  • 온라인 학습 (Online Learning)
    • 데이터를 순차적으로 한 개씩 또는 미니배치라 부르는 작은 묶음 단위로 주입하여 시스템을 훈련시킵니다. 매 학습 단계가 빠르고 비용이 적게 들어 시스템은 데이터가 도착하는 대로 즉시 학습할 수 있습니다. 온라인 학습 시스템에서 중요한 파라미터 하나는 변화하는 데이터에 얼마나 빠르게 적응할 것인지 입니다. 이를 학습률 (Learning Rate)라고 합니다. 

사례 기반 학습과 모델 기반 학습

어떻게 일반화 (Generalize)되는가에 따라 분류할 수도 있다.

훈련 데이터에서 높은 성능을 내는 것이 좋지만, 그게 전부는 아니다. 진짜 목표는 새로운 샘플에 잘 작동하는 모델이다. 일반화를 위한 두 가지 접근법은 사례 기반 학습과 모델 기반 학습이다.

 

  • 사례 기반 학습
    • 가장 간단한 형태의 학습은 단순히 기억하는 것! Ex) 사용자가 스팸이라고 지정한 메일과 동일한 모든 메일을 스팸으로 분류한다. 어떻게 이게 가능한가? -> 스팸 메일과, 새로운 메일의 유사도를 측정 (SImilarity Measure)를 한다. 유사도 측정을 어떻게? -> 간단한 방법은 공통되는 단어를 측정한다.
  • 모델 기반 학습
    • 샘플로부터 일반화시키는 다른 방법은 이 샘플들의 모델을 만들어 예측 (Prediction)에 사용하는 것이다. 이를 모델 기반 학습이라고 한다.

돈이 사람을 행복하게 만드는가? 

GDP와 삶의 만족도를 나타나는 데이터를 통해, GDP가 높으면 삶의 만족도가 높아지는지를 확인하고, 더 나아가 GDP에 따른 삶의 만족도를 예측할 수 있다.

 

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression


data_root = "https://github.com/ageron/data/raw/main/"

lifesat = pd.read_csv(data_root + "lifesat/lifesat.csv")

x = lifesat[["GDP per capita (USD)"]].values
y = lifesat[["Life satisfaction"]].values

lifesat.plot(kind = 'scatter', grid =True, x = "GDP per capita (USD)", y= "Life satisfaction")
plt.axis([23_500, 62_500, 4, 9])
plt.show()

X = GDP, Y = 삶의 만족도
테이블 데이터

model = LinearRegression()

model.fit(x, y)

X_new = [[37_655.2]]

print(model.predict(X_new))

->> [[6.30165767]]

 

머신러닝의 주요 도전 과제?

우리의 주요 과제는 -> 학습 알고리즘을 선택해서 어떤 데이터에 훈련시키는 것이므로, 문제가 될 수 있는 두가지는 다음과 같습니다.

  • 나쁜 알고리즘
  • 나쁜 데이터

Data Vs Algorithm

 

샘플링 잡음 (Sampling Noise), 샘플링 편향 (Sampling Bias)

우연에 의한 대표성 없는 데이터 VS 매우 큰 샘플도 표본 추출 방법이 잘못되면 대표성을 띠지 못한다. 

 

특성 공학 (Feature Engineering)

특성 선택 (Feature Selection) 

 - 가지고 있는 특성 중에서 훈련에 가장 유용한 특성을 선택하기

특성 추출 ( Feature Extraction)

 - 특성을 결합하여 더 유용한 특성을 만듭니다. 앞서 본 것처럼 차원 축소 알고리즘이 도움이 될 수 있다.

 

훈련 데이터 과대적합 (Overfiting)

훈련 데이터에 너무 잘맞으면, 일반화에 무리가 있다.

훈련 데이터 과소 적합 (Underfiting)

훈련 데이터에서 너무 학습을 못하면, 일반화에 무리가 있다.

 

 

모델을 평가하고, 필요하다면 상세하게 튜닝해야 한다.

  • 훈련 세트와 테스트 세트 두 개로 나누자.
    • 새로운 샘플에 대한 오류 비율 -> 일반화 오차 (Generalization Error, Out-of-sample Error), 테스트 세트에서 모델을 평가함으로써 이 오차에 대한 추정값을 얻는다. 이전에 본 적 없는 새로운 샘플에 모델이 얼마나 잘 작동하나?
  • 하이퍼파라미터 튜닝과 모델 선택
    • 홀드아웃 검증 (Holdout Validation) -> 훈련 세트의 일부를 떼어내어 여러 후보 모델을 평가하고, 가장 좋은 하나를 선택한다. 
    • 교차 검증 (Cross-Validation) -> 작은 검증 세트를 여러 개를 사용해 반복적인 검증을 수행하는 것이다. 
반응형