기존까지 핵심을 잘 설명해준 영상 -> 이 영상에서 개념을 한번 잡아볼게요.
인코딩 -> '이해'를 목적으로 언어가 서로를 바라보는 언어들. -> 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라는 세 가지 벡터를 만들어 계산합니다.
- Query와 Key를 곱해서 유사도 점수를 얻고,
- Softmax로 확률로 바꾼 후,
- Value 벡터와 곱해서 최종 결과를 만듭니다.
이 과정을 각 단어마다 반복하면서 문맥 정보를 반영한 표현을 얻게 됩니다.”
🎤 슬라이드 6: BERT vs RoBERTa 비교
“RoBERTa는 BERT의 성능을 개선한 모델입니다.
- NSP를 제거했는데요, NSP가 오히려 모델 성능을 저해할 수 있다고 판단해서 없앴습니다.
- 훨씬 많은 양의 데이터로 훈련시켰고,
- 동적 마스킹을 도입해 학습 때마다 마스킹 위치가 바뀌게 했습니다.
- 긴 시퀀스, 큰 배치로 더 오래 훈련했고,
- 문장 쌍 대신 연속된 문단 전체를 하나의 시퀀스로 처리했습니다.
요약하자면, RoBERTa는 구조는 BERT와 거의 동일하지만, 학습 방식에서 상당한 개선이 이루어진 모델입니다.”
🎤 슬라이드 7: 전체 개념 정리
“지금까지 언어 모델의 발전부터 BERT와 RoBERTa까지 핵심 개념을 정리해봤습니다.
- BERT는 이해 중심, 양방향, Encoder 기반입니다.
- GPT는 생성 중심, 단방향, Decoder 기반입니다.
- Self-Attention은 문맥을 반영해 중요한 정보를 뽑아냅니다.
- RoBERTa는 BERT를 개선한 모델로, NSP 제거와 동적 마스킹 등의 기법을 통해 성능을 높였습니다.
이제 BERT와 같은 사전학습 모델을 다양한 자연어처리 작업에 어떻게 적용할 수 있는지 고민해볼 수 있는 단계입니다.”
Q
✅ Q1. BERT의 MLM 방식이 기존 RNN/LSTM보다 문맥 이해 측면에서 더 강력한 이유는?
- 양방향 문맥 이해
- RNN/LSTM은 주로 왼쪽에서 오른쪽(또는 반대로) 한 방향만 따라가며 문맥을 파악해.
- 반면 BERT는 앞뒤 문맥을 동시에 고려해서, 전체 문장 구조를 이해하는 데 더 효과적이야.
- 예: "나는 [MASK]를 좋아한다" → 앞뒤 문맥 모두를 통해 [MASK] 위치에 적절한 단어를 예측함.
- Self-Attention 구조
- 문장 전체의 모든 단어를 서로 비교하며 중요도를 계산.
- 멀리 떨어진 단어 간 관계도 학습 가능해서, 장기 의존성 문제 해결에 강함.
- 병렬 학습 가능
- RNN 계열은 순차적 학습만 가능해서 학습 속도가 느리고 장기 문맥에 취약한 반면,
BERT는 Transformer 기반이라 병렬처리가 가능하고 효율적인 학습이 가능함.
- RNN 계열은 순차적 학습만 가능해서 학습 속도가 느리고 장기 문맥에 취약한 반면,
✅ Q2. RoBERTa가 NSP를 제거했음에도 성능이 향상된 이유는?
- NSP의 실효성 부족
- NSP는 두 문장이 연결된 것인지 분류하는데, 실제 다운스트림(task)에서는 큰 도움이 되지 않음.
- 실험적으로도 NSP를 제거해도 오히려 더 좋은 성능을 보였어.
- 더 많은 학습 데이터 사용
- RoBERTa는 BERT보다 10배 이상 많은 데이터를 사용했어 (160GB 수준).
- 이로 인해 문장 간 의미 관계를 NSP 없이도 더 깊게 학습할 수 있었음.
- 동적 마스킹 도입
- BERT는 고정된 마스킹된 위치로 반복 학습함 → 과적합 우려.
- RoBERTa는 학습 시마다 다른 마스킹을 적용해서 더 일반화된 문맥 이해가 가능했음.
- 학습 설정 최적화
- 시퀀스 길이, 배치 크기, 학습 시간 등을 더 크게 잡아 훈련 성능 자체를 개선했음.
✅ Q3. BERT/RoBERTa Fine-Tuning 시 주의할 점
- 오버피팅 방지
- 사전 학습된 모델은 작은 데이터셋에도 민감하게 반응해서 쉽게 과적합됨.
- 적절한 dropout, early stopping, regularization이 필요.
- 학습률 (Learning Rate)
- 사전학습된 모델에 너무 높은 학습률을 주면 성능이 급격히 나빠질 수 있음.
- 일반적으로 1e-5 ~ 5e-5 범위에서 시작하며, layer-wise learning rate decay도 고려해볼 수 있음.
- 특정 레이어만 Fine-Tune
- 전체 모델을 다 학습시키기보다는, 상위 몇 개 레이어만 미세 조정하는 게 효율적일 수 있어.
- Task-specific Input 구성
- 예: 분류 task에서는 [CLS] 토큰의 출력만 쓰는 식으로, task에 맞는 구조 세팅이 중요.
- 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): 실제 내용
즉,
● 각각의 역할
Query | 내가 지금 궁금한 게 뭐야? | 질문하는 사람 |
Key | 나는 어떤 키워드와 관련 있어 | 책 제목 |
Value | 내 실제 내용은 이거야 | 책 내용 |
Self-Attention은 **Query와 Key의 유사도(내적)**를 통해 얼마나 집중할지를 결정하고, 그 가중치를 Value에 적용하여 최종 표현을 만들어냅니다.
✅ 팁: Q/K/V 쉽게 이해하는 팁
- Query와 Key가 높은 유사도를 보이면 해당 Value 정보에 더 집중
- 예: "그녀는 그를 사랑했다." → "그"를 해석할 때 "그녀"라는 단어의 Key가 주는 정보에 집중함
✅ 3. BERT와 GPT의 구조적 차이
방향성 | 양방향 | 단방향 (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])과 포지션 임베딩은 유지
- 학습 시 많은 문장 쌍 데이터를 사용해, 문장 간 관계를 암묵적으로 학습함
또한, 필요하면 다음과 같은 대안이 가능합니다:
- 문장쌍을 하나의 입력으로 구성 ([CLS] 문장1 [SEP] 문장2)
- 파인튜닝 시 별도 문장 관계 태스크 정의 (예: Siamese Network)
✅ 팁: NSP 없이 문장 관계 학습하는 팁
- RoBERTa에서도 문장쌍 입력 시 [CLS] 벡터를 통해 문장 관계 판단 가능
- 문장 관계가 더 중요한 경우, sentence-level loss 설계를 추가하는 것도 방법
'개인 프로젝트 > [LLM] 논문리뷰' 카테고리의 다른 글
[논문리뷰] GPT-1 (0) | 2025.04.07 |
---|---|
[논문리뷰] 기계 번역 모델의 발전방향 및 비교 (1) | 2025.04.06 |
[논문리뷰] BERT-RoBERTa (0) | 2025.04.01 |
[논문] BERT : Bidirectional Encoder Representations from Transformers (0) | 2025.03.31 |
[논문] RNN_2014_Sequence to Sequence Learning with Neural Networks (0) | 2025.03.24 |
댓글