[ICRA 2024]NoMaD : Goal Masked Diffusion Policies for Navigation and Exploration

안녕하세요. 이번에 소개드릴 논문은 ICRA 2024에 게재된 NoMaD: Goal Masked Diffusion Policies for Navigation and Exploration이라는 논문입니다. GNM, ViNT에 이어 UC 버클리 Sergey Levine 교수님 연구실에서 발표한 후속 연구이고 또 지금까지 리뷰했던 모델들과 마찬가지로 metric 지도 없이 순수 RGB 시각 정보만으로 탐색과 goal navigation을 수행하는 연구라고 생각하시면 좋을 것 같습니다.

현재 연구실에 굴러다니는 Scout Mini 플랫폼에 실제로 적용해볼 모델로 생각을 하고 있고 얼마 안남았지만 올해가 지나가기 전까지는 특정 공간에서의 탐색 영상을 바탕으로 Topological Map도 형성하여 기록도 해보고 특정 공간에서 데이터를 수집해서 NoMaD 파인튜닝까지 진행해서 최종적으로는 실제 공간에서 모바일 플랫폼을 자율적으로 움직이는 과정까지를 목표로 생각은 하고 있습니다. 물론 이전에 시뮬레이션 상에서도 많은 테스트도 해볼 생각입니다. 사실 논문으로만으로는 이해하기 힘든 부분에 대해서 코드도 건드려보면서 전반적인 네비게이션 모듈들의 입출력 과정을 이해하기에 좋은 과정이라고 생각합니다.

바로 NoMaD 논문 리뷰를 시작하겠습니다.

Introduction

이런 이미지 goal, 즉 목표 조건을 기반으로 행동하는 네비게이션 연구는 보통은 단순히 지정 목표룰 찾아가도록 학습된 policy만으로는 부족합니다. 단순히 로봇한테 목표를 향해 가라 라는 명령으로만으로는 제대로 행동하기 어렵다는 뜻입니다. 사용자가 사진 한 장으로 목적지를 지정하면 로봇은 그 이미지 속 장소를 실제 환경 속에서 스스로 탐색하면서 찾아가야하는 상황인데, 이런 경우 단순이 goal-conditioned policy만 학습하는 것은 부족합니다. 이유는 로봇은 먼저 주변을 돌아다니면서 환경을 파악하는 능력인 탐색 능력이 필요하고 이 과정 중에 필요하다면 다양한 후보 목표를 생성해서 그 목표까지 시도하면서 움직이는 그런 행동을 수행해야하기 때문입니다. (이런 탐색 과정을 task-agnostic behavior라고 합니다.)
그래서 기존 연구들 같은 경우에는 이런 문제를 해결하기 위해서 보통은 탐색용 고수준 정책이나 혹은 Subgoal proposal 모델을 따로 두어 탐색용 정책 따로, goal navigation 정책 따로 두어서 이러한 문제를 해결하고자 합니다.
이러한 맥락에서 대표적으로 저번 주에 리뷰했던 ViNT 같은 경우 해당 논문에서 제안했던 방식은 탐색과 Goal-conditioned Navigation을 명확히 분리하여 처리하는 2단 구조였습니다. 즉 ViNT는 로봇이 처음 보는 환경에 직면했을 때 단순히 goal-conditioned policy 하나로 탐색을 수행하기 어렵다는 점을 인정하고, 이를 해결하기 위해 탐색을 위한 이미지 생성 기반 Subgoal Diffusion 모델을 별도로 둡니다.
모르시는 분들이 있을 수 있으니 저번 주에 리뷰했던 ViNT에 대해서 간단하게 언급하고 넘어가자면 ViNT논문에서 제안했던 방식은 먼저 Diffusion 기반 subgoal proposal 모델이 여러 개의 중간 목표(subgoal images)후보 들을 생성하고 그 중 가장 적합한 subgoal을 선택한 뒤 ViNT 정책을 통해서 그 subgoal 까지 이동하는 shor horizon navigation을 반복적으로 숭해합니다. 결국 이 구조의 특징은 탐색 행동(task agnostic behavior)와 goal navigation(task specific behavior)이 명확하게 다른 모듈에서 이루어진다는 것입니다. 탐색 단계에서의 행동 결정의 핵심은 이미지 생성 diffusion 모델이고 goal 이미지가 주어졌을 때 navigation을 수행하는 것은 ViNT 하나로 충분합니다. 따라서 저자들은 이렇게 탐색과 goal navigtion이 두개로 분리된 구조 자체를 살짝 부정적으로 보고(저자가 말하길 이렇게 모델을 분리하면 시스템이 복잡해지고 각 작업에 특화된 메커니즘을 따로 구성해야한다고 합니다.) 그래서 저자들은 탐색에 필요한 task agnostic behavior와 목표 수행에 필요한 task specific behavior를 모두 표현할 수 있는 정책 하나를 학습하고자 하면서 필요할 때마다 이 두 행동 모드를 자연스럽게 전환할 수 있도록 하고자 아래 그림과 같은 NoMaD라는 새로운 방식을 제안합니다.

결국 단순히 NoMaD의 핵심 아이디어는 탐색과 goal navigation을 굳이 두 개의 모델로 분리할 필요가 없다 라는 것이고 이를 위해서 Goal Masking 기법을 도입하여 목표 조건을 켜고 끌 수 있게 하고, Diffusion 기반 행동 모델링으로 복잡한 행동 분포를 표현하면서 Topological Map, Frontier Exploration 같은 고수준 프레임워크와 결합하여 실제 로봇에서 장기 탐색과 목표 도달을 수행하게 구성하였다라고 보시면 좋을 것 같습니다. 자세한 동작 방식에 대해서는 Method 에서 다루도록 하겠습니다.

Method

ViNT 구조
위는 NoMaD 구조

일단 기본적으로 NoMaD는 하나의 모델을 통해서 목표가 주어진 상황에서는 목표를 향해서 이동하고 목표가 없는 상황에서는 환경을 탐색하는 두 역할을 동시에 수행할 수 있습니다. 또한 ViNT를 기반으로 하기 때문에 기존 ViNT에서 추가된 핵심적인 2개가 어텐션 기반 goal masking, 그리고 행동 분포를 생성하는 Diffusion policy 이 두가지 라고 보시면 됩니다. 먼저 간단하게 goal masking 에 대해서 설명을 드리면 목표 이미지 o_g가 있을 때는 이를 활용하고 없을 때에는 이 정보를 마스킹하여 이 정책이 유연하게 두 모드를 모두 처리할 수 있도록 하는 것이고 Diffusion 모델같은 경우에는 로봇이 수행할 수 있는 여러 행동들의 복잡한 행동 분포를 학습해서 적절한 다양한 행동 후보를 생성하는 역할을 합니다.(ViNT에서와는 아예 다른 Diffusion 모델입니다.)

Goal Masking

먼저 목표(goal) 기반과 목표 없는 탐색을 모두 수행할 수 있는 하나의 정책을 학습하기 위해 위에 있는 ViNT 구조를 바로의 아래의 그림처럼 구조를 수정합니다.
기본적으로 input은 과거 objervation images : o{t-P:t} 개 그리고 goal image와 현재 관찰 images [latex]o_t, o_g 입니다.
먼저 그림의 보라색 위치에 해당하는 컨텍스트 벡터 c_t를 출력하기 위한 과정을 수식으로 표현하면 아래와 같습니다.
c_t = f(\psi(o_i), \phi(o_t, o_g), m)
위 수식을 이해할 때 위의 아래의 피규어를 참고해서 매칭하면서 이해하시면 도움이 됩니다.
결국 여기서 m이 의미하는 것은 goal token \phi(o_t, o_g)을 마스킹할지 여부를 결정하는 역할을 한다고 이해하시면 좋을 것 같습니다. m=1이라면 goal token을 마스킹 하여 탐색 모드로 동작하게끔 하는 것이고 m=0이라면 goal token을 그대로 사용해서 이전 관찰 토큰들이랑 같이 goal 정보를 활용해서 목표 기반 네비게이션을 수행하는 모드로 동작하게 됩니다. 뒤에 트랜스포머 attention 구조에서 이 마스킹을 구현해서 해당 goal token의 사용 여부를 제어한다고 보시면 될 것 같습니다.

그럼 어떻게 학습을 시키는지에 대해서 설명드리도록 하겠습니다. 학습시에는 전체 데이터 중에서 절반의 데이터에 대해서는 목표 기반의 행동을 수행하도록 학습을 시키고 나머지 절반에서는 탐색 행동을 하도록 학습을 시킵니다. 그래서 학습 시에는 두 행동 모드를 반절씩 균등하게 학습하도록 합니다.

만약에 m=0인 경우 목표 기반의 네비게이션을 수행하는 모드라면 트랜스포머는 목표 이미지까지 포함된 전체 input을 보고 컨텍스트 벡터 c_t를 생성하게 되고 뒤에 자세하게 설명하겠지만 Diffusion 모델을 통해서 미래 행동 시퀀스 a_t를 생성하게 될 것이고 GT 값으로는 미래 행동의 GT trajectory 액션 시퀀스, 그리고 예측한 거리와 GT 거리를 통해 손실함수를 계산하는 과정을 통해 학습이 진행될 것입니다.
m=1인 경우에는 goal이 없는 경우니 탐색 행동을 학습시키도록 하는데 이 과정에서는 위와 동일하게 input들은 동일하지만 계산된 goal token이 transformer attention연산에서 완전히 무시되게 됩니다. 즉 입력 자체는 동일하지만 트랜스포머는 goal token을 볼 수 없게됩니다. 사실상 goal 없이 observation만을 기반으로 행동을 결정하는 맥락을 학습하게 되는 것입니다. 따라서 이렇게 생성된 컨텍스트 벡터 c_t를 통해서 최종 distance나 액션 값을 예측을 할 텐데 이과 정에 그럼 GT는 어떻게 되고 loss는 어떻게 계산되는거지? 라는 의문점이 드실 수 있습니다. 여기서 중요한 것은 m=1인 경우 input 값은 동일하되 goal을 입력에서 안보이게 하는 것 뿐이지 GT는 바꾸지 않습니다 결과적으로 m=0일 때와는 별반 차이는 없습니다. 액션 값을 예측하는 입장에서 goal 정보 없이 컨텍스트 벡터를 예측하였지만 마스킹된 goal에 해당하는 action을 GT로 사용한다면 실제로 goal 없이도 안부딪히고 움직일 수 있게 자연스럽게 학습이 이루어지게 되니 이런식으로 학습을 진행한 것 같습니다.

Diffusion Policy

먼저 앞서 컨텍스트 벡터 c_t를 기반으로 만들어지는 행동 분포는 특히 목표가 주어지지 않은 경우에 매우 복잡해질 수 있습니다. 예를 들어 교차로에서 로봇은 왼쩍 회전과 오른쪽 회전에 높은 확률을 가져야하고 충돌을 유발하는 행동은 매우 낮은 확률을 가져야합니다. 이렇게 복잡한 다양한 행동 시퀀스 분포를 단일 정책 하나로 모델링 하는 것은 쉽지 않다고 합니다. 따라서 저자는 이러한 문제를 해결하려고 디퓨전 모델을 사용했다고 합니다.

먼저 미래 행동 시퀀스 a_t^K를 랜덤 샘플링한후 K번의 디노이징 과정을 수행합니다. 그래서 이 과정에서 노이즈가 줄어들면서 {a_t^K, a_t^{K-1}, \ldots, a_t^0}
와 같은 중간 행동 시퀀스들이 생성되고 궁극적으로 노이즈가 제거된 행동 시퀀스 a_t^0가 생성되게 됩니다.

디노이징 과정은 아래의 수식과 같습니다.
a_{t}^{k-1} = \alpha \cdot (a_t^k - \gamma \epsilon_\theta(c_t, a_t^k, k) + \mathcal{N}(0, \sigma^2 I))
위에서 k는 현재 디노이징 스텝을 의미하고 \epsilon_\theta는 노이즈를 예측하는 신경망이고 나머지는 노이즈 스케쥴에 따라 정해지는 계수라고 합니다

학습시에는 주어진 GT행동 시퀀스에 인위적으로 잡음을 추가하게 되고 노이즈 예측 네트워크 \epsilon_\theta가 이 잡음을 얼마나 정확하게 예측하는지를 기준으로 MSE Loss를 계산하게 됩니다. (참고로 노이즈 예측 네트워크는 U-Net기반의 총 15개의 Conv layer로 이루어져있다고 합니다.)위와 같은 방식으로 diffusion policy 전체를 학습하게 됩니다.

결과적으로 아래와 같은 loss fuction으로 end-to-end로 학습이 이루어지게 됩니다.

첫번재 항이 Diffusion policy 관련해서 노이즈 예측 관련 loss이고 두번째 항이 action, distance 관련 loss항이라고 보시면 좋을 것 같습니다.

사실 loss function의 두번째 항만 보았을 때 ViNT에서의 학습과정과는 별반 다를 게 없기 때문에 해당 논문에서도 데이터 샘플링은 어떻게 했으며 예측하는 action의 길이는 얼마며 이런 것들은 자세하게 다루지는 않았습니다. 해당 부분이 궁금하시면 ViNT를 참고하면 좋을 것 같습니다.

Evaluation

먼저 이 NoMaD는 GNM 및 SACSoN 데이터셋을 조합해 학습했다고 합니다. 해당 데이터셋들은 다양한 환경과 다양한 로봇 플랫폼에서 수집된 대규모 데이터로 구성되어 있고 보행자가 많은 환경을 포함해 100시간 이상의 실제 로봇 주행 데이터(real-world trajectories)를 포함하고 있습니다.

저자들은 NoMaD를 실내, 실외를 포함해서 총 6개의 다른 환경에서 평가했고 실험을 통해서 아래 3가지 질문에 대한 답을 하고자 합니다.

Q1. 실제 환경(real-world)에서 탐색과 목표 기반 네비게이션 능력 측면에서 NoMaD는 기존 시각 기반의 방법들과 비교해 어떤 성능을 보이는가?

Q2. 탐색(task agnostic) + 목표 기반 네비게이션(task specific)을 하나의 정책(joint policy)으로 통합했을 때, 각 행동을 별도 정책으로 학습했을 때와 비교해 어떤 차이가 나는가?

Q3. NoMaD의 성능에서 visual 인코더와 goal masking 구조는 얼마나 중요한 요소인가?

저자들은 위와 같은 질문을 기반으로 평균 성공률, 실험당 평균 충돌 횟수를 리포팅하여 평가를 진행합니다.

Benchmarking Performance

저자들은 Q1에 대한 답을 하기 위해 6가지 baseline 모델들을 선정해서 두가지 측면에서 성능을 비교합니다.

  1. 새로운 환경을 탐색하여 목표 위치를 효과적으로 찾아낼 수 있는지(탐색 능력 평가)
  2. 이미 탐색이 완료된 환경에서 목표 이미지로 지정된 위치에 도달할 수 있는지(goal 기반 네비게이션 능력 평가)
    이때 로봇은 학습된 정책을 이용해 토폴로지 그래프를 구축하면서 탐색한 경로를 저장합니다.

먼저 위 테이블을 보면 NoMaD는 모든 baseline 대비 일관적으로 더 좋은 성능을 보이는 것을 확인할 수 있습니다. subgoal Diffusion 같은 경우가 앞서 언급했던 ViNT 시스템에서 탐색시 활용하는 이미지 디퓨전 모델과 goal 기반 네비게이션 정책과 결합해서 사용하는 경우인데 다른 기존 baseline보다는 그나마 성능이 가장 높긴 하지만 모델의 크기가 너무 크다는 단점이 있습니다. 그리거 subgoal diffusion 대비 퉁돌 회피에서도 높은 성능 향상을 보입니다.

Figure 4와 Figure 5는 NoMaD가 실제 실내,실외 환경에서 goal을 탐색하며 움직이는 롤아웃을 보여주는데, 특히 교차로 등에서 다양한action distribution을 정확하게 유지하면서, goal이 주어지는 순간에는 그에 맞춰 정확한 goal-conditioned 행동으로 전환되는 모습을 확인할 수 있습니다.

B. 개별 정책 vs 통합 정책

저자들은 Q2에 대한 질문에 답을 하기 위해서 goal masking이 성능에 얼마나 영향을 미치는지 분석하고자 합니다. 그래서 탐색과 골기반 네비게이션 정책을 하나의 모델로 공동학습한 NoMaD 모델을 최고성능을 가진 goal 기반 네비게이션 모델 그리고 최고 성능을 가진 탐색 모델을 베이스라인으로 비교를 합니다.

위에서 Diffusion Policy같은 경우는 NoMaD와 동일한 visual encoder를 사용하고
goal mask m = 0으로 설정한 diffusion policy를 학습한 친구 입니다.
이 모델이 저자들이 정한 최고 성능의 탐색(exploration) baseline이고 ViNT Policy는 그냥 이전 연구 ViNT라고 생각하시면 좋을 것 같습니다. 저자들이 공개한 ViNT navigation policy 체크포인트를 그대로 사용하여 실험한 것 입니다. 이것이 저자들이 정한 최고 성능의 goal-conditioned navigation baseline 입니다.
결괴적으로 모델 용량은 비슷 비슷하지만 goal masking을 통해 공동학습된 NoMaD 정책은 목표 기반 네비게이션에서의 ViNT와 동일한 수준의 성능을 보이고 목표 없는 탐색에서도 Diffision Policy와 동일한 수준의 성능을 보이는 것을 확인할 수 있습니다. 저자는 두가지 행동(탐색, 목표기반 네비게이션)을 학습하는 과정에서 공유되는 표현과 affordance가 존재하고 단일 정책 하나가 이 두 행동을 모두 좋은 성능으로 수행할 수 있게 한다고 분석합니다.

C. Visual Encoder and Goal Masking

저자들은 Q3에 답을 하기 위해서 visual encoder와 goal masking 구조를 여러 방식으로 변경하여 실험을 수행합니다.
인코더 같은 경우는 2가지(CNN + MLP 기반, ViT 기반의 인코더)를 가지고 다양한 실험을 했다고 합니다.

먼저 visual Encoder를 CNN으러 한 경우에는 관찰 이미지와 목표 이미지를 fusion 할 시에 Early fusion을 적용할지 Late fusion을 적용할지에 따라 달리 실험을 하였습니다.
early fusion 같은 경우에는 CNN 출력 직후, late fusion은 최종 MLP 이후 fusion 하는 방식으로 실험을 합니다.

실험 결과 NoMaD(EfficientNet-B0)가 ViT, CNN 기반 보다 훨씬 좋은 성능을 보이는 것을 확인할 수 있습니다. NoMaD 같은 경우에도 관찰 이미지와 목표 이미지를 fusion 하기는 합니다. 이 때 fusion은 input 단에서 하나로 바로 fusion을 합니다. CNN에서 Fusion을 기존의 NoMaD나 ViNT방식인 Input 단에서 채널 축으로 합치는 방법을 왜 고려하지 않았는지 실험할 때 input 단에서 fusion하지 않은 이유가 궁금하긴 하네요. ViNT에서 input 단에서 fusion을 하는 것이 성능이 훨씬 좋다고 실험결과까지 보이면서 분석을 했는데 CNN 기반 visual encoder도 해당 실험을 리포팅 하지 않은 부분이 아쉬운 것 같습니다. 그리고 모델의 capacity가 큰 ViT 같은 경우 성능이 엄청 안좋은 것을 확인할 수 있는데 저자는 해당 이유를 diffusion과 end-to-end로 학습 시 최적화 난이도가 커져서 좋은 정책을 학습하지 못했을 것이라고 분석을 합니다.

Conclusion

결국 핵심은 기존의 ViNT 시스템에서 탐색과정과 goal navigation을 따로 두지 않고 하나의 정책으로 합쳐서 goal masking이라는 단순한 매커니즘 하나로 두 행동 모드를 자연스럽게 스위칭하면서 이를diffusion policy에 통합했다는 것이 기존의 방식과의 큰 차이점인 것 같습니다. 그리고 모델이 CPU에서도 빠르게 돌아갈 만큼 연산량도 작은 구조를 갖는 것도 실제 사용 측면에서도 실용적인 포인트라고 생각합니다. 근데 기존 ViNT 시스템같은 경우에는 파인튜닝을 통해서 골 이미지가 아닌 언어 지시나 좌표 기반 목표 설정을 통해서 goal navigation을 수행할 수 있었는데 해당 diffusion policy로 통합한 NoMaD같은 경우에는 다른 태스크로의 확장 가능성을 보여주지 못한점이 살짝 아쉬움이 있습니다. 그래도 개인적으로는 이 구조 그대로 실제 로봇 플랫폼에서 한번쯤은 부담없이 적용 시켜볼만한 좋은 논문인 것 같다는 생각이 듭니다. 이만 리뷰 마무리하도록 하겠습니다.
감사합니다.

Author: 안 우현

1 thought on “[ICRA 2024]NoMaD : Goal Masked Diffusion Policies for Navigation and Exploration

  1. 안녕하세요 우현님 좋은 글 감사합니다.
    잘 아는 분야가 아니라 읽으면서 궁금한 점은 많지만.. 우선 물어보고 싶은 점은 goal masking으로 이전 방법론의 step을 하나로 바꿔주는데, 이를 binary로만 처리해야하는지, 목표와 현재 상태를 이산적이 아닌 연속적으로 표현할 수 는 없는지, 물론 학습과정에서는 0과 1로 모드를 선정하는 것이 깔끔한 것 같지만 실제 실행상황에서는 현재 상태를 어떠한 정량적 수치로 표현할 수 있는지가 궁금합니다. 또한 attention 내부에서 어떻게 masking이처리되는지 궁금합니다. 그리고 충돌이라는 것이 어떻게 정의되는 것인지 궁금합니다. 감사합니다.

Leave a Reply

Your email address will not be published. Required fields are marked *