let us not love with words or tongue but actions and truth.

IT/강화학습

Proximal Policy Optimization (PPO)

sarah0518 2022. 12. 13. 19:57

Summary: 

1. DQN: Q값 추정을 neural network로

2. Policy Gradient: Q값 추정 안하고 Policy 자체를 학습

3. A2C: Actor와 Critic을 분리하여 critic이 value값 추정

4. DDPG: Actor는 Critic에 완전히 의존. Critic이 action의 가치 추정

5. TD3: DDPG upgrade

6. SAC: Entropy가 높은 policy 우선

7. PPO: Trusted region 기반 policy update

 

 

 

PPO의 motivation

learning rate에 따라 결과가 많이 좌우됨

(sudden drop이 발생하는 원인)

해결책: trusted region내에서 움직이면 sudden drop을 피할 수 있음

trusted region을 기반으로 policy를 update하자가 main idea임

 

 

 

Trusted Region Policy Optimization (TRPO)

ㅠ에서 ㅠ'로 갈 때 return값이 증가하는 것이 목표임

Advantage = Q-A임

Advantage가 음수이면 상대적으로 안좋은 policy라고 할 수 있음

ㅠ와 ㅠ'의 차이는 노란색 표시한 값 만큼이고 이것은 Advantage를 누적한 값임

위의 그림을 가지고 증명해보면 아래와 같음

ㅠ(V=4)에서 ㅠ'(v=2.75)로 갈수록 안좋아 진것을 알 수 있는데, 

그것의 기준은 ㅠ의 Advantage값을 곱해줌으로써

좋아졌는지, 안 좋아졌는지 결정할 수 있음

 

즉, return 값이 좋아지면서도 기존 policy와 새로운 policy의 차이를 줄이는 방향으로 training을 함

(K-L divergence를 사용함)

 

 

특정 state에 agent가 있을 확률에 대해 그때의 action을 취할 확률과 Advantage를 곱한 값으로 

agent가 state에 얼마나 방문하는지(visitation frequency) 에 대한 관점으로 변환하여 표현한것임

그러므로 시그마의 아래값이 t(시간관점)에서 s(state관점)으로 변함

위의 값은 (old policy에서의 visitation frequency) 를 뜻함

다시 위의 그림과 연결해보면 위의 식에서 노란색 밑줄친 부분이 양수가 되게 하는 것이 training 방향임

 

ㅠ'를 계산하기 위해 빨간색 부분처럼 변환 시켜 줘서 기존 policy에서의 visitation frequency를 활용함

 

 

 

 

[Total variance 관점]

아래의 빨간 값을 알고있으므로, 그에 대한 new policy의 값의 bound를 알 수 있고

그것보다 큰 값을 취할 수 있도록 new policy를 정하는 것이 목표라고 할 수 있음

D_TV: total variance divergence

a의미: ㅠ와 ㅠ'의 분포차

New policy와 old policy가 다르면 다를 수록 D_TV의 값이 커짐

위의 식에서 부등호를 기준으로 우변을 최대화 해줌으로써 new policy의 boundary를 정할 수 있음

우변이 최대화 되기 위해서는 음수뒤의 값이 작아야 되고, alpha가 작아야지 목적에 달성하는 것임

 

 

 

 

[KL divergence 관점] - TV보다 KL을 주로 사용함

목적: 부등호 기준 우변을 최대화 하는 것

즉, 아래와 같이 표현할 수 있음(constraint optimization)

subject to : ~의 조건하에

평균 추정을 활용하여(대충 approximation을 함) 아래와 같이 간소화 시키고,

또한 importance sampling을 활용하여 위의식을 더 간소화 시킴

 

** importance sampling: 

o, n두개의 분포가 있을 때, n의 sampling을 할 수 없는 경우,

두 분포의 ratio를 알 때, o의 분포에서 importance ratio를 곱해줘서 n의 sampling을 대체함

 

 

 

 

PPO with a clipped objective

 

** r=(ㅠ_new(a|s))/(ㅠ_old(a|s))임

 

L(ㅠold(ㅠnew))의 gradient(미분값)가 증가하므로

즉, 확률을 높이기 위해 증가시키는 방향을 취하면 됨

 

하지만 위의 그림에서, 일정구간에서는 증가시키고,

그 이후에는 상수값을 취하는 모습으로

너무 증가시키지 않겠다라는 것을 알수있음

(즉, ㅠ_new와 ㅠ_old의 차이를 너무 크게 하지 않겠다는 뜻임)

(= policy를 너무 변화시키지 않겠다)

(= trusted region내에서 움직이겠다.)

 

 

L의 gradient가 감소하는 방향에서도 마찬가지임

(= 너무 감소시키지 않겠다라는 뜻을 나타낸 이미지임)

 

 

 

 

[코드설명]

def pi: policy관련 network

def v: value 관련 network

 

 

policy관련 network (pi)에서 action을 택하고 trainstion(s',r,done)을 생성함

delta 수식

[Advantage계산방법] : Advantage = Q-V

 

 

ratio코드는 아래의 수식에 따라 구하는 것임

Epsilon의 값에따라, PPO clipped의 목적처럼 계속 상승하지는 않음

(surr2 코드 참고)

'IT > 강화학습' 카테고리의 다른 글

Twin Delayed DDPG (TD3), Soft Actor-Critic (SAC)  (2) 2022.12.06
Multi-Armed Bandit (MAB)  (0) 2022.12.04
Actor Critic methods - DDPG  (0) 2022.11.29
Policy Gradient Methods  (0) 2022.11.15
Deep Q Network  (0) 2022.11.01