본문 바로가기

Reinforcement Learning

[RL] Imitation Learning(모방 학습)에 대한 설명 및 정리

728x90

Author: Joonhee Lim
Date: 2022/08/23

참고한 블로그: https://cding.tistory.com/71

https://reinforcement-learning-kr.github.io/2019/01/22/0_lets-do-irl-guide/


0. Motivation

필자는 강화학습에 대해 지속적으로 공부도 하고 실제로 학습까지 돌려본 경험이 있다. 하지만 엄청난 샘플링 양과 그에 따른 학습 시간을 보고 충격에 빠졌고 Data Sampling Efficiency가 첨가된 알고리즘은 없을까 라는 생각과 지도학습처럼 정답과 가까운 Action을 보여주고 그 행동을 모방하게 하는 알고리즘은 없을까 생각했었다.

 

근데 실제로 있었다.

 

그렇게 되어 차량 자율주행 같이 인간 전문가의 행동을 모방하는 것이 AI Agent의 초반 행동 갈피 잡기에 큰 도움을 줄 수 있는 Task에 매우 강력한 알고리즘 Imitation Learning에 대해 소개해보고자 한다. 마치 갑자기 발견한 것처럼 글을 써놨지만 1년 전에 연구를 진행하다 알게된 알고리즘이긴 하다.

 

강화학습, 그중에서도 Model-Free RL에서는 강력한 Policy를 찾기 위해 상당히 매우매우 많은 양의 데이터 Sample이 필요했다. 초기 Agent의 성능은 그저 Random Action에 불과했고 적절한 Action이 무엇인지 깨닫는데만 꽤 긴 시간이 소요된다.

 

거기다 Robot 및 Autonomous Driving Vehicle과 같이 고가 장비에서 학습되지 않은 0 Episode의 Agent로 학습을 시작하는 것은 로봇이나 차량을 폭파하겠다는 다짐을 보여주는 것이나 마찬가지이다. 또한 Simulation에서 학습하기 쉽지 않은 로봇팔로 분말을 그립하는 일과 같이 꽤나 있기 때문에 현실에서의 안정성과 효율성을 확보하는 것이 지난 Model-Free RL이 가진 방향성이었다.(물론 내 맘대로 설정한 방향성이다.) 

 

그렇다면 Agent가 어떤 행동이 그래도 괜찮은 행동인지 알 수 있는 정보를 준다면 쓸만한 Policy를 빠르게 찾을 수 있지 않을까?  예를 들자면 좌회전 신호 시에 좌회전하는 법만 알려줘도 꽤나 학습 속도가 빨라질 것으로 예상된다. 하지만 이를 넘어 Best Driver를 데려와 10시간동안 운전시킨 뒤 이 운전이 바로 Best Driving이다라고 알려준다면 순식간에 학습해버리지는 않을까? 라는 개념에서 시작된 것이 바로 IL(Imitation Learning)이다.


1. Behavioral Cloning

Imitation Learning의 방법 중 한가지인 BC이다. 제목 그대로 행동을 Cloning하는 것이다.

Supervised Learning을 통해 전문가의 Policy를 배운다.

 

Reward Function을 Shaping해줘야되고 만들어진 Reward Function을 통해 전문가 또한 보상을 받고 자신의 Good 움직임을 증명한다.

 

즉 직접 해당 학습과정에서 전문가가 State를 보고 Action을 내는 것이다.

학습을 위해 State와 Action을 묶어서 데이터셋에 저장한다.

 

간단하게 훈련 방법을 요약하면 다음과 같다.

1) 전문가의 플레이를 녹화한다. -> 이를 통해 데이터셋 구축

2) 데이터셋을 통해 모델 학습

3) Test!

 

Behavioral Cloning을 통해 학습을 할 때 주의해야할 것

1) 좋지 않은(Reward가 구린) 플레이 기록은 데이터셋에서 제거한다. BC는 좋은 행동만을 가르쳐야 하기 때문에 잘못된 사례를 가르치면 안된다.

2) Overfitting을 막기 위해 Dropout, 적당히 많은 양의 데이터셋을 쓰는게 중요하다

3) Seed값을 고정해야한다.

 

BC의 한계점: Compounding Error

 

일반적으로 지도학습은 모든 데이터가 IID라는 것을 전제로 하기 때문에 발생하는 문제이다.

IID: 각각의 데이터들이 독립적이고 동일한 확률분포를 갖는다는 것을 의미하고 서로 종속되어 있지 않다는 것이다.

 

하지만 자율주행 차량 학습 데이터는 시간에 따라 종속적이고 흐름이 있기에 무언가 문제가 발생해버리는 것이다.

 

참고한 블로그의 한 예를 살펴보자

 

자율주행 차량 예시) 사람의 경우, 고속도로를 달리는 중 휴게소가 가고 싶다면 휴게소 쪽으로 차선을 옮기게 될 것이다.

어떤 특정 state와는 관계 없이 (휴게소가 아주 가까이 있지 않더라도) 휴게소 쪽으로 차선을 옮기는 것이다.

하지만 Supervised learning 기법으로 학습한다면, 어떤 상황에 왜 차선을 변경하는지는 알지 못하고, "아, 저 state에서는 차선을 바꿔야겠구나!" 생각하고 action을 선택하게 된다.

 

이런 것들이 하나 둘씩 쌓이다 보면, error가 굉장히 커지게 된다.

 

이 문제를 해결하기 위해 DAGGER: Dataset Aggregation이라는 방식을 사용한다.

하지만 차량 자율주행에 적합한 해결책은 아니기에 스킵하도록 하겠다.


2. Inverse RL

이는 앞에서 기술한 BC와 다르게 Reward Function을 세우지 않는다.

즉 전문가의 Policy를 보고 Reward Function을 찾아내는 것이다.

 

이 방법은 전문가의 Policy가 Optimal하다는 전제가 필요하다.

전문가의 Policy가 Optimal하지 않다면 Reward Function에 대한 정보를 줄 수 없기 때문이다.

또한 전문가의 Policy가 Optimal하다고 한다면 Reward Function은 여러 개가 존재할 수 있다.

또한 BC와 다르게 Compounding Error 문제가 없으므로 경로 최적화에 적합하다.

 


정리해보자면 IL을 사용하면 학습 데이터 효율을 매우 높일 수 있으며 실제로 로봇이나 자율주행 차량과 같은 Task엔 좋은 방법론인 것 같다. 큰 문제점 중 한 가지는 전문가의 Action은 Optimal해야 모방학습에 의미가 있지만 Optimal한 Driving에 대해서 정확히 기술할 수 있는 사람은 없다. 그렇기에 어떻게 Optimal한 전문가의 정책을 얻어야할 지가 해결해야할 문제로 보인다.

반응형