호기심으로 희소 보상 과제 해결하기

ARTHUR JULIANI / UNITY TECHNOLOGIESContributor
Jun 26, 2018|7 분
호기심으로 희소 보상 과제 해결하기
이 웹페이지는 이해를 돕기 위해 기계 번역으로 제공됩니다. 기계 번역으로 제공되는 콘텐츠에 대한 정확도나 신뢰도는 보장되지 않습니다. 번역된 콘텐츠의 정확도에 관해 의문이 있는 경우 웹페이지의 공식 영어 원문을 참고해 주시기 바랍니다.

방금 새로운 버전의 ML-Agents 툴킷(v0.4)을 출시했으며, 여러분과 공유할 새로운 기능 중 하나는 추가 호기심 기반 내재적 보상으로 상담원을 교육할 수 있는 기능입니다.

이 기능에 대해 설명할 내용이 많기 때문에 이에 대한 블로그 포스팅을 추가로 작성하고자 합니다. 이제 보상이 드물고 드물게 분배될 때 에이전트가 환경을 더 효과적으로 탐험하도록 장려할 수 있는 쉬운 방법이 생겼습니다. 이러한 에이전트는 자신의 행동 결과에 대해 얼마나 놀랐는지에 따라 스스로에게 보상을 제공하여 이를 수행할 수 있습니다. 이 글에서는 이 새로운 시스템이 어떻게 작동하는지 설명한 다음, 이 시스템을 사용하여 일반적인 강화 학습(RL) 알고리즘으로는 해결하기 훨씬 더 어려운 작업을 상담원이 해결할 수 있도록 돕는 방법을 보여드리겠습니다.

호기심에 기반한 탐험

강화 학습의 경우, 기본 학습 신호는 에이전트가 결정을 내릴 때마다 제공되는 스칼라 값인 보상의 형태로 제공됩니다. 이 보상은 일반적으로 환경 자체에서 제공되며 환경 제작자가 지정합니다. 이러한 보상은 보통 목표 달성 시 +1.0, 사망 시 -1.0 등에 해당합니다. 이러한 종류의 보상은 에이전트 외부에서 제공되기 때문에 외재적이라고 생각할 수 있습니다. 외재적 보상이 있다면 내재적 보상도 있어야 한다는 뜻입니다. 내재적 보상은 환경이 제공하는 것이 아니라 몇 가지 기준에 따라 에이전트 자체에서 생성합니다. 물론 내재적 보상은 없습니다. 우리는 에이전트의 행동을 변화시켜 미래에 더 큰 외재적 보상을 얻게 하거나 에이전트가 다른 방법보다 더 많은 세계를 탐험하게 하는 등 궁극적으로 어떤 목적에 부합하는 내재적 보상을 원합니다. 인간과 다른 포유류의 경우 이러한 내재적 보상을 추구하는 것을 흔히 내재적 동기라고 하며, 이는 우리의 주체성과 밀접하게 연관되어 있습니다.

강화 학습 분야의 연구자들은 에이전트에게 자연의 에이전트와 유사한 동기를 부여하는 내재적 보상을 제공하기 위한 좋은 시스템을 개발하기 위해 많은 고민을 해왔습니다. 한 가지 인기 있는 접근 방식은 상담원에게 호기심을 부여하고 주변 세상에 얼마나 놀랐는지에 따라 보상을 제공하는 것입니다. 어린 아기가 세상에 대해 배우는 과정을 생각해 보면, 특정한 목표를 추구하기보다는 새로운 경험을 위해 놀고 탐색하는 과정을 거칩니다. 아이가 호기심이 많다고 말할 수 있습니다. 호기심 중심 탐험의 이면에는 상담원에게 이러한 동기를 심어주는 것이 있습니다. 에이전트가 놀라운 상태에 도달하여 보상을 받으면 점점 더 놀라운 상태를 찾기 위해 환경을 탐색하는 전략을 학습하게 됩니다. 그 과정에서 에이전트는 미로에서 멀리 떨어진 목표 위치나 풍경의 희박한 자원과 같은 외적 보상도 발견할 수 있을 것입니다.

저희는 작년에 버클리의 디팍 파탁과 그의 동료들이 발표한 최근 논문에서 이러한 접근 방식을 구체적으로 구현하기로 결정했습니다. 이 논문은 '자기 감독 예측을 통한 호기심 중심 탐색'이라는 제목의 논문으로, 자세한 내용이 궁금하다면 여기에서 읽어보실 수 있습니다. 이 논문에서 저자는 호기심에 대한 개념을 영리하고 일반화할 수 있는 방식으로 공식화합니다. 이들은 두 개의 개별 신경망, 즉 포워드 모델과 인버스 모델을 훈련할 것을 제안합니다. 역 모델은 에이전트가 수신한 현재 관찰과 다음 관찰을 가져와 단일 인코더를 사용하여 둘 다 인코딩하고 그 결과를 사용하여 두 관찰이 발생한 사이에 수행된 작업을 예측하도록 학습됩니다. 그런 다음 포워드 모델은 인코딩된 현재 관찰과 조치를 취하고 인코딩된 다음 관찰을 예측하도록 학습됩니다. 그런 다음 예측된 인코딩과 실제 인코딩의 차이가 내재적 보상으로 사용되어 에이전트에게 전달됩니다. 차이가 크면 놀라움이 커지고, 이는 곧 내재적 보상이 커진다는 것을 의미합니다.

이 두 모델을 함께 사용하면 보상은 놀라운 것을 포착할 뿐만 아니라 에이전트의 행동에 따라 에이전트가 제어할 수 있는 놀라운 것을 구체적으로 포착할 수 있습니다. 이러한 접근 방식을 통해 외적 보상 없이 훈련받은 에이전트는 단순히 내적 보상만으로 슈퍼 마리오 브라더스를 발전시킬 수 있습니다. 아래에서 프로세스를 간략하게 설명하는 백서의 다이어그램을 참조하세요.

이미지
내재적 호기심 모듈을 보여주는 다이어그램. 흰색 상자는 입력에 해당합니다. 파란색 상자는 신경망 레이어와 출력에 해당합니다. 채워진 파란색 선은 네트워크의 활성화 흐름에 해당합니다. 녹색 점선은 손실 계산에 사용된 비교에 해당합니다. 녹색 상자는 내재적 보상 계산에 해당합니다.
피라미드 환경

호기심을 테스트하기 위해서는 평범한 환경이 적합하지 않습니다. ML-Agents 툴킷 v0.3을 통해 공개한 대부분의 예제 환경에는 상대적으로 밀도가 높고 호기심이나 다른 탐험 강화 방법으로는 큰 이득을 얻을 수 없는 보상이 포함되어 있습니다. 그래서 저희는 에이전트의 새로운 호기심을 시험해보기 위해 피라미드라는 새로운 희박한 보상 환경을 만들었습니다. 그 안에는 단 하나의 보상만 있으며, 무작위 탐험을 통해 에이전트가 보상을 획득할 수 있는 경우는 거의 없습니다. 이 환경에서는 에이전트가 이전 환경의 친숙한 블루 큐브 형태를 취합니다. 에이전트는 앞뒤로 움직이고 왼쪽이나 오른쪽으로 회전할 수 있으며, 큐브 전면에서 일련의 광선 투사를 통해 주변 세계를 볼 수 있습니다.

이미지
레이 캐스트를 사용하여 주변을 관찰하는 에이전트(설명용으로 검은색으로 시각화)

이 요원은 9개의 방이 있는 밀폐된 공간에 떨어집니다. 이 방 중 하나에는 무작위로 배치된 스위치가 있고, 다른 방에는 움직일 수 없는 돌 피라미드가 무작위로 배치되어 있습니다. 에이전트가 스위치와 충돌하여 상호 작용하면 스위치가 빨간색에서 녹색으로 바뀝니다. 이러한 색상 변화와 함께 이동 가능한 모래 벽돌 피라미드가 환경의 여러 방 중 하나에 무작위로 생성됩니다. 이 피라미드 꼭대기에는 하나의 황금 벽돌이 있습니다. 에이전트가 이 벽돌과 충돌하면 에이전트는 +2의 외적 보상을 받습니다. 비결은 새로운 방으로 이동하거나 스위치를 뒤집거나 타워를 쓰러뜨려도 중간 보상이 없다는 점입니다. 상담원은 중간 도움 없이 이 순서를 수행하는 방법을 배워야 합니다.

이미지
PPO+큐리오시티로 훈련된 에이전트가 스위치와 상호작용한 후 피라미드로 이동합니다.

이 작업에 대해 바닐라 근거리 정책 최적화(PPO, ML-Agents의 기본 RL 알고리즘)를 사용하여 훈련된 에이전트는 20만 단계를 수행한 후에도 종종 우연(평균 -1 보상)보다 나은 성과를 내지 못합니다.

반면, PPO와 호기심 중심 내재적 보상으로 훈련된 상담원은 200,000회 이내에, 심지어는 그 절반의 시간 내에 꾸준히 문제를 해결합니다.

image
PPO+큐리오시티 에이전트(파란색)와 PPO 에이전트(빨간색)의 시간 경과에 따른 누적 외적 보상입니다. 각각 평균 5회 이상 실행되었습니다.

또한 내재적 보상 신호로만 훈련된 에이전트를 살펴본 결과, 에이전트가 하나의 방 안에서 작은 원을 그리며 이동하는 외재적 보상만 적용된 정책에 비해 과제를 해결하는 방법을 배우지는 못했지만 여러 방 사이를 이동할 수 있는 질적으로 더 흥미로운 정책을 학습하게 되었습니다.

PPO와 함께 호기심 사용하기

호기심을 활용하여 상담원의 교육을 돕고 싶다면 쉽게 활성화할 수 있습니다. 먼저 최신 ML-Agents 툴킷 릴리스를 다운로드한 다음, 훈련하려는 두뇌의 하이퍼파라미터 파일에 다음 줄을 추가합니다: `use_curiosity: true`. 거기서부터 평소처럼 교육 과정을 시작할 수 있습니다. 텐서보드를 사용하면 이제 몇 가지 새로운 메트릭이 추적되고 있음을 알 수 있습니다. 여기에는 포워드 및 인버스 모델 손실과 에피소드당 누적 내재적 보상이 포함됩니다.

상담원에게 호기심을 유발하는 것이 모든 상황에 도움이 되는 것은 아닙니다. 특히 크롤러 및 워커 환경과 같이 대부분의 행동 후에 0이 아닌 보상을 받는 밀집된 보상 기능이 이미 있는 환경에서는 큰 개선 효과를 보지 못할 수도 있습니다. 환경에 희박한 보상만 있는 경우, 내재적 보상을 추가하면 강화 학습을 사용하여 해결할 수 없는 과제를 쉽게 해결할 수 있는 과제로 바꿀 수 있습니다. 이는 특히 승패 또는 작업 완료/실패와 같은 간단한 보상에 가장 적합할 때 적용할 수 있습니다.

---

호기심 기능을 사용하신다면 여러분의 경험을 듣고 싶습니다. GitHub 이슈 페이지에서 문의하거나 직접 이메일( ml-agents@unity3d.com)로 문의해 주세요 . 행복한 훈련!