유니티 머신러닝 개발 ML Agents 9편, 목표 찾기 예제 개선. 3 다수의 훈련장 사용해보기, 버퍼 사이즈 교체로 멈춤 현상 개선
이번 편에서는 현재까지 하나의 훈련장을 이용시켜서 훈련시켰는데, 동시에 다수에 훈련장을 사용시켜 같은 시간대비 훈령 양을 늘려서 더 빠르게 교육이 진행될 수 있게 하겠습니다.
이전에 해당 구멍난 맵으로 학습시켜보았고 한계가 있음을 어느 정도 보았습니다.
일단 가운데 floor를 활성화시켜 하나의 큰 평면 바닥을 만듭니다.
다수의 훈련장소 활용하기
TrainingArea 복사합니다. 유니티에서는 해당 오브젝트를 선택하고 Ctrl+D 활용하시면 복사가 됩니다.
9개 정도 해봅니다.
그리고 겹치지 않게 적당히 배치해 줍니다.
TrainingArea x, z값을 변경시켜 펼쳐줍니다.
y값 변경이 있어서는 안됩니다. 공이 추락을 감지하는 코드에 이상이 있을 수 있어요
플레이 시, 이전에 사용하던 교육 데이터가 있으면 적당히 잘 되는 걸 볼 수 있습니다.
그럼 이제 교육프로그램을 열고 교육을 시켜봅니다.
교육을 진행하면서 보면 먼가 진행하면서 자주 멈추는 느낌이 듭니다.
위의 스샷에서도 느껴지죠, 아마 이러실 겁니다.
요런 멈추는 현상 개선을 위해서
우리가 제작한 교육환경 데이터
rollerball_config.yaml
를 수정하도록 합시다.
behaviors:
RollerBall:
trainer_type: ppo
hyperparameters:
batch_size: 2048
buffer_size: 20480
learning_rate: 3.0e-4
beta: 5.0e-4
epsilon: 0.2
lambd: 0.99
num_epoch: 3
learning_rate_schedule: linear
network_settings:
normalize: false
hidden_units: 128
num_layers: 2
reward_signals:
extrinsic:
gamma: 0.99
strength: 1.0
max_steps: 500000
time_horizon: 64
summary_freq: 10000
batch_size: 2048
buffer_size: 20480
해당 데이터 둘만 교체하였습니다.
위의 스샷과 비교해 봤을때 멈추는 빈도가 확실히 줄어든 것을 확인 가능합니다.
mlagent에서 제공하는 예제들도 유사하게 멈춤 현상들이 발생되고 있습니다.
초기 만스텝이 진행되는 시간이 많게는 두배까지 줄어든 모습을 보실 수 있습니다.
교육을 다수로 시킬수 있는 방법을 보았습니다.
이후에도 교육이 필요할때는 다수로 진행하여 빠른 효과를 보시길 바랍니다.
댓글