벨만 방정식
Concepts
s : State
에이전트의 상태나 다른 모든 상태를 의미
a : Action
에이전트가 수행할 수 있는 행동을 의미
다양한 상태 조합 속에서 행동이 수행되는 걸 관찰할 때 행동이 중요한 역할을 한다.
특정 상태에 있고, 행동을 관찰한다면 그 행동의 결과가 어떨지 알 수 있다.
상태에 대해 모른 채로 행동 자체만 관찰한다면 결과를 알 수 없을 것이다. 지금 어디에 있으며 어떻게 하면 될지 모르니깐
R : Reward
에어전트가 특정 상태에 도달하면 얻는 보상을 의미
\( \gamma \) : Discount
감마는 할인 계수이다.
Bellman Equation
벨만 방정식은 리차드 어니스트 벨만이 만들어낸 개념이다.
미로에서 흰색 블록은 에이전트가 접근할 수 있는 블록이다.
보라색 블록은 접근할 수 없는 블록이다, 미로 내의 벽 같은 존재이다.
녹색 블록은 에이전트의 목표 지점이다. 에이전트가 도달해야 할 최종 지점이다.
빨간 블록은 불 구덩이 같은 것으로 닿으면 게임에 지게 된다. 그래서 불 구덩이에 닿으면 에이전트에게 저기는 가면 안 된다고 알려주는 방법으로 보상을 -1을 받게 한다.
마치 개를 훈련할 때, 잘못된 행동을 하면 혼내는 것과 같다.
반대로, 녹색 블록에 가면 +1 보상을 받게 되니 잘했다고 할 수 있다.
먼저 벨만 방정식의 아래와 같이 사용할 수 있다.
$$ V(s) = max_a { R(s, a) + \gamma * V(s') } $$
- \( V(s) \) : 상태 s의 가치 함수 (Value function). 상태 s에서 받을 수 있는 미래 보상의 총합을 나타낸다.
- \( max_a \) : 가능한 모든 행동(action) a 중에서 최댓값을 선택한다. 즉, 현재 상태에서 가장 좋은 결과를 가져오는 행동을 선택한다.
- \( R(s, a) \): 상태 s에서 행동 a를 했을 때 받는 즉각적인 보상(reward)이다.
- \( \gamma \) : 할인계수(discount factor)이다. 미래의 보상을 현재의 가치로 환산할 때 사용되는 값으로, 0과 1 사이의 값을 가진다. γ가 1에 가까울수록 미래의 보상을 더 중요하게 생각한다.
- \( V(s') \) : 상태 s에서 행동 a를 했을 때 다음 상태 s'의 가치 함수이다.
흐름
보상을 받기 전의 s3 블록을 먼저 보자. 왜냐하면 s4 이전에는 s3로 간 것이 확실하니깐.
$$ V(s3) = max_a { R(s, a) + \gamma * V(s') } $$
\( V(s') \) 는 게임이 끝나고 보상을 받았으니 가치는 0이다.
그렇다면 \( V(s3) = max_a { R(s, a) } \) 가 된다. R(s, a)는 오른쪽으로 가면 게임이 끝나고 보상 +1을 받기 때문에 1이 된다.
그렇다면 s3의 가치는 1이 된다.
다음은 s2의 가치를 알아야 한다.
$$ V(s2) = max_a { R(s, a) + \gamma * V(s') } $$
R(s, a)는 아직 게임이 진행 중이고 다음 행동을 하더라고 Goal이 아니기 때문에 0이 된다.
\( \gamma \)는 0.9로 가정하여 설정하자. 그렇다면 V(s')는 s2의 이후의 상태이므로 s3의 가치함수 값 1이 된다.
그렇다면 V(s2)는 0.9가 된다.
V(s1)은 \( \gamma * 0.9 \) 이기 때문에 0.81가 된다. 이런 식으로 s9까지 진행하게 되면 다음과 같은 결과가 나온다.
s10, s11, s7, s12는 s9으로부터 가게 되면 값이 달라지지만 s3로 가게 되면 위와 같은 값이 나온다. 그 값들 중 방정식의 max로 인해 큰 값을 가지게 된다.
References
https://www.youtube.com/watch?v=3Rx2x2traxw