본문 바로가기

논문읽기

[논문읽기] Perceiver: General Perception with Iterative Attention

2021년 ICML에서 DeepMind가 발표하였던 Perceiver 논문을 읽어보았다. Multimodal 데이터를 효과적으로 처리할 수 있다는 점에 관심이 생겨 읽어보게 되었다. 입력값이 어떤 형태로 들어오든 같은 구조로 처리할 수 있다는 부분이 골자이다.

주된 아이디어는 어떤 Input이 들어오든 이를 Cross Attention을 통해 latent space로 잘 맵핑하겠다는 것이다. 이때 latent space의 표현력이 부족할 수도 있기 때문에 Attention을 여러번 반복함으로써 이를 상쇄한다.

 

모델 구조

주요 특징은 아래와 같다.

  • 일반적인 Transformer 모델은 Self-attention을 많이 사용하는데, 이 연구에서는 Latent space를 가정하고 Latent array와 Input (Byte) array간 Cross-attention을 활용하였다. Latent array는 Input (Byte) array 보다는 작게 만들어서 보다 압축된 표현을 가질 수 있도록 한다.
  • Latent array는 차원이 작기 때문에 유의미한 정보를 잃어버릴 수 있다. 이를 상쇄하기 위해 Cross Attention의 횟수(Depth)를 늘려서 적용하였다. Depth를 더 효과적으로 늘리기 위해 레이어 간 파라미터도 공유하도록 하였다.
  • Attention 자체는 Permutation invariant하고 공간 정보를 효과적으로 파악하지 못할 수도 있다. 이를 극복하기 위하여 Position encoding을 사용하였다. 더하는 방식보다는 Concatenate 방식을 택하였는데, Multimodal의 특성상 각 입력데이터마다 Scale이 달라서 더 효과적이라고 한다.

 

Experiments

ImageNet

이미지는 일반적으로 쓰는 방식대로 224x224x3로 Crop한 뒤, Transformer에 들어갈 수 있도록 50176x3으로 Reshape하였다. 일반적인 Transformer를 쓰게 되면 50176은 너무 큰 사이즈이지만, Perceiver에서는 Latent array와 Cross attention을 수행하므로 감당가능하다. Latent array의 사이즈는 512x1024로, 입력값에 비하면 많이 축소되었다.

모델의 대략적인 구조는 8 x (Input-latent Cross attention & 6 x Latent selt attention)으로 구성하였다.

Perceiver는 ResNet-50나 ViT-B와 비슷한 수준의 성능을 달성하였다. 발표시점 기준으로 보더라도 SOTA에는 좀 못미치는 성능이지만 이 연구의 목적이 최고의 이미지분류 모델을 달성하는 것은 아니므로...

 

Pixel들을 무작위로 섞은 뒤에 성능이 유지되는지도 확인해 보았다. 이때 Position encoding은 원래의 Pixel 위치대로 생성하였다. 만약 Position encoding을 통해 각 픽셀 위치 정보를 유추할 수 있다면 성능이 유지될 것이다.

CNN이나 ViT의 경우 모델 구조가 본질적으로 입력 이미지의 공간정보를 활용하도록 되어 있다. 그렇기 때문에 Pixel이 섞이면 성능이 많이 안좋아진다.

Perceiver의 경우 Attention을 활용하였고 Attention의 특성상 입력 데이터의 순서에 무방하게 동작할수 있다.(Permutation-invariant) 또한 Position Encoding을 통해 원래 입력 데이터의 순서를 유추할 수 있어 성능이 유지된다. 다만 Position encoding도 학습하도록 하면 원본 데이터의 순서를 유추할 수 없게 되어 성능이 하락한다. (아래 표의 맨 마지막 줄)

 

 

Audio + Video (AudioSet)

Multimodal 데이터에 대한 학습 능력 실험이다.데이터셋의 크기가 크지는 않아 2 x (Input-latent Cross attention & 8 x Latent selt attention) 로 줄인 모델을 사용하였다.

Audio + Video 실험의 경우 Input 단계에서 둘을 섞었고, 채널수를 맞춰주기위해 모달리티별 Encoding을 Concatenate 해주었다고 한다.

또한 Audio와 Video를 같이 쓰게 되면 Video에 오버피팅되는 경향이 있어 Video의 약 30%는 0으로 만들어주는 Video dropout을 적용하였다고 한다.

 

Point clouds - ModelNet40

3D 데이터에 대해서도 실험을 진행하였다. 아래 표와 같은 성능을 보여주었는데, 3d 전문 모델에 비하면 떨어지지만, 그래도 준수한 성능을 보여주었다.

 

 

어떤 Input이 들어오든 구조의 변화없이 사용할 수 있다는 점이 흥미로웠던 연구였다. Perceiver를 활용한 다양한 연구들이 많고(예: Flamingo 등), 후속 연구로 Perceiver IO도 발표되었던데, 추가로 한번 조사해봐야겠다.