‘파이썬과 케라스로 배우는 강화학습’ 세미나 6
6장을 읽고 카트폴 예제를 통해 DQN과 액터-크리틱에 대해서 학습합니다. 다른 장에 비해 학습할 양이 많지 않습니다.
p216. DQN은 큐러닝의 큐함수 업데이트 방법을 사용한다. 이를 가능하게 하기 위해 경험 리플레이를 사용한다.
p219. 경험 리플레이라는 아이디어는 에이전트가 환경에서 탐험하며 얻는 샘플(s, a, r, s’)을 메모리에 저장한다는 것이다. 샘플을 저장하는 메모리를 리플레이 메모리라 한다. 에이전트가 학습할 때는 리플레이 메모리에서 여러 개의 샘플을 무작위로 뽑아서 뽑은 샘플에 대해 인공신경망을 얻데이트한다. 이 과정을 매 타임스템마다 반복한다.
리플레이 메모리는 크기가 정해져 있어서 일단 메모리가 꽉 차면 제일 처음에 온 샘플부터 메모리에서 삭제한다. 에이전트가 학습을 해서 점점 더 높은 점수를 받게 되면 더 좋은 샘플들이 리플레이 메모리에 저장된다.
p220. 경험 리플레이 자체가 지금 에이전트가 경험하고 있는 상황(현재 정책으로부터 발생한 상황)이 아닌 다양한 과거의 상황(이전의 정책으로부터 발생한 상황)으로부터 학습하기 때문에 오프폴리시 알고리즘이 적합하다. 따라서 오프폴리시 알고리즘인 큐러닝 알고리즘을 경험리플레이 메모리와 함께 사용하는 것이다.
p221. 부트스트랩의 문제점은 업데이트의 목표가 되는 정답이 계속 변한다는 것이다. 그런데 정답을 내는 인공신경망 자체도 계속 업데이트되면 부트스트랩의 문제점은 더욱 심해질 것이다. 이를 방지하기 위해 정답을 만들어내는 인공신경망을 일정 시간 동안 유지한다. 타깃신경망을 따로 만들어서 타깃신경망에서 정답에 해당하는 값을 구한다. 구한 정답을 통해 다른 인공신경망을 계속 학습시키며 타깃신경망은 일정한 시간 간격마다 그 인공신경망으로 업데이트한다.
p230. 모델과 타깃 모델은 생성될 때 가중치가 무작위 과정을 통해 초기화되기 때문에 학습을 시작하기 전에 모델의 가중치로 타깃 모델의 가중치 업데이트한다.
p241. REINFORCE 알고리즘은 일종의 몬테카를로 폴리시 그레디언트로서 에피소드마다만 학습할 수 있다는 단점이 있다. 액터-크리틱은 매 타입스텝마다 학습할 수 있도록 한 것이다.
p242. 액터-크리틱에서는 정책의 발전은 정책신경망의 업데이트로 발전되며 정책의 평가는 크리틱이라는 가치신경망을 사용해서 진행한다.
p245. 정책신경망은 정책을 근사하며 가치신경망은 가치함수를 근사한다. 정책신경망의 출력으로부터 크로스 엔트로피 오류함수를 계산할 수 있고, 가치신경망의 출력으로부터 시간차 에러를 계산할 수 있다.
가치신경망은 이 시간차 에러를 가지고 딥살사에서와 같은 방식으로 신경망을 업데이트한다. 정책신경망은 크로스 엔트로피 오류함수와 시간차 에러의 곱으로 새로운 오류함수를 정의하고 이 오류함수로 정책신경망을 업데이트한다.