DataScience
article thumbnail
728x90

기존 sequence 모델(RNN)

기존 sequence transduction model들은 인코더와 디코더를 포함한 복잡한 recurrent, cnn에 기반합니다.

RNN은 순환구조를 이루는 인공신경망의 한 종류입니다. 음성, 문자 등 순차적으로 등장하는 데이터 처리에 적합한 모델입니다. 시간이 흐르는 기준으로 펼쳐놓고 봐야 하기 때문에 순차적인 연산이 필요합니다.(인코더,디코더당 각 하나의RNN)

 

Transformer

최근 1~2년 사이에 많은 모델들이 CNN기반->Transformer기반 모델입니다.

Transformer구조를 사용한 Architecture가 수 많은 SOTA를 찍고 있습니다.

 ViT : An Image Worth 16 x 16 Words - Image Classification의 판도를 바꾼 논문


https://paperswithcode.com/task/action-classification


온전히 attention mechanism에만 기반한 구조, Recurrence  or Convolution을 사용하지 않았습니다.
어텐션 : 디코더에서 출력 단어를 예측하는 매 시점(time step)마다, 인코더에서의 전체 입력 문장을 다시 한 번 참고한다. 해당 시점에서 예측해야할 단어와 연관이 있는 입력 단어 부분을 좀 더 집중(attention)해서 보게 됩니다.

기본적인 인코더-디코더 구조는 유지하지만 인코더와 디코더라는 단위가 N개 존재할 수 있다는 점입니다.(병렬구조)
 parallelizable하고, 훨씬 적은 학습 시간이 걸림
Transformer 가 원래는 언어 모델인데 언어모델에 이미지를 분할해서 input으로 넣어준게 Vision Transformer입니다. 줄여서 ViT라고 합니다.
기존의 이미지 분야에서 attention 기법을 사용할 경우 대부분 CNN과 함께 사용됐었고 attention만 이용한 모델은 기존 CNN모델의 성능을 넘지는 못했습니다. 그래서 더 큰 의미가 있습니다.

Vision Transformer

이미지를 텍스트 sequence처럼 사용하는 구조입니다.

1. 이미지를 고정된 크기의 patch로 나눠줍니다. 각 패치를 순서대로 나열하여 시퀀스 데이터처럼 만듭니다.

2. 각 패치를 flatten 하여 벡터로 변환해 줍니다.

3. 각 벡터에 Linear 연산을 거쳐서 Embedding 작업을 합니다.

4. Embedding 작업의 결과에 클래스를 예측하는 클래스 토큰을 하나 추가 합니다.

5. 클래스 토큰이 추가된 입력값에 Positional Embedding을 더해주면 Vision Transformer의 입력이 완성이 됩니다. 이미지에서도 각 패치의 위치가 중요하기 때문에 Positional Embedding을 적용해 주게 됩니다.

 

① ~ ⑤ 과정을 거쳐서 입력을 만들어 주게 되면 Transformer Encoder를 L번 반복을 하게 되고 입력값과 동일한 크기의 출력값을 마지막에 얻을 수 있습니다.

Transformer Encoder의 출력 또한 클래스 토큰과 벡터로 이루어져 있습니다. 여기서 클래스 토큰만 사용하여 위 아키텍쳐의 MLP Head를 구성하고 이 MLP Head를 이용하여 MLP를 하면 최종적으로 클래스를 분류할 수 있습니다.

 

ViT전체 과정을 식으로 표현했습니다.

 

Embedding

입력에 해당하는 수식입니다.

 

z0는 입력 벡터입니다. Xclass는 클래스 토큰입니다. {Xp}^{N}E는 patch로 나눈 각각의 이미지 시퀀스입니다. 마지막 Epos는 각각 시퀀스의 순서를 나타내는 Positional Encoding입니다. 
p는 patch의 크기를 나타냅니다. 패치는 (C,P,P)의 크기를 가지고, N은 패치의 갯수입니다.
2번과정 flatten을 거쳐 벡터로 만들면 각 벡터의 크기는 (P^2)C가 되고 이 벡터가 N개가 됩니다. 이 N개의 벡터를 합친것을 Xp라고 합니다.


예) (3,224,224)크기의 이미지, P=16, 패치의크기는 (3,16,16) 패치의 갯수는 14* 14개가 됩니다. 이 패치를 flatten하게 되면 3*16*16=768이므로 768크기의 벡터를 14*14개 가지게 됩니다. 이값을 시퀀스 데이터로 나타내면 (196,768)의 형태로 표현할수 있습니다.

 

위에서 생성한 Xp를 임베딩 하기 위해 행렬 E와 연산을 해줍니다. E의 shape은 (P^2 C,D)가 됩니다. Flatten 한 Patch를 학습 가능한 Linear Projection( E )을 사용하여, D 차원으로 매핑하는 것입니다, 쉽게 말해 D는 임베딩 dimension으로  P^2 C크기의 벡터를 D로 변경하겠다는 의미입니다.
따라서 Xp의 shape은 (N,P^2 C), E의 shape은 (P^2 C, D)로 곱연산 하면  (N,D)의 크기를 가집니다.

 

(P=16, H=W=224, N=196, D=768)

임베딩한 패치 앞에 학습 가능한(클래스 토큰) 임베딩 벡터를 붙여줍니다. 행렬이 (N+1, D)의 크기가 됩니다. 그리고 position encoding(이미지 패치의 위치를 특정하기 위해) 을 추가하기 위해 (N+1, D)의 크기의 벡터를 만들고 더해줍니다. 더한 결과 값은 입력값(z0)이 됩니다. 크기는 (196+1,768)이 됩니다.

Transformer Encoder

transformer encoder는 L번 반복하기 위해 입력과 출력의 크기가  같도록 유지합니다.

입력값 z0에서 시작하여 L번 반복시 zL이 최종 출력이 됩니다.

 

식(2),(3) Transforme Encoder에 해당하는 수식입니다. 이전 입력 값에 Layer Normalization한 후에, Multi-head Self-Attention을 적용합니다. 해당 값을 skip connection을 해줍니다.

 


MSA

이미지를 멀티헤드 갯수만큼 동일하게 분할해줍니다. Query에 해당하는 Key값을 dot product 해서 나온값을 softmax처리 합니다(Query에 대해서 어떤 Key와 유사한지 비교). 그리고 Value값과 곱해주고(Key에 대응하는 Value) 전부 concat 한것이 Attention value값이 되고 이값은 유사도로 볼수 있으며 가중치처럼 곱해집니다.

MSA의미는 여러개의 관점으로 하나의 데이터를 들여다 보겠다 입니다

 

영상데이터에서 Attention

convolution 연산은 아래와 같이  두 영역을 한번에 고려하지는 못합니다.

점점 더 receptive field를 넓혀가는 구조이지 convolution 필터가 왼쪽 상단을 볼 때, 동시에 전체를 고려하지 않습니다. 이러한 점이 convolution 연산의 단점이 될 수 있습니다.

고양이를 인식할 때, convolution 연산은 두 귀를 한번에 보고 인식할 수는 없습니다. layer가 깊어져서 한번에 고양이 전체를 볼 수는 있어도 지역적으로 두 부분만을 볼 수는 없는 것이 convolution 연산의 아쉬운 부분입니다.

 

attention 개념은 주어진 어떤 입력에 대하여 어떤 부분을 중심적으로 볼 지 가중치를 주는 것으로 이해할 수 있습니다. 

 

MLP

GELU(Gaussian Error Linear Unit) 활성화 함수를 사용합니다. GELU는 입력값과 입력값의 누적 정규 분포의 곱을 사용한 형태입니다.

 

Classification Head

식(4) 수식에 해당합니다.

 

 L번 반복한 Transformer Encoder의 마지막 출력에서 클래스 토큰 부분만 분류 문제에 사용하게 되며 마지막에 추가적인 MLP를 이용하여 클래스를 분류하게 됩니다.

 

결과 해석

CNN 모델에 비해 성능이 좋다는 것을 보여주고자 합니다. 학습 또한 더 빠른 것을 볼 수 있습니다.
**TPUv3-core-days: 하루 기준 사용된 TPU core 개수

slowfast도 ViT모델을 사용하기 시작했는데 가장 최근에는 Reversible ViT모델을 사용했습니다. 기존 모델보다 GPU 메모리 사용량이 크게 줄은 것을 확인 할 수 있습니다.

 

ViT 장단점

장점

1. transformer구조를 거의 그대로 사용하기 때문에 확장성이 좋습니다. 

2. transformer가 large스케일 학습에 우수한 성능을 보여줬는데 같은 효과를 그대로 얻을 수 있습니다.

3. 전이학습시 CNN보다 학습에 더 적은 계산 리소스를 사용합니다.

 

단점

1. transformer 모델은 attention 구조만을 사용하게 됩니다. attention은 데이터 전체를 보고 attention할 위치를 정하는 메커니즘이기 때문에 이 패턴을 익히기 위해서 CNN 보다 더 많은 데이터를 필요로 하게 됩니다. 따라서 불충분한 데이터양으로 학습을 하게 되면 일반화 성능이 떨어지게 됩니다.

 

profile

DataScience

@Ninestar

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!