시리즈 3에서는 머신러닝에서의 모델 최적화 방법론에서 기초적인 부분부터 얘기를 해 보고자 한다.
아래 예시 처럼 고양이 분류기 모델의 성능을 끌어 올린다고 가정해 보자. 예제에는 고양이, 병아리, 새 등의 사진이 있고, 여러분이 만들어 낸 머신러닝 모델이 90%의 정확도로 고양이를 분류해 낸다고 하자. 이럴때 여러분은 이 모델의 성능을 끌어 올리기 위해서 어떠한 방법을 취할 수 있을까?
여러가지 방법이 있겠으나, 아마 가장 먼저 떠올릴 수 있는 방법이 '데이터를 더 수집하자' 일 것이다. 아마 가장 기초적이고 원론적인 해결 방안일 것이다. 그외에도,
- 보다 더 다양한 Training set을 수집한다
- 모델 학습 시간을 더 늘린다
- 단순 Gradient Desecent 대신 Adam Optimizer를 이용해 본다
- Bigger Network 혹은 Smaller Network를 시도해본다]
- Drop out을 시도해 본다
- L2 Regulaization을 추가한다
- 네트웍 아키텍쳐 자체를 변경해본다(활성함수 종류, 히든 유닛 개수, 히든 레이어 개수 등등)
이렇듯 다양한 방법론들이 존재한다. 여러분은 물론 두서없이 이 모든 방법들을 시도해 볼 수 있다. 하지만 그러기에는 우리에게 시간은 너무 소중하다. 예를들어 데이터를 더 수집하기 위해 수개월을 더 소비했는데, 그래도 성능이 여전히 90%라면? 여러분은 아까운 시간만 날린 셈이다. 데이터를 더 수집할게 아닌, 위에 열거한 다양한 해결 방법 중 다른 것을 시도했어야 하는 것이다.
그래서 앞으로 이어질 강의내용에서는 이러한 시행착오를 최대한 줄이고, 어떠한 상황에서 어떠한 방법론을 적용하는 것이 최상의 방안일지에 대한 내용이 이어질 것이다.
참조 : 강의 원본 출처 (앤드류 응 교수 딥러닝 강의)
Improving Model Performance (C3W1L01)
https://www.youtube.com/watch?v=dFX8k1kXhOw&list=PLkDaE6sCZn6E7jZ9sN_xHwSHOdjUxUW_b