Search
🪄

[대학원] 고급 자연어 처리 수업 정리

NLP 기초

개체명 인식 (NER, Named Entity Recognition)

구조화되지 않은 텍스트에서 사람(PERSON), 기관(ORGANIZATION), 위치(LOCATION) 등의 개체를 찾아 사전에 정의된 카테고리로 분류하는 태스크

어휘 사전 크기 문제

너무 클 경우: 모델의 파라미터가 비대해져 계산 비용(Computation cost)이 매우 커지고, 데이터가 희소해지는 Sparsity Problem이 발생함
너무 작을 경우: 사전에 없는 단어를 처리하지 못하는 OOV (Out-Of-Vocabulary) 문제가 심화됨
해결책 (BPE, Byte Pair Encoding): 서브워드(Subword) 단위로 토큰화를 진행하여 OOV 문제를 완화하고, Low-resource 언어 학습에 효과적이라는 장점이 있음

Perplexity (혼란도)

언어 모델이 학습한 단어의 확률 분포가 입력 텍스트의 확률 분포와 얼마나 잘 일치하는지를 측정하는 평가지표

Decoding 전략

언어 모델이 텍스트를 생성(디코딩)할 때, 다음 단어를 선택하는 방식에 따라 결과물의 품질이 달라진다.
Greedy Search:
정의: 매 타임스텝마다 가장 확률이 높은 단어 하나만 선택하여 다음 단계로 넘어감
특징: 계산이 매우 빠르고 단순함
단점: 당장 눈앞의 최선만 고르기에 전체 문장 관점에서 보았을 때는 최적의 결과가 아닐 확률이 높음
Beam Search:
정의: 매 스텝마다 상위 kk개의 유력한 시퀀스 후보를 동시에 유지하며 탐색 진행
특징: 최종적으로 kk개의 경로 중 전체 문장의 누적 확률이 가장 높은 것을 최종 결과로 선택함. Greedy Search보다 연산량은 많지만, 전체 문장 관점에서 훨씬 더 최적에 가까운 고품질의 텍스트 생성 가능

RNN과 Transformer

RNN의 한계점

순차적(Sequential) 연산 구조로 인해 병렬 처리가 불가 ⇒ 속도 느림
입력 시퀀스가 길어질수록 앞부분의 정보가 소실되는 장기 의존성 문제 발생

Transformer 2가지 핵심 장점

1.
모든 단어를 동시에 처리하므로 병렬 연산(Parallel processing)이 가능함
2.
Self-Attention을 통해 거리에 상관없이 문맥을 파악하므로 장기 의존성 문제 해결함

Transformer Encoder 핵심 구조 요소

Multi-head Self-Attention: 문장 내의 단어들이 서로 어떻게 연관되어 있는지 가중치 계산
Positional Encoding: 병렬 처리로 인해 잃어버린 단어의 ‘순서(위치) 정보’를 임베딩에 더해줌

Dot-product Attention 수식

Attention(Q,K,V)=softmax(QKTdk)VAttention(Q, K, V) = softmax(\frac{QK^{T}}{\sqrt{d_{k}}})V

사전학습 언어 모델 (GPT, BERT, BART, T5, UniLM)

GPT (Generative Pre-trained Transformer)

트랜스포머의 Decoder 구조만을 쌓아올린 단방향 언어 모델임
사전학습 태스크: 이전 단어들을 바탕으로 다음 단어를 예측하는 Causal Language Modeling (인과적 언어 모델링) 또는 Left-to-Right Language Modeling을 수행함 (주어진 문맥의 과거 정보 ⇒ 미래 예측 형태)

BERT (Bidirectional Encoder Representations from Transformers)

MLM (Masked Language Modeling): 문장의 일부 토큰을 [MASK]로 가린 뒤, 주변 양방향 문맥을 보고 원래 단어를 예측함
NSP (Next Sentence Prediction): 두 문장이 입력되었을 때, 두 문장이 실제로 이어지는 문장인지 여부를 이진 분류로 예측함

BART (Bidirectional Auto-Regressive Transformers)

Encoder-Decoder 구조로 텍스트를 손상시킨 후 원본으로 복원하는 Denoising Autoencoder 방식으로 학습함
사전학습 태스크
Token Masking: 무작위 토큰은 [MASK]로 대체
Token Deletion: 무작위 토큰을 아예 삭제하여 모델이 지워진 위치를 찾도록 유도
Text Infilling: 여러 개의 연속된 단어(Span)를 하나의 [MASK] 토큰으로 대체
Sentence Permutation: 문서 내 문장들의 순서를 무작위로 섞음
Document Rotation: 문서의 시작점을 무작위 토큰으로 변경하여 문서를 회전시킴

T5 (Text-to-Text Transfer Transformer)

모든 NLP 태스크를 Text-to-Text 형태로 반환함
예시: 입력이 Thank you <X> me to your party <Y> week. 라면, 타겟(Target)은 노이즈 스팬(Span)을 복원하는 형태인 <X> for inviting <Y> last <Z> 가 됨

UniLM

단일 모델로 다양한 마스킹 기법을 사용하여 학습함
Left-to-Right LM: 자기 자신과 왼쪽 문맥만 Attend 가능 (우측 마스킹)
Seq-to-Seq LM: Source는 전체 Attend, Target은 왼쪽 문맥만 Attend

BPE (Byte Pair Encoding)

정의: 언어 모델이 단어를 어떻게 쪼개서 인식할지 결정하는 대표적인 Subword 토큰화 기법. 자주 함께 등장하는 문자 쌍(Pair)을 병합해 나가며 어휘 사전 구축함
장점:
1.
OOV (Out-Of-Vocabulary) 문제 완화: 사전에 없는 처음 보는 단어가 등장하더라도, 이를 더 작은 서브워드 단위로 쪼개어 처리할 수 있으므로 미등록 단어 문제(OOV)를 효과적으로 방어
2.
Low-resource 학습에 효과적: 학습 데이터가 부족한(Low-resource) 언어나 도메인에서도 단어의 형태소적 특징을 잘게 쪼개어 파악하므로 학습 효율이 매우 좋음

프롬프팅 및 In-context Learning

In-context Learning (ICL)은 모델의 파라미터를 전혀 수정하지 않고, 주어진 프롬프트 내의 문맥(Context)만으로 새로운 작업을 수행하도록 하는 방법론이다. GPT-3의 논문 제목 “Language Models are Few-shot Learners”에서 알 수 있듯이, 이 개념은 LLM이 등장하면서 본격적으로 주목받기 시작함

주요 구성 요소

ICL을 제대로 수행하기 위해서는 모델에게 주어지는 프롬프트가 잘 구조화되어야 한다.
Demonstration: 모델이 학습해야 할 패턴을 보여주기 위해, 프롬프트에 포함되는 입력과 정답 쌍(Input-Label paris)임. “K-shot” 학습에서 K개의 예시를 보여주는 것이 바로 Demonstration임
Verbalizer: 모델이 예측한 텍스트 단어(토큰)를 우리가 실제 원하는 분류 레이블(Label)로 매핑해 주는 함수. 언어 모델은 궁극적으로 다음 ‘단어’를 예측할 뿐이므로, 그 단어가 어떤 의미인지 해석하는 기준이 필요함

편향성과 Calibration

ICL은 파라미터를 업데이트하지 않는다는 큰 장점이 있지만, 프롬프트의 구성 방식이나 모델 자체의 성향에 따라 예측 결과가 왜곡되는 편향(Bias) 현상이 발생할 수 있음
주요 편향의 종류
Common Token Bias: 사전 학습 과정에서 매우 자주 등장했던 단어(토큰)를 정답으로 더 자주 예측하려는 경향
Recency Bias / Majority Label Bias: 프롬프트의 맨 마지막(최근)에 위치한 Demonstration의 정답을 따라 하려는 경향
해결책: Calibration (편향 보정)
모델이 어떤 레이블에도 치우치지 않는 내용이 없는 입력(예: N/A or 빈칸)을 주었을 때, 모델이 ‘긍정’과 ‘부정’ 중 특정 클래스를 더 많이 예측한다면, 이는 편향된 상태임
이를 보정하기 위해 Affine Transformation (q^=softmax(Wp^+b)\hat{q} = \text{softmax}(W\hat{p} + b))을 적용하여, 아무런 정보가 없을 때 모든 클래스를 균등하게 예측하도록 확률값을 강제로 맞춰줌
b=[0 0]b = \begin{bmatrix} 0 \ 0 \end{bmatrix}일 때, 기존 확률값의 역수를 취해 대각 행렬을 만들면 보정이 됨
정답: W=[10.650010.35]W = \begin{bmatrix} \frac{1}{0.65} & 0 \\ 0 & \frac{1}{0.35} \end{bmatrix}

Parameter Efficient LM Tuning (PELT)

수백억 개의 파라미터를 가진 거대 언어 모델(LLM)을 특정 태스크에 맞게 미세조정(Fine-tuning)할 때 발생하는 비효율을 극복하기 위한 기법이다.
기존처럼 모델의 모든 가중치를 업데이트하는 Full Fine-tuning 대신, 대부분의 사전 학습된 가중치는 고정해 두고 아주 적은 수의 파라미터만 새롭게 추가하거나 학습하여 연산량, 메모리, 저장 공간을 극적으로 절약한다.

Adapter

Transformer 블록 내부의 서브 레이어(예: Feed Forward Network) 사이에 병목 구조를 가진 아주 작은 신경망 모듈을 직렬(Sequential)로 끼워 넣는 방식이다.
장점: 모델의 원래 지식을 보존하면서도 새로운 태스크를 적은 파라미터로 쉽게 학습할 수 있음
단점: 기존 네트워크에 직렬로 추가하기 때문에, 실제 추론 시 데이터를 통과시키는 단계가 늘어나 지연 시간 문제가 발생함

LoRA (Low-Rank Adaptation)

사전 학습된 거대한 가중치 행렬은 그대로 고정해 두고, 가중치의 변화량을 매우 낮은 랭크(Low-Lank)를 가진 두 개의 행렬(A, B)의 곱으로 분해하여 병렬로 학습하는 방식
장점:
학습해야 할 파라미터 수가 기하급수적으로 줄어듦
학습이 끝난 후, 학습된 작은 행렬을 원래의 큰 행렬에 단순히 더해주면 되기에 추론 시 추가적인 Latency가 전혀 발생하지 않음
단점: 적절한 랭크(Rank, r) 값을 찾아야 하는 하이퍼파라미터 튜닝이 필요함

Prefix-Tuning / Prompt Tuning

입력 시퀀스의 맨 앞단이나 각 트랜스포머 레이어의 Key/Value 값에 사람이 읽을 수 없는 학습 가능한 가상의 연속적 벡터(Continuous Prefix/Prompt)를 덧붙여 학습하는 방식
장점: 어댑터처럼 레이어를 깊게 만들지 않으므로 Latency 문제가 없으며, 태스크마다 다른 Prefix만 저장해두면 되므로 매우 가벼움
단점: 모델이 한 번에 처리할 수 있는 최대 시퀀스 길이(Context Window)의 일부를 가상의 Prefix가 차지하게 되므로, 실제 입력할 수 있는 텍스트의 길이가 줄어들 수 있음

Fine-Tuning

거대 언어 모델(LLM)을 우리가 원하는 특정 태스크(예: 감정 분석)에 맞게 튜닝(Fine-tuning)하는 두 가지 주요 접근법

Head-based Fine-Tuning

정의: 사전학습된 언어 모델의 꼭대기(Output)에 태스크에 맞는 새로운 분류용 헤드를 추가하여 학습시키는 전통적인 방식
과정: 감성 분석을 예로 들면, 문장이 들어오면 모델이 문맥 벡터를 뽑아내고, 새로 단 헤드가 이 벡터를 받아 긍정/부정 2개 클래스 중 하나로 분류하도록 전체 가중치 업데이트
단점: 사전학습과 다운스트림 태스크 간의 목적함수 간극이 존재함. 이 차이를 좁히기 위해 다량의 학습 데이터가 필요함

Prompt-based Fine-Tuning

p(yxin)=p([MASK]=M(y)xprompt)p(y|x_{in}) = p(\textbf{[MASK]} = \textbf{M}(y) | x_{prompt})
태스크용 분류기(Classification Head)를 새로 달아 학습하는 대신, 사전학습 태스크인 MLM(Masked Language Modeling)의 형태를 그대로 유지한 채 빈칸([MASK])을 맞추도록 유도하는 방식임
장점:
사전학습 지식의 100% 활용
Few-shot 성능의 극대화
단점: 템플릿과 생성된 단어를 레이블로 연결하는 Verbalizer를 어떻게 설계하느냐에 따라 성능 편차가 큼
“50대의 추교현이 20대의 추교현에게 감사할 수 있도록 하루하루 최선을 다해 살고 있습니다.”
The End.