본문 바로가기
Reinforcement learning 기초

[Reinfocement Learning] Experience Replay

by gwan9999 2023. 4. 23.

Experience Replay

 

지난 포스팅까지의 개념들을 통해 learning part와 action part로 나누어보자

이번 시간에는 learning part에 대해 더 자세히 알아보도록 하자.


자율주행자동차의 예시를 하나 들어보자 

자율 주행 자동차의 경우 state를 표현하는 방법이 단순하게 $ x_1, x_2 $로 끝나지 않을 것이다. 

훨씬 더 디테일한 요소들이 들어갈 예정이다.

나올 수 있는 action 들도 4개가 아닌, 환경에 따라 가능한 행동의 수들이 더 많아 질 것이다. 

그래도 그냥 간단히 생각하기 위해서 4개라고 생각해보자 

 

아무튼 질문은, 이 정보가 어떻게 신경망에 입력이 되는가이다. 

더 정확하게는 우리의 신경망이 몇 번이나 작동되는가이다.

 

차가 이동할 때마다 새로운 상태에 놓이게 되고, 그 모든 상태 정보가 신경망을 통과하게 된다.

즉, 차가 새로운 상태에 놓일때 마다 신경망을 통과하게 된다.

 

자동차가 결국 길을 통과하는 것이 목표이기 때문에

아래로 내려가면서 목적지에 가까워질 수록 보상을 받게 될 것이다. 

 

좀 더 디테일 하게 봐보자

그림과 같이 자동차가 before에서 after로 이동한다고 할때,

벽을 따라서 쭉 직진하면서 이동할 것이다. 

환경 구조에 따라서 100번 이동한 것일 수도 있고, 그 보다 작은 횟수를 이동했다고 판단했을 수도 있다.

기본적으로 계속해서 앞으로.. 앞으로 ... 쭉 이동을 했는데, 아무것도 변한 것이 없다. 

위치가 바뀌었다는 차이가 있긴하지만, 자동차의 입장에서 주변 환경을 보면 아무것도 변한 게 없다. 

 

하지만, 새로운 상태가 될 때마다 그 새로운 상태를 신경망에 넣어준다면,

해당 상태에서 많은 입력 정보들은 변하지 않을 것이다.

그리고 계속 같은 일을 할 것이다.(앞으로 가는 일)

 

이렇게 거의 같은  값의 입력정보(state)를 신경망에 집어넣으면 변한게 하나도 없기 때문에 

차가 적어도 "오른쪽에 있는 벽을 따라서 달린다!" 라는 것을 잘 학습한 것이다. 

그리고 계속 달리면 목적지인 reward 와 가까워 지기 때문에 

Agent는 "오 벽에 붙어가면 잘하는 거네?!" 라고 생각할 것이다. 

 

그리고 나서 이제 커브길에 도착할텐데, 이제 직진코스와의 입력된 state가 달라지게 될 것이고,

기존의 인공 신경망 모델은 해당 상태에 적응을 하지 못하게 될 가능성이 높다. 

 

또 따로 적응해서 어떻게 가더라도 다음 커브에서 또 문제가 생길 가능성이 높다.

여기서 문제점이 있다는 걸 인지할 수 있다.


우리는 신경망을 사용하고 있고, 매 상태를 업데이트할 때, 위의 예시의 직진 코스처럼 연속적인 상태가 많을 수가 있는데, 

이렇게 환경에서 연속적인 상태가 서로 연관되어있거나 상호의존적인 경우는 정상적인 경우이다.

 

그리고 이런 상호의존성이 신경망을 편항되게 만들지 않아야 한다. 

우리는 단순히 차가 단순히 직선이나 곡선을  따라 달리는 방법만 학습하기를 원하지 않기 때문이다.

이러한 신경망의 편향성을 관리하기 위해 "experience replay"가 등장하게 된다. 


직선 코스에서의 달라지는 state수가 50개든, 100개든 신경망에 바로 입력하지 않고

대신 agent의 메모리에 저장을 해 놓을 것이다. 

계속해서 저장만 해놓다가, 특정 경계(이 경우에는 직선의 state에서 곡선의 state로 바뀌는 상황)에 다다르면

아까 모아둔 데이터(experience batch)를 이용해서 학습을 시작할텐데

우리는 "Uniform distribution"전략을 선택할 것이다.

즉, 중요한 점은 모든 state에 대해서 learrning 을 하지 않을 예정이라는 것이다. 

 

각 경험은 총 4개의 요소로 나타낼 것이다. 

1. 기존의 상태

2. 수행한 행동

3. 새로운 상태

4. 얻은 보상

그렇게 한다면 데이터의 편차를 없애서 모델의 편향을 없앨 수 있따.

 

또한, 이전의 경험들을 잊어버리고 새로운 경험을 학습시킨다는 면에서 batch를 업데이트 할때,

드문 케이스에 대해서도 여러번 학습이 가능하다는 장점이 있다. 

 

 

댓글