brunch

You can make anything
by writing

C.S.Lewis

by JejuGrapher Feb 20. 2023

달고나 62.  LLM은 왜/어떻게 작동하는가?

Why LLM works?

제목을 더 자극적으로 ‘ChatGPT는 왜 동작하는가?”로 할 수도 있지만 어차피 ChatGPT도 한 때고 새로운 LM이 나와서 이번이 진짜 AGI다라고 또 주장할 테니 중립적으로 LM은 어떻게 동작하고 왜 LLM이 작동하는가라고 정했다. 이 글은 기술적으로 LM, 특히 GPT/LaMDA/PaLM 등을 다루지 않고, 단지 이 분야 밖에 있는 일반 독자의 이해를 돕기 위한 글이다. 개념적으로 설명한 것이니 기술적으로 완전히 틀렸을 수도 있다. 일반인에게 틀린 설명은 치명적이나…(죄송)


Wikipedia는 Language Model (LM, 언어모델)을 ‘a probability distribution over sequences of words’라고 정의한다. 이를 좀 쉽게 설명하면 어떤 단어 (또는 문장)이 주어지면 바로 이어지는 다음에 올 단어(의 확률)를 예측하는 거다. ‘I am a ___’까지 보고 다음에 boy가 올지 student가 올지를 확률적으로 계산해서 문장을 완성해가는 거라 생각하면 된다. 단어 A 다음에 올 단어 B는 결국 확률값이 가장 큰 단어가 놓인다. 알고리즘을 좀 공부한 사람이라면 기시감을 느낄 건데, 단어 word를 상태 status로 치환하면 ‘현재 상태가 주어졌을 때 다음에 올 상태는 무엇인가’로 정의를 바꾸면 전형적인 마코프 체인 Markov chain에 관한 설명이다. 마코프 체인은 이전의 모든 상태를 무시하고 오직 현재 상태만을 고려해서 다음의 상태를 조건부 확률 Pr( next | current)로 예측한다. 확률값이 가장 높은 다음 상태로 전이 transition 할 수도 있지만, 그냥 확률적으로 roulette을 돌려서 임의의 상태로 전이 (random walk)할 수도 있다. LM이 그럴듯한 헛소리를 생성하는 이유다.


프로그래밍이나 데이터 구조, 또는 (AI가 아닌 일반) 알고리즘을 공부한 사람이라면 가장 먼저 Greedy Algorithm이란 걸 배운다. Greedy는 말 그대로 근시안적으로 현시점에서 가장 보상을 많이 받는 것을 선택하는 휴리스틱이고, 많은 문제에서 꽤 잘 작동한다. 출발과 끝이 있는 그래프에서 가장 짧은 거리 shortest path를 찾는 문제에서 greedy algorithm은 현재 노드에서 거리가 가장 짧은 다음 노드를 선택하고, 그 노드에서 또 가장 짧은 다음 노드를 계속해서 선택한다. 이 알고리즘이 꽤 잘 작동 (feasible solution)하지만 전체 그래프 구조를 볼 수 있는 사람이라면 최적해 (optimal solution)가 아님을 바로 알 수 있다. 예를 들어, 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) 임을 눈치챘을 거다. 이전 단어들의 aggregation을 바탕으로 다음 단어를 예측한다. 현재만으론 미래의 불확실성이 아주 크지만 더 많은 과거가 고려될수록 미래가 한정되고 명확해진다. RNN에서 시퀀스가 길어지면 앞쪽의 단어들의 영향이 감소하는 Vanishing 현상이 발생해서 성능이 떨어지기 때문에, 이를 보강한 알고리즘이 LSTM (Long Short Term Memory)이다. RNN이나 LSTM처럼 기계적으로 이전 단어들에 가중치를 부여하지 않고 더 중요한 단어에 더 높은 가중치를 부여하는, 즉 중요한 상태를 지정하는 것이 Attention이고 이를 활용한 방식이 요즘 가장 흔히 사용하는 Transformer다. 한 발 더 나아간다면 순방향으로만 계산해서 다음 상태를 예측하는 것이 아니라, 역방향으로 이전 상태를 예측하는 걸 결합한 방식이 BERT (Bi-directional Encoder Representations from Transformer)인 셈이다. 다소 무리 있는 비유지만 미로 문제를 풀 때 도착에서 시작으로 역방향으로 길을 찾으면 오히려 쉽게 풀리기도 한다. 다음에 올 단어를 예측하는 것과 이전에 있었어야 할 단어를 예측하는 걸 결합해서 더 좋은 결과를 얻은 셈이다. Pre-trained LM은 방대한 텍스트 (등의) 데이터로 가능한 모든 경로 path와 전이 확률을 그려놓은 거대한 그래프다. ** 이 문단의 설명은 기술적으로 오류가 있을 수 있음.


인간은 늘 다음 (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이라 부르기도 한다. (관련 논문 찾아보기 바람) Fine-tuning을 통해 대화/생성의 맥락 context를 배운다. Zero/One/Few-shot learning도 요즘 많은 주목을 받고 있는데, 이것이 가능한 것도 결국 방대한 unsupervised pre-trained 모델이 존재하기 때문이다. 십여 년 전에 처음 Semi-supervised learning을 배울 때는 과연 이게 잘 작동하는 걸까?라는 의심을 가졌었는데, 시간이 흘러 결국 semi-supervised가 세상을 지배하는 시대가 됐다.


LM이, 그리고 점점 거대해지는 LLM이, 그리고 이를 이용한 각종 애플리케이션들이 왜 잘 작동하는가에 대한 나의 이해이며 해석이다. 개념적으로든 기술적으로든 틀렸을 수도 있다. LM이든 마코프 체인이든 더 전통적으로 그래프 이론이든 결국 다음, 즉 다음 단어, 다음 상태, 다음 노드 (또는 엣지) 가 뭐냐를 찾는/예측하는 것이 여느 머신러닝/인공지능이 해결하는 문제다. 그다음을 가능한 정확히 찾기 위해선 가능한 많은 과거 (그리고 현재)가 필요한 거다. 특히 이정표가 될 과거라면 더 확실하고 앞뒤로 더블체크하면 더할 나위 없다. 이런 방향으로 알고리즘이 진화/발전하고 있고 모델의 크기가 문제의 복잡도를 압도할 때까지는 인간의 욕심이 끝나지 않을 거다. 문제는 항상 생각보다 간단했다. 그러니 해결책은 더 간단해야 한다. 그래서 어렵다.


방송이나 글에서 ChatGPT에 관한 설명을 들을 때 마코프 체인에 대한 기시감을 느끼는 건 당연하다. 어차피 원류는 오래 전의 방식에 있다.


매거진의 이전글 달고나 61. 모든 ML 알고리즘의 이해
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari