RT-1: Robotics Transformer for real world control at scale 정리
사전지식
- 텐서 브로드캐스팅
- Convolutional Neural Network
- 트랜스포머
- EfficientNet
표기
- 텐서 차원 표기 순서는 Channel∗Height∗Width
풀어내는 문제
- 충분한 표현력을 갖는 모델(충분히 큰 모델)을 다양하고 방대한 양의 데이터 세트에 학습하여, 다양한 환경에서 여러 작업을 수행하는 로봇 agent를 만드는 문제
왜 지금까지 해결되지 않았나?
- 로봇이 작업을 수행하는 데이터 세트는 구축하기 쉽지 않다. 자동화 기계로 작업을 수행하거나 사람이 로봇을 원격 조정하여 데이터 세트를 구축해야 한다
- 모델이 충분히 크면서 실시간으로 동작할 수 있을 만큼 빠른 추론 속도를 갖기 어렵다
모델 아키텍처
- 구조
- 입력: 자연어 지침(language instruction)과 이미지
- 출력: 행동 토큰
- 행동 생성 모델: 트랜스포머
- 토크나이저
- 동작 속도를 높이기 위해, 적은 수의 토큰 사용
- 이미지 토크나이저 초기 레이어부터 자연어 지침을 같이 처리함.
- 이를 통해 작업 설명에 맞는(작업에 특화된) 토큰을 생성할 수 있을 것으로 예상
- EfficientNet과 FiLM으로 토큰화한 뒤 TokenLearner로 토큰 수 줄임
- EfficientNet + FiLM
- EfficientNet
- 사전 학습: ImageNet
- 입력: 3∗300∗300 차원의 이미지
- 출력: 512차원의 81개 토큰
- 마지막 convolution 레이어의 출력 512∗9∗9 차원 feature map을 flatten하여 9∗9=81개의 토큰으로 만듦
- Film
- 용도: 자연어 문장 처리
- 구조: GRU
- 입력: 자연어 토큰 수열
- 출력: [γi]i=1N,[βi]i=1N N은 EfficientNet의 깊이
- 사용 방식: EfficientNet i번째 레이어의 출력값을 γi로 곱하고 βi로 더함.
- γi=1,βi=0으로 초기화해서 처음에는 EfficientNet이 FiLM의 영향을 받지 않도록 구현.
- 이유: 사전 학습된 CNN에 학습되지 않은 FiLM이 사전 학습 효과를 감소시킴. 그렇기에 학습 초기에는 FiLM의 영향을 최소화할 필요 있음.
- TokenLearner
- 구조: CNN
- 입력: 512∗9∗9 차원의 텐서
- 입력 생성 방법
- EfficientNet+FiLM의 출력 81개 토큰을 트랜스포머에 넣어줌
- 트랜스포머 마지막 레이어의 출력을 512∗9∗9 텐서로 reshape함
- 출력: 512 차원의 S개 벡터
- 마지막 콘볼루션 레이어 출력: S∗9∗9 텐서
- S∗9∗9 출력 텐서를 channel 축으로 슬라이스하여 S개의 1∗9∗9 텐서를 만든 뒤 1회 순회하며 아래의 변환 적용
- 512∗9∗9 차원 입력 텐서와 1∗9∗9 차원 출력 텐서를 요소별로 곱함. 이때, 출력 텐서와 입력 텐서의 채널 차원이 다르기 때문에 브로드캐스팅함
- 이렇게 얻은 512∗9∗9 차원 텐서를 1∗9∗9 차원 텐서로 변환
- 변환 방법: Global Average Pooling
- 위의 변환을 마치면 S개의 토큰이 만들어짐
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의 토크나이저를 사용한 것보다 성능이 많이 떨어질까?