[24.01.24]
2주차 10차시 - 하이퍼 파라미터 튜닝
1. 하이퍼 파라미터Hyper Parameter
: 모델 학습 전, 사용자가 직접 설정해주어야 하는 모델의 파라미터. 하이퍼파라미터 튜닝은, 이들을 최적화 하는 작업이라 보면 된다.
1.1 하이퍼 파라미터 튜닝 방
1) Manual Search : 자동화 툴을 쓰지 않고, 직접 튜닝할 하이퍼 파라미터 셋을 정하고 하나씩 바꿔가며 튜닝하는 방식.
2) Grid Search : 사용 가능한 모든 하이퍼 파라미터 조합을 모두 하나하나 테스트하며, 어떤 조합이 가장 성능이 좋은지 기록하는 방식으로, 하이퍼파라미터의 수가 많다면 비효율적이다. 오래 걸리니까.
3) Random Search : 사용 가능한 모든 하이퍼파라미터의 조합 중에서 무작위로 값을 가져와서 테스트하는 방식.
대개는 GridSearch보다 성능이 좋은 하이퍼파라미터를 찾아내기에, 꽤 효율적이라고 할 수 있다.
4) Bayesian Optimization : 초반엔 무작위로 하이퍼파라미터를 탐색하다가, 어느 정도 탐색이 진행된 후에는 성능이 좋게 나온 하이퍼파라미터들을 중심으로 탐색하는 방법. 중간중간 무작위성이 가미되어 한 쪽으로 쏠리는 경향이 나타나는 것을 방지하기도 한다. 앞의 방법들보다 효율적이며, 요새 가장 많이 쓰이는 방식.
2. Boosting Tree Hyper Parameter
모델별로 이름이 약간씩 다르다.
- Learning Rate : 모델의 학습률
- Tree depth : 트리 모델의 최대 깊이
- Number of leaves : 한 트리의 최대 리프 수
- Early stop : 검증 성능이 향상하지 않으면 더 이상 학습을 진행하지 않고 종료
- Row sampling ratio : 데이터 일부를 무작위로 선택하는 비율
- Column sampling ratio : 피처의 하위 집합을 무작위로 선택하는 비율
- L1 / L2 norm penalty: L1/L2 정규화
3. Optuna
: Bayesian Optimization 기반의 오픈소스 하이퍼파라미터 튜닝 프레임워크다. 하이퍼 파라미터 튜닝 분야의 SOTA 알고리즘이다.
Optuna is the SOTA algorithm for fine-tuning ML and deep learning models
3.1 주요 특징
1) Eager search spaces : Python 조건문, 루프 및 구문을 사용하여 최적의 하이퍼파라미터를 자동으로 찾아준다.
2) SOTA(State Of The Art) Algorithms : 넓은 공간을 효율적으로 검색하고 가능성이 없는 테스트는 정리하여 더 빠른 결과를 얻을 수 있게끔 하는, SOTA 알고리즘(means 최신 알고리즘)이다
3) Easy parallelization : 대규모 하이퍼 파라미터 탐색을 분산 머신을 통해 시행함으로써, 코드를 수정하지 않고도 여러 스레드 또는 프로세스에서 하이퍼파라미터 검색을 병렬화할 수 있다.
3.2 사용법
1) Optimize 할 function(=목적함수) 정의
2) 탐색 할 x의 범위 지정
3) create.study() 객체 생성 -> 목적함수와 optimize 횟수 지정 -> Optimize -> 최적의 x 값 도
3.3 하이퍼 파라미터 탐색 결과 저장
- Storage API를 통해서 저장 가능.
- 하이퍼파라미터가 많으면 시간이 오래 걸릴 수 있으니까,
- RDB(관계형 DB), Redis와 같은 Persistent 저장소에 하이퍼 파라미터 탐색 결과를 저장함으로써 한 번 탐색하고, 다음에 다시 이어서 탐색 가능.
3.4 하이퍼 파라미터 탐색 결과 시각화
- 중요도
- 히스토리
- Slice 시각화
: 각 하이퍼 파라미터별로 최적화하려는 목적 함수 값이 어떻게 변하는지 볼 수 있음
- 하이퍼 파라미터 등치선(Contour) 시각화
: 여러 개 하이퍼 파라미터와 objective value 를 한꺼번에 볼 수 있음
x, y 모두 최소화 하는 것이 목적이다.
'STUDY > 부스트코스 - AI 엔지니어 기초 다지기' 카테고리의 다른 글
[AI 엔지니어 기초 다지기] 10일차 (0) | 2024.01.29 |
---|---|
[AI 엔지니어 기초 다지기] 9일차 (2) | 2024.01.25 |
[AI 엔지니어 기초 다지기] 7일차 (0) | 2024.01.23 |
[AI 엔지니어 기초 다지기] 6일차 (0) | 2024.01.22 |
[AI 엔지니어 기초 다지기] 5일차 (0) | 2024.01.19 |