본문 바로가기
Deep Learning Specialization

ML Strategy [Deep Learning Specialization #7]

by ALTERww 2022. 7. 19.
320x100

Coursera의 Deep Learning Specialization - Week 3의 강의를 수강하면서 필기한 내용을 바탕으로 정리한 글입니다.

 

3주차는 실무에서의 Machine Learning을 다룰 때 마주하는 문제점들을 분석하고 해결하는 전략들을 배웁니다.

 

Orthogonalization - 직교화

지난 주차의 Early Stopping을 배울 때, Orthogonalization(직교화)라는 단어를 언급했었습니다. 직교화는 하나의 기능을 하나의 제어로만 통제하는 경향을 의미합니다. 앞, 뒤, 좌, 우로 물건을 이동시킨다고 할 때, 각 스위치들이 여러 방향을 포함하고 있기보다는 하나의 스위치당 하나의 방향만을 제어하는 것이 사용자 입장에서도, 엔지니어 입장에서도 편할 것입니다.

 

이것은 Machine Learning에서도 아주 중요하게 작용합니다. 그에 대한 예시로, 모델 성능을 테스트하는 과정에서

Dataset Error를 분석할 때도 Dataset 별로 나누어 문제를 해결하는 것이 성능 개선에 도움이 많이 됩니다.

  • Train Set Error : Network를 크게 만들거나, Adam을 이용하여 Weight와 bias를 최적화합니다.
  • Dev Set Error : 정규화를 진행하거나 Training Dataset을 추가하여 모델의 Overfitting을 줄입니다.
  • Test Set Error : Dev Set에 대한 Overfitting을 줄이기 위해 Dev Set을 증가시킵니다.
  • Real World(배포) : Dev Set을 수정하여 일시적으로 모델의 성능을 끌어올리거나, 비용 함수를 수정합니다.

 

 

Single Evaluation Metric

 

고양이를 분류하는 모델 A와 B가 있다고 합시다. 아래에는 총 3가지의 Metric을 보여주고 있습니다.

  • Precision : 전체 정확도
  • Recall : 실제 고양이 사진에 대한 정확도
  • F1 Score : 각 요소의 역수를 산술평균하고, 다시 역순한 값.

Precision에 대해서는 B가 훌륭한 데에 반해, Recall에 대해서는 A가 좋은 성능을 보여줍니다.

여러 평가 Metric을 이용하는 이유는, 이 중 사용자가 원하는 Metric에 대해 선택하여 모델을 개선할 수 있기 때문입니다.

사용자가 Precision을 더 중요시한다면 B 모델을 선택할 것이고, Recall을 더 중요시한다면 A를 선택할 것입니다.

 

N 개의 Metric을 활용할 때, 가장 원하는 하나의 Metric을 최적화(Optimizing)하고, 나머지 N-1 개의 Metric은 최소 기준치 이상의 평가만 얻기를 원하도록 합니다. 아래 예시에서는 높은 정확도가 최우선일 때, 정확도에 대해 최적화하고 나머지 Metric( running time )는 100ms 이하만 만족하면 충분한 모델임을 보여주고 있습니다.

 

 

 

Dataset Distribution

Metric은 Dev Set에 대해서 주로 시행합니다. 최종 모델 전, 모델의 성능을 가장 잘 보여줄 수 있기 때문입니다.

이 과정이 완료되었다면, Test Set에 대해 모델을 테스트합니다. 이 때, Test Set은 Dev Set과 같은 분포여야 합니다. 특정 분포에만 핵심적이고 중요한 데이터가 들어있을 수 있고, 이후 미래에 추가될 데이터도 고려해야 하기 때문입니다.

우측과 같이 여러 분포의 데이터를 가지고 있다면, 두 Set 모두 섞어서 이용해야 모델을 정확하게 테스트할 수 있습니다.

 

 

 

Dataset Size

데이터셋의 비율은 60 : 20 : 20이 주류였으나, 최근에는 Training Set의 비율이 증가하고 있습니다.

Test Set도 있으면 좋으나, 전체 시스템의 성능을 고루 테스트할 수 있을 정도의 충분한 크기여야 합니다.

물론 Dev Set이 충분히 크고, Overfitting이 없으면 굳이 필요하지 않습니다.

 

 

 

When to change Dataset & Metric?

모델의 오류가 충분히 낮게 나오는데 사용자들의 선호도가 좋지 않을 때에는 데이터셋과 Metric이 잘못되어 있을 가능성이 높습니다. 따라서 두 가지를 바꾸는 방안을 고민해야 합니다. 

두 가지 중에서 Metric을 먼저 다시 정해보는 것이 좋습니다. 비교적 적은 시간과 노력으로 확인이 가능하기 때문입니다.

이 과정에서 앞서 배운 "직교화"를 생각해 보는 것이 바람직합니다.

 

 

Human Error & Bayes Error

ML을 인간 수준까지 성능을 끌어 올리는 것은 그리 어렵지 않다고 말합니다. 실제 인간으로부터 Label Data를 구할 수 있고, 통찰력(Insight)을 얻을 수 있기 때문입니다.

그러나 인간 수준을 넘어서면 방식과 도구가 많이 없기 때문에 수준이 올라가는 속도가 매우 정체됩니다. 

이론상 그 한계점을 "Bayes Optimal Error"라고 합니다. 이론적 최소 오차라는 설명이 제일 정확하다고 생각되네요.

Human Error은 인간 수준의 Error를 의미하는데, 가짜(Proxy) 값으로 대신 Bayes Error를 사용하는 경우가 많습니다. 

 

이전에 Training Error와 Dev Error 간의 오차 차이는 분산(Variance)을 의미한다는 것을 배웠습니다.Training Set에 모델이 overfitting하여, Dev Set에 대해서는 좋지 않은 성능을 보이고 있는 상태입니다.

(편향 Bias는 Training Error만을 보고, 모델이 underfitting함을 의미합니다.) 

 

여기에서 Human Error와 Training Error와의 오차 차이는 Avoidable Bias, 회피 편향을 의미합니다. 

 

 

Improving ML Models

인간 수준을 넘어서기 위한 ML Model을 만들기 위해서, 회피 편향과 분산을 줄이려는 많은 노력이 필요합니다.

  • Avoidable Bias
    • Network를 크게 만들기
    • Training을 더 길게 / 좋은 Optimizer를 이용하기. Adam, Momentum, RMSprop, ...
    • Model Architecture / Hyper-Parameters 값 개선하기.
  • Variance
    • Training Set 늘리기
    • 정규화(Regularization) 적용하기. L2, Dropout, Data Augmentation,...
    • Model Architecture / Hyper-Parameters 값 개선하기.

 

 

댓글