[개념정리] Word Embedding, Self-Attention, Language Transformer
1. Word embedding
단어를 고차원 벡터 공간에서 밀도가 높은 벡터로 표현하는 기술이다.
단어 간의 의미 관계를 포착하여 의미적으로 유사한 단어를 유사한 벡터로 표현한다.
- 단어 표현 방법 종류
• One-hot encoding
단어와 같은 범주형 데이터를 숫자로 표현하는 기법.
각 단어는 고차원의 벡터 공간에서 하나의 1과 나머지 0으로 표현된다.
단점으로는 의미론적 관계가 부족하고 계산이 비효율적이다.
• Bag-of-Words, BoW
텍스트에서 단어의 빈도를 계산하여 문서나 문장을 벡터로 변환한다.
어순, 문맥은 무시하며 단어 간의 의미 관계를 포착하지 못한다.
• TF-IDF, Term Frequency - Inverse Document Frequency
문서에 자주 등장하지만 말뭉치에서 드문 단어에 높은 가중치 할당한다.
• Word2Vec
단어를 고차원 공간에서 조밀하고 연속적인 벡터로 변환한다.
Skip-gram, CBOW 와 같은 신경망 아키텍쳐를 사용하여 주변 단어를 예측하거나 단어 표현을 학습한다.
단어간의 의미 관계 포착할 수 있고 단어 유추 및 의미론적 산술 가능하다.
• Glove, Global Vectors for Word Representation
글로벌 단어 동시 발생 통계와 행렬 인수분해를 결합하여 단어 표현 학습한다.
단어 간의 의미론적 관계와 구문론적 관계를 모두 포착한다.
Word2Vec, TF-IDF와 같은 기존 카운팅 기반 방법의 한계를 극복한다.
• FastText
문자 수준의 n-그램을 이용하여 하위 단어 임베딩의 합으로 단어를 표현한다.
어휘에서 벗어난 단어를 처리할 수 있고 희귀하거나 철자가 틀린 단어에 대해 강건한 표현을 제공한다.
복잡한 구조에서 더 나은 임베딩이 가능하다.
• 동적 임베딩
상황에 맞는 단어 임베딩이라고 하며 주변 문맥에 따라 단어의 의미를 캡쳐한다.
문맥화된 단어 표현을 학습한 모델 예시: ELMo, BERT, GPT...
2. Self-attention
- 기본 개념
Self-attention은 확장된 도트-프로덕트 어텐션 메커니즘으로, 입력시퀀스 자체 내에서 종속성과 관계를 설정하는 기술이다. NLP 분야에서 문장 내 단어 간의 관계를 이해하고 장거리 종속성을 효과적으로 파악하기 위해 사용되며, BERT, GPT등 트랜스포머 기반 모델의 핵심 구성 요소이다. 이 메커니즘은 문맥상의 중요성을 학습하고, 입력 시퀀스 간 관계를 동적으로 조정할 수 있다.
- 주요 구성 요소 및 과정
[1] 초기화
입력 벡터 집합이 주어지면, 쿼리, 키, 값 세 개의 학습 행렬이 생성된다.
각 입력 벡터는 이 행렬들과의 선형 변환을 통해 새로운 벡터 공간으로 매핑된다.
[2] 어텐션 스코어 계산
쿼리 벡터와 다른 모든 입력의 키 벡터 사이의 내적을 통해 어텐션 스코어를 계산한다.
이는 현재 입력에 대한 각 입력의 상대적 중요도를 측정하는 지표가 된다.
[3] 크기 조정, Scaling
매우 큰 내적 곱을 방지하기 위해 스코어를 키 벡터의 차원 수의 제곱근으로 나눈다.
이를 통해 수치적으로 안정성을 확보한다.
[4] 어텐션 마스크, Attention Mask
입력 시퀀스에서 주목할 위치를 제어하기 위해 사용된다.
[5] 소프트맥스, Softmax
계산된 어텐션 스코어를 소프트맥스 함수를 통해 정규화하여 확률 분포로 변환한다.
[6] Context 벡터 생성
정규화된 어텐션 스코어를 각 값 벡터와 곱해 가중합을 계산하여 context 벡터를 생성하고 이는 최종 출력으로 사용된다.
- 장점
• 장거리 종속성 파악: 시쿼스에서 멀리 떨어져 있는 요소 간의 관계를 포착하여 복잡한 문맥을 이해한다.
• 유연성 있는 문맥 이해: 단어 간의 관계를 기반으로 문맥을 이해한다.
• 병렬 처리: 동시 계산이 가능해져 학습 및 추론 속도가 빨라진다.
• 가변 길이 시퀀스 처리: 다양한 길이의 입력 시퀀스를 효율적으로 처리할 수 있다.
• 계층적 구조 파악: 로컬 및 글로벌 종속성 모두 파악 가능해 문장의 구조적 관계 이해하는데 유용하다.
• 확장성: RNN, CNN보다 계산 비용 관리가 용이하며, 대규모 데이터에서도 안정적으로 동작한다.
• Pre-training/ Fine-tuning: 대규모 모델 학습에 효과적이며 특정 다운스트림 작업에 맞게 Fine-Tuning하여 높은 성능을 달성한다.
• Multi-modal 데이터 처리: NLP뿐만 아니라 이미지, 오디오 등 다양한 데이터 유형에 적용 가능하다.
• 해석 가능성: 모델의 예측 근거를 이해할 수 있도록 도와준다.
3. Multi - head Attention
- 메커니즘
Multi-head Attention은 입력 시퀀스의 다양한 패턴과 관계를 병렬적으로 분석할 수 있도록 설계된 어텐션 메커니즘이다.
주요 단계는 다음과 같다:
1. 단어 임베딩 분할
입력 단어 임베딩((512차원 벡터))을 여러 개의 하위 공간으로 분할((64차원))하여 쿼리, 키, 값 벡터를 생성한다.
2. 스케일드 도트-프로덕트 어텐션 수행
각 쿼리, 키, 값 벡터에 대해 스케일드 도트-프로덕트 어텐션을 병렬적으로 계산한다.
3. 출력 연결
모든 헤드에서 나온 출력 값을 연결하고, 선형 변환을 적용하여 최종 512차원의 컨텍스트 임배딩 벡터를 생성한다.
- 장점
• 빠른 연산: 각 어텐션 헤드가 독립적으로 작동하여 계산을 병렬적으로 수행하므로 연산 속도가 빨라진다.
• 상황별 이해도 향상: 병렬 처리로 다양한 패턴과 관계를 동시에 포착하여 데이터의 복잡한 종속성을 이해한다.
• 향상된 성능: 데이터의 복잡한 종속성을 효율적으로 포착할 수 있다.
• 확장 가능성: 병렬 처리를 통해 복잡한 입력 시퀀스를 효과적으로 처리할 수 있다.
• 적용 가능성: 어텐션 헤드맏 서로 다른 유형의 관계를 포착할 수 있다.
• 유연성: 작업의 복잡성에 따라 헤드의 수를 조정함으로써 모델의 성능을 최적화한다.
- 단일 헤드 어텐션과 비교
특징 | 단일 헤드 어텐션 | 멀티 헤드 어텐션 |
구조 | 쿼리, 키, 값 집합이 하나만 존재. | 여러 개의 퀴리, 키, 값 집합 사용 |
병렬 처리 | 불가능 | 가능 |
포착 능력 | 단일 관계 기반 분석에 한정 | 로컬 및 글로벌 종속성을 모두 포착 |
성능 | 입력 시퀀스 내 복잡한 관계 파악에 한계 | 다양한 관계를 병렬적으로 분석하여 향상된 성능 |
- Computer Vision에서 멀티 헤드 어텐션
소프트 어텐션: 입력 데이터의 가중치 평균을 의미하고, 이미지의 모든 부분에 주의를 기울인다.
하드 어텐션: 입력 데이터에서 가장 중요한 데이터를 선별하지만, 모델의 정확도가 저하될 수 있다.
4. 언어 트랜스포머
- 구조
• 인코더
입력 시퀀스의 컨텍스트화된 표현을 생성하여 요소 간의 관계 정보를 유지한다.
Multi-head Attention: 입력 시퀀스 내의 여러 위치에 대해 중요도를 계산하고 가중치를 부여한다.
Feed Forward Network: 각 위치의 표현은 독립적으로 변환하는 완전 연결 신경망.
잔여 연결 및 레이어 정규화: 기울기 소실 방지와 훈련 안정화를 위해 사용한다.
• 디코더
인코더의 출력을 활용하여 이전에 생성된 위치를 기반으로 목표 시퀀스를 한 번에 하나씩 생성.
Masked Multi-head Attention: 자동 회귀 속성을 유지하며 이전 위치가 이후 위치에 영향을 주지 않도록 한다.
Feed Forward Network: 인코더와 동일하게 각 위치의 표현을 독립적으로 변환.
잔여 연결 및 레이어 정규화: 훈련 안정화와 성능 개선.
- 포지션 인코딩
트랜스포머는 위치 정보를 고려하지 않기 때문에 입력 임베딩에 포지션 인코딩을 추가하여 시퀀스의 요소 순서를 전달한다.
- 선형 및 소프트맥스
디코더의 마지막 출력은 선형 변환을 거친 뒤 소프트맥스 활성화를 통해 각 단어에 대한 확률 분포를 생성한다.
가장 높은 확률을 가진 단어를 선택하여 목표 시퀀스를 생성한다.