본문 바로가기
COURSERA

week 1_Machine Learning Strategy 1 (Andrew Ng)

by HYUNHP 2022. 3. 3.
728x90
반응형

안녕하세요, HELLO

 

오늘은 DeepLearning.AI에서 진행하는 앤드류 응(Andrew Ng) 교수님의 딥러닝 전문화의 세 번째 과정인 "Structuring Machine Learning Projects"을 정리하려고 합니다.

 

"Structuring Machine Learning Projects"의 강의를 통해 '머신 러닝 시스템의 오류를 진단할 수 있고, 오류를 줄이기 위한 전략의 우선순위를 지정하고, 일치하지 않는 training/test set와 같은 복합적인 ML 설정을 이해하며 휴먼 레벨의 성능에 필적 및/또는 능가하는 ML 설정을 이해하고, 종단 간 학습, 전이 학습, 멀티 태스크 러닝을 적용' 등을 배울 수 있습니다. 강의는 아래와 같이 구성되어 있습니다.

 

~ Machine Learning Strategy Ⅰ

~ Machine Learning Strategy Ⅱ

 

"Structuring Machine Learning Projects" (Andrew Ng) 1주차 "Machine Learning Strategy Ⅰ"의 강의 내용입니다.


CHAPTER 1. 'Machine Learning Strategy'

 

CHAPTER 2. 'Setting up your goal'

 

CHAPTER 3. 'Human-level performance'


CHAPTER 1. 'Machine Learning Strategy'

 

□ Orthogonalization (직교화)

 

직교화는 1개의 시스템에는 하나의 기능만 담당하며, 다른 시스템은 다른 기능 하나에만 조정하게 하는 것입니다. Orthogonalization은 이렇게 각각의 시스템에 한 개의 기능만을 갖도록 디자인함으로 기능 조정을 용이하게 하려고 합니다. 

옛날 티비를 예로 들어, 각각의 손잡이가 여러 기능을 가진다고 가정해보겠습니다. 손잡이는 이미지의 높이, 넓이, 회전각 등을 각기 설정할 수 있으며, 이를 전부 조절해야 원하는 이미지로 조정이 가능합니다. 이로 인해 원하는 이미지를 만들도록 조정(tuning)하는 것은 쉽지가 않습니다. 이때 직교화는 각각의 손잡이가 1가지 기능만 갖도록 조절하는 것을 의미하며, 이미지를 원하는 특정 위치로 조정을 편리하게 합니다.

 


□ Chain of assumptions in ML

머신러닝 시스템이 잘 수행되려면, 시스템의 손잡이를 튜닝해서 4가지 절차가 잘 유지되어야 합니다.

 

1. 트레이닝 세트에서 잘 되어야 합니다. 특정 app에서는 인간과 준하는 성능이어야 합니다.

(알고리즘을 튜닝, 최적화 알고리즘 대체하는 등의 방법을 통해 적용합니다)

 

2. 그다음에는 dev set에서 잘되어야 합니다.
(표준화(regularization), 더 큰 트레이닝 세트 등의 방법을 사용합니다.)

 

3. 그 다음에는 test set에서 잘 되어야 합니다.

(더 큰 dev set 사용할 수 있으며, dev set에서는 잘 동작하지만, test set에서는 잘 동작하지 않는다면, dev set에 overfit 되어있을 확률이 높기 때문에 다시 이전 단계로 돌아가서 더 큰 dev set을 사용해야 합니다.)

 

4. 최종적으로 현실세계에서 잘 적용되어야 합니다.

(dev set을 바꾸거나, cost function을 바꿔야 합니다. 이는 dev test set 분포가 잘 설정되어 있지 않거나, cost function 잘 설정되지 않은 상황에서 훈련시킨 것일 수도 있습니다)

 

추가적으로 early stopping은 트레이닝 세트 훈련과 dev set에서 성능 향상을 하는 두 가지 기능을 동시에 진행하다 보니, 직교화가 잘 안 되는 방법입니다. early stopping이 안 좋은 방법은 아니지만, 직교화한 튜닝이 가능하다면 튜닝 절차를 더 간편하게 할 수 있습니다.

 

 

CHAPTER 2. 'Setting up your goal'

 

□ Single number evaluation metric

 

하이퍼파라미터를 튜닝하거나, 머신러닝 시스템을 만드는 데 있어서 문제 해결을 위한 다른 방법을 찾는 경우에 Single number evaluation metric(실수 평가 측정 지표)가 있으면, 하이퍼파라미터 튜닝, 머신러닝 성능 확인 등에서 진행 속도가 훨씬 빨라지는 것을 확인할 수 있습니다. 이러한 지표로 머신러닝 방법들이 더 잘 동작하는지, 잘 동작하지 않는지를 판단할 수 있습니다. 그래서 머신러닝 프로젝트를 시작할 때, 실수 평가 측정 지표를 사용하는 것을 권장합니다.

머신러닝의 실험적 절차(empirical process)를 반복하여 알고리즘을 계속해서 개선해 나갑니다. 즉, 경험을 토대로, 아이디어를 코드화하고, 실험을 통해서 결과를 얻고, 결과를 사용해서 아이디어를 보완/개선합니다. 이러한 절차를 계속 반복해서 알고리즘을 계속 개선해나갑니다. 이러한 실험적 절차를 판단하는 지표로 precision(정확도), recall(재현율)이 있습니다.

Precision : 정확도, 정밀도를 의미하고, True라고 판별한 것 중에서 실제 True인 것의 비율입니다.
Recall : 검출율, 재현율이며, 실제 True인 것들 중에서 True라고 판별한 것의 비율을 의미합니다.

 

이 둘의 관계는 상충 관계이기에, 어떤 classfier가 더 좋은지를 구분하기 어렵습니다. 이를 극복하기 위해, 둘을 결합한 F1 scroe이 있습니다. F1 score는 정확도와 재현율의 조화 평균입니다. 

머신러닝 알고리즘을 평가하는 데 있어서, dev set 구축과 single number evaluation metric을 활용하면 빠르게 모델 간의 비교를 할 수 있어, 결과적으로 머신러닝 훈련 과정을 빠르게 진행할 수 있습니다.


□ satisficing and optimizing metrics

 

머신러닝을 평가할 때, 중요한 요소들을 모두 고려해서 single row evaluation metric으로 결합해서 나타내는 것은 쉬운 일이 아닙니다. 이런 경우에는 최소 충족 조건(satisficing)과 최적화(optimizing)가 유용합니다.

 

satisficing은 조건을 달성만 하면 되는 기준이고, optimizing은 가장 높은 성능을 나타내는 기준입니다. 일반적으로 N개를 고려해야 되는 matrix가 있으면, 1개를 optimizing metric으로 선택하고, 나머지 N-1개를 satisficing으로 선택하는 것이 합리적입니다. 

위 판별기는 running time과 accuracy 평가 기준을 활용하고 있습니다. 예를 들어, 100ms 이하 반응 속도에서 가장 좋은 정확도를 가지는 판별기를 선택한다면, 이때 running time은 satifsficing 조건에 해당하고, accuracy는 optimzing 조건에 해당합니다.

 

즉, 여러 가지 고려하는 요소가 있다면, 가장 좋은 결과를 얻고 싶은 한 가지 조건을 optimizing metric으로 설정하고, 나머지는 satisficing metric을 통해서 만족할만한 수치의 범위를 설정합니다. 각각의 특정 한계치를 일일이 찾는 것보다 항상 잘 구현되고, 빠른 속도로 여러 개의 알고리즘 중 가장 좋은 것을 선택할 수 있습니다.


□ Train/Dev/test distributions

 

dev set은 development set 또는 cross-validation set이라고 불리며, 알고리즘을 선택하기 위해 사용하는 데이터 세트입니다. dev set와 test set를 동일한 데이터 분포에서 가져오며, single number evaluation metric을 적용해서 진행하는 것을 권장합니다. 만약에 dev set와 test set가 다른 데이터 분포에서 가져와서 훈련하게 되면, 추후에 dev set 및/또는 test set가 변경될 경우, 새롭게 훈련해야 되는 문제점이 발생합니다. 

 


□ Size of dev and test sets

과거에는 train, test를 70:30 내지는 train, dev, test set를 60:20:20으로 구분했습니다. 과거에는 data set가 크지 않았기에, 이처럼 비율로 나는 방법은 유효한 방법이었습니다. (10, 1,000, 10,000 data set)

 

현재는 훨씬 더 큰 데이터를 사용하는 게 익숙하기에, 과거의 비율을 그대로 사용하는 것은 비효율적입니다. 1,000,000개의 data set를 활용하게 될 경우, 각각 1% (10,000개)를 dev set과 test set로 사용하는 것은 충분한 양입니다. 이에 따라 현재는 train set는 많은 데이터를 차지하고, dev set과 test set는 적은 데이터를 가지는 것이 추세입니다.


■ Test sets

 

test set의 목적은 시스템 개발을 마친 이후에, test set를 통해 시스템이 얼마나 좋은 지 평가하는 것입니다. 이를 위해 test set를 시스템 성능 평가에 대한 신뢰도를 보여줄 만큼의 충분한 데이터가 있으면 됩니다. train sets과 다르게 수백만 개의 데이터가 필요하지 않습니다. 


□ When to change dev/test sets and metrics

알고리즘 A는 3 퍼센트의 오차율, 알고리즘 B는 5 퍼센트의 오차율을 가지는 고양이 분류 모델(cat classification)을 예를 들어 보겠습니다. 이때, 알고리즘 A는 낮은 오차율에도 불구하고, 포르노 이미지를 많이 허용하는 문제가 나타나고 있습니다. 정량적으로 평가지표(error)와 dev set를 평가하게 되면 알고리즘 A를 선택하게 됩니다. 사실 알고리즘 B가 포르노 이미지를 배제하는 측면에서 더 낫지만 선택되지 못하게 됩니다.

 

즉, 이러한 평가 metrics의 결과가 예상치 않은 결과를 가져오는 등의 경우에는 dev set, test set 및/또는 metrics를 바꿔야 할 필요가 있습니다.

 

평가 metrics를 바꾸는 방법 중에는 오류 값에 높은 가중치를 부여하는 방법이 있습니다. 가중치 w에 non-porn image인 경우에는 1을, porn image에는 10배 가중치를 부여하여, 오차 점수를 높게 부여하는 것입니다.

이처럼 metric이 더 이상 원하는 순서로 선호도를 평가하지 않는다면 새로운 evaluation metric 도입을 고려해야 합니다. 

이 경우에 Orthogonalization을 적용할 수 있는데, 첫 번째로는 분류기를 평가하기 위한 metric을 정의하는 데에 집중하고, 이후에 어떻게 metric을 잘 구현하는지에 대해서 고민하는 것입니다. 즉, target을 plan 하는 것과 tuning 단계를 분리해서 생각하는 것입니다.

추가적으로 dev, test set에서 잘 되는 알고리즘이 실제에서는 잘 적용되지 않을 수 있습니다. 왜냐하면, train, dev, test set는 고품질, 정제된 데이터로 사용한 것에 비해 실제 데이터는 저품질, 정제되지 않은 데이터일 확률이 더 높기 때문입니다. 이렇게 나타나는 경우에는 dev set과 test set를 바꾸기 좋은 시점입니다.


 

반응형

 

CHAPTER 3. 'Human-level performance'

 

□ Why human-level performance?

Bayes optimal error는 가장 최상의 오류로, 이론적으로 도달할 수 있는 최고의 정확도 값입니다. 

 

음성인식기기에서 소음으로 인해 100% 인식을 못 할 수 있으며, 이미지 인식 알고리즘에서 이미지가 저품질, 흐릿하여 식별하기 어려운 경우에는 100% 구분을 못 할 수 있습니다. 이때의 값을 bayes optimal error라고 합니다. 알고리즘의 성능(보라색 선)은 시간이 흐르더라도 bayes optimal error에는 도달할 수 없습니다.

human level perfermance에 인접하면 성능이 떨어지는 이유는 2개로 정리할 수 있습니다.

 

하나는 human level perfermance와 bayes optimal error가 근사한 경우입니다. 이 경우에는 bayes optimal error에 근사하게 되면서 성능의 증가 속도가 감소하게 됩니다. 다음은 human level perfermance에 도달하기까지 하이퍼파라미터 튜닝, 알고리즘 개선 등의 방법을 통해 성능을 발달시킬 수 있는 부분이 있습니다. 


□ Avoidable bias

인간 레벨 성능에 비해 training error가 높은 점은 train set에서 훈련이 제대로 되지 않았음을 의미합니다. 이 경우에는 데이터의 편향(bias)을 줄이는 방향으로 더 많은 train set를 활용 및 더 오랜 시간 동안 train 하는 방법을 사용할 수 있습니다. 인간 레벨 성능에 비해 training error가 유사한 경우에는 training error와 dev error를 줄이도록 분산(variance)을 낮추고자 합니다. 이 경우에는 정규화(regularization) 또는 데이터를 추가하는 방법 등을 사용할 수 있습니다.

 

bayes error와 training error 간의 오차(error) 차이를 avoidable bias라고 합니다. avoidables bias는 최소의 오류 값 또는 특정 오류가 있다는 것을 인정하고, over-fitting하지 않는 이상 bayes error 이하로 내려갈 수 없음을 의미합니다.

추가적으로 training error와 dev error 간의 오차(error) 차이는 분산(variance)입니다. 


□ Understanding human-level performance


□ Surpassing human-level performance


■ 마무리


"Structuring Machine Learning Projects" (Andrew Ng) 1주차 "Machine Learning Strategy Ⅰ"에 대해서 정리해봤습니다.

 

그럼 오늘 하루도 즐거운 나날 되길 기도하겠습니다

좋아요와 댓글 부탁드립니다 :)

 

감사합니다.

 

반응형

댓글