-
Attention Backgrounddeep learning/natural language process 2024. 3. 20. 17:32
1. Positional Encoding
- 정의 : 순서를 고려하지 않는 모델의 입력 sequence에 위치 정보를 제공하기 위한 encoding 방법
- 목적 : 모델이 단어의 순서를 이해하여 더 정확한 출력을 생성할 수 있도록 하기 위함
- 필요성
- 순환 신경망은 sequence data의 순서 정보(시간 정보)를 hidden state를 통해 순차적으로 전달하여 모델링하지만, 모든 입력을 동시에 처리하는 attention mechanism을 사용할 경우 입력 데이터의 순서를 감지할 수 있는 구조적 특성을 갖지 못함
- 단어나 토큰의 순서 정보를 직접적으로 인식할 수 없다는 점에서, sequence의 순서 정보를 별도로 제공해야할 필요성 대두
- 문장 내의 단어 위치를 알 수 없다면 문장의 뜻이 완전히 달라지는 문제가 발생할 수 있음
- Position vector 부여 방법
- Position vector의 조건 : 모든 위치 값은 sequence의 길이나 input에 관계없이 동일한 값을 가져야하며, 위치 값이 지나치게 크면 안됨 (다른 의미정보 값이 상대적으로 작아지기 때문)
- sine & cosine 함수 사용
- [-1, 1] 사이를 반복하는 주기 함수 : 긴 문장의 sequence가 주어진다 해도 위치 벡터 값의 차이가 적지 않게 된다.
- 다양한 주기의 sine & cosine 함수 사용 : 하나의 위치 벡터를 4개의 차원으로 서로 다른 주기의 sine & cosine 함수를 사용함으로서 겹치지 않는 위치 벡터 생성 가능
- 짝수 번째 위치 : $PE(pos, 2i) = \sin (pos / 10000^{2i / d_{model}})$
- 홀수 번째 위치 : $PE(pos, 2i+1) = \cos (pos / 10000^{2i / d_{model}})$
- 위치 벡터를 각 단어 벡터에 더해준다. (summation)
- concatenate (연결)
- 두 벡터나 배열을 서로 이어 붙여 하나의 긴 벡터나 배열을 만드는 것으로, 입력 데이터의 모든 원소를 보존한다는 특징
- concatenate를 통해 데이터의 차원은 높아지게 됨 - resource 문제
- 다양한 source로부터의 특성 vector를 결합할 때 유용 (즉 다양한 source의 attribute를 보존해야할 필요성이 있을 때 사용)
- summation (합산)
- 두 벡터의 동일한 위치에 있는 원소들을 각각 더하는 것으로, 각 원소의 값을 합쳐 새로운 값으로 만드는 것
- summation을 통해 원본 데이터의 차원은 변화하지 않음
- 정보가 뒤섞이는 문제가 발생
- 충분한 computing resource 환경에서는 concatenate를 사용하여 증가된 데이터의 차원을 처리한다면 정보가 뒤섞이는 summation의 상대적 한계를 극복 가능
- concatenate (연결)
2. Attention
- 등장 배경
- Seq2Seq의 경우 입력 문장의 길이와 상관없이 사용자가 지정한 고정된 크기의 벡터에 정보를 모두 압축하는데, 만약 고정된 크기의 벡터에 정보가 다 압축되지 못할 경우 정보 손실이 발생 (bottleneck)
- LSTM을 포함한 RNN 계열의 신경망의 경우 장기 의존성 문제로 인한 정보 손실이 근본적으로 존재
- LSTM을 포함한 RNN 계열은 sequence의 각 요소를 순차적으로 처리한다는 점에서, 긴 sequential 데이터를 처리할 때 시간이 길어지고 실시간 처리가 어렵다는 한계 - bottleneck 문제
- 기본적으로 seq2seq의 성능 향상을 위해 등장
- Attention mechanism
- 정의 : 딥러닝 모델이 입력 데이터의 중요한 부분에 주목할 수 있도록 하는 기술
- 디코더가 출력 sequence의 각 단계에서 인코더의 전체 입력 sequence를 참조하여 중요한 부분에 주목할 수 있도록 하는 기술
- Attention Model의 핵심은 ‘예측해야 할 값에 도움이 되는 입력 데이터를 어떤 방식을 통해 구할 것인가?’이며, 이 방법론에 따라 model의 종류는 달라지게 된다. (attention을 어떻게 구할 것인가?)
- 기본적인 작동 원리
- $\text Attention(Q, K, V)$
- Query : 입력 sequence에서 관련된 부분을 찾으려고 하는 정보 벡터 (Source)
- Key : 관계의 연관도를 결정하기 위해 Query와 비교하는데 사용되는 벡터 (Target)
- Value : 특정 Key에 해당하는 입력 sequence의 정보 (Value)
- 입력 Sequence의 각 요소에 가중치를 할당하는 것 (가중치 : 현재 작업에서의 중요도)
- attention score(평가된 유사도) → attention distribution (by softmax) → attention value (context vector : attention distribution을 고려한 모든 인코더의 hidden state의 가중평균 값) → concatenate with decoder’s hidden state
- $\text Attention(Q, K, V)$
- 종류
- soft attention : 가중치가 입력 sequence의 모든 부분에 분산되어 있는 종류
- hard attention : 특정 입력 요소에만 집중하고 나머지는 무시하는 종류
- self-attention : 입력 데이터 내에서의 관계를 스스로 모델링하는 것으로, 각 입력 요소가 자신을 포함한 다른 모든 요소와의 관계를 계산
- Attention Model의 핵심은 Attention을 어떻게 구하는가가 핵심이며, Attention Score를 구하는 방법에 따라 Dot-Product Attention, Bahdanau Attention, Luong Attention 등으로 구분된다.
- 정의 : 딥러닝 모델이 입력 데이터의 중요한 부분에 주목할 수 있도록 하는 기술
3. Scaeld Dot-product Attention
- 정의 : Attention mechanism의 한 형태로, 입력된 Query들이 key와 value 쌍을 어떻게 활용하여 출력을 생성하는지를 정의하는 mechanism으로, 복잡한 Sequence 간의 관계를 모델링하는데 효과적
- 목적 : 주어진 Query에 대해 가장 관련성 높은 정보를 선택하여 집중하는 것으로, 이를 통해 모델은 입력 sequence 내의 중요한 부분에 주목할 수 있게 함
- 구성 요소
- Query : 현재 처리 중인 입력 요소 또는 Sequence를 나타내는 Vector
- Key : 비교 대상이 되는 입력 요소들을 나타내는 Vector의 집합
- Value : key에 대응하는 값을 나타내는 vector의 집합
- 작동 원리
- attention score → attention distribution → attention value
- 유사도 계산 : Query와 모든 key의 내적을 계산하여 각 key에 대한 query의 유사도를 평가
- $Q\cdot K^T$ : Query와 key 내적
- attention score 도출 : 내적 결과를 key 벡터 차원의 제곱근으로 나누어 스케일링 (softmax 함수 적용시 발생 가능한 gradient vanishing or exploding problem 예방을 위함)
- $Q \cdot K^T \over \sqrt{d_k}$ : 유사도 결과를 key 벡터의 차원의 제곱근으로 나누어 스케일링
- softmax 적용 (attention distribution) : attention score에 softmax 함수를 적용하여 각 key에 대한 query의 상대적 중요도로서 확률분포를 획득
- $Softmax({Q \cdot K^T \over \sqrt{d_k}})$
- attention value 도출 : attention 가중치 값을 Value Vector와 곱하면 해당 Query에 대한 Attention value가 도출되며, 모든 Query에 대한 Attention value를 concatenate 하면 context vector(attention value matrix) 생성
- $a_t = \sum Softmax({Q \cdot K^T \over \sqrt{d_k}}) \cdot V \text\ (attention\ value = context\ vector)$
- 문맥을 담고 있다는 의미에서 context vector라고도 불림
- 상대적인 장점
- Query와 Key의 similarity를 직접 반영한다는 점에서, 코사인 유사도에 기초한 유사도를 명확하게 반영
- scaling을 통한 gradient vanishing 및 exploding 문제를 극복하여 DNN에서의 학습 안정성을 향상
- Dot-Product를 Layer 기반이 아닌 Matrix 기반의 계산으로 해결한다는 점에서 계산 비용 절감
4. Self-Attention
- 정의 : 입력 sequence 내의 각 요소가 서로에 대해 얼마나 관련이 있는지를 평가하여 해당 정보를 바탕으로 sequence의 표현을 조정하는 방식
- 목적 : 각 입력 요소가 자신을 포함한 다른 모든 요소와의 관계를 계산하여 문맥을 반영한 표현을 생성하기 위함
- 작동 방식
- 개요
- Q, K, V vector → attention score matrix → attention distribution matrix → attention value matrix
- embedding vector : 입력 sequence의 각 단어가 embedding vector로 변환
- Q, K, V vector 생성
- 각각의 가중치 행렬을 통해 Q, K, V vector 생성
- Linear Layer를 통해 가중치 행렬을 사용하는 이유 : 병렬 연산에 적합한 구조로 만들기 위해 벡터의 차원을 바꿔주기 위함
- 변환되는 Q, K, V vectors의 차원은 hyper-parameter로, 직접 설정
- 각각의 가중치 행렬을 통해 Q, K, V vector 생성
- Attention Score Matrix 생성
- Attention Distribution Matrix 생성
- Attention Value Matrix 생성
5. Masked Self-Attention
- 정의 : attention score를 계산할 때, 특정 시점 이후의 모든 위치에 대한 접근을 차단하는 mask를 적용하는 self-attention
- 목적
- teacher forcing에 따른 노출 편향과 학습과 추론 간의 불일치 문제를 극복하기 위함
- teacher forcing : sequence 모델을 학습시킬 때 사용하는 기법으로, 모델의 예측 대신 실제 target sequence를 다음 입력으로 사용하는 것 (학습 가속 및 오류 축적 감소 목적으로 사용)
- 특정 시점에서 해당 시점 이후의 정보에 대해 접근하지 못하도록 제한하는 것으로, 이미 생성된 출력 혹은 입력까지만 고려할 수 있도록 유도하는 것
- 자기 회귀적 모델링(auto-regressive modeling) : 모델이 현재 시점의 출력을 예측할 때 이전 시점까지의 정보만을 사용하도록 하기 위함
- 정보 유출 방지 : 아직 생성하지 않은 미래의 출력 정보를 획득함으로써 얻을 수 있는 정보의 차단
- 순차적 예측 강화 : Sequence 생성 과정에서의 순차적인 생성의 예측력 강화
- teacher forcing에 따른 노출 편향과 학습과 추론 간의 불일치 문제를 극복하기 위함
- 작동 원리
- attention score 계싼 시점에서 특정 시점 이후의 모든 위치에 대해 mask 적용
- masking 값 : $- \infinte$ (softmax 결과 0에 수렴)
6. Multi-head Attention
- 정의
- scaled dot-product attention의 확장된 형태로,
- Attention mechanism을 여러 번 병렬로 적용하여 다양한 관점에서 데이터를 분석하고 종합하는 방식
- 목적
- 입력 데이터에 대한 다양한 표현(subspaces)에서 정보를 병렬로 학습
- 서로 다른 부분에 attention을 주어 입력 토큰 간의 더 복잡한 관계를 다룰 수 있으며,
- 다양한 유형의 종속성을 포착하여 표현력이 향상될 수 있다.
작동 원리
- Q, K, V vectors의 생성 과정을 여러 번 반복하여 여러 attention value matrix 생성
- 출력된 모든 attention value matrix를 axis=1로 concatenate
- concatenate된 attention matrix의 값을 정리해준다는 의미로 linear layer롤 통과시켜 가중치 행렬을 곱해
- concatenate된 attention matrix의 차원은 input embedding vector의 차원과 동일해야 함
7. Position-wise Feed Forwawrd Neural Network (Point-wise FFNN)
- 정의 : 각 data-point 별로 적용되는 feed forward neural network
- 목적
- 모델의 비선형성을 도입
- 입력 데이터의 변환을 통해 복잡한 패턴의 학습 능력을 보장
- 작동 원리
- 두 번의 선형 변환과 한 번의 활성함수 통과
8. Residual Connection
- multi-head attention 및 FFNN 통과 전의 데이터를 통과 후의 데이터에 더해줌으로써 residual 학습시켜 정보의 소실을 최소화하기 위한 목적으로 수행
'deep learning > natural language process' 카테고리의 다른 글
DTM과 TF-IDF (0) 2024.02.29 Word2vec (0) 2024.02.28