인공지능/강화학습

matlab 강화학습 - 다중 에이전트 강화 학습

이게될까 2024. 5. 8. 17:24
728x90
728x90

https://kr.mathworks.com/videos/an-introduction-to-multi-agent-reinforcement-learning-1657699091457.html

 

An Introduction to Multi-Agent Reinforcement Learning

Learn what multi-agent reinforcement learning is and some of the challenges it faces and overcomes.

kr.mathworks.com

아오 또 한글 번역이 없네요...

https://kr.mathworks.com/help/reinforcement-learning/ug/train-3-agents-for-area-coverage.html

 

Train Multiple Agents for Area Coverage - MATLAB & Simulink - MathWorks 한국

다음 MATLAB 명령에 해당하는 링크를 클릭했습니다. 명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.

kr.mathworks.com

그럼 메틀랩을 열어서 해봅시다.

openExample('rl/TrainMultipleAgentsForAreaCoverageExample')

이거 matlab 명령창에 치면 저 창이 그대로 나옵니다.

GPU없는게 겁나게 서럽네요....ㅠ

빨빨거리면서 돌아다닙니다.

 

 

 

이 비디오에서는 다중 에이전트 강화 학습에 대해 간략하게 소개하고 , 이것이 무엇 인지 , 그리고 이것이 직면하고 극복하는 몇 가지 과제에 대한 직관을 제공 하고자 합니다. 그래서 나는 당신이 그것에 머물기를 바랍니다. 저는 Brian입니다. MATLAB Tech Talk에 오신 것을 환영합니다.

괜찮은. 다중 에이전트 시스템이 무엇 인지부터 시작해 보겠습니다. 에이전트는 환경을 관찰 할 수 있고 그 관찰 에 따라 스스로 행동 하는 방법 을 선택할 수 있다는 점 에서 자율적 인 것 입니다 .​​ 에이전트 는 로봇 이나 차량 처럼 물리적 으로 움직이는 것일 수도 있고 대규모 소프트웨어 나 물류 시스템 의 컨트롤러 처럼 움직 이지 않는 것일 수도 있습니다 .​​​​ 개체 가 관찰 에 자율적으로 반응할 수 있는 능력을 갖고 있고 해당 개체 의 행동 이 환경 상태 를 변경 하는 한 개체 는 에이전트 입니다 .

이제 다중 에이전트 시스템 은 공통 환경 을 공유 하는 여러 자율 엔터티 가 있는 시스템입니다.​ 대형으로 작동하는 로봇 떼, 동일한 교차로를 주행하는 여러 자율 차량 또는 더 큰 목표를 달성하려는 분산 컨트롤러 네트워크 ( 예 : 각각 전력 예약을 시도 하는 여러 스마트 홈 )를 생각해 보십시오.​​​​ 피크 시간대가 아닌 하루 종일 전력 부하의 균형을 맞추는 방식으로 자동차 충전과 같은 활동을 소비 합니다.

물론 , 제가 방금 설명한 것은 서로 다른 유형의 협력 행위자 로서 목표 를 달성 하기 위해 함께 노력 하는 것 입니다 . 그러나 다중 에이전트 시스템은 적대적 일 수도 있습니다. 여기서 기업 은 상대방 의 이익 을 최소화 하면서 자신 의 개인적인 이익 을 최대화 하려고 노력 합니다 . 이는 게임 및 기타 유형 의 대회에 해당됩니다. 또한 다중 에이전트 시스템 은 적대적 에이전트 와 협력 에이전트가 혼합되어 있을 수 있습니다.

이제 다중 에이전트 시스템을 설계 하는 한 가지 방법 은 인간으로서 에이전트 가 다양한 상황에서 수행 할 작업을 미리 결정한 다음 해당 지식을 에이전트에 직접 전달하는 것입니다.​ 예를 들어 , 자율 주행 차의 경우 빨간 신호등에서 정지 해야 한다는 점, 앞차 와 의 최소 거리 를 유지 해야 한다는 점 , 도로 선 사이에 있어야 한다는 점을 이미 이해하는 코드를 작성할 수 있습니다. 따라서 기본적으로 소프트웨어 와 물리적 설계 및 절차를 통해 특정 환경 상태에 따라 에이전트 가 어떻게 작동해야 하는지 정의합니다.

그러나 동작을 명시적으로 인코딩하는 것과는 달리 에이전트 가 동작의 일부 또는 전체를 스스로 학습할 수 있는 기능을 제공 할 수도 있습니다. 예 를 들어 적응 제어 및 유전자 알고리즘 과 같은 다양한 유형 의 학습 알고리즘 이 있습니다 . 하지만 이번 비디오에서는 강화 학습 에 대해 이야기 하겠습니다 .​

이제 아래에 연결 한 다른 여러 Tech Talk 비디오 에서 강화 학습을 다루었습니다. 그래서 이번 영상에서는 그것이 무엇 인지 빠르게 요약해 보겠습니다. 에이전트는 환경 내에 존재합니다 . 에이전트 는 환경 상태를 관찰 한 다음 에이전트의 정책에 따라 수행할 작업을 자동으로 결정합니다. 이 작업은 환경 상태에 영향을 미치며 상태 -작업 쌍을 기반으로 보상 이 부여될 수 있습니다. 그러나 일반적 으로 이 보상 은 드물고 많은 순차적 작업 후에 만 수신 될 수 있습니다 .

그리고 강화 학습 알고리즘의 목표는 보상을 극대화하는 방식으로 시간 이 지남에 따라 에이전트의 정책을 업데이트 하는 것입니다. 따라서 다중 에이전트 강화 학습 ( MARL) 의 기본 아이디어 는 환경 과 상호 작용하는 여러 에이전트 가 있고 각 에이전트 는 시간 이 지남에 따라 정책 을 업데이트 하기 위해 일종의 강화 학습 을 사용 한다는 것 입니다 .

이제 서로 학습하고 상호 작용 하는 여러 에이전트 가 있으면 극복해야 할 몇 가지 과제를 소개하기 시작합니다.​​​​​​ 이러한 과제 중 몇 가지에 대한 이해를 돕기 위해 이 장난감 예제를 설정해 보겠습니다.​ 이 예에서는 그리드 월드를 사용하겠습니다.​​ 이 방 에는 최단 시간에 방 전체를 청소하려는 로봇 청소기 세 대가 있습니다.​​​ 즉 , 흰색 사각형 각각 을 적어도 한 번은 덮고 싶습니다.​​

그리고 어두운 사각형은 벽과 장애물의 위치를 ​​나타 냅니다 . 따라서 기본적으로 진공 청소기는 이러한 공간을 차지할 수 없습니다 . 각 단계 에서 각 진공 청소기 는 실내 의 위치 와 장애물 의 위치 를 ​​관찰하고 이전 위치에 대한 적용 범위 지도 도 유지 합니다.​​

따라서 녹색 진공청소기를 보면 이 정보에 접근할 수 있습니다.​ 그 위치는 구석에 있고 , 지금 까지는 그 자리만 더프었 을 뿐입니다 . 이제 이 정보를 사용 하여 녹색 진공청소기는 위 , 아래, 왼쪽 , 오른쪽 으로 이동 하거나 다음 시간 단계 까지 현재 위치 에서 기다리는 다섯 가지 작업 중 하나 를 결정합니다 . 따라서 분명히 아이디어 는 각 시간 단계 마다 각 진공 이 아직 덮 이지 않은 사각형 으로 이동 한다는 것 입니다 .​

그러나 진공 청소기는 어떤 조치를 취하는 것이 가장 좋은지 에 대한 지식을 미리 프로그래밍하지 않고 대신 강화 학습 알고리즘을 사용 하여 시간 이 지남에 따라 최적의 정책을 학습 합니다. 그리고 보상을 극대화 함으로써 이를 수행합니다. 이전에 진공 상태가 아니었던 셀로 이동하면 긍정적인 보상이 주어 지며 , 로봇 이 장애물이나 다른 로봇으로 운전하도록 요청하는 등 의 불법적인 행동에 대해서는 부정적인 보상이 제공됩니다.

게다가 , 가려진 사각형으로 이동하거나 전혀 이동하지 않는 경우 에도 작은 부정적인 보상 이 있습니다. 그리고 마지막 으로 방 전체 를 덮으면 매우 큰 보상 이 있습니다 .​​ 그리고 중요한 부분 은 전체 공간을 커버 한 후에 모든 에이전트가 보상 을 공유 한다는 것 입니다 . 따라서 이러한 에이전트는 공유 된 보상 을 가지기 때문에 서로 협력 하고 있습니다 . 행동을 시도하고 보상을 모으는 여러 에피소드를 통해 이 방을 효율적으로 청소하는 방법을 배우는 것이 목표입니다.

이제 MARL에 접근하는 방법에 대한 몇 가지 시나리오를 생각해 보겠습니다. 먼저 , 우리는 분산 형 아키텍처를 살펴보겠습니다. 분산형 학습에서는 각 에이전트 ( 이 경우 각 진공)는 다른 에이전트 와 독립적으로 훈련됩니다. 즉 , 각 진공청소기는 다른 진공청소기의 작업에 관계없이 최대한 많은 공간을 차지하는 방법을 학습 합니다.​​

분산 형 아키텍처를 사용하면 에이전트 간에 정보가 공유되지 않습니다 . 그들은 학습 을 위해 완전히 스스로 노력 합니다. 그리고 여기에는 몇 가지 이점이 있습니다 . 첫째 , 정보가 공유 되지 않기 때문에 이러한 진공 청소기는 서로 통신 하도록 설계 할 필요 가 없으며 이는 전체 시스템 을 단순화 합니다 .

그러나 적어도 이 예에서는 이 방법에 몇 가지 명백한 단점 도 있습니다.​ 첫 번째 는 진공 청소기 가 다른 진공 청소기가 방의 어느 부분 을 덮 었는지 모르기 때문에 해당 공간 을 피하는 방법 을 배울 수 없다는 것 입니다 . 예 를 들어 , 여기 녹색 로봇 은 오른쪽 과 왼쪽 에 덮 이지 않은 부분 이 있다고 생각 하는 상황 에 있습니다 .​​​ 따라서 오른쪽으로 조치를 취 하면 아직 커버되지 않았 으므로 긍정적인 보상을 받아야 합니다.​​​​

그러나 해당 지점 이 실제로 다른 진공으로 덮여 있다면 대신 불이익 을 받게 됩니다 .​ 따라서 이 상황 을 피하는 방법을 배우고 싶을 것입니다. 그러나 문제 는 녹색 로봇이 자신 의 커버리지 지도 에만 접근 할 수 있기 때문에 실제로 진공 상태 가 아닌 사각형 과 다른 진공 으로 덮힌 사각형 을 구별 하는 방법 을 배울 수 없다는 것 입니다 .

이제 가능한 해결책 중 하나는 각 진공청소기가 서로 적용 범위 맵을 공유 하도록 하는 것입니다. 그렇게 하면 진공청소기로 덮이지 않은 위치로 이동 하는 방법을 궁극적으로 배울 수 있는 충분한 정보를 얻게 됩니다. 그리고 다시 말하지만 , 이 정보 공유를 허용하는 추가 하드웨어 나 소프트웨어가 필요합니다. 따라서 프로젝트 의 성능 과 전반적인 복잡성 사이 에 균형 을 고려해야 합니다 .​​​​

따라서 이 예에서는 각 진공청소기가 서로 완전히 독립적으로 작동하도록 하는 것보다 커버리지 맵을 공유 하는 것이 확실히 더 나은 접근 방식입니다. 그러나 실제로 는 또 다른 문제가 있기 때문에 여전히 최선의 접근 방식 이 아닐 수 있습니다. 여러 에이전트가 있고 각각 정책을 학습 하고 변경하는 경우 이는 환경을 비정상적으로 만듭니다. 이는 기본 Markov 결정 프로세스가 시간 이 지남에 따라 변경됨 을 의미합니다. 그리고 이것이 문제 가 되는 이유는 많은 강화 학습 알고리즘 이 환경 이 고정되어 있을 것으로 기대하기 때문입니다. 그렇지 않으면 움직이는 표적을 쫓는 것입니다.

다중 에이전트 강화 학습의 경우 각 에이전트 가 다른 에이전트 가 수행 하는 작업을 학습 하려고 하는 상황 이 발생합니다.​ ​ 그러나 동시에 다른 에이전트 도 학습 하고 변화하고 있습니다.​​ 따라서 그들은 모두 서로 의 정책 변화 에 지속적으로 반응하고 있으며 결코 해결책 에 수렴 하지 않을 수도 있습니다 .

여기서 내가 의미하는 바를 더 잘 이해하기 위해 다른 시나리오를 살펴 보겠습니다. 여기에는 이 상태에 있는 두 명의 에이전트 가 있습니다 . 중앙 지점 을 제외 하고 둘 다 진공청소된 영역 으로 둘러싸여 있습니다 . 녹색 진공이 빨간색 진공 이 기다리 거나 다른 방향 으로 움직일 것으로 기대 하고 있으므로 녹색 진공 의 정책 은 환경 이 이 상태 에 있을 때 이 공간을 차지 하려고 하는 방법 을 학습 했다고 가정 해 보겠습니다 .

그러나 붉은 진공 역시 비슷한 기대를 갖고 중앙 공간을 점유 하려고 할 수도 있다. 이는 불법 행위이며 두 에이전트 모두 부정적인 보상을 받게 됩니다.​​ 이제 하나의 에이전트 만 학습 하는 경우 다음 에피소드 에서 해당 에이전트 는 다른 진공 이 해당 셀 을 덮을 것이므로 이 상태 에 있을 때 기다리는 방법 을 배우게 되며 둘 다 더 큰 보상 을 받게 됩니다 .

그러나 두 진공청소기 모두 학습 중인 경우 다른 진공청소기 가 대신 움직일 것으로 예상하므로 다음 에피소드에서는 둘 다 움직이지 않을 수 있습니다. 따라서 이것은 비정상 환경 입니다 . 에이전트 는 동시에 정책 을 변경 하기 때문에 다른 엔터티 가 수행 할 작업 을 따라갈 수 없습니다 .​​​​​ 따라서 솔루션 이 결코 수렴 되지 않는 상황 이 발생할 수 있습니다 .

공평하게 말하면 훈련의 확률 론적 특성으로 인해 많은 에피소드를 통해 이 두 에이전트가 이 하나의 자유 공간을 커버하기 위해 함께 작업하는 방법을 배우는 것이 가능 합니다. 불행하게도 이와 같은 탈 중앙화 학습에는 또 다른 비효율성 이 발생 합니다 . 그리고 즉 , 녹색 과 빨간색 진공 청소기 가 이 상태 에서 녹색 이 왼쪽 , 빨간색 이 오른쪽 에 사각형 을 덮는 방법 을 배웠 더라도 개별 정책 으로 인해 위치 가 바뀌면 다시 배워야 합니다 .​​​​​​​​​ 이를 새로운 상태 로 보고 무엇 을 해야 할지 알아 내야 합니다 .​​

그러나 이 두 에이전트 가 동일 하다면 , 즉 동일한 관찰 을 하고 동일한 조치를 취할 수 있다면 이들이 행동하는 방식 에는 차이 가 없습니다.​​​ 오른쪽 로봇 은 항상 왼쪽으로 이동해야 하고 , 왼쪽 로봇 은 어떤 로봇 이 어디에 있든 대기해야 합니다.​

괜찮은. 따라서 분산형 접근 방식 은 구현 관점에서 더 간단하며 일부 MARL 상황에서는 유용 합니다 . 그러나 이는 비정상 환경 과 같은 다른 문제를 야기합니다 . 분산형 아키텍처 가 제대로 작동 하지 않는 상황 에서는 중앙 형 아키텍처를 사용할 수 있습니다.

중앙 집중식 아키텍처 에는 에이전트의 경험을 수집 한 다음 해당 정보를 모두 사용하여 정책을 학습 하고 에이전트 에 다시 배포 하는 더 높은 수준 의 프로세스 가 있습니다 .​ 그리고 이는 각 에이전트 가 행동 에서 동일한 관찰 을 한다는 점 에서 동일 할 경우 특히 유용 합니다 . 왜냐하면 이제 각 에이전트 에 최적 인 단일 정책 을 개발할 수 있기 때문입니다.​

예를 들어 , 각 진공청소기는 자체 위치와 적용 범위 맵을 관찰 한 다음 이를 공통 버퍼에 저장할 수 있습니다. 따라서 환경 상태는 이제 세 진공청소기 모두 의 위치 와 해당 집합 적 적용 범위 맵 이 됩니다. 그리고 중앙 집중식 강화 학습 알고리즘 은 이러한 집단적 경험을 사용 하여 세 대의 로봇을 모두 전체적으로 가장 유익한 방식으로 움직일 정책 을 마련 합니다 .​​ 이러한 방식 으로 , 어떤 로봇이 어느 위치에 있는지는 중요하지 않습니다. 왜냐하면 로봇은 상호 교환이 가능하기 때문입니다.

그래서 우리는 각 로봇 이 기본적으로 다른 로봇의 모든 경험으로부터 학습하기 때문에 발생해야 하는 학습 의 양 을 효과적으로 줄였습니다. 뿐만 아니라.​ 모든 에이전트 가 더 큰 개체로 취급 되고 서로 의 정책 변경 사항을 알고 있으므로 에이전트를 위한 고정 환경을 만들었습니다.​​​ 그리고 이는 에이전트 가 서로 의 변경 사항을 추적하는 상황을 제거 하여 결국 정책 이 수렴 될 수 있는 상황 을 제공합니다.

괜찮은. 음, 이것은 MARL에 대한 매우 간단한 소개였습니다. 물론 우리 가 모든 것을 다루지 는 않았지만 중앙 집중식 학습과 분산 학습의 사용 사례와 각 아키텍처의 일부 단점을 이해 하기 시작할 수 있기를 바랍니다. 그리고 저는 항상 몇 가지 예를 가지고 노는 것이 알고리즘 이 어떻게 작동하는지 더 잘 이해할 수 있는 좋은 방법이라는 것을 알았습니다.

따라서 이를 염두에 두고 여러 가지 MARL MATLAB 예제에 대한 링크를 아래에 남겨 두엇습니다. 구체적으로, Train Multiple Agents for Area Coverage라는 강화 학습 도구 상자 예제를 확인해야 합니다. 저는 이 비디오의 개념을 설명하기 위해 이 예제 버전을 사용 했습니다. 따라서 다중 에이전트 학습을 더 자세히 살펴보기 에 좋은 곳입니다.

이 예에서는 중앙 집중식 및 분산 형 학습 아키텍처를 모두 사용해 보고 실제 학습 프로세스를 확인할 수 있습니다. 에이전트 가 에피소드 마다 어떻게 변화하는지 , 그리고 전체적으로 가장 많은 보상 을 수집 하는 데 어떻게 수렴 하는지 지켜 보는 것이 멋지다고 생각 합니다 . 학습 전략을 변경할 수 있을 뿐만 아니라 학습 하이퍼 매개 변수 를 가지고 놀 면서 이것이 최종 결과 에 어떤 영향 을 미치는지 에 대한 직관 을 개발할 수 있는지 확인할 수도 있습니다 .

좋아요 , 그래서 지금 은 이 영상을 남겨 두겠습니다.​​​ 향후 다른 Tech Talk 동영상을 놓치고 싶지 않다면 이 채널을 구독 하는 것을 잊지 마세요. 그리고 내 채널인 제어 시스템 강의를 확인하고 싶은 시다면 거기에서 더 많은 제어 이론 주제 도 다루고 있습니다. 시청해 주셔서 감사드리며 , 다음에 뵙겠습니다.

728x90