Book Image

Learn Unity ML-Agents ??? Fundamentals of Unity Machine Learning

Book Image

Learn Unity ML-Agents ??? Fundamentals of Unity Machine Learning

Overview of this book

Unity Machine Learning agents allow researchers and developers to create games and simulations using the Unity Editor, which serves as an environment where intelligent agents can be trained with machine learning methods through a simple-to-use Python API. This book takes you from the basics of Reinforcement and Q Learning to building Deep Recurrent Q-Network agents that cooperate or compete in a multi-agent ecosystem. You will start with the basics of Reinforcement Learning and how to apply it to problems. Then you will learn how to build self-learning advanced neural networks with Python and Keras/TensorFlow. From there you move o n to more advanced training scenarios where you will learn further innovative ways to train your network with A3C, imitation, and curriculum learning models. By the end of the book, you will have learned how to build more complex environments by building a cooperative and competitive multi-agent ecosystem.
Table of Contents (8 chapters)

Creating an environment

One thing you may have noticed while looking over the last example was that an ML-Agent environment requires a bit of custom setup. Unity documentation recommends that an ML environment be constructed of Academy, Agent, and Brain objects with associated scripts. There is a Template folder in the ML-Agents project which we will use to configure and set up a simple environment. Let's jump back to the Unity editor and get started setting up our first simple ML environment:

  1. Locate the Template folder in the ML-Agents folder within the Project window of the editor.
  2. Right-click (Command Click on macOS) on the Template folder and select Show in Explorer from the context menu. This will open an explorer window with the files.
  3. Select and copy the Template folder.
  4. Navigate up two levels to the Assets folder and paste the copied folder. This will add the Template folder to the root Assets folder.
  5. Rename the Template folder to Simple.
When you return to the editor, you will see a few namespace errors due to the duplicate Template scripts. We will fix that shortly.
  1. Return to the Unity editor and confirm the folder and files have been copied to the new Simple folder, as shown in the following screenshot:
Verifying that the Simple folder was created
  1. Double-click on the Scene to open it in the editor.

Renaming the scripts

That sets up the simple scene, but you may have noticed that there are still a few duplicated naming errors. We will need to rename the Template scripts in the Simple/Scripts folder. Follow this next exercise to rename each of the scripts:

  1. Open the Scripts folder.
  2. Rename each of the files from Template to Simple, as shown in the following excerpt of the Project window:
Renaming the Template scripts to Simple
  1. Double-click on of the SimpleAcademy script file to open it in your code editor. Rename the class from TemplateAcademy to SimpleAcademy so that it matches the file name, as shown in the following code:
       public class SimpleAcademy : Academy {
  1. Repeat this process for the Agent and Decision scripts. The objects in the scene are still pointing to the template scripts, so we will update that next. Make sure to save all the scripts with your changes before returning to the editor. If all the files are renamed correctly, the naming errors will go away.
  2. Select and rename the Ball3DAcademy to just Academy in the Hierarchy window.
  3. Select the Academy object in the Hierarchy window. Click the Gear icon beside the TemplateAcademy component in the Inspector window and select Remove Component to remove the script.
  1. Click the Add Component button and type Simple in the component search bar, as shown in the following screenshot:
Adding the SimpleAcademy object to the Academy object
  1. Click on the Simple Academy item, as shown in the preceding excerpt, to add the component to the Academy object.
  2. Repeat the process for the Agent object and remove the TemplateAgent script and add the SimpleAgent script.
  3. After you are done, be sure to save the scene and the project.
It is surprising that Unity didn't provide a better set of editor tools to build a new ML Agent environment, at least not at the time of writing this book. In the source code download for this book (Chapter_1/Editor_Tools), an asset package has been provided that can automate this setup for you. We may decide to put this package and some others from this book on the asset store.

That sets up a new ML environment for us to start implementing our own Academy, Agent, and Decision (Brain) scripts. We will get into the details of these scripts in the next section when we set up our first learning problem.