프로그래밍 농장

Unity ML-Agents 2.0 Parameter description [ Unity ] 본문

Unity

Unity ML-Agents 2.0 Parameter description [ Unity ]

Tennessee201 2022. 2. 28.
728x90

공식 Unity의 설명에 기반하였을떄, 각 Parameter의 역할은 아래와 같다.


Hyperparameters 

1. trainer_type : 학습에 사용할 강화학습 기법 (기본값 : ppo)  / ppo, sac, poca 설정가능

2. batch_size : 네트워크를 한번 학습할 떄 몇 개의 데이터를 이용할 것인가? / 일반적으로 continuous action 알고리즘은 값을 크게 설정(128~2048)  /  Discrete action 알고리즘은 값을 작게 설정(32~512)

3. buffer_size : 네트워크를 학습하기 위해 저장하는 전체 데이터의 수 (2048~409600)  

    buffer_size가 클수록 안정적인 학습 수행 가능

4. learning_rate : 기본값 = 3e-4 ( 학습을 위한 초기 학습값 )  /  학습이 불안정하거나 보상이 지속적으로 증가하지 않은 경우 일반적으로 감소시킨다.

5. learning_rate_schedule : 기본값 = linear(PPO), constant(SAC)  /  시간이 변함에 따라 learning rate를 어떻게 변경할지 결정한다.   /  PPO의 경우 max step까지 학습률을 감소시키는 경우 더 안정적으로 학습이 수렴된다.  /  SAC의 경우 전체 학습과정 동안 학습률을 유지하여 자연스럽게 큐 함수값이 수렴할 떄 까지 학습 

6. beta : 기본값 = 5e-3  / 이 값이 높을수록 더 랜덤 행동을 많이 하게된다 ( 많은 탐험 수행 )

7. epsilon : 기본값 = 0.2  /  학습을 얼마나 빠르게 할지 결정  /  값이 낮을수록 안정적이지만 느리게 학습

8. lambd : 기본값 = 0.95 / Generalized Adavantage Estimate의 Regulatization 파라미터 -> 업데이트된 값을 추정할떄, 해당값이 작으면 현재추정값에 더 의존하고, 해당값이 크면 환경을 통해 받은 실제 보상(학습)에 더 의존하게 된다. 

9. num_epoch : 기본값 = 3 / Epoch : buffer의 모든 data를 batch로 학습 수행 1회 = 1 epoch / 값이 클수록 안정적이지만 느린 학습을 수행한다. 


Network Settings

- normalize : Vector observation 입력 데이터를 정규화할지를 결정한다. / 복잡하고 연속적인 문제의 경우 normalization이 도움이 될 수 있지만 간단하고 이산적인 문제에서는 성능저하 가능성이 있다.

- hidden_units : 인공신경망의 각 층에서 사용할 노드의 개수를 결정한다.

- num_layers : 인공신경망을 몇 층으로 사용할지 구조를 결정한다.

- vis_encode_type : Visual observation 입력을 인코딩할 딥러닝 모델을 결정한다. / 기본값 : simple / nature_cnn, resnet, match3, fully connected 등을 설정할수있다. 

https://www.researchgate.net/figure/Schematic-of-the-PPO-and-LSTM-network-There-are-2-hidden-layers-in-our-PPO-network-with_fig2_342348844


Reward_signals ( 보상 )

- strength : 환경에서 제공하는 보상에 strength를 곱해서 보상의 범위를 조절한다. / 일반적으로 1로 설정

- gamma : 감가율로 미래에 받을 보상을 얼마나 고려할지를 결정한다. / 값이 높을수록 미래에 받을것으로 예측되는 보상의 비율을 높게 결정 / 일반적으로 0.8 ~ 0.995 정도의 값으로 설정한다.


Hyperparameters 

- keep_checkpoints : 기본값 = 5 / 유지할 모델의 체크포인트 최대숫자 -> 해당 숫자를 넘어서 체크포인트가 저장되는 경우, 가장오래된 것을 삭제후 추가한다. 

- max_steps : 기본값 = 500000 ( 일반적으로 5e5 ~ 1e7로 설정 ) / 학습과정을 끝내지 전까지 몇 스텝동안 진행할지 결정한다.

- time_horizon : 기본값 = 64 ( 일반적으로 32 ~ 2048로 설정 ) / Buffer에 데이터를 저장하기전, 몇스텝동안 데이터를 수집할지 결정한다. / 자주 보상을 받는 환경에서는 낮게 설정하는것이 좋다. / 행동의 sequence를 전부 포함할수 있을 만큼 크게 설정하는것이 좋다. 

- summary_freq : 기본값 = 50000 / 텐서보드에 몇 스텝마다 한번씩 학습통계를 기록할지 결정 

728x90