본문 바로가기
Deep Learning Specialization

Error Analysis [Deep Learning Specialization #8]

by ALTERww 2022. 7. 20.
320x100

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

 

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

이번 주차에서는 에러 분석과 다양한 ML 모델을 살펴 봅니다.

 

Error Analysis

이전 시간에 여러 Metric을 활용하여 모델의 성능을 개선 방향을 최적화할 수 있다는 것을 배웠습니다. 비슷하게, 여러 고양이 분류기 모델을 학습시키고 평가하기 위해 다양한 지표를 기준으로 둘 수 있습니다. 

  • Dog : 강아지 이미지를 고양이로 분류하는 Error
  • Big cat : 큰 고양이에 대해 저하되는 성능 오차
  • Blurry : 흐린 이미지에 대해 저하되는 성능 오차
  • App Filters : 모바일 앱 필터에 의해 저하되는 성능 오차 등등...

오차율이 큰 지표를 개선하면 성능 개선 효과가 증가합니다. 아래의 경우 App Filters에 의한 Error는 12%이고, Big Cat이나 Blurry에 의한 Error는 43%, 61%로 비교적 상당히 높습니다. 이런 경우 App Filters에 대해 개선하면 최대 12%밖에 개선하지 못하지만, Blurry와 Big Cat에 대한 성능을 개선하면 최대 43%, 61%까지 효과가 드러날 수 있는 것입니다. 이러한 최대 요구 한도를 "ceiling" ( = 천장 ) 이라고 합니다.

 

 

When Starting with new application system..

응용시스템을 처음 만들 때에는, 너무 많은 사항을 고려하지 말고 일단 Basic한 모델을 최대한 빨리 만들고 학습하는 것이 중요하다고 말합니다. 

  1. Dev Set과 Test Set을 나누고, Metric을 결정한다.
  2. Basic Initial System을 최대한 빨리 만들고 학습을 시작한다.
  3. Bias, Variance, Error를 분석하여 모델의 개선 방향을 찾는다.

 

 

Data with different distribution

기존에는 Web에서 구한 데이터셋 200,000장으로 모델을 train하고 있었는데, 이후 Mobile에서 획득한 데이터셋 10,000장을 추가하기로 결정했다고 가정합시다. 그렇다면 이 10,000장은 어떻게 분포시키는 것이 적절할까요?

 

Web의 데이터와 Mobile의 데이터는 입력 이미지의 특징이 뚜렷하게 다릅니다. 그리고 Web의 데이터셋은 충분히 많기 때문에, Train Set에 Web 데이터셋을 모두 넣고 Mobile을 5000, 2500, 2500으로 나누어 train : dev : test에 넣는 것이 가장 좋은 방법입니다. 상대적으로 데이터가 적은 Mobile의 이미지에 대해서 dev, test를 과적합시켜 Web과 Mobile 동시에 모델이 꽤 괜찮은 성능을 가지도록 하는 것입니다. 

 

 

 

Mismatched Data

Mismatched Data는 데이터를 Train, Dev, Test에 적절하게 분포시키지 않은 상태를 이야기합니다. 이 상태를 확인하기 위해서는, Train Data에 속하지만 Train에 이용되지 않은, 즉 모델이 Train 중 보지 못했던 데이터 Train-dev Data를 따로 준비해야 합니다.

만일 데이터셋이 하나의 분포에서 왔다면, Train-dev set와 dev set은 모델 입장에서 똑같이 "Train 중 보지 못했던 데이터"가 됩니다. 따라서 이 데이터셋에 대한 Error 차이는 그만큼 Data가 Mismatched 되어있다는 것을 의미합니다.

( Train-dev set은 모델이 처음 보는 데이터이기 때문에 Train Error와 Train-dev Error의 차이는 분산을 의미합니다. )

 

 

 

아래의 테이블은 데이터의 규모와 데이터 분류에 따른 오차를 표시한 것입니다. 

데이터셋 별 Error 차를 보고 그 원인이 회피 편향인지, 분산인지, Data Mismatch인지 분석한 뒤 모델을 개선하면 되겠습니다.

 

복습해보면, Training Error와 Human Error의 차이는 회피 편향을 의미했고, Training Error와 Dev Error는 분산을 의미했습니다.

 

Data Mismatch의 해결책으로는 Training data와 Dev data를 비슷하게 만드는 것입니다. 하지만 이를 위해서는 데이터를 늘려야 하는데, Data Augmentation 등의 합성 방법을 이용하면 모델이 과적합될 수 있으니 조심해야 합니다.

 

 

Transfer Learning

이미 훌륭한 기본 모델이 주어져 있다면, 전이 학습을 통해 원하는 모델을 빠르게 학습시킬 수 있습니다.

전이 학습의 예로 영상의학 모델을 들 수 있습니다. 영상의학의 기초가 되는 모델은 이미지 인식 모델이고, 이는 이미 인터넷에 양질의 데이터셋과 학습된 모델이 충분히 많습니다. 그리고 훌륭한 이미지 인식 모델의 저차원 특징들은 자연스럽게 영상의학 모델 학습에도 큰 도움이 될 것입니다. 이러한 경우, 이미지 인식 모델에서 영상의학 모델로의 전이 학습을 고려할 수 있습니다.

 

A 에서 B로의 전이 학습이 요구되는 조건은 아래와 같습니다.

  • 입력 Input이 같다.
  • B보다 A에 데이터가 충분히 많다.
  • A의 저차원 Features가 B의 학습에 도움이 된다.

 

 

Multi-task Learning

하나의 신경망에서 여러 Label값을 얻도록 학습하는 모델을 Multi-task Learning이라고 합니다.

길거리 사진에서 신호등, 보행자, 표지판, 자동차 등의 여러 물체가 있는지를 판별하는 모델이 이에 해당합니다.

3개 이상의 Class에서 가장 확률이 높은 하나의 Label을 Output으로 가지는 Softmax와는 다른 특징이 있습니다.

 

여러 Task를 하나의 신경망으로 구성해야 하기 때문에 각 Task가 저차원 특징들을 공유하면서, Train 장비가 충분할 때에만 사용이 가능합니다. 그리고 여러 Task를 모두 구성하고 있는 데이터가 비슷하고, 충분히 있을 때 추천되는 학습입니다.

 

 

 

End-to-End DL(종단간 Deep Learning)

문제 해결을 위한 아키텍쳐를 디자인할 때, 단계별로 나누어 디자인할 수도 있고 단순히 Input X에서 Output Y로 설계할 수도 있습니다. 이러한 설계 디자인을 End-to-End Deep Learning이라고 합니다.

 

아래에서는 음성을 텍스트로 변환하는 아키텍쳐를 예로 들고 있습니다. 특징, 음소, 단어, 변환문으로 단계적 Design을 할 수도 있지만, 단순히 음성 X로부터 변환문 Y로의 딥러닝 모델을 구상할 수도 있습니다.

 

종단간 DL의 장점은 설계가 쉽고 data를 변환할 필요가 없으며, 입력과 출력 사이 통계를 더 잘 반영할 수 있습니다.

물론 단점도 존재합니다. 설계가 단순한 만큼 많은 data를 필요로 하며, 좋은 성능을 보장하지도 않습니다. 문제를 쉽게 해결하기 위해 사용되는 종단간 DL이지만, 단계적 Design이 오히려 문제를 더 간단하게 해결해 줄 때도 있습니다.

 

 

사실 Week 3를 제대로 이해하려면 Quiz를 풀어봐야 한다. 시나리오를 제공하여 그에 대한 분석과 솔루션을 제시하는 문제 15개가 출제되는데, 꽤나 난이도가 높다. 실제로 재시도를 2번이나 쓰기도 했고...

댓글