일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 이항분포
- 확률밀도함수
- 범주형자료
- 표본공간
- 수학적확률
- 이산확률질량함수
- 기본행연산
- pmf
- 누적분포함수
- 행사다리꼴
- 첨가행렬
- 이변량자료
- 베르누이분포
- 이산형
- 통계학입문
- 수치형자료
- Anaconda
- 표본평균
- 포아송분포
- 모수
- 연속확률변수
- 모평균
- 통계학개론
- 조건부확률
- 피어슨상관계수
- jupyter notebook
- 균일분포
- 사조사
- 기댓값과 분산
- 절삭평균
- Today
- Total
Syeonny의 블로그
자연어처리 (8) GPT & BERT 본문
부스트코스 자연어처리
https://www.boostcourse.org/ai330/lecture/1455805/?isDesc=false
자연어 처리의 모든 것
부스트코스 무료 강의
www.boostcourse.org
GPT 2
다음 단어를 순차적으로 예측하는 동일한 모델이긴 하나
이전보다 대규모 좋은 품질의 데이터 셋을 사용함 40B
motivation
DecaNLP: Natural Language Decathlon
multitask learning as question answering 다중 작업 학습을 질의응답 형식으로 통합
자연어는 각각의 task에 따라 출력 구조의 변경이 필요하다.
task 수행을 위해 일반적으론 fine tuning 을 시행해야 했지만 문장의 마지막에 질문을 덧붙여
질의응답 형식으로 출력 구조의 변경 없이도 높은 성능의 zero shot learning 이 가능함
Zero-shot Learning 성능
- 대화형 질의응답 데이터 사용
- Fine-tuning 없이 예측 수행
- 결과: F1 score 55로 준수한 성능 달성
- Few-shot learning으로 예제를 추가 학습하면 성능 향상 가능
Datasets
레딧과 같은 사이트에서 외부 링크가 포함되거나 좋아요 3개 이상 많이 받은 문서 기반
기술적 특징
Layer Normalization
- Layer 위치 조정
- Layer 가 모델 상단으로 갈수록 출력이 0에 가까워지도록 구성함
Byte Pair Encoding
- Subword 수준의 토크나이저 사용.
주요 task
- Summarize: TL;DR 이 문장 뒤에 나오면 요약을 수행하도록 함 (too long didn't read)
- Translation: 문장 뒤에 (예를 들면) in Korean: 이라고 덧붙이면 번역을 수행하도록 함
GPT 3
더 많은 dataset+ 큰 batch size
갈수록 성능이 더 좋아짐
zero shot → one shot → few shot
ALBERT (Lite Bert)
경량화된 BERT, 알버트
기존 모델: 대규모 메모리 & 많은 학습이 필요한 모델 파라미터 필요
알버트: 성능하락 X 더 좋아진 형태 유지 & 빠른 Pretrained 진행 가능
핵심 기법
Factorized Embedding Parameterization
본래 모델은 동일한 차원의 word embedding block을 사용한다. (input부터 hidden state vector 까지)
그러나 차원을 줄여 word embedding 구성 후 입력 vector와 맞춰주기 위해 선형 layer 추가
→ 더 적은 연산으로 수행 가능
ex) 500 * 100 → 500 * 15 + 15 * 100
Cross Layer Parameter Sharing
선형 변환 행렬의 파라미터를 share 하자 !
- Shared-FFN: feed-forward network 파리미터만 공유
- Shared-attention: attention 파리미터만 공유
- All-shared: 둘 다 공유
- Not-shared: BERT
Sentence Order Prediction
사전학습 task 자체 변경
본래의 SEP 사용하는 Next Sentence Prediction 이 BERT 모델에서 좋은 성능을 내지 않는다고 판단,
why? 너무 쉬운 task
따라서 연속적인 문장을 순서를 바꾸는 방식으로 순서가 맞는지, 틀리는지 판단하도록 함
→ 문장의 흐름을 파악
ALBERT는 위 3가지 기법들을 통해 모델의 경량화를 이루는 동시에 기존 BERT와 동등하거나 더 나은 성능을 유지함
ELECTRA
Efficiently learning an Encoder that Classifies Token Replacemens Accurately
효율적인 학습방법을 인코더에 적용 → 성능 개선
Mask or standard model 을 넘어 generator 를 사용하여 주어진 단어가 복원된 건지 판단하는 이진분류 방식
- Generator: [MASK]된 토큰을 예측
- Discriminator: 토큰별로 Generator에 의해 예측된 토큰인지 실제 단어인지를 예측
앞서 나온 GAN과 유사한 방식으로 Discriminator 가 사전학습 모델로 사용된다.
동일 학습 계산량 모델에 비해 좋은 성능을 보임. → 모델의 경량화
모델의 경량화
Distill Bert
teacher model : ground truth 로 사용
student model : teacher 보다 더 작은 파라미터를 사용하여 teacher의 예측값과 유사해지도록 학습함
TinyBert
Distill Bert 와 동일하게 teacher, student model 구조
teacher 모델의 중간 결과물 (ex. hidden state vector ... ) 까지도 모두 유사해지도록 학습함
BERT 단점 및 보완
BERT 단점: 사전에 주어지지 않은 추가된 정보는 활용하지 못함.
따라서 우리가 갖고 있는 정보, 외부 지식(상식) 을 지식 그래프를 통해 모델에 사용하고 있음 Knowledge Graph
이를 활용한 두 가지 관련 모델
- ERNIE: Enhanced Language Representation with Informative Entities (ACL 2019)
- 그래프의 노드를 임베딩한 entity 임베딩 벡터와 기존의 토큰 임베딩 벡터를 연결해 사용
- KagNET: Knowledge-Aware Graph Networks for Commonsense Reasoning (EMNLP
2019)- 각각의 질문과 답(후보들)의 쌍을 외부 지식 그래프에서 서브 그래프 형태로 탐색
드디어 완강
'자연어처리' 카테고리의 다른 글
논문 정리 (0) | 2024.12.20 |
---|---|
회고 (1) | 2024.11.21 |
자연어처리 (7) GPT와 BERT (0) | 2024.11.11 |
자연어처리 (6) transformer (1) | 2024.11.09 |
자연어처리 (5) 출력값 생성기법 (1) | 2024.10.29 |