본문 바로가기
AI 딥러닝/RL

소프트 정책 이터레이션

by 깊은대학 2021. 5. 28.

어떤 정책 πold 에 대해서 행동가치 함수가 주어지면 기존의 정책 보다 더 큰 행동가치 값을 갖는 새로운 정책 πnew 를 계산할 수 있다. 이 과정을 정책 개선(policy improvement)이라고 한다.

 

 

그렇다면 최대 엔트로피 목적함수 문제에서 도입한 식 (1)의 탐욕적 정책으로

 

(1)π(ut|xt)=exp(1αQsoftπ(xt,ut))uexp(1αQsoftπ(xt,u))du

 

정책을 πold 에서 πnew 로 업데이트하면 소프트 행동가치의 값이 증가, Qsoftπnew(xt,ut)Qsoftπold(xt,ut), 하는지 증명해 보자.

증명은 식 (2)의 소프트 벨만 방정식에서 출발한다.

 

(2)Qsoftπold(xt,ut)=rt+γ Ext+1p(xt+1|xt|ut), ut+1πold(ut+1|xt+1)          [Qsoftπold(xt,ut)αlogπold(ut+1|xt+1)]

 

식 (1)을 식 (2)의 기댓값 연산자 안에 있는 항에 대입하면,

 

(2)Eut+1πold(ut+1|xt+1)[αlogπnew(xt+1|ut+1)+αloguexp(1αQsoftπ(xt,u))duαlogπold(ut+1|xt+1)]   =Eut+1πold(ut+1|xt+1)[αlogπnew(xt+1|ut+1)πold(ut+1|xt+1)+αloguexp(1αQsoftπ(xt,u))du]   =αDKL(πold(xt+1|ut+1)πnew(xt+1|ut+1))          +αEut+1πold(ut+1|xt+1)[loguexp(1αQsoftπ(xt,u))du]   Eut+1πold(ut+1|xt+1)[αloguexp(1αQsoftπ(xt,u))du]

 

이 된다. 위 식의 마지막 줄은 xt+1 의 함수이므로 기대값을 πnew 기준으로 계산해도 결과는 동일하다.

 

   =Eut+1πnew(ut+1|xt+1)[αloguexp(1αQsoftπ(xt,u))du]   =Eut+1πnew(ut+1|xt+1)[Qsoftπold(xt,ut)αlogπnew(ut+1|xt+1)]

 

따라서 식 (3)에 의하면 다음 부등식이 성립한다.

 

(4)Eut+1πold(ut+1|xt+1)[Qsoftπold(xt,ut)αlogπold(ut+1|xt+1)]   Eut+1πnew(ut+1|xt+1)[Qsoftπold(xt,ut)αlogπnew(ut+1|xt+1)]

 

이제 식 (4)를 식 (2)에 대입하면 다음과 같이 된다.

 

(5)Qsoftπold(xt,ut)=rt+γ Ext+1p(xt+1|xt|ut), ut+1πold(ut+1|xt+1)          [Qsoftπold(xt,ut)αlogπold(ut+1|xt+1)]rt+γ Ext+1p(xt+1|xt|ut), ut+1πnew(ut+1|xt+1)          [Qsoftπold(xt,ut)αlogπnew(ut+1|xt+1)]

 

식 (5)의 오른쪽 항에 있는 Qsoftπold(xt+1,ut+1) 에 다시 식 (2)의 소프트 벨만 방정식을 대입하고 계속 전개하면, 결국 다음 부등식을 얻을 수 있다.

 

(6)Qsoftπold(xt,ut)Qsoftπnew(xt,ut)

 

식 (6)에 의하면 식 (1)의 정책으로 소프트 행동가치를 개선할 수 있다는 것이 증명되었다.

 

 

한편 정책 π 가 주어지면, 소프트 벨만 방정식을 풀어서 소프트 행동가치를 계산할 수 있다. 이 과정을 정책 평가(policy evaluation)라고 한다. 소프트 벨만 방정식은 보통 해석적인 해를 구할 수 없으므로 반복적 계산 방법, 즉 이터레이션(iteration) 방법으로 해를 구할 수 있다. 이 때 이 계산이 수렴하는지 알아보자.

 

 

우선 소프트 행동가치 함수와 소프트 가치함수의 관계식이 다음과 같으므로

 

(7)Qsoftπ(xt,ut)=rt+γ Ext+1p(xt+1|xt,ut)[Vsoftπ(xt+1)]

 

소프트 벨만 백업 연산자 Tπ 를 다음과 같이 도입한다.

 

(8)TπQ(x,u)=r(x,u)+γ Exp(x|x,u)[V(x)]

 

탐욕적 정책 (1)에 대한 소프트 상태가치 함수가 다음과 같으므로,

 

(9)Vsoftπ(xt)=αloguexp(1αQsoftπ(xt,u))du

 

식 (9)를 식 (8)에 대입하면 다음과 같이 된다.

 

(10)TπQ(x,u)=r(x,u)     +γ Exp(x|x,u)[αloguexp(1αQsoftπ(x,u))du]

 

소프트 벨만 백업을 두 개의 서로 다른 소프트 행동가치 함수에 적용했을 때 두 행동가치 함수의 거리(distance)가 더 줄어든다면, 소프트 행동가치는 이터레이션이 진행되면서 수렴할 것이다. 두 소프트 행동가치 함수의 거리는 놈(norm)을 사용한다.

 

(11)Q1Q2=max(x,u)|Q1(x,u)Q2(x,u)|

 

그러면 다음 식이 성립한다.

 

(12)TπQ1TπQ2   =γExp(x|x,u)[αloguexp(1αQ1)duαloguexp(1αQ2)du]   =γExp(x|x,u)[αloguexp(1α(Q1+Q2Q2))duαloguexp(1αQ2)du]   γExp(x|x,u)[αloguexp(1α(Q2+Q1Q2))duαloguexp(1αQ2)du]   =γExp(x|x,u)[Q1Q2+αloguexp(1αQ2)duαloguexp(1αQ2)du]   =γQ1Q2

 

식 (12)에 의해서 γ<1 이라면 TπQ1TπQ2<Q1Q2 가 성립한다. 따라서 소프트 벨만 백업 연산자는 γ축약(contraction) 연산자다.

소프트 벨만 백업 연산자를 이용하면 식 (2)를 다음과 같이 표현할 수 있으므로

 

(13)Qi+1=TπQi

 

소프트 행동가치 함수가 유한하다면 행동가치 함수를 업데이트할 수록 점점 어떤 포인트로 수렴하게 된다는 것을 알 수 있다.

 

 

식 (2)로 Qsoftπ(xt,ut) 가 수렴할 때까지 반복 계산하고 수렴한 후에 식 (1)로 정책을 업데이트 하는 과정을 소프트 행동가치와 정책이 각각 최적인 값으로 수렴할 때까지 계속 반복하는 것을 소프트 정책 이터레이션(soft policy iteration)이라고 한다.

 

 

 

 

댓글