본문 바로가기

강화 학습

강화 학습 기본 - 시간차 학습(Temporal-Difference Learning) part 1. 살사(SARSA)

https://wikibook.co.kr/reinforcement-learning/

 

파이썬과 케라스로 배우는 강화학습: 내 손으로 직접 구현하는 게임 인공지능

“강화학습을 쉽게 이해하고 코드로 구현하기” 강화학습의 기초부터 최근 알고리즘까지 친절하게 설명한다! ‘알파고’로부터 받은 신선한 충격으로 많은 사람들이 강화학습에 관심을 가지

wikibook.co.kr

해당 포스팅은 위의 책을 보고 정리한 내용입니다.

 


이전 포스팅(몬테카를로 근사:https://wnthqmffhrm.tistory.com/7) 서론에서,

충분히 많은 에피소드를 통해 다이나믹 프로그래밍과 달리 환경에 대한 정보 없이도 마르코프 결정 과정을 풀어 나갈 수 있음을 확인했습니다.

 

하지만 몬테카를로 방식에는 단점이 있습니다. 바로 하나의 에피소드(시작-끝)가 끝난 후, 업데이트가 이루어 진다는 것입니다. 에피소드가 길거나, 끝이 없는 연속 결정 문제는 적용하기 어렵습니다. 

 

오늘 포스팅할 시간차 학습(Temporal-Difference Learning, 이하 TD)은 각 타임스텝마다 가치함수를 업데이트하는 방식을 가지기 때문에 몬테카를로 방식의 단점을 보완할 수 있습니다. 바둑으로 따지자면 몬테카를로 방식은 바둑을 마친 후 처음부터 끝까지 다시 두며 생각하는 복기이고, TD방식은 하나 하나 두면서 업데이트 되는 거라고 할 수 있겠네요. 

 

이번 포스팅에는 TD 개념과 두가지 방법인 살사와 큐러닝을 하겠습니다.


  • 시간차 학습(Temporal-Difference Learning, TD) 

시간차 학습은 위에서 말한대로, 몬테카를로 근사와 달리 한 에피소드 전체를 보지 않고 바로 실시간으로 업데이트가 진행됩니다. 이때, 업데이트 되는 즉 이전에 에피소드로 알게된 상태 s에 대한 가치함수로 지금 행동의 가치 함수가 계산되기 때문에 시간차 학습이라 불리지 않나 싶습니다.

 

아래 세가지 수식을 들여다 보면서 설명 하겠습니다. 먼저 첫번째 수식은 몬테 카를로 근사의 함수 업데이트입니다. 그 아래는 시간차 학습에서의 업데이트인데, 두 식이 다른게 없다는 것을 알 수 있습니다. 세 번째 수식을 보면 G_t자리에 같지만 표현이 다른 수식을 넣어 놨을 뿐입니다.

 

저도 엥? 하게 되는 부분이였는데요. 책을 좀 더 들여다 본 결과, 수식에서는 다른 점이 없는게 맞는 거 같습니다.

다만, 업데이트가 되는 시점에 차이가 있는 것이죠. 따라서 위의 세번째 수식에서 G_t=R_(t+1)+γV(S_(t+1)) 이렇게 나타난 수식은 틀린게 아니지만, 첫 번째 수식에서의 G_t와 두 번째수식의 R_(t+1)+γV(S_(t+1))는 다른 상태에서의 보상 함수를 나타낼 수도 있습니다.

몬테 카를로 근사의 가치함수 업데이트
시간차 학습에서의 가치함수 업데이트
반환값은 다음과 같이 표현 가능하다.

몬테카를로 근사는 이미 다 지나온 길에 대한 계산이지만, TD방식은 지금 가지고 있는 정책에 의해 결정된 행동 A_t에 의해 움직여진 상태 S_t+1에 대해 계산이 이루어지기 때문입니다. 따라서, 몬테카를로는 이미 일어난 행동에 대한 계산을, TD방식에는 지금 선택한 행동에 대한 계산이 이루어 진다고 이해하면 될거 같습니다. 

 

여기서 R_(t+1)+γV(S_(t+1))-V(S_t)를 시간차 에러(TD Error)라고 합니다. V(S_(t+1)) 값은 지금 에이전트가 알고있는 값이지 실제 지금 행동을 통해 얻은 값이 아닙니다. 다만 에이전트는 이 값이 S_t+1의 가치함수라고 가정하고 업데이트하게 되는 것이죠. 책의 설명을 덧붙이자면, 다른 상태의 가치 함수의 예측값을 통해 지금의 가치함수를 예측하는 이러한 방식을 부트 스트랩(Bootstrap)이라고 한다고 설명합니다. 또한 충분히 많은 샘플링을 통하면 몬테카를로 예측보다 더 효율적으로 빠른 시간안에 참 가치함수에 근접한다고 말합니다. 하지만 초기 가치함수 값에 따랄 예측 정확도가 많이 달라진다고도 책에 나와있습니다.  

 

이렇게 TD방식은 몬테카를로 방식과 다르게 하나의 에피소드의 끝을 기다리지 않고, 실시간으로 업데이트를 할 수 있게 됩니다.


  • 살사(SARSA)

다음으로는 살사 방식입니다.  ([S_t, A_t, R_t+1, S_t+1, A_t+1])을 사용한다고 해서 앞 글자를 따서 SARSA로 부르는 것입니다. (저는 이름만 보고 어려울거 같아 겁먹었었습니다..). 살사 방식은 위의 내용만 따라오셨더라면 간단하게 설명이 가능 합니다. 단지, 위의 업데이트 방식의 대상이 상태가치함수 V가 아닌 행동가치함수 Q로 바뀐다는 차이가 있고, 그렇기 때문에 다음 상태에서의 A_t+1까지 고려하게 됩니다.(Re: 추정값이기 때문에 두 함수 모두 대문자로 표기합니다.)

 

이때 정책은 이전에 포스팅한 ε-greedy 정책(링크: https://wnthqmffhrm.tistory.com/8?category=906651)을 기본으로 합니다. ε-greedy 정책의 수식은 아래와 같습니다. 기본적으로 큰 큐함수(=행동가치함수)를 따라 행동 a를 취하지만, ε의 확률로 탐험(Exploration)을 통해 더 나은 길이 있나도 찾아보는 정책입니다.

ε-greedy 정책

아래와 같은 수식으로 Q함수가 업데이트 되는데, 위에 TD방식을 설명한거와 같은 흐름으로 이해하시면 됩니다. 상태 S_t 에서 행동 A_t를 취한 뒤, 다음 상태에 대한 정보인 R_t+1과 다음 상태에서 정책에 의한 행동 Q(S_t+1, A_t+1)를 받고 현재 상태의 Q(S_t, A_t)를 업데이트 합니다. 이때, 위의 TD방식과 다른 점은 S_t+1에서의 정책에 따른 A_t+1까지 고려한다는 것입니다. 이 부분을 조금 더 쉽게 말하면, 현재 상태서 움직인 다음, 그 다음 상태에서 움직인거 까지를 반영한다는 것입니다. 두 번의 행동 A_t, A_t+1에 대한 평가를 한다는 것이죠(단, A_t+1에대한 R_t+2는 고려하지 않습니다.).

 

SARSA방식에서 Q함수 업데이트

아래 그림은 그리드 월드에서의 SARSA 방식을 설명하기 위해 가져왔습니다. S_t의 상태에서의 정책이 A_t(파란 화살표)이고, R_t+1이 0으로 되었더라도, S_t+1에서 정책이 A_t+1을 선택한다면 Q(S_t+1, A_t+1) 값이 유의미한 양수일 것이므로 에이전트는 S_t에서 아래로 내려가는 행동을 강화시키는 방향으로 학습할 것입니다. 이렇게 반복하다 보면, 시작부터 S_t-2, S_t-1, S_t, S_t+1 그리고 도착 까지의 행동들이 도착점을 가는 방향으로 학습이 되어 있을 수도 있는 것이죠.

그리드 월드에서의 SARSA 예시 1

 


  • SARSA 방식의 한계 

위에서 에이전트가 적절히 학습 할 수 "있을 수도" 있다고 표현한 이유는 SARSA 방식은 그 한계가 있기 때문입니다.

그리드 월드에서 그 예시를 들겠습니다. 아래 두 그림은 서로 다른 두 에피소드에서 SARSA동작 중 함정에 빠지는 그림을 표현했습니다. 함정에 빠지는 이유는 아직 업데이트가 되지 않은 상태에 어떤 행동 A_t+1가 좋은지 몰라서 그럴 수도 있고, ε-greedy 정책에 의해 ε의 확률로 가게 될 수도 있을 것입니다(이때 R_t+1은 무시하겠습니다.).

서로 다른 두 에피소드에서의 SARSA 동작

위와 같은 방식으로 학습하게 되면 에이전트는 각 S_t지점에서 A_t라는 행동의 Q함수 값을 부정적으로(낮은 값 혹은 음수)판단 하여, 다음 에피소드 때는 A_t같이 행동하는 것을 지양하게 될 것입니다. 최적의 방식으로 도착점에 가려면 A_t가 필수적인데 말이죠. 이런 문제는 또다시 ε-greedy 정책에 의해 ε의 확률 지양하게 되었던 A_t를 행하게 됨으로써 해결될 수도 있지만, 이런 딜레마에 빠질 수 있다는 것 만으로도 학습에 악영향을 줄 수 있다는 점은 분명합니다.

 

이는 살사를 설명하는 방식인 On-Policy Temporal-Difference Control, 즉 자신이 행동한 것의 결과로 학습하는 방식의 단점이기도 합니다. 이런 딜레마를 해결하기 위해서 나온 방식이 Off-Policy Temporal-Difference Control인 Q-Learning입니다. Q-Learning 다음 포스팅에 이어서 하도록 하겠습니다.

 

이번 포스팅은 몬테카를로 근사의 한계를 극복할 수 있는TD방식과 SARSA 그리고 또 다시 그 한계를 알아보았습니다.

 

제 글이 도움이 되셨으면 좋겠습니다.

감사합니다.