Hyperparameters in Deep RL with Optuna
Hyperparameters in Deep RL with Optuna
[1편 문제: Hyper-parameters]
[2편 해결: Bayesian Search]
[3편: Hyper-parameter Search with Optuna]
총 3편으로 나눠서 Deep Reinforcement Learning에서의 Hyperparameter 의 중요성과
다양한 Hyperparameter를 선택하는 Search 방법을 소개하고
Optuna 사용 방법을 익혀보겠습니다.
[1] Optuna
- Bayesian search 방법이 구현된 오픈소스 Python 라이브러리
- Bayesian 방법의 수학적인 요소에 깊은 이해가 없어도 사용 가능
* Optuna
Optuna - A hyperparameter optimization framework
Optuna is an automatic hyperparameter optimization software framework, particularly designed for machine learning. It features an imperative, define-by-run style user API.
optuna.org
[2] Start Hyper-parameter Search with Optuna
- Deep Q-learning으로 Cart Pole environment 풀이
git clone https://github.com/Paulescu/hands-on-rl.git
- 사용할 가상환경 지정
- 제공하는 패키지 목록 requirements.txt를 가상환경에 설치
pip install –r requirements.txt
- 상황에 따라서 각자 필요한 패키지 pip install 명령어로 설치
pip install mlflow
pip install jupyter
pip install optuna
pip install torch
0) 03_cart_pole/notebooks/09_hyperparameter_search.ipynb 에서 순서 제공
1) load
load_ext autoreload
autoreload 2
pylab inline
config InlineBackend.figure_format = 'svg'
2) env load
import gym
env = gym.make('CartPole-v1')
3) terminal에서 03_cart_pole 폴더로 이동
각자 환경에 맞는 디렉토리로 작성
cd ~/hands-on-rl/03_cart_pole
4) MLflow
- ML 모델 운영화 목적 (MLOps)
- MLFlow Tracking
- 모델 개발 중에 필요한 모든 것을 추적
- 많은 하이퍼-파라미터로 run하는 실험 진행 시, 매 run마다 정확한 구성을 Log
- terminal에서 다음 명령어 실행
mlflow ui --backend-store-uri mlflow_runs/
ex. Log 예시
* MLflow
MLflow - A platform for the machine learning lifecycle
An open source platform for the end-to-end machine learning lifecycle
mlflow.org
5) MLflow Setup and URL
아래 python 파일을 run
연결되면 URL 클릭 (필자의 경우 아래의 링크)
[3] Optimize Hyper-parameters with Optuna
- hyperparameter sampling
- training
- and evaluation of RL agent
- The objective function: returns the metric we want to optimize
- 리워드 값 최대화 목표
[4] Objective function
- Samples hyperparameters
- trains the agent 200 episodes and evaluates it 1000 episodes
- output is the average reward in 1000 episodes
- sample_hyper_parameters()
- samples and return the hyperparameter values
- the range we specify
- and the sampler used by Optuna uses(TPE default)
- 이 함수가 정의된 코드를 확인하면
- wide intervals or ranges of values 만 제공
- bayesian sampling 방법은 구현하지 않아도 Optuna가 함
- samples and return the hyperparameter values
6) Optuna study object 생성
- storage 파라미터를 로컬 sqlite file에 설정
- 컴퓨터나 프로세스가 코드 붕괴를 run할 때 탐색을 감소시켜 중요
[5] Optimize Hyper-parameters with Optuna (con.)
7) Optuna에게 study.optimize() 로 search 시작 (100번 시도)
- perfect agent가 나온다면 평균 reward가 500점일 것
- 그럼 hyperparameter 값들 도출 성공
![](https://blog.kakaocdn.net/dn/dm0JBH/btrTFaCKfvh/K9GRkiwTLOflVDRHn2KSRK/img.png)
- agent_id : 298
- mean_reward : 500
- optimized result with information of good hyperparameter
8) CartPole을 완벽하게 풀이하는 agent=298
9) 결과 이용하여 agent 평가
agent 평가 진행하기
[6] Summary
- Deep RL에서 Hyperparameters는 중요하다
- 좋은 hyperparameter 값을 구하기 위하여 실험
- 똑똑한 search 전략을 사용하지 않는다면 시간 소요가 매우 크다
- Brute-force(i.e. grid search)는 대부분의 경우에서 실현 불가능
- Bayesian Search 방법
- 위문제를해결하는데에가장좋은방법
- hyperparameter에 다음에 시도할 가장 유망한 영역이 무엇인지 탐색하고 배움
- random search보다 빠르게 수렴
- Optuna
- hyperparameter search에 좋은 오픈소스 라이브러리
- bayesian search의 모든 세부 사항을 추상화하는 plug-and-play solution
- 몇 줄의 코드로 강력한 hyperparameter 실험 파이프라인 구축
'스스로 학습 > seminar' 카테고리의 다른 글
[ChatGPT 블로그 정리] 99%의 ChatGPT 사용자보다 앞서는 방법 (0) | 2023.04.24 |
---|---|
Hyper-parameters in Deep RL with Optuna [2편 해결] (0) | 2022.12.16 |
Hyper-parameters in Deep RL with Optuna [1편 문제] (0) | 2022.12.15 |