안녕하세요, 강화학습 공부를 하고 있는 석사 연구생입니다.


복잡한 게임에 강화학습을 적용시키기 위해 기초부터 하나씩 개념을 쌓아가려고 합니다.

DQN -> Dueling -> Double DQN 식으로 강화학습 에이전트의 성능 차이를 한번 확인해보고자 했습니다.


강화학습을 적용해보기 위해 간단한 미니게임을 만들었습니다.


5x5 격자의 게임판에서, 폭탄(X)과 목적지(R) 그리고 플레이어(O) 가 존재합니다.

모든 오브젝트의 위치는 매 에피소드마다 랜덤하게 배치됩니다.


게임판 예시:

7cf3c028e2f206a26d81f6e7468472


게임판 데이터는 아래와 같이 사용됩니다. (빈칸/플레이어/폭탄/목적지 각각 0/1/2/3)

[[ 2, 0, 0, 0, 0 ],

[ 0, 2, 0, 0, 0],

[ 0, 0, 0, 0, 1],

[ 0, 0, 2, 0, 0],

[ 3, 2, 0, 2, 0]]


플레이어는 상, 하, 좌, 우 총 4개의 행동이 가능합니다.


일반 칸을 이동 시 -1의 Reward 를 받습니다.

벽으로 이동 시도 시 -1의 Reward 를 추가로 받습니다.

폭탄 칸을 이동 시 -10의 Reward 를 받습니다. (게임 끝남)

목적지 도착 시 +100의 Reward 를 받습니다. (게임 승리)



신경망은 현재 FC Layer 를 이용해서 1차원 형태로 펼쳐서 사용하고 있습니다. (5x5 -> 128 -> 64 -> 4)


문제는, 이 게임을 계속 진행했을 때 수렴성을 발견하지 못하고 계속 발산하는 것 같습니다.


학습은 기본적인

Reward + gamma * next_state_Q 값과 state_Q 값과의 평균제곱오차값을 Loss 로 사용했습니다.


오브젝트 배치를 랜덤 배치가 아닌 고정 배치로 테스트를 할 경우 Experience Replay(ER) 가 없을 때 수렴을 하는 것을 발견했고

ER 을 끼면 수렴을 하지 못하는 모습을 보여줍니다.


마치 계속 맵이 바뀌는 미로찾기 강화학습과 비슷하게 생각하면 될 것 같은데,

ER 을 끼고 학습했을 때 랜덤 샘플 배치로 학습을 진행하다보니 +100 Reward 를 얻을 수 있는 경우의 수가 많이 희박해서 그런 것일까요?


아니면 게임판 데이터를 다른 식으로 표현해야 하는지..

무언가 놓치고 있는 부분이 있을까요?