오늘은 TRPO의 파라미터를 업데이트하기 위한 Natural Gradient Policy에 대해 배워볼 예정이다.














우리는 Natural gradient descent를 통해 new policy를 구할 수 있다.
하지만 Objective function에 많은 approximation을 사용했기 때문에 성능이 monotonic하게 improve된다는 보장이 없다.
또한 KL-발산 제약조건 식 역시 많은 approximation을 거쳐서 monotonic하게 improve된다는 보장이 없다.
우리는 approximation을 하였지만 최대한 허용 가능한 step size 를 구하였다.
Line search는 우리가 구한 step size 가 정말 안전한 것인지 확인하는 방법이다.
값을 objective function과 Constraint 식에 대입하여 두 식을 만족하는지 확인한다.
제약조건식이 보다 큰 값이 나오거나, 성능이 improve 되지 않는다면 값을 줄여준다.
값은 를 곱해주는 방법으로 줄여준다.
값이 조건을 만족할 때까지 를 곱해준다.

1번의 Iteration마다 policy updata가 한번 수행된다.
Old policy에서 sample data를 수집한다.
Sample data를 통해 Advantage value나 Q-value를 구한다.
Advantafe estimate를 이용하여 gradient를 구한다.
식에 Conjugate gradient를 적용하여 를 구한다.
를 통해 Natural gradient를 구한다.
값에 Line search를 적용하여 제약조건 식을 만족하며 성능이 향상되는 값을 구한다.
해당 값을 통해 파라미터 업데이트를 진행한다.

- Natural gradient는 Hessian을 적용한 gradient이다.
- Hessian을 통해 기울기의 기울어진 정도를 조정하여 수렴 속도를 높인다.
- Conjugate gradient를 통해 Hessian값을 구한다.
- Linesearch를 통해 제약조건을 만족하는 step size 를 구한다.
- TRPO는 성능이 향상된다는 이점이 있지만, 그와 동시에 연산량이 많다는 한계가 존재한다.