Study Record/AI Data Science

[Conversational AI 5강] Language Models 3

Sungyeon Kim 2024. 7. 6. 23:02

1. GPT1

transformer의 decoder만 사용

** encoder와 decoder의 차이점

-> encoder는 문장에 있는 모든 단어들과 self attention 구하지만,

decoder는 자기보다 앞에 있는 단어들 하고만 self-attention 구함.

 

1) pre-training 방식: next word prediction

<s> : 시작 토큰, <stop>: 엔드 토큰

 

2) Byte Pair Encoding (BPE)

h, u, g, g 이런 식으로 byte level로 죄다 쪼갬

자주 같이 등장하는 토큰들의 frequency 구한 후

frequencey 가장 높은 애를 합쳐

 

*wordpiece tokenization과의 차이점

-> wordpiece는 상대적 freq 계산. BPT는 절대적 freq 계산

 

-> zero shot ability를 보았다.

 

2. GPT2

zero-shot ability를 극대화시키자!

 

performance metric 1 perplexity

-> low perplexity means that a model is likely to generate the text

문장을 생성할 확률!

 

perplexity는 fluency를 의미하는 게 아님

fluent한데도 잘 사용 안되는 문장이면 perplexity 높음

 

-> 한 문장과 여러 모델을 두고 이 문장을 생성할 확률들을 모델별로 비교하기 위해서 perplexity를 사용

-> 한 모델 안에서 여러 문장 비교하는 용도 아님.

 

gpt2의 성능은 단순 memorization에서 오는 게 아님을 실험을 통해 입증 -> generalization 성능

 

3. GPT3

모델 사이즈 더더더 키우자!

few shot 성능 좋지만 

example 8개 이상부터는 성능 향상 없었다

 

4. T5

main idea

: 모든 nlp task를 text input, text output으로 바꾸자!

 

T5는 트랜스포머의 인코더 디코더 전부 사용!

 

1) T5의 디코딩 단계

디코더 내의 단어들끼리 self-attention을 구하고

얘를 aggregate해서 self-contextualized embedding을 구한 후

multi-head cross-attention 구하기

-> decoder 현재 t에서의 query와

-> encoder의 key, value를 구해서

-> attention 구하고 최종 contextualized embedding 구하기

 

[질문]

1. multi-head cross-attention이랑 그냥 attention의 차이점이 무엇인지?

그냥 attention도 input key, value들이랑 중요도 구하고 가중합하는 거 아닌가요?

 

2.

한 단어의 query, key, value가 전부 다른 숫자 벡터가 맞는지?

같은 단어인데 굳이 그렇게 따로따로 구하는 이유? -> 어차피 지금 상태에서는 현재 문장 속 단어의 '한' 의미만 학습시키는 건데

그렇게 query, key, value 벡터 형태가 다 다르면

유사도 구하고, 얘를 또 가중합 하는 이유가 없지 않나?

query, key, value가 같은 값이어야하는 거 아닌가?

 

2) T5 pre-training

 

(1) unsupervised denosing

MLM이랑 비슷한데

전부 [MASK] 토큰이 아닌 죄다 다른 토큰 <X>, <Y>, ... 으로 랜덤하게 바꾸고 -> position 위치 정보 학습 효과 있는지?

<X>, <Y>를 이용한 새로운 문장 생성하도록 학습 시키기

 

(2) supervised text-to-text