레플리
글 수 27

신경망 Q-Learning으로 구현한 오목 게임

조회 수 15636 추천 수 0 2017.03.29 00:00:30


이전에 올렸던 DQN으로 구현한 캐치게임을 수정하여 오목게임을 구현해보았습니다. 입력은 10*10이고 히든레이어는 2개의 층으로 구성되었습니다. 출력 역시 10*10인데 각 행동에 대한 Q값을 나타냅니다.

 

양쪽 플레이어가 번갈아 수를 두는데 두번째 플레이어는 돌의 상태를 반전하여 입력으로 이용합니다. 그렇게 하여 각 플레이어 마다 따로 학습하지 않고 하나의 모델을 사용하도록 하였습니다.

 

게임에 이겼을 경우 1의 보상값을 받습니다. 그런데 너무 학습이 느려서 자기 돌과 인접한 위치일 경우 0.05의 보상값을 추가로 주었습니다.

 

 

 

솔직히 생각했던 것만큼 학습이 잘 되지 않았습니다. 다층신경망을 딥러닝 CNN으로 변경해 보았지만 마찬가지였습니다. 행동이 100개로 너무 많은게 가장 큰 이유가 아닐까 합니다.

 

딥마인드가 했던 아타리 게임은 행동이 몇개 되지 않아서 패턴을 어느정도 일반화 시킬 수 있습니다. 하지만 오목은 각 위치마다 정교하게 수를 두어야 하기 때문에 Q-Learning으로는 적합하지 않는 듯 합니다. 알파고처럼 MCTS같은 방법이 기본적으로 필요할 것 같습니다.

 

 

 

https://github.com/deepseasw/OmokQLearning

 

위의 링크에서 소스 코드를 확인하실 수 있습니다. 실행 방법은 다음과 같습니다.

 

< 다층신경망 버전 >

python OmokTrain.py -> 훈련

python OmokPlay.py -> 게임 실행

 

< 딥러닝 버전 >

python OmokTrainDeep.py -> 훈련

python OmokPlayDeep.py -> 게임 실행

 

 

 

< 인공지능 개발자 모임 >

- 페이스북 그룹에 가입하시면 인공지능에 대한 최신 정보를 쉽게 받으실 수 있습니다.

https://www.facebook.com/groups/AIDevKr/

 

엮인글 :
List of Articles
제목 글쓴이 날짜 조회 수sort
신경망 Q-Learning으로 구현한 오목 게임 깊은바다 2017-03-29 15636
강화학습 Q-Learning과 DQN에 대한 설명 깊은바다 2017-03-27 9924
텐서플로우에서 DQN 강화학습으로 캐치게임 구현 file 깊은바다 2017-03-18 6860
DQN 강화학습으로 슈퍼마리오 인공지능 구현 깊은바다 2017-10-30 2728
강화학습 관련 노하우 정리 깊은바다 2019-07-29 2688
tensorflow-js로 만들어본 RL 예제: 2. Deep-sarsa 깊은바다 2018-07-27 2528
강화학습 기반의 자율적인 행동 학습 file 깊은바다 2016-03-24 2521
MDP 기반의 스케줄링 구현 file [1] 깊은바다 2016-03-24 2122
딥 강화학습으로 퐁 게임 학습 file 깊은바다 2017-03-13 1963
딥 강화학습 쉽게 이해하기 [2] 깊은바다 2017-02-28 1928
새로운 강화학습 방식인 니마시니 알고리즘 깊은바다 2018-06-03 1589
스타2 강화학습 튜토리얼 [2] 깊은바다 2018-02-04 1533
강화학습과 DQN 소개 깊은바다 2017-10-05 1365
웹브라우저에서 자율주행차 강화학습 프로젝트 [2] 깊은바다 2018-06-21 1255
데미스 하사비스의 카이스트 강연 - 아타리 게임 DQN과 알파고의 원리 깊은바다 2019-07-24 1202