ppo-Pyramids-Training / localized_docs /KR /docs /Training-Imitation-Learning.md
AnnaMats's picture
Second Push
05c9ac2

λͺ¨λ°©ν•™μŠ΅μ„ ν†΅ν•œ μ—μ΄μ „νŠΈ ν•™μŠ΅

μ—μ΄μ „νŠΈκ°€ μ‹œν–‰μ°©μ˜€λ₯Ό 톡해 슀슀둜 ν•™μŠ΅ν•˜λŠ” 것보닀 λ‹¨μˆœνžˆ μ—μ΄μ „νŠΈκ°€ μˆ˜ν–‰ν•˜κΈ°λ₯Ό μ›ν•˜λŠ” 행동을 μš°λ¦¬κ°€ μ•Œλ €μ£ΌλŠ” 것이 더 직관적일 수 μžˆμŠ΅λ‹ˆλ‹€. μœ„μƒλ³‘ NPCλ₯Ό ν•™μŠ΅ν•˜κΈ° μœ„ν•œ μ‹€ν–‰ μ˜ˆμ‹œ λ¬Έμ„œ λ‚΄μš©μ— λŒ€ν•΄ μƒκ°ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. 보상 ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ μœ„μƒλ³‘μ˜ 행동을 κ°„μ ‘μ μœΌλ‘œ ν•™μŠ΅ν•˜λŠ” 것이 μ•„λ‹ˆλΌ κ²Œμž„μ—μ„œ 얻어진 κ΄€μΈ‘ (observation)κ³Ό κ²Œμž„ 컨트둀러λ₯Ό 톡해 얻어진 행동듀 (actions)의 μ‹€μ œ 데이터λ₯Ό 톡해 μœ„μƒλ³‘μ˜ 행동을 κ²°μ •ν•˜λ„λ‘ ν•™μŠ΅ν•©λ‹ˆλ‹€. λͺ¨λ°©ν•™μŠ΅ (Imitation Learning)은 μ‹€μ œ ν”Œλ ˆμ΄λ₯Ό 톡해 얻어진 κ΄€μΈ‘κ³Ό 행동 데이터 μŒμ„ μ΄μš©ν•˜μ—¬ μ—μ΄μ „νŠΈμ˜ 정책을 ν•™μŠ΅ν•©λ‹ˆλ‹€. λΉ„λ””μ˜€ 링크.

μ‹œλ²” (Demonstration) 데이터 기둝

μœ λ‹ˆν‹° 에디터λ₯Ό μ΄μš©ν•˜μ—¬ μ—μ΄μ „νŠΈμ˜ ν”Œλ ˆμ΄λ₯Ό κΈ°λ‘ν•˜κ³  μ—μ…‹μœΌλ‘œ μ €μž₯ν•˜λŠ” 것이 κ°€λŠ₯ν•©λ‹ˆλ‹€. 이런 ν”Œλ ˆμ΄ λ°μ΄ν„°μ—λŠ” 기둝을 μ§„ν–‰ν•˜λŠ” λ™μ•ˆμ˜ κ΄€μΈ‘, 행동 그리고 보상 정보가 ν¬ν•¨λ©λ‹ˆλ‹€. 이것듀은 데이터λ₯Ό 톡해 관리가 κ°€λŠ₯ν•˜λ©° Behavioral Cloningκ³Ό 같은 μ˜€ν”„λΌμΈ ν•™μŠ΅μ— μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. (μ•„λž˜ λ‚΄μš© μ°Έκ³ )

μ—μ΄μ „νŠΈμ˜ ν”Œλ ˆμ΄ 데이터λ₯Ό κΈ°λ‘ν•˜κΈ° μœ„ν•΄μ„œλŠ” 씬(Scene)μ—μ„œ Agent μ»΄ν¬λ„ŒνŠΈλ₯Ό ν¬ν•¨ν•˜κ³  μžˆλŠ” GameObject에 Demonstration Recorder μ»΄ν¬λ„ŒνŠΈλ₯Ό μΆ”κ°€ν•΄μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€. 일단 μΆ”κ°€λ˜κ³ λ‚˜λ©΄ μ—μ΄μ „νŠΈλ‘œλΆ€ν„° ν”Œλ ˆμ΄ 데이터λ₯Ό 기둝할 수 있게 λ©λ‹ˆλ‹€.

BC Teacher Helper

Recordκ°€ μ²΄ν¬λ˜λŠ” 경우 씬이 μ‹€ν–‰λ˜λ©΄ 데이터가 μƒμ„±λ©λ‹ˆλ‹€. ν™˜κ²½μ˜ λ‚œμ΄λ„μ— 따라 λͺ¨λ°©ν•™μŠ΅μ— μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λͺ‡λΆ„μ—μ„œ λͺ‡μ‹œκ°„ 정도 ν”Œλ ˆμ΄ 데이터λ₯Ό μˆ˜μ§‘ν•΄μ•Όν•©λ‹ˆλ‹€. μΆ©λΆ„ν•œ 데이터가 κΈ°λ‘λ˜μ—ˆμœΌλ©΄ μœ λ‹ˆν‹° μƒμ—μ„œ κ²Œμž„μ˜ 싀행을 μ •μ§€ν•©λ‹ˆλ‹€. κ·Έλ ‡κ²Œ ν•˜λ©΄ .demo 파일이 Assets/Demonstations 폴더 내뢀에 μƒμ„±λ©λ‹ˆλ‹€. 이 νŒŒμΌμ—λŠ” μ—μ΄μ „νŠΈμ˜ ν”Œλ ˆμ΄ 데이터가 μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이 νŒŒμΌμ„ ν΄λ¦­ν•˜λ©΄ μΈμŠ€νŽ™ν„° 상에 데λͺ¨ νŒŒμΌμ— λŒ€ν•œ 정보λ₯Ό μ•„λž˜μ™€ 같이 μ•Œλ €μ€λ‹ˆλ‹€.

BC Teacher Helper

Behavioral Cloning을 ν†΅ν•œ ν•™μŠ΅

λͺ¨λ°©ν•™μŠ΅μ„ μœ„ν•œ λ‹€μ–‘ν•œ μ•Œκ³ λ¦¬μ¦˜μ΄ μ‘΄μž¬ν•˜λ©° λͺ¨λ°©ν•™μŠ΅ μ•Œκ³ λ¦¬μ¦˜ 쀑 κ°€μž₯ κ°„λ‹¨ν•œ μ•Œκ³ λ¦¬μ¦˜μ΄ Behavioral Cloning μž…λ‹ˆλ‹€. 이 μ•Œκ³ λ¦¬μ¦˜μ€ 마치 이미지 λΆ„λ₯˜λ₯Ό μœ„ν•œ μ§€λ„ν•™μŠ΅ (Supervised Learning)μ΄λ‚˜ 기타 고전적인 λ¨Έμ‹ λŸ¬λ‹ κΈ°λ²•λ“€μ²˜λŸΌ μ „λ¬Έκ°€μ˜ ν”Œλ ˆμ΄λ‘œλΆ€ν„° μˆ˜μ§‘λœ 데이터λ₯Ό μ§μ ‘μ μœΌλ‘œ λͺ¨λ°©ν•˜λ„둝 μ •μ±… (Policy)을 ν•™μŠ΅ν•©λ‹ˆλ‹€.

μ˜€ν”„λΌμΈ ν•™μŠ΅

μ˜€ν”„λΌμΈ Behavioral Cloningμ—μ„œ μš°λ¦¬λŠ” μ—μ΄μ „νŠΈμ˜ 행동을 ν•™μŠ΅ν•˜κΈ° μœ„ν•΄ Demonstration Recorderλ₯Ό 톡해 μƒμ„±λœ demo νŒŒμΌμ„ 데이터 μ…‹μœΌλ‘œ μ΄μš©ν•©λ‹ˆλ‹€.

  1. μ „λ¬Έκ°€μ˜ ν”Œλ ˆμ΄ 데이터λ₯Ό λͺ¨λ°©ν•˜λ„둝 ν•™μŠ΅ν•˜λŠ” μ—μ΄μ „νŠΈ 선택
  2. Demonstration Recorderλ₯Ό μ΄μš©ν•˜μ—¬ μ „λ¬Έκ°€μ˜ ν”Œλ ˆμ΄λ₯Ό κΈ°λ‘ν•©λ‹ˆλ‹€. (μœ„μ˜ λ‚΄μš© μ°Έκ³ ) μ•žμœΌλ‘œ μ„€λͺ…을 μœ„ν•΄ 이 기둝된 파일의 이름을 AgentRecording.demo라고 ν•˜κ² μŠ΅λ‹ˆλ‹€.
  3. 씬을 λΉŒλ“œν•˜κ³  μ—μ΄μ „νŠΈμ—κ²Œ λŸ¬λ‹ 브레인 (Learning Brain)을 ν• λ‹Ήν•©λ‹ˆλ‹€. 그리고 μ•„μΉ΄λ°λ―Έμ˜ Broadcast Hubμ—μ„œ 이 브레인의 Control을 μ²΄ν¬ν•΄μ€λ‹ˆλ‹€. λΈŒλ ˆμΈμ— λŒ€ν•œ 정보가 ν•„μš”ν•˜μ‹œλ©΄ λ‹€μŒμ˜ λ¬Έμ„œλ₯Ό μ°Έκ³ ν•΄μ£Όμ„Έμš”.
  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 μ»΄ν¬λ„ŒνŠΈλ₯Ό μ„ μƒλ‹˜ μ—μ΄μ „νŠΈμ— μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

BC Teacher Helper

이것을 μ‚¬μš©ν•˜λ©΄ λ‹€μŒκ³Ό 같은 ν‚€λ³΄λ“œ 단좕킀λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

  1. 기둝을 μ‹œμž‘ν•˜κ±°λ‚˜ 쀑단할 수 μžˆμŠ΅λ‹ˆλ‹€. 이것은 μ—μ΄μ „νŠΈλ₯Ό 톡해 κ²Œμž„μ„ ν”Œλ ˆμ΄ν•˜λ˜ μ—μ΄μ „νŠΈκ°€ ν•™μŠ΅μ€ λ˜μ§€ μ•Šλ„λ‘ μ‚¬μš©ν•  λ•Œ μœ μš©ν•©λ‹ˆλ‹€. 이것에 λŒ€ν•œ 기본적인 싀행은 ν‚€λ³΄λ“œμ˜ R λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ λ©λ‹ˆλ‹€.
  2. νŠΈλ ˆμ΄λ‹ 버퍼λ₯Ό λ¦¬μ…‹ν•©λ‹ˆλ‹€. 이 λͺ…령을 톡해 μ—μ΄μ „νŠΈκ°€ 졜근의 κ²½ν—˜μ— λŒ€ν•œ 버퍼λ₯Ό λΉ„μš°λ„λ‘ μ„€μ •ν•©λ‹ˆλ‹€. 이것은 μ—μ΄μ „νŠΈκ°€ λΉ λ₯΄κ²Œ μƒˆλ‘œμš΄ 행동을 배우게 ν•˜κ³ μ‹Άμ„λ•Œ μ‚¬μš©ν•˜λ©΄ μœ μš©ν•©λ‹ˆλ‹€. 버퍼λ₯Ό λ¦¬μ…‹ν•˜κΈ° μœ„ν•œ κΈ°λ³Έ λͺ…령은 ν‚€λ³΄λ“œμ˜ C λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ λ©λ‹ˆλ‹€.

ν•œκΈ€ λ²ˆμ—­

ν•΄λ‹Ή λ¬Έμ„œμ˜ ν•œκΈ€ λ²ˆμ—­μ€ λ―Όκ·œμ‹ (Kyushik Min)에 μ˜ν•΄ μ§„ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ‚΄μš©μƒ 였λ₯˜λ‚˜ μ˜€νƒˆμžκ°€ μžˆλŠ” 경우 kyushikmin@gmail.com 으둜 μ—°λ½μ£Όμ‹œλ©΄ κ°μ‚¬λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€.