본문 바로가기
스스로 학습/seminar

Hyper-parameters in Deep RL with Optuna [3편 Optuna]

by 지제로사 2022. 12. 17.
반응형

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

https://optuna.org/

 

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 예시

meta.yaml


* MLflow

mlflow

https://mlflow.org/

 

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

mlflow setup

연결되면 URL 클릭 (필자의 경우 아래의 링크)

http://127.0.0.1:5000

http://127.0.0.1:5000


[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

Objective function (1)

 

  • 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가 함

 

Objective function (2)
Objective function (3)

6) Optuna study object 생성

optuna object 생성

  • storage 파라미터를 로컬 sqlite file에 설정
  • 컴퓨터나 프로세스가 코드 붕괴를 run할 때 탐색을 감소시켜 중요

[5] Optimize Hyper-parameters with Optuna (con.)

7) Optuna에게 study.optimize() 로 search 시작 (100번 시도)

optuna start optimize search

 

  • perfect agent가 나온다면 평균 reward가 500점일 것
  • 그럼 hyperparameter 값들 도출 성공
agent_id = 298 is the winner
  • agent_id : 298
  • mean_reward : 500
  • optimized result with information of good hyperparameter

8) CartPole을 완벽하게 풀이하는 agent=298

cartople agent set

9) 결과 이용하여 agent 평가

agent 평가 진행하기

agent 평가
500 달성


[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 실험 파이프라인 구축

 

반응형