예제를 실행하기위해 필요한 코드(Gridworld, GridBoard등등)및 전체 코드는 책 깃허브를 참고하자
목표망이 있는 Q학습
목표망과 경험재현이 추가된 딥Q학습의 관계도를 그려보았다
강화학습에서 경험재현에 관한 내용은 이전 포스팅에 적어놓았다 https://doingcomputer.tistory.com/22
Q 신경망과, 목표 Q신경망 총 두가지 모델을 사용하게되는데
둘의 용도는 각각 X값예측과 y값 예측으로 다르다
역전파는 오로지 Q신경망에서만 일어나며
목표 Q신경망은 일정 학습 주기마다 Q신경망으로부터 가중치를 업데이트 받는다
코드로 표현하기
목표망모델을 이용하여 st+1을 예측한다
Q1 = model(state1_batch)
with torch.no_grad():
Q2 = model2(state2_batch) # 목표망을 실행하여 다음 상태의 최대 Q가치를 얻는다
Y = reward_batch + gamma * ((1-done_batch) * torch.max(Q2,dim=1)[0])
X = Q1.gather(dim=1,index=action_batch.long().unsqueeze(dim=1)).squeeze()
일정 주기마다 목표망 모델을 업데이트 해준다
if j % sync_freq == 0: # 주 Q신경망의 매개변수를 목표망에 복사한다
model2.load_state_dict(model.state_dict())
목표망학습적용시 손실 그래프가 독특한 모습을 하는것을 확인할수있었다
목표망은 왜 필요한가?
목표망은 일정 기간동안 고정된 상태를 유지하기 때문에, 학습 중인 정책이 불안정하게 변하는것을 방지하여 안정적으로 학습을 진행할수있다. 또한 학습중인 정책이 학습 데이터에 지나치게 적합해지는것을 방지하여 과적합을 방지할수있다 -chatGPT-
솔직히 처음에는 목표망이 필요한이유가 경험재현과 다르게 잘 와닿지않았다
강화학습은 일반적인 지도학습의 y와 다르게 y역시 예측값이다
따라서 y를 토끼 x를 거북이라고 할때 둘다 변하게(뛰게)된다면
거북이는 토끼를 따라잡지못할지도 모른다(학습이 일어나지않음)
하지만 목표망을 활용하여 y(토끼)가 일정시간 동안 가만히 서있는다면? 거북이는 토끼를 따라잡을수있다(학습이 일어남)
이런식으로 생각해보니 목표망이 필요한 이유가 어느정도 스스로 납득이 되었다
출처
심층 강화학습 인 액션
'공부 정리 > 강화 학습' 카테고리의 다른 글
마르코프 리워드 프로세스(Markov Reward Process, MRP) (0) | 2023.09.10 |
---|---|
[강화학습2]마르코프 프로세스(Markov Process) (0) | 2023.09.04 |
[강화학습1]강화학습의 기본개념 이해 (0) | 2023.09.01 |
Policy Gradient Methods의 구현 (0) | 2023.05.28 |
파국적 망각 방지: 경험재현 (0) | 2023.03.13 |
댓글