LLM 기본2 - ChatGPT가 나오기까지

1. RNN

 

딥러닝이나 머신러닝 분야에서 텍스트는 단어가 연결된 문장 형태의 데이터를 일컫는다.

 

이처럼 작은 단위의 데이터가 연결되고 그 길이가 다양한 데이터의 형태를 시퀀스(sequence)라고 한다.

 

텍스트, 오디오, 시계열같은 데이터는 sequence이다.

 

역사적으로 이러한 시퀀스 데이터를 처리하기 위해 RNN이나 transformer의 2가지 아키텍처로 대표되는 다양한 모델을 사용했다.

 

transformer가 개발되기 전에는 RNN을 활용해 텍스트를 생성했다.

 

etc-image-0

 

 

RNN은 위 그림같이 입력하는 텍스트를 순차적으로 처리해서 다음 단어를 예측한다.

 

특징으로는 모델이 하나의 잠재 상태 hidden state에 지금까지 입력 텍스트의 맥락을 압축한다는 점이다.

 

첫번째 입력인 '검은'이 모델을 통과하면 hidden state에 '검은'의 정보가 쌓이고,

 

두번째 입력인 '고양이가'가 모델을 통과하면 '검은', '고양이가'의 정보가 누적된다.

 

입력이 늘어나면서 hidden state에 이런식으로 입력 텍스트의 맥락이 압축된다.

 

etc-image-1

 

 

RNN이 '물을' 다음의 단어를 예측하기 위해, 앞에서 나온 맥락인 '검은 고양이가 밥을 먹고 물을'을 순차적으로 처리해

 

하나의 hidden state로 만든다.

 

그 hidden state를 통해 RNN은 다음 단어로 '마신다'가 나온다고 예측하게 된다.

 

이 방식은 여러 단어로 구성된 맥락을 하나의 잠재 상태에 압축하기 때문에 메모리를 적게 사용한다는 장점이 있다.

 

또한 다음 단어를 예측할때 지금까지 계산을 통해 만들어진 잠재 상태와 입력 단어만 있으면 되기 때문에 다음 단어를 빠르게 생성할 수 있다.

 

하지만 순차적으로 입력되는 단어를 하나의 잠재 상태에 압축하다 보니 먼저 입력한 단어의 의미가 점차 희석되며,

 

입력이 길어지는 경우 의미를 충분히 담지 못하고 성능이 떨어진다는 문제가 있다.

 

2. transformer

 

2017년에 등장한 transformer 아키텍처는 RNN의 순차적인 처리 방식을 버리고,

 

맥락을 모두 참조하는 attention 연산을 사용해 RNN의 문제를 대부분 해결했다.

 

etc-image-2

 

 

RNN이 하나의 hidden state로 맥락을 압축하던 것과는 달리,

 

맥락 데이터를 그대로 모두 활용해 다음 단어를 예측한다는 부분이 다르다.

 

'마신다'라는 다음 단어를 예측할 때, 그 이전의 맥락인 '검은', '고양이가', '밥을', '먹고', '물을'의 관계를 모두 계산한다.

 

transformer 아키텍처는 맥락을 압축하지 않고, 그대로 활용하므로 성능을 높일 수 있으나,

 

입력 텍스트가 길어지면 맥락 데이터를 모두 저장하고 있어야 하므로 메모리 사용량이 증가하게 된다.

 

또한 매번 다음 단어를 에측할 때마다 맥락 데이터를 모두 확인해야하므로 시간도 증가한다.

 

성능이 높아지는 대신 무겁고 비효율적인 연산을 사용하게 된다.

 

이처럼 많은 연산량이 필요하다는 단점이 있지만 성능이 좋고 순차적으로 처리하는 RNN과는 다르게

 

병렬 처리를 통해 학습 속도를 높일 수 있어서 대부분의 LLM이 transformer 아키텍처를 기반으로 한다.

 

etc-image-3

 

 

성능과 효율성을 그래프로 배치하면 위와 같다.

 

점선으로 표현된, 성능이 높으면서도 효율적인 아키텍처가 꾸준히 연구되고 있으나, 대부분 transformer의 성능에 미치지 못했다.

 

그래도 최근 뛰어난 성능과 효율성을 갖춘 아키텍처들이 등장하고 있는데 Mamba가 대표적?

 

 

3. GPT로 보는 모델 크기와 성능의 관계

 

2018년 transformer를 활용한 BERT와 OpenAI의 GPT가 등장하면서 자연어 처리 분야의 주류 모델 아키텍처는 transformer가 되었다.

 

그리고 다음 단어를 예측하는 언어 모델링이 사전 학습 방식으로 자리 잡아 더 큰 모델을 학습시킬 수 있는 기반이 마련됐다.

 

이런 흐름 속에서 OpenAI는 더 큰 모델을 학습시켜나가며 자연어 이해 및 생성 능력을 높이고자 했다.

 

etc-image-4

 

 

2018년 1억 1700만개의 파라미터를 사용하는 GPT-1 이후 

 

2019년 15억개의 파라미터를 사용하는 GPT-2

 

그리고 2020년 1750억개의 파라미터를 사용하는 GPT-3가 등장했다.

 

OpenAI는 모델 구조에는 큰 변경 없이 오직 모델과 학습 데이터셋의 크기만 키웠는데 이렇게 간단한 접근법만으로도

 

성능이 크게 높아져 GPT-3는 사람의 언어 생성 능력과 유사하다는 평가를 받았다.

 

 

왜 모델의 크기가 커지고 학습 데이터가 많을수록 성능이 높아지는가?

 

언어 모델이 학습 데이터를 압축한다는 관점에서 본다면 이 사실을 더 직관적으로 이해할 수 있다.

 

언어 모델의 경우 학습 데이터와 언어 모델의 결과가 모두 '생성된 언어'이다.

 

따라서 언어 모델이 학습하는 과정을 학습 데이터를 압축하는 과정으로 해석할 수 있다.

 

여기서 말하는 압축은 우리가 일상생활에서 사용하는 zip파일을 만들 때처럼 무손실 압축을 의미하는 것은 아니며,

 

공통되고 중요한 패턴을 남기는 손실 압축이다.

 

etc-image-5

 

 

메타의 라마2 오픈소스 모델은 10TB의 텍스트를 학습해, 140GB 크기의 모델이 된다.

 

학습 데이터 대비 약 1.4% 정도의 작은 모델에 학습 데이터가 가지고 있던 텍스트 생성의 패턴을 압축하는 것이다.

 

이러한 관점에서 모델이 커지면 학습 데이터가 갖고 있는 언어 생성 패턴을 더 많이 학습할 수 있기 때문에 

 

모델 성능이 높아진다고 이해할 수 있다.

 

하지만 모델이 계속해서 커진다고 성능이 높아지지는 않고 학습 데이터의 크기가 최대 모델 크기의 상한이라고 볼 수 있다.

 

예를 들어 학습 데이터의 크기가 100GB일 경우, 모델의 크기를 100GB보다 더 키운다고 하더라도 모델 성능이 높아지기를 기대하기는 어렵다.

 

 

4. ChatGPT의 등장

 

GPT-3는 그저 사용자의 말을 이어서 작성하는 능력밖에 없었지만,

 

ChatGPT는 GPT-3와는 다르게 사용자의 요청사항을 이해하고, 그에 맞춰 답변을 생성한다는 점에서 엄청난 화제가 되었다.

 

OpenAI의 'Training language models to follow instructions with human feedback'라는 논문에서

 

supervised fine tuning(SFT)와 RLHF(Reinforcement Learning from Human Feedback)이라는 기술을 발표했다.

 

이 기술을 통해 ChatGPT는 그저 사용자가 한 말 다음에 이어질 말을 생성하는 것이 아니라,

 

사용자의 요청을 해결할 수 있는 텍스트를 생성하게 되었다.

 

 

5. 정렬(alignment)

 

LLM이 생성하는 답변을 사용자의 요청 의도에 맞추는 것을 정렬(alignment)이라고 한다.

 

사용자가 LLM의 답변에서 얻고자 하는 가치를 반영해 LLM을 학습해서 LLM이 사용자에게 도움이 되고 가치를 전달할 수 있도록 하는 것

 

SFT는 정렬을 위한 가장 핵심적인 학습 과정이고, 언어 모델링으로 사전 학습한 언어 모델을 지시 데이터(instruction dataset)으로 추가 학습하는 것을 뜻한다.

 

이때 지시 데이터셋은 사용자가 요청 또는 지시한 사항과 그에 대한 적절한 응답을 정리한 데이터셋

 

OpenAI는 수많은 데이터 작업자를 고용해 LLM이 받을 법한 질문과 그에 대한 답변을 작성하게 했고 이 데이터를 활용해 SFT를 수행했다.

 

그 결과 ChatGPT와 같이 사용자의 요청에 맞춰 응답하는 모델을 만들 수 있었다.

 

하지만 사용자의 요청에 맞춰 응답하는 것이 항상 옳은 것은 아니다.

 

예를 들어 폭탄이나 약물을 제조하는 방법을 묻는 경우, AI가 정보를 제공해 준다면 사용자가 결국 위험해질 수 있다.

 

또한 같은 내용의 답변이라도 사용자가 더 이해하기 쉽게 생성한다거나

 

인종, 성별 등에 차별적인 표현을 사용하지 않는 등 다양한 관점에서 사용자에게 도움이 되도록 노력해야한다.

 

OpenAI에서는 두 가지 답변 중 사용자가 더 선호하는 답변을 선택한 데이터셋을 구축했는데,

 

이를 선호 데이터셋(preference dataset)이라고 한다.

 

선호 데이터셋으로 LLM의 답변을 평가하는 리워드 모델(reward model)을 만들고 

 

LLM이 점점 더 높은 점수를 받을 수 있도록 추가학습하는데, 이때 강화학습을 사용하므로 이 기술을 RLHF라고 한다.

 

RLHF는 사람의 피드백을 활용한 강화 학습이다.

728x90