제목을 더 자극적으로 ‘ChatGPT는 왜 동작하는가?”로 할 수도 있지만 어차피 ChatGPT도 한 때고 새로운 LM이 나와서 이번이 진짜 AGI다라고 또 주장할 테니 중립적으로 LM은 어떻게 동작하고 왜 LLM이 작동하는가라고 정했다. 이 글은 기술적으로 LM이나 GPT/LaMDA 등을 다루지 않고, 단지 일반 독자의 이해를 돕기 위한 글이다. 개념적으로 설명한 것이니 기술적으로 완전히 틀렸을 수도 있다.
Wikipedia는 Language Model (LM, 언어모델)을 ‘a probability distribution over sequences of words’라고 정의한다. 이를 좀 쉽게 설명하면 어떤 단어 (또는 문장)이 주어지면 바로 다음에 올 단어(의 확률)를 예측하는 거다. ‘I am a ___’까지 오며 다음에 boy가 올지 student가 올지를 확률적으로 계산해서 문장을 완성하는 거라 생각하면 된다. 단어 A 다음에 올 단어 B는 결국 확률값이 가장 큰 단어가 놓인다. 고전적인 알고리즘을 좀 공부한 사람이라면 기시감을 느낄 건데, 단어 word를 상태 status로 치환하면 ‘현재 상태가 주어졌을 때 다음에 올 상태는 무엇인가’로 문장을 바꿀 수 있고, 이는 전형적인 마코프 체인 Markov chain을 설명한 거다. 마코프 체인은 이전의 모든 상태를 무시하고 오직 현재 상태만을 고려해서 다음의 상태를 확률적으로 예측한다. 확률값이 가장 높은 다음 상태로 전이 transition 할 수도 있지만, 그냥 확률적으로 roulette을 돌려서 임의의 상태로 전이할 수도 있다.
프로그래밍이나 데이터 구조, 또는 (AI가 아닌 일반) 알고리즘을 공부한 사람이라면 가장 먼저 Greedy Algorithm이란 걸 배운다. Greedy는 말 그대로 근시안적으로 현시점에서 가장 보상을 많이 받는 것을 선택하는 휴리스틱이고, 많은 문제에서 꽤 잘 작동한다. 출발과 끝이 있는 그래프에서 가장 짧은 거리 shortest path를 찾는 문제에서 greedy algorithm은 현재 노드에서 거리가 가장 짧은 다음 노드를 선택하고, 그 노드에서 또 가장 짧은 다음 노드를 계속해서 선택한다. 이 알고리즘이 꽤 잘 작동하지만 전체 그래프 구조를 볼 수 있는 사람이라면 항상 최적해를 도출하지는 않는다는 걸 알 수 있다. 예를 들어, A에서 Z로 가는 중간에 B, C, D 세 개의 노드가 패래럴하게 있다고 치자, A에서 {B, C, D}까지 거리가 5, 10, 15라면 greedy algorithm은 B를 우선 선택한다. 그런데 만약 {B, C, D}에서 Z까지의 남은 가장 짧은 거리가 100, 70, 30이라면 A-B-Z (105)보다 D를 선택한 A-D-Z (45)가 가장 짧은 거리임을 알 수 있다. Greedy 휴리스틱이 오직 다음 노드만을 확인해서 발생한 문제이니 개선된 알고리즘은 two-step ahead 방식, 즉 다음 노드뿐만 아니라 그다음 노드까지 검토해서 진로를 결정한다. 애초의 greedy 방식보다는 더 나은 결과를 얻겠지만 여전히 글로벌 최적해가 아니므로 three-step ahead, four-step, … 식으로 확장하면 — 물론 게산량은 늘어난다 — 조금 더 최적해에 가까운 결과를 얻을 수 있다.
다시 LM으로 돌아가서 마코프 체인에서도 단지 현재 상태만을 고려해서 다음 상태를 선택/전이할 것이 아니라 이전에 거쳐왔던 과거 상태들의 sequence를 고려해서 다음에 올 상태를 선택한다면 좀 더 현실적인 결정을 내릴 수 있다. ‘I am a ___’에서 a만 보고 가장 빈도가 높았던 boy를 선택하면 결과가 획일적이고, 확률적으로 선택하면 매번 결과가 임의로 벼해서 안정적인 예측 모델이 될 수 없는데, ‘I am a’까지 모두 고려해서 다음에 올 단어로 student를 선택하면 더 현실적이고 합리적인 결과를 내놓은 가능성이 높아진다. 딥러닝으로 NLP를 공부한 사람이라면 이 방식이 결국 RNN (Recurrent Neural Network) 임을 눈치챘을 거다. RNN에서 시퀀스가 길어지면 앞쪽의 단어들의 영향이 감소하는 Vanishing 현상이 발생해서 성능이 떨어지기 때문에, 이를 보강한 알고리즘이 LSTM (Long Short Term Memory)이다. RNN이나 LSTM처럼 기계적으로 이전 상태들에 가중치를 부여하지 않고 더 중요한 상태에 더 높은 가중치를 부여하는, 즉 중요한 상태를 지정하는 것이 Attention이고 이를 활용한 방식이 요즘 가장 흔히 사용하는 Transformer다. 한 발 더 나아간다면 순방향으로만 계산해서 다음 상태를 예측하는 것이 아니라, 역방향으로 이전 상태를 예측하는 걸 결합한 방식이 BERT (Bi-directional Encoder Representations from Transformer)인 셈이다. ** 이 문단의 설명은 기술적으로 오류가 있을 수 있음.
인간은 늘 다음 (What’s next?)을 궁금해한다. 다음을 예측하는 가장 쉬운 방법은 현재를 기반으로 예측하는 것이고, 더 정확한 예측을 위해서 과거의 사건들까지 끌어들인다. 게 중에서도 중요했던 과거들만 추림으로써 더 정확해질 수 있었고, 사건의 흐름을 순방향뿐 아니라 역방향으로 따라감으로써 더 그럴듯한 미래를 예측할 수 있다.
과거 sequence가 길다고 해서 무조건 더 정확해지는 것은 아니지만, 어떤 사건들이 미래에 영향을 미치는지 정확히 모르기 때문에 더 많은 과거 (데이터)를 고려함으로써 더 정확히 미래를 예측할 수 있는 거다. 그렇다면 LM도 더 많은 이전 단어들을 고려하면 더 정확히 다음에 올 단어를 내놓을 수 있다. 그래서 LM이 오늘날의 LLM으로 진화한 셈이다. GPT-2보다 GPT-3이 월등히 더 좋아졌고, GPT-4가 더 정확해지리라 기대하는 것도 이런 이유에서다. 모델이 거대해진다는 것은 다른 말로 모델이 복잡해진다는 것을 뜻한다. 모델의 복잡도, 요즘 말로 파라미터의 개수는 레이어의 개수와 레이어당 노드의 개수에 의해 정의된다. 그렇다면 앞으로 모델은 얼마나 더 복잡해질 것인가? 직접 더 큰 모델을 만들어서 현실에 적용하기 전까지는 아무도 모른다. 그러나 최소한 모델 (설루션)의 복잡도가 (현실) 문제의 복잡도를 능가하기 전까지는 더 복잡해질 거다라고 확신한다. ChatGPT를 이용한 MS의 new Bing이나 LaMDA를 이용한 구글의 Bard가 오류를 내는 이유는 아직 이들이 문제의 복잡도를 능가하지 않았음을 보여주고, 향후 이미지나 음성 또는 그 이상의 현실을 고려해야 한다면 모델의 거대화에 대한 도전은 당분간 이어질 것 같다.
그리고, GPT와 LaMDA는 수많은 텍스트들로부터 단어 시퀀스 빈도만을 카운팅 한 unsupervised 방식인데, 이를 우리 삶에 더 유용하게 만들기 위해서 — 채팅이든 검색이든 또는 다른 무엇이든 — supervised 방식으로 튜닝하는 과정이 필요하다. 이를 논문에 따라서 prompt learning이라 하기도 하고 instruct learning이라 부르기도 한다. (관련 논문 찾아보기 바람) Zero/One/Few-shot learning도 요즘 많은 주목을 받고 있는데, 이것이 가능한 것도 결국 방대한 unsupervised 모델이 존재하기 때문이다. 십여 년 전에 처음 Semi-supervised learning을 배울 때는 과연 이게 잘 작동하는 걸까?라는 의심을 가졌었는데, 시간이 흘러 결국 semi-supervised가 세상을 지배하는 시대가 됐다.
방송이나 글에서 ChatGPT에 관한 설명을 들을 때 마코프 체인에 대한 기시감을 느끼는 건 당연하다. 어차피 원류는 오래 전의 방식에 있다.
DM ML AD
LLM은 왜/어떻게 작동하는가?
반응형