인공지능/개념

[개념정리] Word Embedding, Self-Attention, Language Transformer

komizke 2024. 12. 8. 18:00

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: 인코더와 동일하게 각 위치의 표현을 독립적으로 변환.

 

잔여 연결 및 레이어 정규화: 훈련 안정화와 성능 개선.

- 포지션 인코딩

트랜스포머는 위치 정보를 고려하지 않기 때문에 입력 임베딩에 포지션 인코딩을 추가하여 시퀀스의 요소 순서를 전달한다.

- 선형 및 소프트맥스

디코더의 마지막 출력은 선형 변환을 거친 뒤 소프트맥스 활성화를 통해 각 단어에 대한 확률 분포를 생성한다.

 

가장 높은 확률을 가진 단어를 선택하여 목표 시퀀스를 생성한다.