RNNS의 문제점
- 긴 문장을 다루기 어렵다 - information loss (정보가 손실 된다.)
- 학습이 어렵다. - 학습이 길어지면 Gradient(경사도)가 사라진다.
- 이러한 문제점들 때문에 Recuurent Connection이 없는 트랜스포머가 개발이 되었다.
Transformer 구성요소
- 트랜스포머는 일련의 입력값들이 사용되며, 결과값은 입력 값의 길이와 같다.
- 예시: input(x1, ..., xn)와 output(y1, ..., yn)
- 트랜스포머는 트랜스포머 블록들을 Stack으로 구성한다.
- 각 트랜스포머는 간단한 Linear layers, Feed forward network layer, 그리고 self-attention layer들을 가지고 있다.
Self-attention이란?
- Self-attention은 트랜스포머 개발의 중요부분이다.
- Recurrent connections없이 임의의 큰 글에서 정보를 추출할 수 있다.
- 셀프 어텐션은 현재 단어와 다른 단어들을 비교하여 현재 단어의 관련성을 계산한다.
- 비교방법은 dot product(행렬 곱)을 사용하여 similarity score를 계산할 수 있다. e.g. [score(xi, xj) = xi . xj
- 점수가 높을수록 유사한 단어이다.
- Similarity 결과를 확률로 바꾸기위해 softmax 함수를 사용하여 score를 얻을 수 있다.
- 소프트맥스 함수에서 나온 결과값들은 입력 가중치들과 곱하고 모두 합하여 전체 결과 값을 만든다.
어텐션 계산 방법
- 각 입력 embedding은 3가지 역할을 가지고 있다.
- Query(Q): 현재 어텐션의 focus가 되는 경우 그리고 이전의 입력값들과 비교되는 경우
- Key(K): 현재 어텐션의 focus에 대한 이전 입력값들
- Value(V): 현재 어텐션의 출력을 계산하는 데 사용
- 트렌스포머에는 각 역할에 대한 각각의 가중치가 존재한다.
- 우리는 이 메트릭스들을 사용하여 입력 값을 3가지 역할로 나타내는 벡터로 만든다.
- 그러므로, 이러한 식을 가지게 된다.
- 또한 큰값들을 피하기 위해 스케일을 아래와 같이 계산한다.
- 여기서 dk는 키 벡터의 크기이다.
- 위 계산을 모든 데이터에 계산하면 아래 식과 같다.
- 그리고 N개의 레이어의 Self-attention 식은 다음과 같다.
- 메트릭스의 위쪽 파트 값들은 제거될 필요가 있는데, 쿼리 이후에 나오는 입력값들의 비교이기 때문이다.
- 참고: 대부분의 응용 프로그램들은 입력의 길이(토큰 수)를 전체 문서가 아닌 문단이나 페이지(문서 전체)로 제한한다.
트랜스포머의 기본 형상
- 전체 그림을 보면 Residual Connection이 있는데 이는 학습의 퍼포먼스를 향상시킨다.
- 활성화와 Gradient는 레이어들을 넘는 것이 가능하다.
- 다음 레이어에 결과를 입력으로 전달하기 전에 레이어의 입력 벡터를 출력 벡터에 추가하는 것을 포함하여 구현해야한다.
- 그 후, 벡터는 정규화된다. 내부 layer 출력을 정규화하는 것은 Gradient 기반 훈련을 개선하는 방법이다.
'AI Master Degree > Natural Language Processing' 카테고리의 다른 글
Long Shorter-Term Memory 네트워크란? LSTM이란? (0) | 2022.10.13 |
---|---|
Recurrent Neural Network란? (0) | 2022.10.13 |
Word2Vec 이란? (0) | 2022.10.10 |
Logistic Regression 이란? (0) | 2022.10.10 |
Model Evaluation란? 모델 평가란? (0) | 2022.10.10 |