GPT fine-tuning - 7. glossary

Dongyoung KimΒ·2023λ…„ 3μ›” 10일
2

GPT

λͺ©λ‘ 보기
8/12
post-thumbnail

🐰 Dongyoung:
gpt ν•™μŠ΅μ— μžˆμ–΄ pre-train, fine-tuning, in-context learning 을 μ„€λͺ…ν•΄μ€˜

πŸ¦„ ChatGPT:
GPT (Generative Pre-trained Transformer)λŠ” λŒ€ν‘œμ μΈ μ–Έμ–΄ λͺ¨λΈ 쀑 ν•˜λ‚˜λ‘œ, 전체적인 λ¬Έλ§₯κ³Ό μ–Έμ–΄ νŒ¨ν„΄μ„ ν•™μŠ΅ν•˜μ—¬ ν…μŠ€νŠΈ 생성, λ²ˆμ—­, μš”μ•½, μ§ˆμ˜μ‘λ‹΅ λ“±μ˜ λ‹€μ–‘ν•œ μžμ—°μ–΄ 처리 νƒœμŠ€ν¬μ—μ„œ λ›°μ–΄λ‚œ μ„±λŠ₯을 λ³΄μž…λ‹ˆλ‹€.

GPT의 ν•™μŠ΅μ—λŠ” 크게 pre-training, fine-tuning, in-context learning μ„Έ 가지가 μžˆμŠ΅λ‹ˆλ‹€.

- Pre-training:
GPT의 pre-training은 λŒ€κ·œλͺ¨ ν…μŠ€νŠΈ λ°μ΄ν„°μ…‹μ—μ„œ λ¨Όμ € μˆ˜ν–‰λ©λ‹ˆλ‹€. μ΄λ•Œ GPTλŠ” λ‹¨μ–΄μ˜ μœ„μΉ˜ 정보λ₯Ό κ³ λ €ν•œ transformer λͺ¨λΈμ„ μ‚¬μš©ν•˜μ—¬ λ¬Έλ§₯ 정보λ₯Ό νŒŒμ•…ν•˜λ©°, λ‹€μ–‘ν•œ μ–Έμ–΄ 처리 νƒœμŠ€ν¬μ—μ„œ 쒋은 μ„±λŠ₯을 λ°œνœ˜ν•  수 μžˆλ„λ‘ ν•™μŠ΅ν•©λ‹ˆλ‹€. pre-training된 GPT λͺ¨λΈμ€ 일반적인 μžμ—°μ–΄ 처리 νƒœμŠ€ν¬μ—μ„œ 쒋은 μ„±λŠ₯을 λ³΄μž…λ‹ˆλ‹€.

- Fine-tuning:
Fine-tuning은 pre-trained된 GPT λͺ¨λΈμ„ νŠΉμ • νƒœμŠ€ν¬μ— 맞게 fine-tuningν•˜λŠ” κ³Όμ •μž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ§ˆμ˜μ‘λ‹΅(Question-Answering) νƒœμŠ€ν¬λ₯Ό μˆ˜ν–‰ν•  λ•ŒλŠ”, pre-trained GPT λͺ¨λΈμ„ 질문과 λ‹΅λ³€ 데이터셋에 fine-tuningν•˜μ—¬ ν•΄λ‹Ή νƒœμŠ€ν¬μ— μ΅œμ ν™”λœ λͺ¨λΈμ„ 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. Fine-tuning을 톡해 GPTλŠ” νŠΉμ • νƒœμŠ€ν¬μ—μ„œ 더 높은 μ„±λŠ₯을 λ°œνœ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

- In-context learning:
In-context learning은 GPT λͺ¨λΈμ„ 더 효과적으둜 μ‚¬μš©ν•˜κΈ° μœ„ν•œ 기술 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ¬Έμž₯μ—μ„œ 일뢀 단어가 λ§ˆμŠ€ν‚Ή λ˜μ—ˆμ„ λ•Œ, GPT λͺ¨λΈμ΄ 이λ₯Ό μ˜ˆμΈ‘ν•˜λ„λ‘ ν•™μŠ΅ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 이λ₯Ό 톡해 GPT λͺ¨λΈμ€ λ¬Έλ§₯ 정보λ₯Ό 더 잘 νŒŒμ•…ν•˜κ³ , μžμ—°μŠ€λŸ¬μš΄ λ¬Έμž₯ 생성에 더 μ ν•©ν•œ λͺ¨λΈμ„ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. In-context learning은 pre-training λ˜λŠ” fine-tuning 이후에도 좔가적인 ν•™μŠ΅μ„ 톡해 λͺ¨λΈμ˜ μ„±λŠ₯을 κ°œμ„ ν•˜λŠ” 데 μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€.

gpt 에 λŒ€ν•΄ 같이 κ³΅λΆ€ν•˜λ©° 일을 μ§„ν–‰ν•˜κ³  μžˆλŠ” νŒ€μ›λ“€κ³Ό 회의λ₯Ό ν•˜λ©΄μ„œ, gpt κ΄€λ ¨ μš©μ–΄μ— λŒ€ν•΄ μ„œλ‘œ μ‘°κΈˆμ”© λ‹€λ₯΄κ²Œ μƒκ°ν•˜κ³  μžˆλ‹€λŠ” 점을 μ•Œκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 그도 κ·ΈλŸ΄κ²ƒμ΄, μ €λ₯Ό ν¬ν•¨ν•œ 저희 νŒ€ μΌλΆ€λŠ” 이전에 vision model 을 주둜 ν•˜κ³  μžˆμ—ˆκ³ , μΌλΆ€λŠ” encoder 기반 language model 을 ν•˜κ³  μžˆμ—ˆλŠ”λ°, 각 modality λ³„λ‘œ 같은 λ‹¨μ–΄μ§€λ§Œ μ „ν˜€ λ‹€λ₯Έ 의미λ₯Ό κ°€μ§€λŠ” κ²½μš°κ°€ κ½€ μžˆλ‹€λŠ”κ±Έ μ•Œκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. κ²Œλ‹€ λ‹Ήμž₯에 λͺ¨λ“  단어듀이 learning, training, tuning 같은 이름을 μ“°κ³  μžˆμ–΄ 뭐가 λ°°μš°λŠ”κ±°κ³  μ•ˆλ°°μš°λŠ”μ§€ ν–‡κ°ˆλ¦¬λŠ”κ²ƒ κ°™μŠ΅λ‹ˆλ‹€.

이에 이번 ν¬μŠ€νŠΈμ—μ„œλŠ” ν˜„μž¬ μ‹œμ μ—μ„œ ν•™μŠ΅μ— μ‚¬μš©λ˜λŠ” μš©μ–΄μ— λŒ€ν•΄ 쑰금 μ •λ¦¬ν•˜κ³  λ„˜μ–΄κ°€λ € ν•©λ‹ˆλ‹€ (저희 νŒ€μ—μ„œ λ™μ˜ν•œ μˆ˜μ€€μ—μ„œμš”).

glossary

gpt ν•™μŠ΅κ³Ό κ΄€λ ¨λœ μš©μ–΄λ₯Ό 정리함에 μžˆμ–΄ μ €λŠ” 크게 3가지 ν•™μŠ΅ 방법을 κΈ°μ€€μœΌλ‘œ λ‚˜λˆ„μ–΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€. λͺ¨λΈμ— λŒ€ν•œ μ‚¬μ „ν•™μŠ΅μ— ν•΄λ‹Ήν•˜λŠ” pre-train, μ‚¬μ „ν•™μŠ΅λœ λͺ¨λΈμ„ μ‹œμž‘μœΌλ‘œ μ˜λ„λŒ€λ‘œ ν›ˆλ ¨ν•˜λŠ” fine-tuning, 그리고 prompt μ—μ„œ 상황을 μΈμ‹ν‚€λŠ” in-context learning 세가지 κΈ°μ€€μœΌλ‘œ μ„€λͺ…ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

*μœ„ κ·Έλ¦Ό 및 단어 ꡬ뢄에 λŒ€ν•œ 것은 μ œκ°€ μ΄ν•΄ν•œ λ‚΄μš©μ„ λ°”νƒ•μœΌλ‘œ μž„μ˜λ‘œ λ‚˜λˆˆκ²ƒμœΌλ‘œ κ·Έ μ‹œλŒ€?와 관점?에 따라 λ‹¬λΌμ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

pre-training

GPT μ—μ„œ pre-train 은 졜초의 initialized 된 λͺ¨λΈμ— text λ°μ΄ν„°λ‘œλΆ€ν„° μž…λ ₯된 ν† ν°μ˜ λ‹€μŒ 토큰을 μ˜ˆμΈ‘ν•˜λŠ” λ°©μ‹μœΌλ‘œ ν•™μŠ΅λ˜λŠ” unsupervised learning 을 ν•˜λŠ” ν–‰μœ„λ₯Ό 주둜 이야기 ν•©λ‹ˆλ‹€. μ΄λ•Œ λ‹€μŒν† ν°μ„ μ˜ˆμΈ‘ν•˜λŠ” 방식이기에 unsupervised λ³΄λ‹€λŠ” self-supervised learning 이라고 μ΄μ•ΌκΈ°ν•˜λŠ”κ²Œ 쒀더 μ •ν™•ν•˜κ² μŠ΅λ‹ˆλ‹€. pre-trainμ—μ„œλŠ” 전체 λͺ¨λΈμ˜ weight 에 λŒ€ν•΄ major update λ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ self-supervised learning 은 기본적으둜 GPT 와 같은 생성λͺ¨λΈμ— parametric memory λ₯Ό μ‹¬λŠ” 과정이 λ˜κ² μŠ΅λ‹ˆλ‹€. 일뢀 방법둠에 λŒ€ν•΄μ„œλŠ” pre-train level μ—μ„œLoRA 같은 adapter λ₯Ό 함꼐 μ“°λŠ” 방식도 μžˆμŠ΅λ‹ˆλ‹€ (https://velog.io/@dongyoungkim/GPT-fine-tuning-4.-fine-tuning).

fine-tuning

fine-tuning 은 쒀더 λ³΅μž‘ν•΄μ§‘λ‹ˆλ‹€. GPT-1, GPT-2, GPT-3 κΉŒμ§€ pre-train 을 톡해 κ·Έ μ„±λŠ₯을 ν™•λ³΄ν–ˆλ‹€λ©΄ GPT-3 μ—μ„œ InstructGPT, 그리고 chatGPT κΉŒμ§€λŠ” fine-tuning 기법을 톡해 κ·Έ μ„±λŠ₯을 ν™•λ³΄ν•©λ‹ˆλ‹€. 참고둜 GPT-3(2020) μ—μ„œ chatGPT(2022) κΉŒμ§€ 2λ…„μ΄λž€ μ‹œκ°„μ΄ κ±Έλ Έκ³ , μ£Όμš”ν•œ λ³€ν™”λŠ” fine-tuning μˆ˜ν–‰μ΄λΌκ³  보고 μžˆμŠ΅λ‹ˆλ‹€.

instruction fine-tuning 은 pre-train 된 gpt model에 prompt 와 completion 쌍의 λ°μ΄ν„°λ‘œ supervised leaning 을 μˆ˜ν–‰ν•©λ‹ˆλ‹€. 이λ₯Όν†΅ν•΄ gpt κ°€ 쒀더 μ‚¬λžŒμ΄ μ›ν•˜λŠ” λŒ€λ‹΅μ˜ ν˜•νƒœλ‘œ λ§ν• μˆ˜ μžˆλ„λ‘ 전체 weight λ₯Ό μ—…λ°μ΄νŠΈ ν•©λ‹ˆλ‹€. μ’€ 더 잘 λŒ€λ‹΅ν•˜κ²Œ ν•˜κΈ° μœ„ν•΄ completion 에 step-by-step 의 reasoning 을 λ”ν•œ chain of thought (CoT) λ“±μ˜ 데이터듀도 μ†Œκ°œλ˜λ©΄μ„œ gpt μ—κ²Œ κΈ°λŒ€ν• μˆ˜ μžˆλŠ” λŒ€λ‹΅μ˜ μ„±λŠ₯이 μ‚¬λžŒμ˜ μž…μž₯μ—μ„œ ν™•μ—°νžˆ μ˜¬λΌκ°€κ²Œ λ©λ‹ˆλ‹€. 이 방법은 domain-specific ν•˜κ²Œ zero-shot leaning, 즉 prompt 에 context λ₯Ό 주지 μ•Šλ”λΌλ„ parametric memory 에 μ˜κ±°ν•œ domain response λ₯Ό λ§Œλ“€μˆ˜ μžˆλŠ” 방법이기도 ν•©λ‹ˆλ‹€.

instruction fine-tuning 이후에 gpt κ°€ λ§ν•˜λŠ” λ‚΄μš©μ— μžˆμ–΄ κ·ΈλŸ΄λ“―ν•œ 거짓말을 ν•˜λŠ” λ“±μ˜ hallucination λ¬Έμ œκ°€ λ°œμƒν•˜μ˜€κ³ , 이λ₯Ό λ³΄μ •ν•΄μ£ΌκΈ°μœ„ν•΄ reinforcement learning with human feedback (RLHF) κ°€ λ“±μž₯ν•©λ‹ˆλ‹€. μ΄λŠ” λŒ€λ‹΅μ˜ μ§ˆμ— λŒ€ν•΄ ν‰κ°€ν• μˆ˜ μžˆλŠ” κ°•ν™”ν•™μŠ΅ μ—μ΄μ „νŠΈλ₯Ό μ‚¬λžŒμ΄ κ°€λ₯΄μΉ˜κ³ , 이λ₯Ό 기반으둜 gpt κ°€ μ˜¬λ°”λ₯Έ λŒ€λ‹΅μ„ ν•  수 μžˆλ„λ‘ μœ λ„ν•œ ν•™μŠ΅μœΌλ‘œ, 전체 weight 에 λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μ΄λ£¨μ–΄μ‘ŒμŠ΅λ‹ˆλ‹€. openai 의 μ—¬λŸ¬ λΈ”λ‘œκ·Έ 글을 보면 이 RLHF κ°€ chatGPT λ₯Ό λ§Œλ“œλŠ”λ° 큰 μ—­ν™œμ„ ν•˜μ˜€λ‹€κ³  μ„€λͺ…ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€ (https://openai.com/research/instruction-following, https://openai.com/blog/chatgpt).

Adaptor (p-tuning, LoRA) λŠ” 이전 ν¬μŠ€νŠΈμ—λ„ μ†Œκ°œλ“œλ ΈμŠ΅λ‹ˆλ‹€ (https://velog.io/@dongyoungkim/GPT-fine-tuning-4.-fine-tuning). λ‹€λ§Œ μ΄λŸ¬ν•œ 방법둠듀이 gpt 의 fine-tuning 을 μœ„ν•΄ κ°œλ°œλœκ²ƒμ€ μ•„λ‹ˆκ³ , μ΄ˆκ±°λŒ€ λͺ¨λΈλ“€μ˜ ν™œμš©μ„ μœ„ν•΄ adoption 된 방법둠이라고 μ΄ν•΄ν•˜λŠ”κ²Œ λ§žκ² μŠ΅λ‹ˆλ‹€. 두 방법 λͺ¨λ‘ gpt 에 λŒ€ν•œ base model update λŠ” ν•˜μ§€ μ•Šκ³ , 일뢀 좔가적인 λ ˆμ΄μ–΄μ— λŒ€ν•œ ν•™μŠ΅λ§Œμ„ μ§„ν–‰ν•˜λ―€λ‘œ μ•žμ„œ μ†Œκ°œν•œ instruction fine-tuning λ‚˜ RLHF 만큼의 λ“œλΌλ§ˆν‹±ν•œ ν•™μŠ΅νš¨κ³Όλ₯Ό κΈ°λŒ€ν•˜κΈ΄ μ–΄λ ΅μŠ΅λ‹ˆλ‹€λ§Œ, μ—¬μ „νžˆ 적은 νŒŒλΌλ©”ν„°μ˜ μ‚¬μš©μœΌλ‘œ zero-shot 을 μœ λ„ν• μˆ˜ μžˆλŠ” λ°©λ²•λ‘ μœΌλ‘œ openai, azure, naver 와 같은 μ΄ˆκ±°λŒ€λͺ¨λΈ ν”Œλž«νΌμ„ μš΄μš©ν•˜λŠ” νšŒμ‚¬ μž…μž₯μ—μ„œλŠ” 맀λ ₯적인 λ°©λ²•μž…λ‹ˆλ‹€.

in-context learning

in-context learning 은 λͺ…μ‹œμ  learning (model update) 이 쑴재 ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‹€λ§Œ promptλΌλŠ” ν–‰μœ„λ₯Ό ν†΅ν•œ learning 이 λ°œμƒν• μˆ˜ 있고 이와 κ΄€λ ¨ν•΄μ„œλŠ” 제 ν¬μŠ€νŠΈμ—μ„œ 두차둀에 걸처 μ„€λͺ…ν•˜μ˜€κ³  μ°Έκ³  λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.

zero-shot learning & few-shot learning

pre-train, fine-tuning, in-context learning 은 κ·Έ μˆœμ„œλŒ€λ‘œ 각각 μ΄μ „μ˜ ν•™μŠ΅μ΄ 잘 λ˜μ—ˆμ„λ•Œ λ‹€μŒμ˜ 것도 잘 λ κ²ƒμ΄λΌλŠ” 가정을 가지고 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό μ—­μœΌλ‘œ 말해보면 μ•žμ˜ ν•™μŠ΅λ“€μ΄ 잘 μ•ˆλ˜μ—ˆμ„λ•Œ 쒋은 μ„±λŠ₯을 λ‚΄κΈ°μœ„ν•΄μ„œλŠ” λ’€μ˜ ν•™μŠ΅μ΄ 더 μ—΄μ‹¬νžˆ ν•΄μ•Όν•˜λŠ” κ΅¬μ‘°μ΄κ² μŠ΅λ‹ˆλ‹€. 특히 in-context learning 은 λͺ¨λΈμ˜ μ—…λ°μ΄νŠΈκ°€ μ—†κ³ , μ‚¬μš©μžμ˜ prompt 에 따라 λͺ¨λΈμ˜ μ„±λŠ₯이 λ°œν˜„λ˜λ‹€λ³΄λ‹ˆ κ²°κ΅­ 쒋은 λͺ¨λΈμ€ prompt κ°€ 짧아지고, λ‚˜μœ λͺ¨λΈμ€ prompt κ°€ κΈΈμ–΄μ €μ•Ό ν•˜λŠ” 상황이 λ°œμƒν•©λ‹ˆλ‹€.

μ΄λŠ” zero-shot learning κ³Ό few-shot learning 의 차이λ₯Ό μ„€λͺ…ν•˜κΈ°λ„ ν•©λ‹ˆλ‹€. 쒋은λͺ¨λΈ, i.e. chatGPT, 의 경우 λ‚΄κ°€ ν•˜κ³ μž ν•˜λŠ” λ°”λ₯Ό 이야기해면 μ›¬λ§Œν•˜λ©΄ λ‹€ μ•Œμ•„λ“£μŠ΅λ‹ˆλ‹€. λ²ˆμ—­ν•΄μ€˜, μš”μ•½ν•΄μ€˜ 와 같은 기본적인(?) nlp task μ—μ„œλΆ€ν„°, user μ—κ²Œ input 을 λ°›κ³  이λ₯Ό sqlite 에 μ €μž₯ν•˜λŠ” python streamlit ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€μ–΄μ€˜ 와 같은 λ³΅μž‘ν•œ μš”κ΅¬λ„ μ„€λͺ…없이 잘 ν•©λ‹ˆλ‹€. 즉 zero-shot learning 이 λ©λ‹ˆλ‹€.

pre-train, fine-tuning 이 더 ν•„μš”ν•œ λͺ¨λΈμΌμˆ˜λ‘ in-context learning 의 νš¨κ³Όκ°€ 더 ν•„μš”ν•©λ‹ˆλ‹€. 즉 few-shot learning 이 λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. λ¬Όλ‘  few-shot learning 이 되렀면 μ–΄λŠμˆ˜μ€€μ˜ pre-train, fine-tuning 은 ν•„μš”ν•©λ‹ˆλ‹€ (https://velog.io/@dongyoungkim/GPT-fine-tuning-5.-in-context-learning).

parametric memory & non-parametric memory

parametric memory 와 non-parametric memory λ˜ν•œ 이전에 ν¬μŠ€νŠΈμ—μ„œ μ •λ¦¬ν•΄λ‘μ—ˆμŠ΅λ‹ˆλ‹€ (https://velog.io/@dongyoungkim/OpenAI-GPT-fine-tuning-3.-memory)

parametric memory λŠ” pre-train κ³Ό fine-tuning 의 weight update κ³Όμ •μ—μ„œ ν•™μŠ΅λ˜λŠ” λ‚΄μš©μ„ μ΄μ•ΌκΈ°ν•˜λ©°, inference λ₯Ό 톡해 κ·Έ 기얡을 νšŒμƒν•©λ‹ˆλ‹€.

non-parametric memory λŠ” in-context learning 의 μ‚°λ¬Όλ‘œ, gpt κ°€ parametric memory λ₯Ό μ΄μš©ν•΄ prompt 에 적힌 λ‚΄μš©μ„ ν•΄μ„ν•΄μ„œ μ°Έμ‘°ν•¨μœΌλ‘œ λ°œμƒν•  수 μžˆλŠ” non-parametric 적 reference 의 λ°œν˜„μ΄λΌ ν•˜κ² μŠ΅λ‹ˆλ‹€. 즉 zero-shot learning 의 μƒν™©μ—μ„œλŠ” parametric memory 의 μ˜μ‘΄μ„±μ΄ 크고, in-context learning, 즉 few-shot learning μ—μ„œλŠ” parametric memory 와 non-parametric memory λ‘˜λ‹€ μ‚¬μš©λ  수 μžˆκ² μŠ΅λ‹ˆλ‹€.

단어에 λŒ€ν•΄ μ •λ¦¬ν•˜λ‹€λ³΄λ‹ˆ, gpt 에 λŒ€ν•΄ 곡뢀해야 ν•  것듀이 훨씬 λŠ˜μ–΄λ‚œ λŠλ‚Œμž…λ‹ˆλ‹€. μˆ˜λ°• 겉ν•₯κΈ° μˆ˜μ€€μ΄λΌλ„ gpt 에 λŒ€ν•΄ μ΄ν•΄λŠ” ν•˜κ³  μ‚¬μš©ν•΄μ•Ό 할것 κ°™μ•„ 계속 정리해볼 μƒκ°μž…λ‹ˆλ‹€.

profile
AI professional for science and industry

0개의 λŒ“κΈ€