SYDLAB_inha/Machine Learning

ML - Transformer / Self-Attention / attention-weights / context vector / Residual connection

빈그레 2023. 9. 20. 00:13

 

 

 

 

 


Transformer

 

 

 

 

 

 

 

RNN Summary

 

- Architecture design 관점에서 flexibility가 높다.

- Vanilla RNNs가 가장 기본이나, 잘 동작하지 않는다.

- RNN의 변형된 형태인 LSTM이나, GRU를 더 많이 쓴다. //gradient flow가 개선

 (**GRU : LSTM의 성능을 유지하면서도 좀 더 simple하게 만들어진 아키텍처)

- RNN의 단점은 gradient가 폭발하거나 소실된다는 것이다. exploding의 경우에는 gradient clipping이라는 기법으로 threshold를 넘지 못하게 하고, vanishing의 경우에는 truncated기법으로 input을 capacity 크기에 맞추어 잘라서 쓴다.

 

 

 

 

 

Transformer : Self-Attention

 

: 시계열 데이터를 다루는 새로운 패러다임으로 등장한 것이 바로 Transformer이다. 

Transformer는 자연어 처리 (NLP) 및 기계 학습 분야에서 널리 사용되는 딥러닝 모델 아키텍처 중 하나이다. Transformer 모델은 2017년 발표된 "Attention is All You Need" 논문에서 처음 소개되었으며, 이후 NLP 및 기타 sequence 관련 작업에서 혁신적인 성능을 보여주어 많은 관심을 받았다.

 

(**자연어 처리 : 컴퓨터가 인간의 언어를 이해하고 처리하는 기술로, text data르 분석하여 정보를 추출 및 대화에 사용됨)

 

 Transformer 모델은 Machine Translation, text 생성, 질문 응답, 문서 요약, 등 다양한 NLP 작업에서 성능이 매우 뛰어나다. 특히, "BERT"와 "GPT"와 같은 Transformer기반의 사전 훈련 모델은 최근 NLP 분야에서 주요한 업적을 이루었다.

 

 

 

 

Sequence to Sequence

 

: Basic RNN의 Long-term dependency 문제를 해결하고자 cell구조를 추가하여 LSTM을 만들었으나, RNN보다는 낫다~! 정도이지 그렇게 잘 되지 않았고.... Attention 이라는 개념을 통해 판도가 바뀌게 된다.

 

 

 

사람의 뇌는 영상이나 이미지를 볼 때, 모든 부분을 보려하기보다 특정 부분에 더욱 집중하여 보게된다. 이러한 특징을 Neural Network에 녹여보려했던 시도가 바로 Attention이다. 

 

 

Attention이라는 개념을 encoder와 decoder 쓰는 일반적인 Serial Data modeling에 적용을 시키면 아래와 같이 표현된다.

 

위 그림은 I am a student라는 문장을 프랑스어로 번역하는 과정이다. 이러한 번역 작업을 many to one으로 문장을 인코더에서 압축하고 one to many로 다시 펼쳐서 번역해내는 게 네트워크 관점에 상당히 무리한 과정이다.

 

따라서 출력이 될 각각의 프랑스 단어와 입력에 있는 모든 단어의 internal state를 비교하는 과정을 거쳐서 연관성을 본다. 여기에서 유사도가 높으면 Attention이 높다고 표현할 수 있다. 이렇게 연관성을 softmax로 수치화하여 각각의 input 값에 attention weights를 곱해 하나의 context vector로 나타내어 첫번째 단어의 출력값이 나오는 데에 직접적으로 활용하게 된다.

 

attention weights를 구하기 위해 먼저 각각의 input에 대해 0에서 1사이 값으로 영향력을 정해주게 되는데, 각각의 영향력이 독립적으로 정해지는 것이 아니고, 입력이 4개라면 4개에 대해 상대적인 영향력으로서 모든 input의 영향력을 더했을 때 1이 되도록 softmax를 활용해서 영향력이 정해진다.

 

이렇게 정해진 attention weight는 각각의 input vetor와 곱해진 뒤 모두 더해져 context vector가 된다.

 


 

 

 

<Transformer 특징 및 구성 요소 >

- (1) Self-Attention Machanism
: Transformer의 핵심은 "Self-Attention"이다. Self-Attention은 input sequence의 각 위치간 관계를 계산한다.
 이는 Query(쿼리), Key(키), Value(밸류)로 구성되며, input sequence의 모든 위치에 대한 가중치를 계산한다. 이러한 가중치는 주어진 위치에서 다른 위치로의 관계를 나타내므로, 문장 내 장거리 종속성을 파악하는 데 도움을 준다.

*** 장거리 종속성 (long-range dependencies) : 문장이나 sequence내에서 먼 위치에 있는 요소 간의 상호 의존성을 말한다.


- (2) Multi-Head Attention
:Transformer model은 여러개의 Self-Attention Head를 사용하여 여러가지 관점에서 input sequence를 살펴보는 "Multi-Head Attention"기법을 사용한다. 각각의 Head는 서로 다른 weight matrix를 사용하여 input sequence에 대해 self-Attention을 계산한다. 각 Head의 계산 결과는 결합되어 최종 출력을 형성하며, 다양한 종속성과 패턴을 파악하는 데 도움을 준다.
 
*** Attention Head : 모델이 input data의 특정 부분에 집중하여 관련 정보를 추출하는 데 사용되는 부분이다.
input sequence의 각 위치 간의 관계를 모델링하기 위해 Multi head Attentiond에서는 Attention Head 여러개가 사용된다.


 


- (3) Encoder-Decoder Architecture
 : Transformer model은 주로 Encoder와 Decoder로 구성된다. Encoder는 input sequence를 처리하고, Decoder는 output sequence를 생성한다. Encoder와 Decoder는 여러 layer(input layer, hidden layer,output layer)로 구성되며, 각 layer는 Multi-Head Attention과 Feedforward Neural Network로 구성된다.

( *** Feedforward Neural Network (FNN) : 인공 신경망의 가장 기본적인 형태로, 데이터가 입력층에서 출력층을 향해 단방향으로 흐르는 구조를 가지며, 은닉층을 포함할 수 있다. )




- (4) Positional Embedding
:  Transformer model은 단어의 상대적 위치 정보를 잃지 않도록 position embedding이 추가된다. 이러한 embedding은 입력 토큰의 절대적인 위치를 인코딩한다.

(*** Token(토큰) : 텍스트 처리와 관련된 개념으로, 주어진 텍스트를 더 작은 단위로 나눈 것이다. 토큰은 텍스트에서 의미있는 단어, 구두넘, 숫자 또는 다른 기호의 조각으로 나눌 수 있다. Tokenization(토큰화)는 텍스트를 토큰으로 분할하는 과정을 말하며, 자연어 처리에서 중요한 전처리 단계 중 하나이다. 문장을 토큰화하면 아와 같이 단어들의 조각으로 나누어진다.)



- (5) Residual connection (잔차 연결)
: 각 층에서 입력과 출력 간의 Residual Connection(잔차연결)과  Layer normalization(층 정규화)가 사용되어 학습의 안정성을 높이고 그레디언트 소실 문제를 완화한다. Residual는 F(입력)으로 표기하며 출력에서 입력을 뺀 값을 의미한다. 즉 모델이 어떤 변환할 수행한 후의 출력과 입력 간의 차이를 나타낸다. Residual connection은 기본적으로 정볼르 보존하는 경로를 제공하며, 이를 통해 모델이 입력 정보를 손실 없이 전달할 수 있게 된다. Transformer에인코더와 디코더의 각 층에서의 입력과 출력 사이에 residual connection이 추가되어 사용된다.


- (6) Layer Normalization (층 정규화)
: Layer normalization은 각 층에서 activation function을 통과한  layer의 출력을 정규화하는 과정을 나타낸다.
layer normalization은 평균과 표준편차를 사용하여 각 feature dimension에 대한 정규화를 수행하면 model의 출력은 평균이 0이고 분산이 1인 분포를 갖게 된다.