[RA-L 2024]CLARA : Classifying and Disambiguating User Commands for Reliable Interactive Robotic Agents

안녕하세요. 이번에 새롭게 분야를 넓히게 되면서 Robot과 관련된 논문을 읽게 되었습니다. 최근에 Robot과 LLM이 잘 케미를 이루며 새로운 시너지를 내는 듯한 논문이 많은데, 해당 논문도 LLM을 적극적으로 잘 이용하여서 one step을 내딛는 논문인 것 같습니다. 그럼 시작합니다!

<1. Introduction>

로봇 agent는 LLM을 이용하여 사용자의 명령을 이해하고 추론함으로써 human-robot interaction을 향상시킬 수 있습니다. 이 과정에서 사용자의 명령이 모호하거나 심지어 실행불가능한 경우가 존재할 수 있는데, 사용자의 명령을 적절하게 해석하는 것은 interactive system의 신뢰성을 달성하는데 필수적인 요소입니다.

본 논문에서는 신뢰성 있는 system을 구축하고자 주어진 사용자의 명령이 명확한지, 모호한지 또는 실행 불가능한지를 추론하는 것을 목표로 합니다. 이를 위해서 본 논문에서는 불확실성 추정 방법을 이용하여 해당 명령의 불확실성을 측정하고, 명령이 명확하다고 분류되면 이를 처리하고 그렇지 않은 경우에는 상황에 맞는 context prompt를 활용하여 모호한 명령과 실행 불가능한 명령을 구별합니다. 모호한 명령의 경우, 사용자와의 상호작용을 통해 질문을 생성하여 명령을 명확히 합니다.

본 논문에서 목표하는 것을 컴팩트하게 정리하면 1) 사용자 명령을 명확한 것, 애매한 것, 실행 불가능한 것으로 분류하고 2)로봇 상황을 인식하여 애매한 명령에 대한 해석과정을 진행하는 것을 목표로 합니다.

본 목표에서 키포인트는 상황을 인식하여 명령에 대해 해석하는 것인데요, 그렇다면 상황 인식(Situational awareness)은 왜 필요할까요? 같은 명령어 일지라도 다른 상황에서 다른 의미를 가질 수 있기 때문입니다. 로봇에 “he looks tired, can you help him?”과 같은 명령어가 주어졌다고 해봅시다. 로봇 주변의 객체로는 coffee, coffee machine, wather and bread가 주어졌습니다. 이와 같은 상황에서 robot agent에 따라서 해석이 달리 되는데, cooking robot이라면 음식을 하거나 커피를 내릴 것이고, cleaning robot이라면 실행 불가능한 명령으로 명령어를 분류해야 합니다. 또한 message robot이라면 명령어에 있는 정보 부족으로 인한 모호함 때문에 정보를 더 얻기 위해서라도 다시 물어봐야할 것입니다. 이처럼 동일한 환경일지라도 상황에 따라서 반응이 달라지게 됩니다. 이 때문에 상황 인식은 반드시 고려되야 합니다.

본 논문에서는 CLARA(CLassifying and disAmbiguating user commands for reliable interactive Robotic Agents)를 제안하여 이를 해결하고자 합니다. 자연어 명령에서 다양한 불확실성을 처리하는 인터페이스를 구축하는 것을 목표로하며 특히나 비구조화된 raw text(예를 들어, “he looks sleepy”)에서 이를 수행하는 것을 목표합니다. CLARA는 2개의 part로 구성됩니다. 명령을 명확한 것과 그렇지 않은 것으로 구분하고, 모호하거나 실행 불가능한 명령을 불명확한 것으로 분류하는 것입니다. 불확실성은 불완전한 정보 또는 agent의 능력 한계로 인해 발생할 수 있기 때문에 먼저 LLM의 예측 불확실성을 추정하는 방법을 제안합니다. 그 다음, LLM의 zero-shot 능력을 기반으로 하는 상황 인식을 통해 불확실한 명령의 실행 가능성을 확인합니다. 또한, 모호한 명령으로 분류된 경우 사용자가 raw text로 상호작용할 수 있도록 질문 생성을 통해 이를 해소하는 작업을 수행합니다.

본 논문에서는 CLARA 방법을 제안한 것 뿐만 아니라 high-level user command, unertainty type 등이 포함된 SaGC(Situaltional awareness for Goal Classification in robotic tasks) 데이터셋 설계 또한 진행하였습니다.

본 논문의 contribution을 정리하면 다음과 같습니다.

  1. 모호하거나 실행 불가능한 명령어를 인식하기 위해 LLM에서 불확실성을 포착하는 방법을 소개
  2. 사용자의 명령에서 불확실성의 유형(예: 모호함, 실행 불가능)을 상황 인식을 바탕으로 분류하고, raw text를 이용해 사용자와의 상호작용을 통해 모호함을 해소하는 기법을 제안함.
  3. LLM으로부터 situation-aware uncertainty를 평가하기 위한 데이터셋을 제시함.

<2. Method>

본 논문의 방법론의 전체 프레임워크는 Fig1을 통해서 확인할 수 있습니다. 먼저, LLM으로부터 불확실성을 추정하는 방법을 제안합니다. 그런 다음 불확실성이 추정되면, 임계값에 따라 확실한 입력과 불확실한 입력을 구분합니다. 이후에 불확실한 명령이 실행 가능한지를 확인하기 위해서 zero-shot 방식을 이용하여 모호하거나 실행불가능한 명령인지를 분류합니다. 또한, 모호한 명령의 경우, disambiguation 방식을 통해 zero-shot 방식으로 처리합니다.

그럼, 전반적인 프로세스에 대해서 정리해봤으니 각 단계의 디테일한 부분에 대해서 설명드리겠습니다.

<2.1 Problem Formulation>

우선, 본 논문에서는 사용자의 high-level 명령어가 로봇이 명령어를 실행할 수 있을 만큼 구체적이거나 명확하지 않을 수 있으며, 사용자 상황의 이해 부족으로 인해 모호하거나 실행 불가능한 목표일 수 있음을 가정합니다. 이 때문에 본 논문에서는 LLM의 예측에서 불확실성을 예측하고, 불확실한 목표의 유형(즉, 모호한 것 또는 실행 불가능한 것)을 예측하는 것입니다. 그리고, 만약에 목표가 실행 가능하지만 모호하다면, 추가 정보를 수집하기 위해 사용자에게 질문을 생성하여 명확히 할 수도 있습니다.

그럼 본 논문에서 사용한 주요 요소에 대해서 정리해보겠습니다

  • 고수준 목표 명령(high-level goal command; $x^g$) : 로봇이 수행해야 하는 사용자 명령
  • 환경 내 객체 목록($x^s$) : 로봇이 주어진 상황에서사용할 수 있는 객체들
  • 컨텍스트 (Context; $c$) : 상황 인식을 위한 추가 정보

⇒ system의 입력으로는 고수준 목표($x^g$)와 환경 내 객체 목록($x^s$), few-shot의 컨텍스트($c$)를 가집니다.

  • 로봇의 행동($y$) : 로봇이 수행할 수 있는 행동
  • 불확실성 ($\sigma$) : 예측의 불학실성을 나타내는 값

⇒ 입력 후에 LLM은 로봇이 수행할 수 있는 간단한 행동($y$)를 생성하거나 텍스트를 통해 불확실성($\sigma$)에 대해 설명합니다.

<2.2 Uncertainty Estimation of LLM>

먼저, LLM의 불확실성 추정 방법에 대해서 설명드리고자 합니다. 그 전에 앞서서, 본 논문에서 제안한 방법은 모델을 추가 학습 할 필요가 없으며, 모델 weight 혹은 token 확률을 평가하는 것이 불가능한 경우에도 사용할 수 있다는 장점이 있음을 먼저 밝히고 설명 시작하겠습니다.

논문의 저자는 입력의 확실성 정도가 LLM의 예측의 안정성과 일관성에 영향을 미친다고 가정하는데요. 이를 기반으로 LLM이 불확실한 조건에서 더 다양한 출력을 생성하도록 하기 위해 context sampling을 수행합니다.

context sampling을 수행하기 위해, 먼저 $k$개의 context를 선택하고, 장면 내에 있는 요소들의 순서를 섞습니다. 이렇게 순서를 바꾸고 LLM에 입력했을 때, 만약의 주어진 목표가 확실하다면, LLM은 context의 미세한 변화에도 불구하고 상대적으로 일관성을 유지하면서 예측할 것입니다. 반대로, 목표가 불확실하다면 제공된 특정 context에 따라 더 높은 변동성을 보일 것입니다. 그래서 이를 식으로 표현하면 아래와 같습니다.

해당 식에서 $y_i$는 $f(x^g, x^s, c_i)$의 형태이며, $f(\cdot)$은 LLM을 의미합니다. $K$는 keyword의 총 수를 나타내며, $y^k_i$는 생성된 문장 $y_i$에서 $k$번째 keyword를 나타냅니다. 여기서 keyword는 “robot.pick_and_give($y^1_i$, $y^2_i$)”와 같이 생성 과정에서 조작할 수 있는 구문을 의미합니다. $\mathbb{H}$는 샘플 수를 나타내며, 샘플링된 context $c_i$는 $p(C,x_s)$로부터 추출됩니다. 여기서 $C$는 전체 context set을 의미합니다. 수식 (1)을 보시면 $A$가 있는데, $A = \frac{2}{\mathbb{H} \cdot (\mathbb{H}-1)}$로, 본 논문에서는 $\mathbb{H}$는 15로 고정하여 사용하였습니다. 또한, 수식 (1)에 $g$가 사용된 것을 볼 수 있는데, $g$는 주어진 단어 또는 문장을 vector space로 매핑하는 사전학습된 함수를 의미합니다. 최종적으로 논문의 저자는 low-level 명령의 template(예를 들어서 “robot.pick” 부분을 의미합니다)을 빼고, keyword에 대한 word-to-vec embedding을 활용하여 output간의 pairwise distance를 계산합니다.

여기서 그치는 것이 아니라 더 나아가서 논문의 저자는 LLM이 주어진 입력의 불확실성을 인식하도록 유도하면, 그 불확실성을 더 정확하게 측정할 수 있을 것이라 가정하였는데요. 그래서 목표 입력의 시작 부분에 “Considering ambiguity of a goal: [$x^g$]”와 같은 prompt를 구성하였습니다. 이러한 방식을 “Uncertainty Aware Prompting”이라고 하며, 이 방법을 통해서 모델이 입력된 목표의 불확실성을 더 잘 이해하고자 하였습니다. 또한, 여러 샘플 중에서 불확실성을 분석하기 위해서, ‘clear’ sample set의 불확실성을 기반으로 CDF(경험 누적 분포 함수; empirical Cumnulative Distribution Function)를 계산하고, 이 데이터의 80번째 백분위를 불확실성의 threshold로 설정하였습니다.

예를 들어서, 몇 가지 sample prompt set $C=\{ C_1, C_2, C_3, C_4 \}$가 주어지고 이때 task는 “pick a block”이라고 해봅시다. (위의 그림을 참고해주시면 되겠습니다.) 먼저 서로 다른 prompt로 세 가지 sample을 만들고 샘플링합니다. 이 경우에 $y^1_1, y^1_2, y^1_3$은 각각 “yellow block”, “red block”, “blue block”이 되며, $K=1$은 한 개의 keyword, pick [object]에 해당합니다. word embedding space에서 distance matrix은 아래 행렬과 같이 되며, 이는 총 불확실성이 2.1이 됩니다.

$$ \begin{pmatrix} 0 & 2.5 & 1.7\\ 2.5 & 0 & 2.3\\ 1.7 & 2.3 & 0 \end{pmatrix} $$

<2.3 Classification and Disambiguation>

섹션 2.2까지는 불확실성에 대해서 단순히 정량화하여 측정하였는데, 이러한 경우 주어진 명령이 확실한지 여부만 판단할 수 있습니다. 이 때문에 논문의 저자는 단순히 명령이 확실한지 불확실한지를 판단하는 것을 넘어, 그 불확실성의 원인이나 근거를 설명하는 것이 중요하다고 언급하며, 이를 수행하기 위한 방법에 대해서 설명합니다.

해당 방법은 3개의 part로 구성되어 있습니다.

  1. feasibility check : 실행 가능한 것인지 확인
  2. reason generation : 이유 생성
  3. question generation : 질문 생성

각 단계들은 모두 LLM을 활용하여 진행하고, 이전의 질문이나 prompt를 기반으로 확장하며 동작합니다.

처음에는, 로봇의 능력에 따라 prompt의 마지막 줄을 구성하여 목표의 실행 가능성을 평가합니다. 먼저, 로봇의 유형과 로봇이 수행할 수 있는 가능한 동작을 prompt에 추가하여 agent가 자신의 상황을 인식하도록 합니다. 그런 다음 LLM에게 로봇이 task를 수행할 수 있는지를 “Yes” 혹은 “No”로 binary classification하도록 유도합니다.

앞에 주어졌던 예제에 이어서 prompt는 위와 같이 주어질 수 있습니다. 만약에 로봇이 task를 수행할 수 있는 것으로 판단되면, 불확실성의 이유를 생성하고 추가 정보를 수집하기 위해 사용자에게 질문을 함으로써 모호성을 제거합니다. 불확실성에 대한 이유와 질문은 “This code is uncertain because”, “What can I ask the user? Please”와 같은 prompt로 생성됩니다. 아래의 회색 박스를 통해서 prompt가 어떻게 구성되는지 볼 수 있습니다.

사용자로부터 답변을 받으면, system은 확장된 prompt와 함께 불확실성 추정 단계로 돌아갑니다.

<3. Experiments>

해당 논문의 경우, method 파트도 중요하지만 읽으면서 experiments의 파트도 중요하다 생각이 들었는데요. 본 논문서는 상황 인식과 불확실성에 대해 다음과 같은 연구 질문들을 다루고자 하였습니다.

(1) 제안된 CLRA가 다양한 환경에서 불확실성 정량화에 사용되는 이전의 접근 방식과 어떻게 대조되는가?

(2) 제안된 방법이 명확하거나 모호하거나 불가능한 사용자 명령을 정확시 식별할 수 있는 정도는 어느 정도인가?

(3) uncertainty-aware interaction module은 모호한 명령을 명확하게 하는 데 어떤 역할을 하는가?

(4) 제안된 방법을 실제 human-robot interaction scenario로 배포하는 것이 가능한가?

<3.1 Baseline>

본 논문에서는 불확실성 정량화와 관련하여, 4가지의 이전 방법론과 비교하는데요. entropy, normalized entropy, semantic uncertainty, lexical similarity를 사용합니다. 각 식에 대해서는 간단하게 수식만 작성해두고 넘어가도록 하겠습니다.

  • Entropy

$$ \mathcal{H} = -\sum^T_{t=1}\sum^V_{v=1} p(y^v_t|x)\text{log}p(y^v_t|x) $$

  • Normalized entropy

$$ \mathcal{H_{norm}}=-\frac{1}{T}\sum^T_{t=1}\sum^V_{v=1}p(y^v_t|x)\text{log}p(y^v_t|x) $$

  • semantic entropy

$$ SE(x)\approx |L|^{-1}\sum^L_{i=1}\text{log}p(L_i|x) $$

  • lexical similarity

$$ \mathbb{A}=\frac{2}{|\mathbb{H}|\cdot(|\mathbb{H}|-1)} \sum^{|\mathbb{H}|}{i=1} \sum^{|\mathbb{H}|}{i=1}\sum dist(y_i,y_j) $$

또한, 본 논문에서는 제안된 모호성 해소 방법이 유효한지 검증합니다. 두 가지 접근 방식과 비교하였는데 정리하면 아래와 같습니다

  • Inner Monologue : 실행 가능성 검토와 질문 생성을 포함하는 few-shot prompt를 기반으로 질문과 설명을 생성함.
  • CLAM+ : 목표가 확실한지, 모호한지, 불가능한지를 LLM을 이용하여 판단하고 모호성 해소 진행

<3.2 Situational Awareness for Goal Classification in Robotic Tasks>

해당 파트에서는 상황 인식에 따른 classification 성능 평가를 수행합니다. 특히, 로봇의 능력과 환경을 고려하면서 사용자의 명령 유형을 분류하는 능력을 평가하는 것을 목표로 하는데, clears(명확한), ambigous(모호한), infeasible(불가능한) 명령을 분류합니다.

먼저, 로봇 task에서 불확실한 목표의 불확실성을 평가하기 위해 고안된 데이터셋에 대해서 소개하고, 해당 데이터셋으로 측정된 성능을 말씀드리고자 합니다.

본 논문에서 제안한 데이터셋은 로봇 task의 상황 인식 불확실성을 평가하기 위해 고안된 데이터셋으로 Situational Awareness for Goal Classification in Robotic Tasks 데이터셋, 즉, SaGC로 명칭합니다.

high-level의 목표와 세부 장면 설명을 3가지 유형의 불확실성으로 주석이 달린 데이터셋을 수집하였으며, LLM을 이용하였습니다. 해당 데이터셋의 주요 목적은 LLM이 3가지 유형을 효과적으로 구별할 수 있는지를 평가하는 것입니다. 요리, 청소, 마사지라는 3가지 로봇 카테고리를 포함하여, 15개의 서로 다른 장면으로 구성되는데요. 서로 다른 불확실성 유헝을 가진 목표를 생성하기 위해서 3가지의 다른 prompt를 사용였다고 합니다. 데이터셋을 구축할 때는 4명의 validator를 통해 sample의 label을 변경하거나 폐기하는 등으로 신뢰성을 올리고자 하였습니다.

Fig 2를 통해서 구축된 데이터셋 통계를 확인하실 수 있는데, 총 5,222개의 pair로 구성되어 있으며, 그 중에 1,749는 clear한 목표, 1,560개는 ambigous한 목표, 1,917개는 infeasible한 목표로 구성되어 있습니다.

해당 데이터셋은 AUROC (area under the ROC curve)와 classification accuracy를 이용하여서 평가를 진행합니다. Table 1을 통해서 제안된 방법론의 성능을 확인하실 수 있습니다. base가 되는 LLM을 바꿔가며 평가를 진행하였고, LLaMA, GPT3.5에 비해서 InstructGPT에서 성능이 높으며, 그 중에서도 본 논문에서 제안된 방법론의 성능이 가장 높은 것을 확인할 수 있습니다.

Fig 3을 통해서 생성된 답변이 어떤식으로 구성되어 있는지 확인할 수 있습니다. Ambigus Goal의 경우, 모호성을 해결하기 위해 추가 정보를 얻고자 모델이 질문하는 것을 볼 수 있으며, Infeasible Goal의 경우, 모델이 해당 명령어를 왜 실행할 수 없는지에 대해서 설명하는 것을 볼 수 있습니다.

Author: 김 주연

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다