2 nd DLCAT 2019.07.04
Contents 1. 2. ML-agents Tutorial 2
3
4
Reinforcement Learning 5
Action (a) Jump, forward, backward, run, Agent State (s) Position of agent, enemy, coins Reward (r) Reward Reward Agent Environment Good Bad 6
Deep Q Network Rainbow DQN Deep Deterministic Policy Gradient Trust Region Policy Optimization Proximal Policy Optimization Go-Explore OpenAI GYM Atari GTA 5 Super Mario Mujoco Malmo 7
환경에대한수정이어려움! 필요한환경이없을수도있음! 8
강화학습을하는사람들의고민 강화학습을테스트할환경제작 9
Unity 3D 및 2D 비디오게임의개발환경을제공하는게임엔진 3D 애니메이션과건축시각화, 가상현실 (VR) 등인터랙티브콘텐츠제작 게임엔진시장의 45% 이상차지, 등록개발자수 500만명이상 10
Unity 11
Unity 2017.09.19 출시 -> 현재버전 0.8 12
Action State, Reward Agent Environment 13
? Action State, Reward Agent Environment 14
? Action State, Reward Agent Environment 15
Action State, Reward Agent Environment 16
유니티환경내에강화학습을위한설정을할수있음 Python과 Unity 환경간통신가능 (state, action, reward) Agent, Brain, Academy로구성 Agent: Agent에대한코드작성, Observation, reward, done에대한코드작성 Brain: Brain을통해 agent를제어하는방법결정및 Observation, action에대한설정가능 Player: 직접사람이플레이할수있는 brain 설정 Heuristic: 사람이설정한규칙을통해 action을선택하는 brain 설정 Internal: 학습된모델을통해 Unity 내부에서환경을플레이하는 brain 설정 External: 외부 Python 코드와 Unity 환경간통신을할수있게하는설정 Academy: Brain을통합관리하며환경에대한다양한설정가능 17
ML-agents 깃허브에서 ML-agents 프로젝트받기 https://github.com/unity-technologies/ml-agents ML-agents 프로젝트의 [UnitySDK 폴더 -> Assets 폴더 ] 내부의폴더를유니티의 Assets 내부에복사 18
Assets 내부의 [ML-Agents 폴더 -> Examples 폴더 -> Template 폴더 ] 의코드들을이용하면편해요! Agent 스크립트는게임내에서제어할대상에게연결 각 Agent 스크립트에해당하는 Brain 할당 빈오브젝트를생성후 Academy 스크립트를연결 Agent 코드빈오브젝트 Brain 19 Agent Academy
Agent 스크립트내부는 4 개의함수로구성 CollectObservations 함수 : 현재의상태로이용할정보들을저장 (ex. 위치좌표 (x, y, z), 각도정보 (x, y, z), 속도등 ) AgentAction 함수 : Action을입력으로받고해당 Action에따라어떻게에이전트를제어할지결정 -> 이동, 회전등등행동을코딩 AgentReset 함수 : 게임한판이끝난경우 (Done) 에이전트에대한설정을코딩 (ex. 위치초기화, 회전초기화 ) AgentOnDone 함수 : 에이전트를더이상사용하지않을때해당함수내부에 Destroy를사용하여에이전트를제거 Inspector View Brain: 해당에이전트를위해사용할브레인을설정 Agent Cameras: 이미지입력을받을경우사용할카메라를설정 Max Step: 게임이 Max Step만큼진행되면게임한판을끝냄! Reset On Done: 이설정이체크되어야 Done이된경우 AgentReset 함수호출 On Demand Decisions: 특정이벤트가발생했을때만액션을위하도록설정 Decision Frequency: 해당스텝마다한번씩액션을취하도록설정 20
Brain 3 가지종류의브레인 Player: 직접사람이플레이할수있는 brain 설정 키보드와액션을직접설정해서에이전트를키보드를제어할수있음 Heuristic: 사람이설정한규칙을통해 action 을선택하는 brain 설정 Decisions 스크립트에상태에대한규칙을설정하고해당규칙에따라액션을반환하도록설정 Training (Internal): Unity 에학습된모델을내장하고환경을플레이하는 brain 설정 ML-agents에서기본적으로제공하는코드로환경을학습하면 nn 파일생성 nn 파일을 training brain에연결해주면학습된대로에이전트가행동 Training (External): 외부 Python 코드와 Unity 환경간통신을할수있게하는설정 Python 코드에 observation, reward, done 정보를전달하고 python 코드로부터 action 정보를받음 21
Brain 브레인설정 ( 모든브레인에공통적으로적용 ) Inspector View Copy Brain Parameters from: 브레인의파라미터복사 Vector Observation Space Size: Vector Observation의크기결정 Stacked Vectors: 설정한스텝만큼 vector 정보를 stack Visual Observation Visual observation 의크기와 grayscale 여부결정 Vector Action 액션의종류및개수결정 -> Action Descriptions 에액션에대한설명작성 22
Brain Player 브레인설정 23
Brain Heuristic 브레인설정 Decision Script 에코딩된 Decision 스크립트파일연결 Training 브레인설정 유니티내부에서사용할 nn 모델연결및연산장치결정 24
Academy 스크립트내부는 3 개의함수로구성 InitializeAcademy 함수 : 환경이처음실행될때딱한번호출되는함수 AcademyReset 함수 : 매에피소드가끝날때마다한번씩호출되는함수 AcademyStep 함수 : 매스텝마다호출되는함수 Inspector View Broadcast Hub: 해당환경에서사용할브레인을추가 Learning brain 의 control 을체크하면 external, 체크하지않으면 internal Max Steps: Global done을위한최대스텝 ( 모든에이전트를초기화 ) Configuration: 화면의크기, 그래픽품질, 화면업데이트주기등결정 Training Configuration: 학습할때환경에대한설정 Inference Configuration: 학습이끝나고테스트할때환경에대한설정 Reset Parameters: 외부 (python) 에서조절할수있는파라미터설정 25
26
: Single Agent VS : Adversarial Agents : Multi-agents : Imitation Learning 27
Agent 코드 Brain 설정 Academy 설정 : Training : Heuristic : Player Agent 28
29
30
31
32
33
34
35
36
37
https://github.com/mljejucamp2017/drl_based_selfdrivingcarcontrol 38
Tutorial 39
인공지능 (RL) 게임개발 40
ML-agents Tutorial Team 민규식정규석신명재이현호윤성훈조동헌 41
Tutorial Discrete Action Continuous Action Adversarial Agents Curriculum Learning Imitation Learning Multi-agents 42
Tutorial Sokoban ML-agents의 example 환경인 GridWorld 환경을수정하여 Sokoban으로변경 Discrete action 환경 파란네모가초록색박스를밀어서 + 에넣는것이목표 박스가 x에들어가거나 agent가 + 나 x에들어가면감점 resetparameter를통해게임판사이즈, + 의개수, 박스의개수, x의개수조절가능 DQN(Deep Q Network) 을이용하여학습수행 43
Tutorial Drone Unity Asset store에서받은드론모델을이용하여제작 드론이하얀구체까지날아가는것이목표 상하좌우, 전후방향으로이동 Deep Deterministic Policy Gradient (DDPG) 알고리즘을통해학습 네트워크에노이즈를섞는방식으로 exploration 수행 44
Tutorial Pong 두개의 agents가서로대결하는환경 각각의 agent에 brain을설정하여학습수행 각막대가공을받아치는것이목표 공을받아치면 +0.5, 공을놓치면 -1, 상대방이공을놓피면 +1의 reward를받음 각각의알고리즘을 DQN으로학습수행 45
Tutorial Sokoban Curriculum 소코반환경을변형하여 curriculum 환경으로제작 학습을진행할수록게임판의크기를늘리고 + 의수와박스의수도함께늘리는방식으로난이도향상 level-0 : "gridsize": 4, "numgoals": 1, "numboxes": 1, "numobstacles": 1 level-1 : "gridsize": 6, "numgoals": 4, "numboxes": 1, "numobstacles": 1 level-2 : "gridsize": 8, "numgoals": 6, "numboxes": 1, "numobstacles": 1 level-3 : "gridsize": 10, "numgoals": 7, "numboxes": 2, "numobstacles": 1 level-4 : "gridsize": 10, "numgoals": 6, "numboxes": 3, "numobstacles": 1 level-5 : "gridsize": 10, "numgoals": 5, "numboxes": 4, "numobstacles": 1 Dueling Double DQN 알고리즘을통해학습 46
Tutorial 47
Tutorial Dogde 환경 파란네모가상하좌우로움직이면서오렌지색공을피하는환경 사람의플레이를 recording demonstration 코드를통해기록 State, action, reward, done 정보를기록하여.demo 파일로저장 Python 상에서해당정보를로드후 Supervised learning 기반학습수행 Action 결과를 softmax를통해확률로변환후확률적으로 action 선택 48
Tutorial 제작된환경 알고리즘 49
Tutorial https://github.com/reinforcement-learning-kr/unity_ml_agents 50
Thank You! https://www.facebook.com/groups/reinforcementlearningkr/ 51