Search
💪🏻

Policy Gradient Algorithm

생성일
2024/08/05 02:59
태그
강화학습
작성자

1. Policy Gradient algorithm 개요

Policy gradient algorithm은 continuous한 action space를 가진 RL 문제에서 사용된다. DQN의 경우 Q(s,a)Q(s,a)를 학습한 결과를 바탕으로 ϵgreedy\epsilon -greedy policy를 적용하여 최적의 Policy를 찾아나간다. 이때 Q-network의 결과 값이 각 action에 대해 출력되기 때문에 action space의 크기에 제약을 가진다. 반면 Policy gradient algorithm의 경우 network parameter update를 통해 policy의 분포를 직접 학습하기 때문에 action space의 제약이 적은 편이다. 과정을 요약하자면 입력된 state에 대해 parameter θ\theta를 기반으로 특정 action variable에 대한 확률 분포가 출력되고, 이를 기반으로 확률적으로 그 state에서 action을 선택하는 방식으로 이루어진다. 이때 학습은 return의 기댓값을 최대화 하는 방향으로 학습을 진행하는데, 따라서 특정 시간 관계에 대한 영향력이 줄어들어 temporal correlation 문제가 생기지 않으므로 DQN과 다르게 replay buffer를 필요로 하지 않는다. (일부 알고리즘의 경우 사용하기도 함)

2. Policy Gradient 계산

Objective function을 정의하고 gradient를 어떻게 구할 것인가의 문제를 해결해야 한다. 그 과정은 아래와 같다.
목적함수 정의
모든 강화학습의 최종 목표는 return을 최대화 하는 policy를 찾는 것이다. 이를 바탕으로 목적함수를 정의하면 아래와 같다.
θ=argmax J(θ)\theta^* = argmax \ J(\theta)
J(θ)=Eτpθ(τ)[t=0T1γtr(st,at)]J(\theta)=E_{\tau \sim p_\theta(\tau)} [\sum^{T-1} _{t=0}\gamma^t r(s_t, a_t)]
여기서 r(st,at)r(s_t, a_t)는 reward이고, γ\gamma는 discount factor이다. τ\tau는 policy π\pi에 의해서 생성되는 trajectory를 나타내며
τ=(s0,a0,s1,a1,,sT)\tau = (s_0,a_0,s_1,a_1, … , s_T)로 정의된다. pθ(τ)p_{\theta}(\tau)는 policy π\pi에 의해서 생성되는 trajectory의 PDF를 의미한다.
마지막으로, policy는 θ\theta에 의해서 parameterize된다.
pθ(τ)p_\theta (\tau) 전개
목적함수를 state-value func을 사용하여 표현
θ pθ(τ)\nabla_\theta \ p_\theta (\tau)loglog 미분법을 사용해 변형
J(θ)J(\theta) 미분
이때, reward가 전체 time-step에 대해서 고려되므로 특정 시점 이후의 reward에 대해서만 계산되도록 식을 변형하면,
여기서 γt\gamma ^t가 time-step이 진행될수록 매우 작아지기 때문에, γ\gamma가 작은 값인 경우 gradient가 0이 될 위험성이 있다. 따라서 실용적인 이유에서 아래와 같은 근사된 식을 사용한다.
( cf. γ=1\gamma =1 이라면, 무한 episode에서 return의 합이 무한대가 될 가능성이 있다. )
θJ(θ)Eτpθ(τ)[t=0T1(θlogπθ(atst)(k=tT1γktr(sk,ak)))]\nabla_\theta J(\theta) \approx \mathbb{E}_{\tau \sim p_\theta(\tau)} \left[ \sum_{t=0}^{T-1} \left( \nabla_\theta \log \pi_\theta (a_t | s_t) \left( \sum_{k=t}^{T-1} \gamma^{k-t} r(s_k, a_k) \right) \right) \right]
결론적으로 θ\theta update에 있어서는 Gradient ascent 방식을 사용하여 θθ+αθJ(θ)\theta ← \theta + \alpha \nabla_\theta J(\theta) 를 통해 진행한다.
Action value function 도입
(a) 의 pθ(τst+1:sTτs0:at)p_\theta (\tau_{s_{t+1} : s_{T}} | \tau_{s_0 : a_t})는 Markov property에 의해 pθ(τst+1:sTst,at)p_\theta (\tau_{s_{t+1} : s_T} | s_t, a_t) 으로 표현된다. 그러므로 (a) 는 action value function의 정의와 같은 형태를 가지게 되므로 (a)=Qπθ(st,at)(a)=Q_{\pi_\theta} (s_t, a_t)이다. 그리고 τs0:at\tau_{s_0:a_t} 에 대한 적분을 state에 대한 적분과 action에 대한 적분으로 분리하여 영역을 (st,at)\int_{(s_t, a_t)} 로 변경하고 확률을 pθ(st,at)p_\theta(s_t, a_t)로 변경하여 표현할 수 있다. 따라서 이를 반영한 gradient 수식은 아래와 같다.
이전과 동일한 이유로 γt\gamma ^t를 생략하여 식을 근사적으로 표현하여 사용한다.
정리하면,
θJ(θ)t=0T1(Estpθ(st),atπθ(atst)[θ logπθ(atst)Qπθ(st,at)])\nabla_\theta J(\theta) \approx \sum_{t=0}^{T-1}(\mathbb{E}{s_t \sim p_\theta(s_t), a_t \sim \pi_\theta(a_t|s_t)} [\nabla_\theta \ log \pi_\theta (a_t|s_t) Q_{\pi_\theta} (s_t,a_t)])
Baseline 도입
Q-function 자리에 action과 무관한 어떤 함수 btb_t를 사용해보자.
여기서 (a)의 적분이 모든 action에 대해 진행되므로 θ(1)\nabla_\theta (1) 이 되어 전체 값이 0이 된다. 따라서 Q-func에 action과 관계없는 어떤 baseline을 뺀 형태로 식을 구성하여도 전체 식의 값에 영향을 미치지 않는다. 그러므로 식을 정리하면, 아래와 같다.
θJ(θ)t=0T1(Estpθ(st),atπθ(atst)[θ logπθ(atst)(Qπθ(st,at)bt)])\nabla_\theta J(\theta) \approx \sum_{t=0}^{T-1}(\mathbb{E}{s_t \sim p_\theta(s_t), a_t \sim \pi_\theta(a_t|s_t)} [\nabla_\theta \ log \pi_\theta (a_t|s_t) (Q_{\pi_\theta} (s_t,a_t) - b_t)])
여기서 baseline으로 state-value function을 사용하면, Qπθ(st,at)Vπθ(st,at)Q_{\pi_\theta} (s_t, a_t) - V_{\pi_\theta} (s_t, a_t) 항이 advantage function이 되므로, 이를 반영하여 식을 정리하면 아래와 같다.
θJ(θ)t=0T1(Estpθ(st),atπθ(atst)[θ logπθ(atst) Aπθ(st,at)])\nabla_\theta J(\theta) \approx \sum_{t=0}^{T-1}(\mathbb{E}{s_t \sim p_\theta(s_t), a_t \sim \pi_\theta(a_t|s_t)} [\nabla_\theta \ log \pi_\theta (a_t|s_t) \ A_{\pi_\theta}(s_t, a_t) ])
여기서 Q-function을 state value function과의 재귀적 관계에 의해 표현하면 advantage function을 아래와 같이 근사할 수 있다.
Aπθ(st,at)r(st,at)+γVπθ(st+1)Vπθ(st)A_{\pi_\theta}(s_t, a_t) \approx r(s_t, a_t) + \gamma V_{\pi_\theta}(s_{t+1}) - V_{\pi_\theta}(s_{t})
수식 총정리
Loading PDF…
정리
결과적으로 각 gradient의 형태를 살펴보면 θ\nabla_\theta 가 적용되어, 어느 방향으로 parameter를 최적화할 것인가의 정보를 담고 있는 항과 해당 방향으로 얼마나 많이 이동시킬 것인가를 의미하는 항의 곱으로 이루어져 있다. 또한 실제로는 Trajectory에 대한 기댓값을 직접 계산하는 것은 어렵기 때문에 sample mean을 사용해서 추정한다.
Gradient의 다양한 형태 정리
⇒ 결과적으로 위와 같이 다양한 형태가 있으며, Actor-critic에서 사용되는 gradient에서 위의 수식과 다르게 \sum기호가 제외된 이유는 online-RL을 적용할 때 1-step에서 생성된 데이터를 기반으로 바로 update하는 방식을 적용하는 경우가 다수이기 때문이다. 또한 discount factor가 제외된 차이가 있는데, 이는 이전에 언급한 이유와 동일한 근거로 제외되었다.
1.
특정 episode의 각 time-step에 대해 반복적 적용