본문 바로가기

Large Language Model

Large Language Model의 역사

   2003년에는 Neural Network 기반의 언어 모델이 발표되었습니다. 이전에는 context로 다음 token의 확률을 계산하는 모델로 요즘 모델들의 근간이 되는 모델입니다. 10년간의 공백후 word2vec이 등장했습니다. skipgram과 cbow를 이용해서 word의 representation을 학습을 합니다. 의미가 가까우면 가까운 공간에 의미가 멀면 먼 공간에 위치 하도록 학습을 합니다. 문맥상의 token과 유사한 token으로 임베딩을 합니다.

  skipgram은 어떤 token으로 주변에 어떤 token이 있는 지를 예측하는 모델이고, cbow는 주변 token으로 중간 token으로 예측을 하는 방법입니다.

  2015년에는 문장을 embedding 하는 것을 학습하는 방법인 Skip-thought Vectors가 등장합니다. 현재 문장으로 다음 문장을 맞추는 현재 문장으로 이전 문장을 맞추는 task에 사용합니다. 해당 방법의 핵심은 유사한 문장은 유사한 것들 끼리 뭉치게 되는 방법을 사용해서 예측을 하는 방법입니다.

 

2017년도에 transformer가 출시되었고, 이후 2018년도에는 Bert 모델이 출시합니다. Bert 모델의 경우 transformer의 enco der 구조를 사용한 Bi-directional LM을 제안합니다. 또한, MLM(Mask Language Model)을 처음으로 제안 했습니다. MLM 방법은 어떤 token을 가리고 주변 문맥이 주어 졌을 때 가려진 token을 예측하도록 학습을 합니다. MLM 방법을 사용했습니다. 단어 embedding을 조금 더 잘 하기위해서 사용했다고 합니다. NSP는 [CSP] 문장1 [SEP] 문장2 CLS 위치에서 2개의 문장이 이어지는 next sentence를 맞추는 task에서 사용합니다.

 

2018년도에는 GPT-1의 등장합니다. GPT-1은 이전 token으로 다음 toke을 예측하는 모델입니다.

 

2019년도에는 RoBERTa가 출시 됩니다. 해당 모델은 bert 모델의 성능 개선을 한 모델입니다. 긴 문장에 대해서 MLM 만 가지고 학습을 수행 했고, representation 학습이 조금더 잘 되게 학습을 진행 했다고 합니다.

 

bert, gpt-1, RoBERT는 Representation 학습을 하는 모델들이고, pre-trained가 되는 모델들입니다.

 

2019년도에 출시한 GPT-2의 경우, GPT-1과 동일합니다. 이전 token으로 다음 token을 예측하는 모델입니다. GPT-2가 등장하면서 ICL(Incontext Learning)의 시작이 되었습니다. ICL은 새로운 task가 주어 졌을 때, 그 task에 대해서 fine tuning으로 문제를 해결하는 것이 아닌 문제를 Input Prompt에 서술해서 gpt-2가 prompt의 내용만을 보고 문제를 해결 할 수 있도록 학습하는 것을 의미합니다.

 

2019년도에는 T5도 출시합니다. 해당 모델은 입력의 일부분을 지우거나 위치를 바꾸거나 한 문장을 원래의 의미로 다시 생성하도록하는 모델입니다. T5의 특이한 점은 모든 Task를 자연어로 풀게 했다는 점입니다.

 

2019년도에는 Bert가 등장합니다. 이 Bert의 경우 transformer의 Encoding - Decoding 2개의 구조를 사용합니다. Bert 모델 또한 입력 Context를 지우거나 순서를 바꾸어서 원래 context를 생성하도록 하는 task입니다.

 

2019년도에 MTDNN 모델이 등장합니다. MTDNN은 Bert 모델과 유사한 모델입니다. Language 모델에 대한 학습 방법에 대해서는 제안은 하지 않았지만, down stream task에서 조금 더 잘 예측을 했덜라 라는 논문입니다.

 

2020년도에는 ELECTRA가 등장합니다. 해당 모델은 어떤 문장이 있고, 그 해당 문장의 단어들을 generator를 사용해서 다른 단어로 대치 해서 discriminator로 단어의 위치를 찾아 내는 task입니다.

 

2020년도에 REALM이 출시 합니다. 해당 모델은 단어들을 가리고, 문맥과 관련된 retriever해서 문맥에 가려진 단어를 찾게하는 task입니다.

 

 

2020년도에는 GPT-3가 출시됩니다. GPT-3의 경우, 이전돠 동일하게 이전 token을 사용해서 다음 token을 예측하는 Task 학습하는 모델입니다. Incontext Learning에는 zero-shot, few-shot이라는 방법이 있습니다. zero-shot의 경우, 모델에게 예제를 조금도 주지 않았을 경우이고, few-shot의 경우, 몇 개의 예제를 주었을 경우에 대해서 새로운 문제에 대해서 해당 tas k를 푸는 방법을 사용했습니다.

 

2021년도에는 ExT5가 출시 됐고, 2022년도에는 PaLM이 출시 되었습니다. PaLM은 MoE를 사용했는데 해당 방법은 모델의 스케일링을 크게해주는 방법입니다.

 

2022년도에는 가장 유명한 chatgpt가 출시되었고, 2023년도에 GPT-4가 등장합니다. GPT-4는 이전 모델에 비해서 추론 능력이 향상되었으며, 멀티 모달 형식의 학습을 진행하였습니다. 2023년도에는 PaLM2 모델이 출시 되어습니다. 기존의 PaL M을 조금더 최적화해 출시된 모델입니다.

 

chatgpt는 fine-tuning이 필요 없이 모든 문제를 풀 수 있는 모델로 2022년도에 출시가 되었고, 해당 모델의 학습 방법의 으로 RLHF를 사용했습니다. 해당 방법은 강화 학습을 적용해서 사람의 의도와 일치하는 모델을 출시 할 수 있게 되었다고 합니다.

 

2023년도에는  GPT-4가 출시되었고 해당 모델은 GPT-3에 비해서 추론능력의 향상 + 멀티모달 학습을 통해서 이미지내서 사람이 몇명인지, 어떤 생동을하고 있는지에 대해서도 예측이 가능하게 되었습니다.

 

구글에서도 PaLM2를 출시했습니다. 기존에 PaLM 모델을 조금 더 최적화해서 출시했습니다.

 

이어서 Bert 계열에 대해서 간단하게 알아보겠습니다.

Bert transformer의 encoder 구조만을 사용한 모델입니다. 

Bert 모델은 어떤 문장이 N개의 카테고리중  무엇인지 맞추는 Multiclass classification task에 사용하거나, 입력 받은 문장에서 문장에서 가르키는 위치나 지명을 분류하기 위한  Token classification task에 사용하거나 sentence encoder를 사용해 fixed length setence embeding을 만들기 위해서도 사용을합니다.

 

Bert Model의 구조

 

    위의 사진에서 (a)는 2개의 문장이 주어졌을 때, 두 문장의 관계를 분류할때 사용을 합니다. 예를 들면 2 문장의 유사도를 구해서 2개의 문장의 의미적으로 비슷한지 비슷하지 않은지에 대한 분류도 할 수도 있습니다. (b)의 경우, Single Sentence가 주어졌을 때, 그 문장의 Class를 분류하는 task입니다. (c)는 질문에 대한 답이 입력 문장에 어느 위치에 있는지 찾는 QA task에 사용하는 bert 모데입니다. (d)는 어떤 문장에서 사람 이름의 범위는 어디서부터 어디까지인지, 지명의 범위는 어디서 부터 어디까지인지를 분류하는 task에서 사용하는 bert 모델입니다.

 

Bert

          bert 모델은 간략하게 이렇게 표시할 수 있습니다. bert 모델은 문장이나 단락을 입력을 받아서 fixed length vector로 encoding한 vector를 index화 시켜서 검색에 사용을합니다. 즉, 많은 문장과 단락들을 setence - embeding model을 통해서 encoding 된 값들을 저장하고, user로 부터 Query z가 왔을 때, z도 encoding후에 embedding 공간(latent space)에서 가장 유사한 정답을 찾아서 정답과 관련된 단락과 문장을 찾습니다.

 

  위의 내용을 조금 더 간단하게 표현하면, bert 모델은 문장 A와 문장 B를 입력 받은 후에 setence - embeding model을 통해서 vector u와 v 유사도에 대해서 학습을 합니다. 학습된 bert 모델의 encoder를 사용하면, 문장 A와 문장 B의 유사도를 구한 parameter를 사용해서 user가 입력한 문장을 학습한 bert 모델이 잠재공간에서 가장 유한 문장을 찾아 답을 해주는 것이라고 생각하시면 됩니다.

 

그다음 알아볼 계열은 GTP 계열입니다. GPT 계열의 모델은 transformer의 Decoder 구조만을 사용을합니다. GPT 모델은 Generation task 생성 task에 사용을하며, fine-tuning을 위한 데이터 셋도 neural LM을 학습하듯 학습을 합니다. GPT 모델의 학습의 특이점은 바로 Meta-Learning의 Zero-Shot, Few-Shot을 적용해서 학습을 했다는 점입니다.

 

GPT 모델의 학습은 Meta-Learning 학습을 통해서 prompt에대한 응답을 생성하도록 학습을 진행합니다. 사실 GPT 모델의 학습 방법은 매우 단순합니다. 이전의 입력 값으로 다음에 올 text를 예측하는 방식입니다.

 

이러한 GTP 계열에 chatgpt는 가장 상업적으로 성공한 모델입니다.

chatgpt

 

다음 알아볼 모델은 T5 모델입니다.

T5 모델은 classification task나 Generation task에도 사용이되고, zero-shot, few-shot learning을 사용한 학습이 가능합니다. T5의 모델의 특징은 많은 문제를 자연어로 주어졌을 때, 정답을 자연어로 생성을 해준다라는 특징이 있습니다.

요약, 번역, 등등 아래의 사진을 통해서 다양한 task에 사용이 사능하다는 것을 알 수 있습니다.

T5

 

또한, LLM 학습 방법의 트랜드 중에 RLHF(Reinforcement Learning from Human Feedback)이 있습니다.

 

RLHF

RLHF에 대해서 간단하게 살펴보면, step 1에서는 prompt에 대한 답변을 사람이 작성함으로 labeling을 합니다. 해당 데이터 셋을 demonstration data라고 부르며 해당 데이터 셋으로 SFT (Supervised Fine Tune) 학습을 진행합니다. 

 

step2에서는 학습한 SFT 모델로 어떤 prompt에 대한 응답을 만들게 합니다. 이때 답변에 대한 ranking을 매기게 되는데 해당 작업을 사람이 하게됩니다. 이 랭킹 데이터 셋을 reward 모델을 학습을 하게됩니다.

 

여기서 reward 모델은 좋은 응답에 대해서는  +1 좋지 않은 응답에 대해서는 -1을 주게됩니다.

 

step3에서는 reward 모델과 SFT 모델을 사용해서 강화학습을 진행합니다. 따라서, SFT가 생성한 응답을 reward 모델이 평가하고 SFT 모델은 최대한 좋은 응답을 생성하도록 학습을 하게됩니다.

 

RLHF 다음에 유행하는 학습 방법은 RLAIF 학습 방법입니다. 아래 그림은 RLAIF의 학습 방법입니다. RLAIF의 학습 방법은 RLHF에서 사람이 해주던 것을 잘 학습된 AI 모델로 대체 한 학습 방법입니다.

RLAIF

위 학습 방법인 RLHF의 경우, Damonstration data를 만들고, reward 모델을 만들기 위해서 사람이 필요한 경우가 존재 합니다. 사람들이 필요한 경우를 RLAIF는 AI로 대체해서 학습을 해보자고 해서 등장한 학습 방법입니다. 우선 RLAIF의 학습일 하기 위해서는 Helpful RLHF로 학습한 모델이 필요합니다. 즉, chatpgt와 같이 prompt에 대해서 퀄리티가 있고, 적절한 답을 생성하는 모델이 있다고 가정합니다.

 

우선, Helpful RLHF 모델로 prompt에 대한 나쁜 응답을 하도록 유도(정치적인, 성적인, 욕 등등)합니다. 그리고 나서 나쁜 응답에 대한 비평(이 응답은 잘 답변을 했어, 이 응답은 잘 답변하지 못했어)을 모델 스스로 하도록 수행합니다. 해당 비평을 기반으로 질문에 대한 윤리적으로도 좋은 응답을 생성하도록합니다.

 

나쁜 응답을 하도록 유도 -> Reponse

응답에 대한 비평 -> Critique

윤리적으로도 좋은 응답을 생성 -> Revision

 

이런 방법으로 생성된 Revision 데이터 셋을 가지고 Helpful RLHF 모델을 재학습 시킨 모델을 SL-CAL Model이라고 합니다. 해당 모델은 Helpful하지만 좋은 답변을 하는 모델이 됩니다.

 

SL-CAL Model이 나쁜 말을 생성하도록 공격을합니다. 모델이 생성된 응답을 모델의 Constitutional을 기준으로 어떤 응답이 좋은 응답인지 나쁜 응답인지를 판단하게 됩니다. 즉, AI 모델이 SL-CAL Model에 응답에 ranking을 매긴 ranking 데이터 셋이 생성이됩니다. 해당 ranking 데이터 셋으로 Perference Model(PM)을 만듭니다.

 

이 PM 모델과 SL-CAL 모델을 사용한 RL 학습을 하게 되고, 최종적으로 RL-CAL Model을 얻는다고 합니다.

 

해당 학습 방법은 인간의 개입을 최대한 줄이고, 인간이 필요했던 부분에 AI를 투입해서 학습하는 방법입니다.

 

최근 OpenSource에서도 많은 모델들이 공개되었습니다.

영어 기반의 모델인 Meta와 pythia가 공개되었고, pythia를 기반으로 open Assistant가 만들어 졌습니다. 스탠포드에서는 Meta에 라마 모델을 Instraction fine tune을 통해서 chatgpt와 유사한 모델인 알파카를 만들었고, Vicuna는 라마에 share gpt라는 데이터를 받아서 라마 모델에 학습했더니 성능이 좋았다라는 오픈소스도 있습니다.

 

한국어 기반으로는 kopolyglot을 사용해서 학습한 koalpaca도 있습니다.

 

실세로 Vicuna의 경우, 13B의 모델로 거대 모델인 Bard와 1%정도의 차이만 보이고 있고, ChatGPT와는 8%정도의 차이만 보이고 있을 정도로 성능이 좋습니다.

 

opensource 모델들도 chatgpt의 성능을 많이 따라 잡은 것을 알 수 있습니다.

 

이번글은 여기까지이면 긴글 읽어 주셔서 감사합니다.

'Large Language Model' 카테고리의 다른 글

Numbers every LLM Developer should know  (0) 2023.08.07
LLaMA Open and Efficient Foundation Language Models  (1) 2023.07.19
Language Model are Few-Shot Learners  (0) 2023.07.16
LLM 트랜드-02  (0) 2023.07.02
LLM 트랜드-01  (0) 2023.06.25