Summary

policy-based method.
즉, optimization target은 policy 자체를 direct하게 optimization하는 것.

Quote

“잘한 건 칭찬하고, 못한 건 혼내자.”

Summary

신경망의 파라미터(가중치)를 라고 할 때, 우리의 목표는 에피소드 동안 얻는 총 보상의 기댓값 를 최대화하는 것입니다.

목적 함수의 gradient:

(행동의 방향): 현재 상태 에서 행동 를 선택할 확률(로그 확률)을 높이려면 신경망 파라미터 를 어느 방향으로 수정해야 하는지 알려주는 기울기(Gradient)입니다.

(반환값, Return): 시간 부터 에피소드가 끝날 때까지 받은 실제 누적 보상입니다.

곱셈의 의미: 기울기 방향에 를 곱해줍니다. 즉, 가 크면(결과가 좋으면) 확률을 팍팍 올리는 쪽으로 가중치를 크게 업데이트하고, 가 음수거나 작으면 확률을 내리거나 조금만 업데이트합니다.

=============================================================
가 각 episode가 끝날때까지의 누적 보상
위 수식을 보면, T : episode termination step.
여러 개의 episode를 해보고, 평균을 내어 gradient로 사용
sigma 연산은 1 episode 내에서 값 summation.(정의 상 state dependent하니까, trajectory따라가며 누적. ) : 정확히는 log-prob에서 driven된거라, 평균이 아닌, sum이 이론 상 정확.
위 수식은 1 episode 후 파라미터 업데이트가 진행되지만, 실무에서는 episode 간 variance를 줄이기 위해 batch 단위 처리를 권장.

Episode 1: s0 → a0 → r0 → s1 → a1 → r1 → ... → sT → FINISH

                 G0, G1, G2, ..., GT 계산 (누적 return)

              한꺼번에 policy 업데이트!
 

Question

return의 정의를 보면,

state-dependent 한데, 정의 상 미래의 를 알아야 현재 state에 대한 값을 구할 수 있어 실제 값이 계산되는 과정을 tracking하면 forward-pass 한 번으로 끝나지 않음.

따라서 실제적으로 는 backward 단에서 연산되는데, forward-pass 할 때, 을 logging해두고, 에피소드가 끝난 시점에서 으로 setup 한뒤,

수식으로 재귀적 연산을 통해 구함.
이렇게 forward, backward 연산 뒤, parameter update를 gradient ascent로 진행.

relationship between monte carlo

여기서 앞서 질문하셨던 몬테카를로의 개념이 정확히 등장합니다! REINFORCE의 별명은 Monte Carlo Policy Gradient입니다.

수식에 있는 (끝날 때까지의 누적 보상)를 알기 위해서는 반드시 게임(에피소드)이 끝날 때까지 실제로 플레이를 해봐야 합니다. 즉, REINFORCE는 현재 정책으로 환경과 끝까지 상호작용하여 하나의 궤적(Trajectory)을 무작위 샘플링(Monte Carlo)한 뒤, 그 궤적에서 얻은 실제 보상 결과를 바탕으로 정책 신경망을 업데이트합니다.

Critical Problem

High Variance
episode 내에서 state별 간 variance가 심해서, gradient가 불안정함. Gradient Dominance