오늘은 좀 양이 많고, 이론적으로 살펴보는 내용이라 얼마나 정리할 수 있을지 모르겠네요.
영어 공부 한다는 생각으로 차근차근 풀어보겠습니다.
The Unity Machine Learning Agents Toolkit (ML-Agents Toolkit)
등을 Python API를 통해서 지원한다고 합니다.
Neuroevolution은 첨 들어봐서 검색좀 해봤는데 위키 신경망의 구조를 바꾸는 학습? 인거 같은데, 잘 모르겠습니다.
그 뒤로는 다양한 state-of-the-art 기술들을 제공하고 있으며, 좀 더 편하게 다룰 수 있도록 환경이나 세팅을 제공하고 있다는 내용과 함께, 요 ML-Agents를 다루려고 하는 사람이 어떤사람인가에 따라서 설명할 내용이 꽤 다양할거라 생각하여 이 overview 페이지를 제공한다고 하네요.
ML-Agents는 아래 3가지에 대한 이해가 충분할 수록 더욱 훌륭한 도우미가 될것입니다.
목차는 크게 9개(많다...), 각 파트에 세부 내용이 설명되있는 구성입니다.
여기서는 전쟁게임의 NPC가 어떻게 움직이는가를 중심으로 내용을 풀어가는데요.
상황설정
메딕의 행동을 정의해보면
이러한 행동을 종합해보면, 메딕은 주변 환경에 대한 속성을 측정할 수 있어야 합니다
이러한 상황정보를 바탕으로 다음 행동을 결정해야 합니다
ML-Agents에서는 이러한 NPC들(Agents)의 행동을 다양한 방법으로 학습시키고자 하며, 그를 위해 다음과 같은 3가지 요소를 정의합니다 (environment)
Observations : 환경에 대해서 메딕이 인지한 사항들. 이는 수치일 수 있고 시각정보일 수도 있습니다. 수치 정보는 전장에서 Agent가 획득(인지)되는 다양한 수치화된 정보를 뜻합니다. 시각 정보는 Agent의 카메라를 통해서 입력되는 순간 순간의 정보를 뜻하는데요. 이 정보는 전체 씬이 표현하는 정보에 비하면 일부의 정보인지라 혼란이 발생할 수 있습니다. (10+2 플레이어가 시각적으로 확인되는 정보, 더 나아가 맵 상에 구현된 모든 환경에 비하면, Agent의 시각정보는 일부에 불과합니다). 예를 들어서 Agent의 시야로 인지할 수 없는 적군의 정보는 획득할 수 없는거죠
Actions : 액션은 Agents와 Environment의 복잡도에 따라서 연속적(continuous)일 수 있고, 이산적(discrete)일 수도 있는데요. 만약 게임 환경이 격자형 방식으로 구성되있다면, 이동 명령은 상하좌우의 4가지로 적용될 수 있을겁니다. 하지만 맵이 복잡하며, 이동에 대한 자유도가 높다면 2가지 정보가 조합된 연속 액션이 적합할 거에요. (방향과 속도)
Reward signals : 메딕이 얼마나 적절한 행동을 했는지를 정의하는 스칼라 값. 보상은 항상 제공되기 보다는 행동이 발생했을때 그 행동이 좋은 행동인지 나쁜 행동인지 판단하여 제공됩니다. 만약 메딕이 죽는다면, 매우 큰 마이너스 보상을 받을테고, 반대로 아군을 회복시켰다면 높은 보상을 받게되겠죠. 지원이 부족해서 상처입은 아군이 죽는다면 이때도 마이너스 보상이 부여될겁니다. 보상은 게임의 목적이 Agent에게 어떻게 전달되는지, 이에 따라 이 보상을 극대화 하기 위해서 어떻게 최적의 행동을 수행해야 할지 정의하게 됩니다.
위 3가지 요소들을 정의함으로써 학습을 시작하게 됩니다. 학습은 보상의 최대화 하기 위해서 관찰된 정보를 바탕으로 최적의 액션을 선택해야 하는데요. 이렇게 학습된 행동 패턴을 강화 학습에서는 policy라고 부릅니다. 관찰을 통해 획득한 정보를 바탕으로 액션을 정의하는 기준이라 할 수 있죠. 이러한 policy를 배워 나가는 과정을 training phase라 하고, 학습된 policy를 사용해서 NPC를 움직이는 환경을 inference phase라 합니다.
Key Components 부터는 다음에 이어서 작성