본문 바로가기

STUDY/부스트코스 - AI 엔지니어 기초 다지기

[AI 엔지니어 기초 다지기] 8일차

[24.01.24]

2주차 10차시 - 하이퍼 파라미터 튜닝

 

1. 하이퍼 파라미터Hyper Parameter

: 모델 학습 전, 사용자가 직접 설정해주어야 하는 모델의 파라미터. 하이퍼파라미터 튜닝은, 이들을 최적화 하는 작업이라 보면 된다.

 

 1.1 하이퍼 파라미터 튜닝 방

    1) Manual Search : 자동화 툴을 쓰지 않고, 직접 튜닝할 하이퍼 파라미터 셋을 정하고 하나씩 바꿔가며 튜닝하는 방식.

    2) Grid Search : 사용 가능한 모든 하이퍼 파라미터 조합을 모두 하나하나 테스트하며, 어떤 조합이 가장 성능이 좋은지 기록하는 방식으로, 하이퍼파라미터의 수가 많다면 비효율적이다. 오래 걸리니까.

Grid Search

 

    3) Random Search : 사용 가능한 모든 하이퍼파라미터의 조합 중에서 무작위로 값을 가져와서 테스트하는 방식.

대개는 GridSearch보다 성능이 좋은 하이퍼파라미터를 찾아내기에, 꽤 효율적이라고 할 수 있다.

Random Search

 

    4) Bayesian Optimization : 초반엔 무작위로 하이퍼파라미터를 탐색하다가, 어느 정도 탐색이 진행된 후에는 성능이 좋게 나온 하이퍼파라미터들을 중심으로 탐색하는 방법. 중간중간 무작위성이 가미되어 한 쪽으로 쏠리는 경향이 나타나는 것을 방지하기도 한다. 앞의 방법들보다 효율적이며, 요새 가장 많이 쓰이는 방식.

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 값 도

Optuna 간단 사용 예시
LIghtGBM Optuna 사용 예시

 

 3.3 하이퍼 파라미터 탐색 결과 저장

 - Storage API를 통해서 저장 가능.

 - 하이퍼파라미터가 많으면 시간이 오래 걸릴 수 있으니까,

 - RDB(관계형 DB), Redis와 같은 Persistent 저장소에 하이퍼 파라미터 탐색 결과를 저장함으로써 한 번 탐색하고, 다음에 다시 이어서 탐색 가능.

 

 

 

 3.4 하이퍼 파라미터 탐색 결과 시각화

 

- 중요도

 

 

 - 히스토리

 

 

 - Slice 시각화

  : 각 하이퍼 파라미터별로 최적화하려는 목적 함수 값이 어떻게 변하는지 볼 수 있음

 

- 하이퍼 파라미터 등치선(Contour) 시각화

 

 : 여러 개 하이퍼 파라미터와 objective value 를 한꺼번에 볼 수 있음
    x, y 모두 최소화 하는 것이 목적이다.