Python/[코칭스터디 10기] Beyond AI Basic
[쇼핑데이터를 활용한 머신러닝] 12. 하이퍼 파라미터 튜닝
김초송
2023. 5. 16. 18:01
6. 하이퍼 파라미터 튜닝과 앙상블
1) 하이퍼 파라미터 튜닝
- 하이퍼 파라미터
- A hyperparameter is a parameter whose value is used to control the learning process. By contrast, the values of other parameters (typically node weights) are learned
- 학습 과정에서 조절하는 파라미터 값
- 모델이 학습하기 전에 사람이 설정해줘야 하는 파라미터
- 파라미터
- 학습 과정에서 배워나가는 값
- 하이퍼 파라미터 튜닝
- Choosing a set of optimal hyperparameters for a learning algorithm
- 하이퍼 파라미터를 최적화하는 과정
- 하이퍼 파라미터 튜닝 방법
- Manual Search
: 자동화 툴을 사용하지 않고 매뉴얼하게 실험할 하이퍼 파라미터 셋을 정하고 하나씩 바꿔가면서 테스트 - Grid Search
: 테스트 가능한 모든 파라미터 셋을 하나씩 다 테스트 해보면서 어떤 하이퍼 파라미터의 성능이 좋은지 기록하는 방식
하이퍼 파라미터 개수가 많다면 비효율적Grid Search - Random Search
: 탐색 가능한 하이퍼 파라미터에서 랜덤하게 값을 가져와서 테스트
일반적으로 grid search 보다 더 성능이 좋은 하이퍼 파라미터를 찾아냄Random Search - Bayesian Optimizer
: 처음에는 랜덤하게 -> 히스토리에서 성능이 잘 나온 하이퍼 파라미터 영역에 집중적으로 탐색 (+ 가끔 랜덤)
오래할 수록 성능이 잘 나옴
대부분 하이퍼 파라미터 튜닝 툴들이 사용하는 방식Bayesian Optimizer
- Boosting Tree 하이퍼 파라미터
- Learning Rate: 모델의 학습률
- Tree depth: 트리 모델의 최대 깊이
- Number of leaves: 한 트리의 최대 리프 수
- Early stop: 검증 성능이 향상하지 않으면 조기 종료
- Row sampling ratio: 데이터 일부를 무작위로 선택하는 비율
- Column sampling ratio: 피처의 하위 집합을 무작위로 선택하는 비율
- L1 / L2 norm penalty: L1/L2 정규화
- Optuna
- 오픈소스 하이퍼 파라미터 튜닝 프레임워크
- 주요 기능
- Eager search spaces
- Automated search for optimal hyperparameters using Python conditionals, loops, and syntax
- 최적화된 하이퍼 파라미터를 자동화된 방식으로 찾는 기능들 제공
- State-of-the-art algorithms
- Efficiently search large spaces and prune unpromising trials for faster results
- 하이퍼 파라미터 튜닝 최신 모델 알고리즘 제공
- Easy parallelization
- Parallelize hyperparameter searches over multiple threads or processes without modifying code
- 병렬화 가능 -> 대규모 하이퍼 파라미터 탐색을 분산 머신을 통해 시행
- Eager search spaces
- 기본 개념
- 최적화 함수 (목적 함수) 정의
- 탐색할 x 값의 범위 지정
- study 객체를 생성하고 optimizer 와 trial 지정
- direction = 'maximize' : accuracy 는 높을 수록 좋기 때문에
- 하이퍼 파라미터 탐색 결과 저장
- Storage API를 사용해서 하이퍼 파라미터 검색 결과 저장 가능
- RDB, Redis와 같은 Persistent 저장소에 하이퍼 파라미터 탐색 결과를 저장함으로써 한 번 탐색하고, 다음에 다시 이어서 탐색 가능
- 하이퍼 파라미터 Visualization
- x 가 가장 중요한 하이퍼 파라미터
-> x 가 모델 성능에 크게 관계있음
- 낮을 수록 모델의 성능이 좋은 것
- 각 하이퍼 파라미터별로 최적화하려는 목적 함수 값이 어떻게 변하는지 볼 수 있음
개별 하이퍼 파라미터와 objective value 의 관계 - 최소화 하는 것이 목적
- 여러 개 하이퍼 파라미터와 objective value 를 한꺼번에 볼 수 있음
- x, y 모두 최소화 하는 것이 목적 (밝을 수록 좋음)
- 각각 objective value가 하이퍼 파라미터를 값에 따라 어떻게 달라지는지