[RL] Deep Q Network
Depp Q Network은 Q 러닝과 신경망을 이용한 기법이다.
2. DQN의 핵심 기술
Q 러닝에서는 추정치를 사용하여 추정치를 갱신한다. (부트스트래핑)
아직 정확하지 않은 추정치를 사용하여 현재의 추정치를 갱신하기 때문에 Q 러닝은 불안정해지기 쉽다는 성질이 있다.
여기서 신경망처럼 표현력이 높은 함수 근사화 기법이 더해지면 결과는 불안정해진다.
신경망은 표현력이 높다는 게 장점이지만 단점이 될 수도 있다.
2.1 경험 재생
신경망으로 ‘지도 학습’을 성공적으로 해결한 사례는 많다. 하지만 2013년 DQN이 발표되기 전까지 신경망으로 강화 학습 문제를 성공적으로 해결한 사례는 거의 없다.
강화학습 알고리즘에 특히 Q 러닝에 신경망을 적용하기 어려운 이유는 무엇인가? 어떻게 하면 Q 러닝과 신경망을 말끔하게 결합할 수 있을까? 그 해답은 ‘지도 학습’과 ‘Q 러닝’의 차이에서 찾을 수 있다.
Q 러닝
Q 러닝은 에이전트가 환경 속에서 어떤 행동을 취할 때마다 데이터를 생성한다.
어떤 시간 t에서 얻은 $E_t = (S_t, A_t, R_t, S_{t+1})$을 이용해 Q 함수를 갱신한다. 여기서 $E_t$는 경험 데이터이다.
경험 데이터는 시간이 흐름에 따라 얻어지며, 경험 데이터 사이에는 강한 상관관계가 있다. 다르게 표현하면, Q 러닝에서는 상관관계가 높은 (편향된) 데이터를 사용하여 학습한다는 뜻이다.
이 점이 지도 학습과 Q 러닝의 첫 번째 차이이다. 이 차이를 메우는 기법이 경험 재생이다.
경험 재생
- 에어전트가 경험한 데이터 $E_t = (S_t, A_t, R_t, S_{t+1})$를 버퍼에 저장한다.
- Q 함수를 갱신할 때는 이 버퍼로부터 경험 데이터를 무작위로 꺼내 사용한다.
2.2 경험 재생 구현
2.3 목표 신경망
지도 학습과 Q 러닝을 비교해서 생각해보자.
- 지도 학습에서는 학습 데이터에 정답 레이블이 부여된다. 이때 각 입력에 대한 정답 레이블은 변하지 않는다.
- Q 러닝에서는 $Q(S_t, A_t)$의 값이 $R_t + r \max_a Q(S_{t+1}, a)$가 되도록 Q 함수를 갱신한다. TD 목표는 지도 학습에서의 정답 레이블에 대응된다. 하지만 TD 목표의 값은 Q 함수가 갱신될 때마다 달라진다.
이것이 지도 학습과 Q 러닝의 차이다. 이 차이를 메우기 위해 TD 목표를 고정하는 기술이 ‘목표 신경망’이다.
목표 신경망의 구현
- Q 함수를 나타내는 원본 신경망(qnet)을 준비하고, 구조가 같은 신경망(qnet_target)을 하나 더 준비한다.
- qnet은 일반적인 Q 러닝으로 갱신한다.
- qnet_target은 주기적으로 qnet의 가중치와 동기화시키고 그 외에는 가중치 매개변수를 고정한 상태로 둔다.
- 이후 qnet_target을 사용하여 TD 목표의 값을 계산하면 정답 레이블인 TD 목표가 바뀌는 일을 억제할 수 있다. 즉, 정답 레이블인 TD 목표가 달라지지 않기 때문에 신경망 학습이 안정화될 것이라고 기대할 수 있다.
목표 신경망은 TD 목표의 값을 고정하기 위한 기법이다.