Search Unity

기존에 작성한 개의 블로그 게시물에서 게임이 강화 학습 알고리즘 개발을 진전시키는데 수행할 수 있는 역할이 있다고 언급했었습니다. 유니티는 세계에서 가장 널리 사용되는 3D 엔진 개발업체로 머신러닝 및 게임 분야 사이에서 미래를 그려나가고 있습니다. 머신러닝 연구자가 가장 효과적인 훈련 시나리오를 개발하고 이를 통해 게임 커뮤니티가 최신 머신러닝 기술을 활용할 수 있도록 하는 것이 저희 임무의 핵심입니다. 이를 향한 첫 걸음으로 유니티 머신러닝 에이전트를 소개합니다.

지능형 에이전트 훈련

머신러닝은 자율 에이전트에게서 지능형 행동을 끌어낼 수 있는 방식에 변화를 불러오고 있습니다. 과거에는 지능형 행동을 직접 프로그래밍해야 했지만, 이제는 훈련 환경에서 이루어지는 상호작용을 통해 로봇이나 가상 아바타를 비롯한 에이전트에게 훈련을 시키는 방식으로 점점 바뀌고 있습니다. 이 방식은 산업용 로봇, 드론이나 자율 주행 차량은 물론 게임 캐릭터나 적이 어떻게 행동을 해야 할지 학습시키는데 사용됩니다. 이러한 훈련 환경의 질은 에이전트가 학습하는 행동에 중요한 영향을 미치며, 보통 어느 정도 타협이 필요합니다. 가상 환경에서 에이전트를 훈련시키는 시나리오는 보통 특정 환경에 밀접한 연관이 있는 단일 에이전트를 배치하는 것입니다. 에이전트의 행동이 환경의 상태를 바꾸고 에이전트에게 보상을 제공하게 됩니다.

Unity Analytics, Machine Learning, AI

일반적인 강화 학습 훈련 주기

지능형 에이전트를 개발하는데 머신러닝을 활용하려는 사용자가 점점 늘어나고 있는 추세에서, 유니티는 더 유연하고 사용하기 쉬운 시스템을 만들고자 했습니다. 또한, 유니티 엔진과 에디터가 구현하는 섬세한 물리 효과 및 그래픽 효과뿐 아니라 간편하면서도 강력한 개발 도구를 제공하기 원했습니다. 이러한 조합은 다음과 같은 사용자에게 특히 유용합니다.

  • 실제 경쟁 및 협업 상황에서 발생 가능한 복잡한 다중 에이전트 행동을 연구하는 학계 연구원
  • 로봇공학, 자율 주행 차량 등 산업적 활용을 위한 대규모의 머신러닝에 관심 있는 산업 연구원
  • 적극적이고 능동적으로 움직이는 지능형 콘텐츠로 가상 세계를 구축하려는 게임 개발자

 

유니티 머신러닝 에이전트

이 솔루션은 유니티 머신러닝 에이전트(이하 ML 에이전트)라고 하며, SDK의 오픈 베타 버전을 출시했습니다. ML 에이전트 SDK를 사용하면 유니티 에디터로 제작한 게임이나 시뮬레이션을 심층강화학습(Deep Reinforcement Learning), 진화 전략(evolutionary strategies) 등 머신러닝 방법을 사용하기 쉬운 파이썬 API를 통해 지능형 에이전트를 훈련시킬 수 있는 환경으로 전환할 수 있습니다. 유니티 ML 에이전트의 베타 버전은 오픈 소스 소프트웨어로 출시되며, 참고가 될 만한 예제 프로젝트와 기초적인 알고리즘도 포함되어 있습니다. 최초의 베타 릴리스를 사용해 보고 GitHub 페이지에서 다른 사용자들과 적극적으로 의견을 나누어 주시기 바랍니다. ML 에이전트에 관한 더 자세한 내용이 궁금하시다면 이 포스트를 계속 읽어 보세요. 좀 더 자세한 내용을 다루는 참고 자료는 GitHub 위키페이지에서 확인하실 수 있습니다.

학습 환경

Learning Agents, AI, Machine Learning, Unity Analytics

ML 에이전트 내부에 학습 환경이 어떻게 구성될 수 있는지 보여줍니다.

모든 학습 환경에는 다음과 같이 크게 세 종류의 오브젝트가 있습니다.

  • 에이전트 – 각각의 에이전트는 고유의 상태 및 관측 값을 가지고 있고, 환경 내에서 고유의 행동을 하며 환경 내부에서 일어나는 이벤트에 따라 고유의 보상을 받습니다. 각 에이전트의 행동은 해당 에이전트가 연결되어 있는 브레인에 의해 결정됩니다.
  • 브레인 – 각 브레인은 특정 상태와 행동 공간을 정의하고, 연결된 에이전트가 어떤 행동을 취할지 결정합니다. 현재 릴리스에서는 브레인을 다음 네 가지 모드로 설정할 수 있습니다.

◦ External – TensorFlow(또는 기타 원하는 ML 라이브러리)를 사용하여 파이썬 API를 통해 개방형 소켓으로 통신하여 행동을 결정합니다.

◦ Internal(실험 단계) – TensorFlowSharp를 통해 프로젝트에 탑재된 훈련된 모델을 활용하여 행동을 결정합니다.

◦ Player – 플레이어의 입력을 통해 행동을 결정합니다.

◦ Heuristic – 직접 코딩한 동작을 기반으로 행동을 결정합니다.

  • 아카데미 – 특정 씬에 있는 아카데미 오브젝트는 해당 환경에 포함된 모든 브레인을 자식으로 포함하고 있습니다. 각 환경은 환경의 범위를 정의하는 한 개의 아카데미를 포함하고 있으며, 그 정의는 다음과 같은 내용을 포함합니다.

◦ 엔진 설정 – 훈련 및 추론 모드 상에서 게임 엔진의 속도와 렌더링 품질을 설정합니다.

◦ 프레임스킵 – 각 에이전트가 새로운 결정을 내릴 때 생략할 엔진 단계의 개수를 나타냅니다.

◦ 글로벌 에피소드 길이 – 에피소드가 지속될 길이를 의미하며, 에피소드가 이 길이에 도달하면 모든 에이전트가 완료 상태로 바뀌게 됩니다.

‘External’로 설정된 브레인에 연결된 에이전트의 상태와 관측값은 External Communicator를 통하여 수집되며, 파이썬 API를 통해 사용자가 선택한 ML 라이브러리에 전달됩니다. 여러 에이전트를 하나의 브레인에 연결할 수 있으면 행동을 배치 방식으로 결정할 수 있어 병렬 컴퓨팅의 장점을 얻을 수도 있습니다. 이러한 오브젝트가 씬 내에서 어떻게 협업하는지 더 알아보려면 유니티 위키 페이지를 참조하세요.

유연한 훈련 시나리오

에이전트, 브레인 및 보상이 연결된 방식에 따라 유니티 ML 에이전트를 통해 다양한 훈련 시나리오를 연출할 수 있습니다. 커뮤니티가 앞으로 어떤 기발하고 참신한 환경을 만들어 나갈지 기대가 됩니다. 지능형 에이전트 훈련이 처음이라면 아래 예제가 도움이 될 것입니다. 각 예제의 환경은 프로토타입 형태로 구성되며, ML 에이전트 SDK를 사용하여 구현하는 방법도 설명되어 있습니다.

  • 단일 에이전트 – 하나의 브레인에 연결된 하나의 에이전트. 전형적인 에이전트 훈련 방식으로 치킨 게임을 비롯한 모든 싱글 플레이어 게임을 예로 들 수 있습니다. (데모 프로젝트 – “GridWorld”)
  • 동시 단일 에이전트 – 하나의 브레인에 연결된 독립적인 보상 함수를 가지고 있는 여러 개의 독립된 에이전트. 전형적인 훈련 시나리오의 병렬화된 버전으로 훈련 과정의 가속 및 안정화를 꾀할 수 있습니다. 예를 들어 12개의 로봇팔을 훈련시켜 동시에 문을 열게 할 수 있습니다. (데모 프로젝트 – “3DBall”)
    • 적대적 자가 플레이 – 서로 대립되는 보상 함수를 갖고 있으며 하나의 브레인에 연결되어 있고 서로 상호작용하는 두 개의 에이전트. 일대일 게임에서 적대적 셀프 플레이를 통해 에이전트가 가장 완벽한 상대인 자기 자신을 대상으로 훈련하여 기술을 더욱 더 연마할 수 있습니다. 알파고(AlphaGo)를 훈련시킬 때 이 전략이 사용되었으며, 최근에 OpenAI에서 프로 선수를 이긴 Dota 2 에이전트를 훈련시킬 때도 동일한 전략이 사용되었습니다. (데모 프로젝트 – “Tennis”)
    • 협동형 다중 에이전트 –하나 또는 여러 브레인에 연결되어 있으며 보상 함수를 공유하고 서로 상호작용하는 다중 에이전트. 이 시나리오에서는 단독으로 해낼 수 없는 작업을 수행하기 위하여 모든 에이전트가 협동해야 합니다. 예를 들어 에이전트 각각이 일부 정보만 가지고 있기 때문에 서로 정보를 공유하여 작업을 수행하거나 협동하여 퍼즐을 풀어야 하는 환경 등이 있습니다. (데모 프로젝트 추가 예정)
    • 경쟁형 다중 에이전트 – 서로 대립되는 보상 함수를 갖고 있으며 하나 또는 여러 브레인에 연결되어 있고 서로 상호작용하는 다중 에이전트. 이 시나리오에서 에이전트는 서로 경쟁하여 승리를 취하거나 한정적인 자원을 확보해야 합니다. 모든 팀 스포츠가 이 시나리오에 해당됩니다. (데모 프로젝트 추가 예정)
    • 생태계 – 독립적인 보상 함수를 갖고 있으며 하나 또는 여러 브레인에 연결되어 있고 서로 상호작용하는 다중 에이전트. 이 시나리오는 얼룩말, 코끼리, 기린이 함께 살고 있는 사바나와 같이 각기 다른 목표를 가진 동물들이 서로 상호작용하는 작은 세계를 만들거나, 도심에서의 자율 주행 시뮬레이션을 구현하는 경우를 예로 들 수 있습니다. (데모 프로젝트 추가 예정)

     

    추가 기능

    ML 에이전트는 아카데미/브레인/에이전트 시스템을 통해 훈련 시나리오의 유연성을 높일 뿐만 아니라 훈련 과정의 유연성과 해석력을 향상시키는 다양한 기능을 제공합니다.

    • 에이전트의 의사결정 모니터링 – ML 에이전트의 통신은 양방향으로 이루어지기 때문에, 유니티는 Agent Monitor 클래스를 제공하여 유니티 환경 자체에서 정책 또는 수치 출력값 등 훈련된 에이전트의 양상을 표시합니다. 연구자와 개발자는 실시간으로 제공되는 이러한 정보를 바탕으로 에이전트의 행동에서 버그를 더욱 쉽게 수정할 수 있습니다.

Unity Machine learning, AI, Analytics, Learning-Agents

각 에이전트 상단에 적혀있는 숫자는 해당 에이전트가 예상하는 보상 기대값을 나타냅니다. 우측에 있는 에이전트가 공을 놓치면 기대값이 0으로 떨어지는데, 이는 현재 에피소드가 곧 종료되어 추가 보상을 기대할 수 없게 되기 떄문입니다.

  • 커리큘럼 학습 – 에이전트가 훈련 과정 시작부터 복잡한 작업을 학습하기는 일반적으로 쉽지 않습니다. 커리큘럼 학습은 더 효율적인 학습을 위하여 점진적으로 작업의 난이도를 높이는 방식입니다. ML 에이전트는 환경이 초기화될 때마다 사용자 지정 환경 파라미터를 설정하는 것을 지원합니다. 이 기능을 통해 훈련 과정에 따라 난이도 또는 복잡성에 관련된 환경 요소를 동적으로 조정할 수 있습니다.

Unity Analytics, Machine Learning, AI, Unity

복잡성이 점차 증가하도록 GridWorld 환경을 다양하게 설정할 수 있습니다.

  • 복잡한 시각적 관측 – 에이전트가 단일 벡터나 이미지만 관측하는 타 플랫폼과 달리 ML 에이전트는 각 에이전트가 여러 개의 카메라를 활용하여 관측할 수 있도록 합니다. 이를 통해 서로 다른 시점을 보여주는 여러 카메라가 필요한 자율 주행 차량을 훈련시키는 상황이나 공중 및 1인칭 시점을 조합해야 하는 내비게이션 에이전트, 원시 이미지와 깊이 지도나 객체로 구분된 이미지를 동시에 입력받는 에이전트 등에서 여러 시각적 정보를 통합할 수 있습니다.

같은 환경을 보여주는 두 개의 카메라 시점. 이 두 가지 시점을 에이전트에게 보여주면 에이전트는 1인칭 정보 및 지도와 유사한 정보를 활용하여 상대방에게 승리할 수 있는 법을 학습하게 됩니다.

 

  • 모방 학습 (출시 예정) – 스스로 시행착오를 겪게 하여 학습시키는 것보다는 간단하게 에이전트에게 원하는 행동을 보여주는 방법이 더 나은 경우가 많습니다. 향후 출시될 ML 에이전트에서는 모든 상태/행동/보상 정보를 기록하여 모방 학습 등의 지도 학습 시나리오에서 사용할 수 있는 기능을 제공할 예정입니다. 사용자는 모방 학습을 활용하여 에이전트가 특정 환경에서 어떻게 행동해야 할지 시범을 보여 에이전트를 훈련시키거나 강화 학습 과정의 첫 단계를 시작할 수 있습니다.

 

진화하는 플랫폼

 

위에서 언급한 것과 같이 유니티 머신러닝 에이전트의 오픈 베타 버전을 출시했습니다. 베타 버전은 GitHub 페이지에서 다운로드하실 수 있습니다. 이번 출시는 단지 시작에 불과합니다. 머신러닝 연구를 위한 플랫폼으로 유니티를 고려하고 있거나 게임 개발 환경에서 어디까지 머신러닝을 활용할 수 있을지 궁금해하시는 모든 분들을 위해 신속한 테스트를 거쳐 추가 기능을 제공할 예정입니다. 이번 베타 릴리스는 일단 전자에 더 집중하였지만 후자를 위한 지원도 점진적으로 늘릴 계획입니다. 또한 사용 사례나 향후 유니티 ML 에이전트에 추가되었으면 하는 기능이 있으면 적극적으로 공유해 주시기 바라며, GitHub Repository를 통한 Pull Request도 언제든지 환영합니다. 의견 및 문의사항은 ml-agents@unity3d.com으로 보내 주시기 바랍니다. 이 프로젝트에 관심이 있으시다면 유니티 머신러닝 팀에 지원해 보세요.

 

다음에 또 뵙겠습니다!

72 코멘트

코멘트 구독

코멘트를 달 수 없습니다.

  1. Damn that’s cool! :)

    So, what I’ve noticed is that agents have a list of states with a fixed size, which is ok when you have a constant environment like 1 ball and 1 platform that tries to keep the ball on it.

    But how about having enemies which spawn dynamically? Or when these enemies shoot bullets? We’d need a dynamic list of states for that. How would you implement this scenario?

  2. Heads up, you have a dead link:

    > For more information on how these objects work together within a scene, see our wiki page.

    “wiki page” currently points here: https://github.com/Unity-Technologies/python-rl-control/wiki

    That repo doesn’t appear to exist anymore.

  3. I’m happy because this looks cool. But I’m sad because I didn’t think of it first! :'(

  4. Awesome!
    When do we have more algorithms than just PPO?

  5. Thanks for sharing such a wonderful article.
    http://www.broachindia.com/

  6. Hello,
    This seems like a great toolbox for integrating Unity with Python. A quick question though. Any clue when the imitation learning tool would be available?
    Thank you

  7. Thanks for writing this article. I’ve always been interested in A.I. I would love to apply some of this to our Knight O.S. project.
    http://myknightrider2000.blogspot.ca

  8. Hi,
    It’s a great tool and I’ve been really enjoying working with it the last few days.
    Though, while messing around with it, I’ve noticed that the training process itself uses only about 12% of GPU power and around 50% of my cpu.
    Am I missing some feature that would let me to use the GPU to its full potential?

    1. Hi Arthur,

      You are correct in noticing that the reinforcement learning algorithm we use (PPO) isn’t as GPU efficient as it could be. The problem stems from the fact that the network is used in two ways: deciding actions (inference) and training (gradient descent). If the batch size is large enough, the training step can fully utilize the GPU. However, during experience collection, the network is only being used to pick actions, and this is much less computationally efficient. There are possible methods for better utilizing the GPU, such as having separate threads collect experience and update the network. These however add complexity to the system, and require tuning in and of themselves to ensure they are providing the level of benefit desired. It is something we are aware of, and will be keeping in mind as we develop future algorithms.

      1. Thanks for the reply!

        I would like to ask another question, though.
        So far I haven’t been able to successfully train a neural network in any environment other than 3DBall.

        In tennis I got to around 18M steps, and the cumulative reward seems to be stagnant with seemingly random spikes: http://prntscr.com/h4dhaq

        While training with GridWorld it looks like I’ve been getting worse and worse results. So far I’m at 4.5M steps, and the reward is just going down. http://prntscr.com/h4diha

        I tried to mess around with buffer size, batch size and hidden unit amount, but it didn’t seem to make much of a difference.

        What am I doing wrong here?
        Should I just wait for more steps?

        Also, it would be really cool if we could get our hands on the values that were used for training the pre-trained TF models for each of the examples.

  9. Data Science Training In Hyderabad

    10월 25, 2017 2:43 오후

    Hi,
    Thanks for sharing such a wonderful article with us
    We are expecting more articles from this blog

  10. Thank you for the information. Machine learning has its roots in statistics and mathematical optimization. Machine learning covers techniques in supervised and unsupervised learning for applications in prediction, analytics, and data mining. If you want machine learning services. Visit:https://www.usmsystems.com/machine-learning/

  11. Thanks For the Valuable information About Machine Learning and Other Professional Courses Trend Setting Today.
    If Any Doubts regarding Machine Learning Please Visit this Website

    http://www.analyticspath.com/machine-learning-training-in-hyderabad

  12. sorry, i failed to understand but after running the 3DBall training, what’s the outcome from the training / I mean, is there a result file that we can get & reuse ?

    1. Yep! You get a model file that you can add back into the project itself. See the Getting Started Guide for more info: https://github.com/Unity-Technologies/ml-agents/blob/master/docs/Getting-Started-with-Balance-Ball.md#embedding-trained-brain-into-unity-environment-experimental

  13. Just curious. Can I use this on Android, IOS platform?
    Even if it did, I guess with Unity as middle interpreter of python code, it will be overkill for normal phone CPU.

    1. Hi Zara, by using our “Internal” brain, and the TensorFlowSharp plugin, you can put trained brains into projects for Android and iOS. You just won’t be able to do the actual training on those devices. For more information, see here: https://github.com/Unity-Technologies/ml-agents/blob/master/docs/Using-TensorFlow-Sharp-in-Unity-(Experimental).md

  14. I really love this. I’ve been playing with it for the last three days.

    What I really need now, as a ML newb, is a step-by-step guide that answers a few questions. I understand that this isn’t a good place for answering questions. I don’t want answers here. Just hoping that in time these questions will be answered in the documentation section of ml-agents on github. Thanks!

    What is the workflow? When I run the training, do I “load saved model”? Should I only be running a training once? If I run it multiple times does it keep learning? It seems my agent gets WORSE at tasks, not better even though I feel like I’m rewarding correctly. There is clearly some learning going on but if I leave it going overnight (6-8 hours) there doesn’t seem to be any improvement.

    Do I run a training many times in a row by finishing one, then immediately rerunning the PPO script? Or do I need to set everything up. Set the steps to a crazy number. Run once. Export model?

    How do I set up the cameras? Is there more than just adding them to the agent? Do I need to set up the “resolution” stuff in the brain?
    Along with a tuning guide. Steps. Learning rate. What to change if things don’t seem to go right. And how long for simple tasks.

    1. Hi Jeffrey,

      Glad to hear that you are enjoying playing around with it!

      When you run the PPO notebook (or ppo.py) the neural network model will be trained for the number of steps set in max_steps. If you interrupt training, you can set load_model to true, and then continue training. Once you reach the max_steps, if your model isn’t sufficiently trained you can continue training by increasing max_steps. I would recommend looking at the TensorBoard logs though to track performance. If your reward isn’t gradually increasing over time, there may be issues with the reward structure of the environment, or the agent may not be getting the information it needs to solve the task. We have a preliminary “Best Practices” document for creating environments https://github.com/Unity-Technologies/ml-agents/blob/master/docs/best-practices.md , but I agree that it would be a good idea to add a similar page for the training process itself, and that is something we will work on putting together.

  15. This is a great topic to dive into!

  16. swordmaster swordmaster

    10월 13, 2017 3:37 오후

    Great !I developed an asset about machine learning for unity as well :
    https://www.assetstore.unity3d.com/en/#!/content/93236
    This artificial neural networks chose the back propagation algorithm to learn something,and the demo is
    about a car learning how to get out of the maze.

  17. Will there be future training with the teacher? Learning for the known action for the state list. Data, for example, is collected in Player mode. Data type state list -> action list

    1. Hi Sergei,

      This feature is what we are calling “Imitation Learning.” It will be coming in the next release, which we hope to have out in the next few weeks!

  18. I’m trying to fallow the Getting Started with the Balance Ball Example tutorial and I managed to get through the tutorial on how to set up Python/TensorFlow (http://blog.nitishmutha.com/tensorflow/2017/01/22/TensorFlow-with-gpu-for-windows.html) via the tutorial that was linked in the balance ball example tutorial. But when I try to run the jupyter PPO table I get this error :
    ModuleNotFoundError Traceback (most recent call last)
    in ()
    1 import numpy as np
    2 import os
    —-> 3 import tensorflow as tf
    4
    5 from ppo.history import *

    ModuleNotFoundError: No module named ‘tensorflow’

    I’m not sure what I did wrong or what to try to do to fix this :( Any ideas at all would be helpful.

    1. Ok, so I was actually able to get past that last error above. I just did not realize I needed to install tensor into the python folder, my bad. But I do have a another question. I am having trouble observing the training process. I open anaconda and put in the tensorboard –logdir=’summaries line and it runs but I’m not able to do anything else without stopping it and I don’t see anything that shows me how the training is going. I let the training go on for a few minutes and then continued to the last cell and then continue past that and then stop running the table by pressing the interrupt kernel button. I look in the models folder but I don’t see an exported model. I do see model-50000.cptk.index and some other files but not a 3DBall.bytes so I am confused on how to properly end running the cells or if I did something else wrong. Any help would be welcome.

      1. Arthur Juliani

        10월 6, 2017 1:49 오전

        Hi Michael, you need to launch a web browser and navigate to localhost:6006 to view the training information once launching Tensorboard.

        I am unsure why you aren’t seeing the .bytes file. Do you get a message letting you know it was created when you run that cell?

  19. Is there a timeline for supervised learning support? I have an application that would be much easier to train with supervision, and am not sure if I should wait or try to get it to train with the existing RL support.

    1. Arthur Juliani

      9월 30, 2017 5:53 오전

      Hi Andre,

      We are currently actively developing the imitation learning support, and hope to have it out within a few weeks. If you are adventurous, you can check out the dev-broadcast branch of the repository, where we are developing it. The feature allows brain types besides external to “broadcast” their states/actions to the python api for use in supervised learning. Of course, it is still in development so there will likely be bugs. If you happen to find any, please let us know!

      1. I will check it out, thank you!

  20. Arthur,

    Could you help me and stitch together your implementation of A3C algo into this?
    I am looking at it but porting model seems to be above my skillset.
    If not, I would gladly accept a short how-to of how shall I do it. Thanks!

    1. Arthur Juliani

      9월 26, 2017 6:18 오후

      Hi Max,

      We include an implementation of PPO with ML-Agents. PPO is a more reliable and efficient algorithm than A3C, so it is included instead. One difference is that the included PPO isn’t asynchronous, but it could be made to be though some adjustments. https://github.com/Unity-Technologies/ml-agents/tree/master/python

      1. Thanks for pointing me in the right direction!
        I reevaluated my approach and found a way to do my thing with PPO, where I will (maybe, will see how it will work without it) apply GA for evolutionary reasons.

        I have another question tho, when I set 2 brains in academy, I change every “brain_name” to “name” inside “for name in env.brain_names:”, but get this error: ” You have 2 brains, you need to feed a dictionary of brain names a keys, and actions as values”, at line “new_info = trainer.take_action(info, env, name)”. Can you show me how to properly feed it?

        Thanks!

  21. I got the 3DBall project to work using the jupyter notebook.
    But it looks like unity is running at 1 fps. Also it starts in a tiny window,

    Is it supposed to be so slow when learning? I tried on a Nvidia 1060 and 1070

    1. Arthur Juliani

      9월 26, 2017 6:16 오후

      Hi Bart. When training, we speed up the engine to 100x, which causes a drop in frame-rate. Although it looks slow, the engine is actually processing thousands of steps of simulation, and is running correctly.

  22. Oh, …. you just made my day. I was attempting to use Unity a few months ago as the environment in my AI research, but was struggling with implementing the ML algorithms I needed (CNNs, ANNs, etc) with C#. I put it on ice and switched to a home-brew 2D environment in Python on Linux so I could make progress on the AI, keeping basic Unity-like structure so I could switch back at some point easily. Looks like I can switch back now :)

    This is so perfect.
    Thank You!!

  23. Where is sample project files of these games ML used in this blog thread?

    1. Arthur Juliani

      9월 25, 2017 8:12 오후

      Hi Lee,

      You can find the example projects in the repository here: https://github.com/Unity-Technologies/ml-agents .

  24. Exciting direction… Any plans to work with Apple’s ML framework and Swift?

  25. How to get Started with unity Machine Learning

  26. Oh and well I could at least try to help you out if you insist on continuing down this space when you could be spending the money completing features you have been putting off for a couple of years now which are more important…..

    You should talk to some of the colleges that focus on behavioural analysis and study. http://paco.psy.gla.ac.uk/index.php?option=com_jdownloads&view=viewcategories&Itemid=62 is an example there are 2 or 3 focused on this niche of research, that particular one uses mocap systems, taking volunteers to do natural motion, then studying and programming computers to recognize gender, attitude, and emotion from body motion. Another focuses on interaction between humans, and even more on general physics and flow of movement. A last one I try to avoid because it is funded by DARPA and that just spooks me. It is the recognition from a distance project. Ties right into this, and those schools would llikely be happy to provide you with their research, publications, and findings if you in turn expand their knowledgebase and cases by publishing your own findings based on the research guidelines defined in the project licenses to use the mocap databases. AI learning should definately be learning cases of how to react based on subtle actions of the thing it is interfacing against.

  27. Eh this is really interesting stuff, however as a content creation/game development/high end rendering platform which is awesome but has a lot of bugs and a undeserved bad reputation, I really do not thing you need to be here. Besides aren’t you guys afraid of AI…maybe it is time for hollywood to remake the old HAL “Would you like to play a game” ….

    Funny I saw an asset the other day that started with HAL, I don’t even know what it was, I saw that much and changed the page.

  28. Michael Bechauf

    9월 22, 2017 1:17 오전

    Really cool demo! I was able to run the 3DBall code and it worked nicely. A few questions though …

    How do you run the Tennis application? I did not find any instructions, so I assumed it would also require the PPO notebook, but training took a very long time. When I stopped training after 1000 iterations, and tried to persist the binary model, I got the error AttributeError: ‘NoneType’ object has no attribute ‘model_checkpoint_path’. Maybe I forgot something?

    Second, why do you call the internal Brain model experimental? Is that simply because you load the Tensorflow library into the Unity engine which may cause instabilities?

    And finally, what are you plans regarding Unity libraries? Do you intend to develop your own ML models, or is the job of ML-agent essentially to provide convenient bindings to existing ML frameworks?

    1. Arthur Juliani

      9월 22, 2017 6:55 오후

      Hi Michael,

      You are right that training Tennis takes longer – at least 1 million steps. It is often the case that most complex Reinforcement Learning problems take in the millions of steps. For example, many ATARI games take roughly 200 million steps of training to achieve super-human performance.

      In order to create the binary file you need to have at least one model checkpoint saved. To make those saves happen more frequently, you can adjust save_freq in the hyperparameters.

      We refer to internal as “experimental” because it hasn’t been thoroughly tested enough for us to recommend to game developers as a method for actually controlling game-ai in released games. In the coming months we hope to provide a version we feel strongly enough about take the “experimental” tag off.

      With ML-Agents we are currently supporting TensorFlow integration, but if other solutions present themselves in the future we may explore them as well.

  29. I’m currently using V-Rep for my research with RL. The project is game-related, but it’s also related to robotics, which it’s what prevents me from trying Unity for this specific use case. For example, having a NAO robot fully working ready for importing was really important.
    I know it’s not directly related to ML, but do you guys have any plans to expand more towards the field of robotics / having robot models available to researches?
    Having said that, I’ll definitely try it on different projects!

  30. Thats amazing, i have one question, Can I pass a previous made dataset to the brain, lets say for example, I have one script that save all the inputs of my players, and I have access to it, and I want to turn all this input into a dataset, to start to train a brain based on it.

    It is possible ?

    1. Arthur Juliani

      9월 22, 2017 6:56 오후

      Hi Jordy,

      This feature is coming soon. You can read a little more about it above, under “Imitation Learning.”

  31. What about the performance on mobile phones with games that contains huge number of states? A game like Poker for example have a huge amount of states and it has a partial observable environment were the agent can’t see the opponent’s cards. Is it possible to make use your ML for a game like Poker on mobile platforms?

    1. Arthur Juliani

      9월 22, 2017 7:05 오후

      Hi Ramy,

      This is a good question! The state-size of the problem doesn’t necessarily increase the complexity of the model. For example, learning from an 8-bit 128x128x3 pixel image contains a huge state-space 256^49152, yet we can use convolutional networks with a few layers to learn to generalize between them. A network like that can actually run relatively easily on a phone.

      Of course, on the other side of that is something like AlphaGo, which ran on a supercomputer… I think for many games though it will be possible to distill the important information into a relatively small network which can generalize within the domain. Especially as smartphones begin to integrate more powerful ML-specific hardware, like Apple is doing with iPhone X.

  32. Hi, when machine learning is run? in Editor or Runtime or both?
    Also can it be done offline?

  33. Can I use PyTorch instead of TensorFlow?

    1. Arthur Juliani

      9월 22, 2017 7:06 오후

      Hi,

      You can definitely use PyTorch for training! The only thing that won’t be possible is to embed the trained PyTorch model back into the Unity game/simulation itself.

  34. do we need python language knowledge for using ml-agent ?

    1. Good question. Right now we are including a pre-made reinforcement learning algorithm called PPO with ML-Agents. You should be able to use it to train simple agents without needing to understand how to modify it yourself.

      We understand though that many Unity game developers mainly have expertise in C#, so we are exploring ways to enable developers to train agents without the need to manually interact with python.

      1. Thank you for the answer.
        Really hope you’ll adapt the feature in C#.

        Right now, I am stuck at the “Installing Dependencies” step and sent an email for details.

  35. Until now I had only seen the Udacity self driving car demo that also worked with a socket connection. I could only get it to run on my old MacBook tough. Also I did the training on a cloud instance

    https://medium.com/towards-data-science/introduction-to-udacity-self-driving-car-simulator-4d78198d301d

    Really looking forward to running the projects form this blogpost as well.

  36. Im having an issue with the installation of tensorflow, I’m running Windows 8.1 64bit Python 3.6.1 64bit anaconda 3
    https://drive.google.com/open?id=0B6Px6xu8RYExa2M2cG5BeFBSOE1iTkNRcDRpY1lqaVNkMEtR

  37. Great !
    How are trained brains saved ?

    1. Arthur Juliani

      9월 20, 2017 6:56 오후

      If you use TensorFlow to create the neural network, the saved Brain is saved as a TensorFlow model, which can be converted to a .bytes file, and embedded into the Unity project directly. For more information, check out this walkthrough: https://github.com/Unity-Technologies/ml-agents/wiki/Getting-Started-with-Balance-Ball.

  38. I must yes, it’s Good

    But the Question here is Why is that Unity is Copying OpenAI strategy in Unity as is, AI learning from players is a Maths project from Dota2 But there are flaws with the system learning as with the kind of Pitch one has made

  39. Does this work on Windows too or Linux only? (Sorry if asking stupid question :D:D)

    1. Arthur Juliani

      9월 20, 2017 6:38 오후

      We are targeting support for Windows, Mac, and Linux (Plus eventually mobile and console). Currently Mac and Linux are the more heavily tested environments. If you encounter an issue on Windows, please let us know here: https://github.com/Unity-Technologies/ml-agents/issues.

      1. It seems like a good timing for a official release of the Linux editor :)

  40. Very cool project!!
    I’m looking foward to supports for (spoken) language learning.

    1. Arthur Juliani

      9월 20, 2017 6:36 오후

      Hi! Unity actually already has a solution for speech recognition in games: https://labs.unity.com/article/speech-recognition-and-vr . I hope that is what you are looking for!

  41. Perfect! I have done my Machine Learning Subject Project in Game Machine Learning… I didn’t quite get anything sophisticated… I wish Unity Machine Learning would have introduced 5 months ago.🤔😥😍

  42. Perfect! I have done my Machine Learning Subject Project in Game Machine Learning… I didn’t quite get anything sophisticated… I wish Unity Machine Learning would have introduced 5 months ago.🤔😥

  43. Very cool, I was already wanting to do a game that implemented reinforcement learning in Unity and this will go a long way towards that. In my case the agent would start off with a trained behavior with the player being able to modify the behavior as part of the gameplay.

  44. Great stuff but I wish to see more examples of applications for this agents.

    1. Arthur Juliani

      9월 20, 2017 6:31 오후

      More demo projects and videos are definitely on the way! We are also interested in sharing example projects that others might make.

  45. Ai and an external database can be good for automatically adjust the starting rendering settings looking to the player hardware when the game starts.

  46. kamran bigdely shamloo

    9월 19, 2017 6:39 오후

    This is immensely useful for game development and AI researchers. Unity is going the right direction.

  47. Cannot wait to see the Ecosystem demos!