SARSA
On-policy TD 기법으로 행동 가치(Action Value) Q(S,A)를 갱신하기 위한 방법은 다음과 같다.
현재 상태 St에서 행동 At을 취했을 때 받는 보상 Rt과 새로운 상태 St+1로부터 ϵ -greedy policy를 통해 다음 행동 At+1을 구하여 행동 가치를 갱신한다.
Q(S,A)=Q(S,A)+α(R+γQ(S′,A′)−Q(S,A))
Q-Learning
Off-policy TD 기법으로, 다음 행동을 선택할 때 Action policy μ을 이용해서 고르며 (At+1∼μ(⋅|St))
Action value Q(St,At)는 대안 행동의 가치를 통해 갱신한다.
Q(St,At)←Q(St,At)+α(Rt+1+γQ(St+1,A′)−Q(St,At))
behavier policy μ와 target policy π을 모두 향상시키고자
target policy π이 Action value Q(s,a)를 최대화 한다면
π(St+1)=argmaxa′Q(St+1,a′)
behavier policy μ도 action value Q(s,a)를 최대화 한다면 Q-learning의 target은 다음과 같다.
QT=Rt+1+γQ(St+1+A′)
=Rt+1+γQ(St+1,argmaxa′Q(St+1,a′))
=Rt+1+γmaxa′γQ(St+1,a′)
SARSA의 구조 넣으면
Q(St,At)←Q(St,At)+α(QT−Q(St,At))
Q(St,At)←Q(St,At)+α(Rt+1+γmaxa′γQ(St+1,a′)−Q(St,At))
REINFORCE (Monte-Carlo Policy Gradient)
매개변수로 θ를 가지는 policy πθ를 따라 행동을 선택할 때 return r의 기댓값은 수식으로 다음과 같이 쓸 수 있다.
J(θ)=Eπθ[r]
return의 기댓값을 최대화 하는게 학습의 목적이 되는데 이를 Policy objective function J(θ)라고 한다. 그렇다면 objective function을 최대화하는 방향으로 매개변수 θ를 움직이면 결국에 objective function J(θ)가 최댓값이 될 것이다.
J(θ)=Eπθ[r]=∑s∈Sd(s)∑a∈Aπθ(s,a)Rs,a
∇θJ(θ)=∇θ[∑s∈Sd(s)∑a∈Aπθ(s,a)Rs,a]
매개변수 θ에 종속된 부분만으로 정리하면
∇θJ(θ)=∑s∈Sd(s)∑a∈A∇θ[πθ(s,a)]Rs,a
다시 기댓값 형태로 식을 변환하기 위해 다음과 같이 식을 변형한다.
∇θ[πθ(s,a)]=πθ(s,a)∇θπθ(s,a)πθ(s,a)
∇θ[πθ(s,a)]=πθ(s,a)∇θlogπθ(s,a)
그렇다면 다시 objective function을 다음으로 정리할 수 있다.
∇θJ(θ)=∑s∈Sd(s)∑a∈Aπθ(s,a)[∇θlogπθ(s,a)]Rs,a
∇θJ(θ)=Eπθ[∇θlogπθ(s,a)r]
policy gradient ∇θπθ를 해석적으로 계산할 수 있고, policy πθ가 미분가능하고 0이 아니라면 Stochastic gradient ascent를 이용해서 target policy πθ의 매개변수 θ를 갱신 할 수 있다. policy gradient theorem으로부터,
Δθt=α∇θlogπθ(st,at)vt
θ←θ+α∇θlogπθ(st,at)vt
Actor-Critic Algorithm
Monte-Carlo policy gradient는 여전히 큰 분산을 가진다. 그래서 action-value function을 추정하는 critic을 사용한다.
Qw(s,a)≈Qπθ(s,a)
그래서 Actor-Critic algorithm은 두 개의 매개변수 집합을 사용하며
- Critic은 action-value function의 매개변수 w을 갱신한다. Stata-Action value estimator 이다.
- Actor는 critic이 제안하는 방향으로 policy parameter θ를 갱신한다. State value estimator 이다.
근사적 policy gradient를 따른다.
∇θJ(θ)≈Eπθ[∇θlogπθ(s,a)Qw(s,a)]
Δθt=α∇θlogπθ(st,at)Qw(s,a)
'RL' 카테고리의 다른 글
DDPG 계열 논문 정리 (0) | 2021.08.09 |
---|---|
[PER] Prioritized Experience Replay 논문 리뷰 (0) | 2021.07.29 |
학습은 차원을 맞춰야한다. (0) | 2021.07.27 |
Docker with tensorflow 2.4.0 (0) | 2021.02.19 |
pytorch를 이용한 딥러닝/모두를 위한 딥러닝 (0) | 2020.11.01 |