현재 진행중인 내용을 확인해 볼 수 있다.
다음과 같은 테스트를 진행하였다.
- weight 초기화시 양의 실수만 사용
- weight 초기화시 실수를 사용하고, Node마다 ReLU 적용
- weight 초기화시 실수를 사용하고, Node마다 ReLU 적용. workaround(상하좌우 중 1순위 결과가 막히면 2순위, 2순위도 막히면 3순위, 3순위 막히면 4순위) 적용
2,3번에 대한 현재까지의 테스트 결과가, 다음 저장소에 올라와 있다.
지금까지의 결과를 보면서, 다음과 같은 문제점이 발견된다.
- 입력값이 커지면, 결과값도 커짐
- 점수가 높아지고 입력값이 커짐에 따라, 이전의 학습결과가 무용지물이 될 수 있음
- 결과값이 일정 범위 내에서 유지되게끔 하는 게 좋을 것 같음
- 진화를 하는 게 의미가 없어 보임
- 세대를 거듭할 수록 최대점수나 평균 점수가 올라가길 바라지만, 실제 결과는 그렇지가 않음
- 변이만 사용하는 진화 방법에 문제가 있을 수 있음
- 변이의 방법(기존값 무시하고 신규 random값을 부여)에 문제가 있을 수 있음
그래서, 다음과 같은 해결책을 적용해서 다시 테스트해 보려 한다.
- 결과값 범위 유지
- 모든 Node에서, 활성화 함수로 ReLU를 적용한 결과에 다시 log를 적용
- 모든 Node의 결과값이 0, 1로만 나오도록 활성화 함수 수정
- 전처리를 통해 입력값이 모두 0~1사이의 값을 갖도록 표준화
- 진화 방법 조정
- 교차와 변이의 결합
- 변이의 방법 조절(기존값에 적절히 작은 값을 증감)
한편, 이쯤에서 다른 사람들이 구현한 인공지능 사이트도 참고해 보는 것이 좋을 것 같다.
https://codemyroad.wordpress.com/2014/05/14/2048-ai-the-intelligent-bot/
'머신러닝&인공지능' 카테고리의 다른 글
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 |