BERT (Bidirectional Encoder Representations from Transformers)
BERT는 양방향 트랜스포머 인코더로, 양쪽 문맥을 활용해 마스크된 단어를 예측하도록 사전 학습되었습니다. 작동 방식, 파인튜닝, 변형 모델을 다룹니다.
BERT(Transformer 기반 양방향 인코더 표현)는 전체 문장을 한 번에 읽고 각 단어의 양쪽에 있는 단어를 바탕으로 해당 단어의 표현을 생성하는 Transformer 인코더입니다. Google AI Language의 Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova는 2018년 10월 BERT: 언어 이해를 위한 양방향 Transformer 사전 학습 논문에서 BERT를 소개했으며, 이 논문은 NAACL 2019 최우수 장편 논문상을 수상했습니다. 사전 학습된 BERT 하나를 미세 조정해 출력 레이어 하나를 추가하는 방식으로 11개 자연어 처리 (NLP) 작업에서 새로운 최첨단 성능을 달성했습니다. GLUE 벤치마크 점수는 7.7포인트 상승한 80.5%에 도달했고, SQuAD v1.1 질의응답 테스트 F1 점수는 93.2를 기록했습니다.
BERT 사전 학습 방식#
BERT-Base는 은닉 상태 차원 768, 어텐션 헤드 12개를 갖춘 인코더 레이어 12개를 쌓아 약 1억 1천만 개의 파라미터를 포함하며, BERT-Large는 레이어 24개, 차원 1,024, 헤드 16개, 파라미터 3억 4천만 개로 구성됩니다. 입력 텍스트는 WordPiece 토큰화를 통해 3만 개 토큰 어휘로 분할됩니다. 특수 토큰 [CLS]가 각 시퀀스를 시작하고, [SEP]가 문장 쌍의 두 세그먼트를 구분합니다. Google은 두 모델 크기를 BooksCorpus(8억 단어)와 영어 Wikipedia(25억 단어)로 사전 학습했으며, 이때 두 가지 자기 지도 목적 함수를 사용했습니다.
마스크 언어 모델링 (MLM)은 토큰 위치의 15%를 선택하고, 선택된 위치 중 80%를 [MASK]로 바꾸고 10%는 임의의 토큰으로 바꾸며 나머지 10%는 그대로 둔 뒤 모델이 원래 토큰을 예측하도록 합니다. BERT의 자기 어텐션에는 인과 마스크가 없으므로 모든 예측에서 양쪽 문맥을 활용할 수 있습니다. 왼쪽에서 오른쪽으로 처리하는 언어 모델은 이를 수행할 수 없습니다. 다음 문장 예측 (NSP)은 절반의 경우 각 세그먼트를 실제 다음 문장과 짝지으며, 나머지 경우에는 임의의 문장과 짝지어 두 문장을 구분하도록 [CLS] 출력에 분류기를 학습시킵니다.
사전 학습된 체크포인트에는 마스크 단어 예측 헤드가 유지되므로 원본 모델은 빈칸을 직접 채울 수 있습니다.
from transformers import pipeline
# BERT는 양쪽 단어를 바탕으로 마스크된 단어를 예측합니다
fill = pipeline("fill-mask", model="bert-base-uncased")
for text in ["She went to the [MASK] to buy bread.", "She went to the [MASK] to see a doctor."]:
predictions = fill(text, top_k=3)
print(text, [(p["token_str"], round(p["score"], 2)) for p in predictions])두 문장은 빈칸 뒤에서만 다르며, BERT의 최상위 예측은 "market" (0.82)에서 "hospital" (0.78)로 바뀝니다. 왼쪽에서 오른쪽으로 읽는 모델은 두 문장에서 모두 "She went to the"를 보므로 두 문장을 구분할 단서가 없습니다.
미세 조정 및 활용 사례#
미세 조정은 작은 작업별 레이어를 추가하고 레이블이 있는 예제로 모든 가중치를 학습하는 방식이며, 이 접근법은 전이 학습을 NLP의 기본 방식으로 만들었습니다. [CLS] 벡터는 감성 분석과 같은 문장 단위 분류기에 입력되고, 각 토큰 벡터는 개체명 인식 (NER)과 같은 태깅 작업에 입력되며, 토큰별 시작 및 끝 점수를 사용해 답변 구간을 추출합니다.
Google은 2019년 10월 미국의 영어 검색 중 10건 중 1건에 BERT를 사용하기 시작했습니다. 그 예로 "2019 brazil traveler to usa need a visa"라는 검색어를 들며, BERT가 "to"가 브라질인이 미국으로 여행한다는 의미임을 인식했다고 설명했습니다. 2020년 10월에는 거의 모든 영어 검색어에 BERT를 적용했습니다. BERT 계열 인코더는 시맨틱 검색의 기반이 되는 임베딩도 생성합니다. Sentence-BERT는 각 문장을 하나의 벡터로 매핑하도록 BERT를 미세 조정해 벡터 검색에 활용하고, ColBERT는 토큰마다 하나의 벡터를 유지하며, 교차 인코더 재순위화 모델은 검색 증강 생성 (RAG) 파이프라인에서 질의와 문서 쌍의 점수를 계산합니다.
비전-언어 탐지에서 Grounding DINO는 텍스트 프롬프트를 BERT-base 인코더로 인코딩한 뒤 이미지 영역과 매칭합니다. Ultralytics Platform은 Grounding DINO를 호스팅해 클래스 프롬프트 기반 스마트 주석을 지원합니다. 이 기능은 데이터셋의 클래스 이름을 학습용 YOLO26 탐지기의 편집 가능한 박스로 변환합니다. 마스크 예측도 이미지 분야에 적용되었습니다. 비전 Transformer(ViT)는 분류에 BERT의 [CLS] 토큰을 적용했으며, 마스크 자동 인코더(MAE)는 이미지 패치의 75%를 가리고 이를 재구성해 이미지 인코더를 사전 학습합니다.
BERT와 GPT 및 후속 인코더 비교#
GPT 모델은 인과 마스크가 적용된 Transformer 디코더로 구성되므로, 각 다음 토큰을 앞선 토큰만으로 예측하며 텍스트 생성에 적합합니다. BERT는 입력 토큰마다 벡터를 출력하므로 분류, 추출, 검색에 적합하며, 왼쪽에서 오른쪽으로 텍스트를 생성하는 기능은 기본 제공하지 않습니다. 수십억 개의 파라미터를 가진 대규모 언어 모델 (LLM)은 프롬프트를 통해 동일한 이해 작업을 다수 수행할 수 있지만, 쿼리당 비용은 파라미터 1억 1천만 개의 인코더보다 몇 배나 높습니다.
후속 인코더는 이 방식을 개선했습니다. Meta의 RoBERTa는 NSP를 제거하고 약 160GB의 텍스트를 더 큰 배치로 더 오래 학습해 BERT가 상당히 덜 학습되었음을 보여 주었습니다. Hugging Face의 DistilBERT는 지식 증류를 사용해 파라미터 수를 40% 줄이고 실행 속도를 60% 높이면서 BERT 언어 이해 성능의 97%를 유지했습니다. Answer.AI와 LightOn이 2024년 12월 출시한 ModernBERT는 2조 개의 토큰으로 학습되었으며, 네이티브 컨텍스트 길이는 8,192토큰으로 BERT의 512토큰 제한보다 16배 깁니다.










