본문 바로가기

일지

2. 알고리즘 구체화

2021.10.14

1. Sparse Reward 문제 극복을 위한 아이디어

이번 학기 동안 Sparse Reward 문제를 해결하는 알고리즘을 연구해보고자 합니다.

먼저 조금 더 구체적으로 Sparse Reward 환경의 에이전트가 빠르게 학습할 수 있는 알고리즘을 만들고자 합니다.

 

저는 알고리즘의 '빠르게 학습할 수 있는' 부분을 에이전트의 trajectory의 길이에 따라 능동적으로 보상(Reward)를 보정해주어 구현하고자 합니다. 다시 말해서 아래 그림처럼 목표에 도달한 trajectory가 너무 길다면 보상에 페널티를 주는 형식입니다.

 

trajectory가 길다는 것은 에이전트가 목표에 도달하는 데 많은 시간이 걸렸다는 뜻임으로 '빠른 시간 안에 목표에 도달하는 것이 주요한 상황'이라면 페널티를 주는 것이 직관적으로 합당합니다. 반면에 에이전트가 아주 빨리 목표에 도달했다면 적은 페널티를 주는 것이 합당할 것입니다. 다시 말해 에이전트가 목표에 도달했을 때까지의 trajectory를 분석하여 이에 따라 능동적으로 페널티를 주고자 하는 것이 본 알고리즘의 핵심 내용입니다. 앞으로 이 알고리즘은 에이전트가 스스로 trajectory에 따라 보상을 보정하여(페널티를 통해) 학습을 진행하기에 Active Reward Shaping 알고리즘이라고 부르겠습니다.

 

2. 구체적인 알고리즘 내용

본 알고리즘은 Experience Replay Buffer를 사용할 것입니다. 따라서 강화학습의 Experience Replay Buffer를 사용하는 어떠한 알고리즘에도 적용 가능합니다. 본 알고리즘의 프레임워크는 앞서 말했듯이 에이전트가 목표에 도달하는데 걸린 시간에 따라 페널티를 주게 됩니다. 구체적으로 한 에피소드에서 에이전트가 목표까지 걸린 시간이 T라면, 각 상태에서의 보상 reward_t는 reward_t - a(T-t) 로 보정이 됩니다. 여기서 a는 비례상수입니다. 즉 이 식을 생각해보면 만약 T-t가 크다면 큰 페널티를 받게 됩니다. 이는 학습에 있어 최적 정책을 학습하는데 큰 bias를 남기게 됩니다. 따라서 글로벌 옵티마에 도달하지 못할 확률이 크지만, 적어도 지역적으로는 최적 정책에 도달하는 데 있어 빠른 시간 만에 도달하기를 기대합니다.

리워드를 보정한다는 것은 그 상태에서의 가치를 보정한다는 것과 마찬가지입니다. 보상을 reward_t - a(T-t)로 보정하게 되면 목표와 가까운 상태는 목표와 먼 상태에 비해 매우 큰 가치의 차이를 가지게 될 것입니다. 다시 말해 오히려 목표에 가까운 상태가 리턴값이 클 수 있습니다. 이는 미로찾기 문제에서 각 스텝을 지날 때마다 음수의 보상을 받는 경우와 유사합니다. 다시말해 본 알고리즘은 환경을 각 step마다 음수의 보상을 받는 dense한 reward space상황으로 변환하는 것과 유사합니다.

 

3. 알고리즘의 의사 코드

아래는 위에서 제안한 알고리즘의 의사 코드입니다. DDPG에 본 아이디어를 접목시켜보았습니다.

위 의사코드에는 Target Network의 도입, Smooth Update 등 최신 강화학습에서 사용하는 다양한 트릭이 생략되어있지만, Active Reward Shaping 알고리즘은 일반적인 알고리즘이기에 언제든지 적용 가능합니다.