+ 개발

BERT 모델의 개념과 학습 과정

AI.Logger 2024. 9. 29. 00:20
  • 수업 내용 리마인드 및 아카이빙 목적의 업로드


 

BERT(Bidirectional Encoder Representations from Transformers)는 2018년 구글이 발표한 획기적인 자연어 처리(NLP) 모델입니다. BERT는 Transformer 아키텍처의 양방향 인코더를 기반으로 하여, 입력된 텍스트의 모든 단어를 양방향으로 동시에 처리합니다. 이를 통해 문맥을 더 깊이 이해하고, 기존 모델들보다 높은 성능을 발휘할 수 있게 되었습니다. 이번 글에서는 BERT 모델의 기본 개념, 학습 과정, 모델 구조, 그리고 파인튜닝(Fine-Tuning) 방법을 자세히 알아보겠습니다.

 

1. BERT 모델이란?

BERT는 Transformer 아키텍처의 인코더 부분을 활용한 사전 학습된(pre-trained) 언어 모델입니다. 레이블이 없는 대규모 텍스트 데이터를 학습하여, 다양한 자연어 처리 작업에 적용할 수 있도록 파인튜닝 과정을 거칩니다.

 

1) 양방향 문맥 이해

BERT의 핵심 특징은 양방향으로 문맥을 이해한다는 점입니다. 기존 언어 모델들은 일반적으로 한쪽 방향(왼쪽에서 오른쪽 또는 오른쪽에서 왼쪽)으로만 문장을 처리했지만, BERT는 양쪽 방향에서 문맥을 고려하여 각 단어를 처리합니다. 예를 들어 "은행에서 돈을 찾았다"라는 문장이 있을 때, BERT는 "은행"이 금융 기관인지 강가인지 문맥을 통해 파악할 수 있습니다.

 

2. BERT의 학습 과정

BERT는 크게 두 단계의 학습 과정을 거칩니다: 사전 학습(Pre-Training)파인튜닝(Fine-Tuning)입니다.

 

1) 사전 학습(Pre-Training)

사전 학습은 레이블이 없는 대용량 코퍼스(예: 위키피디아)를 사용하여 BERT를 학습시키는 과정입니다. BERT는 두 가지 주요 태스크를 통해 학습합니다:

  • 마스크드 언어 모델링(Masked Language Modeling, MLM): 문장에서 무작위로 15%의 단어를 마스킹([MASK] 토큰으로 대체)하고, 모델이 이 마스킹된 단어를 주변 문맥을 이용해 예측하도록 학습합니다. 이는 양방향 문맥 이해를 가능하게 합니다.
    • 예시: 
      • 입력: "나는 [MASK]를 좋아한다."
      • 예측: "나는 사과를 좋아한다."
  • 다음 문장 예측(Next Sentence Prediction, NSP): 두 문장이 주어졌을 때, 두 번째 문장이 첫 번째 문장의 다음 문장인지 아닌지를 예측합니다. 이를 통해 BERT는 문장 간의 관계와 논리적 흐름을 학습합니다.
    • 예시: 
      • 문장 A: "그녀는 아침에 커피를 마셨다."
      • 문장 B: "그 후에 산책을 나갔다."
      • 결과: 다음 문장(True)

 

2) 파인튜닝(Fine-Tuning)

파인튜닝은 사전 학습된 BERT 모델을 특정 자연어 처리 작업에 맞게 미세 조정하는 과정입니다. 이 단계에서는 사전 학습된 BERT의 파라미터를 초기값으로 사용하고, 우리가 풀고자 하는 태스크에 맞게 전체 모델을 재학습합니다. 파인튜닝은 보통 작은 데이터셋으로도 가능하며, 문서 분류, 질의응답, 개체명 인식 등 다양한 작업에 적용할 수 있습니다.

 

3. BERT 모델의 구조

BERT는 다층 양방향 Transformer 인코더로 구성되어 있습니다. 각 인코더 블록은 셀프 어텐션(Self-Attention) 메커니즘과 피드포워드 신경망(Feed-Forward Neural Network)으로 이루어져 있습니다.

 

1) 셀프 어텐션 메커니즘

셀프 어텐션은 입력된 단어들 간의 관계를 학습하는 핵심 메커니즘입니다. 각 단어에 대해 Query, Key, Value 벡터를 생성하고, 이를 통해 단어 간의 중요도를 계산하여 정보를 종합합니다. 이를 통해 모델은 문맥 내에서 어떤 단어들이 중요한지 파악할 수 있습니다.

 

2) 포지션 임베딩(Position Embedding)

Transformer 구조는 순차적인 처리 대신 병렬 처리를 사용하기 때문에, 단어의 순서 정보를 포착하기 위해 포지션 임베딩을 추가합니다. 이는 각 단어의 위치 정보를 벡터로 표현하여 입력 임베딩에 더해줍니다.

 

3) BERT의 파라미터 구성

BERT에는 두 가지 주요 모델 크기가 있습니다:

  • BERT-Base:
    • 12개의 인코더 레이어
    • 히든 사이즈 768
    • 어텐션 헤드 12개
    • 약 1억 1천만 개의 파라미터
  • BERT-Large:
    • 24개의 인코더 레이어
    • 히든 사이즈 1024
    • 어텐션 헤드 16개
    • 약 3억 4천만 개의 파라미터

사용자는 작업의 복잡도와 리소스에 따라 적절한 모델 크기를 선택할 수 있습니다.

 

4. BERT의 입력 표현

BERT의 입력은 세 가지 임베딩의 합으로 구성됩니다:

  • 토큰 임베딩(Token Embedding): WordPiece 토크나이저를 사용하여 단어를 서브워드 단위로 분할하고, 각 토큰을 임베딩합니다.
  • 세그먼트 임베딩(Segment Embedding): 문장 구분을 위해 사용되며, 문장 A와 문장 B를 구분하는 임베딩을 추가합니다.
  • 포지션 임베딩(Position Embedding): 단어의 위치 정보를 담은 임베딩을 추가하여 순서 정보를 제공합니다.

이를 통해 모델은 입력 토큰의 의미, 문장 구분, 순서 정보를 모두 활용할 수 있습니다.

 

5. BERT의 활용과 파인튜닝 방법

BERT는 사전 학습된 모델을 기반으로 다양한 NLP 작업에 활용할 수 있습니다. 파인튜닝 과정에서는 태스크에 맞는 추가 레이어를 모델 위에 쌓고, 전체 모델을 학습합니다.

 

1) 문서 분류(Text Classification)

BERT의 [CLS] 토큰의 출력을 사용하여 문서 또는 문장의 분류 작업을 수행합니다.

 

2) 개체명 인식(Named Entity Recognition)

토큰별로 레이블을 예측하는 방식으로, 각 토큰의 출력을 활용하여 개체명을 인식합니다.

 

3) 질의응답(Question Answering)

질문과 문서를 입력으로 받아, 답변이 될 수 있는 문서 내의 시작과 끝 위치를 예측합니다.