강화학습에서 에이전트(agent)가 최대화해야 할 누적 보상의 기댓값 또는 목적함수(또는 성능지수)는 다음과 같다.
\[ J= \mathbb{E}_{\tau \sim p(\tau)} \left[ \sum_{t=0}^T \gamma^t r_t (\mathbf{x}_t, \mathbf{u}_t) \right] \]
여기서 \(\mathbf{x}_t \in \mathbb{R}^n\)은 환경의 상태변수, \(\mathbf{u}_t \in \mathbb{R}^m\)은 에이전트의 행동(action), \( \gamma \in [0,1]\)는 감가율이다.
\(r_t\)는 시간스텝 \(t\)일 때 에이전트가 받는 순간 보상을 나타내는 보상함수다. \(\tau\)는 에이전트의 정책(policy)으로 생성되는 궤적 \(\tau=(\mathbf{x}_0, \mathbf{u}_0, \mathbf{x}_1, \mathbf{u}_1, ..., \mathbf{x}_T, \mathbf{u}_T)\)을 나타낸다. 궤적은 환경과 에이전트의 정책이 모두 확률적이므로 랜덤 시퀀스다.
\(p(\tau)\)는 궤적의 확률밀도함수를 나타내며 기댓값 \(\mathbb{E}\)의 아래 첨자 \(\tau \sim p(\tau)\)는 기댓값을 계산할 때 확률밀도함수 \(p(\tau)\)를 사용한다는 뜻이다.
\[ \mathbb{E}_{\tau \sim p(\tau)} \left[ \sum_{t=0}^T \gamma^t r_t (\mathbf{x}_t, \mathbf{u}_t) \right] = \int_{\tau} \left[ \sum_{t=0}^T \gamma^t r_t (\mathbf{x}_t, \mathbf{u}_t) \right] \ p(\tau) \ d\tau \]
보통 강화학습 논문이나 책에서는 상태변수를 \(\mathbf{s}_t\)로, 행동을 \(\mathbf{a}_t\)로 표기하지만, 제어공학에서 주로 다루는 물리 세계는 대개 상태변수와 행동이 연속공간에 있으므로, 전통적인 강화학습에서 다루는 이산공간에서의 상태변수와 행동과 구별하고자 제어공학에서 표기하는 방법대로 상태변수를 \(\mathbf{x}_t\)로, 행동을 \(\mathbf{u}_t\)로 표기하고자 한다.
심층강화학습(deep reinforcement learning)에서는 정책을 신경망으로 구현한다. 신경망의 파라미터, 즉 신경망의 모든 가중치(weight)와 바이어스(bias)를 파라미터 \(\theta\)로 표기하면, 정책이 \(\theta\)로 파라미터화 됐다고 하고, 그 정책을 \(\pi_\theta (\mathbf{u}_t \mid \mathbf{x}_t)\)로 표기한다.
그러면 목적함수도 \(\theta\)의 함수가 되므로 목적함수를 최대로 만드는 정책 파라미터 \(\theta\)를 계산하는 것이 강화학습의 목표라고 할 수 있다.
\[ \theta^\star = \arg\max J(\theta)= \mathbb{E}_{\tau \sim p_\theta (\tau)} \left[ \sum_{t=0}^T \gamma^t r_t (\mathbf{x}_t, \mathbf{u}_t) \right] \]
여기서 \(p_\theta (\tau)\)는 정책 \(\pi_\theta (\mathbf{u}_t \mid \mathbf{x}_t)\)로 생성되는 궤적의 확률밀도함수이다. \(\theta\)가 바뀌면 정책도 바뀌고 그에 따라 궤적도 바뀌므로 궤적의 확률밀도함수도 \(\theta\)의 함수가 된다.
보통 신경망의 출력은 손실함수(loss function)로 연결된다. 신경망을 학습한다는 것은 이 손실함수 \(L\)이 최소가 되도록 신경망의 가중치와 바이어스, 또는 파라미터 \(\theta\)를 반복적으로 계산한다는 뜻이다. 손실함수는 스칼라 함수로서 신경망의 학습 목적에 부합하도록 설계자가 정해야 한다.
강화학습의 정책을 신경망으로 구성할 때는 몇 지 고려할 것이 있다.
우선 정책 신경망의 입력은 환경의 상태(\(\mathbf{x}_t\))가 된다. 출력은 행동이 이산공간 값인지 연속공간 값인지에 따라 다르다. 이산공간 값이라면 출력 레이어의 뉴런 개수는 행동의 개수와 같으며 출력 값은 각 행동의 확률이 된다.
반면 행동이 연속공간 값이라면 출력은 확률밀도함수가 되야 한다. 출력이 '함수'라면 이를 표현하기 위한 출력 레이어의 뉴런 개수는 무한대가 되어야 한다. 이는 불가능하므로 보통 이 경우에는 확률밀도함수를 가우시안 분포로 가정하고 가우시안 분포의 평균과 공분산을 신경망의 출력으로 정한다. 그러면 출력 레이어의 뉴런 개수는 평균과 공분산의 개수와 같다.
손실함수는 정책이 최적의 파라미터 \(\theta\)를 갖도록 학습 목적에 부합하도록 정해져야 한다. 물론 학습 목적은 목적함수를 최대화하는 것이다.
그렇다면 손실함수를 어떻게 정의해야 목적함수를 최대화할 수 있을까. 이에 대한 다양한 대답이 다양한 정책 그래디언트(policy gradient) 기반 강화학습의 알고리즘을 만들었다.
'AI 딥러닝 > RL' 카테고리의 다른 글
Tensorflow2로 만든 A2C 코드: Pendulum-v0 (0) | 2021.04.20 |
---|---|
A2C 알고리즘-2: 액터 신경망 (0) | 2021.04.20 |
A2C 알고리즘-1: 크리틱 신경망 (0) | 2021.04.20 |
강화학습 문제 (0) | 2020.11.08 |
강화학습의 한계 (0) | 2020.10.28 |
댓글