Adventure Time - Finn 3
본문 바로가기
AI/ML

BERT (2)

by hyun9_9 2026. 5. 3.

BERT에서 사용되는 특별 토큰들과 정숫값

  • [PAD] - 0 padding token
  • [UNK] - 100 unknown token
  • [CLS] - 101 classification token. 문장의 시작
  • [SEP] - 102 separator token. 문장의 끝
  • [MASK] - 103 mask token (마스크언어모델 MLM 에서 사용)
import pandas as pd
from transformers import BertTokenizer

# Bert-base의 토크나이저
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
result = tokenizer.tokenize('Here is the sentence I want embeddings for.')
print(result)
# ['here', 'is', 'the', 'sentence', 'i', 'want', 'em', '##bed', '##ding', '##s', 'for', '.']

for token in result:
  print(token, tokenizer.vocab[token])

"""
here 2182
is 2003
the 1996
sentence 6251
i 1045
want 2215
em 7861
##bed 8270
##ding 4667
##s 2015
for 2005
. 1012
"""

 

포지션 임베딩(Position Embedding)

트랜스포머에서는 sin,cos 함수를 사용하여 포지셔널인코딩이라는 방법을 통해 단어의 위치 정보를 표현했다.

포지셔널 인코딩은 사인 함수와 코사인 ㅏㅁ수를 사용하여 위치에 따라 다른 값을 가지는 행렬을 만들어 이를 단어 벡터들과 더하는 방법이다.

BERT에선 학습을 통해서 얻는 포지션 임베딩이라는 방법을 사용하여 단어의 위치 정보를 표현함

 

 

WordPiece Embedding은 우리가 이미알고있는 단어 임베딩으로 실질적인 입력이다.

그리고 이 입력에 포지션 임베딩을 통해서 위치 정보를 더해주어야한다.

포지션 임베딩의 아이디어는 굉장히 간단한데 위치정보를 위한 임베딩층을 하나 더 사용한다.

가령 문장의 길이가 4라면 4개의 포지션임베딩 벡터를 학습시킨다.

그리고 BERT의 힙력마다 다음과같이 포지션 임베딩 벡터를 더해주는것

  • 첫번째 단어의 임베딩 벡터 + 0번 포지션 임베딩 벡터
  • 두번째 단어의 임베딩 벡터 + 1번 포지션 임베딩 벡터
  • 세번째 단어의 임베딩 벡터 + 2번 포지션 임베딩 벡터
  • 네번째 단어의 임베딩 벡터 + 3번 포지션 임베딩 벡터

실제 BERT에서는 문장의 최대 길이를 512로 하고 있으므로 총 512개의 포지션 임베딩 벡터가 학습된다.

결론적으로 현재 설명한 내용을 기준으로는 BERT에서는 총 두 개의 임베딩 층이 사용된다.

단어 집합의 크기가 30522개인 단어 벡터를 위한 임베딩층과 

문장의최대 길이가 512 이므로 512개의 포지션 벡터를 위한 임베딩 층이다.

 

'AI > ML' 카테고리의 다른 글

KoBERT를 이용한 네이버 영화 리뷰 분류하기  (0) 2026.05.08
BERT(1)  (0) 2026.05.02
BERT - 발전흐름  (0) 2026.05.01
트랜스포머 가계도  (0) 2026.04.30
디코더 (Decoder) 구조  (0) 2026.04.29