반응형

원래 유전(진화) 알고리즘을 써서 AI를 만들어보고자 하였지만,

세대를 거듭한다고 해서 테스트 점수가 우상향하지 않는 것 같아서,

일단 지도학습을 통해 다시 시도해 보고 있다.

 

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

 

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

Training Evolution Algorithm Guided Training Verify Verify Results TestModel

truemaxdh.github.io

위 사이트 메뉴 중에서,

[Evolution Algorithm]은 일단 보류중이고,

[Guided Training]이 현재 활성화된 상태이다.

[Verify Results]는 나중에 구현할 계획이며,

[Test Model]은 [Guided Training]의 결과로 생성된 모델을 불러와서 테스트해 볼 수 있다.

 

지도학습 방법을 구현하면서,

먼저 시도했던 유전(진화) 알고리즘이 잘 안되던 이유도 몇가지 알게 되었고,

시행착오를 통해 배우게 된 것들도 있다.

  • 입력값, 출력값, 가중치의 초기값 설정 문제
    • 포화(saturation) 발생 방지를 위해, 적절한 범위의 값을 사용해야 함.
    • 타리크 라시드의 [신경망 첫걸음]이라는 책에 의하면, 가중치의 초기값은 다음 범위가 적절
      • 노드로 오는 연결노드의 갯수에 루트를 씌운 값의 역수
    • ReLU의 경우에는, x<0인 경우 f(x)=0이고, 이를 미분하면 기울기가 0이므로, 역전파에 의한 가중치 업데이트가 이루어지지 않아서 문제가 될 수 있다.
      • 이 문제의 해결을 위해 몇가지 방법이 있겠지만, 그중 한가지는 가중치의 초기값을 모두 양의 실수로 초기화하는 방법이 있다.
    • 입력값의 전처리도 중요하다. 이번 경우에는 입력값의 범위를 0.01 ~ 0.99로 조절하였다.
      • 입력 배열(4*4=16)의 수치를 0은0, 0보다 크면 2의 로그값으로 바꾸고,
      • 최대값을 구한 다음,
      • 각 요소를 최대값으로 나누어 주되, 0은 0.01로, 1은 0.99로 변환
    • 출력 노드는 Left, Up, Right, Down의 4개이며, 실제 움직인 방향의 출력값은 1로, 나머지 방향은 0으로 학습시킨다.

위의 원칙들을 적용해서 테스트중이다.

이렇게 해서 지도학습이 잘 진행된다면,

유전(진화) 알고리즘에도 위의 내용들을 적용해서 다시 시도해 보려 한다.

반응형

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

2048을 Play하는 AI 개발 - 2  (0) 2019.12.01
2048을 Play하는 AI 개발  (0) 2019.11.18
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