링크 : https://blogs.unity3d.com/kr/2017/09/19/introducing-unity-machine-learning-agents/
요것 좀 공부해봐야겠다.
유니티 머신 학습 에이전트 소개
Arthur Juliani , 9 월 19 일, 2017
이전 두 블로그 항목에는 강화 학습 알고리즘의 개발을 주도하는 게임이 있다는 것을 암시했습니다. 세계에서 가장 인기있는 제작 엔진 인 Unity는 기계 학습과 게임의 교차점에 있습니다. 가장 강력한 교육 시나리오를 갖춘 기계 학습 연구자가 최신 기계 학습 기술을 활용할 수있게함으로써 게임 커뮤니티에 다시 돌아갈 수 있도록하는 것이 우리의 사명에 중요합니다. 이 노력의 첫 걸음으로 우리는 Unity Machine Learning Agents 를 소개하게 된 것을 기쁘게 생각합니다.
교육 지능형 에이전트
기계 학습은 우리가 자율적 인 에이전트에서 지능적인 행동을 얻는 방법을 변화시키고 있습니다. 과거에는 행동이 직접 코딩되었지만 교육 환경에서 상호 작용을 통해 에이전트 (로봇 또는 가상 아바타)에게 점점 더 많이 가르쳐졌습니다. 이 방법은 산업용 로봇, 무인 항공기, 자율 주행 차량에서부터 게임 캐릭터 및 상대방에 이르기까지 모든 행동을 학습하는 데 사용됩니다. 이 교육 환경의 품질은 학습 할 수있는 행동의 유형에 중요하며, 종종 만들어야 할 종류 또는 종류의 절충안이 있습니다. 가상 환경에서 에이전트를 교육하는 전형적인 시나리오는 단단히 결합 된 단일 환경과 에이전트를 갖는 것입니다. 에이전트의 동작은 환경 상태를 변경하고 에이전트에게 보상을 제공합니다.
단일 분석, 기계 학습, 인공 지능
일반적인 강화 학습 학습주기.
Unity에서 우리는 지능형 에이전트 개발에 기계 학습을 적용하는 데 관심이있는 성장하는 그룹에 더 큰 유연성과 사용 편의성을 제공하는 시스템을 설계하고자했습니다. 또한 Unity Engine 및 Editor에서 제공하는 고품질의 물리 및 그래픽과 간단하지만 강력한 개발자 컨트롤을 활용하면서이 작업을 수행하려고했습니다. 우리는이 조합이 다른 솔루션이하지 못하는 방식으로 다음 그룹에게 이익이 될 수 있다고 생각합니다.
• 현실적인 경쟁 및 협동 시나리오에서 복잡한 다중 에이전트 행동을 연구하는 학술 연구자.
• 로봇 공학, 자율 주행 차량 및 기타 산업 응용 분야에 대한 대규모 병렬 교육 체제에 관심있는 업계 연구자.
• 지능형 에이전트로 가상 세계를 채우는 데 관심이있는 게임 개발자.
유니티 머신 학습 에이전트
우리는 솔루션 인 Unity Machine Learning Agents (ML-Agents)를 오늘 부르며, 오늘 우리의 SDK의 오픈 베타 버전을 공개하게되어 기쁩니다! ML-Agents SDK는 연구원과 개발자가 Unity Editor를 사용하여 만든 게임과 시뮬레이션을 단순한 Python API를 통해 심층 강화 학습, 진화 전략 또는 기타 기계 학습 방법을 사용하여 교육 할 수있는 환경으로 변환 할 수있게합니다. 우리는이 베타 버전의 Unity ML-Agents를 오픈 소스 소프트웨어로 발표 할 예정입니다. 예제 프로젝트와 기본 알고리즘을 사용하여 시작할 수 있습니다. 이것이 초기 베타 릴리스이므로, 우리는 피드백을 적극적으로 찾고 있으며 GitHub 페이지 에 관심있는 사람들의 참여를 장려 합니다 . ML-Agents에 대한 자세한 내용은 아래에서 계속 읽으십시오! 더 자세한 문서는 GitHub Wiki를 참조하십시오.
학습 환경
학습 에이전트, 인공 지능, 기계 학습, 단일 분석
ML-Agents 내에서 학습 환경을 구성하는 방법을 시각적으로 묘사 한 것입니다.
학습 환경 내의 세 가지 주요 객체는 다음과 같습니다.
• 에이전트 - 각 에이전트는 고유 한 상태 및 관측 집합을 가지며 환경 내에서 고유 한 작업을 수행하고 환경 내의 이벤트에 대해 고유 한 보상을받을 수 있습니다. 상담원의 행동은 연결된 두뇌에 의해 결정됩니다.
• 두뇌 - 각 두뇌는 특정 상태와 행동 공간을 정의하며, 각각의 연결된 에이전트가 취할 행동을 결정할 책임이 있습니다. 현재 릴리스는 두 가지 모드 중 하나로 설정되는 Brains를 지원합니다. ◦ External - Python API를 사용하여 열린 소켓을 통한 통신을 통해 TensorFlow (또는 선택한 ML 라이브러리)를 사용하여 동작을 결정합니다.
◦ 내부 (실험적) - 작업 결정은 TensorFlowSharp 를 통해 프로젝트에 포함 된 숙련 된 모델을 사용하여 수행됩니다.
◦ 플레이어 - 액션 결정은 플레이어 입력을 사용하여 결정됩니다.
◦ 지능형 - 행동 결정은 손으로 코딩 된 동작을 사용하여 수행됩니다.
• 아카데미 (Academy) - 한 장면 내의 아카데미 객체에는 환경 내의 모든 두뇌가 포함됩니다. 각 환경에는 다음과 같은 환경의 범위를 정의하는 단일 아카데미가 있습니다. ◦ 엔진 구성 - 교육 및 추론 모드에서 게임 엔진의 속도 및 렌더링 품질.
◦ Frameskip - 새로운 결정을 내리는 각 에이전트 사이를 건너 뛰는 엔진 단계 수.
◦ 전체 에피소드 길이 - 에피소드의 지속 시간입니다. 도달하면 모든 상담원이 완료로 설정됩니다.
외부로 설정된 두뇌를 가진 모든 에이전트의 상태와 관찰은 외부 커뮤니케이터에 의해 수집되어 선택한 ML 라이브러리를 사용하여 처리하기 위해 Python API에 전달됩니다. 여러 에이전트를 단일 한 두뇌로 설정하면 일괄 처리 방식으로 작업을 결정할 수 있으므로 지원되는 경우 병렬 계산의 이점을 얻을 수 있습니다. 이러한 개체가 장면 내에서 함께 작동하는 방법에 대한 자세한 내용은 wiki 페이지를 참조하십시오 .
유연한 교육 시나리오
Unity ML-Agents를 사용하면 상담원, 두뇌 및 보상이 어떻게 연결되어 있는지에 따라 다양한 교육 시나리오를 사용할 수 있습니다. 우리는 지역 사회가 창조하는 참신하고 재미있는 환경의 종류를 보게되어 기쁩니다. 교육 지능형 에이전트를 처음 사용하는 사람들에게 영감을 줄 수있는 몇 가지 예가 있습니다. 각각은 ML-Agents SDK를 사용하여 어떻게 생성 할 수 있는지에 대한 설명과 함께 프로토 타입 환경 구성입니다.
• 단일 에이전트 - 단일 한 두뇌에 연결된 단일 에이전트입니다. 에이전트를 훈련시키는 전통적인 방법. 예는 치킨과 같은 싱글 플레이어 게임입니다. (데모 프로젝트 포함 - "GridWorld")
• 동시 단일 에이전트 - 하나의 두뇌와 연결된 독립적 인 보상 기능을 갖춘 여러 독립 에이전트. 기존 교육 시나리오를 병렬화 한 버전으로, 교육 프로세스의 속도를 높이고 안정화 할 수 있습니다. 예를 들어 한 번에 12 개의 로봇 팔을 훈련시켜 문을 동시에 열 수 있습니다. (데모 프로젝트 포함 - "3DBall")
• Adversarial Self-Play - 하나의 두뇌에 연결된 역 보상 기능을 가진 두 개의 상호 작용하는 에이전트. 2 인칭 게임에서 적의 셀프 플레이는 에이전트가 점점 더 숙련되고 항상 완벽하게 일치하는 상대를 가질 수있게합니다. 이것은 AlphaGo를 교육 할 때 사용 된 전략이었으며 최근에는 인간이 뛰는 1v1 Dota 2 에이전트 를 교육하기 위해 OpenAI에서 사용했습니다. (데모 프로젝트 포함 - "테니스")
• Cooperative Multi-Agent - 하나 또는 여러 개의 다른 두뇌에 연결된 보상 기능을 갖춘 여러 개의 상호 작용하는 상담원. 이 시나리오에서는 모든 에이전트가 단독으로 수행 할 수없는 것보다 작업을 수행하기 위해 함께 작업해야합니다. 예를 들어, 각 에이전트가 부분 정보에만 액세스 할 수있는 환경이 있습니다.이 정보는 작업을 수행하거나 공동으로 퍼즐을 풀기 위해 공유해야합니다. (곧 데모 프로젝트가 시작됩니다)
• Competitive Multi-Agent - 하나 또는 여러 개의 다른 두뇌에 연결된 역 보상 기능을 가진 여러 상호 작용하는 에이전트. 이 시나리오에서 상담원은 경쟁에서이기거나 제한된 리소스를 확보하기 위해 서로 경쟁해야합니다. 모든 팀 스포츠는이 시나리오에 속합니다. (곧 데모 프로젝트가 시작됩니다)
• 생태계 - 하나 또는 여러 개의 다른 두뇌에 연결된 독립적 인 보상 기능을 갖춘 여러 상호 작용하는 에이전트. 이 시나리오는 얼룩말, 코끼리, 기린이있는 사바나, 도시 환경 내에서의 자율 주행 시뮬레이션과 같이 서로 다른 목표를 가진 동물이 상호 작용하는 작은 세계를 만드는 것으로 생각할 수 있습니다. (곧 데모 프로젝트가 시작됩니다)
추가 기능
ML-Agents에는 Academy / Brain / Agent 시스템이 제공하는 유연한 교육 시나리오 외에도 교육 과정의 유연성과 해석 가능성을 개선하는 다른 기능이 포함되어 있습니다.
• 모니터링 에이전트의 의사 결정 - ML-Agents에서의 통신은 양방향 거리이기 때문에 Unity 환경에서 정책 및 값 출력과 같은 훈련 된 에이전트의 측면을 표시 할 수있는 Unity의 Agent Monitor 클래스를 제공합니다. 이러한 출력을 실시간으로 제공함으로써 연구원과 개발자는 에이전트의 행동을보다 쉽게 디버깅 할 수 있습니다.
유니티 머신 학습, 인공 지능, 분석, 학습 - 에이전트
각 상담원 위는 상담원이 예상하는 미래의 보상 금액에 상응하는 금액 견적입니다. 올바른 에이전트가 공을 놓친 경우 값 예상치는 0으로 떨어집니다. 예상치가 곧 종료 될 것으로 예상되므로 추가 보상이 없습니다.
• 커리큘럼 학습 - 에이전트가 교육 과정을 시작할 때 복잡한 작업을 배우는 것은 종종 어렵습니다. 커리큘럼 학습은보다 효율적인 학습을 가능하게하는 과제의 어려움을 점차적으로 증가시키는 과정입니다. ML-Agents는 환경이 재설정 될 때마다 사용자 정의 환경 매개 변수 설정을 지원합니다. 이를 통해 어려움이나 복잡성과 관련된 환경의 요소를 교육 진행 상황에 따라 동적으로 조정할 수 있습니다.
Unity Analytics, 기계 학습, AI, Unity
복잡성이 증가하는 GridWorld 환경의 가능한 다양한 구성.
• 복잡한 시각 관찰 - 에이전트의 관찰이 단일 벡터 또는 이미지로 제한 될 수있는 다른 플랫폼과 달리 ML-Agent는 여러 카메라를 에이전트 당 관찰에 사용할 수 있습니다. 이를 통해 상담원은 여러 시각적 스트림의 정보를 통합하는 방법을 배울 수 있습니다. 서로 다른 시점의 여러 카메라가 필요한자가 운전 차량을 교육하거나 항공 및 일인칭 비주얼을 통합해야하는 탐색 에이전트 또는 에이전트는 원시 시각 입력뿐만 아니라 깊이 맵 또는 객체 세그먼트 화 된 이미지를 모두 사용합니다.
동일한 환경에서 두 개의 다른 카메라 뷰. 둘 모두 에이전트에 제공되면 상대방을 물리 치기 위해 작업에 대한 일인칭 정보와 맵형 정보를 모두 활용하는 법을 배울 수 있습니다.
• 모방 학습 (출시 예정) - 시행 착오를 통한 방법을 통해 배우려고 시도하기보다는 에이전트가 수행하기를 원하는 행동을 단순히 설명하는 것이 더 직관적입니다. 다음 릴리스에서 ML-Agent는 모방 학습과 같은 감독 학습 시나리오에서 사용하기 위해 모든 주 / 행동 / 보상 정보를 기록 할 수있는 기능을 제공합니다. 모방 학습을 활용하여 플레이어는 에이전트가 환경에서 어떻게 행동해야하는지에 대한 시연을 제공 한 다음 이러한 데모를 활용하여 독립 실행 형으로 또는 강화 학습 프로세스의 첫 단계로 에이전트를 교육 할 수 있습니다.
진화하는 플랫폼
위에서 언급했듯이, 오늘 GitHub 페이지 에서 다운로드 할 수있는 Unity Machine Learning Agents의 공개 베타 버전을 공개하게 된 것을 기쁘게 생각 합니다 . 이번 릴리즈는 시작일 뿐이므로 신속하게 반복하고 Machine Learning 연구를위한 플랫폼으로서 Unity에 관심이있는 분들과 게임에서 Machine Learning의 잠재력에 중점을 둔 분들을 위해 추가 기능을 제공 할 계획입니다. 개발. 이 베타 릴리스는 이전 그룹에 더 초점을 맞추었지만, 우리는 후자의 유스 케이스에 대한 지원을 점점 제공 할 것입니다. 위에서 언급했듯이 우리는 특히 Unity ML-Agents의 향후 릴리스에 포함 된 사용 사례 및 기능에 대해 듣고 싶습니다. GitHub 저장소에 대한 요청 풀링을 환영합니다. 의견 및 생각을 공유 하시려면 ml-agents@unity3d.com 으로 언제든지 문의하십시오. 프로젝트가 관심을 불러 일으킨 다면 Unity Machine Learning 팀에 가입 하십시오 !
'C# > Winform' 카테고리의 다른 글
Visual Studio 에서 TFS(Team Foundation Server) 연결하기 (0) | 2017.10.10 |
---|---|
Visual Studio Community 2017 다운로드 링크 (0) | 2017.10.09 |
(C#) 병렬처리 테스트 방법 (0) | 2017.09.20 |
(.NET) ConcurrentDictionary<TKey, TValue> (0) | 2017.09.17 |
(.NET) ExpandoObject (0) | 2017.09.17 |