지능형 에이전트 훈련
머신러닝은 자율 에이전트에게서 지능형 행동을 끌어낼 수 있는 방식에 변화를 불러오고 있다. 과거에는 지능형 행동을 직접 프로그래밍해야 했지만, 이제는 훈련 환경에서 이루어지는 상호작용을 통해 로봇이나 가상 아바타를 비롯한 에이전트에게 훈련을 시키는 방식으로 점점 바뀌고 있다. 이 방식은 산업용 로봇, 드론이나 자율 주행 차량은 물론 게임 캐릭터나 적이 어떻게 행동을 해야 할지 학습시키는데 사용된다. 이러한 훈련 환경의 질은 에이전트가 학습하는 행동에 중요한 영향을 미치며, 보통 어느 정도 타협이 필요하다. 가상 환경에서 에이전트를 훈련시키는 시나리오는 보통 특정 환경에 밀접한 연관이 있는 단일 에이전트를 배치하는 것이다. 에이전트의 행동이 환경의 상태를 바꾸고 에이전트에게 보상을 제공하게 된다.
일반적인 강화 학습 훈련 주기
내부 학습 환경
모든 학습 환경에는 다음과 같이 크게 세 종류의 오브젝트가 있다.
- 에이전트 – 각각의 에이전트는 고유의 상태 및 관측 값을 가지고 있고, 환경 내에서 고유의 행동을 하며 환경 내부에서 일어나는 이벤트에 따라 고유의 보상을 받는다. 각 에이전트의 행동은 해당 에이전트가 연결되어 있는 브레인에 의해 결정된다.
- 브레인 – 각 브레인은 특정 상태와 행동 공간을 정의하고, 연결된 에이전트가 어떤 행동을 취할지 결정한다. 현재 릴리스에서는 브레인을 다음 네 가지 모드로 설정할 수 있다.
External – TensorFlow(또는 기타 원하는 ML 라이브러리)를 사용하여 파이썬 API를 통해 개방형 소켓으로 통신하여 행동을 결정.
Internal(실험 단계) – TensorFlowSharp를 통해 프로젝트에 탑재된 훈련된 모델을 활용하여 행동을 결정.
Player – 플레이어의 입력을 통해 행동을 결정.
Heuristic – 직접 코딩한 동작을 기반으로 행동을 결정.
- 아카데미 – 특정 씬에 있는 아카데미 오브젝트는 해당 환경에 포함된 모든 브레인을 자식으로 포함하고 있다. 각 환경은 환경의 범위를 정의하는 한 개의 아카데미를 포함하고 있으며, 그 정의는 다음과 같은 내용을 포함한다.
- 엔진 설정 – 훈련 및 추론 모드 상에서 게임 엔진의 속도와 렌더링 품질을 설정한다.
- 프레임스킵 – 각 에이전트가 새로운 결정을 내릴 때 생략할 엔진 단계의 개수를 나타낸다.
- 글로벌 에피소드 길이 - 에피소드가 지속될 길이를 의미하며, 에피소드가 이 길이에 도달하면 모든 에이전트가 완료 상태로 바뀌게 된다.
출처 : https://blog.unity.com/kr/technology/introducing-unity-machine-learning-agents