본문 바로가기
연구실/개인 연구

강화학습(PPO) 손실(loss)값의 진동 현상에 대한 생각

by 정은진공부해 2020. 6. 17.

학습 진행도 확인

일반적으로 강화학습을 진행할 때, reward의 추이를 보고 학습이 진행되고 있는지를 평가한다. 하지만, sensing image/video와 같은 영상 기반의 DRL은 단순히 reward의 추이를 보고 학습이 진행되고 있는지를 확인하기 어렵다. (delayed reward, 데이터 비효율성 등의 이유로 인해, 당장 reward가 향상되고 있는지 판별하기 애매한 경험이 있다.) 

따라서, DRL의 학습 진행도를 확인하기 위해 나는 각 network의 loss를 확인하려 했으나, 예상되는 값이 아니라 많이 놀랐다. 이러한 현상의 원인을 내 생각대로 정리했다.

더 공부해서 해당 글을 수정해 나갈 생각이다.


작업 명세

작업 이름 : Jaco 로봇의 pick up 작업
observation : Image(84*84*3)
action : arm velocity control(6-D) + gripper position control(3-D)
reward : 물체에 온전히 reach가 될 때마다 +0.1, +(물체 높이의 변화량의 정규화된 값)
transition function : deterministic 
discount factor : 0.99

학습 명세

학습 방법 : 순수 강화학습 
학습 알고리즘 : PPO 알고리즘
하이퍼 파라미터 : (rollout size:1500, clipping factor:0.2, gae factor:0.98, batch_size:500, epochs:3, entropy coef:0.0, ..)

 

학습 초중반의 모습

 


뒤에 나올 모든 그래프의 가시성을 향상시키기 위해 smoothing 시켰다. smoothing weight는 0.91로 설정했다.

reward : reward 그래프가 진동하는 모습을 보인다. 이는 환경의 문제가 아닐까 싶다. 내가 구현한 이 로봇 조작 작업 환경에서 물체의 위치는 매 에피소드마다 무작위로 선정된다. 고차원의 연속 상태-행동 공간(high-dimensional continuous state-action space)에서 목표 물체의 위치까지 무작위로 바뀌기 때문에 agent가 최적의 행동 정책을 배우기에 더 어려운 것 같다. 하지만, 전반적으로 봤을 때 reward는 확실히 상승되었다.

 

n개의 에피소드에서 얻어진 reward들의 평균

 

value net loss: 그래프에서 볼 수 있듯이, value net의 loss는 꾸준히 상승한다. 처음엔 잘못 구현한 부분이 있는건가 싶었다. 하지만, reward가 확실히 상승되었기 때문에 이게 비정상적인 형상은 아닌 것 같았다. 다른 논문들과 해외 블로그 포스팅을 찾아보니 쉽게 답이 나왔다.

학습 방법은 deep neural network를 reinforcement learning에 접목한 deep reinforcement learning이다. 나는 너무 deep neural network의 학습 관점에서만 생각을 해왔다. 당연히 deep neural network의 학습이라면 loss의 gradient가 감소하는 방향으로 학습되는 것이 맞다. 하지만, 근본적으로 reinforcement learning이라는 것에 초점을 둔다면 생각이 달라질 수 있다. agent는 다양한 state-action space를 방문하여 reward를 제공받는다. 이에 따라, reward function에 기반한 reward distribution이 있다고 생각될 수 있다. value net은 이 reward distribution에서 미래의 reward까지 고려한 state-value를 배워야 한다. 

policy net이 다양한 state-action space를 방문함에 따라, reward distribution의 분산은 커질 컷이다. 반면, policy net이 특정한 state-action을 방문하도록 수렴되었다면, reward distribution의 분산은 작아질 것이다. 이에 따라, policy net이 어느정도 수렴한 학습 중후반부부터 reward distribution이 안정화가 되어 critic net의 loss는 작아질 것이다.

 

value net loss

 

policy net loss: policy net loss도 단순히 loss가 감소하는 양상을 보이지 않는다. 심지어, 진동하는 모습을 보인다. 물론, 학습이 진행됨에 따라, 진동폭이 작아진다는 것을 확인할 수 있다. 이는 점점 수렴이 되는 과정이라고 생각한다.

다른 논문이나 해외 포스팅 자료에서는 이렇게 policy loss가 진동하는 것이 정상적인 현상이라고 본다. 하지만, 이러한 결과가 발생한 이유는 설명하고 있지 않다. 현재 내가 생각하고 있는 가설은 value net의 영향이 아닐까 싶다. PPO와 같은 actor-critic RL에서 policy net가 방문한 (state-action)을 value net이 평가한다. 하지만, 이 value net도 하나의 신경망이기 때문에 이 value net의 출력값을 토대로 loss를 계산하는 policy net의 loss가 진동할 수 있지 않을까 생각이 든다.

 

policy net loss