1차 목표
- [x] Env / GUI 환경 괴리 해결
- [x] max tile: 1024 / episode 1000~1500
2차 목표
- [x] 휴리스틱 보상 하나씩 제거 & 성능 유지
- [x] 학습 그래프(Loss, Reward, Max Tile) 이해
- [x] 2048 달성 (에피 수 늘리면 될듯)
- [ ] 4096 달성 (나중에…)
2048 Search
강화학습 Insight
2048 Env 개선 과정
- GitHub에서 star 많은 2048 Gym env 코드 참고하여 구현
- ver1. Illegal move시 바로 종료
- ver2. Illegal move = 10회시 종료 / 페널티 0.0 (기본) ⇒ 이 조건 그대로 내 env에 적용함
- but, 실제 게임 환경과의 괴리 문제 + 학습 불안정 관련 문제
- 대안: 학습시 Illegal move를 아예 필터링하는 방법
- 초반 성능에는 좋지만, 일반화 성능이 매우 떨어지는 문제
- 잘못하면 연산량도 치솟을 수 있기에 선택하지 않음
- 돌파구: 기본 Env에 Action Masking 기법 적용
- Action Masking 단계
- 모델이 모든 선택지를 두고 추정하되, 선택 직전에 Illegal move 필터링을 하고 알려주는 기법
- 실제 게임 환경과 동일하여, ver2의 학습/실제 괴리가 극복됨
- 이후 서치를 통해 이 기법이 agent 성능을 위해 거의 필수적인 기법임을 알게됨
- 이후 기존 Env에 넣은 휴리스틱 보상은 일반화 성능을 위해 제거
To Do
- 시각화 그래프 수정
- [x] 학습 - 액션 마스킹 효과 문구 지우기
- [x] 그래프 깨지는 문구 수정
- [x] core / max tile 그래프 정규화
- [x] 제목 깨지는 문구 수정
- [x] 상태 색 편집
- 휴리스틱 보상 함수 제거하기
- [x] 각각 얼마나 학습에 영향주는지 기록
- [x] Merge는 남기기
- [x] Mono, smooth부터 제거
- [x] Dueling = true 변경 후 성능 확인
- [x] Empty는 제거하거나 점수 줄이기
- 그외
- [x] GUI 게임로직 변경 (액션마스킹 방법으로)
- 과거 기록
- 7.23 기록: Invalid action penalty 적용
- 7.24 기록: Action masking 적용