Transformer

이지민·2024년 3월 29일

Attention Is All You Need
https://arxiv.org/abs/1706.03762

attention은 cross attention과 self attention으로 나뉜다.

cross attention은 query가 디코더 이전 hidden state이고 key와 value는 같다.

하지만 self attention에서는 query key value가 모두 같다.

트랜스포머 구조에서는 인코더에서 임베딩을 받아와 key와 value 사용하는 방식으로 변형한 구조도 사용되며, 전체적인 구조에 대한 해석은 뒷부분에 정리해 뒀다.

cross attention

cross attention은 sequence to sequence 모델로, 디코더에서 하나의 query(decoder의 hidden state)마다 인코더의 state sequence들을 key, value로 해서 context vector를 만들고 이를 반으로 다음 hidden state와 y를 만든다.

이를 반복하여 sequence를 만든다.

self attention

self attention은 query로 input sequence의 각 단어를 사용하니 output sequence의 길이는 input sequence의 길이와 같다.

input sequence는 각각 query, key, value에 해당하는 W들과 곱해져서 다르게 임베딩된다.


어탠션 연산:

크기 n의 시퀀스 -> query: nxm, key: nxm, value: nxm

nxm x mxn x nxm = nxm크기 반환

attention과 마찬가지로 query와 key를 통해서 key의 어디에 집중해야 하는지를 구하고 value와 곱해서 attention vector를 만드는데

rnn방식이 아닌 각 단어들을 matmul하여 cosine유사도를 구하는것과 비슷한 효과를 내며 attention vector를 구할때 병렬화를 하였다.

positional encoding은 I like you but you don't like me에서 두개의 like가 다르게 임베딩되도록 하는 역할을 한다.

multihead attention은 self attention을 여러개 만들고, concatenate를 해준 모델이다.

인코더에서 sequence를 만들고, 디코더에서도 이를 사용하며 sequence를 만든다
self attention의 output은 input sequence의 길이와 같은 sequence이다.
트랜스포머는 시퀀스를 만든다.

구조 해석

인코더에서 self attention을 이용해 인풋 문장을 분석, key와 value 임베딩을 반환한다.

디코더에서 단어들을 추가해가며 인풋과 아웃풋을 반복하게 되는데,
이때 인코더의 key의 어디에 집중해야 할지 디코더의 query를 통해 계산하고, 인코더의 value와 곱해서 만들어진 attention vector를 이용하는 방식이다.

실전 사용 예시

"나는 사과를 좋아해"라는 문장을
"I like apple"로 만들기 위해
인코더에 "나는 사과를 좋아해"를 넣은 다음
디코더에
< sos >를 넣고 I를 반환,
< sos > I를 넣고 I like를 반환,
< sos > I like 를 넣고 I like apple를 반환,
< sos > I like apple 를 넣고 I like apple < eos >를 반환하며
< eos >가 나올때까지 decoder를 반복하는 방식인 듯 하다.

비전 트랜스포머

NLP에서 트랜스포머는 좋은 성과를 보인다.

NLP는 시퀀스를 다루며, 트랜스포머는 시퀀스를 잘 다루기 때문에 이가 가능했다.

트랜스포머는 어탠션 모듈을 이용하여 시퀀스에서 어디에 집중해야 하는지 신경쓴다.

하지만 정확히는 시퀀스가 아니라 조합의 어디에 집중해야 하는지를 신경쓰는것으로 보인다.

따라서 이미지도 CNN을 통해 사이즈를 줄임과 동시에 local한 특징을 보유한 패치로 나누고 트랜스포머에 넣게 된다면

어탠션 모듈이 이용한 global한 특징을 포착할 수 있으며,

이는 ViT모델의 성공이 증명한다고 생각핟나.

0개의 댓글