일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- jupyter notebook
- 첨가행렬
- 이변량자료
- 이산확률질량함수
- 포아송분포
- 연속확률변수
- 이항분포
- pmf
- 통계학개론
- 누적분포함수
- 모평균
- 기본행연산
- 조건부확률
- 이산형
- 피어슨상관계수
- 확률밀도함수
- 절삭평균
- 표본평균
- 기댓값과 분산
- 표본공간
- 모수
- 행사다리꼴
- 범주형자료
- 통계학입문
- 사조사
- 베르누이분포
- Anaconda
- 수치형자료
- 균일분포
- 수학적확률
- Today
- Total
summ의 블로그
자연어처리 (7) GPT와 BERT 본문
부스트코스 자연어처리
https://www.boostcourse.org/ai330/lecture/1455802?isDesc=false
transformer 구조를 바탕으로 한 여러 모델
GPT1
pre-trained
- text prediction 입력된 텍스트를 기반으로 다음 단어 예측
- task classifier 텍스트 생성에 중점을 두며 다양한 task를 활용하여 동시 학습
- classification [start → Text → Extract]→ transformer → linear
- entailment [start → premise → dellim → hypothesis → Extract]→ transformer → linear
- 문장 간 논리적 관계 판단
- similarity 의미적 유사도 측정
- masked multi self attention 텍스트 이해
extract는 문장 간의 관계에 대한 정보를 담고 있고, output을 linear에 넣어서 최종 결과로 만듦
BERT
: pre-trained 된 language modeling
* ELMo
Embeddings from Language Model 언어 모델을 기반으로 하는 워드임베딩
워드 임베딩 진행 시 문맥을 고려하여 임베딩 진행
순방향 RNN, 역방향 RNN 모두 학습하여 활용하는 biLM (bidirectional)
이전
이전의 gpt1 모델:
<sos> 에서 <eos> 까지 순차적으로 학습을 진행 (앞쪽 문맥을 보고 뒤쪽 문맥을 파악, 예측)
→ standard한 language model
따라서 '전후 문맥을 보지 못한다'는 한계점이 존재
이러한 한계점에서 동기부여가 되어 문장 전체를 동시에 입력으로 사용하는 BERT model 등장
- 앞쪽과 뒤쪽의 정보를 함께 사용
- 문장 전체를 동시에 input으로 넣어 학습
방법
- Masked Language Model (MLM)
문장 내의 단어를 일정한 확률의 [mask] token으로 치환
input 문장 ex) 나는 [mask] 를 공부한다. 나는 수학을 [mask]한다.
대략 15% 만 단어를 치환 (15%가 딱 적당한 효율)
- 15% 중 80% [mask] 10% random words 10% same words
왜?
학습을 mask 토큰을 사용해서 진행해도 실제 들어오는 입력 문장에는 mask 토큰이 존재하지 않기 때문
다른 다양한 테스크에 높은 성능
2. Next Sentence Prediction
문장 간 관계 정보를 학습하기 위해 사용
문장이 서로 이어지는지의 여부를 판단 → 문장 수준의 의미 이해
입력 문서에서 서로 다른 문장 2개를 골라 이어 붙임
시작에는 [CLS] 문장 사이에는 [SEP] 적용 + [MLM] 적용하여 2가지 task를 동시에 학습할 수 있도록 구성
이 두 문장이 인접한 문장인지 판단하는 binary cls - IsNext / NotNext
IsNext: 두 문장이 실제 문서에서 이어지는 문장임
NotNext: 두 문장이 실제 문서에서 이어지지 않는 문장임
summary
model 구조
- L (self-attention block): 12 / H (self-attention block encoding vector dim): 768 / A (attention head): 12
- L (self-attention block): 24 / H (self-attention block encoding vector dim): 1024 / A (attention head): 16
input
- Wordpiece Embedding: word를 더 나눠서 sub word embedding 으로 넣음
- Learned Positional Embedding: sin cos 함수를 활용해 학습에 의해 얻은 최적화된 값으로 도출
- Segement Embedding: 두 문장을 구별하기 위해 문장 수준의 task
- 두 문장을 [SEP] token 으로 구별해서 넣었을 때 각각의 word embedding vector에positional embeddings 이 추가적으로 더해 학습에 활용
- 문장 level task 단어 'he' 는 E_6 6번째에 있는 단어는 맞지만, sep 이후로 보았을 때 두 번째 문장의 첫 번째 단어
- position embedding 은 순차적으로 넣고, segment embeddings 은 문장 수준에서의 포지션을 반영한 임베딩
다양한 fine tuning 방법
- Sentence Pair 분류: 두 문장을 입력으로 받아 관계 예측 (문장 간 유사도, 자연어 추론)
- 입력 형식: [CLS] 문장 1 [SEP] 문장 2 [SEP]
- 출력: 최종 [CLS] 토큰의 벡터를 사용하여 두 문장 관계 분류
- Single Sentence 분류: 하나의 문장을 입력으로 받아 속성을 분류 (감정 분석, 문장 분류)
- 입력 형식: [CLS] 문장 [SEP]
- 출력: 최종 [CLS] 벡터를 통해 문장의 분류 결과 생성
- Question Answering: 질문과 관련된 컨텍스트의 정답 텍스트 예측
- 입력 형식: [CLS] 질문 [SEP] 컨텍스트 [SEP]
- 출력: 모델은 컨텍스트 내에서 정답이 시작되는 위치와 끝나는 위치를 예측하여 답변 생성
- Single Sentence Tagging: 각 단어에 대해 태그를 할당 (Pos 태깅, NER)
- 입력 형식: [CLS] 문장 [SEP]
- 출력: 각 단어에 대한 출력을 생성하며, 공통 output layer를 통과하여 단어별 태그 할당
BERT vs GPT-1
- Training Dataset: BERT > GPT-1
- Batch Size: BERT > GPT-1
- Fine-Tuning Learning Rate
- BERT: task 별 다른 학습률
- GPT-1: 5e-5 고정
- Special Tokens
- BERT: [MASK], [CLS], [SEP]
- GPT-1: x
MRC
machine reading compregension
기계 독해를 기반으로 한 질의응답 task
질문 + 답 함께 존재하는 문서를 제공하고 답을 찾는 것
BERT는 MRC task에서 질문과 문맥을 동시에 입력받음.
답이 시작되는 위치와 끝나는 위치를 예측하는 방식으로 답변 도출
수행 과정
SWAG Situations with Adversarial Generations
객관식 문제 풀이와 유사한 형식으로 구성된 task
- 주어진 문장이나 상황에 대한 이해를 바탕으로 가장 일관성 있는 다음 문장을 선택하는 형식
- 상황에 적합한 문장을 예측하도록 모델을 훈련하여 상황 이해 능력과 문맥 예측 능력 평가
- 주어진 문장이 특정한 상황을 나타낼 때 나올 수 있는 여러 문장 중에서 가장 자연스럽고 논리적인 문장을 선택
- 텍스트의 일관된 흐름을 유지
'자연어처리' 카테고리의 다른 글
자연어처리 (6) transformer (1) | 2024.11.09 |
---|---|
자연어처리 (5) 출력값 생성기법 (1) | 2024.10.29 |
자연어처리 (4) seq2seq with attention (1) | 2024.10.24 |
자연어처리 (3) RNN (0) | 2024.10.15 |
자연어처리 (2) w2v & glove (2) | 2024.09.30 |