본문 바로가기
공부 정리/강화 학습

목표망(target network)이 있는 Q학습

by 블로그별명 2023. 3. 18.

예제를 실행하기위해 필요한 코드(Gridworld, GridBoard등등)및 전체 코드는 책 깃허브를 참고하자

https://github.com/DeepReinforcementLearning/DeepReinforcementLearningInAction/tree/master/Chapter%203

 

목표망이 있는 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(토끼)가 일정시간 동안 가만히 서있는다면? 거북이는 토끼를 따라잡을수있다(학습이 일어남)

 

이런식으로 생각해보니 목표망이 필요한 이유가 어느정도 스스로 납득이 되었다

출처

심층 강화학습 인 액션

댓글