Transformer는 자연어 처리 분야에서 매우 효과적으로 사용되는 딥러닝 모델 중 하나이다.
RNN은 n개의 입력이 들어오면 n번을 재귀적으로 거치는데, Transfomer는 입력 시퀀스 전체를 한 번에 처리한다.
전체적인 흐름은 다음과 같다.
인코더의 입력은 input embedding에 위치 정보(positional encoding)을 더해서 만든다.
step별로 Transfomer를 이해해보겠다.
self-attention이란?
입력 시퀀스 내의 모든 위치에 대해 가중치(w)를 계산하고, 이를 사용해 모든 위치의 특성 벡터를 조합한다.
=> 이 과정을 통해 입력 시퀀스의 각 위치에서 다른 모든 위치에 대한 중요도를 계산할 수 있음
+) 질문 1. key와 value는 같은 의미 아닌가 ?
- key 벡터 : "cat" 단어의 의미를 나타내는 벡터. 이 벡터는 모든 단어의 의미 벡터와 같이 사전 학습된 워드 임베딩에서 가져온다.
- query 벡터 : self-attention 연산을 수행하기 위해 "cat" 단어를 대상으로 하는 쿼리 벡터. 이 벡터는 "cat" 단어의 의미를 나타내는 벡터와 동일함.
- value 벡터 : "cat" 단어의 의미를 나타내는 벡터. 이 벡터도 key 벡터와 같이 사전 학습된 워드 임베딩에서 가져온다.
다른 역할이기 때문에 다르다.
key 벡터는 self-attention 연산에서 다른 단어들과의 유사도를 계산하는데 쓰이고,
value 벡터는 self-attention 연산 결과로서 반환되는 가중치 합에 사용된다.
...어렵다..........
무튼, self-attention을 통해 score를 구한다 !
score는[[ key 벡터 * value 벡터의 내적 / sqrt(dk) ]]이다.
이후, softmax를 취해, 각 값의 합이 1이 되도록 바꾼다.
이후, representation은 weighted sum 방식으로 구해주면 된다.
representation vector = softmax값 * value 벡터의 합
step 3. Multi-Head Attention & Feed-Forward Network
위 과정처럼 self attention을 여러 번 수행하되, 서로 다른 가중치 벡터를 사용하여 여러 관점에서 입력 시퀀스를 바라본다.
'부스트캠프 > day 정리' 카테고리의 다른 글
[week 8] AI 서비스 개발 기초 정리 (0) | 2023.04.26 |
---|---|
[week 3 - day 5] AutoEncoder & VAE 이해하기 (0) | 2023.03.23 |
[week 3 - day 2] CNN / modern CNN (0) | 2023.03.21 |
[week 1 - day 5] cnn, rnn (0) | 2023.03.10 |
[week 1 - day 4] 딥러닝 ~ 베이즈 통계학 (0) | 2023.03.10 |