각각의 head는 서로 다른 정보를 추출해 상호보완적으로 작용
Complexity per Layer
vs
Sequential Operations (병렬화)
→ Self-Attention이 메모리 요구량은 더 높으나, 학습 속도가 더 빠름
Matimum Path Length
RNN -
Self-Attention -
어떤 단어든 정보를 직접적으로 한 번에 가져올 수 있음
long term dependency 문제 해결
Add
단어 I에 대한 벡터가 [1, -4], 단어 I의 encoding output이 [2, 3]일 때,
두 벡터를 add해 [3, -1] 벡터를 도출
입력 벡터와 encoding output 벡터의 차원이 동일해야 함
주어진 sample들의 평균을 0, 분산을 1로 만들어 준 후 원하는 평균, 분산을 주입할 수 있도록 하는 선형 변환으로 이루어짐
thinking, machines의 단어 벡터를 각각 평균 0, 분산 1이 되도록 정규화
맨 왼쪽의 W=[3 1 -1 -2], b=[1 1 0 2]는 학습 가능한 parameter
정규화된 값을 이용해 최적의 W, b를 찾도록 학습
[2.95, 3.1]은 [0.65, 0.7]이 을 거쳐 나온 값
가변 길이를 갖는 RNN에서는 Layer Normalization이 효과적
만약에 [0.65 0.7][-0.45 -1.5] 단위로 수행하면 batch normalization?
‘I go home’, ‘Home go I’ 라는 두 문장이 있을 때, Self-Attention에선 위치 정보를 따로 고려하지 않기 때문에 문장 구조가 다름에도 각 단어들의 output이 동일하다.
이를 해결하기 위해 각 단어의 위치 정보를 부여
순서를 규명할 수 있는 벡터를 word vector에 더해줌
learning rate 값도 학습 중 적절히 변경하며 사용
<SOS>
token에 대한 예측을 수행할 때, ‘나는’과 ‘집에’ 단어가 고려되어선 안 됨※ 모든 이미지 및 코드 출처는 네이버 커넥트재단 부스트캠프 AI Tech 5기입니다. ※