유니티가 엔진의 머신 러닝 기술을 최초로 선보이는 세미나를 21일 구글 캠퍼스에서 최초로 개최했다.

머신 러닝은 컴퓨터가 학습할 수 있도록 하는 알고리즘, 또는 기술을 개발하는 분야이다. 머신 러닝은 데이터를 인간이 먼저 처리한 뒤, 컴퓨터가 데이터의 특징을 분석하고 모은다. 이후 컴퓨터가 새로 입력된 이미지나 데이터의 특징을 가려 답을 이끈다. 지난 이세돌 9단과 대결해서 이긴 알파고가 머신 러닝으로 바둑을 연마했다.

유니티는 복잡한 프로그래밍 과정 없이 쉽고 편리하게 다양한 인공지능 프로그램과 게임을 개발할 수 있는 SDK '유니티 머신 러닝 에이전트(ML 에이전트)'를 제공하고 있다. 이날 행사에서 유니티는 ML 에이전트를 소개하고 다양한 적용 사례를 선보였다. 특히 머신 러닝 연구에서 가장 어렵다고 알려진 시뮬레이션과 가상 환경 테스트를 손쉽게 사용하고, 모방학습과 강화학습을 통해 다양한 산업군에서 적용될 수 있는 활용법을 제공했다.


■ 게임 테스트도 이제 머신 러닝으로 - 수천 명이 수천 시간 테스트한 효과

▲ 제프리 쉬 유니티 시니어 프로젝트 매니저

제프리 쉬(Jeffrey Shih) 유니티 시니어 프로젝트 매니저는 “머신 러닝은 현재 전 세계에서 가장 ‘핫’한 기술이지만, 많은 회사가 머신 러닝을 사용하는 방법과 결과 분석을 어려워한다”라며 유니티가 ML 에이전트를 도입한 배경을 설명했다.

그는 유니티의 머신 러닝을 소개하기 위해 한 개발자가 앱을 만드는 상황을 가정했다. 이 개발자는 서울의 건물들을 인식하는 앱을 만들고 싶어 한다. 건물을 3D 이미지로 인식하고, 위치 정보를 가져오는 기술은 이미 쉽게 사용할 수 있다. 문제는 앱이 3D 이미지와 위치 정보를 바탕으로 ‘이것은 건물이다’라고 인식하게 만드는 방법이다. 이 과정에서 머신 러닝이 쓰인다.

머신 러닝을 사용하기 위해서는 많은 데이터가 필요하다. 실제의 정보가 많다면 좋지만, 현실적으로 어려우므로 개발자는 신세틱 데이터(synthetic data, 인위적으로 만든 정보)를 생성해 머신 러닝을 학습시킨다. 애플의 얼굴 인식, 아마존의 알렉사, 테슬라의 자율주행이 이 방식으로 머신 러닝을 진행했다. 그리고 제프리 쉬는 이 방법을 사용할 때 유니티로 손쉽게 환경을 꾸밀 수 있다고 전했다.

그의 소개에 따르면, 유니티로 머신 러닝을 하기 위해선 먼저 많은 콘텐츠가 필요하다. 유니티는 자체적으로 에코 시스템을 구축해 많은 양의 콘텐츠를 보유했으며, 사용자는 여러 에셋과 자료를 손쉽게 받고 적용할 수 있다. 다음으로 콘텐츠를 유니티 내의 가상환경에 불러온 뒤, 빌드를 통해 수백만 번 실행한 시뮬레이션 데이터를 RGB 이미지부터 머신러닝 모델 자체의 신세틱 데이터를 얻을 수 있다.

▲ 유니티 ML 에이전트를 활용하는 과정

현재 유니티 ML 에이전트는 베타 버전으로, 제프리 쉬는 2019년 2분기 이내에 정식 버전을 선보일 것이라 예상했다. 또한 유니티는 동시에 여러 머신 러닝 데이터를 얻을 수 있도록 클라우드 시뮬레이터를 준비하고 있다. 클라우드 시뮬레이터를 통해 개발자는 직접 인프라를 구축하지 않아도 많은 신세틱 데이터를 기대할 수 있다.

이어서 제프리 쉬는 많은 유니티 엔지니어가 게임 개발에 엔진을 사용하는 만큼, 게임에서의 머신 러닝 적용 사례를 소개했다. 일반적으로 게임 테스트는 개발 과정에서 가장 어려움을 겪는 단계다. 제한된 사람, 시간, 돈, 환경에서 테스트를 하므로 기대하는 결과도 제한적일 수밖에 없다. 미국의 경우 QA 테스터 1명의 시간당 20달러가 소요된다. 이 때문에 인디 게임의 경우 QA를 제대로 거친 작품이 3%의 불과하기도 하다.

만약 게임 테스트에 머신 러닝을 적용한다면, 수천 명의 가상 플레이어를 만들어 수천 시간 테스트할 수 있기에 자세한 분석과 상세한 리포트를 기대할 수 있다. 자금이 부족한 인디 게임사, 1인 개발자 역시 좋은 QA 정보를 가질 수 있다.

간략한 유니티 ML 에이전트 소개가 끝난 뒤, “유니티 ML 에이전트가 게임 난이도 조정에 기여할 수 있나?”는 물음에 제프리 쉬는 “어떤 문제를 해결하고 싶은지 고민하는 게 우선”이라고 답했다. 이어서 그는 “사람이 하는 플레이를 머신 러닝이 모방하게 하고, 강화 학습을 통해 다양한 사례를 시뮬레이션한다면 좋은 결과를 얻을 것”이라 전했다.

한편, 유니티 ML 에이전트는 ‘유니티 엔진 2017.1’ 버전부터 사용할 수 있다.


■ 머신 러닝에 필요한 다양한 환경 - 유니티는 이미 갖추고 있다

▲ 오지현 유니티 에반젤리스트

오지현 유니티 에반젤리스트는 먼저 “머신 러닝을 제대로 사용하기 위해서는 다양한 텍스처와 그래픽, 환경 등이 필요하다”라고 전하며 “이미 에셋 스토어에 다양한 자료가 쌓인 유니티는 캐주얼, 실사풍은 물론 물리 엔진 시스템까지 완비했다”라고 소개했다. 이미 테스트에 필요한 수많은 자료가 있기에 다양한 테스트가 가능하다는 설명이다.

이어서 그는 아무것도 없던 유니티 개발 환경으로 시작해 에셋 스토어에서 우주선 모델을 내려받은 뒤 간단한 머신 러닝 작업을 직접 시연했다. 이 시연에서 인공지능은 초기에 미숙한 운전을 보였으나, 이후 점차 나아지는 모습을 보였다. 시연 뒤 오지현 에반젤레스트는 “유니티에 있어서는 전문가지만 인공지능은 잘 모른다. 그러나 나 역시 간단한 작업만으로도 머신 러닝 테스트가 가능하다”고 전했다.

그의 설명에 따르면 기본적으로 유니티의 머신 러닝은 디스크리트(discrete)와 컨티뉴(continue)로 나뉜다. 디스크리트는 턴제 게임, 바둑, 장기와 같이 명확하게 나뉜 경우를 머신 러닝할 때 쓰인다. 컨티뉴는 레이싱, 액션 게임처럼 이어진 정보를 학습하기 적합하다.

'유니티 ML 에이전트’의 과정은 먼저 테스트 환경을 만들고서 에이전트를 학습시킨다. 한 개, 또는 다수의 에이전트는 브레인에 속하고, 이 브레인은 아카데미에 속해 머신 러닝이 진행된다. 아카데미에 수집된 데이터는 파이썬으로 이전해 데이터를 추출할 수 있게 된다.

그는 가상 환경에 다양한 변수를 추가한다면, 자동차 자율주행 테스트 역시 머신 러닝할 수 있다고 전했다. 이어서 현실과 가상 환경의 차이는 변수를 얼마나 다양하게 설정하냐에 따라 달라질 수 있다고 덧붙였다. 자율주행 외에도 유니티는 이미 훌륭한 VR, AR 개발 환경을 갖추어서 시뮬레이션 역시 다양하게 시도할 수 있다.

현실에서 자율주행 테스트를 하기엔 많은 제약이 있다. 또한, 현실에서는 현실에서 일어날 수 있는 극단적인 상황을 시험할 수 없다. 예를 들어 자동차와 사람의 충돌은 실험할 수 없다. 그러나 유니티 ML 에이전트와 같이 가상 환경을 만든다면, 현실보다 더 다양한 상황을 테스트하고 데이터를 얻을 수 있어 효과적이다.


■ 유니티를 몰랐던 인공지능 개발자 - "레고를 맞추듯 사용하기 편했다"

▲ 민규식 한양대학교 미래자동차공학과 연구원

민규식 한양대학교 미래자동차공학과 연구원은 유니티 ML 에이전트를 활용한 경험을 소개했다. 민규식 연구원은 지난해 ‘머신러닝 에이전트 챌린지’에서 장애물을 피하고 보상 아이템을 획득하는 자율주행 자동차 시뮬레이션을 개발해 ‘크리에이티브 어플리케이션 어워드’를 수상한 바 있다.

그는 자율주행 자동차 연구를 위한 환경을 만들기 위해 유니티를 처음 접했다. 인공지능 연구는 할 수 있었지만 유니티를 사용할 줄 몰랐던 민규식 연구원은 공식 홈페이지의 튜토리얼 프로젝트를 따라 하며 시작했다고 전했다. 약 2주간 튜토리얼을 따라 한 결과 연구를 위한 환경 구성을 할 수 있었다고 한다.

민규식 연구원의 말에 따르면 강화학습 연구자는 테스트할 환경이 고민거리다. 현재 강화학습은 드론, 전력 사용 감소, 채팅 봇, 자율주핵, 주식, 게임 등 다양한 산업에서 연구 중이다. 그런데 좋은 강화학습 알고리즘이 있어도 환경이 없어서 테스트를 못 한 경우가 많았다. 그는 강화학습 연구자들의 고민을 ‘유니티 ML 에이전트’가 해결한 덕에 테스트 환경이 좋아졌다고 전했다.

민규식 연구원은 유니티를 사용해본 적이 없고, C# 언어에 두려움을 느끼는 개발자에게 "나 역시 유니티를 따로 안 배웠고, C#이 무섭다"라며 유니티를 통해 쉽게 인공지능 연구를 이어갈 수 있다고 조언했다. 끝으로 그는 ‘유니티 ML 에이전트’가 ‘머신 러닝의 민주화를 이루었다’라고 먼저 사용해본 소감을 정리했다.