reference
https://wikidocs.net/book/7888
Approximate Q-Learning
large-sale problem들은 일반적인 Q-learning 방법을 적용하기 어려워,
이를 해결하기 위한 한가지 방법으로 Q-function을 파라미터화 하는 것이 있다.
일반적인 Q-learning 업데이트 방법
$Q(s, a) ← Q(s, a) + α[r + γ max Q(s', a') - Q(s, a)]$
여기서 말하는 파라미터화(parameterization)는 Q-function을, 상태(state)와 행동(action)을 입력으로 받고,
해당 상태에서 특정 행동을 선택했을 때의 예상되는 미래 보상을 출력으로 내는 함수로 표현하는 것을 말한다.
이 함수는 일반적으로 뉴럴 네트워크로 표현되며, 이 함수의 파라미터(즉, 뉴럴 네트워크의 가중치)를 ϕ로 표현한다.
파라미터 ϕ 업데이트 방법
파라미터 ϕ는 실제 Q-값과 추정된 Q-값 사이의 차이, 즉 TD 오류 (Q_{ϕ}(s, a) - y_{i})를 최소화하는 방향으로 업데이트된다
$ϕ ← ϕ - α∇ϕ (Q_{ϕ}(s, a) - y_{i})$
$y_{i} ← r_{i} + γ max Q_{ϕ}(s', a)$
$y_{i}$ : target (추정하려는 실제 Q-값에 가장 가깝다고 생각하는 값)
$r_{i} + γ max Q_{ϕ}(s', a)$ : new estimate
$ϕ ← ϕ - α∇ϕ(Q_{ϕ}(s, a) - y_{i})$
α : stepsize
$∇ϕ(Q_{ϕ}(s, a) - y_{i})$ : stochastic gradient (TD 오류에 대한 ϕ의 확률적 기울기(stochastic gradient))
*TD Error : 현재의 보상 예측치와 실제로 받은 보상 간의 차이
DQN(Deep Q-Network)
DQN = Q-Learning + Deep Learning
Q-learning은 강화학습에서 좋은 방법론이며, 많은 문제를 효과적으로 풀 수 있다.
특히, 상태 공간 & 행동 공간이 작은 경우에는 더 잘 작동한다.
하지만, 상태 공간 & 행동 공간이 크거나, 연속적인 경우에는 Q-learning이 문제를 효과적으로 해결하는데 어려움이 있다.
이러한 문제를 해결하기 위한 방법으로 Q value를 근사하는 방법을 사용하는데,
이 방법 중 하나가 DQN(Deep Q-Network)이다.
Deep Learning을 사용하여 Q function(Q value)를 근사하며,
이를 통해 크고 복잡한 상태 공간 & 행동 공간을 가진 문제에서도 Q-learning을 효과적으로 사용할 수 있게 된다.
DQN Architecture
DQN 아키텍처에는 Q Nerual Network(Q_{ϕ})와 Target Neural Network(Q_{ϕ-})라는 두 개의 신경망과 Experience Replay라는 구성 요소가 존재한다.
Experience Replay
Experience Replay는 강화학습 과정에서 에이전트가 환경과 상호작용하며 얻은 경험을 저장하고 재사용하는 방법이다.
과정은 다음과 같다.
먼저 Experience Replay는 현재 상태(current state)에서 ε-greedy action을 선택하여 환경(environment)에서 실행하고,
보상(reward)과 다음 상태(next state)를 반환한다.
그리고 이 Transition data (s, a, s', r)를 Replay Buffer에 저장한다.
학습 과정에서는 Replay Buffer에 저장된 일정 개수의 Transition data를 무작위로 샘플링해 Q-function을 업데이트 한다.
Experience Replay을 통해 샘플들 사이의 correlation(상관성)을 감소시킬 수 있다 (bias를 줄일 수 있다)
Two Neural Nets
DQN의 학습 목표는 실제 Q-value와 예측된 Q-value의 차이를 최소화하는 것으로,
결국 DQN은 이 손실함수를 최소화하는 방향으로 신경망의 파라미터를 업데이트하게 된다. 이 과정은 경사하강법(gradient descent)을 사용하여 수행된다.
즉, DQN의 학습 과정은 회귀문제(regression problem)로 볼 수 있다.
DQN에서는 분리된 target network에서 N step 마다 Target Neural Network의 파라미터 $ϕ^{−}$는 Q Nerual Network의 파라미터 $Q_{ϕ}$로 동기화되어, $ϕ^{−} = ϕ$ 가 된다.
이렇게하면 학습 과정에서 target network의 출력값을 고정된 target으로 사용하여 회귀 문제를 해결함으로써 ϕ를 업데이트할 수 있게 된다.
이 과정은 학습이 일관성 있고 안정적으로 이루어질 수 있도록 도와준다.
만약 타겟 네트워크가 없다면, 학습 도중에 타겟 값이 계속 변하게 되어 학습이 불안정해질 수 있다.
'🤖 ai logbook' 카테고리의 다른 글
[RL] 간단한 OpenAI Gym 튜토리얼 (CartPole) (0) | 2023.08.28 |
---|---|
[RL] Deep Deterministic Policy Gradient (DDPG) (0) | 2023.08.21 |
[paper] ChatDev - 소프트웨어 개발을 위한 통신 에이전트(Communicative Agents for Software Development) (0) | 2023.08.16 |
[RL] Actor-Critic (0) | 2023.08.10 |
[RL] Q 러닝(Q-learning) (0) | 2023.08.07 |
[CV] Single-stage Models (YOLO, YOLOv2/YOLO9000) (0) | 2023.07.31 |
[CV] Two-stage Models (R-CNN, SPPNet, Fast R-CNN, Faster R-CNN) (0) | 2023.07.29 |
[CV] Parts-based Models & Deformable Part Model (DPM) (0) | 2023.07.29 |