12. Unity ML-agents
12
Unity ML-agents
유니티 환경 내에 강화학습을 위한 설정을 할 수 있음
Python과 Unity 환경 간 통신 가능 (state, action reward)
Agent, Brain, Academy로 구성
Agent: Agent에 대한 설정, Observation, reward, done 설정
Brain: Brain을 통해 agent에 대한 action 설정
Player: 직접 사람이 플레이 할 수 있는 brain 설정
Heuristic: 규칙을 통해 action을 선택하는 brain 설정
Internal: 학습된 모델을 통해 Unity 내부에서 환경을 플레이하는 brain 설정
External: 외부 Python 코드와 Unity 환경 간 통신을 할 수 있게 하는 설정
Academy: Brain을 통합 관리하며 환경에 대한 다양한 설정 가능
21. Unity ML-agents
21
- Unity ML-agents 는 강화학습에서만 사용할 수 있을까?
- 서로 다른 특성을 가진 공들의 움직임에 대한 데이터가 필요!
- 실제로 공을 굴려볼 수는 없고… 충돌 등 물리적인 부분에 대한 구현도 어렵고…
- 시뮬레이션을 통해 데이터 취득 필요
- C# 으로 데이터를 취득하지는 못하겠고…
- ML agents 를 이용하여 환경 제작 -> 공들의 정보를 python으로 보내고 데이터를 만들자
Unity ML-agents Python .mat .pickle
32. Tutorial
32
Sokoban
ML-agents의 example 환경인 GridWorld 환경을 수정하여
Sokoban으로 변경
Discrete action 환경
파란 네모가 초록색 박스를 밀어서 +에 넣는 것이 목표
박스가 x에 들어가거나 agent가 +나 x에 들어가면 감점
resetParameter를 통해 게임판 사이즈, +의 개수, 박스의 개수,
x의 개수 조절 가능
DQN(Deep Q Network)을 이용하여 학습 수행
https://youtu.be/jlqDBtqgj0c
정규석 윤성훈
34. Tutorial
34
Drone
Unity Asset store에서 받은 드론 모델을 이용하여 제작
Continuous action 환경
드론이 하얀 구체까지 날아가는 것이 목표
상하좌우, 전후 방향으로 이동
Deep Deterministic Policy Gradient (DDPG) 알고리즘을 통해 학습
네트워크에 노이즈를 섞는 방식으로 exploration 수행
https://youtu.be/iTFrt-3T0-k
이현호 조동헌
36. Tutorial
36
Pong
두개의 agents가 서로 대결하는 환경
각각의 agent에 brain을 설정하여 학습 수행
각 막대가 공을 받아치는 것이 목표
공을 받아치면 +0.5, 공을 놓치면 -1, 상대방이 공을 놓
피면 +1의 reward를 받음
각각의 알고리즘을 DQN으로 학습 수행
https://youtu.be/gXHtDkCktfY
민규식 신명재
40. Tutorial
40
Dogde 환경
파란 네모가 상하좌우로 움직이면서 오렌지색 공을 피하는 환경
사람의 플레이를 recording demonstration 코드를 통해 기록
State, action, reward, done 정보를 기록하여 .demo 파일로 저장
Python 상에서 해당 정보를 로드 후 Supervised learning 기반 학습 수행
Action 결과를 softmax를 통해 확률로 변환 후 확률적으로 action 선택
https://youtu.be/uv_J4z7gi70
이현호 정규석
42. Tutorial
42
TwoLeg agent 환경
각각의 다리가 서로 다른 agents
각 다리가 협력하여 앞으로 달리는 것이 목표
Agent의 state는 각 다리 부분과 body의 위치, 속도, 각속도
각 관절의 torque를 action으로 설정
학습 수행 중… ㅠ.ㅠ
민규식 신명재
48. Multi-agents
48
Multi-agents
Multi-agents RL에 대한 연구가 활발하게 이루어지는 중!
하지만 Multi-agents 알고리즘을 테스트 할 수 있는 환경은 아직 부족한 상황
Multi-agents 환경을 Unity ML-agents로 개발 진행!
총 6개 이상의 환경 제작 목표 -> 현재 2개 완성…
Predator-Prey 환경
Zombie Defense 환경
Beehive환경 (제작 중)
To be continued…
더 많은 환경들을 제작하여 Github에 업데이트 및 정리 예정
49. Multi-agents
49
Predator-Prey
다수의 갈색 사자가 하나의 하얀 양을 잡는 환경
사자와 양 모두 학습 가능
State는 현재 각 agent의 위치를 따로 받음 (2개), action은 상하좌우
사자의 경우 양을 잡으면 +1, 벽으로 이동하면 -0.1, 한번 이동하는 경우 -0.01의
reward를 받음
양의 경우 한번 이동하면 +0.01, 벽으로 이동하면 -0.1, 사자에게 잡히면 -1의
reward를 받음
사자가 잘 협력해야 양을 잡을 수 있는 환경
resetParameter를 통해 사자의 수를 2-6까지 변경 가능
51. Multi-agents
51
Zombie Defense
Agent들이 몰려오는 좀비를 총으로 쏴서 막는 환경
각 agent가 할당된 좀비만 공격하여 죽일 수 있음 (협력 필요!)
State는 각 에이전트의 위치와 종류, 그리고 20마리 좀비의 x, y
위치와 좀비의 종류 -> 총 62개의 state
Action: 왼쪽, 오른쪽, 총쏘기
각 agent에 할당된 좀비를 맞추는 경우 +0.1, 할당되지 않은 좀비
를 맞추거나 총이 빗나가는 경우 -0.01, 좀비가 바리케이트에 도
달하는 경우 -5의 reward 받음
Curriculum 방식을 통해 학습 수행 (속도, 스폰 시간)