티스토리 뷰
강화학습 포스트를 하면서 Bellman Equation을 거쳐 Markov Decision Process까지 오면서 얻어낸 Bellman Equation은 다음과 같다.
$$V(s) = \underset{a}{\max}(R(s, a) + \gamma \sum_{s'} P(s,a,s') V(s'))$$
다시 말해 다음 State의 Value를 계산할 때, 해당 상태에서 특정 행동 a를 취해서 s'로 갈 수 있는 모든 경우의 수를 고려하고 그에 대한 확률의 평균값을 계산해 최대치가 될 수 있는 state의 Value를 구하는게 MDP였다. 그런데 위와 같이 구한 결과 값은 결국 특정 State에 대한 Value를 구한 것이지, 그 Value를 구하는데 있어 행동이 고려된 것이 아니었다. 다시 말해 Agent가 특정 칸으로 이동했을 땐 그 칸의 Value를 그대로 가지는 것이지, 그 칸으로 이동하기 까지의 행동이 계산에 영향을 끼친게 아니다. Agent가 이동할 경우, 특정 방향으로 이동하는 행동(action)을 취하는 경우도 State에 대한 Value를 계산하는 것에 포함시키는 방법이 Q-learning이다. 참고로 이때 Q의 의미는 취한 action에 대한 질(Quality)를 나타낸 것이라고 한다.
잘 보면 알겠지만, 값을 판단하는 주체가 다른 것을 알 수 있다. 왼쪽의 Value-State function의 경우는 인자가 State이다. 즉, 행동을 취했을 때, 해당 칸의 State가 무엇이냐에 따라 Value가 달라진다. 오른쪽의 Q function(책에 따라서는 Action-value function이라 표현되는 곳도 있다.)의 경우는 State와 Action인데, 이때 State는 행동을 취할 때의 State이다. 이 풀이에 따르면
$$Q(s_{0}, a_{1})$$ 의 의미는 s0 상태에서 a1 행동을 취했을 때의 Quality라고 이해하면 좋을거 같다. 그러면 결국 Q-function이라고 하면 특정 방향을 선택했을 때의 Quality를 나타낸 것이므로, V function 처럼 최대치를 구할 필요가 없이, 그냥 state와 action이 정해진 상태에서 계산할 수 있다. 이를 공식화하면 다음과 같다.
$$Q(s, a) = R(s, a) + \gamma \sum_{s'} P(s,a,s') V(s')$$
이 식을 맨 위의 Value function과 비교해본다.
$$V(s) = \underset{a}{\max}(R(s, a) + \gamma \sum_{s'} P(s,a,s') V(s'))$$
잘 보면 Value function은 다음과 같이 Q로 대체되서 표현할 수 있게 된다.
$$V(s) = \underset{a}{\max}(Q(s, a))$$
그런데 애초에 Value function을 살펴보게 되면 Value function 안에 다음 State에 대한 Value function이 들어 있는, 이른바 재귀형 구조이다. 이런 특성을 이용해서 우리가 새롭게 정의한 Q(s, a)에 위에서 구한 V(s)를 다시 반영해서 넣으면 다음과 같은 공식으로까지 유도할 수 있게 된다.
$$Q(s, a) = R(s, a) + \gamma \sum_{s'}(P(s,a,s') \underset{a'}{\max}Q(s', a'))$$
위 공식까지 유도하면 의미가 명확해진다. 결국 Q function을 통해서 Agent는 reward를 계속 누적하면서 현재 state s에서 최대로 reward가 얻을 수 있는 최선의 action을 고르게 된다. Q-function을 구한 것의 의미는 이전의 Value function 같은 경우는 현재의 state를 고려해서 최적의 action을 결정하는 방법이었지만, Q-function은 state뿐만 아니라 agent의 action도 값을 결정하는 주요 요소가 된 것이다.
참고 :
- Artificial Intelligence A-Z : Q-Learning intuition
'Study > AI' 카테고리의 다른 글
[ETC] VS code에서 terminal을 Powershell에서 Command Prompt로 바꾸기 (0) | 2018.08.21 |
---|---|
[Python][Visualization] Legend, Annotation (0) | 2018.07.05 |
[Python][Visualization] matplotlib multiple plot (0) | 2018.07.03 |
[RL] Markov Decision Process (MDP) (2) | 2018.05.27 |
[RL] The Bellman Equation (4) | 2018.05.24 |
[RL] 강화학습이 적용된 사례 및 논문들 (0) | 2018.05.21 |
[RL] Elements of Reinforcement Learning (2) | 2018.05.21 |
- Total
- Today
- Yesterday
- 딥러닝
- processing
- 강화학습
- Policy Gradient
- Kinect
- windows 8
- PowerPoint
- Distribution
- Gan
- Offline RL
- 파이썬
- dynamic programming
- arduino
- TensorFlow Lite
- DepthStream
- 한빛미디어
- reward
- Windows Phone 7
- End-To-End
- Pipeline
- Variance
- RL
- Kinect for windows
- bias
- ai
- ColorStream
- SketchFlow
- Expression Blend 4
- Kinect SDK
- Off-policy
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |