A2C 알고리즘
목적함수 그래디언트는 샘플링 기법을 이용하면 다음과 같이 근사적으로 계산할 수 있다.
M = 에피소드 개수, m = 에피소드 인덱스
$$ \nabla_\theta J(\theta) \approx \sum\limits_{t=0}^M \left[ {1 \over M} \sum\limits_{m=1}^{M} \left( \nabla_\theta log \pi_\theta(u_t^{(m)}|x_t^{(m)}) A^{\pi_\theta}(x_t^{(m)},u_t^{(m)}) \right) \right] $$
어드밴티지 함수를 계산하기 위해 행동가치 함수의 식을 이용해 보자
$$ Q^\pi(x_t,u_t) = r(x_t,u_t) + \mathbb{E}{x{t+1} \ \sim \ p(x_{t+1}|x_t,u_t)} \left[ \gamma V^\pi(x_{t+1}) \right] $$
이 식을 대입해보면 다음과 같이 근사적으로 표현할 수 있는데
📌 하지만 이것은 뇌피셜입니다🤥
$x_{t+1}$이 1개의 값을 가진다고 가정하면 기대값이 $\gamma V^{\pi_\theta}(x_{t+1})$ 그 값 자체가 될 수 있기 때문이다.
그러나 이러한 가정은 있을 수 없는 일이므로 근사적으로 밖에 표현하지 못하는 것이다.
더 정확한 이유가 있다면 제발 알려주세요….🙏
$$ \begin{matrix} A^{\pi_\theta}(x_t,u_t) &=& Q^{\pi_\theta}(x_t, u_t) - V^{\pi_\theta}(x_t) \\ &\approx& r(x_t,u_t) + \gamma V^{\pi_\theta}(x_{t+1}) - V^{\pi_\theta}(x_t) \end{matrix} $$
위 식을 보면, 상태가치를 얼마나 정확히 계산 하느냐에 따라 어드밴티지를 더 정확하게 도출해 낼 수 있다.
문제 해결을 위해 정책 신경망($\pi_\theta(u_t|x_t)$를 추정)과 또 다른 신경망($V_\phi(x_t) \approx V^{\pi_\theta}(x_{t+1})$를 추정)을 통해서 상태가치 함수를 근사 한다.
- 정책 신경망은 에이전트의 행동을 결정하므로 actor
- 가치 신경망은 그 행동을 평가하므로 critic
📌 알아두기
- 이 두 신경망은 중첩되는 부분이 많아 결과만 다른 층을 쓰는 경우도 많다.
가치 신경망 알고리즘
$V_\phi(x_t) \approx V^{\pi_\theta}(x_{t+1})$ 를 추정하는 알고리즘을 위해 벨만 방정식을 이용한다.
벨만 방정식에 의하면, 현재 상태와 다음 상태의 가치함수가 다음과 같은 관계가 있다.
$$ V^\pi(x_t) = \mathbb{E}{u_t\ \sim \ \pi(u_t|x_t)} \left[ r(x_t,u_t)+\mathbb{E}{x_{t+1} \ \sim \ p(x_{t+1}|x+t,u_t)} \left[ \gamma V^\pi(x_{t+1}) \right] \right] $$
가치함수를 근사하는 $V_\phi(x_t)$는 다음과 같이 근사적으로 추정할 수 있다.
$$ V_\phi(x_t) \approx r(x_t, u_t) + \gamma V_\phi(x_{t+1}) $$
시간차 타깃(TD-target)을 $y_i = r(x_i, u_i) + \gamma V_\phi(x_{i+1})$ 로 설정해보자.
$$ Loss_{critic} = {1 \over 2}\sum_i \parallel r(x_i,u_i)+\gamma V_\phi(x_{i+1}) - V_\phi(x_i) \parallel^2 $$
정책 신경망 알고리즘
어드밴티지를 근사적으로 추정하면, 아래와 같고
$$ A^{\pi_\theta}(x_t,u_t) \approx r(x_t,u_t) + \gamma V^{\pi_\theta}(x_{t+1}) - V^{\pi_\theta}(x_t) $$
액터 신경망의 손실 함수로는
$$ Loss_{actor}(\theta) \approx - \sum_i(log\pi_\theta(u_i|x_i)A\phi(x_i,u_i))A_\phi(x_i,u_i)) $$
를 사용하면 된다.
$$ \theta \leftarrow \theta-\alpha\nabla_\theta\sum_i -(log\pi_\theta(u_i|x_i)A_\phi(x_t,u_t)) $$
어드밴티지 함수는 $\theta$의 함수가 아니기 때문에 그래디언트 안에 포함될 수 있다.
앞에 마이너스 부호가 붙은 이유
- 손실함수 최소화, 목적함수 최대화를 위해
손실함수의 구조를 보면,
손실함수는 이진분류 문제에서 참 값이 항상 1 인 교차 엔트로피에 어드밴티지를 곱한 형태이다.
📌 $CrossEntropy Loss=−log(예측값)$
그러므로 어드밴티지가 큰 정책의 샘플은 더 큰 영향을, 작은 정책의 샘플은 덜 영향을 받아 점진적으로 정책이 향상될 것을 기대할 수 있다.
이것이 바로 A2C이다!
배치 어드밴티지 A2C
정책 $\pi_{\theta_1}$을 N 시간스텝 동안 실행시켜 N개의 상태 천이 데이터 생성하여 이를 바탕으로 $\pi_{\theta_1}$에서 $\pi_{\theta_2}$로 업데이트 한다.
$(x_i, u_i, r(x_i, u_i), x_{i+1})$은 상태 천이 데이터이며 일정 시간스텝 N동안 모으면 샘플의 개수는 N개가 된다.
사용한 N 개의 샘플은 폐기하며, 이 과정을 일정 성능에 도달할 때까지 반복하며 학습을 진행한다.
[Process]
- 크리틱과 액터 신경망의 파라미터 $\phi$ 와 $\theta$를 초기화한다.
- $Repeat \ N \ times$ $\{$
- 정책 $u_i \ \sim \ \pi_\theta(u_t|x_t)$로 행동을 확률적으로 선택한다
- $u_i$를 실행해 보상 $r(x_i, u_i)$과 다음 상태변수 $x_{t+1}$을 측정한다.
- 샘플 $(x_i, u_i, r(x_i, u_i), x_{i+1})$를 저장한다.
- TD target(시간차 타겟) $y_i = r(x_i, u_i) + \gamma V_\phi(x_{i+1})$ 를 계산한다.
- 크리틱 신경망의 손실함수를 계산한다.
$$ L = {1 \over 2}\sum_i(y_i - V_\phi(x_i))^2 $$ - 어드밴티지를 계산한다.
$$ A_\phi(x_t,u_t) = r(x_t,u_t) + \gamma V_\phi(x_{t+1}) - V_\phi(x_t), \\ i=i, \dots, N $$ - 크리틱 신경망을 업데이트 한다.
$$ \phi \leftarrow \phi + \alpha_{critic}\sum_{i=1} \left[ (y_i - V_\phi(x_i))\nabla_\phi V_\phi(x_i) \right] $$ - 액터 신경망을 업데이트 한다.
$$ \theta \leftarrow \theta+\alpha\nabla_\theta\sum_i (log\pi_\theta(u_i|x_i)A_\phi(x_t,u_t)) $$
온라인 학습
한 개의 상태 천이 데이터 샘플이 생성되는 즉시 신경망을 업데이트 하는 방법이다.
이산공간과 연속공간
- 이산공간
- 액터 신경망의 출력층 뉴런 개수 = 행동변수가 가질 수 있는 값의 개수
- 행동변수 차원 * 행동변수가 가질 수 있는 값 개수
- 액터 신경망의 출력 = 행동변수가 가질 수 있는 값의 확률
- 액터 신경망의 출력층 뉴런 개수 = 행동변수가 가질 수 있는 값의 개수
- 연속공간
- 행동변수 1개당 가질 수 있는 값이 무한개
- 신경망의 출력 $\pi_\theta(u_t|x_t)$는 확률밀도함수
- 그러므로 확률밀도함수를 표현하기위해 무한 개의 뉴런이 필요 → 구현가능하도록 만드려면 임의의 값이 아닌 고정된 구조가 필요하다.
'Data Science > Reinforcement' 카테고리의 다른 글
PPO(Proximal Policy Optimization) 알고리즘의 탄생배경과 목적함수 그래디언트 (0) | 2023.09.05 |
---|---|
A3C(Asynchronous advantage actor-critic) 알고리즘 (0) | 2023.07.18 |
강화학습의 키, 가치함수 (0) | 2023.06.21 |
A2C의 어드밴티지 함수 (0) | 2023.06.20 |
A2C의 배경과 그래디언트의 재구성 (0) | 2023.06.13 |
댓글