[Book] 파이썬 딥러닝 파이토치 PART 2 : AI Background (1)
본문 바로가기
AI/ML&DL

[Book] 파이썬 딥러닝 파이토치 PART 2 : AI Background (1)

2022. 8. 18.

1. AI (Artificial Intelligence; 인공지능)

1-1. AI란?

   AI (인공지능)는 '인간의 지능으로 할 수 있는 사고 학습 등을 컴퓨터가 할 수 있도록 하는 방법을 연구하는 컴퓨터 공학 및 정보 기술의 한 분야', 또는 '컴퓨터가 학습하고 생각하여 스스로 판단할 수 있도록 만드는 기술'이다. (쉽게 생각하면, 인간이 귀찮으니까 인간이 할 것을 컴퓨터 기계가 대신하는 것...)  

  아래에서 AI의 다양한 사례를 살펴볼 수 있다.

  • Image Classification(이미지 분류) ex) ResNet
  • Object Detection (객체 탐지)
    Classification (해당 object가 어떤 object인지 분류) + Localization (object의 위치 찾기) → Bounding Box를 그려서
  • NLP (Natural Language Processing; 자연어 처리)
     RNN(Recurrent Neural Network; 순환 신경망), 논문 <Attention Is All You Need>, Language Model
    - Machine Translation (기계 번역)
    - Setence Classification (문장 / 문서 분류)
    - Q/A (Question & Answer System; 질의응답)
    - NER (Named Entity Recognition; 개체명 인식)
  • Reinforcement Learning (강화 학습) ex) 알파고
  • GAN (Generative Adversarial Networks)
    데이터를 '예측'하는 것을 넘어 '생성'
    - BigGAN
  • Style Transfer
    ex) 여름 풍경을 겨울 풍경으로 바꾸기
    - CycleGAN (Style Transfer에 GAN 적용)
  • Deepfake

1-2. deep learning ⊂ machine learning ⊂ AI

  예전에는 deep learningmachine learning의 포함 개념으로 많이 보았는데, 최근에는 전통적인 machine learning (통계적인 machine learning)과 deep learning을 많이 구분하고 있다. (전통적으로는 deep learning이 machine learning의 포함 개념으로 봐야 하지만, 지금은 병렬적인 개념으로 보는 것이다.)

  데이터의 종류로 machine learning과  deep learning을 구분하자면, machine learning은 정형 데이터를 예측(prediction)하거나 분류(classification)할 때 사용된다고 보면 되고, deep learning은 이미지, 텍스트와 같은 비정형 데이터를 사용한다고 보면 된다.

 

2. Machine Learning (머신러닝)

2-1. 모델 학습

 machine 'learning', deep 'learning'... learning을 하기 위해서는 정답 (label)이 필요하다. machine learning의 목표는 Input에 대한 model의 Output이 Label(정답)과 최대한 비슷하게 나오도록 학습시키는 것이다. 

  1. Input을 model에 주입하고, Output을 얻는다.
  2. Output를 Label과 비교해 model의 성능을 파악한다.
  3. Task를 잘 수행할 때까지 (원하는 성능이 나올 때까지) 1, 2의 과정을 반복한다.

2-2 Loss Function (손실 함수) / Cost Function (비용 함수) / Object Function (목적 함수)

  Loss function(or Cost function or Object Fuction)은 모델이 출력한 Output과 Label의 수치화된 차이를 함수화한 것이다. loss function의 값인 loss를 줄이는 방향으로 학습하는 것(loss 최소화)이 우리의 목표이다.

 대표적인 loss function으로 MSE (Mean Squared Error; 평균제곱오차)가 있다. 이외에도 MAE (Mean Absolute Error; 평균절대오차), RMSE (Root Mean Squared Error; 평균제곱근오차), Classification에 많이 사용되는 BCE (Binary Cross-Entropy), CCE (Categorical Cross-Entropy) 등이 있다.

 

2-3. Machine Learning의 종류

 machine learning은 크게 label 유무로 Supervised Learning (지도학습, label 제공)과 Unsupervised Learning (비지도 학습, label 미제공)으로 나뉜다. 또는 Reinforcement Learning (강화학습)까지 추가하여 세 파트로 구분한다. 

 

1) Supervised Learning (지도 학습)

  data가 주어졌을 때, 무엇(x)으로 무엇(y)을 예측하고 싶을 때, Supervised Learning이 사용된다. 

  • x : Independent Variable (독립변수) / Feature (특성)
    - 예측에 도움 되는 independent variable만 선택하는 것이 매우 중요함 
       → Feature Selection / Variable Selection
    - x가 numeric variable (수치형 변수) 일 때, Regression (회귀) 문제
      ex) 주식 가격 예측
    - x가 categorical variable (범주형 변수)일 때, Classification (분류) 문제
      ex) 비만 여부 예측 
  • y : Dependent Variable (종속변수) / Response Variable (반응 변수) / Target Variable (타깃 변수)

2) Unsupervised Learning (비지도 학습)

  • Clustering (군집화)
  • Dimension Reduction (차원 축소)

3) Reinforcement Learning (강화 학습)

  Reinforcement Learning은 수많은 simulation을 통해 컴퓨터가 현재 상태 (State)에서 어떤 행동 (Action)을 취해야 미래의 보상 (Reward)를 최대로 받을 수 있는지 학습하는 알고리즘이다.

  현재 상태 (State), 행동 (Action), 보상 (Reward), 다음 상태 (Next State)로 구성되어 있는데, 알파고를 예로 들자면,

현재의 바둑판이 'State', 바둑의 수를 'Action', 바둑의 수를 두고 난 후의 바둑판이 'Next State'가 될 것이다. 이때, 바둑의 수를 두고 난 후에 이기면 Reward, 지면 Punishment를 주는 방식으로 수많은 simulation을 돌리면서 학습을 진행한다. 

 

2-4. Supervised Learning의 종류

1) Linear Regression Model (선형 회귀 모델)

  예측 값과 실제 값의 차이가 적을수록 좋은 직선이라고 볼 수 있다. 즉, loss가 최소인 직선이라고 생각할 수 있다. 그래서 linear regression model은 직선의 기울기를 예측 값과  실제 값의 차이의 제곱합이 줄어드는 방향으로 최적의 직선을 찾고자 한다. 

$$ MSE=\frac{1}{n}\sum_{i=1}^n (y_i - \hat{y_i})^2 $$

 (1) Simple Linear Regression Model (단순 선형 회귀 모델)

   independent variable 하나만으로 dependent variable를 예측하는 모델

   ex) 키라는 독립변수 하나로 종속변수인 몸무게 예측

 (2) Multiple Linear Regression Model (다중 선형 회귀 모델)

 (3) Shrinkage Regression Model (회귀계수 축소 모델)

   일반적으로, 변수가 많을수록 회귀 모델의 train data에 대한 성능은 높아지고, 학습하지 않은 test data나 실제 data에 대한 성능은 낮아진다 (overfitting; 과적합). 또한, 변수가 많아지면 많아질수록 독립변수의 종속변수에 대한 설명력도 낮아진다. Why...? 각각의 독립변수가 종속변수에 관하여 지닌 설명력을 중복으로 가져가지 못하기 때문이다. ex) '키', '발 사이즈'를 통해 '몸무게'를 예측한다고 가정했을 때, '키'가 지닌 설명력과 '발 사이즈'가 지닌 설명력이 중복되는 것이 있을 텐데, 이를 각각 중복으로 가질 수 없다는 것이다. 따라서 적절한 변수만 선택해 모델에 사용하는 것이 중요하다. (무조건 변수를 많이 사용한다고 좋은 것이 아니다..) 

 

 이러한 문제 (변수가 많아지면, 변수의 설명력이 낮아지는 문제)를 완화해주는 방법이 Shrinkage Regression Model (회귀계수 축소 모델)이다. Shrinkage Regression Model은 MSE  최소화 + 회귀계수(regression coefficient ex) β) 자체도 축소시키도록 Loss를 구성한다.  $$ y = \beta_0 + \beta_1x$$ 

  • Lasso (L1 Regression, Least Absolute Shrinkage And Selection Operator) : 회귀계수가 완전히 0이 되도록 축소 가능하다.
  • Ridge (L2 Regression) : 회귀계수가 0으로 가까워지긴 하지만, 완전히 0이 되지는 않는다.
  • ElasticNet : Lasso와 Ridge의 중간

Lasso, Ridge, ElasticNet은 overfitting을 방지해주는 Regularization (일반화, 정규화, 규제) 기법이다.

 

2) Decision Tree (의사결정 나무)

  여러 번의 질문으로 답을 찾는 '스무고개 놀이'와 비슷, 높은 설명력을 지니고 있지만, Prediction 성능은 부족해 이를 발전시킨 Ensemble 모델을 많이 사용한다. 

 

3) K-NN (k-Nearest Neighbor)

 

4) Neural Network (NN, 신경망)

  Neural Network은 기본적으로 Input Layer (입력층), Hidden Layer (은닉층), Output Layer (출력층)으로 구성된 모델로, Loss를 최소화하기 위해 각 Layer를 연결하는 node의 weight를 update하면서 학습한다.  NN은 train data에 거의 100% fit될 수 있다. 이는, 즉, 실제로 예측해야 하는 data (test data, validation data)에는 fitting이 잘 안 될 수도 있다는 것이다. 줄여 말하면, overfitting 문제가 발생하기 쉽다. 그래서 오랫동안 NN이 사용되지 않았었다. 

 

5) SVM (Support Vector Machine)

  overfitting을 어느 정도 방지할 수 있는 알고리즘 (data 차원이 커질수록, 즉 변수나 데이터 수가 많아질수록 학습 시간이 오래 걸린다는 단점은 있음)

 

6) Ensemble Learning

  Ensemble은 '화합', '조합'을 뜻하는 프랑스어로, machine learning 모델도 다양하게 조합해 사용하면 더 좋지 않을까라는 생각이 Ensemble Learning의 시작이다. 다양한 모델들 중 우리가 찾고자 하는 모델에 대한 다양한 의견을 수렴해 voting을 바탕으로 최종 예측값을 만들고자 한 것이다. 

  • Bagging : data를 재구성해 모델 만들기
  • RandomForest : data와 variable를 random으로 추출해 모델 만들기
  • Boosting : 잘 예측하지 못하는 data를 더 집중적으로 학습시키기
    ex) Gradient Boosting : 예측 값과 실제 값의 차이 (Residual)를 점차 줄이면서 학습시키기 

3. Overfitting (과대 적합)

3-1. Overfitting이란?

overfitting vs underfitting vs optimal fitting

 model이 train data에 잘 맞지만, test data나 실전에서는 잘 안 맞는, 즉 일반성 (generalization)이 떨어지는 것이 Overfitting (과대 적합)이다. 위의 그림과 같이 train data의 noise 양에 비해 model이 너무 복잡할 때, overfitting이 발생한다. (위의 그림에서, data에 너무 맞추려고 하다 보니 지그재그 복잡한 형태를 보이고 있다는 것을 알 수 있다.)

 Underfitting (과소 적합)은 Overfitting의 반대로, model이 너무 단순해 data의 내재된 구조를 학습하지 못할 때 발생한다. (위의 그림에서, model이 단순 직선으로 너무 단순해 data에 잘 안 맞는다는 것을 알 수 있다.) 

Bias, Variance

Overfitting은 High Variance Low Bias (높은 분산 낮은 편향), Underfitting은 Low Variance High Bias (낮은 분산 높은 편향)라고 볼 수 있다. 최적의 fitting은 Low Variance Low Bias (낮은 분산 낮은 편향)이다. +) Bias - Variance Tradeoff

 

3-2. Overfitting 해결책

 먼저, Cross-Validation (교차검증)을 통해 model의 overfitting 여부 파악하기 

  => train data / validation(dev) data / test data

 +) K-Fold Cross-Validation (K-겹 교차검증) :

     train data가 많지 않을 때 사용된다. 

K-Fold Cross-Validation

 1. Task에 비해 너무 복잡한 model를 사용했을 때, overfitting이 발생한 것이므로, parameter 수가 적은 (단순한) model를 사용하거나 feature 수를 줄이기 (Reduce the number of features)

 2. 학습할 sample data 더 많이 모으기 (More training data)
     Why? train data가 많을수록 모집단의 특성을 잘 반영할 확률이 높아지기 때문임.

 3. 규제 (Regularization)

 

 

댓글