두 번째 글에서 데이터를 숫자 벡터로 표현하는 임베딩을 통해 서로 관련이 있는 데이터가 비슷한 벡터 공간에 위치하게 되고, 이것이 컴퓨터가 우리가 원하는 것을 이해하는 출발점이라는 것에 대해 말씀드렸습니다. 이번 글에서는 우리가 원하는 것을 이해한 뒤 답변을 생성하는, 생성형 AI의 두뇌인 대규모 언어 모델에 대해 알아보겠습니다.
지금의 생성형 AI 열풍에는 "대규모 언어 모델(Large Language Model, LLM)"이 큰 역할을 했습니다 (딥러닝, 대규모 언어 모델, 생성형 AI의 관계는 첫 번째 글을 참고해 주세요). 혹시 챗GPT에 사용된 모델인 OpenAI의 GPT 시리즈, 구글의 LaMDA, PaLM, 메타의 LLaMA에 대해 들어보셨나요? 바로 이 대규모 언어 모델의 예시들입니다. 그렇다면 우선 언어 모델이 무엇인지부터 살펴보겠습니다.
언어 모델은, 데이터를 학습하는 과정에서 데이터의 패턴과 구조를 익히고, 그 결과 주어진 텍스트가 있을 때 다음에 어떤 텍스트가 나오는 게 자연스러운지 예측할 수 있는 모델입니다 (수학적으로 표현하면, 데이터를 학습하는 과정에서 문장을 구성하는 단어들이 얼마나 그럴듯한지 확률을 계산해서 통계모델을 만드는 것입니다. 그리고 생성형 AI가 이 통계 모델을 이용해서 텍스트의 일부가 주어지면 제일 확률이 높은 다음 텍스트를 생성할 수 있는 것입니다). 마치 우리가 영어를 배우는 과정과도 비슷하게 생각할 수 있습니다. 영어로 작성된 다양한 글을 읽고, 소리로도 들으면서, 이 문장은 말이 되는 문장이구나, 이 단어는 이런 단어들과 같이 쓰이는구나 등 언어의 패턴을 파악할 수 있듯이, 언어 모델은 학습 데이터를 통해서 언어의 패턴을 파악하고, 그럴듯하게 말을 할 수 있는 것입니다.
다음으로는, 언어 모델이 어떻게 대규모 언어 모델로 발전했는지에 대해 간단히 살펴보겠습니다. 초창기의 신경망 언어 모델은 순환 신경망(Recurrent Neural Network, RNN)을 기반으로 합니다. 입력 데이터를 순서대로 차례차례 신경망 모델에 넣어주고, 이 데이터가 신경망을 통과하면서 데이터의 패턴과 구조를 익힌 뒤 신경망의 끝부분에서는 학습한 내용을 바탕으로 예측값을 내놓는데, 정답과의 오차를 다시 돌려보내는 과정을 반복해서 이 오차를 기준치 아래로 줄이는 모델 파라미터(가중치(weight)와 편향(bias))를 찾는 방식으로 학습이 진행됩니다. 이때 순환 신경망이라는 이름이 붙은 이유는, 데이터를 순차적으로 처리하는 경우 이미 먼저 처리되어서 지나가 버린 정보를 같이 참고하는 것이 정확한 예측에 유용한 경우가 있기 때문에, 이미 지나가 버린 입력 데이터의 정보를 저장하는 순환 구조가 있다는 의미로 이런 이름이 붙었습니다. 즉 기억력이 좋은 모델로 주어진 데이터의 문맥을 이해하면서 신경망을 학습하고, 다음에 올 텍스트를 예측할 수 있는 장점이 있습니다.
그리고 이 순환 신경망 기반의 언어 모델은 2개의 순환 신경망으로 구성된 seq2seq 모델로 발전하게 됩니다. 인코더와 디코더 두 가지 부분에 각각 순환 신경망 하나씩을 가지고 있는 구조인데, 인코더는 입력 데이터를 순차적으로 학습해 나가면서 입력 데이터의 모든 정보를 하나의 임베딩 벡터로 압축하는 역할을 하고, 디코더는 이렇게 인코더에서 생성된 임베딩 벡터를 전달받아서 다음 텍스트를 예측하는 역할을 합니다. 이때, 입력 데이터가 길어질수록 하나의 임베딩 벡터로 압축하는 과정에서 잃게 되는 정보가 많기 때문에, attention 메커니즘이라는 것이 등장합니다. Attention은 주의/주목으로 해석할 수 있는데, 주어진 텍스트의 다음에 올 텍스트를 생성할 때, 전체 입력 데이터를 한꺼번에 보되, 중요한 입력 데이터에 더 많은 주의를 기울이겠다는 것이 그 핵심입니다. 어떤 부분에 주의를 기울일지는 학습 과정에서 알게 됩니다 (수학적으로는, 입력 데이터 전체를 하나의 임베딩 벡터로 압축하면 기억력의 한계로 정보를 잃어버리기 때문에, 입력 데이터를 순차적으로 넣어줄 때 나오는 벡터를 전부 고려하되 주의를 기울이고 싶은 곳에 높은 가중치를 둬서 평균을 하는 것입니다).
그리고 드디어 2017년, 아주 중요한 트랜스포머가 등장합니다. 트랜스포머를 세상에 알린 attention is all you need라는 논문 제목도 유명한데요, attention 메커니즘만 있으면 굳이 인코더-디코더 구조에서 순차적으로 데이터를 처리할 필요가 없기 때문에 순환 신경망 구조는 필요 없다는 것을 의미합니다. 트랜스포머가 중요한 이유는 바로 병렬화에 있는데요, 순차적으로 입력 데이터를 보는 게 아니라 한 번에 볼 수 있기 때문에 대규모 학습 데이터를 병렬 계산하는 것이 가능해졌고, 따라서 데이터 처리 시간이 대폭 단축됨으로써 대규모 언어 모델이 등장하는 촉매 역할을 했습니다. 첫 번째 글에서 생성형 AI는 어마어마한 양의 데이터를 학습한 모델이 학습한 내용을 기반으로 답변을 생성해 내는 인공지능의 한 종류라고 했는데, 인터넷의 여러 출처에서 가져온 거대한 양의 데이터를 학습할 수 있는 기반을 마련한 것이 바로 트랜스포머인 것입니다. 이 글을 쓰던 도중 2007년에 개봉한 트랜스포머 영화를 보다가 우연히 옵티머스 프라임이 인터넷을 통해서 지구의 언어를 배웠다고 말하는 다음 장면을 발견했는데, 신기하지 않나요?
출처: https://getyarn.io/yarn-clip/27e07147-c423-4e16-8c4b-b457218226c8
다음으로는 트랜스포머를 활용해서 거대한 양의 데이터를 학습한 언어 모델의 대표 주자인 BERT(Bidirectional Encoder Representations from Transformers)와 GPT(Generative Pre-trained Transformer)에 대해 간단히 살펴보겠습니다. 이름에 있는 T는 둘 다 트랜스포머를 의미하고, 둘 다 언어 모델이라서 주어진 텍스트를 기반으로 다음 텍스트를 예측하는 역할을 하는데, 모델이 학습되는 방식에 차이가 있습니다. BERT의 경우, 주어진 문장이 있을 경우 중간에 위치한 단어를 가리고 가려진 단어의 앞뒤에 존재하는 문맥을 통해 이 단어를 예측하는 방식으로 학습을 하는 반면, GPT는 주어진 텍스트의 끝부분을 가리고 이 단어를 예측하는 방식으로 학습을 하기 때문에 특히 다음에 올 텍스트 생성에 강점을 보입니다.
대규모 언어 모델이 공부를 많이 해서 똑똑하다는 것은 알았는데, 기존의 모델들과는 어떤 차이가 있는 걸까요? 기존 모델들은 특정한 문제를 풀기 위해 잘 정돈된 학습 데이터로 학습을 해야 하고, 그 외의 새로운 문제를 푸는 것은 불가능에 가깝습니다. 그래서 풀고자 하는 문제가 많아지면 모델의 개수도 증가해야 합니다. 반면 대규모 언어 모델을 사용할 경우, 큰 규모의 범용 언어 모델이 특정한 문제를 염두에 두지 않고 거대한 양의 일반적인 데이터를 미리 학습했기 때문에, 다양한 문제 해결에 적용할 수 있습니다. 기초가 되는 하나의 모델을 이용해서 다양한 문제를 푼다는 의미에서 이 모델을 파운데이션 모델(foundation model)이라고 부르기도 합니다.
이번 글에서는 언어 모델이 어떻게 대규모 언어 모델로 발전했는지에 대해 알아보았습니다. 세 줄로 요약하면 다음과 같습니다.
- 언어 모델은 학습 데이터를 통해서 데이터의 패턴을 익힌 뒤, 주어진 텍스트가 있을 때 다음에 올 텍스트를 예측하는 역할을 합니다.
- 트랜스포머의 등장으로 방대한 양의 학습 데이터를 병렬로 계산할 수 있게 되면서 대규모 언어 모델이 등장했습니다.
- 이를 통해, 어마어마한 양의 데이터를 미리 학습한 대규모의 범용 언어 모델(파운데이션 모델)을 이용해서 다양한 문제를 해결하는 새로운 방식이 등장했습니다.