AI VIDEO BRIEFING

비전 트랜스포머(ViT) 구조 정리: 패치 임베딩과 CLS 토큰부터 CNN과의 차이까지

비전 트랜스포머는 이미지를 16×16 패치로 잘라 문장처럼 다루는 모델이다. 패치 임베딩과 CLS 토큰, 위치 임베딩이 하는 일과 CNN 대신 언제 써야 하는지, 확장 모델인 Swin과 DeiT의 차이까지 정리했다.

이미지를 단어처럼 다루는 비전 트랜스포머, 구조와 CNN과의 차이 영상 대표 이미지

핵심 메시지

  • 비전 트랜스포머(ViT)는 트랜스포머의 인코더만 가져와 이미지에 적용한 모델로, 2020년 구글 리서치의 'An Image is Worth 16x16 Words' 논문에서 제안됐다.
  • 이미지를 16×16 픽셀 같은 패치로 잘라 각 패치를 완전연결 층에 통과시키면, 문장의 단어 임베딩에 해당하는 벡터들이 만들어진다.
  • 이미지 전체를 대표할 표현이 필요해 학습 가능한 CLS 토큰을 하나 더 붙이고, 패치의 위치를 알려주기 위해 위치 임베딩을 더한다.
  • 인코더 블록은 멀티헤드 어텐션, 레이어 정규화, 피드포워드 층, 잔차 연결로 이뤄지며 여러 번 반복된다.
  • CNN은 이동 불변성이라는 강한 귀납 편향 덕분에 데이터가 적을 때 유리하고, ViT는 편향이 약해 수백만 장 규모의 데이터가 있을 때 진가를 발휘한다.

쉽게 이해하기

비전 트랜스포머는 이름 그대로 트랜스포머를 이미지 데이터로 확장한 모델이다. 다만 전체 구조 중 왼쪽의 인코더만 사용하는데, 오른쪽 디코더는 ChatGPT처럼 텍스트를 순차적으로 생성하는 용도에 주로 쓰이기 때문이다. 발표자는 의료 영상 데이터에 이 모델을 적용해 CNN과 비교해 보다가 정리 영상을 만들게 됐다고 밝힌다.

핵심은 이미지를 시퀀스로 바꾸는 발상이다. 이미지를 패치로 자른 뒤 각 패치를 인코더의 첫 구성 요소에 통과시켜 임베딩 벡터를 얻는데, 이 구성 요소는 특별한 것이 아니라 색상값을 입력으로 받는 완전연결 신경망이다. 패치를 만드는 재배열은 보통 einops(아인슈타인 연산) 패키지로 처리하며, 패치 크기가 16이면 16×16×3, 즉 길이 768의 벡터가 된다.

실습에서는 37개 클래스로 이뤄진 옥스퍼드 반려동물 데이터셋을 144×144 크기로 맞춰 사용한다. 패치 임베딩 모듈을 거치면 이미지 한 장이 324개의 패치, 각 패치는 128차원 벡터로 바뀐다. 여기에 CLS 토큰이 더해지는데, 이는 처음에 무작위 값으로 채워졌다가 학습을 통해 다른 패치들의 정보를 모으는 학습 가능한 벡터이며 마지막에 분류를 위한 전역 표현으로 쓰인다.

위치 임베딩이 필요한 이유는 어텐션 자체가 위치를 구분하지 못하기 때문이다. 패치에 그냥 번호를 붙이면 숫자가 지나치게 커지고, 학습 데이터에 드물게 등장하는 큰 값은 배우기 어렵다는 문제가 있다. 원 논문의 사인·코사인 조합과 달리 ViT는 패치 개수가 고정이라 그런 장점이 필요 없어 위치 벡터를 그냥 학습해 버리며, 이어 붙이지 않고 입력 임베딩에 더한다.

확장 모델로는 Swin 트랜스포머와 DeiT가 소개된다. Swin은 패치를 점점 합쳐 계층적 표현을 만들고 어텐션을 창 단위로 적용해 효율을 높이며, 창을 밀어(shifted window) 창 사이 정보까지 학습한다. DeiT는 지식 증류로 데이터 효율을 높이는데, 증류 토큰이 실제 정답 대신 교사 모델의 예측을 맞추도록 학습해 작은 데이터셋에서도 성능이 크게 좋아진다.

주요 인사이트

  • 패치 임베딩은 대단한 연산이 아니라 픽셀값을 선형 층에 통과시키는 것이다. 트랜스포머를 이미지로 옮기는 데 실제로 필요했던 것은 새 연산이 아니라 이미지를 시퀀스로 보는 관점의 전환이었다.
  • 위치 정보를 숫자가 아닌 벡터로 주는 이유는 큰 수를 학습하기 어렵다는 실용적 문제 때문이다. 그리고 ViT는 패치 수가 고정이라 길이 변화에 강한 사인·코사인 방식의 장점이 필요 없어 더 단순한 선택을 한다.
  • 데이터가 적으면 CNN이 대체로 낫다는 것이 문헌의 통설이다. 귀납 편향이 없다는 ViT의 유연함은 데이터가 충분할 때만 이점이 되고, 그렇지 않으면 규칙을 처음부터 배워야 하는 부담으로 돌아온다.
  • CNN은 수용 영역을 넓혀 가며 계층적으로 배우는 반면, ViT는 처음부터 이미지 전체에 접근해 전역적으로 학습한다는 점이 두 모델의 근본적 차이다.
  • DeiT가 교사 모델로 주로 CNN을 쓰는 이유는 CNN이 가진 귀납 편향 자체를 학생 모델에 가르치기 위해서다.

자주 묻는 질문

비전 트랜스포머는 트랜스포머의 어느 부분을 사용하나요?

왼쪽의 인코더 부분만 사용한다. 오른쪽 디코더는 텍스트 생성처럼 순차적 생성 작업에 주로 쓰이기 때문에 이미지 분류에는 필요하지 않다.

CLS 토큰은 무엇이고 왜 필요한가요?

트랜스포머는 입력 개수만큼 출력이 나오는 구조라 이미지 하나를 대표하는 표현이 따로 필요하다. CLS 토큰은 처음에 무작위 값으로 시작해 학습되는 더미 입력으로, 다른 패치들의 정보를 모아 전역 특징 역할을 하며 마지막에 분류 헤드로 넘어간다.

CNN과 ViT 중 무엇을 골라야 하나요?

영상에서는 데이터가 적다면 CNN을 쓰고, 수백만 장 규모의 이미지를 확보할 수 있을 때만 비전 트랜스포머를 쓰라는 것이 문헌에서 흔히 언급되는 조언이라고 소개한다.

Swin 트랜스포머는 무엇이 다른가요?

네트워크가 깊어질수록 패치를 반복해서 합쳐 계층적 표현을 만들고, 전역 어텐션 대신 창 단위 어텐션을 써서 효율을 높인다. 창을 이동시켜 창 사이의 정보도 학습할 수 있게 한 것이 이름의 유래다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식