수지, 남주역 주연의 스타트업(Start-Up) 드라마를 보다보면, 대회에서 머신러닝 개발자들이 하이퍼파라미터 바꿔볼까? 활성함수 교체해 볼까? 하는 대화가 있습니다. 드라마에서 나왔던 그 하이퍼파라미터 튜닝을 꼭 해야 할까요?
정답은 '해야 한다'입니다. 우리가 만든 모델은 아직 최적화가 되어 있지 않은 상태입니다. 보이지 않는 모델 성능을 올릴 수 있게 해 주기 때문에 머신러닝 모델을 훈련하는 과정에서 필수적인 단계입니다. 하이퍼파라미터란 무엇이고 그 방법에 대해 알아보겠습니다.
하이퍼파라미터 튜닝이란?
보통 파라미터(모수)는 가중치, 편향 등 머신이 찾아가는 값을 말합니다. 하이퍼파라미터(비모수)는 사람이 정하는 값이라고 생각하면 됩니다. 각 층의 뉴런 수, 배치 크기, 매개변수 갱신 시의 학습률 등이 하이퍼파라미터를 반복 작업을 통해 최적값을 찾아내는 방법을 말합니다. 모수와 비모수에 대한 글을 참고하시면 더 자세히 알 수 있습니다.
하이퍼파라미터 튜닝은 검증 데이터(validation data)를 이용해야 합니다. 하이퍼파라미터 성능 평가시 테스트 데이터를 사용하면 파라미터가 테스트 데이터에 오버피팅 되기 때문에 사용하면 안 됩니다. 자세한 설명은 train vs validation vs test data의 각각의 열할에 대한 글을 참고하시기 바랍니다.
하이퍼파라미터 튜닝 방법
하이퍼파라미터 일반적인 튜닝 방법을 설명하면 이렇습니다.
- 대략적인 범위를 설정하고 그 범위에서 무작위로 하이퍼파라미터 값을 샘플링한 후, 그 값으로 정확도를 평가함
- 정확도를 살펴보면서 1번 과정을 여러 번 반복하며 하이퍼파라미터의 최적 값의 범위를 좁혀가며 검증
머신러닝이 아닌 신경망을 최적화할 때는 '그리드 서치(Grid Search)'와 같은 규칙적인 탐색보다는 무작위로 샘플링을 해서 탐색하는 편이 좋다고 알려져 있습니다. 이는 최종 정확도에 미치는 영향력이 하이퍼파라미터마다 다르기 때문입니다.
하이퍼파라미터 범위는 "10의 거듭제곱" 단위와 같이 "대략적으로" 지정하는 것이 효과적입니다. 신경망 파라미터를 최적화할 때는 데이터량이 많기 때문에 당연하지만 오랜 시간이 걸린다는 점을 꼭 기억해야 합니다. 방법은 학습을 위한 에폭(epoch)을 작게 해서 1회 평가에 걸리는 시간을 단축하는 것이 효과가 있습니다. 만약 , 에폭(epoch)을 알고싶다면 딥러닝 학습 방법을 참고하세요
하이퍼파라미터 튜닝 절차(feat. Random Search)
하이퍼파리미터 튜닝 절차를 Random Search를 기준으로 설명드리겠습니다.
- 하이퍼파라미터 값의 범위를 "대략적으로" 설정
- 설정된 범위 내에서 하이퍼파라미터의 값을 무작위로 추출
- 2번에서 샘풀링한 하이퍼파라미터 값을 사용하여 학습하고, 검증 데이터로 정확도를 평가, 단, 에폭(Epoch)은 작게 설정(학습시간이 오래 걸리기 때문).
- 2번와 3번을 특정 횟수(ex. 100회) 반복하며 정확도를 살펴보고, 하이퍼파라미터의 범위를 좁혀나가기
- 어느 정도 하이퍼파라미터 범위가 좁혀지면, 그 범위 내의 값을 하나 골라내기
하이퍼파라미터 튜닝의 중요한 특징
첫 번째 특징 - 조합으로 보아야 한다
하이퍼파라미터들 간에 서로 영향을 주기 때문에 최적의 조합(그룹 셋)을 찾는 것이 중요합니다. 모든 하이퍼파라미터 조합을 테스트하는 것은 시간이 너무 많이 걸립니다. 주요 하이퍼파라미터 조합(2~3개)으로 테스트하고 그 값을 기준으로 나머지를 맞추는 방법을 사용할 수 있습니다.
두 번째 특징 - 분석가의 감각이 중요하다
블랙박스(Black-box) Optimization이기 때문에 어떤 값이 좋을지는 결국 시도해봐야 알 수 있습니다. 손실함수나 목적(objective) 함수가 존재하지 않습니다. Gradient를 계산할 수 없기 때문이죠. 결국 분석가의 감으로 하는 수동적인 테스트가 불가피하다는 이야기입니다.
세 번째 특징 - 비싼 실행 비용
하이퍼파라미터의 최적의 값을 찾기 위해서 수백 번 돌려보아야 알 수 있는 경우가 많습니다. 그래서 얼마나 효율적으로 찾는지도 중요합니다. 리소스(시간, 자원)을 적게 들이고 최적값을 찾기 위한 기법들은 하이터파라미터 종류의 글을 참고하시기 바랍니다.
'딥러닝' 카테고리의 다른 글
하이퍼파라미터 튜닝 베이지안 최적화(Bayesian Optimization) (0) | 2024.02.15 |
---|---|
하이퍼파라미터 튜닝 종류: Grid vs Random search (0) | 2024.02.14 |
드롭아웃(drop-out) 개념과 꼭 알아야 할 고려사항 (0) | 2024.02.08 |
가중치 감소(weight decay) (1) | 2024.02.07 |
배치 정규화를 하는 이유 (0) | 2024.02.05 |