반응형

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

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
반응형

올림픽의 꽃이 마라톤이라면,

프로그래밍의 꽃은 게임이라고 생각한 적이 있다.

게임은 프로그래밍의 여러 요소들 뿐 아니라

음악, 디자인과 같은 예술적인 요소까지도 포함하기 때문이다.

이제 게임은 AI와도 뗄래야 뗄 수 없는 관련을 가지고 있다.

아니, 이전부터 그래왔다.

 

이 책은, 두 가지 흥미로운 분야인 게임과 AI가

어떻게 서로서로 밀접한 연관이 있는지 알게 해주는 책이다.

게임은 AI를 연구하고 이해하는데 도움이 되고,

AI는 게임을 보다 재밌게 만드는데 도움이 된다.

이 책에는 이에 대한 흥미로운 사례들이 많이 나온다.

 

AI에 대해서는, 대략 다음과 같이 나눌 수 있다고 한다.

  • 내로 AI(Narrow AI) : 특정 과제에 특화된 AI
  • 제너럴 AI(General AI) : 인간 수준의 인지 및 학습능력, 이해력을 가지고 다양한 과제를 통합적으로 수행할 수 있는 AI
  • 슈퍼 AI(Super AI) : 모든 분야에서 인간보다 뛰어난 AI

 

이 분류에 따르자면, 현재까지 개발된 AI는 모두 특정 과제에 특화된 AI, 즉 내로 AI라고 할 수 있다.

그리고 이 분류에 따르면, 게임에 들어가는 MiniMax, A*, MCTS(몬테카를로 트리 탐색) 및 여타 알고리즘도

내로 AI의 범주에 들어간다고 할 수 있다.

따라서, 게임에는 AI가 이전부터 사용되고 있었던 셈이다.

 

게임과 AI와의 관계는 다음과 같이 나누어서 생각해 볼 수 있다.

  • 게임에 있어서의 AI
  • AI에 있어서의 게임

게임에 있어서의 AI는, 게임내 NPC의 움직임 등의 차원을 넘어서서

게임을 설계하고 레벨을 진화시키는 것까지도 바라볼 수 있게 한다.

AI에 있어서의 게임은, AI가 게임에 도전하면서

어느 정도까지 진보되었는지 확인하고 벤치마크하는 도구로 게임을 활용할 수 있다.

예를 들어, 자율운행과 관련된 AI를 개발한다고 할 때,

매번 알고리즘을 개선할 때마다 차량을 만들어서 테스트하기에는

시간과 비용이 너무 많이 들어간다.

하지만 차량을 시물레이션하는 게임을 통한다면,

훨씬 빠르고 적은 비용으로 테스트를 할 수 있다.

이 부분에 대해서는, 저자가 직접 경험담을 소개하기도 한다.

 

그리고, 위 두가지를 결합함으로써 인간의 지능을 보다 깊이 이해할 수 있고,

그런 이해를 바탕으로 보다 발전된 AI를 만들 수 있다.

이 책이 그 길을 안내해 준다.

반응형
반응형

이 책은, 비디오 게임 역사에 있어서 기념비적인 역할을 한

기술적 발전의 장본인들 및 게임 개발자들을 중심으로 

이야기를 전개한다.

 

저자는, 비디오 게임의 시초를

칼 페르디난트 브라운의 음극선관 발명으로 이야기한다.

이것이 훗날 TV에 사용되는 '브라운관'의 시초이다.

이후 제2차 세계대전 및 냉전 시대를 거치면서,

처음에는 초보적인(물론 당시로서는 대단한) 게임이 나오기 시작하는 한편,

앨런 튜링, 존 폰 노이만등을 시작으로 컴퓨터 기술 발전의 씨앗이 싹튼다.

또한 일본에서도, 전후 빠친코 열풍에 이어,

한국전쟁중 주일미군을 위한 주크박스 수입 사업을 통해

'서비스 게임즈'라는 회사가 두명의 미국인에 의해 생겨나는데,

훗날 '세가(SEGA)'로 이름이 바뀐다.

이후 트랜지스터가 발명되고, 이무렵 황무지에 가깝던 캘리포니아가

싷리콘밸리로 변하는 과정이 시작된다.

또한 일본에서도, 오늘날의 소니에 해당하는 회사를 통해

소형 트랜지스터 라디오가 제작되어 판매된다.

또한 이무렵 타자기가 키보드로 사용되기 시작하고, 최초의 마우스도 발명된다.

이후 하드웨어의 발전에 맞추어 비디오 게임도 진화해 가기 시작한다.

1960년대 몇개의 점 내지는 선으로 이루어진 핑퐁과 같은 게임부터 시작해서,

오늘날의 멀티플랫폼 게임에 이르기까지,

많은 걸출한 인물들이 등장하고 많은 회사들이 등장한다.

리차드 게리옷 일명 로드 브리티쉬, 미야모토 시게루, 스티브 잡스, 스티브 워즈니악 등

내가 익히 알고 있던 이름들도 있지만, 모르던 인물들도 여럿 등장한다.

회사들은, 아타리, 세가, 닌텐도, 마이크로소프트, 페어차일드 등이 등장하고,

게임으로서는 핑퐁, 스페이스 인베이더, 팩맨, 울티마 시리즈, 헤일로,

GTA, 마리오 브라더스, 젤다의 전설, 포켓몬, 툼 레이더 등이 등장한다.

책을 통해, 내가 모르던 인물들, 게임들, 회사들을 알게 되는 과정도 재밌었다.

 

그리고 책을 통해 느꼈지만, 비디오 게임 역사의 주요한 축은

사실상 미국과 일본이었던 것 같다.

책을 통해 등장한 인물이나 게임들 중에,

다시금 확인해보고 싶은 내용을 추려 보면 다음과 같다.

니마트론

맨발의 겐

드래프츠

틱택토 OXO(동그라미와 가위)

힘의 균형

미로 속의 생쥐

스페이스워

마그나복스 오디세이

갤럭시 게임

(아타리)탱크

아타리VCS(아타리2600)

브레이크아웃

스페이스 인베이더

스페이스 워즈

애스터로이즈

스피드 프릭

스타워즈

미스 팩맨

갤럭시안

레이다스코프

동키콩

미사일 커맨드

템페스트

아이, 로봇

드래곤스 레어

리처드 개리엇(로드 브리티시)

이스케이프

조크

미스터리 하우스

드래곤 퀘스트

메이즈 워

존 카맥

소니 더 헤지혹

모탈 컴뱃

리썰 엔포서

나이트 트랩

슈퍼마리오 카트

비례축소

그랜트 테프트 오토

헤일로:전쟁의 서막

마인크래프트

반응형
반응형

'테트리스'를 모르는 사람은 없을 것이다.

네개의 타일로 구성된 도형이 위에서 아래로 떨어지는 동안,

위치를 조절하고 회전시키면서 빈틈 없이 쌓아 나가는 게임이다.

빈틈 없이 쌓여진 줄은 화면에서 사라지고,

그 보상으로 점수가 올라간다.

 

'펜틱스'(영어로 Pentix)라는 게임은, '테트리스'와 유사한 게임인데,

차이점은 도형이 5개의 타일로 구성된다는 것이다.

그러다 보니, 줄을 완성시키는 것이 

'테트리스'에 비해 훨씬 어렵다.

테트리스에 자신 있는 사람이라도,

펜틱스에서 좋은 결과를 올리기는 힘들 것이다.

 

그다지 대중화된 게임은 아닌 듯 하여,

앱으로 출시된 것도 많지는 않은 것 같다.

 

그래서 취미로 한번 만들어서

구글 플레이스토어에 올려 보았다.

Crayon Pentix

 

원래 Simple Pentix, Crayon Pentix 등의 이름으로 

2016년에 구글 앱스토어에 출시한 게임인데,

이번에 업데이트하려 하였으나 release key를 분실하여

다시 만들어 올렸다.

그리고, 음악과 몇가지 편의기능을 좀더 추가하였다.

이제 진정한 게임개발자로 데뷔한 느낌이 든다.

반응형

+ Recent posts