ROKO

[coursera] Introduction to ML Strategy: Week 1 본문

Artificial Intelligence/Deep Learning

[coursera] Introduction to ML Strategy: Week 1

RO_KO 2024. 7. 1. 22:04
728x90

Orthogonalization

딥러닝 모델을 최적화 하기 위한 hyperparameter들을 한번에 고려하는 것이 아닌 직교화 (orthogonalization)하여 각 hyperparameter를 하나씩 조정하는 것을 의미한다.

 

ex) Chain of assumptions in ML

  1. Fit training set well on cost function (bigger model, optimizer, early stopping, ...)
  2. Fit dev set well on cost function (regularization, bigger train set, early stopping,  ...)
  3. Fit test set well on cost funtion (bigger dev set, ...)
  4. Performs well in real world (change dev set or cost function, ...)

Evaluation metric

현재 사용한 방식이 좋은지 판단하기 위해 빠르고 쉽게 확인할 수 있는 평가 함수를 사용하는 것이 좋다. 대표적인 예시가 재현율 (recall)과 정밀도 (precision)이다. 하지만 2개의 평가 지표는 각각 의미하는 바가 다르기에 둘다 고려하는 것은 쉽지 않다. 이럴땐 두 평가 지표를 반영한 f1-score\(=\frac{2}{\frac{1}{P}}+\frac{1}{R}\)(harmonic mean)를 활용하면 좋다.

 

여러 평가 기준이 있을때 이를 통합한 real value function을 활용하면 좋다는 것을 알았다. 하지만 이것만으로 좋은 모델을 판단하기 어려울 수 있다. 실시간 추론시간과 같은 고려해야할 추가 사항이 있을 수도 있기 때문이다. 그럴 땐 satisfying and optimizing metric을 사용하면 된다. 쉽게 말하면 추가 사항은 조건부로 했을때 평가 지표를 본다거나 추가 사항을 정량화 하여 평가 기준을 통합하는 것이다.

 

Train/Dev/Test distribution

데이터를 나눌때 같은 분포에서 균등하게 나누지 않으면 모델이 망가질 우려가 높다. 위와 같이 정상적인 정면 사진으로만 학습한 모델은 오른쪽 처럼 왜곡이나 변형된 이미지를 분별하기 어려워 하게 된다. 이를 막기 위해서 간단한 방법으로 데이터를 나누기전에 모든 데이터를 섞어 서로 다른 분포가 어떻게 나누든 최대한 균일하게 분포하도록 하는것이다.

 

기존 데이터에서 분포가 다른 추가 데이터를 추가할때 trian set에 추가하는건 무조건 안되는건 아니다. 추가 데이터가 dev/test 데이터 성능을 높이는데 도움을 준다면 충분히 추가해도 상관없다. 하지만 dev set에 추가 데이터를 넣게 되면 test set과 분포가 달라져 모델이 목적으로 하는 분포가 불일치하고 모델이 망가지게 된다.

 

Change dev/test sets and metrics

Metric: classification error

  • 알고리즘 A: 3% error
  • 알고리즘 B: 5% error

metric을 기준으로 보면 알고리즘 A가 좋아보이지만 만약 학습데이터가 성적인 사진으로 이루어져 있다고 하자. 회사입장에서는 해당 사진들로 학습된 알고리즘을 쓰면 안될 뿐더러 분포가 일반 사용자들이 요구하는 분포와 다르기 때문에 A를 고를수 없다. 이럴때는 데이터를 바꾸거나 평가지표 수식을 변경해야 한다. 예를 들면 가중치를 반영한 평가 지표로 성적인 사진보다 정상적인 사진에 더 많은 가중치를 주어 계산할 경우 이 문제를 해소할 수 있다.


모델은 사람기준 성능을 빠르고 쉽게 따라잡지만 그 이후는 완만하게 증가하며 어느 일정 구간, bayes error를 뚫지 못한다. bayes error는 모든 상황에서 정답을 맞출수 있는 모델을 의미한다. 그렇다면 왜 사람의 성능 이후 완만하게 증가하는 걸까? 그 이유중 하나는 사람이 충분히 bayes error와 근사할 정도의 성능을 가지고 있기 때문이다. human-level error 와 training error사이의 차이를 avoid bias라고 부르고 training error 와 dev error사이를 variance라고 한다. 각 차이를 보고 모델에 적절한 튜닝을 취하면 좋은 성능을 이끌어 낼 수 있다.

 

human-level performance 비교하는 이유

  • 사람으로부터 데이터를 계속 얻을 수 있다
  • 데이터 라벨링 오류에 대한 정보를 얻을 수 있다
  • 전체적인 데이터의 편향/분산을 더 잘 분석 할 수 있다

* human-level는 충분히 bayes error를 근사하므로  human-level를 목표로 하면 bayes error에 근사한 성능을 얻을 수 있다.

 

Problems where ML better than human

structure data로 이루어진 문제나 직관적으로 풀기 어려운 문제일수록 ML을 이용한 모델이 인간보다 잘 할 수 있다. 예를 들면 실시간 광고, 제품 추천, 회귀 등이 있다. 그 이유는 사람의 생각보다 통계적인 지식에 더 의존하여 풀어야 하기 때문이다.

728x90
Comments