🔍 BERT의 입력 임베딩(Input Embedding)
BERT는 입력 문장을 이해하기 위해 단순히 단어만을 입력하지 않고,
각 단어를 벡터(임베딩)로 변환해 모델에 넣습니다.
하지만 단어 벡터만으로는 문장 구조나 문맥을 완전히 표현할 수 없기 때문에,
BERT는 3가지 임베딩(Token, Segment, Position)을 더해서 최종 입력 벡터를 구성합니다.
🚀 BERT의 입력 임베딩 3가지 요소
1️⃣ Token Embedding
- 문장의 각 단어(토큰)를 고유한 벡터로 변환합니다.
- BERT는 WordPiece 토크나이저를 사용해 단어를 더 작은 의미 단위로 나눕니다.
- 예를 들어,
- "playing" → "play" + "##ing"
- "unbelievable" → "un" + "##believable"
- "##"는 앞의 토큰과 이어진 부분임을 나타냅니다.
🌟 특징
- 약 30,000개의 WordPiece 토큰을 사용합니다.
- 모든 토큰은 768차원(BERT base) 벡터로 표현됩니다.
- BERT는 새로운 단어도 기존 토큰을 조합해 표현할 수 있기 때문에 효율적입니다.
2️⃣ Segment Embedding
BERT는 두 개의 문장을 한 번에 입력할 수 있습니다.
이때, 문장1과 문장2를 구분하기 위해 세그먼트 임베딩이 사용됩니다.
🌟 특징
- 첫 번째 문장(시퀀스1): 세그먼트 A(0)
- 두 번째 문장(시퀀스2): 세그먼트 B(1)
👉 세그먼트 임베딩은 **문장 간 관계(Task)**를 학습하는 데 도움을 줍니다.
- 예를 들어,
- 문장1: "I love AI."
- 문장2: "AI is amazing!"
- 두 문장이 실제 문서에서 서로 연결되어 있는지 예측하는 Next Sentence Prediction (NSP) 작업에 사용됩니다.
3️⃣ Position Embedding
Transformer 모델은 단어의 순서 정보를 알지 못합니다.
따라서, BERT는 문장 내 각 단어의 위치를 나타내기 위해 포지션 임베딩을 추가합니다.
🌟 특징
- 각 단어의 위치(0, 1, 2, 3...)에 따라 고유한 벡터를 부여합니다.
- 예를 들어, 문장에서
- "I" → 0번째 위치 → 고유 벡터
- "love" → 1번째 위치 → 다른 벡터
- 포지션 임베딩은 길이가 512 토큰까지 가능합니다. (BERT는 최대 512개의 토큰을 입력으로 받을 수 있음)
👉 이렇게 포지션 임베딩을 사용하면,
모델이 단어의 위치와 순서까지 학습할 수 있습니다.
🔧 입력 임베딩 예시
예시 문장
입력 문장1: I love AI.
입력 문장2: AI is amazing!
BERT 입력:
[CLS] I love AI . [SEP] AI is amazing ! [SEP]
🔹 Token Embedding
- [CLS], I, love, AI, ., [SEP], AI, is, amazing, !, [SEP]
- 각각 WordPiece 토크나이저로 분할됨.
🔹 Segment Embedding
- [A], A, A, A, A, [A], B, B, B, B, [B]
- 첫 번째 문장은 A(0), 두 번째 문장은 B(1)로 구분.
🔹 Position Embedding
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
- 문장 내 각 단어의 위치를 벡터로 표현.
🎯 최종 입력 벡터 계산
- Token Embedding + Segment Embedding + Position Embedding
- 위의 세 가지 벡터는 **동일한 차원(768차원)**으로 표현되므로, 단순히 더해져서 최종 입력 벡터로 사용됩니다.
🔑 입력 임베딩이 중요한 이유
- 문맥(Context) 이해
토큰 임베딩만 사용했다면, 문장의 문맥을 파악하기 어렵습니다.
세그먼트와 포지션 임베딩을 추가해 문장의 위치와 구조를 이해할 수 있습니다. - 문장 관계 학습
세그먼트 임베딩 덕분에, BERT는 두 문장 간의 연결성을 학습할 수 있습니다.
이는 질의응답(QA), 텍스트 유사도 작업에서 중요한 역할을 합니다. - 순서 정보 학습
포지션 임베딩이 단어의 순서와 위치를 모델에 제공합니다.
이를 통해 Transformer는 단어의 순서를 무시하지 않고 학습할 수 있습니다.
'🤖AI > bert' 카테고리의 다른 글
[BERT]Input/Output Representations (0) | 2025.01.09 |
---|---|
[BERT]BERT의 Architecture (0) | 2025.01.09 |
[BERT]BERT란? (1) | 2025.01.09 |