자연어 처리(NLP)는 컴퓨터가 자연어의 의미를 분석하여 이해하고 생성할 수 있도록 만들어주는 기술입니다
우리가 일상생활에서 사용하는 자연어(Natural Language)는 사람들이 자연스럽게 사용하는 언어입니다
자연어 처리의 주요 Task
자연어 이해 (Natural Language Understanding, NLU)
개체명 인식 (Named Entity Recognition, NER): 텍스트에서 사람, 장소, 기관, 날짜 등 명명된 개체를 식별하는 작업입니다
정보 추출 (Information Extraction): 비구조적인 문장에서 주어, 관계, 목적어로 구성된 구조적인 트리플(triple)을 추출합니다
텍스트 분류 (Text Classification): 문장이나 문서를 입력으로 받아 사전에 정의된 클래스로 분류하거나 데이터를 군집화합니다
감성 분석: 문장 또는 지문의 감정(긍정, 부정, 중립)을 분석합니다
스팸메일 필터링: 메일에 사용된 텍스트를 분석하여 스팸 여부를 판단합니다
대화 의도 분류: 입력 문장의 의도를 분류하여 적절한 응답을 생성합니다
자연어 생성 (Natural Language Generation, NLG)
기계 번역 (Machine Translation): 한 언어로 쓰인 글을 같은 의미를 나타내는 다른 언어로 변환하는 작업입니다
질의 응답 (Question Answering): 사용자의 질문을 이해하고 관련 문서를 찾아 올바른 정답을 추출하거나 내재된 지식을 통해 생성합니다
대화 시스템 (Dialogue System): 사용자와 자연스럽게 대화하거나 특정 목적을 수행합니다. 목적 지향 대화 시스템과 일상 대화 시스템으로 나뉩니다
문서 요약 (Text Summarization): 문서에서 핵심 내용을 기반으로 요약문을 생성합니다. 추출 요약과 추상적 요약으로 나뉩니다
문장 생성 (Text Generation): 주어진 문장의 이후 토큰을 생성하는 task입니다
모델 학습을 위한 데이터 전처리
자연어 처리에서 텍스트 전처리(Text Preprocessing)
는 텍스트 데이터를 분석하기 전에 사전에 처리해야 하는 매우 중요한 과정입니다
아무리 좋은 모델을 사용하더라도 데이터가 올바르게 전처리되지 않으면 좋은 성능을 기대하기 어렵습니다
토큰화 (Tokenization): 주어진 데이터를 토큰(단어, 형태소, 음절 등)이라 불리는 단위로 나누는 작업입니다
문장 토큰화: 문장을 분리합니다
단어 토큰화: 구두점을 분리하고 단어를 나눕니다
서브워드 토큰화 (Subword Tokenization): 글자(Character-based), 단어(Word-based) 토큰화의 한계를 보완하며, BPE (Byte-Pair Encoding) 및 WordPiece 알고리즘 등이 사용한다.
정제 (Cleaning): 코퍼스 내에서 토큰화 작업에 방해가 되거나 의미 없는 텍스트, 노이즈를 제거하는 작업입니다. 불용어(Stop Words) 제거, 특수 문자 제거, 대소문자 통합, 중복 문구 제거, 다중 공백 통일 등이 포함됩니다.
• 정규화 (Normalization): 어형이 변형된 단어를 표준 형태로 변환하는 작업입니다.
◦ 어간 추출 (Stemming): 단어의 어형이 변형된 부분(접사)을 제거하고 어간만을 분리합니다.
◦ 표제어 추출 (Lemmatization): 품사 정보를 보존한 채 단어의 기본형을 찾아 변환합니다.
• 정규표현식 (Regular Expressions, Regex): 특정한 규칙을 가진 문자열의 집합을 표현하고, 복잡한 문자열의 검색과 치환에 사용되는 강력한 도구입니다
자연어 처리 모델의 발전 과정
자연어 처리 모델은 규칙 기반에서 통계 기반, 그리고 기계 학습 및 딥러닝 기반으로 발전해왔습니다.
• 규칙 기반 NLP: 전문가가 직접 언어학적 규칙을 정의하여 시스템을 구축했습니다. 초기 형태소 분석, 구문 분석, 의미 분석 등에 활용되었습니다.
• 통계 기반 NLP: 대량의 텍스트 데이터로부터 통계를 내어 단어를 표현하고, 이전 단어들로부터 다음 단어에 대한 확률을 계산했습니다. Sparse Problem(희소성 문제)으로 인한 한계에 도달했습니다.
• 기계 학습 및 딥러닝 기반 NLP: 데이터의 질과 양이 충분하면 인간의 실력을 넘어설 수 있는 잠재력을 보여주었습니다.
딥러닝 기반 언어 모델의 발전:
• RNN (Recurrent Neural Network): 시퀀스 데이터를 처리하기 위해 이전 스텝의 정보를 현재 스텝에 반영하는 모델입니다. 하지만 시퀀스가 길어질수록 과거 정보를 잘 기억하지 못하는 장기 의존성 문제(Long-term dependency)와 그래디언트 소실/폭발 문제(Gradient Vanishing/Exploding)가 발생합니다.
◦ LSTM (Long Short-Term Memory) 및 GRU (Gated Recurrent Unit): RNN의 장기 의존성 문제를 보완하기 위해 셀 상태(cell state)와 게이트(gate) 개념을 도입한 모델입니다.
• Attention Mechanism: RNN의 단점인 장기 의존성 문제를 해결하기 위해 도입되었으며, 문맥에 따라 중요한 단어에 집중하는 방식입니다. 인코더의 모든 은닉 상태를 디코더로 전달하여 특정 시점에서 집중할 부분을 찾아 학습을 고도화합니다.
• Transformer: "Attention is All you need" 논문에서 소개된 모델로, RNN이나 CNN 없이 오직 Attention 메커니즘만을 사용하여 시퀀스 데이터를 처리합니다.
◦ Self-Attention: 같은 문장 내의 토큰들끼리 어텐션을 취하여 문맥 관계를 학습합니다.
◦ Multi-head Attention: 여러 개의 Self-Attention을 병렬로 계산하여 입력 문장 토큰 간의 다양한 유형의 종속성을 포착합니다.
◦ Positional Encoding: RNN과 달리 단어의 순서 정보가 누락되는 Transformer의 단점을 보완하기 위해 단어의 위치 정보를 임베딩 값에 추가합니다.
◦ Encoder-Decoder 구조: Transformer는 인코더와 디코더를 모두 포함하는 구조로, Sequence-to-Sequence (Seq2Seq) 태스크에 특화되어 있습니다.
사전 학습 모델 (Pre-trained Language Model, PLM):
• 전이 학습 (Transfer Learning): 대량의 코퍼스로 모델을 미리 훈련(Pre-training)하여 언어의 일반적인 특징을 학습한 후, 특정 태스크에 맞게 미세 조정(Fine-tuning)하는 방식입니다.
• ELMo (Embeddings from Language Models): 문장 전체를 보고 단어 임베딩을 생성하여 문맥 정보를 반영한 단어 임베딩을 제공한 초기 PLM입니다.
• BERT (Bidirectional Encoder Representations from Transformers): Transformer의 인코더만으로 구성된 언어 모델입니다. MLM (Masked Language Modeling)과 NSP (Next Sentence Prediction) 두 가지 태스크로 사전 학습되어 양방향 문맥 정보를 학습합니다.
◦ BERT 이후의 인코더 모델:
▪ RoBERTa: 동적 마스킹 방식의 MLM을 적용하고 NSP를 제거하며, 더 많은 데이터와 큰 배치 크기로 학습하여 성능을 향상시켰습니다.
▪ SpanBERT: 개별 토큰이 아닌 연속적인 Span을 마스킹하는 Span Masking 방식을 사용하며, NSP 없이 단일 시퀀스로 사전 학습합니다.
▪ ELECTRA: MLM 대신 Replaced Token Detection (RTD) 방식을 사용하여 학습 효율성을 높였습니다.
▪ ALBERT: 모델 경량화를 위해 파라미터 수를 축소했으며 (Factorized Embedding Parameterization, Cross-layer parameter sharing), NSP 대신 Sentence Order Prediction (SOP)으로 학습합니다.
▪ DistilBERT: Knowledge Distillation (KD) 기법을 사용하여 대형 BERT 모델의 학습 정보를 소형 모델로 전이시켜 모델 크기를 줄이고 학습 속도를 높였습니다.
• GPT (Generative Pre-Training): Transformer의 디코더만으로 구성된 언어 모델입니다. CLM (Causal Language Modeling) 방식으로 다음 단어를 생성하며 학습하여 생성 태스크에 강점을 가집니다.
◦ GPT-1: 전이 학습 패러다임을 적용하여 사전 학습 후 하나의 태스크에 Fine-tuning했습니다.
◦ GPT-2: Multi-task learning과 유사하게 여러 태스크를 수행 가능한 일반화된 모델을 학습했으며, 모델 크기, 파라미터 수, 데이터셋 크기, 최대 문장 길이를 증가시켰습니다.
◦ GPT-3: In-context learning을 통해 태스크별로 많은 데이터를 구축하거나 학습할 필요 없이 Few-shot 예제만으로도 성능 향상을 이루었습니다.
• BART (Bidirectional Auto-Regressive Transformers): Encoder-Decoder 구조를 가지며, 임의로 손상된 원본 문장을 복원하는 Denoising Autoencoder 방식으로 사전 학습됩니다. 요약, 번역과 같은 Seq2Seq 태스크에 특히 효과적입니다.
LLM 시대의 최신 트렌드
대규모 언어 모델(Large Language Models, LLMs)의 등장은 자연어 처리 분야에 혁명적인 변화를 가져왔습니다.
• Scaling Laws: 모델의 성능은 주로 모델 파라미터 수(N), 학습 데이터 크기(D), 컴퓨팅 양(C) 세 가지 요인에 의해 결정됩니다. 이 세 가지 요인을 함께 확장할 때 최적의 성능 향상을 이룰 수 있으며, 특히 모델 크기와 데이터 크기를 동시에 확장하면 성능이 예측 가능하게 개선됩니다. 큰 모델일수록 더 적은 학습 단계와 데이터로 동일한 성능을 달성할 수 있습니다.
• RLHF (Reinforcement Learning from Human Feedback): 대규모 언어 모델은 방대한 데이터로 학습되어 유해하거나 거짓된 응답을 생성할 수 있습니다. RLHF는 이러한 모델의 약점을 보완하고 사용자의 의도에 더욱 잘 따르도록 모델을 정렬(align)하는 방법입니다. 이 과정은 SFT (Supervised Fine-tuning), RM (Reward Model), RL (Reinforcement Learning)의 세 단계를 거쳐 진행됩니다.
• Prompt Engineering: 모델에 추가적인 튜닝 없이도 사용자의 의도를 잘 수행하도록 프롬프트(지시사항)를 효과적으로 설계하는 과정입니다.
◦ 명확하고 구체적인 프롬프트 작성: 긴 프롬프트, 구분자 사용, 구조화된 출력 요청, 조건 충족 확인, Few-Shot Prompting 등을 통해 모델에 더 많은 맥락과 명확성을 제공합니다.
◦ 모델에 생각할 시간 제공: 복잡한 작업일수록 작업을 완료하기 위해 필요한 단계를 구체적으로 명시하거나, 성급히 결론을 내리기 전에 단계적으로 해결책을 찾도록 지시하는 것이 중요합니다.
• 다국어 LLM (Multilingual LLMs): 초기 사전 학습 모델부터 다국어 모델을 만들려는 노력이 있었으며, only-encoder 모델에서는 언어적 정보를 동일한 공간에 매핑하고, encoder-decoder 모델에서는 주로 번역을 위해 사전 학습이 진행되었습니다.
◦ 주요 모델: mBERT (102개 언어 위키피디아 학습, Encoder-only), XLM (MLM + Translation Language Modeling), MASS (Masked Sequence to Sequence Pre-training), mBART (Denoising Auto-Encoding, 25/50개 언어), mT5 (Text-to-Text 프레임워크, 101개 언어, 최대 13B 모델).
◦ LLM 시대의 다국어 모델로는 PaLM (100개 이상 언어, 540B 파라미터), LLaMA/LLaMA2 (20개 언어 사전 학습), PolyLM (오픈 소스, 18개 언어), PaLM2 (100개 이상 언어 지원, 한국어 포함 높은 성능), GPT-3.5/GPT-4 (대부분 언어에서 최고 성능).
◦ Cross-lingual LLM 학습 전략: Instruction Tuning, Further Pre-training, Vocabulary Extension, Adapting Monolingual Model (AMM), Cross-Lingual Post-Training (XPT), GPT-recycle, Embedding Alignment, Adapter 기반 방법 등이 있습니다.
• 멀티모달 LLM (Multimodal LLMs): 여러 데이터 형태(이미지, 텍스트, 오디오, 비디오 등)를 처리할 수 있는 모델입니다.
◦ Image-Text Multimodal: 이미지와 텍스트를 모두 처리하며, Image2Text Retrieval, VQA, Image Captioning 등이 대표적인 태스크입니다. CLIP (Contrastive Language-Image Pre-training)은 이미지와 텍스트를 같은 임베딩 공간에 사상하여 Zero-shot 분류를 가능하게 합니다. BLIP 및 BLIP-2는 웹 데이터 노이즈를 해결하고 학습 효율을 높였습니다. LLaVA는 GPT-4를 활용하여 Multimodal LLM 학습을 위한 SFT 데이터를 생성했습니다.
◦ Audio-Text Multimodal: 오디오 신호와 텍스트를 처리합니다. Whisper는 음성 스펙트럼을 입력으로 받아 전사, 번역, 화자 구분이 가능합니다.
◦ Video-Text Multimodal: 비디오와 텍스트를 처리합니다. VideoCLIP은 비디오 인코더와 텍스트 인코더 간의 Contrastive Learning을 통해 학습됩니다.
◦ LLM으로의 확장: Flamingo는 Few-shot 학습을 시도했으며, Gemini (Google)는 시각, 비디오, 오디오, 언어를 모두 결합한 모델로 38개 언어를 지원합니다.