Explore
모든 Policy
는 Exploration Object
를 가지고 있습니다. Policy
가 Model에 의해서 정해지지 않고 탐색을 하는 방식으로 장기적으로 return
값을 높이기 위해서 강화학습에 필수적입니다.
아래와 같은 방식으로 Explore
를 설정할 수 있습니다.
Explore 방식과 hyperparameter setting은 Ray.io에서 확인할 수 있습니다.
# DQN
config = {
"explore": True,
'expolration_config : {
"type": "EpsilonGreedy",
"initial_epsilon": 1.0,
"final_epsilon": 0.02,
"epsilon_timesteps": 10000
}
}
# StochasticSampling
config = {
"explore": True,
"exploration_config": {
"type": "StochasticSampling",
"random_timesteps": 0,
}
}
Curriculum Learning
Cirriculum Learning은 학습을 진행하면서, 난이도가 유동적으로 변하는 경우입니다. 난이도가 너무 높은 Task에 대해서는 모델이 학습하기 어려우며, 쉬운 문제부터 차근차근 배워서 향후 어려운 Task에 대해서도 높은 성능 목표로 합니다.
Trainer()는 그대로 유지한 상태에서 특정 조건을 만족할 때마다 environment 자체만 바꿔주면 됩니다.
1. Using modification of train
import ray
from ray import tune
from ray.rllib.agents.ppo import PPOTrainer
# === define curriculum ===
def train(config, reporter):
trainer = PPOTrainer(config=config, env=YourEnv)
while True:
result = trainer.train()
reporter(**result)
if result["episode_reward_mean"] > 200:
phase = 2
elif result["episode_reward_mean"] > 100:
phase = 1
else:
phase = 0
trainer.workers.foreach_worker(
lambda ev: ev.foreach_env(
lambda env: env.set_phase(phase)))
num_gpus = 0
num_workers = 2
# === tune ===
ray.init()
tune.run(
train,
config={
"num_gpus": num_gpus,
"num_workers": num_workers,
},
resources_per_trial=tune.PlacementGroupFactory(
[{"CPU": 1}, {"GPU": num_gpus}] + [{"CPU": 1}] * num_workers
),
)
2. Using Callback
Callback에서는 Train이 끝날 때마다 작동하는 on_train_result()
함수가 있습니다. 이 함수를 변경해서 좀더 쉽게 Curriculum Learning을 할 수 있습니다.
import ray
from ray import tune
def on_train_result(info):
result = info["result"]
if result["episode_reward_mean"] > 200:
phase = 2
elif result["episode_reward_mean"] > 100:
phase = 1
else:
phase = 0
trainer = info["trainer"]
trainer.workers.foreach_worker(
lambda ev: ev.foreach_env(
lambda env: env.set_phase(phase)))
ray.init()
tune.run(
"PPO",
config={
"env": YourEnv,
"callbacks": {
"on_train_result": on_train_result,
},
},
)
References
'딥러닝 > 강화학습(RL)' 카테고리의 다른 글
[🤖Bumjin's RL - 1] 강화학습 소개 및 구분 (0) | 2021.05.29 |
---|---|
[Analyse RLLib] 6 Multi Agent Two Step Game and MADDPG (0) | 2021.02.26 |
[Analyse RLLib] 4. RLlib CallBacks (0) | 2021.02.26 |
[Analyse RLLib] 3. Train Model with Ray Trainer (0) | 2021.02.26 |
[Analyse RLLib] 2. RLlib 기본 훈련 코드 돌리기 (0) | 2021.02.26 |