일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 웹소프트웨어
- 벡터
- 컴파일러
- C언어
- Agile
- 정보검색
- 836
- css
- 객체지향설계
- 언어모델
- OS
- 컴파일
- 자연어처리
- DB
- 데이터분석
- 랩실일기
- 오픈소스웹소프트웨어
- Linear Algebra
- 가상메모리
- 파싱
- 소프트웨어공학
- 데이터베이스
- 스케줄러
- React
- 프로세스
- NLP
- 애자일
- 운영체제
- 파싱테이블
- 클래스
- Today
- Total
observe_db
[NLP] 14. 거대 언어 모델(LLM) 본문
1. 사전 학습과 토큰화
거대 언어 모델
- LSTM이나 Transformer등을 쌓아 언어 모델의 크기를 확장한 것(수백 M~T)
- 일반적인 NLP TASK 성능 대폭 향상
- QnA 뿐 아니라 대화형 가능
- 학습데이터 부족 문제: 학습량 및 미등록어 처리
Pre-training: 학습 데이터 부족을 해결하기 위한 기초적 학습.
- 대규모 원시 텍스트(raw text)를 이용하여 학습(self-supervised learning)
- 모델이 일반적 언어를 처리할 수 있도록 초기화
- 모델의 파라미터 초기값은 성능에 매우 중요
- 사전 학습 후 fine tuning으로 성능 향상
- 예시
- 다음 단어 예측/빈칸 예측/단어 순서/바뀐 단어 맞추기/다음 문장 예측/ 문장 순서 예측
단어 토큰화: 단어를 통계에 기반한 sub-word(토큰)으로 분리하여 미등록어 등장 최소화(n-gram 기반 단어벡터와 유사)
필요성
- 모든 단어를 어휘 벡터로 표현하기 어려움
- 새로운(미등록) 단어에 대한 표기 방법 필요
- 입력 벡터 차원(크기) 최적화
효과
- 단어를 통계에 기반하여 부분 단어로 분리하여 미등록어 등장 최소화
- 최적화된 입출력 단위 처리
- (one-hot의 어휘수 감소->벡터 크기 감소)
방법
- 단어를 부분 단어로 분리하여 처리
-압축 기술을 이용하여 최적의 부분 단어로 분리
입출력 제한
실제 트랜스포머 입력 크기는 토큰 수로 제한(단어수 아님)
출력 후 다시 단어로 결합하여 출력 단어수와 다름.
Byte Pair Encoding(BPE)
과정
- 공백 분리된 단어 나열->단어 빈도 확인->unigram 글자 저장
- uni gram 나열-bigram 조합-최빈도 bigram 선택&저장(2~5단계 반복)
토큰화
- 앞단계에서 구축한 어휘 사전 이용
- 글자 분리 후 각 bigram 확인 후 우선 순위에 따라 변환
- 사전에 없으면 <unk>
- 변환된 부분 단어열은 더 변환 가능할 때까지 계속 반복
Word Piece(sentence piece)
BPE와 차이점
- bigram 선택 시 빈도가 아니라 상호 정보량 이용하여 판단
- 토큰 생성시 최장길이 어휘 우선
- 단어 첫 글자와 나머지 구분.
상호 정보량 계산: score(a, b) = freq(ab) / (freq(a)*freq(b))
과정
- 공백 분리된 단어 나열->단어 빈도->unigram 저장
- unigram 나열->bigram 조합&선택&저장(반복)
토큰화
-앞 단계에서 구축한 어휘 사전 이용
- 앞에서부터, 가장 긴 어휘부터 매칭
Tokenizer 변형
특별 토큰 추가: <UNK>, <CLS>, <SEP>등
토큰 분리 기호: 빈칸을 ## 대신 _로 표시하여 토큰 수 줄이기(빈칸 무손실 복원)
토큰 통합 방법: 모든 가능한 조합을 미리 만들고 가능성 높은 짝을 합치기
어휘 길이 고려한 bigram 선택 식: score(a, b) = freq(ab)* len(vocab) / (freq(a)*freq(b)) --보류.
단점 보완: 결정적 분리, 정적 어휘사전, 학습데이터 의존적으로 과적합 가능=> BPE dropout, dynamic BPE 등
2. 거대 언어 모델
종류
Auto Encoding Model
- 단어에 대한 표현을 잘하기 위한 것
- Word Vector의 발전된 형태
- Sequence labeling(입출력 n:n)에 적용 가능
- 원문 변형 후 복원 방법으로 학습
- ELMO, BERT, XLNet 등
Auto Regressive Model
- 문장 생성을 잘하기 위한 것
- N-gram 언어 모델의 발전된 형태
- Seq2Seq(n:m)에 적용 가능
- 주어진 단어들에서 다음 단어 예측
- GPT 계열
ELMO(Embeddings from Language Models)--(paper: Deep contextualized word representations)
시퀸스 라벨링
bi-LSTM 기반=>양방향성
pre-training
- 문장을 정방향과 역방향으로 예측하는 언어 모델을 학습
- 단어가 아닌 문맥 자체를 학습
- 동일한 단어도 문맥에 따라 서로 다른 벡터가 생성됨.
tokenizer
Word piece 사용.
단어를 부분 단어로 나누어 사용
부분 단어를 상호 정보량에 따라 구성
unknown word 문제 완화
사전 학습
Masked language modeling
- 랜덤으로 선택된 15% 변형 후 원형 예측
- 80%는 mask, 10% 랜덤 변경, 10% 그대로
Next senetence prediction
주어진 두 문장에서 다음 문장의 연관 관계를 CLS 토큰으로 학습
fine tuning
- 구체적 작업을 위한 문제/정답 데이터 사용
- 구체적 작업으로 파라미터 세밀 조정
fine tuning 예시
MNLI(Multi-Genre Natural Language Inference): entailment(뜻이 포함된 여부) 분류
QQP(Quora Question Pairs): Quora에 올라온 질문 쌍이 의미적 동일한지 확인
QNLI(Question Natural Language Inference): SQuAD의 이진분류 버전. paragraph가 answer를 포함하는지
STS-B(Semantic Textual Similarity Benchmark): 문장쌍이 유사한지 확인
MRPC(Microsoft Research Paraphrase Corpus): 문장싸의 유사성
RTE(Recognizing Textual Entailment): MNLI와 유사
SST-2(Standford Sentiment Treebank): 단문장 이진분류문제. 영화리뷰 문장에 감정이 표기되어 있음.
CoLA(Corpus of Linguistic Acceptability): 영어문장이 언어학적으로 올바른지 확인하는 이진분류문제
GPT: Generative Pre Training (Transformer)
- 단방향 Transformer decoder 학습 모델
- auto regressive
- sequence-to-sequence
Tokenizer
BPE
빈도 기반 부분 단어 구성
unknown word 문제 완화
사전 학습-다음 단어 예측 방법
T5(Text to Text Transfrer Transformer)
기존 LLM 모델들의 최적화 추구
- 구조, 테스트 데이터의 다양한 조합으로 최적 모델 찾음
- un-sup pretraining/multi-task pretraining, fine tuning
- model size, training steps, batch size, multi model(ensemble)
모든 작업의 텍스트 화
- 일관된 작업을 위해 통일
- 번역, 문법 일치, 텍스트 의미, 요약 등을 통일된 텍스트 입출력 형식으로 처리
- 수는 텍스트로 표시
'학교 공부 > 자연언어처리(4-2)' 카테고리의 다른 글
[NLP] 15. 프롬프트 및 순화 학습 (1) | 2024.12.04 |
---|---|
[NLP] 12. n-gram 언어 모델 (0) | 2024.11.15 |
[NLP] 11. 단어 벡터 (1) | 2024.11.08 |
[NLP] 10. 기계번역 (0) | 2024.11.08 |
[NLP] 9. 정보 추출 (0) | 2024.11.01 |