정책 기반 강화학습(기초)

박상훈·2024년 11월 22일

Outline

기존 Value기반 방법은 각 state value function(혹은 state-action value function)을 찾아내서 그에따른 최적의 greedy policy를 찾아냈다.

이러한 방법은 결정론적 정책을 사용함에 따른 한계가 명확했다. → action공간이 이산적이지 않고 연속적일 경우 사용하기 힘들다.

결론적으로 Value기반은 Greedy한(결정론적) 선택을 하게끔 하고 Policy기반은 확률적 선택을 하게 한다. (이거만 확실하게 알고 넘어가도 됨)

위와 같은 이유로 Policy기반 방법이 Value기반 방법보다 더욱 범용성이 높다 할 수 있다.

그럼이제 본격적으로 한번 Policy기반 방법에 대하여 알아보자.


Policy기반 방법의 특징은 아래와 같다.

  1. 확률을 사용한 정책 사용 가능
  2. 액션 공간이 연속적인 경우에도 사용가능
  3. Policy변화를 낮춰, 수렴성을 높임. (Value기반 방법에서는 Value의 변화에 따라 Policy가 확확 바뀌기 때문에 수렴성이 낮다.)

Policy기반 방법의 목적은 무엇일가? → 보상의 누적을 최대화 하는 최적 정책 찾기 (Value기반과 동일)

Policy기반 방법에서 최적 정책이란 무엇일까? → 시작 위치에서 미래에 얻을 수 있는 누적 보장이 최대가 되는 정책


Policy기반 방법의 목적에 따라서 시작 위치에서 value function가장 높은 정책을 찾아야 한다.


시작 위치에서 value funtion : 목적 함수(objective function)

가장 높은 정책 : 시작 위치에서 value function(objective function)을 최대화 하는 정책


목적함수는 아래와 같이 표현 가능 하다.

목적함수=(시작점state분포확률)×(시작stateValuefunction)목적함수= \sum(시작점 \, state의\,분포확률) \times(시작\,state의\,Value\,function)

θ\theta를 Policy함수에서 사용되는 model-parameter라고 뒀을때 목적함수는 아래와 같이 정의 할 수 있다.

J(θ)=sd(s)V(s)J(\theta)= \sum_sd(s)V(s)

현재 상황이 model-free한 상황 즉 환경의 동역학에 대해 모른다고 가정할때 위 state value function을 풀어서 아래와 같이 state-action function을 이용해서 정의할 수 있다.

J(θ)=sd(s)V(s)=sd(s)aπθ(s,a)Qπθ(s,a)J(\theta)=\sum_sd(s)V(s)=\sum_sd(s)\sum_a\pi_\theta(s,a)Q^{\pi_\theta}(s,a)

위 목적함수를 극대화 하는 정책을 찾는 것이 목표임으로 위 목적함수 모델 파라미터 θ\theta에 대한 미분식을 구할 필요가 있다.

일단 처음에 1-step MDP상황임을 가정하자.

(1-step MDP : 한번의 action으로 R이 정해지고 이 R값이 곧 G 즉 한번의 action으로 R이 정해지면 episode가 종료 )

θJ(θ)=sd(s)aθπθ(s,a)Rsa\nabla_\theta J(\theta)=\sum_sd(s)\sum_a\nabla_\theta\pi_\theta(s,a)R_s^a

위의 미분값을 바로 구해서 그에따라 θ\theta값을 update하면 될까? → 불가능하다.

  1. state-action공간이 커짐에 따라 aθπθ(s,a)Rsa\sum_a\nabla_\theta\pi_\theta(s,a)R_s^a의 계산이 불가능해 진다.
  2. 애초에 모든 state에서의 action에 따른 reward RsaR_s^a부터 알 수 없다. (state-action공간이 커짐에 따라서)

LogTrickLog \, Trick을 이용해서 위 식을 변형하면 이 문제를 해결할 수 있다.


θπθ(s,a)=πθ(s,a)θπθ(s,a)πθ(s,a)=πθ(s,a)θlogπθ(s,a)\nabla_\theta\pi_\theta(s,a)=\pi_\theta(s,a)\frac{\nabla_\theta\pi_\theta(s,a)}{\pi_\theta(s,a)}=\pi_\theta(s,a) \nabla_\theta log\pi_\theta(s,a) 이므로 위 식은 아래와 같이 전개된다.

sd(s)aπθ(s,a)θπθ(s,a)πθ(s,a)Rsa=sd(s)aπθ(s,a)θlogπθ(s,a)Rsa\sum_sd(s)\sum_a\pi_\theta(s,a)\frac{\nabla_\theta\pi_\theta(s,a)}{\pi_\theta(s,a)}R_s^a=\sum_s d(s)\sum_a\pi_\theta(s,a)\nabla_\theta log\pi_\theta(s,a)R_s^a

πθ(s,a)\pi_\theta(s,a)\nabla밖으로 빠져나오면서 추가 되었다. 위 처럼 수식이 변형 함에 따라 최종적으로 아래와 같이 평균으로 표현할 수 있다.

Eπθ[θlogπθ(s,a)Rsa]E_{\pi_\theta}[\nabla_\theta log\pi_\theta(s,a)R_s^a]

식이 이렇게 변형됨에 따라 θ\theta값 업데이트 방식이 πθ\pi_\theta에 따라 게임을 진행하며 θlogπθ(s,a)Rsa\nabla_\theta log\pi_\theta(s,a)R_s^a값을 기록하고 그 값을 토대로 θ\theta값을 업데이트 하는 sampling컨셉으로 θ\theta값 업데이트 방법이 바뀐다.


이제 위의 값을 1-step MDP가 아닌 multi-step MDP로 확장 시키면 아래와 같이 최종적으로 정의된다.

θJ(θ)=Eπθ[θlogπθ(s,a)Qπθ(s,a)]\nabla_\theta J(\theta)=E_{\pi_\theta}[\nabla_\theta log\pi_\theta(s,a)Q^{\pi_\theta}(s,a)]

이에 따른 모델 파라미터 θ\theta업데이트 식은 아래와 같다.

θθ+ηθlogπθ(s,a)Qπθ(s,a)\theta \leftarrow \theta+\eta\nabla_\theta log\pi_\theta(s,a)Q^{\pi_\theta}(s,a)

이때 η\eta는 학습률(learning rate)이다.



θ\theta업데이트 식의 QQ값으로 어떤 값을 사용하느냐에 따라서 정책기반 방법들의 계보가 나뉜다.

  1. 몬테카를로 PB 알고리즘 (REINFORCE 알고리즘)
    • QQ값으로 GG값을 사용(G=return)G = return)
    • 모델 파라미터 업데이트 식
θ=θ+αθlogπθ(st,at)Gt\theta = \theta+\alpha\nabla_\theta log\pi_\theta(s_t,a_t)G_t
  1. TD를 이용한 PB 알고리즘 (actor-critic 알고리즘)
    • QQ값으로 TD(Temporal Difference)를 이용해서 추정한 추정치를 사용
    • 모델 파라미터 업데이트 식 Qπθ(s,a)QW(s,a)Q^{\pi_\theta}(s,a) \approx Q^W(s,a)라고 했을때
      θ=θ+αθlogπθ(st,at)QW(st,at)\theta = \theta + \alpha\nabla_\theta log\pi_\theta(s_t,a_t)Q^W(s_t,a_t)

0개의 댓글