본문 바로가기

반응형

Machine Learning Models/Transformer

(7)
Vision Transformer (4) - Pytorch 구현 Vision Transformer (1) Vision Transformer (2) Vision Transformer (3) - Attention Map 이번 포스트에서는 Pytorch 프레임워크를 이용하여 Vision Transformer 모델을 구현해보도록 하겠습니다. 복습을 위해 다시 한번 ViT 모델의 구조를 보도록 하겠습니다. Figure 1을 보면 먼저 입력 이미지를 패치 크기만큼 나누어 순서대로 정렬한 후 임베딩을 수행합니다. 이후에 Encoder 에서 Multihead Self-Attention, MLP, Layer Normalization 블락들이 residual connection 과 함께 수행되죠. 최종적인 분류를 위해서는 $z_0^0$에 학습가능한 파라미터로 삽입한 'class tok..
Vision Transformer (3) - Attention Map Vision Transformer (1) Vision Transformer (2) Transformer 모델의 가장 큰 특징은 self-attention 으로 시퀀스의 각 위치가 어느 위치에 집중하는지 쉽게 시각화해서 볼 수 있다는 점입니다. 이미지 기반 딥러닝에서도 모델의 결과를 설명하려는 interpreting explanability (XAI) 시도가 매우 많고 이를 여러 포스트에서 살펴보았는데요, 이번 포스트에서는 ViT 모델의 입력 이미지에 대한 explaianability 를 attention 을 이용하여 알아보도록 하겠습니다. 또한, 실습으로 최근 페이스북에서 릴리즈한 3개의 헤드를 가진 Deit Tiny 모델을 사용하도록 하겠습니다. 사용하기 위해서는 timm 이라는 대표적인 이미지모델의 ..
Vision Transformer (2) Vision Transformer (1) Experiments How fine-tuning 실험 시에는 ViT 모델을 큰 데이터셋에 대해 사전훈련 하고 작은 데이터셋에 대해 fine-tuning 하는 과정을 거칩니다. Fine-tuning 을 위해서 사전훈련된 $z_L^0$에 붙은 MLP 를 제거하고 0으로 초기화된 $D\times K$ 선형변환 층을 추가합니다. ($K$는 fine-tuning 데이터셋 클래스 개수) 또한, fine-tuning 시에 고해상도 이미지를 사용하는 것이 좋다고 알려져 있기 때문에 패치 크기를 일정하게 유지한 채 큰 크기의 이미지를 사용합니다. 패치 크기가 고정되니 상대적으로 시퀀스 길이가 더 늘어나겠죠. 단 이러한 경우에는 사전훈련을 통해 학습한 position 임베딩 텐서..
Vision Transformer (1) Transformer 관련 포스트 Transformer Transformer 구현 Transformer Positional Encoding Transformer 모델은 발표 이후에 자연어 처리 (NLP) 분야에서의 새로운 기준이 되어 왔습니다. 자연스럽게 self-attention 개념을 컴퓨터 비젼 분야에 적용하려는 시도가 많았는데요, Vision Transformer (ViT) 등장 이전에는 convolution 구조와 함께 제한적으로 사용되었고 ResNet 계열 모델을 필두로 한 CNN 을 완벽하게 대체할 수는 없었습니다. 구글에서 발표한 Vision Transformer 모델은 convolution 구조를 완전히 배제하고 Transformer 모델과 비슷하게 순수한 self-attention 만을..
Transformer Positional Encoding Transformer 제가 Transformer 논문 "Attention Is All You Need" 를 읽을때마다 느끼는 점은 self-attention, multi-head attention 모두 좋지만 positional encoding 기법만큼은 직관적으로 이해하기 쉽지 않다는 점입니다. 물론 Transformer 자체에는 입력 시퀀스 위치에 대한 정보가 없으니 positional encoding 이 필요하다는 사실은 당연하나 논문에서는 매우 짧게 cosine / sine 함수로 이루어진 식만 제공합니다. 그렇다면 위의 식은 어떠한 이유로 유도가 되었을까요? 한 번 살펴보도록 하겠습니다. Positional encoding Positional encoding 이란 주어진 시퀀스에서 특정한 위치에..
Transformer 구현 지난 포스트 [Machine Learning/Architecture] - Transformer 이번 포스트에서는 Transformer Pytorch 구현에 대해 알아보도록 하겠습니다. 먼저, 이번 포스트에서 다룰 코드는 고현웅님의 Transformer github 레파지토리에서 발췌한 것임을 미리 밝힙니다. (Transformer 의 각 구성 요소별로 코드 정리가 잘 되어있습니다.) Scaled dot product attention Figure 1을 구현하는 블락입니다. 이때, multi-head attention 을 위해 $Q, K, V$가 head 개수만큼 분리되어 [batch size, head, length (입력 길이), d (차원)] 의 4차원 텐서입니다. 코드에서 "@" 은 pytorch ..
Transformer 2017년 NIPS 에서 발표된 구글의 Transformer 구조는 language modeling, neural machine translator 등의 NLP 계에 혁신을 불어일으킨 논문으로 BERT, GPT 등의 구조의 기반이 되었고 다양한 분야로의 접목이 활발히 연구되고 있는 매우 중요한 neural networks 구조 중 하나입니다. Transformer 가 등장하기 전에는 RNN (LSTM / GRU), Convolution 등으로 sequence 모델링을 수행했었는데요, Transformer 는 recurrence, convolution 의 개념을 아예 배제하고 순수히 attention 으로 구성되어 기존 RNN, CNN 계열에 비해 속도와 성능이 모두 우월한 모델입니다. Overview M..

반응형