기존에 작성한 두 개의 블로그 게시물에서 게임이 강화 학습 알고리즘 개발을 진전시키는데 수행할 수 있는 역할이 있다고 언급했었습니다. 유니티는 세계에서 가장 널리 사용되는 3D 엔진 개발업체로 머신러닝 및 게임 분야 사이에서 미래를 그려나가고 있습니다. 머신러닝 연구자가 가장 효과적인 훈련 시나리오를 개발하고 이를 통해 게임 커뮤니티가 최신 머신러닝 기술을 활용할 수 있도록 하는 것이 저희 임무의 핵심입니다. 이를 향한 첫 걸음으로 유니티 머신러닝 에이전트를 소개합니다.
머신러닝은 자율 에이전트에게서 지능형 행동을 끌어낼 수 있는 방식에 변화를 불러오고 있습니다. 과거에는 지능형 행동을 직접 프로그래밍해야 했지만, 이제는 훈련 환경에서 이루어지는 상호작용을 통해 로봇이나 가상 아바타를 비롯한 에이전트에게 훈련을 시키는 방식으로 점점 바뀌고 있습니다. 이 방식은 산업용 로봇, 드론이나 자율 주행 차량은 물론 게임 캐릭터나 적이 어떻게 행동을 해야 할지 학습시키는데 사용됩니다. 이러한 훈련 환경의 질은 에이전트가 학습하는 행동에 중요한 영향을 미치며, 보통 어느 정도 타협이 필요합니다. 가상 환경에서 에이전트를 훈련시키는 시나리오는 보통 특정 환경에 밀접한 연관이 있는 단일 에이전트를 배치하는 것입니다. 에이전트의 행동이 환경의 상태를 바꾸고 에이전트에게 보상을 제공하게 됩니다.
일반적인 강화 학습 훈련 주기
지능형 에이전트를 개발하는데 머신러닝을 활용하려는 사용자가 점점 늘어나고 있는 추세에서, 유니티는 더 유연하고 사용하기 쉬운 시스템을 만들고자 했습니다. 또한, 유니티 엔진과 에디터가 구현하는 섬세한 물리 효과 및 그래픽 효과뿐 아니라 간편하면서도 강력한 개발 도구를 제공하기 원했습니다. 이러한 조합은 다음과 같은 사용자에게 특히 유용합니다.
이 솔루션은 유니티 머신러닝 에이전트(이하 ML 에이전트)라고 하며, SDK의 오픈 베타 버전을 출시했습니다. ML 에이전트 SDK를 사용하면 유니티 에디터로 제작한 게임이나 시뮬레이션을 심층강화학습(Deep Reinforcement Learning), 진화 전략(evolutionary strategies) 등 머신러닝 방법을 사용하기 쉬운 파이썬 API를 통해 지능형 에이전트를 훈련시킬 수 있는 환경으로 전환할 수 있습니다. 유니티 ML 에이전트의 베타 버전은 오픈 소스 소프트웨어로 출시되며, 참고가 될 만한 예제 프로젝트와 기초적인 알고리즘도 포함되어 있습니다. 최초의 베타 릴리스를 사용해 보고 GitHub 페이지에서 다른 사용자들과 적극적으로 의견을 나누어 주시기 바랍니다. ML 에이전트에 관한 더 자세한 내용이 궁금하시다면 이 포스트를 계속 읽어 보세요. 좀 더 자세한 내용을 다루는 참고 자료는 GitHub 위키페이지에서 확인하실 수 있습니다.
ML 에이전트 내부에 학습 환경이 어떻게 구성될 수 있는지 보여줍니다.s Toolkit.
모든 학습 환경에는 다음과 같이 크게 세 종류의 오브젝트가 있습니다.
‘External’로 설정된 브레인에 연결된 에이전트의 상태와 관측값은 External Communicator를 통하여 수집되며, 파이썬 API를 통해 사용자가 선택한 ML 라이브러리에 전달됩니다. 여러 에이전트를 하나의 브레인에 연결할 수 있으면 행동을 배치 방식으로 결정할 수 있어 병렬 컴퓨팅의 장점을 얻을 수도 있습니다. 이러한 오브젝트가 씬 내에서 어떻게 협업하는지 더 알아보려면 유니티 위키 페이지를 참조하세요.
에이전트, 브레인 및 보상이 연결된 방식에 따라 유니티 ML 에이전트를 통해 다양한 훈련 시나리오를 연출할 수 있습니다. 커뮤니티가 앞으로 어떤 기발하고 참신한 환경을 만들어 나갈지 기대가 됩니다. 지능형 에이전트 훈련이 처음이라면 아래 예제가 도움이 될 것입니다. 각 예제의 환경은 프로토타입 형태로 구성되며, ML 에이전트 SDK를 사용하여 구현하는 방법도 설명되어 있습니다.
ML 에이전트는 아카데미/브레인/에이전트 시스템을 통해 훈련 시나리오의 유연성을 높일 뿐만 아니라 훈련 과정의 유연성과 해석력을 향상시키는 다양한 기능을 제공합니다.
각 에이전트 상단에 적혀있는 숫자는 해당 에이전트가 예상하는 보상 기대값을 나타냅니다. 우측에 있는 에이전트가 공을 놓치면 기대값이 0으로 떨어지는데, 이는 현재 에피소드가 곧 종료되어 추가 보상을 기대할 수 없게 되기 떄문입니다.
복잡성이 점차 증가하도록 GridWorld 환경을 다양하게 설정할 수 있습니다.
같은 환경을 보여주는 두 개의 카메라 시점. 이 두 가지 시점을 에이전트에게 보여주면 에이전트는 1인칭 정보 및 지도와 유사한 정보를 활용하여 상대방에게 승리할 수 있는 법을 학습하게 됩니다.
위에서 언급한 것과 같이 유니티 머신러닝 에이전트의 오픈 베타 버전을 출시했습니다. 베타 버전은 GitHub 페이지에서 다운로드하실 수 있습니다. 이번 출시는 단지 시작에 불과합니다. 머신러닝 연구를 위한 플랫폼으로 유니티를 고려하고 있거나 게임 개발 환경에서 어디까지 머신러닝을 활용할 수 있을지 궁금해하시는 모든 분들을 위해 신속한 테스트를 거쳐 추가 기능을 제공할 예정입니다. 이번 베타 릴리스는 일단 전자에 더 집중하였지만 후자를 위한 지원도 점진적으로 늘릴 계획입니다. 또한 사용 사례나 향후 유니티 ML 에이전트에 추가되었으면 하는 기능이 있으면 적극적으로 공유해 주시기 바라며, GitHub Repository를 통한 Pull Request도 언제든지 환영합니다. 의견 및 문의사항은 ml-agents@unity3d.com으로 보내 주시기 바랍니다. 이 프로젝트에 관심이 있으시다면 유니티 머신러닝 팀에 지원해 보세요.
다음에 또 뵙겠습니다!