일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 딥러닝
- Machine learning
- Python
- cs231n
- 그리디
- 스택
- DP
- 정렬
- 백준
- 7569번
- 중앙갑
- BFS
- datascience
- Anti Cheat
- Queue
- Game Data Analysis
- anomaly detection
- 큐
- Stack
- ML
- Journal Review
- p-value
- Deeplearning
- AA test
- 알고리즘
- 자료구조
- 구현
- c++
- 통계
- classification
Archives
- Today
- Total
Software Hyena::
CPPN2GAN: combining compositional pattern producing networks and GANs for large-scale pattern generation (2020, GECCO) 본문
Journal Review
CPPN2GAN: combining compositional pattern producing networks and GANs for large-scale pattern generation (2020, GECCO)
bluehyena 2023. 6. 21. 20:04반응형
요약
- 기존 PCG 기법은 작은 세그먼트 형태의 레벨에서 주로 작동함
- GAN을 사용해 여러 세그먼트를 생성하고 이를 하나로 결합해 일관된 전체적인 패턴을 생성하는 것이 목표
- 서로 다른 세그먼트는 부드럽게 난이도 증가, 혹은 반복 구조, 대칭적이 되도록
- 이러한 용도로 많이 사용되는 (패턴 생성) Compositional Pattern Producing Networks)를 바탕으로 함
- Direct2GAN과 CPPN2GAN 사이의 비교 실험을 진행하는 것으로 보임
- 레벨의 커버리지 면적이 떨어진다고 함
- 임의의 레벨 크기에 확장되지 않는다고 함
- 게임 레벨 이외에도 다른 분야에 관련 있을 수 있다 함
정리
- CPPN을 이용해 LVE를 생성하고 LVE를 입력으로 GAN을 사용하는 느낌
- 젤다와 마리오에 대해 실험 진행
- 마리오의 경우 전체 레벨을 구성하는데 X좌표만 필요함
- 따라서 CPPN의 입력은 단일 값임
- 출력은 마리오의 경우 30개로 이루어진 latent vector
- 젤다의 경우 전체 레벨이 미로와 같은 느낌을 줘야 함
- 따라서 GAN은 개별 방 생성, CPPN이 이런 문제를 해결함
- x와 y축 그리고 radial distance가 입력으로 들어감
- 출력은 10 짜리 latent vector와 추가적인 6개
- 방 존재 여부, 각 방향 문 존재 여부, 시작/끝 우선 순위 결정
- 여러 가지 문의 종류를 구현하기 위해
- -1, 0 은 일반 문, 0, 0.33 몹 처치 열리는 문, 폭탄 문, 잠김 문으로 구성
- 열쇠는 문 개수 만큼 무작위로 레벨에 배치
- 이때, 열쇠 배치 난수 생성기의 시드는 해당 문의 출력 비트 표현을 사용
- 유전자형을 형질로 매핑하는 데 결정론적이기 위해?
- 시작/끝 방 값이 제일 작은 곳이 시작 방, 큰 곳이 최종 목표 방
- 마리오의 경우 전체 레벨을 구성하는데 X좌표만 필요함
- 이들이 Direct2GAN을 비교 대상으로 삼은 이유는 CPPN2GAN의 진화 방식과는 달리 여러 latent vector로 구성된 유전체를 직접 진화시키는 케이스가 필요했기 때문
- Direct2GAN은 세그먼트의 개수 S와 latent vector의 크기 Z에 따라 S*Z 개의 유전자 벡터를 진화시킴
- 이때 각 레벨 생성 시 GAN에는 분리된 입력으로 들어감
- 이러한 방식은 서로 다른 세그먼트를 하나로 결합하기 위한 규칙이 필요함
- 따라서 마리오는 좌에서 우로, 젤다는 좌에서 우 그리고 위에서 아래로 다 탐색해야 함
- 방대한 유전자는 큰 탐색 공간을 유발해 탐색에 어려움
- MAP-Elites를 기반으로 CPPN을 발전시킴
- 각 속성 별 가장 적합한 맵을 ‘바구니’에 저장하고 더 적합한 맵이 있으면 대체함
- 그런데 이런 방식은 동일 속성에 대해 다양한 맵을 생성하기에 부적합하지 않을까
- variation이 작아질 거 같은 느낌?
- 논문에서는 의미 있는 다양성을 지원하기 위해 고유한 binning 체계와 적합도 측정 방법을 사용했다고 하긴 함
- 마리오의 경우 다음과 같이 속성이 정의됨
- 장식 빈도: 비표준 타일의 비율 (부술 수 있거나, 파이프, 적)
- 공간 커버리지: 마리오가 서 있을 수 있는 타일의 비율
- 난이도: 적은 음의 값으로 강화 아이템은 양의 값을 가짐
- 이는 세그먼트 간에 합산되어 점수를 매김
- 내부 실험을 통해 적합한 binning 범위를 발견
- 플레이 가능한지 확인하기 위해 적합도를 계산함
- 이는 레벨을 클리어하기 위한 가장 짧은 경로
- 목적은 경로 길이를 최대화
- 경로 탐색은 a* 사용
- 젤다의 경우 다음과 같은 속성이 있는 것으로 보임
- 물 타일 비율, 벽 타일 비율, 도달 가능한 방의 수
- 방이 도달 가능한 경우 시작 방 혹은 도달 가능한 방과 연결
- 물과 벽 비율은 도달 가능 방에 대해서만 고려
- 적합도는 시작에서 목표까지 최단 경로를 통해 방문한 도달 가능한 방의 비율
- 목적은 방문 방의 비율을 늘리기 위해
- 탐험이 게임의 중요한 요소이기 때문
- 물 타일 비율, 벽 타일 비율, 도달 가능한 방의 수
- 각 속성 별 가장 적합한 맵을 ‘바구니’에 저장하고 더 적합한 맵이 있으면 대체함
- 마리오 결과 비교
- 결과를 보면 Direct2GAN은 높은 난이도의 맵 생성에 어려움을 겪음
- 그런데 사실 CPPN2GAN도 그리 좋은 성능을 보이는 거 같지는 않음?
- 그리고 둘 다 공간 커버리지가 낮으면서도 장식 빈도가 높은 레벨을 발견하지 못함
- 이는 장식 빈도가 높아지면 자연스럽게 공간 커버리지가 높아지기 때문
- 결과를 보면 Direct2GAN은 높은 난이도의 맵 생성에 어려움을 겪음
- 젤다 결과 비교
- Direct2DGAN은 도달 가능한 방이 많은 맵 생성에 어려움
- 물과 벽에 대한 비율 언급이 있는데 썩 모르겠다
- 적합한 난이도 생성을 위해서는 CPPN이 맞음
- 그러나 다양성을 위해서는 Direct가 더 좋다고 함
- 비교하자면
- CPPN은 확실하게 이어짐
- 그리고 각각의 방은 일단 완성된 방임
- Direct는 다양성이 높음
- 다양한 방 패턴이 생성됨
- CPPN은 확실하게 이어짐
- 레벨 생성 부분에서도 지역과 전체의 다양성 혹은 어떤 관계 특성 같은 거에 대해 다뤄도 좋을 듯
반응형