언어 모델이란 무엇인가?
1. 언어 모델이란 무엇인가?
자연언어 : 인간의 언어, 정보 전달의 수단
언어모델 : 인간의 언어를 컴퓨터가 이해할 수 있게 하는 지식 표현 체계, 언어를 이루는 구성(글자, 형태소, 단어, 단어열(문자열), 문단 등)에 확률값을 부여하여 이를 바탕으로 다음 구성 요소를 예측하거나 생성하는 모델
전통적 언어 모델 : 규칙기반 언어모델 -> 통계기반 언어모델 -> 딥러닝 기반 언어 모델
Encoder과 Decoder의 차이 : Encoder : 전체 문장을 이해를 요구하는 task 에 적합( BERT, RoBERT), Decoder : 텍스트 생성과 관련 task 가 가장 적합(GPT)
2. 자연언어 처리 속 언어 모델의 역할
NLP = NLU (Natural Language Understanding) + NLG(Natural Language Generation)
NLU : 감정 분석, 유사도 예측, 자연어 추론, 언어적 용인 가능성, 기계 독백, 의도 분류
NLG : 생성 모델
전통적인 언어지식 표현 체계
1. 전통적인 언어 지식 표현 체계
정보 이론 : 데이터나 시그널에 존재하는 정보의 양을 측정하는 이론
- 낮은 정보 : 자주 발생 사건
- 높은 정보 : 덜 자주 발생하는 사건
- 추가적인 정보 : 독립 사건
Shannon Entropy : 전체 사건의 확률 분포의 불확실성의 양을 나타낼 때 사용 (계속 앞면의 동전만 나옴 엔트로피는 0)
- 엔트로피 하락 : 사건의 분포가 결정적
- 엔트로피 증가 : 사건의 분포가 균등적
Cross Entropy : 두 확률분포의 차이를 계산한 엔트로피
KL Divergence : 두 확률 분포의 차이를 나타내는 지표
One-Hot Encoding : 컴퓨터가 이해할 수 있도록 단어를 벡터 형태로 표현
통계적 언어 모델(SLM : Statistical Language Model) : 단어열이 가지는 확률 분포를 기반으로 각 단어의 조합을 예측한다(이전 단어를 기준으로 다음 단어를 예측할 수 있음)
조건부 확률 : 어떤 사건 a 가 발생했을떄, 사건 b가 일어날 확률
조건부 확률 연쇄 법칙 (chain rule) : n 개의 조건에 대한 연쇄적으로 조건부 확률을 적용 = 단어 시퀀스가 만드는 문장과 유사
카운트 기반의 접근의 한계 : 충분한 데이터를 관측하지 못하면 정확한 모델링을 못하는 '희소 문제' 발생
ngram : 희소문제를 완화하기 위해 나옴. 다음에 나올 단어의 예측은 오직 n-1개의 단어에 의존, 직전 상태에만 의존한다
ngram의 한계 : trade-off문제(앞에서 몇개의 단어를 볼지 n을 정하는 것이 trade - off 가 존재)
2. 카운트 기반 언어 모델
단어의 표현
국소 표현(Local Representation) : 해당 단어 그 자체만 보고 특정 값을 맵핑해서 단어를 표현하는 방법(고양이 : 0,1,0,0)
분산 표현(Dense Representation) : 단어를 표현하고자 주변을 참고해서 단어를 표현하는 방법(귀엽다 : 0,1,0,0 동물 : 1,0,0,0 => 고양이)
Bag of Words(BoW) : 단어들의 출현 빈도만을 집중하는 텍스트 데이터의 수치화 표현 방법(관계를 표현하기 어려움)
TF-IDF
TF : 단어의 등장 빈도
IDF : 단어가 제공하는 정보의 양(희귀한 단어일수록 값이 높아진다)
Comparison Function(연관성) : 질의와 문서 사이의 관련성의 정도를 계산(순위를 매길 수 있음)
- 문서 빈도수(Document Frequency) : 질의의 특정 문서에서 나타나는 경우
- 문서 내 term 위치 : 질의가 두개 이상인 경우, 문서내에 얼만큼 가까운 위치에 있음
- 문서 - 단어 행렬(Document - Term Matrix) : 문서에서 등장하는 각 단어의 빈도나 특성을 반영한 행렬
TF - IDF : 기계독해, 문서 요약, 문서 군집화, 키워드 추출
BM 25
: TF-IDF를 기반으로 문서의 길이까지 고려하여 점수를 매김(추천 시스템)
: TF 의 영향이 감소, IDF 영향이 커짐
3. 언어모델 평가 방법
생성형 모델 평가 방법
PPL(Perplexity) : 모델이 헷갈리는 정도, 확신을 가지고 답을 냈는지 정도
BLEU : 기계번역, 목표로하는 문장과 모델이 생성한 문장이 일치하는 정도를 precision 관점에서 수치화(동의어 처리 불가능)
ROUGE : 목표로 하는 문장과 모델이 생성한 문장이 일치하는 정도 Recall 관점에서 수치화
- ROUNGE-N : unigram, bigram, trigram 등 문장에서 중복되는 n-gram 을 비교
- ROUNGE-L : LCS 기법을 이용해 최장 길이로 매칭되는 문자열을 측정
- ROUGE-S : 단어쌍을 묶어 해당 단어쌍들이 중복되는 지 확인
METEOR : 기계번역, precision과 recall 도 함꼐 고려함, 다른 가중치를 적용을 통해 이 둘의 조화 평균을 활용
chrF(character n-gram F-score) : 문자 단위의 n-gram 일치에 대한 f-score 통계를 사용
BLEURT(Bilingual Evaluation Understudy with Representations from Transformers) : BERT 모델의 학습된 임베딩을 사용해 정답 문장과 생성된 문장의 의미론적, 형태론적 유사성을 평가
의미기반 언어지식 표현체계부터 문맥기반 언어지식 표현 체계까지 Pretrain 모델 기반 언어모델 연구 한판 정리
1. 의미기반 언어지식 표현체계 이론
분포 가설(distributional hypothesis) : 단어가 나타내는 주변 맥락이 유사하면, 그 단어들의 뜻도 서로 비슷하
- one hot vector : 단어의 수가 많을 때 벡터의 차원이 매우커져 계산 효율이 떨어진다
단어 임베딩(Word Embedding) : 단어를 고정된 길이의 밀집 벡터로 표현하는 기법, 벡터 공간에서 비슷한 단어를 가까이 위치하도록 한다
- count based methods : 단어의 출현 빈도나 문맥의 공존 빈도를 기반으로 벡터를 생성
- Predicition-based Methods : 신경망을 이용해 주변 단어로부터 타겟 단어를 학습한다
Word2Vec : Prediction-based Methods 기반의 단어 벡터 학습 및 표현, 방법 공존 행렬 기반의 단어 벡터 학습 및 표현 방법
- CBow : 주변 단어 맥락으로 중심 단어를 예측하는 Word2Vec 신경망
- Skip-Gram : 중심 단어로부터 주변 단어를 예측하는 Word2Vec 신경망
GloVe(Global Vectors for Word Representation) : 공존 행렬 기반의 단어 벡터 학습 및 표현 방법
공존 확률 : 단어 i와 단어 j 가 함께 얼마나 잘 등장하는지 추청
FastText : 서브 워드 정보를 포함하는 단어 벡터 학습 및 표현방법, 희귀단어나 오타에 대한 내성을 강화
- out of vocabulary(학습 중 만나지 않은 새로운 단어 합성어에 대한 임베딩을 생성할 수 없음)에 대한 오타 강화
- 형태학적 유연성(동일한 어근을 공유하는 단어들 간의 매개변수 공유가 없어 단어의 내부 구조를 활용하지 못하는 정도)이 좋음
=> subword 단어 분해 : 문맥 단어의 벡터는 n-gram을 추가하지 않고 사용함(i eat food => "eat food")
=> negative sampling : 실제 문백 단어 주변에 negative sampling 으로 무작위로 선택하여 임베딩을 최적화
Doc2Vec : 문서 벡터 단위로 학습, 문서에 id 를 부여
CoVe(Contextualized Word Vectors) : 시퀀스 모델링 기반의 단어 벡터 학습 및 표현 방법, 단어가 문맥에 따라 달라지는 것을 학습한다
2. 문맥기반 언어 지식 표현체계 이론
사전학습(Pretrain) : 라벨링 없는 대량의 웹데이터를 라벨을 붙여 학습
1) 기초적인 Context LM
ELMo(Enbedding from Language Models) : Pre-trained word representation 을 얻기 위해 만들어진 사전학습 모델
- 기존의 문법적, 문맥적 정보를 통한 단어 벡터를 얻는 것은 매우 어려운 작업
- 동의어에 매번 다른 단어 임베딩을 획득
=> 어제 카페 갔다
<= 어제 카페 갔다
GPT(Generative Pretrained transformer) : transformer 의 decoder구조만 사용, 미세조정시 모델 구조를 수정해서 지도학습 진행
=>어제 카페 갔다
BERT(Bidirectional Encoder Representation from Transformer) :
- 라벨링 되지 않은 텍스트에 대해 Masked Language Modeling 및 Next sentence Prediction 진행
- Transformer Encoder 구조만 사용
- BERT의 입력은 3가지 임베딩의 합으로 계산 : Token Enbedding(각 토큰에 대한 WordPiece 임베딩 벡터를 제고) + Segment Enbedding(sentence pair를 구분지을 수있는 정보를 제공) + Position Enbedding(Multi head Attention, 방향성에 대한 정보를 제공하기 위해 positional enbedding을 추가로 더해줌)
=> 어제 [Masked] 갔다 <=
2) 고급 언어 모델링 기법
Encoder-only models(auto encoding models) : 문장 분류, 자연어 이해(BERT, RoBERTa, ALBERT, DistilBERT,....)
XLNet(eXTended Language NETwork) : 순열 기반 모델(다양한 단어 순서를 고려하여 양방향 컨텍스트를 효율적으로 학습), 자동 회귀 특성과 자동 인코딩 장점을 결합
=> 토큰을 무작위로 1234를 4123으로 바꿀때 순서대로 학습할 수 있도록 하는 모델이다, 양방향을 고려할 수 있으며, masking제거함으로서 자연스럽게 학습
RoBERTa : BERT의 하이퍼파라미터 및 학습 데이터 사이즈를 조절함으로서 최적화된 모델, Dynamic Masking
ELECTRA : 작은 모델인 Generator와 실제모델인 Discriminator 를 사용하여 효율적으로 학습, RTD(Replaced Token Detection, 모든 토큰에 대해 진위여부를 예측)
ALBERT(A Lite BERT) : 모델의 크기를 줄이고, 성능을 높이자
...
3. 사전학습 기반 언어모델의 한계점 및 방향성
일반화 능력의 한계 : 라벨링 된 데이터가 부족, 사전 학습된 모델을 미세조정할 경우 일반화 능력이 상실됨
선호도 기반 답변 불가능 : 사용자가 원하는 답변을 주기 어려움
지식의 오래됨과 업데이트 문제 : 변화하는 지식을 대처하기 위해서는 새로 사전 학습을 진행함
계산 비용과 환경문제 : 탄소문제
데이터 편향과 윤리적 문제 : 성별, 인종, 종교 등의 편향이 발생
할루시네이션 : 모델이 사실과 무관하거나 존재하지 않는 정보를 생성하거나 확인할 수 없는 사실을 제공
Large Language Model 기초
1. llm 이란
LLM : 기존 언어 모델의 확장, 창발성(단일 모델로 여러 TASK 를 처리), Human Alignment(human feedback), In - context learning(문장내에 있는 값들로 학습), Instruction Tuning
재료 : infra(하드웨어), Backbone Model(이미지, 텍스트에서 중요한 특징을 추출하는 모델), tuning(어떻게 경량화), data(고품질의 다량의 학습 데이터)
방향성
- 모델링과 데이터 중 중요한 것은 데이터다
- llm 학습할 때 데이터 구성의 중요성
- 사전학습 모델의 크기
multimodal
: vision 과 laguage 합친 것
prompt engineering
: 프롬프트 튜닝, 프롬프트로부터 사람의 언어흐름을 학습
2. llm의 근간 이론들
Fine Tuning : 대규모 코퍼스로 사전학습 후 적은 규모의 데이터셋에 대해 fine tuning 하는 과정(일부 task 에 집중)
In-Context Learning :프롬프트 Few Shot을 받고 답을 출력하는 과정(학습 과정에서 다양한 스킬과 패턴 인식 능력을 키워 inference 단계에서 원하는 task 를 뽑아낸다)
n shot learning
- Zero Shot : 모델은 지시사항만을 받고 답을 출력한다
- One Shot : 모델은 지시사항 + 예시 1개 를 받고 답을 출력한다
- Few Shot : 모델은 지시사항 + 예시 n개 를 받고 답을 출력한다
* chain of thought : 인간의 사고를 흐름을 녹여내야 성능이 좋아짐
ChatGPT : 인간의 지시를 반영하는 Instruction Tuning 과 피드백을 반영하는 Reinforcement Learnging으로 구조
Instrunction Tuning : 사람의 지시에 따르지 못함 사람의 지식를 수행하도록 모델을 Fine Tuning 하는 방식
- step 1. 실제 명령을 제공, 예제 데이터를 수집후 supervised policy 를 학습 answer를 라벨링
- step 2. 완벽하게 대답하게 하기 위해 reward model 로 학습 -> 선호도를 반영할 수 있음
- step 3. RLHF 강화 학습을 사용해 Reward Model 에 대해 policy를 강화
PEFT(Parameter Efficient Fine Tuning) 방법론
: 모델이 점점 커짐에 따라 시판 그래픽카드로 모델 전체를 fine tuning 하는 것은 불가능
: 사전 훈련된 언어모델을 특정 작업이나 상황에 적용할때, 가중치의 일부만 업데이트하는 파인 튜닝 방법
-> 일부만 fine tuning 하므로 연산량이 대폭 감소
Prompt : 언어모델에 전달하는 질문이나 요청을 사용자가 응답을 유도한다는 의미 => Prompt Learning
Prefix-Tuning : 각 레이어의 입력 앞에 테스크 특화 벡터들을 붙여 튜닝하게 된다, 한 언어모델로 여러개의 테스크를 처리할 수 있다
* Prefix-Tunging vs Fine Tuning의 차이
->Prefix-Tuning 필요한 테스크에 대해 계산 시간이 줄어든다, 오버헤드 감소
Prompt Tuning : 전체 파라미터를 튜닝하는 대신에 입력 프롬프트 임베딩만 학습하는 방법
* Prompt Tuning vs Fine Tuning의 차이
-> 모델에 입력되는 프롬프트에 해당하는 weight 만을 학습
P-Tuning : PLMs 전체 가중치를 파인튜닝하지않고, 연속적인 프롬프트 임베딩만을 튜닝하는 방법
출력값을 프롬프트의 토큰 임베딩으로 사용, anchor token 을 추가해서 언어모델 구조와 상관없이 적용가능하다
LoRA(Low Rank Adaptation) : 사전학습 가중치를 고정한 상태로 유지하면서, dense layer 변화에 대한 분해행렬을 최적화, 가중치 계산되는 layer에 앞뒤로 어뎁터가 추가된거라고 생각하면
Quantization : training time을 줄이는게 아니라 inference time을 줄이는게 목표
실수를 인트로 변환 -> 32비트를 8비트를 변환 => 계산과 메모리 acccess 속도를 높
QLora : 4비트로 Lora에 더해지는 weight는 16 비트 파인튜닝을 유지
3. LLM 국내외 동향
국내 동향
- 네이버(Hyper Clova X)
- LG(EXAONE 2.0)
- 엔씨소프트 VARCO