Vision Transformers 비쥬얼 가이드
(blog.mdturp.ch)- Vision Transformers(ViTs) 는 이미지 분류 작업에서 최고 성능을 달성한 딥러닝 모델 클래스
- 자연어 처리(NLP)를 위해 설계된 트랜스포머 아키텍처를 이미지 데이터에 적용함
- 이 가이드는 시각화와 간단한 설명을 사용하여 이러한 모델이 어떻게 작동하는지, 데이터가 모델을 통과하면서 데이터의 흐름이 어떻게 보이는지 이해하는 데 도움을 줌
주요 내용
- 이미지를 p x p 인 동일한 크기의 패치로 나눔
- 각 패치를 인코딩한 벡터는 고정 크기 d 를 가짐
- 남은건 크기가 n x d 인 배열 (n은 이미지 패치 수, d는 패치 임베딩 크기)
- 모델을 효과적으로 훈련시키기 위해 분류 토큰(cls 토큰)이라는 추가 벡터로 패치 임베딩 배열을 확장
- 위치정보가 없으니 무작위로 초기화된 위치 임베딩 벡터를 추가
- 위치 임베딩 벡터가 추가된 후에는 크기가 (n+1) x d인 배열을 트랜스포머의 입력으로 넣음
- 트랜스포머 내부
- 10.1 트랜스포머 입력 패치 임베딩 벡터는 여러 개의 큰 벡터로 선형적으로 임베딩됨 : Q - 쿼리 벡터, K - 키 벡터, V - 값 벡터
- 10.2 어텐션 점수 A를 계산하기 위해 모든 쿼리 벡터 Q와 모든 키 벡터 K를 곱함
- 10.3 어텐션 점수 행렬 A가 생겼으니 모든 행에
softmax
함수를 적용하여 모든 행의 합이 1이 되도록 함 - 10.4 첫 번째 패치 임베딩 벡터에 대한 집계된 컨텍스트 정보를 계산하기 위해 어텐션 행렬의 첫 번째 행에 초점을 맞추고 항목을 값 벡터 V의 가중치로 사용함
- 10.5 이제 어텐션 점수 행렬의 모든 행에 대해 이 프로세스를 반복하면 N+1개의 집계된 컨텍스트 정보 벡터가 생성됨 (패치당 하나 + 분류 토큰용 하나) 이 단계로 첫 번째 어텐션 헤드가 완료됨
- 10.6 멀티 헤드 어텐션을 다루고 있으므로 다른 QKV 매핑을 사용하여 10.1 - 10-5 단계의 전체 프로세스를 다시 반복함
- 10.7 마지막 어텐션 레이어 단계. 헤드들이 함께 쌓이고 패치 임베딩과 동일한 크기인 d 크기의 벡터로 매핑됨
- 10.8 이전 단계들에서 어텐션 레이어가 완성되었고, 입력과 정확히 동일한 크기의 동일한 임베딩 수가 남음
- 10.9 트랜스포머는 잔차 연결(Residual Connection)을 많이 사용하는데, 이는 단순히 이전 레이어의 입력을 현재 레이어의 출력에 더하는 것을 의미함
- 10.10 잔차 연결(더하기)의 결과로 동일한 크기의 벡터가 생성됨
- 10.11 이 아웃풋이 비선형 활성화 함수를 가진 피드 포워드 신경망을 통과함
- 10.12 트랜스포머 단계 후에는 또 다른 잔차 연결이 있지만 여기서는 생략. 이로써 트랜스포머 레이어가 완료. 결과적으로 트랜스포머는 입력과 동일한 크기의 아웃풋을 생성
- 그리고 트랜스포머에 대한 전체 계산 단계 10.1 - 단계 10.12를 여러 번(예: 6번) 반복함
- 마지막 단계는 분류 토큰 출력을 식별하는 것. 이 벡터는 Vision Transformer의 최종 단계에서 사용될 것
- 최종 단계에서는 이 분류 출력 토큰과 또 다른 완전 연결 신경망을 사용하여 입력 이미지의 분류 확률을 예측함
- Vision Transformer는 예측된 클래스 확률을 실제 클래스 레이블과 비교하는 표준 크로스 엔트로피 손실 함수를 사용하여 훈련됨
- 모델은 역전파와 경사 하강법을 사용하여 훈련되며, 손실 함수를 최소화하도록 모델 매개변수를 업데이트함
소개해주신 글을 보고 이미지와 함께 설명하는 것이 좋을 것 같아, 저자에게 허락을 받고 원문을 번역하였습니다: