ai theory

강화학습 기초 (2) - 과거를 얼마나 기억해야 할까?

Junyoung Park · 2024-03-22 · 9 min

들어가며...

첫 번째 글에서 Agent는 현재 State StS_t를 보고 Action AtA_t를 고른다고 적었다. 그런데 막상 다시 읽어보니 가장 중요한 질문 하나를 꽤 자연스럽게 건너뛰었다.

그래서 State에는 대체 무엇이 들어가야 할까?

게임 화면 한 장이 State일 수도 있고, Robot의 Camera 영상과 관절 각도를 합친 것이 State일 수도 있다. 점심 메뉴 예시에서는 날씨, 남은 시간, 현재 위치, 최근에 먹은 메뉴를 State라고 묶었다. 이렇게만 보면 State는 그냥 지금 알고 있는 정보를 적당히 모아둔 상자처럼 보인다.

하지만 이 상자를 너무 작게 만들면 Agent는 서로 다른 상황을 같은 상황으로 착각한다. 반대로 지금까지 일어난 일을 전부 욱여넣으면 틀리지는 않겠지만, 학습할 때마다 아주 긴 기록을 들고 다녀야 한다. 오늘 점심을 고르는데 3년 전 화요일에 마신 Coffee의 온도까지 기억할 필요는 없을 것이다.

이번 글에서는 이 문제를 다음 순서로 천천히 정리해보려고 한다.

  1. Observation, History, State는 무엇이 다른가?
  2. State는 왜 History를 요약해야 하는가?
  3. Markov property의 수식은 실제로 무슨 뜻인가?
  4. Environment를 전부 볼 수 없으면 어떻게 해야 하는가?

MDP의 정식 정의와 Transition probability는 다음 글로 미룬다. 이번에는 수식에 등장하는 StS_t가 어떤 자격을 갖춰야 하는지부터 살펴본다.

눈앞에 보이는 것과 실제 상황은 다르다

우선 Observation부터 시작해보자. Observation OtO_t는 시간 tt에 Agent가 실제로 관측한 정보다. 사람에게 비유하면 눈과 귀를 통해 지금 들어온 정보에 가깝다.

엘리베이터 앞에 서 있는데 전광판에 5층이라고 표시되어 있다고 하자.

Ot=5FO_t = \text{5F}

지금 보이는 숫자만으로 엘리베이터가 다음에 어디로 갈지 맞힐 수 있을까? 5층이라는 정보만으로는 부족하다. 엘리베이터가 위로 올라가는 중이었다면 다음은 6층일 가능성이 높고, 아래로 내려오는 중이었다면 다음은 4층일 가능성이 높다.

즉, 똑같은 5층 화면을 보고 있어도 실제 상황은 서로 다를 수 있다.

State 1=(5F,)State 2=(5F,)\begin{aligned} \text{State 1} &= (5\text{F}, \uparrow) \\ \text{State 2} &= (5\text{F}, \downarrow) \end{aligned}

여기서 위쪽 화살표를 알아내려면 직전에 4층이 표시되었다는 사실이 도움이 된다. 지금 Observation 한 장만 보는 것이 아니라, 조금 전부터 이어진 기록을 함께 보는 셈이다.

History는 지금까지의 재생 목록이다

Agent가 지금까지 관측하고 행동하고 보상받은 모든 기록을 History HtH_t라고 한다. 첫 글에서 사용한 Index에 맞추면 대략 다음과 같이 적을 수 있다.

Ht=(O1,A1,R2,O2,A2,R3,,Ot)H_t = (O_1, A_1, R_2, O_2, A_2, R_3, \ldots, O_t)

기호가 길어서 복잡해 보이지만, 실제로는 시간 순서대로 적은 재생 목록이다.

  • O1O_1: 처음에 본 것
  • A1A_1: 그때 한 행동
  • R2R_2: 행동 뒤에 받은 보상
  • O2O_2: 그 결과로 새로 본 것
  • 그리고 현재의 OtO_t까지 이어진 기록

교재에 따라 Reward의 Index를 RtR_t로 적기도 하고 Rt+1R_{t+1}로 적기도 한다. 표기가 조금 달라도 핵심은 같다. History는 Agent가 겪은 일을 시간 순서대로 모아둔 전체 기록이다.

그렇다면 History를 그대로 State로 사용하면 되지 않을까?

이론적으로는 가능하다. 지금까지 본 것을 하나도 버리지 않았으니 정보가 부족할 가능성도 낮다. 다만 Episode가 길어질수록 History도 계속 길어진다. 엘리베이터의 다음 층을 예상하기 위해 아침부터 전광판에 나타난 모든 숫자를 매번 다시 읽는 것은 지나치다. 최근 층과 이동 방향 정도면 충분하다.

그래서 State는 보통 History에서 앞으로의 판단에 필요한 정보를 꺼내 만든다.

St=f(Ht)S_t = f(H_t)

이 수식은 어렵게 읽을 필요가 없다.

지금까지의 기록 HtH_t를 함수 ff에 넣어서, 의사결정에 사용할 요약본 StS_t를 만든다.

State는 History를 무작정 줄인 요약문이 아니라, 앞으로를 판단하는 데 필요한 정보를 남긴 요약본이다.

중요한 것은 짧게 만드는 것 자체가 아니다. 미래의 Reward와 다음 상황을 예측하는 데 필요한 정보는 남겨야 한다. 엘리베이터 예시에서는 과거의 모든 층을 버려도 괜찮지만, 이동 방향까지 버리면 5층 다음이 4층인지 6층인지 구분하기 어려워진다.

사진을 압축할 때 File size만 가장 작게 만드는 것이 목표가 아닌 것과 비슷하다. 사람 얼굴을 알아봐야 하는데 눈, 코, 입까지 전부 뭉개버리면 작은 File은 얻었지만 쓸 수 있는 정보는 잃었다. State representation도 작으면서 충분해야 한다.

Environment state와 Agent state

David Silver의 첫 강의에서는 State를 조금 더 세분화해서 설명한다. 처음 볼 때는 용어가 늘어난 것처럼 느껴졌지만, 누가 그 정보를 가지고 있는지 나누면 생각보다 간단하다.

Environment state

Environment가 다음 Observation과 Reward를 만들어낼 때 사용하는 내부 정보다. 실제 엘리베이터라면 현재 위치, 속도, Motor 상태, 눌린 층 Button, 문의 열림 여부 같은 정보가 포함될 수 있다.

이 정보는 보통 Agent에게 전부 공개되지 않는다. 심지어 다음 결정을 내리는 데 별로 중요하지 않은 정보도 들어 있을 수 있다. 엘리베이터 천장의 전구 Serial number까지 Environment 내부에는 존재하겠지만 다음 층을 예측하는 데는 거의 필요하지 않다.

Agent state

Agent가 Action을 고를 때 실제로 사용하는 내부 정보다. Agent가 받은 Observation과 과거 경험을 이용해 직접 만든다.

Stagent=f(Ht)S_t^{\text{agent}} = f(H_t)

Robot이 Camera 한 장만 입력으로 사용할 수도 있고, 최근 10장의 영상을 Neural Network에 넣어 이동 방향을 추정할 수도 있다. 어느 쪽이든 Agent가 의사결정에 사용한다면 Agent state다.

정리하면 Environment state는 세계가 실제로 들고 있는 내부 사정이고, Agent state는 Agent가 판단을 위해 들고 있는 요약본이다. 둘은 같을 수도 있지만 항상 같지는 않다.

Markov property: 현재만 알면 충분하다는 말

이제 State가 만족하면 좋은 성질을 하나 붙여보자. State StS_t가 Markov property를 가진다는 것은 다음과 같이 표현한다.

P(St+1St)=P(St+1S1,S2,,St)P(S_{t+1} \mid S_t) = P(S_{t+1} \mid S_1, S_2, \ldots, S_t)

처음 보면 양쪽에 비슷한 기호가 반복되어서 무엇을 비교하는지 잘 보이지 않는다. 좌변과 우변을 따로 읽어보자.

  • 왼쪽: 현재 State StS_t만 알 때, 다음 State St+1S_{t+1}이 될 확률
  • 오른쪽: 처음부터 현재까지 모든 State를 알 때, 다음 State St+1S_{t+1}이 될 확률

두 확률이 같다는 것은 현재 State를 이미 알고 있다면 더 오래된 과거를 추가로 보여줘도 다음 State에 대한 예측이 달라지지 않는다는 뜻이다.

엘리베이터의 현재 State가 단순히 5층이라면 이 성질을 만족하기 어렵다. 이전에 4층이었는지 6층이었는지 알면 다음 층의 예측이 달라지기 때문이다.

반면 현재 State에 위치와 방향을 함께 넣어 (5F,)(5\text{F}, \uparrow)라고 만들었다고 하자. 단순화한 엘리베이터에서는 이 정보만으로 다음 움직임을 예측할 수 있다. 더 오래된 층 기록은 이미 방향이라는 정보 안에 요약되어 있으므로 추가로 필요하지 않다.

현재 State가 과거의 유용한 정보를 충분히 담고 있다면, 다음 State를 예측하기 위해 전체 History를 다시 펼칠 필요가 없다.

이 성질은 흔히 “미래는 현재가 주어졌을 때 과거와 독립이다”라고 설명한다. 여기서 조건인 현재가 주어졌을 때가 중요하다.

과거가 아무 의미도 없다는 말이 아니다. 과거에 4층을 지나왔다는 정보가 현재 State의 위쪽 화살표를 만드는 데 사용되었다. 과거는 이미 현재 State 안으로 들어왔다. Markov property는 과거를 전부 잊으라는 규칙이 아니라, 미래를 판단하는 데 필요한 과거를 현재 State에 제대로 요약하라는 조건에 가깝다.

그래서 Markov state를 충분 통계량(Sufficient statistic)이라고 부르기도 한다. History 전체 대신 State만 들고 있어도 미래를 예측하는 데 필요한 정보가 충분하다는 의미다.

상태는 세상이 원래 Markov라서 생기는 것이 아니다

여기서 본인이 처음에 했던 오해가 하나 있다.

어떤 환경은 원래 Markov이고, 어떤 환경은 원래 Markov가 아닌 것 아닐까?

물론 환경의 특성도 중요하지만, 무엇을 State라고 정의했는지도 함께 봐야 한다. 같은 엘리베이터라도 State를 5층이라는 숫자 하나로 정하면 정보가 부족하고, 위치와 방향을 함께 넣으면 훨씬 좋은 Markov state가 된다.

동영상에서 공이 움직이는 방향을 맞히는 문제도 비슷하다. 한 Frame에는 공의 위치만 보이므로 속도를 알기 어렵다. 연속된 두 Frame을 함께 보면 공이 어느 방향으로 얼마나 움직였는지 추정할 수 있다.

St=(Ot1,Ot)S_t = (O_{t-1}, O_t)

이처럼 Observation 하나로 부족하면 여러 Observation을 묶어 State를 만들 수 있다. Atari 게임을 다루는 초기 DQN에서 연속된 여러 Frame을 쌓아 입력으로 사용한 이유도 같은 직관으로 이해할 수 있다. 현재 화면 한 장만으로는 물체가 위로 가는지 아래로 가는지 구분하기 어렵기 때문이다.

다만 몇 장을 쌓으면 언제나 완벽한 Markov state가 된다는 뜻은 아니다. 필요한 기억의 길이는 환경에 따라 달라지고, 숨겨진 정보를 과거 Observation만으로 정확히 복원할 수 없는 경우도 있다.

완전히 보이는 환경과 일부만 보이는 환경

Agent가 Environment state를 직접 전부 관측할 수 있다면 Fully observable environment라고 한다. 이 경우에는 단순하게 Observation을 State로 사용할 수 있다.

Ot=StO_t = S_t

Chess를 예로 들면 모든 말의 위치와 누구의 차례인지, Castling 가능 여부처럼 게임 진행에 필요한 정보를 모두 볼 수 있다. 여기서 Chess board의 사진 한 장만이 아니라, 규칙상 미래를 결정하는 데 필요한 전체 게임 상태를 관측한다고 생각해야 한다.

반대로 Agent가 Environment state의 일부만 볼 수 있다면 Partially observable environment다.

OtStO_t \neq S_t

Poker에서는 내가 받은 Card와 공개된 Card는 볼 수 있지만 상대의 손패는 볼 수 없다. Robot은 Camera 앞에 있는 벽은 볼 수 있어도 자신의 절대 위치나 벽 뒤의 장애물은 모를 수 있다. 주식 거래 Agent도 현재 가격은 관측할 수 있지만 시장 참여자들의 의도나 앞으로 나올 News까지 직접 볼 수는 없다.

Observation은 Agent에게 보이는 부분이고, State는 다음 판단에 필요하다고 여기는 전체 상황이다.

부분 관측 환경에서는 현재 Observation만 Agent state로 쓰기 어렵다. 그래서 Agent는 다음과 같은 방법으로 보이지 않는 상황을 추정한다.

  1. 전체 History를 사용한다.
  2. 최근 Observation과 Action을 일정 길이만큼 묶는다.
  3. 숨겨진 State가 무엇일지에 대한 확률 분포인 Belief state를 유지한다.
  4. RNN처럼 과거 정보를 내부 Memory에 누적하는 Model을 사용한다.

이런 문제를 Partially Observable Markov Decision Process, 줄여서 POMDP라고 부른다. 이름이 길지만 지금은 “실제 State를 전부 볼 수 없어서, 보이는 기록을 이용해 State를 추정해야 하는 문제”라고 이해하면 충분하다.

State를 잘못 만들면 무엇이 문제일까?

State representation이 부족하면 Agent 입장에서는 서로 다른 상황이 똑같아 보인다.

가령 엘리베이터 State를 5층 하나로만 저장했다고 하자. 5층에서 위로 가야 했던 경험과 아래로 가야 했던 경험이 하나의 칸에 섞인다. Agent는 같은 State에서 서로 모순되는 결과를 계속 보게 되고, 다음 State나 Value를 정확히 예측하기 어려워진다.

반대로 State에 불필요한 정보를 너무 많이 넣으면 가능한 State의 수가 급격히 늘어난다. 실제로는 같은 판단을 내려도 되는 상황을 서로 다른 State로 취급하므로 경험을 공유하기 어렵다. 오늘의 Date, 벽의 미세한 색상, 의미 없는 Sensor noise가 전부 별도 State를 만든다면 비슷한 상황을 매번 처음 보는 것처럼 학습할 수 있다.

좋은 State는 다음 두 조건 사이에서 균형을 잡는다.

  • 미래를 예측하고 Action을 고르는 데 필요한 정보는 남긴다.
  • 같은 판단에 필요하지 않은 정보는 가능한 한 버린다.

State를 정하는 일은 단순한 Data 전처리가 아니다. Agent가 세상을 어떤 기준으로 같은 상황과 다른 상황으로 나눌지 결정하는 일이다. 좋은 Algorithm을 사용해도 State에 필요한 정보가 없다면 잃어버린 정보를 마법처럼 복원할 수는 없다.

수식을 한 번 더 문장으로 읽어보기

이번 글에서 가장 중요한 두 수식을 붙여놓고 다시 읽어보자.

St=f(Ht)S_t = f(H_t)

History에서 미래의 판단에 필요한 정보를 골라 현재 State를 만든다.

P(St+1St)=P(St+1S1,,St)P(S_{t+1} \mid S_t) = P(S_{t+1} \mid S_1, \ldots, S_t)

그 State가 과거를 충분히 요약했다면, 다음 State를 예측할 때 현재 State만 보는 것과 전체 과거를 보는 것이 같다.

결국 두 수식은 따로 떨어진 이야기가 아니다. 첫 번째 수식은 State를 만드는 과정이고, 두 번째 수식은 그렇게 만든 State가 충분한지 확인하는 기준이다.

이번 글에서 기억할 것

이번 글의 내용을 한 문장으로 줄이면 다음과 같다.

State는 단순히 지금 눈에 보이는 화면이 아니라, 미래를 판단하는 데 필요한 History를 담은 요약본이다.

조금 더 나누면 다음 다섯 가지다.

  1. Observation은 Agent가 지금 실제로 관측한 정보다.
  2. History는 지금까지의 Observation, Action, Reward를 시간 순서대로 모은 기록이다.
  3. Agent state는 History를 이용해 만든 의사결정용 내부 표현이다.
  4. Markov property는 현재 State를 알면 더 오래된 과거가 미래 예측에 추가 정보를 주지 않는다는 뜻이다.
  5. 부분 관측 환경에서는 History, Belief state, Memory 등을 이용해 보이지 않는 State를 추정해야 한다.

첫 글에서 StS_t를 별 설명 없이 현재 상황이라고 불렀다면, 이제는 조금 더 까다롭게 볼 수 있다. “정말 현재 Observation만으로 충분한가?”, “방향이나 속도처럼 과거에서 가져와야 할 정보가 빠지지는 않았는가?”를 먼저 확인해야 한다.

다음 글에서는 이 Markov state 위에 Reward와 Action을 올려서 Markov Reward Process와 Markov Decision Process를 정식으로 만들어볼 예정이다. 이름은 길지만 결국 이번 글의 엘리베이터 그림에 Transition probability와 Reward를 하나씩 붙이는 과정이다.

참고 자료