File size: 8,877 Bytes
05c9ac2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# λͺ¨λ°©νμ΅μ ν΅ν μμ΄μ νΈ νμ΅
μμ΄μ νΈκ° μνμ°©μ€λ₯Ό ν΅ν΄ μ€μ€λ‘ νμ΅νλ κ²λ³΄λ€ λ¨μν μμ΄μ νΈκ° μννκΈ°λ₯Ό μνλ νλμ μ°λ¦¬κ° μλ €μ£Όλ κ²μ΄ λ μ§κ΄μ μΌ μ μμ΅λλ€. μμλ³ NPCλ₯Ό νμ΅νκΈ° μν [μ€ν μμ](ML-Agents-Overview.md#running-example-training-npc-behaviors) λ¬Έμ λ΄μ©μ λν΄ μκ°ν΄λ³΄κ² μ΅λλ€. 보μ ν¨μλ₯Ό μ΄μ©νμ¬ μμλ³μ νλμ κ°μ μ μΌλ‘ νμ΅νλ κ²μ΄ μλλΌ κ²μμμ μ»μ΄μ§ κ΄μΈ‘ (observation)κ³Ό κ²μ 컨νΈλ‘€λ¬λ₯Ό ν΅ν΄ μ»μ΄μ§ νλλ€ (actions)μ μ€μ λ°μ΄ν°λ₯Ό ν΅ν΄ μμλ³μ νλμ κ²°μ νλλ‘ νμ΅ν©λλ€. λͺ¨λ°©νμ΅ (Imitation Learning)μ μ€μ νλ μ΄λ₯Ό ν΅ν΄ μ»μ΄μ§ κ΄μΈ‘κ³Ό νλ λ°μ΄ν° μμ μ΄μ©νμ¬ μμ΄μ νΈμ μ μ±
μ νμ΅ν©λλ€. [λΉλμ€ λ§ν¬](https://youtu.be/kpb8ZkMBFYs).
## μλ² (Demonstration) λ°μ΄ν° κΈ°λ‘
μ λν° μλν°λ₯Ό μ΄μ©νμ¬ μμ΄μ νΈμ νλ μ΄λ₯Ό κΈ°λ‘νκ³ μμ
μΌλ‘ μ μ₯νλ κ²μ΄ κ°λ₯ν©λλ€. μ΄λ° νλ μ΄ λ°μ΄ν°μλ κΈ°λ‘μ μ§ννλ λμμ κ΄μΈ‘, νλ κ·Έλ¦¬κ³ λ³΄μ μ λ³΄κ° ν¬ν¨λ©λλ€. μ΄κ²λ€μ λ°μ΄ν°λ₯Ό ν΅ν΄ κ΄λ¦¬κ° κ°λ₯νλ©° Behavioral Cloningκ³Ό κ°μ μ€νλΌμΈ νμ΅μ μ¬μ©λ μ μμ΅λλ€. (μλ λ΄μ© μ°Έκ³ )
μμ΄μ νΈμ νλ μ΄ λ°μ΄ν°λ₯Ό κΈ°λ‘νκΈ° μν΄μλ μ¬(Scene)μμ `Agent` μ»΄ν¬λνΈλ₯Ό ν¬ν¨νκ³ μλ GameObjectμ `Demonstration Recorder` μ»΄ν¬λνΈλ₯Ό μΆκ°ν΄μ£Όμ΄μΌ ν©λλ€. μΌλ¨ μΆκ°λκ³ λλ©΄ μμ΄μ νΈλ‘λΆν° νλ μ΄ λ°μ΄ν°λ₯Ό κΈ°λ‘ν μ μκ² λ©λλ€.
<p align="center">
<img src="images/demo_component.png"
alt="BC Teacher Helper"
width="375" border="10" />
</p>
`Record`κ° μ²΄ν¬λλ κ²½μ° μ¬μ΄ μ€νλλ©΄ λ°μ΄ν°κ° μμ±λ©λλ€. νκ²½μ λμ΄λμ λ°λΌ λͺ¨λ°©νμ΅μ μ¬μ©νκΈ° μν΄ λͺλΆμμ λͺμκ° μ λ νλ μ΄ λ°μ΄ν°λ₯Ό μμ§ν΄μΌν©λλ€. μΆ©λΆν λ°μ΄ν°κ° κΈ°λ‘λμμΌλ©΄ μ λν° μμμ κ²μμ μ€νμ μ μ§ν©λλ€. κ·Έλ κ² νλ©΄ `.demo` νμΌμ΄ `Assets/Demonstations` ν΄λ λ΄λΆμ μμ±λ©λλ€. μ΄ νμΌμλ μμ΄μ νΈμ νλ μ΄ λ°μ΄ν°κ° μ μ₯λμ΄ μμ΅λλ€. μ΄ νμΌμ ν΄λ¦νλ©΄ μΈμ€νν° μμ λ°λͺ¨ νμΌμ λν μ 보λ₯Ό μλμ κ°μ΄ μλ €μ€λλ€.
<p align="center">
<img src="images/demo_inspector.png"
alt="BC Teacher Helper"
width="375" border="10" />
</p>
## Behavioral Cloningμ ν΅ν νμ΅
λͺ¨λ°©νμ΅μ μν λ€μν μκ³ λ¦¬μ¦μ΄ μ‘΄μ¬νλ©° λͺ¨λ°©νμ΅ μκ³ λ¦¬μ¦ μ€ κ°μ₯ κ°λ¨ν μκ³ λ¦¬μ¦μ΄ Behavioral Cloning μ
λλ€. μ΄ μκ³ λ¦¬μ¦μ λ§μΉ μ΄λ―Έμ§ λΆλ₯λ₯Ό μν μ§λνμ΅ (Supervised Learning)μ΄λ κΈ°ν κ³ μ μ μΈ λ¨Έμ λ¬λ κΈ°λ²λ€μ²λΌ μ λ¬Έκ°μ νλ μ΄λ‘λΆν° μμ§λ λ°μ΄ν°λ₯Ό μ§μ μ μΌλ‘ λͺ¨λ°©νλλ‘ μ μ±
(Policy)μ νμ΅ν©λλ€.
### μ€νλΌμΈ νμ΅
μ€νλΌμΈ Behavioral Cloningμμ μ°λ¦¬λ μμ΄μ νΈμ νλμ νμ΅νκΈ° μν΄ `Demonstration Recorder`λ₯Ό ν΅ν΄ μμ±λ `demo` νμΌμ λ°μ΄ν° μ
μΌλ‘ μ΄μ©ν©λλ€.
1. μ λ¬Έκ°μ νλ μ΄ λ°μ΄ν°λ₯Ό λͺ¨λ°©νλλ‘ νμ΅νλ μμ΄μ νΈ μ ν
2. `Demonstration Recorder`λ₯Ό μ΄μ©νμ¬ μ λ¬Έκ°μ νλ μ΄λ₯Ό κΈ°λ‘ν©λλ€. (μμ λ΄μ© μ°Έκ³ )
μμΌλ‘ μ€λͺ
μ μν΄ μ΄ κΈ°λ‘λ νμΌμ μ΄λ¦μ `AgentRecording.demo`λΌκ³ νκ² μ΅λλ€.
3. μ¬μ λΉλνκ³ μμ΄μ νΈμκ² λ¬λ λΈλ μΈ (Learning Brain)μ ν λΉν©λλ€. κ·Έλ¦¬κ³ μμΉ΄λ°λ―Έμ Broadcast Hubμμ μ΄ λΈλ μΈμ Controlμ 체ν¬ν΄μ€λλ€. λΈλ μΈμ λν μ λ³΄κ° νμνμλ©΄ λ€μμ [λ¬Έμ](Learning-Environment-Design-Brains.md)λ₯Ό μ°Έκ³ ν΄μ£ΌμΈμ.
4. `config/offline_bc_config.yaml` νμΌμ μ΄μ΄μ€λλ€.
5. `demo_path` νλΌλ―Έν°λ₯Ό μ€ν
2μμ κΈ°λ‘ν λ°λͺ¨ νμΌμ κ²½λ‘λ‘ μμ ν΄μ€λλ€. μ΄λ² μμμ κ²½μ° μ€μ λ κ²½λ‘λ λ€μκ³Ό κ°μ΅λλ€: `./UnitySDK/Assets/Demonstrations/AgentRecording.demo`
6. `./config/offline_bc_config.yaml` μ μ€μ νλΌλ―Έν°λ‘ νλ mlagent-learnμ μ€ννλ©° `--run-id` μ `--train` μ μ
λ ₯ν©λλ€. λΉλλ νκ²½μ΄ standaloneμΌλ‘ μ»΄νμΌλμκ±°λ μλν°μμ trainμ΄ μλ΅λ κ²½μ° `--env` νλΌλ―Έν°μ λΉλλ νκ²½μ κ²½λ‘λ₯Ό κΈ°μ
ν΄μ£ΌμΈμ.
β
7. (μ νμ ) ν
μ 보λλ₯Ό νμ©νμ¬ νμ΅ μ±λ₯μ νμΈν΄λ³΄μΈμ!.
μ λ°©λ²μ λ°λͺ¨ νμΌμ μ΄μ©νμ¬ μμ΄μ νΈκ° μ§μ μ μΌλ‘ μ λ¬Έκ°μ νλμ λ°λΌνλλ‘ μΈκ³΅μ κ²½λ§μ νμ΅νλ κΈ°λ²μ
λλ€. νκ²½μ νμ΅μ΄ μ§νλλ λμ μμ΄μ νΈμ μ±λ₯μ νκ°νκΈ° μν΄ μ€νλλ©° μ¬μ©λ κ²μ
λλ€.
### μ¨λΌμΈ νμ΅
미리 μμ±λ λ°λͺ¨ νμΌ μμ΄ νμ΅μ΄ μ§νλλ λμ μ€μκ°μΌλ‘ μ λ¬Έκ°μ νλ μ΄ λ°μ΄ν°λ₯Ό μ 곡νλ©° μμ΄μ νΈλ₯Ό νμ΅νλ κ²λ κ°μΌν©λλ€. μ΄ λ°©λ²μ λ€μμ λ¨κ³λ₯Ό λ°λΌ μ§νλ©λλ€:
without pre-recording a demonstration file. The steps to do this are as follows:
1. λ¨Όμ λκ°μ λΈλ μΈλ€μ μμ±ν©λλ€. νλλ "μ μλ"μ΄ λ κ²μ΄κ³ νλλ "νμ"μ΄ λ κ²μ
λλ€. μ΄λ² μμμμλ λκ°μ λΈλ μΈ μμ
μ μ΄λ¦μ κ°κ° "Teacher"μ "Student"λ‘ μ€μ ν κ²μ
λλ€.
2. "Teacher" λΈλ μΈμ λ°λμ **νλ μ΄μ΄ λΈλ μΈ (Player Brain)**μ΄μ΄μΌ ν©λλ€.
3. "Student" λΈλ μΈμ λ°λμ **λ¬λ λΈλ μΈ (Learning Brain)**μ΄μ΄μΌ ν©λλ€.
4. "Teacher" λΈλ μΈκ³Ό "Student" λΈλ μΈμ νλΌλ―Έν°λ μμ΄μ νΈμμ μ€μ νλλ‘ λμΌνκ² μ€μ λμ΄μΌ ν©λλ€.
5. "Teacher" λΈλ μΈκ³Ό "Student" λΈλ μΈμ μμΉ΄λ°λ―Έμ `Broadcast Hub`μ μΆκ°νκ³ "Student" λΈλ μΈμ `Control` 체ν¬λ°μ€μ 체ν¬λ₯Ό ν΄μ€λλ€.
6. λΈλ μΈλ€μ μνλ μμ΄μ νΈλ€μκ² μ°κ²°ν΄μ€λλ€. (νλμ μμ΄μ νΈλ μ μλμΌλ‘ μ€μ λμ΄μΌ νλ©° μ μ΄λ νλμ μμ΄μ νΈλ νμμΌλ‘ μ€μ λμ΄μΌ ν©λλ€).
7. `config/online_bc_config.yaml` νμΌμμ, "Student" λΈλ μΈμ λν νλͺ©μ μΆκ°ν΄μΌν©λλ€. `trainer` νλΌλ―Έν°λ₯Ό `online_bc`λ‘ μ€μ νκ³ `brain_to_imitate` νλΌλ―Έν°λ₯Ό μ μλ μμ΄μ νΈμ λΈλ μΈ μ΄λ¦μΈ "Teacher"λ‘ μ€μ ν©λλ€. μΆκ°μ μΌλ‘ κ° μκ°λ§λ€ μΌλ§λ λ§μ νμ΅μ μ§νν μ§ κ²°μ νλ `batches_per_epoch`λ₯Ό μ€μ ν©λλ€. μμ΄μ νΈλ₯Ό λ μ€λ κΈ°κ°λμ νμ΅νκ³ μΆμ κ²½μ° `max_steps` κ°μ μ¦κ°μμΌμ£ΌμΈμ.
8. `mlagents-learn config/online_bc_config.yaml
β--train βslow`λ₯Ό ν΅ν΄ νμ΅κ³Όμ μ μ€ννκ³ νλ©΄μ _"Start training by pressing the Play button in the Unity Editor"_ λΌλ λ©μΈμ§κ° μΆλ ₯λλ©΄ μ λν°μ :arrow_forward: λ²νΌμ λλ¬μ£ΌμΈμ
9. μ λν° μλμ° μμμ μ μλ λΈλ μΈμ κ°μ§ μμ΄μ νΈλ₯Ό μ μ΄νλ©΄μ μνλλλ‘ νλ μ΄ λ°μ΄ν°λ₯Ό μμ±ν©λλ€.
10. νμ λΈλ μΈμ κ°μ§ μμ΄μ νΈ(λ€)μ μ΄ν΄λ³΄λ©΄ μ μλ λΈλ μΈμ κ°μ§ μμ΄μ νΈμ νλ μ΄μ μ μ¬νκ² νλνκΈ° μμν©λλ€.
11. νμ μμ΄μ νΈλ€μ΄ μνλλλ‘ νλνκ² λλ©΄ 컀λ©λ λΌμΈμμ `CTL+C`λ₯Ό λλ¬μ νμ΅μ μ€λ¨νμμμ€.
12. μμ±λ `*.nn` νμΌμ Assets ν΄λμ νμ ν΄λμΈ `TFModels` ν΄λλ‘ μ΄λμν€κ³ μ΄ νμΌμ `λ¬λ` λΈλ μΈμ μ¬μ©νμΈμ.
**BC Teacher Helper**
λ νΈλ¦¬ν μ¬μ©μ μν΄μ, `BC Teacher Helper` μ»΄ν¬λνΈλ₯Ό μ μλ μμ΄μ νΈμ μ¬μ©ν μ μμ΅λλ€.
<p align="center">
<img src="images/bc_teacher_helper.png"
alt="BC Teacher Helper"
width="375" border="10" />
</p>
μ΄κ²μ μ¬μ©νλ©΄ λ€μκ³Ό κ°μ ν€λ³΄λ λ¨μΆν€λ₯Ό μ¬μ©ν μ μμ΅λλ€:
1. κΈ°λ‘μ μμνκ±°λ μ€λ¨ν μ μμ΅λλ€. μ΄κ²μ μμ΄μ νΈλ₯Ό ν΅ν΄ κ²μμ νλ μ΄νλ μμ΄μ νΈκ° νμ΅μ λμ§ μλλ‘ μ¬μ©ν λ μ μ©ν©λλ€. μ΄κ²μ λν κΈ°λ³Έμ μΈ μ€νμ ν€λ³΄λμ `R` λ²νΌμ λλ₯΄λ©΄ λ©λλ€.
2. νΈλ μ΄λ λ²νΌλ₯Ό 리μ
ν©λλ€. μ΄ λͺ
λ Ήμ ν΅ν΄ μμ΄μ νΈκ° μ΅κ·Όμ κ²½νμ λν λ²νΌλ₯Ό λΉμ°λλ‘ μ€μ ν©λλ€. μ΄κ²μ μμ΄μ νΈκ° λΉ λ₯΄κ² μλ‘μ΄ νλμ λ°°μ°κ² νκ³ μΆμλ μ¬μ©νλ©΄ μ μ©ν©λλ€. λ²νΌλ₯Ό 리μ
νκΈ° μν κΈ°λ³Έ λͺ
λ Ήμ ν€λ³΄λμ `C` λ²νΌμ λλ₯΄λ©΄ λ©λλ€.
## νκΈ λ²μ
ν΄λΉ λ¬Έμμ νκΈ λ²μμ [λ―Όκ·μ (Kyushik Min)]([https://github.com/Kyushik](https://github.com/Kyushik))μ μν΄ μ§νλμμ΅λλ€. λ΄μ©μ μ€λ₯λ μ€νμκ° μλ κ²½μ° kyushikmin@gmail.com μΌλ‘ μ°λ½μ£Όμλ©΄ κ°μ¬λλ¦¬κ² μ΅λλ€.
|