25. 내 노력의 질과 양을 늘리고 싶다.
Q-함수를 향상시켜야 한다.
그러기 위해서는 벨만 방정식을 이용해서 반복적으로
Q-함수를 근사해야 한다.
26.
27. 다시금 과거의 기억들을 돌아보자 (t-1)
● 강화학습이란?
● MDP
○ 상태, 행동, 보상함수, 상태 변환 확률, 감가율, 정책
● 가치함수
○ 가치함수, 큐함수
● 벨만 방정식
○ 벨만 기대 방정식, 벨만 최적 방정식
● 다이내믹 프로그래밍
○ 정책 이터레이션, 가치 이터레이션
● 정책 평가
○ 몬테카를로 예측, 시간차 예측
● 알고리즘
○ 벨만 기대 방정식, 벨만 최적 방정식
28. 강화학습 문제
결정을 순차적으로 내려야 하는 문제에 강화학습을 적용하려면 이 문제를 수학적으로 정의해야 한다.
수학적으로 정의하기 위해서는 나를 둘러싼 환경을 Unit으로 구성해야 한다.
1. 상태 (State) - 현재 Agent의 정보 (정적인 요소 + 동적인 요소)
2. 행동 (Action) - Agent가 어떠한 상태에서 취할 수 있는 행동
3. 보상 (Reward) - Agent가 학습할 수 있는 유일한 정보, 자신이 했던 행동의 평가 지표
4. 정책 (Policy) - State와 Action의 key, value값 → 순차적 행동 결정 문제의 답
29. MP와 MDP
MP (Markov Process) : p(s′|s) 이전 상태에 영향을 받는다.
MDP (Markov Decision Process) : p(s′|s, a) 이전 상태와 행해진 액션에 영향을
받는다.
30. MDP
강화 학습은 순차적으로 행동을 계속 결정해야 하는 문제를 푸는 것 → 이 문제를
수학적으로 표현한 것이 MDP (Markov Decision Process)
- MDP의 구성 요소
- 상태
- 행동
- 보상 함수
- 상태 변환 확률 (State Transition Probability)
- 감가율 (Discount Factor)
31. MDP (Markov Decision Process)
reward
state transition
state
action
state
state
Discount
Factor
?
32. Policy
Map 자료 구조 ( Key는 상태(state)가 되고 Val은 특정한 액션(action)이 된다. )
최종적으로 스텝 t마다 [state, action] 형태의 Map 집합으로 이루어진 자료구조로 상상할 수 있다.
Deterministic Policy π(x)=a
Stochastic Policy π(a|x)=p(A=a|X=x),∀a∈A(x),∀x∈X
33. Value Fuction
우리가 지금까지 한 일 : 문제를 MDP로 정의 → Agent는 MDP를 통해 최적 정책을 찾는다.
Agent가 어떻게 최적 정책을 찾을 수 있을까?
Agent 입장에서 어떤 행동을 하는 것이 좋은지를 어떻게 알 수 있을까? → 현재 상태에서 앞으로 받을
보상을 고려해서 선택해야 좋은 선택!
하지만 아직 받지 않은 보상들을 어떻게 고려할 수 있을까? → 에이전트는 가치함수를 통해 행동을
선택할 수 있다.
가치함수MDP 행동 선택
34. Value Function의 문제
1. 현재에 받은 보상 100과 미래에 받는 보상 100을 똑같이 취급한다.
2. 보상 100을 1번 받을 때와 보상 20을 5번 받을 때를 구분하지 못한다.
3. 시간이 무한대라면 0.1을 받아도, 1을 받아도 합이 무한대다.
단순한 보상의 합으로는 판단을 내리기 어려우므로, 좀 더 정확한 판단을 위해 감가율을 고려한다.
감가
율
감가
율
감가
율
35. Value Function
Agent는 Episode가 끝난 후에야 반환값을 알 수 있다.
하지만 에피소드가 끝날 때까지 기다려야 할까?
때로는 정확한 값을 얻기 위해 끝까지 기다리는 것보다 정확하지 않더라도 현재의 정보를 토대로
행동하는 것이 나을 때가 있다.
→ 가치함수 = 어떠한 상태에 가면 받을 것이라고 예상되는 값
36. 정책을 고려한 가치함수
앞 장까지의 가치함수는 정책을 고려하지 않은 가치함수이다. 하지만 정책을 고려하지 않으면 안된다. 그
이유는 아래와 같다.
● 상태에서 상태로 넘어갈 때 Agent는 무조건 행동을 해야 하고 각 상태에서 행동을 하는 것이
Agent의 정책이기 때문
● 정책에 따라서 계산하는 가치함수는 당연히 달라질 수밖에 없음
● MDP에서의 가치함수는 항상 정책을 고려
37. 가치함수(Value Function)
가치함수(Value Function)
상태 가치함수(State Value Function) 행동 가치함수(Action Value Function)
= Q-Function
상태가 입력으로 들어오면 그 상태에서
앞으로 받을 보상의 합을 출력하는
함수
어떤 상태에서 각 행동에 대해 따로
가치함수를 만들어서 어떤 행동이
얼마나 좋은지 알려주는 함수
[state=s 이고 policy=π 일 때, return의 기대값]
[state=s, action=a, policy=π 일 때, return의 기대값]
38. 가치함수는 말 그대로 “함수” → 입력/출력이 무엇인지 알아야 한다.
● 지금까지 설명한 가치함수는 상태 가치함수
● 에이전트는 가치함수를 통해 다음에 어떤 상태로 가야할 지 판단할 수 있다.
● 어떤 상태로 가면 좋을지 판단한 후에 그 상태로 가기 위한 행동을 따져볼 수
있다.
가치함수상태
받을
보상의 합
Input Output
State-value function
39. Action-value function (Q-Function)
하지만…
● 어떤 상태에서 각 행동에 대해 따로 가치함수를 만들어서 그 정보를 얻어올 수 있다면 Agent는 굳이
다음 상태의 가치 함수를 따져보지 않아도 어떤 행동을 해야할 지 선택할 수 있다.
● 이처럼 어떤 상태에서 어떤 행동이 얼마나 좋은지 알려주는 함수를 행동 가치함수라고 한다. →
큐함수(Q-Function)
40. Action-value function (Q-Function)
상태 가치함수는 어떤 상태가 좋은 상태인지는 알려주지만 그 상태로 가는 방법인 행동에 대해서는
평가하지 않는다.
따라서 가치함수를 구하고 높은 가치를 가지는 상태로 가기 위한 행동은 따로 고려하여야 하는데, 이를
동시에 하기위해 상태와 행동을 동시에 고려한 Action-value function을 사용한다.
Q-function은 벨만 기대 방정식의 형태로 나타낼 수 있고 상태가치함수에 조건절에 행동이 고려된다는
점만 다르다.
41. 벨만 기대 방정식
bellman expectation equation
앞에 State-Value Function에서 Value Function은 Policy를 고려하지 않았지만, Agent는 각 State에서
Policy에 따라 Action을 해야 하므로 위의 식을 Policy를 고려한 Value Function으로 변환해야 한다
이렇게 변환된 Policy를 고려한 Value Function이 바로 벨만 기대 방정식이다.
이 벨만 기대 방정식은 현재 상태의 가치함수와 다음 상태의 가치함수 사이의 관계 방정식이다.
감가율 때문에 우리는 최적 경로 탐색을 할 수 있다.
43. 벨만 최적 방정식
Bellman Optimality equation
벨만 기대 방정식을 계산을 통해 수렴하여 얻은 은 현재 정책 에 대한 ‘참 가치함수’로써 정해진
정책에 따라 움직일 때 받게 되는 보상의 참값이다.
반면 ‘최적 가치함수’는 수많은 정책 중 가장 높은 보상을 주는 최적의 가치함수이다. 이 최적의
가치함수를 찾기 위해서는 단순히 현재의 에이전트의 정책에 대한 가치함수를 구하는 것이 아니라
현재의 정책을 최적의 정책으로 업데이트 해 나가야 한다.
이 최적 정책으로의 업데이트를 위해서 우리는 가치함수를 통해 어떤 정책이 더 좋은 정책인지 평가한다.
따라서 모든 정책에 대해 가장 큰 보상을 기대할 수 있는 가치함수를 찾는다.
Q-funciton 역시 같은 방식으로 표현할 수 있다.
44.
45. 다이나믹 프로그래밍(Dynamic Programming, DP)
이란?
다이나믹(Dynamic) 프로그래밍(Programming)
시간에 따라 변하는
대상
여러개의 Process로
나누어 계획(Planning)
즉, Dynamic은 동적이라는 뜻으로, 시간에 따라 변하는 대상을 다루고 있음을 나타내고 Programming은
여러 process로 나누어 Planning한다는 뜻이다. 단어로 부터 알 수 있듯이 DP의 개념은 큰 순차적인 행동
결정 문제를 작은 process들로 나누어 푸는데, 푸는 대상이 시간에 따라 변하는 대상으로 봐야 한다.
출처 : https://sumniya.tistory.com/10
46. Dynamic Programming
한번에 풀기 어려운 문제를 여러 개의 작은 문제로 나눠 푸는 법
작은 문제들 사이에서 공유하는 계산 결과들을 재사용해 총 계산량을 줄일 수 있음
가치함수를 기준으로 정책이 얼마나 좋은지 평가한다.
문제는 정책을 평가하려면 가 필요한데 이게 뭔 지 모른다.
→ 다이나믹 프로그래밍으로 해결
47. Dynamic Programming
Predict & Control
DP는 Prediction과 Control, 두 step으로 나누어집니다 그리고 현재 진행하는 policy에 따라 value func.을
구하고 (prediction) 이를 토대로 policy를 optimal하게 발전시키는 흐름(control)으로 진행됩니다.
이때, Prediction의 과정이 Policy Evaluation이고,
Control의 과정이 Policy Improvement이다.
DP는 각 과정에서 사용하는 Bellman Equation에 따라 2가지 종류로 나뉘게 되는데
Bellman Expectation Equation을 사용하는 Policy Iteration과,
Bellman Optimality Equation을 사용하는 Value Iteration입니다.
출처 : https://sumniya.tistory.com/10
49. Policy Iteration
Policy Iteration은 Dynamic Programming의 한 종류로, 벨만 기대 방정식을 사용해 MDP문제를 푸는 것.
MDP 문제에서 결국 우리가 알고 싶은 것은 가장 높은 보상을 얻게 하는 정책을 찾는 것이다. 처음에는 이
정책을 알 수 없으므로 보통 무작위로 시작하여 정책을 발전시켜 나간다.
→ Policy Evaluation, Policy Improvement를 무수히 반복하여 최적 정책을 찾을 수 있음
50. Policy Evaluation
Policy Iteration에서 정책을 평가하고 이를 통해 발전시켜나가야 하는데, 평가는 어떻게 할 수 있을까?
앞에서 말했던 Value Function이 정책이 얼마나 좋은지 판단하는 근거가 된다. (어떤 Policy를 따라가야
많은 보상을 받을 수 있을지) 모든 상태에 대해서 그 다음 상태가 될 수 있는 행동에 대한 보상의 합을
현재 상태 자리에 저장하는 것이 Policy Evaluation의 과정이다.
즉 주변 상태의 가치함수와 바로 다음 스텝에서 얻어지는 보상만 고려해서 현재 상태의 다음 가치함수를
계산하겠다는 것이다.
이렇게 계산한 값이 실제 값은 아니지만 무한히 반복한다면 참 값으로 수렴할 것이다
51. Policy Improvement
Policy Improvement의 방법은 정해져 있지 않지만 가장 널리 알려진 방법은 Greedy Policy
Improvement이다.
Greedy Policy Improvement Agent가 할 수 있는 행동들의 큐함수를 비교하고 가장 큰 큐함수를 가진
행동을 취하는 것이다.
Greedy Policy Improvement을 통해 Policy를 업데이트 하면 이전 가치함수에 비해 업데이트된 정책으로
움직였을 때 받을 가치함수는 무조건 크거나 같다.
따라서 장기적으로 본다면 최적 정책에 수렴할 수 있다.
52. Value Iteration
Policy Iteration과 구분되는 Value Iteration은 Bellman Optimality Equation을 이용하는 것인데, 이를
이용하면 evaluation을 한번만 진행하게 됩니다 (전체 Iteration 중에 한번이라는 뜻입니다. Evaluation은
수많은 부분 iteration으로 이루어져 있습니다). 우리는 evaluation과정에서 이동가능한 states들에 대해
value function들을 더하여 도출했지만, 이중에 max값을 취해서 greedy하게 value function을 구해서
improve하자는게 value iteration의 아이디어이다. 그래서 우리는 action을 취할 확률을 곱해서
summation하는 대신에 max값을 취하는 아래의 optimal value function식을 사용합니다.
61. 그래서 이곳에 오신거죠!
현재의 policy를 바탕으로 움직여보면서 sampling을 통해 value
function을 update하는 것을 model-free prediction이라 하고 policy를
update까지 하게 된다면 그것이 바로 model-free control
62. Model Free 방법
Prediction (예측) Control (조절)
Monte-Carlo Prediction
Temporal Difference Prediction
(시간차 예측)
SARSA
(On-Policy 시간차 제어)
Q-Learning
(Off-Policy Control)
67. Monte-Carlo
Monte-Carlo라는 말에 대해 Sutton교수님은 Monte-Carlo 단어 자체가 무엇인가를 random하게 측정하는
것을 뜻하는 말이라고 했다. 이를 강화학습에서는 “averaging complete returns”하는 방법을 의미한다고
한다.
Monte-Carlo와 Temporal Difference로 갈리는 것은 value function을 estimation하는 방법에 따라서이다.
Value function이라는 것은 expected accumulative future reward로서 지금 이 state에서 시작해서
미래까지 받을 기대되는 reward의 총합이다.
이 reward를 산출하는 방법은 episode를 끝까지 가본 후에 받은 reward들로 각 state의 value function들을
거꾸로 계산해보는 것이다.
따라서 MC는 끝나지 않는 episode에서는 사용할 수 없는 방법이다.
68. Monte-Carlo Prediction
원의 넓이를 구하는 방정식을 모른다면 원의 넓이는 어떻게 구할 수 있을까? 바로 ‘몬테카를로 근사
Monte-Carlo Approximation’를 이용하면 된다. 무작위로 샘플을 추출하여 원의 넓이를 추정한다는 것이다.
사실 추정한 값이 정확하진 않겠지만 무수한 양의 샘플을 이용한다면 원래의 값과 동일해질 것이다.
Sampling : Agent가 한 번 환경에서 Episode를 진행하는 것
MonteCarlo Prediction : Sampling을 통해 얻은 Sample의 평균으로 참 가치함수 값을 몬테카를로 근사를
사용하여 추정하는 것
70. Temporal Difference Prediction (시간차 예측)
이전에 살펴본 몬테카를로 예측의 단점은 실시간이 아니라는 점이다. 몬테카를로는 하나의 에피소드가
끝날 때까지 기다려야하며, 에피소드의 끝이 없거나 길이가 길다면 이 방법은 적합하지 않다.
이를 해결할 수 있는 방법이 시간차 예측 TD Prediction이다. 시간차 예측은 타임스텝마다 가치함수를
업데이트 하는 방법이다.
시간차 예측에서는 업데이트의 목표 값이 실제 값이 아니라 예측 값이다. 이처럼 다른 상태의 가치함수
예측값을 통해 지금 상태의 가치 함수를 예측하는 방식을 부트스트랩 Bootstrap 이라고 한다.
75. Sarsa
Policy Iteration은 Policy Evaluation과 Policy Improvement로 나누어져 있고, 이 과정을 반복해서 실행하면
결국 Optimal Value-Function으로 수렵하게 된다.
Policy Evaluation과 Improvement의 단계를 매번 번갈아 가면서 실행하는 Policy Iteration을
GPI(Generalized Policy Iteration)이라고 한다. GPI에서 정책 발전의 식을 보면 상태변환확률의 값을
알아야 하는데, 이 값은 모델을 알아야 한다.
이 대신 Greedy Policy에서 현재 상태의 Q-Funciton을 보고 판단한다면 모델을 몰라도 된다. 따라서
시간차 제어(시간차 예측과 탐욕정책이 합쳐진 것)에서 업데이트 하는 대상은 가치함수가 아닌 큐함수가
되어야 한다.
76. Epsilon-Greedy Policy
위 식을 보면 다음 상태의 큐함수를 알기 위해서는 다음 상태에서 취할 행동까지 선택해야 한다.
다시 말해, 우리가 큐함수를 업데이트 하기 위해 필요한 샘플은 이고, 이를 살사
SARSA라고 부른다.
살사는 현재 가지고 있는 큐함수를 토대로 Greedy Policy으로 모으고, 그 샘플로 큐함수를 업데이트 하는
과정을 반복하는 것이다.
우리는 앞에서도 Greedy Policy를 많이 써왔지만, 이 방법은 초기 에이전트에게 잘못된 학습으로 가게 할
가능성이 있다.
이 문제는 강화학습의 중요한 문제로 Exploration의 문제이다.
따라서 greedy policy를 대체할 수 있는 로 사용할
것이다.
77. Off-Policy
현재 행동하는 정책과는 독립적으로 학습. (behavior policy, target policy)
즉, 행동하는 정책과 학습하는 정책을 따로 분리하여 에이전트는
행동하는 정책으로 지속적인 탐험을 하고 학습은 따로 목표 정책을 둠
78. Q-Learning
살사에서 Epsilon-Greedy Policy를 사용하여 큐함슈를 업데이트 했다. 만약 Epsilon의 확률로 엉뚱한 행동
a를 선택하여 리워드가 감소하는 결과를 얻었을 때, 업데이트 되는 행동 a의 큐함수의 값이 작아지게
된다. 이후에 다시 이전과 같은 상태가 되면 에이전트는 행동 a를 하는 것은 좋지 않다고 판단한다. 이 때
그리드월드에서는 에이전트가 갇힐 수 있는 현상이 발생한다. 살사는 On-policy TD Control, 즉 자신이
행동하는 대로 학습하는 시간차 제어이다.
탐험을 위해 선택한 Epsilon-greedy policy 때문에 에이전트는 오히려 잘못된 정책을 학습할 수도 있다.
그러나 위에서도 말했듯이 탐험은 강화학습의 중요한 문제이고, 이러한 딜레마를 해결하기 위해
Off-Policy TD Control (대표적으로 큐러닝 Q-Learning) 사용한다.
그렇다면 큐러닝에서는 어떻게 Policy를 분리할까?
에이전트는 다음 상태에서 어떤 행동을 했는지와 관계없이 현재 상태 s의 큐함수를 업데이트 할 때는
다음 상태의 최대 큐함수를 이용한다.
따라서 현재 상태의 큐함수를 업데이트 하기 위해 필요한 샘플은 이다.