수익을 정의해 보겠습니다. Gt는 시간 t이후로 얻을 수 있는 보상의 총합 R은 보상 γ는 할인율(더 나중에 받는 보상일수록 값이 기하급수적으로 감소) t는 시간입니다. Gt = Rt + γRt+1 + γ^2 Rt+2 + γ^3 Rt+3 +... 위에서는 시간 t에 대한 식으로 이 식으로 아래처럼 시간 t+1에 대한 식을 만들 수 있습니다. Gt+1 = Rt+1 + γRt+2 + γ^2 Rt+3 + γ^3 Rt+4 +... 이 식은 시간 t+1 이후에 얻을 수 있는 보상의 합을 나타내고 있습니다. 이 식을 그대로 적용해 다음 식을 도출할 수 있습니다. Gt = Rt + γRt+1 + γ^2 Rt+2 + γ^3 Rt+3 +... = Rt + γ(Rt+1 + γRt+2 + γ^2 Rt+3 +...) = Rt + γGt+1 위 식처럼 변형되고, 수익인 Gt와 Gt+1의 관계를 한눈에 알수 있습니다. 이 관계는 강화학습의 기본이 되는 이론과 알고리즘에 사용되므로 반드시 기억해야 할 식입니다. 이어서 상태가치함수의 수식을 살펴보고 위 수익의 식이 어떻게 사용되는지 보도록 하겠습니다. 상태가치함수는 수익에 대한 기댓값(기대수익)입니다. Vπ(s)는 상태 s에서의 상태가치함수입니다. Vπ(s) = Eπ[Gt | St = s] 이 식에 Gt를 위 수익의 식을 대입해 보겠습니다. Vπ(s) = Eπ[Rt + γGt+1 | St = s] = Eπ[Rt|St=s] + γEπ[Gt+1|St=s] 이러한 식이 도출됩니다.
전 회 공부기록 3에서 확률과 기댓값 계산식을 도출했었습니다. 그 내용 복사해서 다시 살펴보겠습니다. 주사위가 있습니다. 총 1~6까지의 숫자가 있고, 각각의 눈이 나올 확률이 1/6이 되는 이상적인 주사위라고 가정합니다. 실제로는 수백 수천회 이상 던져야 대수의 법칙에 따라 1/6에 근사치로 나올 뿐 적은 횟수를 던졌을때는 정확히 1/6이 아닌 편차가 존재하지만 이번 예시에서는 정확히 1/6이라고 가정해 봅니다. 던져서 나올 주사위의 눈 개수를 x라는 확률변수로 표현하고, 각 눈이 나올 확률은 다음처럼 수식으로 표현합니다. p(x) = 1/6 주사위를 굴렸을때 나올 눈의 기대값을 구해봅니다. E[x] = 1*1/6 + 2*1/6 + 3*1/6 + 4*1/6 + 5*1/6 + 6*1/6 = 3.5 눈의 개수와 확률을 곱한 다음, 그 모두를 더한 값이 기대값이 됩니다. 이것을 수학식으로 표현하면, E[x] = Σx의 전체합 x*p(x)가 됩니다. 그 다음 이 주사위에서 짝수가 나올 경우 앞면이 0.8 확률, 뒷면이 0.2 확률로 나오는 동전이 주어집니다. 주사위에서 홀수가 나올 경우에는 원래 동전처럼 앞뒤가 각각 0.5의 확률의 동전이 주어집니다. 보상은 동전의 앞면이 나오면 그 전의 주사위 갯수만큼의 보상을 얻고 뒷면이 나온다면 보상은 0으로 주어집니다. 그러면 보상에서 처음 주사위 갯수가 3이 나오고 동전도 앞면이면 보상이 3이 되고, 주사위 갯수가 5가 나오고 동전도 앞면이면 보상이 5가 되고, 주사위 갯수가 6이 나오고 동전도 앞면이면 보상이 6이 됩니다. 동전이 뒷면이면 보상은 0이 됩니다. 이런 예에서 보상의 기댓값 계산은 두가지 확률을 동시적으로 계산해야 하는데 이와같은 동시확률 계산 수식은 다음과 같습니다. 여기서 먼저 주사위의 눈을 x, 동전의 결과를 y로 표기하겠습니다. p(x,y) = p(x)p(y|x) 풀어서 설명하자면 주사위 x개가 나왔을때 확률 * 주사위 x일때 y가 나올 확률 이렇게 됩니다. 이것을 모두 풀어서 위 사례의 보상 기댓값을 구해보겠습니다. (1/6 * 1/2 *1) + (1/6 * 1/2 *0) + (1/6 * 4/5 *2) + (1/6 * 1/5 *0) + (1/6 * 1/2 *3) + (1/6 * 1/2 *0) + (1/6 * 4/5 *4) + (1/6 * 1/5 *0) + (1/6 * 1/2 * 5) + (1/6 * 1/2 * 0) + (1/6 * 4/5 * 6) + (1/6 * 1/5 * 0) = (1/6 * 1/2 *1) + (1/6 * 4/5 *2) + (1/6 * 1/2 *3) + (1/6 * 4/5 *4) + (1/6 * 1/2 * 5) + (1/6 * 4/5 * 6) = 2.35 기댓값은 [값*그 값이 발생할 확률]의 합입니다. 보상의 기댓값을 수학식으로 표현하면, E[r(x,y)] = Σx의 전체합 Σy의 전체합 p(x,y)r(x,y) = Σx의 전체합 Σy의 전체합 p(x)p(y|x)r(x,y)
앞서 상태가치함수의 식을 보겠습니다. Vπ(s) = Eπ[Rt + γGt+1 | St = s] = Eπ[Rt|St=s] + γEπ[Gt+1|St=s] 이 식에서 Eπ[Rt|St=s] 이 식을 전개하면, Eπ[Rt|St=s] = Σa Σs'π(a|s)p(s'|s,a)r(s,a,s') 이와같이 에이전트가 선택하는 행동의 확률 π(a|s) 전이되는 상태의 확률 p(s'|s,a) 그리고 보상함수 r(s,a,s') 모두를 곱합니다. 이것을 모든 후보에 수행한 다음 Σa Σs'에서는 다 더하는 것을 의미합니다.
Vπ(s) = Eπ[Rt|St=s] + γEπ[Gt+1|St=s] 이 식에서 두번째인 γEπ[Gt+1|St=s]에 대해 전개해 보도록 하겠습니다. 여기서 γ(할인률, 할인계수)는 상수이므로 잠시 생략하고 Eπ[Gt+1|St=s]에 대해서만 알아보겠습니다. 이 식은 상태가치함수 식과 유사합니다. Vπ(s) = Eπ[Gt | St = s] 이것이 상태가치함수 정의식입니다. 두번째 식과 상태가치함수 식에서 차이는 Gt와 Gt+1이 다릅니다. 상태가치함수 식에서 t에 t+1을 대입해 보겠습니다. Vπ(s) = Eπ[Gt+1 | St+1 = s] 이 식은 상태 St+1에서의 가치함수입니다. 그러나 우리의 두번째 식은 Eπ[Gt+1 | St=s] 입니다. 이 식을 해석하자면 현재시간이 t인 상태 s에서 한 단위 뒤의 시간인 t+1의 기대수익을 뜻합니다. 즉, 다음 단계의 시간을 보는 것으로 다음 상태의 가치함수를 얻을 수 있습니다. Eπ[Gt+1 | St=s] 이 식을 전개하면, Eπ[Gt+1 | St=s] = Σa Σs'π(a|s)p(s'|s,a)Eπ[Gt+1 | St+1 = s'] = Σa Σs'π(a|s)p(s'|s,a)Vπ(s') 이와 같이 만들어집니다.
최종적으로 벨만 방정식을 도출해 보겠습니다. Vπ(s) = Eπ[Rt + γGt+1 | St = s] = Eπ[Rt|St=s] + γEπ[Gt+1|St=s] = Σa Σs'π(a|s)p(s'|s,a)r(s,a,s') + γΣa Σs'π(a|s)p(s'|s,a)Vπ(s') = Σa Σs'π(a|s)p(s'|s,a) * {r(s,a,s') + γVπ(s')} 이렇게 벨만방정식을 도출했습니다. 벨만 방정식은 상태s의 상태가치함수와 다음에 취할 수 있는 상태 s'의 상태가치함수의 관계를 나타낸 식으로, 모든 상태 s와 모든 정책 π에 대해 성립합니다.
벨만 방정식은 무한히 계속되는 계산을 유한한 연립방정식으로 변환할 수 있고, 에이전트의 행동이 무작위라 하더라도 이 벨만 방정식을 이용하면 상태가치함수를 구할 수 있습니다. 상태가치함수는 기대수익이며 무한이 이어지는 보상의 합입니다. 벨만 방정식에서는 무한을 유한의 연립방정식으로 바꿔주는 방정식이라 생각하면 쉽습니다.