본문 바로가기

Study

'머신 러닝 프로젝트 구조화' 강좌 - 1주차(1) 정리

 

'머신 러닝 프로젝트 구조화' 강좌 - 목표 설정 - 1주차 정리

  • Andrew Ng 강사님의 머신 러닝 프로젝트 구조화 [1주차] 목표 설정 강좌를 보고 정리한 내용
  • [K-MOOC x COURSERA] 구독권을 통해 강좌를 수강함

교육 기관: https://www.deeplearning.ai/


1주차(1) 강좌 후기

  •  머신러닝 프로젝트를 어떻게 구성할지, 전략을 어떻게 수립해야 할지에 대해서 첫 단계인 목표 설정 단계에서 평가지표의 중요성을 알게 되었다.

1. 단일 숫자 평가 지표

평가 지표 사용
  • 머신러닝 시스템을 만드는 진행소도가 훨씬 빨라지고 이 지표는 새롭게  시도한 것들이 더 잘 작동하는지 더 좋지 않은 결과를 주는지 알려주기 때문에 실수 평가 측정 지표를 사용하는 것을 권장
  • 응용 머신러닝(applied machine learning)은 실증적 증거에 기반한 절차
  • 예를 들면 어떠한 특정 발상이 있으면, 그것을 코드화하고 결과를 획득하고 결과를 이용해 아이디어를 다듬어 나가고 이러한 절차를 계속 반복하여 알고리즘을 개선해 나감
F1-Score
  • 합리적인 성능 평가 방법은 정밀도와 재현율을 보는 것인데 여러 평가지표 중 하나를 선택하는 것은 어려움
  • 머신러닝 세계에서는, 정밀도와 재현율을 결합시키는데 있어 F1 score라는 것을 쓰는 게 정석
  • 어렵게 생각하지말고 정밀도와 재현율의 조화 평균값을 가진다라고 생각

요약
  • 이러한 지표를 가지고 반복할 알고리즘을 잘 골라야 함
  • 머신러닝의 절차는 아이디어가 있고 그 아이디어를 도입하여 시도하고, 그 아이디어가 도움이 되었는지 확인하는 절차를 따름
  • 이 single number evaluation metric(단일 숫자 평가 지표)를 이용함으로써 전체적인 효율성을 높일 수 있음

2. 만족화 및 최적화 지표

평가 지표 결합 방법
  • 중요시 여기는 부분을 모드 감안해 단일 숫자 평가 지표로 결합시키는 것은 쉽지 않음
  • 이러한 경우에는 satisficing(최소한의 충족)과 optimizing(최적화) 매트릭스가 유용한 경우도 있음
  • 예를 들어 러닝타임의 적정 기준을 정해두고 정확도를 최대치로 끌어올릴 수 있는 분류기를 고르는 방법이 있음
  • 예시로 러닝타임이라고 하면 이미지를 판별하는 시간인데 1초 이내라고 정해두면 이 경우에 정확도가 optimizing metric이라고 함
  • 러닝타임이 길든 짧든 1초 이내만 만족하고 정확도를 최대로 끌어올리는 것
  • 이런 방법이 적절한 방법중 하나이고 예시로 예시로 애플 같은 hey siri를 깨울 때 wake words를 사용하는데 음성으로 깨우는 정확도를 최대치로 하고 나머지를 최소한의 충족으로 할 수 있음


3. Train/Dev/Test 분포

같은 분포도
  • train/test set을 어떻게 설정하는지에 따라 머신러닝 프로젝트를 진행하고 앞으로 나아갈 수 있는지 큰 영향을 끼침
  • dev set과 test set이 같은 분포도에서 온 것을 사용하는것을 권장
  • 알아둬야 할 것 중 한가지는 dev set 설정하는 방법과 단일 역할 숫자 평가 지표를 설정하는 것
  • 그렇게 하여 팀이 효율적으로 혁신할 수 있도록, 같은 목표를 타깃 할 수 있도록 해주는 것

4. Dev set 및 Test set의 크기

과거 경험에 입각한 규칙

dev set와 test set이 같은 분포도에서 와야 한다는 것은 아는데 길이는 얼마 정도면 좋을까?

  • 머신러닝 초기에는 데이터 세트가 그리 크지 않았을 때 트레이닝 70% 테스트 30%으로 나누거나 트레이닝 60% 검증 셋 20% 테스트 셋 20% 을 사용했다. 
  • 이것은 사람들이 경험하면서 생긴 규칙이다.
현재
  • 하지만 최근 머신러닝 시대에는 훨씬 더 큰 데이터 세트에 익숙해져 있음
  • 백만 개의 트레이닝 샘플이 있으면 98%를 트레이닝 세트, 1% dev, 1% test로 분배하는 것이 합리적일 수 있음  
  • 그래서 최근에는 알고리즘 또한 데이터를 많이 필요로 하기 떄문에 test/dev set을 20% 30% 미만으로 구성하는 것이 합리적
요약
  • 빅데이터 시대에서 오래 전의 70%대 30% 비율의 경험규칙은 더 이상 적용되지 않는 것 같음

5. Dev/Test set 및 지표 변경 시점

평과 지표와 프로젝트의 목표

평가 지표를 설정하는 것은 특정 목표를 지향할 수 있도록 방향성을 제시하는 것과 같지만 프로젝트 진행 도중 잘못된 방향이었다는 깨달으면 목표를 이동시켜야 함.

 

예시
  1. 고양이를 인식하고 이미지를 스크래핑하는 프로그램을 만든다고 가정
  2. A알고리즘은 3% 오류, B알고리즘은 5% 오류를 범함.
  3. 처음 평가지표 기준으로 보면 A알고리즘이 뛰어나지만 A알고리즘은 이미지를 스크래핑할때 불법적인 사진을 많이 허용하고 B는 불법적인 사진이 하나도 없음.
  4. 그래서 결국 B알고리즘을 사용해야하고 평가 지표도 바뀌어야 함
요약

오류 매트릭을 어떻게 정의하는지까지는 상세히 알 필요가 없고 오류 평가가 만족스럽지 못한 경우 새로운 매트릭을 정의해보자