RT-1: Robotics Transformer for real world control at scale 정리

Plato·2023년 12월 16일
0

딥러닝

목록 보기
6/21

사전지식

  • 텐서 브로드캐스팅
  • Convolutional Neural Network
  • 트랜스포머
  • EfficientNet

표기

  • 텐서 차원 표기 순서는 ChannelHeightWidthChannel * Height * Width

풀어내는 문제

  • 충분한 표현력을 갖는 모델(충분히 큰 모델)을 다양하고 방대한 양의 데이터 세트에 학습하여, 다양한 환경에서 여러 작업을 수행하는 로봇 agent를 만드는 문제

왜 지금까지 해결되지 않았나?

  • 로봇이 작업을 수행하는 데이터 세트는 구축하기 쉽지 않다. 자동화 기계로 작업을 수행하거나 사람이 로봇을 원격 조정하여 데이터 세트를 구축해야 한다
  • 모델이 충분히 크면서 실시간으로 동작할 수 있을 만큼 빠른 추론 속도를 갖기 어렵다

모델 아키텍처

  • 구조
    • 입력: 자연어 지침(language instruction)과 이미지
    • 출력: 행동 토큰
    • 행동 생성 모델: 트랜스포머
  • 토크나이저
    • 동작 속도를 높이기 위해, 적은 수의 토큰 사용
    • 이미지 토크나이저 초기 레이어부터 자연어 지침을 같이 처리함.
      • 이를 통해 작업 설명에 맞는(작업에 특화된) 토큰을 생성할 수 있을 것으로 예상
    • EfficientNet과 FiLM으로 토큰화한 뒤 TokenLearner로 토큰 수 줄임
    • EfficientNet + FiLM
      • EfficientNet
        • 사전 학습: ImageNet
        • 입력: 33003003 * 300 * 300 차원의 이미지
        • 출력: 512차원의 81개 토큰
          • 마지막 convolution 레이어의 출력 51299512 * 9 * 9 차원 feature map을 flatten하여 99=819 * 9 = 81개의 토큰으로 만듦
      • Film
        • 용도: 자연어 문장 처리
        • 구조: GRU
        • 입력: 자연어 토큰 수열
        • 출력: [γi]i=1N,[βi]i=1N[\gamma^i]_{i=1}^{N}, [\beta^i]_{i=1}^{N} NN은 EfficientNet의 깊이
        • 사용 방식: EfficientNet ii번째 레이어의 출력값을 γi\gamma^i로 곱하고 βi\beta^i로 더함.
          • γi=1,βi=0\gamma^i = 1, \beta^i = 0으로 초기화해서 처음에는 EfficientNet이 FiLM의 영향을 받지 않도록 구현.
            • 이유: 사전 학습된 CNN에 학습되지 않은 FiLM이 사전 학습 효과를 감소시킴. 그렇기에 학습 초기에는 FiLM의 영향을 최소화할 필요 있음.
    • TokenLearner
      • 구조: CNN
      • 입력: 51299512 * 9 * 9 차원의 텐서
        • 입력 생성 방법
          • EfficientNet+FiLM의 출력 81개 토큰을 트랜스포머에 넣어줌
          • 트랜스포머 마지막 레이어의 출력을 51299512 * 9 * 9 텐서로 reshape함
      • 출력: 512 차원의 SS개 벡터
        • 마지막 콘볼루션 레이어 출력: S99S * 9 * 9 텐서
        • S99S * 9 * 9 출력 텐서를 channel 축으로 슬라이스하여 SS개의 1991 * 9 * 9 텐서를 만든 뒤 1회 순회하며 아래의 변환 적용
          1. 51299512 * 9 * 9 차원 입력 텐서와 1991 * 9 * 9 차원 출력 텐서를 요소별로 곱함. 이때, 출력 텐서와 입력 텐서의 채널 차원이 다르기 때문에 브로드캐스팅함
          2. 이렇게 얻은 51299512 * 9 * 9 차원 텐서를 1991 * 9 * 9 차원 텐서로 변환
            • 변환 방법: Global Average Pooling
        • 위의 변환을 마치면 SS개의 토큰이 만들어짐

VC-1, SMART와의 비교

  • 세 논문은 매우 다르다
    • VC-1과 SMART는 vision backbone을 다루는 논문이고 RT-1은 높은 범용성과 성능을 갖는 policy를 다루는 논문이다
  • 토크나이저는 비교해 볼 수 있다.
    • VC-1
      • 이미지를 임의로 정한 크기의 패치로 나눔.
      • policy가 트랜스포머와 같은 sequence 모델일 때
        • ViT 마지막 레이어의 토큰 수열 전체가 이미지의 표현
      • policy가 MLP일 때
        • ViT 마지막 레이어의 CLS 토큰이 이미지의 표현
      • VC-1은 다른 modality(ex.자연어)를 고려하지 않는 토크나이저임
    • SMART
      • 이미지를 CNN에 넣음
      • policy가 트랜스포머와 같은 sequence 모델일 때
        • CNN의 마지막 레이어의 출력이 이미지의 표현
      • policy가 MLP일 때
        • CNN의 마지막 convolution 레이어의 출력을 global average pooling한 값이 이미지의 표현
      • 다른 modality를 고려하지 않음
    • RT-1
      • policy가 트랜스포머임
      • film과 TokenLearner를 사용해 적은 수의 토큰으로 이미지와 문장을 표현함
      • 이미지 토크나이저가 언어 지침을 고려함

인상적인 부분

  • 큰 모델의 동작 속도를 높이기 위해 토큰 수를 줄인 것
    • 이를 위해 TokenLearner를 사용한 것. 이런 방식은 생각도 못했다
  • GATO가 자연어 문장을 고려하지 않는 이미지 토크나이저를 사용한 반면에, RT-1은 이미지 토크나이저가 초기 레이어부터 자연어 문장을 고려한다
    • 이 방식을 통해 범용성이 높은 토큰보다, 작업에 맞는 토큰을 만들 수 있을 것 같다. 그렇기에 언어 지침을 고려하지 않는 토크나이저보다 성능이 좋지 않을까?
  • 뛰어난 일반화 성능을 보임
    • 작업은 스킬을 나타내는 동사와 행동의 대상이 되는 명사로 구성했다. 사전 학습 데이터 세트에 (s,n)쌍으로 존재하지 않았던 스킬 s와 명사 n을 고려하자. 이 때 s와 n이 조합된 데이터가 없었던 것이지 둘 다 데이터 세트에 포함된 스킬과 명사다. 이런 (s,n)쌍이 주어졌을 때, 잘 수행했다고 한다.
    • 여러 작업을 이어붙였을 때에도, 잘 수행했다고 한다.
      • 복잡한 '고수준'의 작업을 수행하도록 say can에 넘겨주고, say can이 선택한 '저수준'의 작업을 RT-1이 수행하도록 함.

궁금한점

  • VC-1의 CLS 토큰을 이미지 표현으로 사용하면, RT-1의 토크나이저를 사용한 것보다 성능이 많이 떨어질까?

0개의 댓글