Background
순차적 의사결정 문제를 해결하기 위해, 각 행동의 최적 가치를 추정하도록 학습할 수 있다. 행동의 최적 가치는 해당 행동을 취한 뒤 이후에는 최적 정책을 따른다고 할 때 기대되는 미래 보상의 합으로 정의된다.
주어진 정책 π에서, 상태 s에서 행동 a를 했을 때 가치는 다음과 같다.
Qπ(s,a)=E[R1+γR2+γ2R3+...∣S0=s,A0=a,π]
- π : 정책
- s : 상태
- a : 행동
- γ : 할인율 (미래 보상을 얼마나 중요하게 볼지를 결정)
최적의 가치는 다음과 같이 정의된다.
Qπ∗(s,a)=maxπQπ(s,a)
이때 최적 정책은 각 상태에서 가장 높은 가치를 가지는 행동을 선택함으로써 최적 가치로부터 도출할 수 있다.
Q-learning
실제 문제 공간은 매우 크기때문에 모든 상태와 행동의 가치를 학습하기에는 너무 크다. 그래서 매개변수화된 가치 함수 Q(s,a;θ)를 학습한다.
Q-learning 매개변수 업데이트는 다음과 같다
θt+1=θt+α(YtQ−Q(St,At;θt))∇θtQ(St,At;θ)
- θt : 현재 모델 파라미터
- YtQ : 목표값
- Q(St,At;θt) : 현재 모델이 예측한 Q값
- ∇θtQ(St,At;θ) : gradient
이때 목표값 YtQ는 다음과 같이 정의된다
YtQ=Rt+1+γmaxaQ(St+1,a;θt)
- maxaQ(St+1,a;θt) : 다음 상태에서 가능한 행동에서 얻을 수 있는 가치 중 최대 가치
Deep Q Networks
주어진 상태 s에 대해 행동 가치들의 벡터 Q(s,⋅;θ)를 출력함. θ는 네트워크의 매개변수이다. n차원의 상태 공간과 m개의 행동을 포함하는 행동 공간이 있을 때, 이 신경망은 Rn에서 Rm으로 가는 함수이다.
DQN은 두 가지 중요한 구성 요소로 이루어 진다
- target network (θ−)
타겟 계산에 사용되는 고정된 네트워크로, 일정 주기 τ마다 online network 파라미터를 복사한다 θt−=θt. (online network는 실제 매 step 학습되는 네트워크이다)
YtDQN=Rt+1+γmaxaQ(St+1,a;θt−)
즉, 매개변수 업데이트는 Q-learning과 비슷하지만 target 계산에는 target network를 사용한다.
- experience replay
에이전트가 환경과 상호작용하면서 얻은 transition(St,At,Rt+1,St+1)을 메모리에 저장한다.
Double Q-learning
Q-learning과 DQN에 있는 max 연산자는 overestimation의 원인이므로 이를 방지하기 위해, max 대신 행동 선택과 평가를 분리한다.
경험을 무작위로 할당하여 두 가치 함수 중 하나를 업데이트함으로써 두 개의 가치 함수를 학습한다. 그 결과 두 개의 가중치 θ, θ′이 생긴다.
YtDoubleQ=Rt+1+γQ(St+1,argmaxaQ(St+1,a;θt);θt′)
- argmaxaQ(St+1,a;θt) : 행동 선택, online network가 보기에 가장 좋은 행동 선택
- Q(St+1,a∗;θt′) : 가치 평가, 선택된 행동의 Q값을 같은 network로 평가
행동을 고르는 기준은 여전히 현재 Q함수 θt이지만, 그 행동의 가치를 평가할 때는 다른 Q함수 θt′를 사용한다.
정리
▶️Q-learning, DQN, Double Q-learning 모두 파라미터 업데이트 방식은 동일하고 target 계산 방법만 다르다
YtQ=Rt+1+γmaxaQ(St+1,a;θt)YtDQN=Rt+1+γmaxaQ(St+1,a;θt−)YtDoubleQ=Rt+1+γQ(St+1,argmaxaQ(St+1,a;θt);θt′)
Q-learning과 DQN은 선택과 평가에 동일한 파라미터를 사용했다면, Double Q-learning은 선택과 평가에 다른 파라미터를 사용한다.
전체 미래 보상합은 재귀적으로 쓸 수 있다
Gt=Rt+1+γRt+2+γ2Rt+3+...이걸 다음과 같이 묶으면
Gt=Rt+1+γ(Rt+2+γ2Rt+3+...) 이때 괄호 안 Rt+2+γ2Rt+3+...는 다음 상태 St+1로부터의 미래 보상합으로 이 부분을 Q값으로 표현하면 다음과 같다 Q(St+1,a) 즉, Q(St,At)≈Rt+1+γQ(St+1,a)가 된다.
이때 우리는 모델을 활용하여 St+1에서 행동 a를 했을 때, 그 이후 받을 보상들의 할인합인 Q(St+1,a;θ)를 예측한다. 이 때 다음 두가지를 주의하자
1. 그 보상들을 실제로 다 관측해서 더한 값이 아니다.
2. 단순합이 아닌 할인합으로 미래 보상일수록 작게 반영됨
Double DQN
YtDoubleDQN=Rt+1+γQ(St+1,argmaxaQ(St+1,a;θt),θt−)
Double DQN은 Double Q-learning에서 θt′의 역할을 θt−가 대신한다. 즉 DQN 구조에 맞게 Double Q-learning을 적용하였다. DQN에서와 동일하게 target network 업데이트 방법은 동일하다
내가 궁금했던거 정리
1. target에도 예측값이 들어가는데 학습이 제대로되는건가?
target이 전부 예측값이 아니라 실제 보상 Rt+1을 포함하고, 이 실제 보상 정보가 반복 업데이트를 통해 Q값 전체로 전파되므로 가능하다.