λͺ¨λ°©νμ΅μ ν΅ν μμ΄μ νΈ νμ΅
μμ΄μ νΈκ° μνμ°©μ€λ₯Ό ν΅ν΄ μ€μ€λ‘ νμ΅νλ κ²λ³΄λ€ λ¨μν μμ΄μ νΈκ° μννκΈ°λ₯Ό μνλ νλμ μ°λ¦¬κ° μλ €μ£Όλ κ²μ΄ λ μ§κ΄μ μΌ μ μμ΅λλ€. μμλ³ NPCλ₯Ό νμ΅νκΈ° μν μ€ν μμ λ¬Έμ λ΄μ©μ λν΄ μκ°ν΄λ³΄κ² μ΅λλ€. 보μ ν¨μλ₯Ό μ΄μ©νμ¬ μμλ³μ νλμ κ°μ μ μΌλ‘ νμ΅νλ κ²μ΄ μλλΌ κ²μμμ μ»μ΄μ§ κ΄μΈ‘ (observation)κ³Ό κ²μ 컨νΈλ‘€λ¬λ₯Ό ν΅ν΄ μ»μ΄μ§ νλλ€ (actions)μ μ€μ λ°μ΄ν°λ₯Ό ν΅ν΄ μμλ³μ νλμ κ²°μ νλλ‘ νμ΅ν©λλ€. λͺ¨λ°©νμ΅ (Imitation Learning)μ μ€μ νλ μ΄λ₯Ό ν΅ν΄ μ»μ΄μ§ κ΄μΈ‘κ³Ό νλ λ°μ΄ν° μμ μ΄μ©νμ¬ μμ΄μ νΈμ μ μ± μ νμ΅ν©λλ€. λΉλμ€ λ§ν¬.
μλ² (Demonstration) λ°μ΄ν° κΈ°λ‘
μ λν° μλν°λ₯Ό μ΄μ©νμ¬ μμ΄μ νΈμ νλ μ΄λ₯Ό κΈ°λ‘νκ³ μμ μΌλ‘ μ μ₯νλ κ²μ΄ κ°λ₯ν©λλ€. μ΄λ° νλ μ΄ λ°μ΄ν°μλ κΈ°λ‘μ μ§ννλ λμμ κ΄μΈ‘, νλ κ·Έλ¦¬κ³ λ³΄μ μ λ³΄κ° ν¬ν¨λ©λλ€. μ΄κ²λ€μ λ°μ΄ν°λ₯Ό ν΅ν΄ κ΄λ¦¬κ° κ°λ₯νλ©° Behavioral Cloningκ³Ό κ°μ μ€νλΌμΈ νμ΅μ μ¬μ©λ μ μμ΅λλ€. (μλ λ΄μ© μ°Έκ³ )
μμ΄μ νΈμ νλ μ΄ λ°μ΄ν°λ₯Ό κΈ°λ‘νκΈ° μν΄μλ μ¬(Scene)μμ Agent
μ»΄ν¬λνΈλ₯Ό ν¬ν¨νκ³ μλ GameObjectμ Demonstration Recorder
μ»΄ν¬λνΈλ₯Ό μΆκ°ν΄μ£Όμ΄μΌ ν©λλ€. μΌλ¨ μΆκ°λκ³ λλ©΄ μμ΄μ νΈλ‘λΆν° νλ μ΄ λ°μ΄ν°λ₯Ό κΈ°λ‘ν μ μκ² λ©λλ€.
Record
κ° μ²΄ν¬λλ κ²½μ° μ¬μ΄ μ€νλλ©΄ λ°μ΄ν°κ° μμ±λ©λλ€. νκ²½μ λμ΄λμ λ°λΌ λͺ¨λ°©νμ΅μ μ¬μ©νκΈ° μν΄ λͺλΆμμ λͺμκ° μ λ νλ μ΄ λ°μ΄ν°λ₯Ό μμ§ν΄μΌν©λλ€. μΆ©λΆν λ°μ΄ν°κ° κΈ°λ‘λμμΌλ©΄ μ λν° μμμ κ²μμ μ€νμ μ μ§ν©λλ€. κ·Έλ κ² νλ©΄ .demo
νμΌμ΄ Assets/Demonstations
ν΄λ λ΄λΆμ μμ±λ©λλ€. μ΄ νμΌμλ μμ΄μ νΈμ νλ μ΄ λ°μ΄ν°κ° μ μ₯λμ΄ μμ΅λλ€. μ΄ νμΌμ ν΄λ¦νλ©΄ μΈμ€νν° μμ λ°λͺ¨ νμΌμ λν μ 보λ₯Ό μλμ κ°μ΄ μλ €μ€λλ€.
Behavioral Cloningμ ν΅ν νμ΅
λͺ¨λ°©νμ΅μ μν λ€μν μκ³ λ¦¬μ¦μ΄ μ‘΄μ¬νλ©° λͺ¨λ°©νμ΅ μκ³ λ¦¬μ¦ μ€ κ°μ₯ κ°λ¨ν μκ³ λ¦¬μ¦μ΄ Behavioral Cloning μ λλ€. μ΄ μκ³ λ¦¬μ¦μ λ§μΉ μ΄λ―Έμ§ λΆλ₯λ₯Ό μν μ§λνμ΅ (Supervised Learning)μ΄λ κΈ°ν κ³ μ μ μΈ λ¨Έμ λ¬λ κΈ°λ²λ€μ²λΌ μ λ¬Έκ°μ νλ μ΄λ‘λΆν° μμ§λ λ°μ΄ν°λ₯Ό μ§μ μ μΌλ‘ λͺ¨λ°©νλλ‘ μ μ± (Policy)μ νμ΅ν©λλ€.
μ€νλΌμΈ νμ΅
μ€νλΌμΈ Behavioral Cloningμμ μ°λ¦¬λ μμ΄μ νΈμ νλμ νμ΅νκΈ° μν΄ Demonstration Recorder
λ₯Ό ν΅ν΄ μμ±λ demo
νμΌμ λ°μ΄ν° μ
μΌλ‘ μ΄μ©ν©λλ€.
- μ λ¬Έκ°μ νλ μ΄ λ°μ΄ν°λ₯Ό λͺ¨λ°©νλλ‘ νμ΅νλ μμ΄μ νΈ μ ν
Demonstration Recorder
λ₯Ό μ΄μ©νμ¬ μ λ¬Έκ°μ νλ μ΄λ₯Ό κΈ°λ‘ν©λλ€. (μμ λ΄μ© μ°Έκ³ ) μμΌλ‘ μ€λͺ μ μν΄ μ΄ κΈ°λ‘λ νμΌμ μ΄λ¦μAgentRecording.demo
λΌκ³ νκ² μ΅λλ€.- μ¬μ λΉλνκ³ μμ΄μ νΈμκ² λ¬λ λΈλ μΈ (Learning Brain)μ ν λΉν©λλ€. κ·Έλ¦¬κ³ μμΉ΄λ°λ―Έμ Broadcast Hubμμ μ΄ λΈλ μΈμ Controlμ 체ν¬ν΄μ€λλ€. λΈλ μΈμ λν μ λ³΄κ° νμνμλ©΄ λ€μμ λ¬Έμλ₯Ό μ°Έκ³ ν΄μ£ΌμΈμ.
config/offline_bc_config.yaml
νμΌμ μ΄μ΄μ€λλ€.demo_path
νλΌλ―Έν°λ₯Ό μ€ν 2μμ κΈ°λ‘ν λ°λͺ¨ νμΌμ κ²½λ‘λ‘ μμ ν΄μ€λλ€. μ΄λ² μμμ κ²½μ° μ€μ λ κ²½λ‘λ λ€μκ³Ό κ°μ΅λλ€:./UnitySDK/Assets/Demonstrations/AgentRecording.demo
./config/offline_bc_config.yaml
μ μ€μ νλΌλ―Έν°λ‘ νλ mlagent-learnμ μ€ννλ©°--run-id
μ--train
μ μ λ ₯ν©λλ€. λΉλλ νκ²½μ΄ standaloneμΌλ‘ μ»΄νμΌλμκ±°λ μλν°μμ trainμ΄ μλ΅λ κ²½μ°--env
νλΌλ―Έν°μ λΉλλ νκ²½μ κ²½λ‘λ₯Ό κΈ°μ ν΄μ£ΌμΈμ. β- (μ νμ ) ν μ 보λλ₯Ό νμ©νμ¬ νμ΅ μ±λ₯μ νμΈν΄λ³΄μΈμ!.
μ λ°©λ²μ λ°λͺ¨ νμΌμ μ΄μ©νμ¬ μμ΄μ νΈκ° μ§μ μ μΌλ‘ μ λ¬Έκ°μ νλμ λ°λΌνλλ‘ μΈκ³΅μ κ²½λ§μ νμ΅νλ κΈ°λ²μ λλ€. νκ²½μ νμ΅μ΄ μ§νλλ λμ μμ΄μ νΈμ μ±λ₯μ νκ°νκΈ° μν΄ μ€νλλ©° μ¬μ©λ κ²μ λλ€.
μ¨λΌμΈ νμ΅
미리 μμ±λ λ°λͺ¨ νμΌ μμ΄ νμ΅μ΄ μ§νλλ λμ μ€μκ°μΌλ‘ μ λ¬Έκ°μ νλ μ΄ λ°μ΄ν°λ₯Ό μ 곡νλ©° μμ΄μ νΈλ₯Ό νμ΅νλ κ²λ κ°μΌν©λλ€. μ΄ λ°©λ²μ λ€μμ λ¨κ³λ₯Ό λ°λΌ μ§νλ©λλ€: without pre-recording a demonstration file. The steps to do this are as follows:
- λ¨Όμ λκ°μ λΈλ μΈλ€μ μμ±ν©λλ€. νλλ "μ μλ"μ΄ λ κ²μ΄κ³ νλλ "νμ"μ΄ λ κ²μ λλ€. μ΄λ² μμμμλ λκ°μ λΈλ μΈ μμ μ μ΄λ¦μ κ°κ° "Teacher"μ "Student"λ‘ μ€μ ν κ²μ λλ€.
- "Teacher" λΈλ μΈμ λ°λμ **νλ μ΄μ΄ λΈλ μΈ (Player Brain)**μ΄μ΄μΌ ν©λλ€.
- "Student" λΈλ μΈμ λ°λμ **λ¬λ λΈλ μΈ (Learning Brain)**μ΄μ΄μΌ ν©λλ€.
- "Teacher" λΈλ μΈκ³Ό "Student" λΈλ μΈμ νλΌλ―Έν°λ μμ΄μ νΈμμ μ€μ νλλ‘ λμΌνκ² μ€μ λμ΄μΌ ν©λλ€.
- "Teacher" λΈλ μΈκ³Ό "Student" λΈλ μΈμ μμΉ΄λ°λ―Έμ
Broadcast Hub
μ μΆκ°νκ³ "Student" λΈλ μΈμControl
체ν¬λ°μ€μ 체ν¬λ₯Ό ν΄μ€λλ€. - λΈλ μΈλ€μ μνλ μμ΄μ νΈλ€μκ² μ°κ²°ν΄μ€λλ€. (νλμ μμ΄μ νΈλ μ μλμΌλ‘ μ€μ λμ΄μΌ νλ©° μ μ΄λ νλμ μμ΄μ νΈλ νμμΌλ‘ μ€μ λμ΄μΌ ν©λλ€).
config/online_bc_config.yaml
νμΌμμ, "Student" λΈλ μΈμ λν νλͺ©μ μΆκ°ν΄μΌν©λλ€.trainer
νλΌλ―Έν°λ₯Όonline_bc
λ‘ μ€μ νκ³brain_to_imitate
νλΌλ―Έν°λ₯Ό μ μλ μμ΄μ νΈμ λΈλ μΈ μ΄λ¦μΈ "Teacher"λ‘ μ€μ ν©λλ€. μΆκ°μ μΌλ‘ κ° μκ°λ§λ€ μΌλ§λ λ§μ νμ΅μ μ§νν μ§ κ²°μ νλbatches_per_epoch
λ₯Ό μ€μ ν©λλ€. μμ΄μ νΈλ₯Ό λ μ€λ κΈ°κ°λμ νμ΅νκ³ μΆμ κ²½μ°max_steps
κ°μ μ¦κ°μμΌμ£ΌμΈμ.mlagents-learn config/online_bc_config.yaml β--train βslow
λ₯Ό ν΅ν΄ νμ΅κ³Όμ μ μ€ννκ³ νλ©΄μ "Start training by pressing the Play button in the Unity Editor" λΌλ λ©μΈμ§κ° μΆλ ₯λλ©΄ μ λν°μ :arrow_forward: λ²νΌμ λλ¬μ£ΌμΈμ- μ λν° μλμ° μμμ μ μλ λΈλ μΈμ κ°μ§ μμ΄μ νΈλ₯Ό μ μ΄νλ©΄μ μνλλλ‘ νλ μ΄ λ°μ΄ν°λ₯Ό μμ±ν©λλ€.
- νμ λΈλ μΈμ κ°μ§ μμ΄μ νΈ(λ€)μ μ΄ν΄λ³΄λ©΄ μ μλ λΈλ μΈμ κ°μ§ μμ΄μ νΈμ νλ μ΄μ μ μ¬νκ² νλνκΈ° μμν©λλ€.
- νμ μμ΄μ νΈλ€μ΄ μνλλλ‘ νλνκ² λλ©΄ 컀λ©λ λΌμΈμμ
CTL+C
λ₯Ό λλ¬μ νμ΅μ μ€λ¨νμμμ€. - μμ±λ
*.nn
νμΌμ Assets ν΄λμ νμ ν΄λμΈTFModels
ν΄λλ‘ μ΄λμν€κ³ μ΄ νμΌμλ¬λ
λΈλ μΈμ μ¬μ©νμΈμ.
BC Teacher Helper
λ νΈλ¦¬ν μ¬μ©μ μν΄μ, BC Teacher Helper
μ»΄ν¬λνΈλ₯Ό μ μλ μμ΄μ νΈμ μ¬μ©ν μ μμ΅λλ€.
μ΄κ²μ μ¬μ©νλ©΄ λ€μκ³Ό κ°μ ν€λ³΄λ λ¨μΆν€λ₯Ό μ¬μ©ν μ μμ΅λλ€:
- κΈ°λ‘μ μμνκ±°λ μ€λ¨ν μ μμ΅λλ€. μ΄κ²μ μμ΄μ νΈλ₯Ό ν΅ν΄ κ²μμ νλ μ΄νλ μμ΄μ νΈκ° νμ΅μ λμ§ μλλ‘ μ¬μ©ν λ μ μ©ν©λλ€. μ΄κ²μ λν κΈ°λ³Έμ μΈ μ€νμ ν€λ³΄λμ
R
λ²νΌμ λλ₯΄λ©΄ λ©λλ€. - νΈλ μ΄λ λ²νΌλ₯Ό 리μ
ν©λλ€. μ΄ λͺ
λ Ήμ ν΅ν΄ μμ΄μ νΈκ° μ΅κ·Όμ κ²½νμ λν λ²νΌλ₯Ό λΉμ°λλ‘ μ€μ ν©λλ€. μ΄κ²μ μμ΄μ νΈκ° λΉ λ₯΄κ² μλ‘μ΄ νλμ λ°°μ°κ² νκ³ μΆμλ μ¬μ©νλ©΄ μ μ©ν©λλ€. λ²νΌλ₯Ό 리μ
νκΈ° μν κΈ°λ³Έ λͺ
λ Ήμ ν€λ³΄λμ
C
λ²νΌμ λλ₯΄λ©΄ λ©λλ€.
νκΈ λ²μ
ν΄λΉ λ¬Έμμ νκΈ λ²μμ λ―Όκ·μ (Kyushik Min)μ μν΄ μ§νλμμ΅λλ€. λ΄μ©μ μ€λ₯λ μ€νμκ° μλ κ²½μ° kyushikmin@gmail.com μΌλ‘ μ°λ½μ£Όμλ©΄ κ°μ¬λλ¦¬κ² μ΅λλ€.