본문 바로가기
개인 프로젝트/[LLM] 논문리뷰

[논문리뷰] RoBERT 언어모델 발표자료

by 응_비 2025. 4. 6.

기존까지 핵심을 잘 설명해준 영상 -> 이 영상에서 개념을 한번 잡아볼게요.

인코딩 -> '이해'를 목적으로 언어가 서로를 바라보는 언어들. -> 0000, 4글자. Bert

디코딩 -> 새로운 개념이 '생성' -> 000 000, 6글자. Chat gpt

1. 전체 개념들의 연결성과 흐름 2. 각 개념을 시각적으로 전달. 3. Bert vs RoBert 

슬라이드 7: 전체 개념 정리

“지금까지 언어 모델의 발전부터 BERT와 RoBERTa까지 핵심 개념을 정리해봤습니다.

  • BERT는 이해 중심, 양방향, Encoder 기반입니다.
  • GPT는 생성 중심, 단방향, Decoder 기반입니다.
  • Self-Attention은 문맥을 반영해 중요한 정보를 뽑아냅니다.
  • RoBERTa는 BERT를 개선한 모델로, NSP 제거와 동적 마스킹 등의 기법을 통해 성능을 높였습니다.

이제 BERT와 같은 사전학습 모델을 다양한 자연어처리 작업에 어떻게 적용할 수 있는지 고민해볼 수 있는 단계입니다.”

 

🎤 슬라이드 1: 언어 모델 발전 역사

“자, 먼저 자연어처리에서 언어 모델이 어떻게 발전해왔는지를 간단히 살펴보겠습니다.

초기에는 RNN, LSTM 같은 순차적인 구조가 주로 사용되었습니다. 이들은 단어를 한 개씩 시간 순서대로 처리해서, 마치 책을 처음부터 한 장씩 읽는 독자처럼 문장을 이해합니다. 하지만 이런 구조는 문장이 길어질수록 앞의 정보가 점점 사라지는 문제가 있었죠.

이후 Transformer 구조가 등장하면서 병렬처리가 가능해졌고, 모든 단어가 동시에 서로의 중요도를 계산하는 Self-Attention 방식이 도입되었습니다. 이 구조를 기반으로 BERT와 GPT가 탄생했습니다.”

🎤 슬라이드 2: BERT의 개요

“이번 슬라이드부터는 본격적으로 BERT에 대해 살펴보겠습니다.

BERT는 Transformer의 Encoder 부분만을 사용하고, 양방향 문맥 이해를 목적으로 만들어졌습니다.

앞에서 봤던 것처럼, 책을 앞뒤로 왔다 갔다 하며 요점 정리하는 독자에 비유할 수 있습니다.

"빈칸 뚫어넣기."

 

BERT는 MLM, 즉 일부 단어를 [MASK]로 가려두고 나머지 문맥으로 예측하는 방식으로 훈련됩니다. 또 문장 간 관계를 학습하기 위해 NSP라는 기법도 사용합니다. 하지만 이 NSP는 실제로는 큰 도움이 안된다는 비판도 있습니다.”

 

NSP 기법 개념

두 문장이 실제로 이어지는 문장인지 아닌지를 맞추는 방식이죠.

예를 들어, ‘그는 회의를 준비했다’와 ‘사람들이 이미 모여 있었다’는 이어지는 문장입니다.

반면, ‘사과는 건강에 좋다’전혀 다른 문맥이죠.”

 

🎤 슬라이드 3: BERT의 훈련 방식

“BERT의 주요 훈련 기법은 두 가지입니다.

하나는 방금 언급한 Masked Language Model (MLM) 입니다. 예를 들어 ‘나는 [MASK]에 간다’라는 문장에서 ‘학교’를 예측하도록 훈련하죠. 이 방식 덕분에 양방향 문맥 이해가 가능합니다.

두 번째는 Next Sentence Prediction (NSP) 입니다. 두 문장이 실제로 이어지는 문장인지 아닌지를 맞추는 방식이죠. 예를 들어, ‘그는 회의를 준비했다’와 ‘사람들이 이미 모여 있었다’는 이어지는 문장입니다. 반면, ‘사과는 건강에 좋다’는 전혀 다른 문맥이죠.”

🎤 슬라이드 4: BERT의 수학적 구조 – 임베딩

“이제 BERT의 수학적 구조를 좀 더 자세히 들여다보겠습니다.

입력 문장은 먼저 토큰화되어 숫자로 변환되고, 이 숫자들이 임베딩 층을 거쳐 768차원의 벡터로 바뀝니다. 여기에 위치 정보가 더해져서 최종적으로 모델에 입력됩니다. 이 과정을 통해 자연어가 수학적인 벡터 공간에서 처리 가능한 형태가 되는 거죠.”

🎤 슬라이드 5: Self-Attention 메커니즘

“BERT의 핵심인 Self-Attention 메커니즘을 살펴보겠습니다.

Self-Attention은 각 단어가 다른 단어를 얼마나 중요하게 생각하는지를 수치적으로 계산하는 방식입니다. 이를 위해 Query, Key, Value라는 세 가지 벡터를 만들어 계산합니다.

  1. Query와 Key를 곱해서 유사도 점수를 얻고,
  2. Softmax로 확률로 바꾼 후,
  3. Value 벡터와 곱해서 최종 결과를 만듭니다.

이 과정을 각 단어마다 반복하면서 문맥 정보를 반영한 표현을 얻게 됩니다.”

🎤 슬라이드 6: BERT vs RoBERTa 비교

“RoBERTa는 BERT의 성능을 개선한 모델입니다.

  1. NSP를 제거했는데요, NSP가 오히려 모델 성능을 저해할 수 있다고 판단해서 없앴습니다.
  2. 훨씬 많은 양의 데이터로 훈련시켰고,
  3. 동적 마스킹을 도입해 학습 때마다 마스킹 위치가 바뀌게 했습니다.
  4. 긴 시퀀스, 큰 배치로 더 오래 훈련했고,
  5. 문장 쌍 대신 연속된 문단 전체를 하나의 시퀀스로 처리했습니다.

요약하자면, RoBERTa는 구조는 BERT와 거의 동일하지만, 학습 방식에서 상당한 개선이 이루어진 모델입니다.”

🎤 슬라이드 7: 전체 개념 정리

“지금까지 언어 모델의 발전부터 BERT와 RoBERTa까지 핵심 개념을 정리해봤습니다.

  • BERT는 이해 중심, 양방향, Encoder 기반입니다.
  • GPT는 생성 중심, 단방향, Decoder 기반입니다.
  • Self-Attention은 문맥을 반영해 중요한 정보를 뽑아냅니다.
  • RoBERTa는 BERT를 개선한 모델로, NSP 제거와 동적 마스킹 등의 기법을 통해 성능을 높였습니다.

이제 BERT와 같은 사전학습 모델을 다양한 자연어처리 작업에 어떻게 적용할 수 있는지 고민해볼 수 있는 단계입니다.”

 

Q

Q1. BERT의 MLM 방식이 기존 RNN/LSTM보다 문맥 이해 측면에서 더 강력한 이유는?

  1. 양방향 문맥 이해
    • RNN/LSTM은 주로 왼쪽에서 오른쪽(또는 반대로) 한 방향만 따라가며 문맥을 파악해.
    • 반면 BERT는 앞뒤 문맥을 동시에 고려해서, 전체 문장 구조를 이해하는 데 더 효과적이야.
    • 예: "나는 [MASK]를 좋아한다" → 앞뒤 문맥 모두를 통해 [MASK] 위치에 적절한 단어를 예측함.
  2. Self-Attention 구조
    • 문장 전체의 모든 단어를 서로 비교하며 중요도를 계산.
    • 멀리 떨어진 단어 간 관계도 학습 가능해서, 장기 의존성 문제 해결에 강함.
  3. 병렬 학습 가능
    • RNN 계열은 순차적 학습만 가능해서 학습 속도가 느리고 장기 문맥에 취약한 반면,
      BERT는 Transformer 기반이라 병렬처리가 가능하고 효율적인 학습이 가능함.

Q2. RoBERTa가 NSP를 제거했음에도 성능이 향상된 이유는?

  1. NSP의 실효성 부족
    • NSP는 두 문장이 연결된 것인지 분류하는데, 실제 다운스트림(task)에서는 큰 도움이 되지 않음.
    • 실험적으로도 NSP를 제거해도 오히려 더 좋은 성능을 보였어.
  2. 더 많은 학습 데이터 사용
    • RoBERTa는 BERT보다 10배 이상 많은 데이터를 사용했어 (160GB 수준).
    • 이로 인해 문장 간 의미 관계를 NSP 없이도 더 깊게 학습할 수 있었음.
  3. 동적 마스킹 도입
    • BERT는 고정된 마스킹된 위치로 반복 학습함 → 과적합 우려.
    • RoBERTa는 학습 시마다 다른 마스킹을 적용해서 더 일반화된 문맥 이해가 가능했음.
  4. 학습 설정 최적화
    • 시퀀스 길이, 배치 크기, 학습 시간 등을 더 크게 잡아 훈련 성능 자체를 개선했음.

Q3. BERT/RoBERTa Fine-Tuning 시 주의할 점

  1. 오버피팅 방지
    • 사전 학습된 모델은 작은 데이터셋에도 민감하게 반응해서 쉽게 과적합됨.
    • 적절한 dropout, early stopping, regularization이 필요.
  2. 학습률 (Learning Rate)
    • 사전학습된 모델에 너무 높은 학습률을 주면 성능이 급격히 나빠질 수 있음.
    • 일반적으로 1e-5 ~ 5e-5 범위에서 시작하며, layer-wise learning rate decay도 고려해볼 수 있음.
  3. 특정 레이어만 Fine-Tune
    • 전체 모델을 다 학습시키기보다는, 상위 몇 개 레이어만 미세 조정하는 게 효율적일 수 있어.
  4. Task-specific Input 구성
    • 예: 분류 task에서는 [CLS] 토큰의 출력만 쓰는 식으로, task에 맞는 구조 세팅이 중요.
  5. Preprocessing 일관성 유지
    • 사전학습에 사용된 토크나이저와 동일한 방식으로 전처리를 해야 모델 성능 유지 가능.

 

📌 1. 기술적 질문 (모델 구조, 학습 방식에 대한 궁금증)

  • BERT에서 양방향 문맥을 학습한다는 게 정확히 무슨 의미인가요? 단순히 앞뒤 문장을 모두 보는 것과 무슨 차이가 있나요?
  • Self-Attention에서 Query, Key, Value는 어떻게 만들어지고 어떤 역할을 하나요?
  • MLM 방식에서 마스킹 비율이나 위치는 고정되어 있나요, 아니면 동적으로 바뀌나요?
  • BERT의 위치 인코딩(Positional Encoding)은 어떤 방식으로 계산되며, 왜 필요한 건가요?
  • Transformer의 Encoder와 Decoder 구조의 차이를 간단히 설명해주실 수 있나요?

📌 2. 비교 및 응용 관련 질문 (모델 간 차이, 확장 모델 관련)

  • BERT와 GPT의 가장 큰 구조적 차이는 어떤 부분인가요?
  • RoBERTa가 NSP를 제거했는데, 만약 문장 간 관계가 중요한 태스크에서는 어떻게 대응하나요?
  • BERT 말고도 많이 쓰이는 언어 모델에는 어떤 것들이 있고, BERT와 어떻게 다른가요?
  • ALBERT나 DistilBERT처럼 경량화된 모델들도 있는데, 성능 차이는 어떤가요?
  • Transformer 기반 모델이 RNN/LSTM에 비해 학습 속도나 리소스 측면에서 어떤 이점이 있나요?

📌 3. 실무 적용 및 파인튜닝 관련 질문

  • BERT를 특정 도메인(예: 법률, 의료) 데이터에 적용할 땐 어떤 방식으로 파인튜닝 하나요?
  • 소량의 라벨링된 데이터만 있을 때도 BERT 성능이 잘 나오나요?
  • 한국어 BERT 모델도 있나요? 그렇다면 성능은 어떤가요?
  • BERT 모델을 실제 프로젝트에 사용할 때, 배포나 인퍼런스 속도는 문제가 되지 않나요?
  • BERT를 파인튜닝한 후, 성능이 잘 안 나올 경우 원인 분석은 어떻게 접근하나요?

 

✅ 1. BERT에서 "양방향 문맥을 학습한다"는 의미

● 개념 설명

BERT의 가장 큰 특징 중 하나는 양방향(Bidirectional) 인코딩입니다. 이는 단어의 의미를 이해할 때 해당 단어의 앞과 뒤 문맥을 동시에 고려해서 학습한다는 뜻입니다.

  • 전통적인 LSTM이나 GPT는 문장을 왼쪽 → 오른쪽으로만(혹은 그 반대) 처리합니다.
  • 반면 BERT는 Transformer의 Self-Attention을 활용하여 모든 단어가 서로를 동시에 바라볼 수 있도록 구성되어 있습니다.

즉, 중앙 단어를 예측할 때 앞 단어만이 아니라 뒤 단어도 같이 참조할 수 있다는 게 핵심입니다.

❗단순히 앞뒤 문장을 "보는 것"과의 차이점?

단순히 앞뒤 문장을 입력으로 주는 것과, BERT의 방식은 다릅니다:

방식설명
앞뒤 문장을 단순 입력 순차적으로만 정보가 흘러가며, 병렬적인 상호작용은 어려움
BERT의 양방향 문맥 Self-Attention으로 모든 단어 쌍이 쌍방향으로 정보 교환 가능

팁: 양방향 문맥 이해 팁

  • BERT는 전체 문장을 입력받아 동시에 왼쪽과 오른쪽 컨텍스트를 고려하여 마스킹된 단어를 예측함
  • 이 덕분에 "은행"이라는 단어가 "river bank"인지 "money bank"인지를 문맥에 따라 정교하게 판단 가능

✅ 2. Self-Attention에서 Query, Key, Value는 어떻게 만들어지고 어떤 역할을 하나요?

● 어떻게 만들어질까?

각 입력 토큰(예: 단어 임베딩)은 세 개의 서로 다른 **가중치 행렬(Wq, Wk, Wv)**를 통해 다음과 같은 세 가지 벡터로 변환됩니다:

  • Query (Q): 현재 단어가 "궁금한 것"
  • Key (K): 다른 단어들이 가진 "정보의 타이틀"
  • Value (V): 실제 내용

즉,

ini
복사편집
Q = X × Wq K = X × Wk V = X × Wv

● 각각의 역할

구성 요소설명비유
Query 내가 지금 궁금한 게 뭐야? 질문하는 사람
Key 나는 어떤 키워드와 관련 있어 책 제목
Value 내 실제 내용은 이거야 책 내용

Self-Attention은 **Query와 Key의 유사도(내적)**를 통해 얼마나 집중할지를 결정하고, 그 가중치를 Value에 적용하여 최종 표현을 만들어냅니다.


팁: Q/K/V 쉽게 이해하는 팁

  • Query와 Key가 높은 유사도를 보이면 해당 Value 정보에 더 집중
  • 예: "그녀는 를 사랑했다." → "그"를 해석할 때 "그녀"라는 단어의 Key가 주는 정보에 집중함

✅ 3. BERT와 GPT의 구조적 차이

항목BERTGPT
방향성 양방향 단방향 (Left-to-right)
구조 Transformer Encoder만 사용 Transformer Decoder만 사용
Pretraining 목적 MLM (Masked Language Model), NSP Causal Language Modeling
예측 방식 입력 중 일부 토큰 마스킹 → 예측 다음 단어를 순차적으로 예측
  • BERT는 문장 이해에 강함 (자연어이해, NLU)
  • GPT는 문장 생성에 강함 (자연어생성, NLG)

팁: BERT vs GPT 선택 팁

  • 텍스트 분류/추론/개체명 인식: BERT
  • 요약/대화/글 생성: GPT

✅ 4. RoBERTa는 NSP를 제거했는데, 문장 관계가 중요한 태스크에서는?

● 배경

RoBERTa는 BERT의 성능을 높이기 위해 NSP(Next Sentence Prediction) 태스크를 제거했습니다. 이유는 NSP가 생각보다 학습에 큰 도움이 안 된다고 판단했기 때문입니다.

● 하지만 문장 간 관계가 중요한 태스크라면?

예: 자연어 추론(NLI), 질의응답(QA), 문장 유사도 판단 등

→ 여전히 잘 동작합니다. 이유는:

  • RoBERTa는 NSP는 없지만, 문장 간 입력 구분([SEP])과 포지션 임베딩은 유지
  • 학습 시 많은 문장 쌍 데이터를 사용해, 문장 간 관계를 암묵적으로 학습

또한, 필요하면 다음과 같은 대안이 가능합니다:

  1. 문장쌍을 하나의 입력으로 구성 ([CLS] 문장1 [SEP] 문장2)
  2. 파인튜닝 시 별도 문장 관계 태스크 정의 (예: Siamese Network)

팁: NSP 없이 문장 관계 학습하는 팁

  • RoBERTa에서도 문장쌍 입력 시 [CLS] 벡터를 통해 문장 관계 판단 가능
  • 문장 관계가 더 중요한 경우, sentence-level loss 설계를 추가하는 것도 방법

댓글