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:
◦
정의: 매 스텝마다 상위 개의 유력한 시퀀스 후보를 동시에 유지하며 탐색 진행
◦
특징: 최종적으로 개의 경로 중 전체 문장의 누적 확률이 가장 높은 것을 최종 결과로 선택함. 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 수식
사전학습 언어 모델 (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 ()을 적용하여, 아무런 정보가 없을 때 모든 클래스를 균등하게 예측하도록 확률값을 강제로 맞춰줌
◦
일 때, 기존 확률값의 역수를 취해 대각 행렬을 만들면 보정이 됨
◦
정답:
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
태스크용 분류기(Classification Head)를 새로 달아 학습하는 대신, 사전학습 태스크인 MLM(Masked Language Modeling)의 형태를 그대로 유지한 채 빈칸([MASK])을 맞추도록 유도하는 방식임
•
장점:
◦
사전학습 지식의 100% 활용
◦
Few-shot 성능의 극대화
•
단점: 템플릿과 생성된 단어를 레이블로 연결하는 Verbalizer를 어떻게 설계하느냐에 따라 성능 편차가 큼
“50대의 추교현이 20대의 추교현에게 감사할 수 있도록 하루하루 최선을 다해 살고 있습니다.”
The End.




