반응형

현재 진행중인 내용을 확인해 볼 수 있다.

RunningTest

 

https://truemaxdh.github.io/2048-AI/

 

truemaxdh.github.io

GitHub

 

truemaxdh/2048-AI

AI playing 2048. Contribute to truemaxdh/2048-AI development by creating an account on GitHub.

github.com

 

다음과 같은 테스트를 진행하였다.

  1. weight 초기화시 양의 실수만 사용
  2. weight 초기화시 실수를 사용하고, Node마다 ReLU 적용
  3. weight 초기화시 실수를 사용하고, Node마다 ReLU 적용. workaround(상하좌우 중 1순위 결과가 막히면 2순위, 2순위도 막히면 3순위, 3순위 막히면 4순위) 적용

2,3번에 대한 현재까지의 테스트 결과가, 다음 저장소에 올라와 있다.

테스트 결과

 

truemaxdh/2048-AI

AI playing 2048. Contribute to truemaxdh/2048-AI development by creating an account on GitHub.

github.com

지금까지의 결과를 보면서, 다음과 같은 문제점이 발견된다.

  1. 입력값이 커지면, 결과값도 커짐
    • 점수가 높아지고 입력값이 커짐에 따라, 이전의 학습결과가 무용지물이 될 수 있음
    • 결과값이 일정 범위 내에서 유지되게끔 하는 게 좋을 것 같음
  2. 진화를 하는 게 의미가 없어 보임
    • 세대를 거듭할 수록 최대점수나 평균 점수가 올라가길 바라지만, 실제 결과는 그렇지가 않음
    • 변이만 사용하는 진화 방법에 문제가 있을 수 있음
    • 변이의 방법(기존값 무시하고 신규 random값을 부여)에 문제가 있을 수 있음

 

 

그래서, 다음과 같은 해결책을 적용해서 다시 테스트해 보려 한다.

  1. 결과값 범위 유지
    • 모든 Node에서, 활성화 함수로 ReLU를 적용한 결과에 다시 log를 적용
    • 모든 Node의 결과값이 0, 1로만 나오도록 활성화 함수 수정
    • 전처리를 통해 입력값이 모두 0~1사이의 값을 갖도록 표준화
  2. 진화 방법 조정
    • 교차와 변이의 결합
    • 변이의 방법 조절(기존값에 적절히 작은 값을 증감)

 

한편, 이쯤에서 다른 사람들이 구현한 인공지능 사이트도 참고해 보는 것이 좋을 것 같다.

https://codemyroad.wordpress.com/2014/05/14/2048-ai-the-intelligent-bot/

 

2048 AI – The Intelligent Bot

Introduction In this article, we develop a simple AI for the game 2048 using the Expectimax algorithm and “weight matrices”, which will be described below, to determine the best possibl…

codemyroad.wordpress.com

 

반응형

'머신러닝&인공지능' 카테고리의 다른 글

2048을 Play하는 AI 개발 - 3  (0) 2019.12.22
2048을 Play하는 AI 개발  (0) 2019.11.18
2048과 딥러닝  (0) 2016.08.13
ConvNetJS를 이용한 XOR 분류 테스트  (0) 2016.07.20
언어별 딥러닝 라이브러리  (0) 2016.07.15
반응형

다음 책을 읽으면서, 아이디어가 떠올랐다.

- 줄리안 토겔리우스의 '재미나는 생각, AI와 게임'(줄리안 토겔리우스, 에이콘)

  (원제: Playing Smart: On Games, Intelligence, and Artificial Intelligence, Julian Togelius)

 

딥러닝(DeepLearnng)과 진화 알고리즘(Evolutionary Algorithm)을 토대로,

2048을 Play하는 AI를 만들어보고자 한다.

순전히 재미와 호기심으로 시작하는 것이다.

 

책에 의하면, 게임은 AI를 연구, 발전, 테스트하는데 좋은 재료이고,

AI는 게임을 좀더 재밌고 풍성하게 만드는 기반이 될 수 있다.

 

AI 연구에 있어서 2048 게임의 장점은, 다음과 같은 것들이 있다.

  • 격자(grid)의 크기가 4*4이므로, 학습을 위한 입력 요소가 많지 않다.
  • 소스가 공개되어 있다.(https://github.com/gabrielecirulli/2048)
  • 수정과 재배포에 제한이 거의 없는 MIT 라이센스이다.
  • HTML 및 Javascript로 만들어졌다.(웹에서 실행하기에 적절함)

 

진화 알고리즘은, 100개 정도의 딥러닝 샘플 생성후,

각 샘플마다 게임을 끝까지 진행한 후에,

최종 결과(점수)를 기준으로 상위 50개를 선택하고,

선택된 샘플을 임의 변경한 50개를 추가해서 총 100개를 다시 만든 후에,

같은 과정을 반복한다.

 

특별히 짜여진 계획은 없지만,

다음과 같은 단계로 진행하는 게 좋을 것 같다.

  1. 2048 소스 다운로드 및 분석
  2. 2048 소스를 테스트 용도에 맞게 변경
  3. Javascript로 딥러닝 및 진화 알고리즘 구현
  4. 2048 소스와 알고리즘 결합
  5. 결과 보관소를 마련하고, 그곳에 결과가 잘 저장되도록 구현

 

현재 위와 같은 방법으로 구현되어, 테스트를 진행중이다.

GitHub

 

truemaxdh/2048-AI

AI playing 2048. Contribute to truemaxdh/2048-AI development by creating an account on GitHub.

github.com

 

RunningTest

 

https://truemaxdh.github.io/2048-AI/

 

truemaxdh.github.io

 

반응형

'머신러닝&인공지능' 카테고리의 다른 글

2048을 Play하는 AI 개발 - 3  (0) 2019.12.22
2048을 Play하는 AI 개발 - 2  (0) 2019.12.01
2048과 딥러닝  (0) 2016.08.13
ConvNetJS를 이용한 XOR 분류 테스트  (0) 2016.07.20
언어별 딥러닝 라이브러리  (0) 2016.07.15
반응형

2048 게임을 즐기던 중에 문득,

딥러닝을 통해 컴퓨터가 2048 게임을 학습해서 실행해 보면 재밌겠다는 생각을 해 보았다.

딥러닝으로 바둑도 하고, ATARI의 벽돌깨기 게임도 하는 판에,

2048 게임을 못할 것도 없다는 생각에, 한번 시도해 볼까 하다가

혹시나 해서 인터넷을 검색해 보니,

역시나 벌써 누군가가 하고 있는 것을 발견했다.


YouTube

StackOverflow의 질문과 답변

GitHub에 올라온 소스


참고로, 다음 사이트에서는 

웹상에서 2048 게임을 할 수 있다.

Play 2048!


그리고 다음 블로그에는, 딥러닝은 아니지만 

AI를 통해 2048을 Play하는 내용의 글이 연재되어 있다.

An AI for 2048 

반응형

'머신러닝&인공지능' 카테고리의 다른 글

2048을 Play하는 AI 개발 - 2  (0) 2019.12.01
2048을 Play하는 AI 개발  (0) 2019.11.18
ConvNetJS를 이용한 XOR 분류 테스트  (0) 2016.07.20
언어별 딥러닝 라이브러리  (0) 2016.07.15
CodeOnWeb 소개  (0) 2016.07.14

+ Recent posts