Attention is All you need(NIPS 2017)

Attention is All you need(NIPS 2017)

공식 transfomer 구현 github 레포 기존의 AttentionNeural Machine Translation by Jointly Learning to Align and Translate에서 알 수 있듯이 RNN의 Long term dependency 문제에 따라 Attention 메커니즘이 제안되었습니다. 하지만, RNN 기반 Encoder, Decoder를 이용하여 여전히 순차적으로 데이터를 처리해야해야만 되는 제약점이 존재하였습니다.

이는 순차적으로 Sequence data를 받아 처리하기에, 그 길이에 따라 학습시간이 증가computation cost memory problem합니다. 말입니다.


imgCaption0
Result

Result

Transfomer의 성능은 크게 3가지 관점에서 해석 가능합니다. 1. Complexity Table1에서 보면, n은 sequence length이고 d는 representaton dimension을 의미합니다. 이같은 경우애 Recurrent 모델과 비교하면 일반적으로 n이 d보다. 작음으로 time complexity가 더 작다고 할 수 있어요. Restricted SelfAttenton은 오직 r 구간의 단어들만 고려하는 모델이다기존의 n, 모델 전체와 비교하던것과 다름, ngram 생각하기 하지만 Memory 관점에서 보시면 우리는 n의 제곱 크기의 행렬 계산을 수행해야하기에, sequence의 길이에 따라 메모리 요구량이 기하 급수적으로 필요함을 알 수 있어요.

Label smoothing

논문에서 label smoothing 값으로 0.1을 사용했는데, 이는 정답 lable의 경우 일반적으로 one hot encoding 시 1로, 정답이 아닌 경우 0으로 하지만 Lable smoothing으로 0에 가까운 1에 가까운 값으로 변형하여 모델이 정답에 강한 확신을 가지지 못하게 합니다. 이는 모델이 학습데이터에 치중하지 않게 해준다, 즉 일반화와 overfitting을 해결하는데 도움을 줍니다.

정답 클래스에 대한 확률을 1 epsilon으로 설정 다른 클래스들에 대한 확률을 epsilon클래스 개수 1으로 설정 학습데이터가 매우 깔끔하지 않은 경우, label이 noisy한 경우, 같은 입력값에 다른 출력값이 많은 경우에 도움이 되는 기법입니다.

Multi head Attention

추가적으로 위에서 적용한 Attention 기법을 병렬적으로, 여러 Attention을 이용하는 기법을 Multi head Attention이라고 합니다. 이는 모호한 문맥상의 정보를 다른 관점에서 수집하는데 도움을 줍니다. 예를 들어, I eat dinner at home at 7pm. 이라는 문장이 있다고 해보자. 우리는 I를 eat이라는 행동에 집중해서 해석할 수도 있고, 혹은 집이라는 장소에 관해서나, 시간에 집중해서 해석할 수도 있습니다.

만일, 단일 Attention을 이용한다면, 여러 관점이 아닌 하나의 관점에서 Encdoing이 이루어지기에 여러 Attention을 사용해 이를 극복하려는 것입니다. 즉, Sequence encoding을 어떤 기준으로 할지 정하지 않고, mutli로 여러 관점에서 보자는 것입니다.

Masked selfattention

Masked, 즉, 가린다는 의미대로, Decoder의 경우 현재 상태만을 사용해 답변을 생성해야하기에 필요한 작업입니다. 예를 들면 나는 집에 간다라는 답변을 생성하는 Decoder라고 하자. 이때, Encdoer와 다르게 나는 생성할때에는 집에라는 뒤에 오는 단어에 관한 정보는 알 수 없어야한다추론을 미래를 앞질러서 할 수는 없기에 그럼으로 장래 정보에 관한 단어들은 값을 무한으로 만들어, softmax 적용 시 0으로 만드는 것입니다.

복잡하게 표현하면, sequence model의 autoregressive property를 보존해야하기 때문에 masking vector를 사용하여 해당 position 이전의 벡터들만을 참조하게끔 한다이후에 나올 단어들을 참조하여 예측하는 것은 일종의 치팅라고 할 수 있어요.

Remove RNN? Positional Encoding

RNN 계열의 모델이 자연어처리에 사용되던 가장 큰 이유 중 하나는 바로, 단어의 입력 순서라는 정보를 담을 수 있었기 때문입니다. 하지만, Transfomer 모델에서는 RNN을 모델을 제거하고, 각 단어를 병렬적으로 입력하기에 별도로 입력 순서 정보를 담아줄 방법이 필요했습니다. 그것이 바로 Positional Encoding입니다.

Positional Encdoding은 문자 그대로, 각 단어의 position 정보를 담아 주는 것입니다.

자주 묻는 질문

Result

Transfomer의 성능은 크게 3가지 관점에서 해석 가능합니다. 좀 더 자세한 사항은 본문을 참고해 주세요.

Label

논문에서 label smoothing 값으로 0. 자세한 내용은 본문을 참고하세요.

Multi head

추가적으로 위에서 적용한 Attention 기법을 병렬적으로, 여러 Attention을 이용하는 기법을 Multi head Attention이라고 합니다. 더 알고싶으시면 본문을 클릭해주세요.