01. 강화학습
강화학습은 지도학습일까, 비지도학습일까? 에이전트가 어떤 환경에서 어떤 행동을 하면 그에 맞는 보상이 주어진다는 점에서 지도학습이라고 볼 수도 있지만, 직접적인 정답은 주어지지 않기 때문에 비지도학습이라고 볼 수도 있다. 즉, 강화학습은 지도학습과 비지도학습의 성격을 모두 갖고 있지만 둘 중 어디에도 속하지 않고 독자적으로 분류될 수 있다.
강화학습의 장점은, 정답을 정확히 라벨링하기 어려운 상황에서 보상을 통해 에이전트로 하여금 어떤 규칙 (정책)을 찾을 수 있게 만든다는 것이다. 강화학습은 답이 정해져 있는 출력만을 내놓는 것이 아니라 상황에 따라 다르게 행동할 수 있는 '것'을 만들 수 있다. 마치 사람처럼.
강화학습에선 기본적으로 모델에게 환경/행동에 대한 사전 정보가 주어지지 않는다. 다만 어떤 상황이 주어졌을 때 어떤 행동을 '해본다'. 그 다음에 보상을 받는다. 상황이 바뀐다. 그럼 또 어떤 행동을 '해본다'. 또 보상을 받는다. 이를 반복하되 미래 시점에서 보상의 총합을 최대화하도록 상황에 따른 행동 집합을 최적화한다. 학습이 완료되면 어떤 상황이 주어졌을 때 모델은 어떤 행동을 '한다'.
02. 강화학습의 구성 요소
- agent (에이전트): 학습하려는 모델이자 주체
- environment (환경): render, reset, step 등 agent에게 주어지는 상황을 정의한 배경.
- state (상태): 환경이 agent에게 제공하는 현재 상황에 대한 정보. 이때 agent는 사람처럼 스스로 문제에 대한 정의를 내리지 못하기 때문에, 문제 설정을 할 때 agent가 학습하기에 너무 적지도, 많지도 않은 적절한 양의 정보를 제공하는 것이 중요함.
- action (행동): agent가 수행하는 대상. 보통 모든 상태에서 할 수 있는 행동은 동일함. (e.g., gridworld에서 agent는 각 스텝에서 위/아래/왼쪽/오른쪽으로 갈 수 있듯, 모든 상태에서의 행동 집합은 정해져 있음)
- policy (정책): agent의 행동 집합. 모든 상태에 대한 모든 행동의 확률을 적어둔 표.
- reward (보상): agent의 행동에 대해 환경이 '즉각' 제공하는 숫자값. 이를 통해 agent는 이 상황에서 어떤 행동이 좋은지 나쁜지를 알 수 있음.
- value (가치 함수): 보상의 총량. 이를 최대로 만드는 것이 강화학습의 목표. 따라서 agent는 보상보다 가치 함수를 최대화하는 것에 주목함. (reward < value)
이 정의들을 기반으로 강화학습의 메커니즘을 설명하면...
강화 학습은 에이전트와 환경으로 이루어져 있다.
-> 환경이 에이전트에게 어떤 상태를 주면 에이전트는 행동한다.
-> 환경은 그 행동에 대한 보상을 에이전트에게 준다.
-> 에이전트는 보상에 근거해 상황 별로 보상의 총합인 가치 함수를 최대화하는 행동을 학습해야 한다.
-> 상황에 따라 보상을 최대화할 수 있는 행동의 집합인 정책이 만들어진다.
03. 강화학습을 수학적으로 정의하기
순차적 행동 결정 문제란 순차적으로 행동을 선택하고 그 결과를 바탕으로 또다른 선택을 하는 과정을 반복하여 문제를 해결하는 방법이다. 예컨대 어떤 태스크를 여러 개의 태크스로 쪼갤 수 있다고 해보자. 첫 번째 하위 태스크에서 어떤 선택을 하느냐에 따라 두 번째, 세 번째 하위 태스크에서의 선택과 결과가 달라질 수 있다. 따라서 주어진 하위 태스크 안에서 최선의 선택을 해야 한다. 강화학습도 이와 같다. t번째 타임 스텝에서 어떤 행동을 하느냐에 따라 t+k번째 타임 스텝에서 어떤 행동을 할 지도 달라지고 가치 함수도 달라질 수 있다. 따라서 나중에 행동을 잘 선택하기 위해, 그리고 가치 함수를 최대화하기 위해 각 타임 스텝에서 최선의 선택을 해야 하고 이 최선의 선택을 학습하는 과정이 바로 강화학습이다. 즉, 강화학습은 순차적 행동 결정 문제를 해결하는 방법 중 하나이다.
MDP (Markov Decision Process)는 순차적 행동 결정 문제를 수학적으로 표현해 이론적으로 정교하게 설명하는 것이다. 이 과정은 이산적 시간에서의 확률 제어로, 부분적으로 랜덤성을, 부분적으로 제어성을 갖는 의사 결정 과정을 수학적으로 정의한다. 위에서 배운 강화학습 용어를 수학적으로 재정의해보자. (확률변수란 확률을 가지는 변수를 의미한다.)
- t (타임 스텝): 에이전트와 환경은 연속되는 이산적 타임 스텝마다 상호작용함. 한 번의 강화를 위해서는 두 번의 타임 스텝이 필요함. (t번째 타임 스텝에서 상태가 환경으로부터 에이전트에게 주어지고 t+1번째 타임 스텝에서 보상과 다음 상태가 환경으로부터 에이전트에게 주어지고, 이를 통해 에이전트는 정책을 업데이트하기 때문)
- 상태 \(S_t\): S는 에이전트가 맞닥뜨릴 수 있는 상태의 집합. 시점 t는 고정되어 있지 않고 확률적으로 바뀌기 때문에 \(S_t\)는 S에 속하는 확률변수임.
- 행동 \(A_t\): 상태에서 할 수 있는 행동. \(A_t\) \(\in\) A(S), 즉 시점 t에서의 어떤 행동은 상태 S에서 할 수 있는 행동 집합의 원소. 마찬가지로 확률변수.
- 보상 \(R_{t+1}\): \(S_t\)와 \(A_t\)에 의존적인 이산확률분포를 가짐. 즉, 시점 t에서의 상태와 행동이 무엇이냐에 따라 달라짐. 마찬가지로 확률변수.
MDP는 \(S_t\)에서 가능한 행동 집합 A(S) 중에 하나 \(A_t\) = a를 취한다. 핵심은 \(S_t\) = s에서 \(S_{t+1}\) = s'로 전이될 때 전이되는 방식이 확률적이라는 것과 그에 따른 보상이 \(R_{t+1}\) 존재한다는 것이다.
계속 '확률적'이란 표현을 쓰고 있는데, MDP를 정의하는 확률식은 아래와 같다. $$p(s', r|s, a) = per(S_{t+1} = s', R_{t+1} = r|S_t = s, A_t = a)$$ 함수 p를 해석하면 상태 s에서 행동 a를 취했을 때 상태 s'로 전이 & 보상 r을 받을 확률을 의미한다.
- 상태 전이 함수: 상태 s와 행동 a 이후에 상태 s'에 전이될 확률을 나타냄. 즉, 상태 s에서 행동 a를 했을 때 상태 s'에 전이 성공 확률을 의미하며, MDP의 핵심. $$P^a_{ss'} = P(s'|s, a) = \sum_{r \in R} p(s',r|s, a)$$
- 보상 함수: 기댓값이란 일종의 평균으로, 정확한 값이 아니라 어떤 값이 나올 것인가에 대한 예상값. 기댓값은 확률변수 x와 x가 가지는 확률 f(x) 곱의 합으로 계산됨. 보상 함수는 기댓값 (E)으로 표현함. 그 이유는 환경에 따라 같은 상태에서 같은 행동을 하더라도 다른 보상이 나올 수 있기 때문.
- s에서 a를 취할 때 주어지는 즉각적인 보상으로, 기댓값의 계산 포맷을 취함. $$r(s, a) = E[R_{t+1}|S_t, A_t] = \sum_{r \in R} r \sum_{s' \in S} p(s',r|s,a)$$
- s에서 a를 취해 s'로 상태가 전이될 때 주어지는 보상. (전이되는 상태 s'이 정해져 있기 때문에 더 specific한 보상이라고 할 수 있다)$$r(s, a, s') = E[R_{t+1}|S_{t+1}, S_t, A_t] = \sum_{r \in R} r p(r|s, a, s')$$
강화학습의 목표는 단기적인 즉각적인 보상이 아니라 장기적인 총 보상 함수의 합을 최대화시키는 것이다. 따라서 강화학습은 보상이 아니라 보상의 총합인 가치를 우선시한다.
강화학습은 에피소드 단위로 학습된다. 에피소드는 유한한 시간 동안 에이전트와 환경이 상호 작용하는 것을 의미하며, 에피소드의 끝을 나타내는 종단 상태가 존재한다. 이때 총보상을 뜻하는 반환값 \(G_t\)는 종단 상태에 다다르기까지의 보상의 총합을 의미한다. $$G_t = R_{t+1} + ... R_T$$
(시점 t에서의 보상은 시점 t+1에서 반환되기 때문에 시점 t로부터 종단 시점까지의 총보상은 시점 t+1으로부터 시작한다.)
예컨대 게임 환경을 환경, 게임 플레이어를 에이전트라고 해보자. 그럼 게임 오버될 때까지 에이전트는 어떤 상태에 계속 주어질 것이고 어떤 행동을 계속 할 것이다. 만약 게임 오버 조건이 되어 게임이 끝나면 한 에피소드가 종료된다.
그러나, 에피소드 형식에는 몇 가지 문제가 있다.
- 만약 종단 시점이 없는 상황이라면 문제 발생. 시간이 무한히 길어지면 반환값 \(G_t\)의 값도 무한히 발산하기 때문.
- 에이전트는 지금 받는 보상과 미래의 보상을 구분하지 못함.
- 에이전트는 같은 보상을 받되, 그것이 한 번에 주어지는 것인지 여러 차례 나눠서 주어지는 것인지를 구분하지 못함.
-> 미래의 보상을 현재 상태에서 다루기 위해 할인이라는 개념이 도입됐다.
할인이란 미래보상을 현재 가치로 환산해 계산하는 것이다. 미래의 보상을 현재 가치로 땡겨서 계산하면 그만큼 가치가 떨어진다. 미래의 보상은 아직 찾아오지 않았고 불확실하기 때문이다. 즉 더 먼 미래로 갈수록 그 보상의 현재 가치는 하락한다. 가치를 하락시키기 위해 할인율 \(\gamma\)를 이용한다. $$G_t = R_{t+1} + \gamma R_{t+2} + ... \sum_{k=0}^{\inf} \gamma^k R_{t+k+1}$$
이때 0 <= \(\gamma\) <= 1이기 때문에 에피소드의 종단 상태가 무한대로 가더라도 총보상은 특정 값으로 수렴한다. 또한 할인율 \(\gamma\)가 0에 가까울수록 최근의 보상을 더 중점적으로 다루고 할인율이 1에 가까울수록 먼 미래의 보상도 중점적으로 다룰 것이란 의미로, 표현력을 더 높일 수 있다.
즉, MDP를 정의하기 위해 필요한 요소는 상태 S, 행동 A, 보상 R, 상태 전이 함수 P, 할인율 \(\gamma\)이다.
04. 정책과 가치함수
정책 \(\pi\)이란 모든 상태에서 에이전트가 할 수 있는 행동의 확률을 정의한 표이다. 정책의 관점에서, 어떤 상태에서 어떤 행동을 할 지는 탐욕적 (greedy)으로 정해진다. 즉, 모든 상태마다 가장 가치가 높은 행동을 선택한다. (통상적으로 욕심쟁이 기법이 항상 최적의 결과를 가져오지 않지만, 강화학습에서는 할인을 이용해 미래의 보상까지 현재 시점에서 반영하기 때문에 욕심쟁이 기법을 사용하면 결국 최적의 미래로 수렴한다는 사실을 이용한다.) $$\pi(a|s) = p(A_t = a|S_t = s)$$
상태 s에서 행동 a를 선택할 때 '정책'의 내용을 탐욕적으로 탐색하여 가장 높은 확률을 가지는 행동을 선택한다. 상태 전이 함수를 이용해 행동 a에서 상태 s'으로 확률적으로 전이된다. s, a, s'를 바탕으로 에이전트에게 보상 r이 주어진다. 에이전트는 (어떤 상태에서-어떤 행동을 하여-어떤 상태가 됐을 때-받는 보상)을 하나의 경험으로 축적하는 과정을 반복하며 가치 함수를 최대화하는 방향으로 학습한다.
가치함수란 에이전트가 현재 주어진 상태에 있는 것이 얼마나 좋은가를 추정하는 함수이다. 즉, 현재 상태에 있을 때 앞으로 받을 것이라 예상하는 보상의 기댓값 (\(v_{\pi}(s) = E[G_t]\))이다. 가치 함수는 상태만을 기준으로 하는 상태 가치 함수와 행동을 기준으로 하는 행동 가치 함수가 있다.
- 상태 가치 함수: 상태 s에서 정책 \(\pi\)를 따랐을 경우의 가치 함수 (반환값 \(G_t\))의 기댓값. 이때 \(G_{t+1}\)은 시점 t+1에서 미래의 보상까지 모두 고려한 가치 함수의 기대값으로 해석할 수 있다. 따라서 \(G_{t+1}\) = \(v_{\pi}(s_{t+1})\), 즉 상태 \(s_{t+1}\)에 있을 때 기대되는 보상의 합이다.
- 행동 가치 함수 (큐함수): 상태 s에서 행동 a를 취하고 그 이후에 정책 \(\pi\)를 따랐을 경우의 가치 함수 (반환값 \(G_t\))의 기댓값. 즉, 어떤 상태에서 어떤 행동을 했을 때 기대되는 가치 함수의 기댓값이다.
상태 가치 함수는 이론적으로는 가장 기본적인 가치 함수이지만, 실질적으로는 행동 가치 함수를 사용한다. 행동 가치 함수는 특정 상태에서 특정 행동을 했을 때의 (미래까지 고려한) 가치 함수를 알 수 있기 때문에 강화학습의 목적 (특정 상태에서 어떤 행동을 하는지 유리한 가를 학습하는 것)에 더 부합한다. 따라서 가치 함수는 아래 식과 같이 정의한다. 상태 s에서 행동 a를 할 확률 (\(\pi(a|s)\))와 상태 s에서 행동 a를 했을 때의 가치 함수의 기댓값 (큐함수)의 곱을 모든 행동에 대해 더해주면, 상태 s에 있고 정책 \(\pi\)를 따라갔을 때의 가치 함수를 계산할 수 있다.
05. 벨만 최적 방정식과 최적 정책
위에서 상태 가치 함수와 행동 가치 함수를 보면 시점 t의 계산 과정에서 모두 t+1, t+2, t+3...시점에서의 자기 자신을 사용하는 재귀적인 성격을 띤다. 가치 함수를 재귀 식으로 나타낸 것이 바로 벨만 방정식이다.
벨만 방정식은 가치 함수의 해 (참값)을 구하는 방정식이다. 즉, 좌변과 우변이 같게 되는 가치 함수를 찾는 방정식이다. 위의 상태 가치 함수의 벨만 방정식은 상태 s에서의 가치 함수와 그 다음 상태 s'에서의 가치 함수 사이의 관게를 나타낸 식이다. 학습 초기의 에이전트는 랜덤에 가까운 임의의 정책을 갖기 때문에 \(v_{\pi}(s)\)와 \(v_{\pi}(s_{t+1})\)의 값이 다르다. 그러나, 여러 에피소드를 반복하며 학습하다 보면 두 상태 가치 함수 사이의 값이 어떤 값으로 수렴하여 동일하게 되고, 이때의 상태 가치 함수를 참 가치 함수라고 한다. 참 가치 함수는 어떤 정책에 따라 움직였을 때 받게 되는 가치 함수의 참값이다.
상태 가치 함수의 벨만 방정식을 보면, 상태 전이 함수가 항의 일부인 것을 볼 수 있다. 그러나, 실제로 gridworld와 같은 작업 환경에서는 상태가 확률적으로 전이되지 않는다. 에이전트가 왼쪽이라는 행동을 선택했으면 1의 확률로 반드시 왼쪽으로 가고, 다른 경우도 마찬가지다. 따라서 상태 전이 함수에 대한 항은 고려하지 않음으로써 아래와 같은 가치 함수 식을 완성할 수 있다.
최적 정책 \(\pi_*\)는 가장 큰 가치 함수를 도출하는 정책으로, 특정 상태 s에서 최대의 행동 가치 함수 (큐함수)를 갖는 행동을 하는 것이다. 이를 구하는 것이 강화학습의 최종 목표이다. 아래 조건을 만족하면 \(\pi\)는 최적 정책이 된다. 즉, 정책 \(\pi\)를 따라갔을 때 얻을 수 있는 가치 함수가 다른 정책들보다 더 클 때 \(\pi\)는 최적 정책이 된다. MDP의 어떤 경우라도 최적 정책은 반드시 존재한다. 그렇다면 최적 정책은 어떻게 구할 수 있을까? 바로 벨만 최적 방정식의 해인 최적 가치 함수를 구하는 과정에서 구할 수 있다.
최적 가치 함수는 최적 정책을 따라갔을 때 얻을 수 있는 총보상의 기댓값이다. 최적 가치 함수는 벨만 최적 방정식을 풀면 구할 수 있다. 최적 정책에선 어떤 상태 s에서 행동 a를 했을 때, 그 행동이 큐함수를 최대화하는 행동일 경우에만 1을 반환한다. 상태 s에서의 가치 함수는 정책과 큐함수의 곱이 합으로 계산된다. 최적 정책은 가장 좋은 행동만을 선택하고 따라간다는 경우만을 따지기 때문에 가장 좋은 행동 a를 선택했을 때만 가치 함수에 계산을 포함하고 나머지 경우는 0으로 만들어 고려하지 않는다.
벨만 기대 방정식과 벨만 최적 방정식을 정리하자면 아래와 같다. (출처: https://ai-sinq.tistory.com/entry/Bellman-Equation%EB%B2%A8%EB%A7%8C-%EB%B0%A9%EC%A0%95%EC%8B%9D)
일단 벨만 기대 방정식의 0단계부터 2단계까지의 유도 과정은 위에서 다 알아봤다. 기대 방정식을 최적 방정식으로 어떻게 바꿀 수 있는지 톺아보자. 0단계에선 기본적으로 상태 가치 함수와 행동 가치 함수에 max를 씌운다. 1단계에서는 위에서 언급했듯, 최적 정책에서는 최적의 큐함수를 갖는 행동만을 고려하기 때문에 정책이 1 또는 0이다. 따라서 1단계의 상태 가치 함수를 벨만 최적 방정식에서는 그냥 최대의 큐함수로 나타낼 수 있다. 2단계의 상태 가치 함수도 마찬가지로 최대의 큐함수를 갖는 행동만을 고려하기 때문에 summation 기호가 사라지고 max 값만을 뽑는다.
06. 벨만 방정식을 통한 MDP 해결
지금까지 벨만 최적 방정식을 풀면 최적 가치 함수와 최적 정책을 찾을 수 있음을 배웠다. 벨만 방정식을 이용하면 MDP 문제를 수학적/이론적으로 빈틈없이 탐색할 수 있다. 그러나, 모든 수를 내다 보아야 한다는 한계가 있어 효용이 낮다. 만약 보상 함수와 상태 전이 함수을 안다면 "MDP를 안다"고, 모른다면 "MDP를 모른다"고 표현한다. 그러나 현실에서는 보상 함수와 상태 전이 함수를 아는 것은 불가능에 가깝기 때문에 우리는 "MDP를 모른다". 즉, model-free 방식을 사용해야 한다.
07. 정리
- MDP: 순차적 행동 결정 문제를 수학적으로 정의한 것으로, (상태, 행동, 보상, 상태 전이 함수, 할인율)로 구성돼 있다. 순차적 행동 결정 문제를 푼다, 는 것은 더 좋은 정책을 찾는 것이다.
- 가치 함수: 에이전트가 어떤 정책이 더 좋은지 판단하는 기준이다. 가치 함수는 정책을 따라갔을 때 에이전트가 얻을 수 있으리라 기대하는 보상 함수의 총합이다. 상태 가치 함수와 행동 가치 함수 (큐함수)가 있다.
- 벨만 방정식: 현재 상태의 가치 함수와 다음 상태의 가치 함수 사이의 관계식이다. 벨만 기대 방정식은 현재 정책 \(\pi\)를 따라갔을 때 얻을 수 있는 상태 가치 함수 \(v_{\pi}(s)\)의 참값을 구하는 식이다. 벨만 최적 방정식은 최적 정책 \(\pi_*\)를 따라갔을 때 얻을 수 있는 상태 가치 함수 \(v_{\pi_*}(s)\)의 참값을 구하는 식이다.
이번 포스팅에선 MDP, 가치 함수, 벨만 방정식 등 기본 용어에 대해 알아봤다. 다음 포스팅에선 벨만 최적 방정식을 이용해 어떻게 최적 정책을 찾을 수 있는지 알아본다.
08. 퀴즈
- 정책의 정의? - 모든 상태에 대해 어떤 행동을 할 확률의 집합. 즉, 모든 상태에서 모든 행동들을 할 확률을 표로 나타낸 것이다.
- 정책은 탐욕적이다. 탐욕적 (greedy)란 무엇인가? - 어떤 상태에서 가장 큰 큐함수를 갖는 행동을 선택하는 것이다.
- 상태 가치 함수와 행동 가치 함수 (큐함수)의 차이점을 설명하시오. - 상태 가치 함수는 어떤 상태에 있을 때의 총보상의 기댓값이고, 행동 가치 함수는 어떤 상태에서 어떤 행동을 했을 때의 총보상의 기댓값이다. 상태 가치 함수는 상태 s에서 행동 a를 할 확률인 정책과 상태 s에서 행동 a를 했을 때의 총보상의 기댓값인 큐함수의 곱의 모든 행동에 대한 합으로 구할 수 있다.
- 보상과 가치의 차이점 - 보상은 상태 s에서 행동 a를 했을 때 (혹은 상태 s'으로까지 전이했을 때) 얻을 수 있는 즉각적인 값이고 가치는 할인율의 개념이 적용된 미래 보상까지 고려한 보상의 총합이다. 강화학습의 목적은 단기적인 보상을 최대화하는 게 아니라 장기적인 가치를 최대화하는 것이다.
- 참 가치 함수와 최적 가치 함수는 동일하다. (o/x) - x. 참 가치 함수는 벨만 방정식을 통해 구한 가치 함수의 참값, 즉 해일 뿐이다. 그러나 최적 가치 함수는 벨만 최적 방정식을 풀었을 때의 해이다. 옳은 최적 가치 함수를 구했을 때, 이는 참 가치 함수의 집합이라고 볼 수 있다.
- 벨만 기대 방정식과 벨만 최적 방정식의 차이점 - 벨만 방정식은 상태 s에서의 가치 함수와 다음 상태 s'의 가치 함수의 관계식이다. 벨만 기대 방정식은 현재 정책을 따라갔을 때 얻을 수 있는 가치 함수를 구하는 식이고 벨만 최적 방정식은 최적 정책을 따라갔을 때 얻을 수 있는 최적 가치 함수를 구하는 식이다. 벨만 기대 방정식은 정책이 필요하지만 벨만 최적 방정식은 가장 큰 큐함수를 가지는 행동 a만을 따라가기 때문에 정책이 필요하지 않다.
'RL' 카테고리의 다른 글
강화학습: 정리 (0) | 2025.02.21 |
---|---|
강화학습: DQN (0) | 2025.02.21 |
강화학습: 가치 그래디언트 (딥살사)와 정책 그레디언트 (REINFORCE 알고리즘) (0) | 2025.02.20 |
강화학습: SARSA와 Q-Learning (0) | 2025.02.18 |
강화학습: 다이나믹 프로그래밍으로 최적 정책 구하기 (0) | 2025.02.18 |