수학 개념 지도
딥러닝과 언어 모델

전문가 혼합(Mixture of experts)

입력마다 여러 '전문가' 신경망⁠(neural network)⁠ 가운데 몇 개만 골라 쓰는 구조. 라우터⁠(router)⁠가 소프트맥스⁠(softmax)⁠로 전문가별 점수를 매겨 상위 k개만 계산하므로 매개변수⁠(parameter)⁠는 많아도 토큰⁠(token)⁠ 하나에 드는 계산은 적다. 몇몇 전문가에게 일이 몰리지 않도록 부하 균형⁠(load balancing)⁠ 장치가 필요하다.

y=∑i∈TopK⁡(x)gi(x) Ei(x),g(x)=softmax⁡(Wgx)∣TopK⁡,Laux=αN∑i=1NfiPiy = \sum_{i \in \operatorname{TopK}(x)} g_i(x)\,E_i(x), \qquad g(x) = \operatorname{softmax}\bigl(W_g x\bigr)\big|_{\operatorname{TopK}}, \qquad \mathcal L_{\text{aux}} = \alpha N\sum_{i=1}^{N} f_i P_i

언어 모델⁠(language model)⁠은 클수록 대개 더 똑똑하지만, 그만큼 글 한 조각을 처리할 때마다 드는 계산도 커집니다. 모델은 키우면서 계산은 그대로 둘 수 없을까요? 먼저 용어 셋을 정합니다. 언어 모델은 글을 잘게 자른 조각(토큰, 대개 낱말이나 낱말의 일부)을 하나씩 처리합니다. 매개변수는 학습으로 값이 정해지는 수들이고, 그 개수가 모델의 크기입니다. 트랜스포머⁠(transformer)⁠는 같은 모양의 블록을 여러 겹 쌓은 것인데, 블록마다 토큰끼리 정보를 주고받는 부분(어텐션⁠, attention⁠)과, 토큰마다 따로 큰 계산을 하는 부분(피드포워드 층)이 있습니다. 매개변수는 대부분 피드포워드 층에 있습니다.

이제 블록마다 피드포워드 층 하나를 여덟 벌로 늘리고, 토큰마다 그 가운데 두 벌만 쓴다고 합시다. 피드포워드 층의 매개변수는 여덟 배가 되지만, 토큰 하나를 처리하는 계산은 두 벌어치입니다. 2023년 12월 미스트랄 AI가 공개한 Mixtral 8x7B가 이런 구조입니다. 전체 매개변수는 467억 개인데 토큰 하나를 처리할 때 쓰는 것은 약 129억 개입니다. 이름대로라면 8 × 70억 = 560억이어야 할 것 같지만, 어텐션 같은 나머지 부분은 모든 전문가가 함께 쓰므로 그보다 적습니다. 여기서 각 피드포워드 층을 '전문가'라 부르고, 토큰마다 어느 전문가를 쓸지 정하는 작은 층을 라우터(또는 게이트)라 합니다. 이 구조가 전문가 혼합(mixture of experts, MoE)입니다.

생각의 뿌리는 1991년 로버트 제이컵스, 마이클 조던, 스티븐 놀런, 제프리 힌턴의 「적응적 국소 전문가 혼합」입니다. 입력이 놓일 수 있는 공간을 여러 영역으로 나눠 영역마다 다른 작은 신경망(전문가)이 맡고, 게이트 신경망이 입력마다 누구의 말을 얼마나 들을지 정하게 하자는 것이었습니다. 제목의 '국소'는 각 전문가가 공간의 한 부분만 맡는다는 뜻입니다. 확률⁠(probability)⁠로 쓰면 이렇습니다.

p(y∣x)=∑i=1Ngi(x) pi(y∣x),g(x)=softmax⁡(Wgx)p(y \mid x) = \sum_{i=1}^{N} g_i(x)\, p_i(y \mid x), \qquad g(x) = \operatorname{softmax}(W_g x)

p(y∣x)p(y \mid x)는 '입력 x가 주어졌을 때 답이 y일 확률'로 읽고, pip_i는 전문가 i가 내놓는 그 확률입니다. 게이트 값 gi(x)g_i(x)는 소프트맥스라서 양수이고 모두 더하면 1입니다. 그러니 전체의 답은 전문가들의 답을 게이트 값의 비율로 섞은 것이고, 그 섞는 비율이 입력마다 바뀝니다. 이를테면 전문가가 둘이고 어떤 입력에서 게이트 값이 0.9와 0.1이면, 답의 확률은 전문가 1의 답 90%와 전문가 2의 답 10%를 섞은 것입니다.

EM 알고리즘⁠(algorithm)⁠, 베이즈 정리⁠(Bayes' theorem)⁠와의 관계이 식은 EM 알고리즘으로 학습하는 가우스 혼합(여러 종 모양 분포를 섞은 분포)과 닮았습니다. 가우스 혼합⁠(Gaussian mixture)⁠에서는 섞는 비율이 상수이고 여기서는 입력 x에 따라 바뀐다는 점이 다릅니다. 실제로 1994년 조던과 제이컵스는 전문가를 나무 모양으로 쌓은 계층적 전문가 혼합을 EM으로 학습시켰습니다. EM의 첫 단계(E 단계)에서는 자료점마다 '이 점은 전문가 i가 맡았을 확률' hi=gipi/∑jgjpjh_i = g_i p_i / \sum_j g_j p_j를 계산합니다. 이것은 답 y를 본 뒤에 고쳐 쓴 확률(사후 확률⁠, posterior probability⁠)로, 베이즈 정리로 구한 것입니다. 계층적 전문가 혼합은 가지마다 부드럽게 갈라지는 결정 트리⁠(decision tree)⁠로 볼 수도 있습니다.

희소하게 고르기. 1991년의 모형은 모든 전문가를 계산한 뒤 섞습니다. 전문가를 수천 개로 늘리려면 계산하지 않을 전문가를 미리 골라내야 합니다. 2017년 노엄 셰이저 등은 라우터 점수 가운데 상위 k개만 남기고 나머지를 −∞(음의 무한대)로 둔 뒤 소프트맥스를 하는 희소 게이트를 제안했습니다. 소프트맥스는 점수를 지수 함수⁠(function)⁠에 넣어 비율을 내는데, −∞를 넣으면 0이 나옵니다. 그래서 뽑히지 않은 전문가의 게이트 값은 정확히 0이고, 그 전문가는 계산할 필요가 없습니다. 이를테면 점수가 (2, 1, 0, −1)이고 k = 2이면 (2, 1, −∞, −∞)로 소프트맥스를 해서 게이트 값은 약 (0.73, 0.27, 0, 0)입니다.

g(x)=softmax⁡(KeepTopK⁡(Wgx+잡음, k)),y=∑i: gi(x)>0gi(x) Ei(x)g(x) = \operatorname{softmax}\bigl(\operatorname{KeepTopK}(W_g x + \text{잡음},\, k)\bigr), \qquad y = \sum_{i:\,g_i(x) > 0} g_i(x)\,E_i(x)

이들은 글을 순서대로 읽는 순환 신경망⁠(recurrent neural network)⁠의 한 종류인 LSTM의 층 사이에 이런 층을 끼워, 전문가를 최대 13만 개 넘게, 매개변수를 1,370억 개까지 늘렸습니다.

라우터는 어떻게 배울까요? 신경망은 역전파⁠(backpropagation)⁠로 배웁니다. 출력이 얼마나 틀렸는지에서 거꾸로 거슬러 가며, 각 매개변수를 조금 바꾸면 오차가 어떻게 변하는지(기울기⁠, slope⁠)를 계산해 고치는 방법입니다. 고르는 일(상위 k) 자체는 점수를 조금 바꿔도 대개 결과가 그대로이다가 어느 순간 뒤바뀌므로 이 방식으로 다룰 수 없습니다. 그러나 뽑힌 전문가의 게이트 값은 소프트맥스라서 점수를 조금 바꾸면 조금 변하고, 그 변화를 통해 라우터도 학습됩니다. 단, k = 1일 때 뽑힌 하나만으로 소프트맥스를 하면 게이트 값이 늘 1입니다. 그러면 라우터 점수를 조금 바꿔도 출력이 변하지 않아, 라우터가 무엇을 고쳐야 할지 신호를 받지 못합니다. 그래서 상위 1개만 쓰는 스위치 트랜스포머(아래)는 전체 전문가에 대한 소프트맥스 확률 pi(x)p_i(x)를 그대로 곱합니다.

아래는 설명을 위한 2차원 장난감입니다. 점 28개가 토큰이고, 크기가 다른 세 무리(14개, 9개, 5개)로 모여 있습니다. 전문가 네 명의 라우터 벡터⁠(vector)⁠ wiw_i가 화살표이고, 토큰 x에 대한 전문가 i의 점수는 내적⁠(dot product)⁠ si=wi⋅xs_i = w_i\cdot x입니다. 점의 색은 1순위 전문가, 바깥 고리의 색은 2순위 전문가(k = 2일 때)입니다. 배경의 색은 그 자리에 토큰이 있다면 1순위가 누구일지입니다. 화살표 끝을 끌면 배경의 경계가 움직이고, 오른쪽 막대에서 전문가마다 받은 토큰의 비율이 바뀝니다. 상위 k = . 보조 손실로 5걸음 편향 조정 1번 처음으로

1순위 영역의 경계는 두 점수가 같아지는 직선 (wi−wj)⋅x=0(w_i - w_j)\cdot x = 0입니다. 이 직선은 모두 원점을 지나므로, 영역들은 원점에서 뻗어 나가는 부채꼴 모양의 볼록한 영역이 됩니다(아래의 편향 bib_i를 더하면 경계가 원점에서 비켜납니다). 화살표를 길게 늘리면 그 전문가의 영역이 넓어지고, 무리 하나를 통째로 가져갈 수도 있습니다. k = 1인 처음 상태가 그렇습니다. 전문가 1(노랑)이 가장 큰 무리 14개를 모두 받고 전문가 2는 3개만 받습니다.

이렇게 쏠리면 무엇이 문제일까요? 한 전문가가 받을 수 있는 토큰 수에는 보통 상한(용량⁠, capacity⁠)이 있습니다. 전문가 N명, 토큰 T개, 상위 k일 때 용량은 ⌊c⋅kT/N⌋\lfloor c \cdot kT/N \rfloor이고 c를 용량 계수라 합니다. ⌊ ⌋는 소수점 아래를 버린다는 뜻입니다. 여기서는 c = 1.25라서 k = 1이면 ⌊1.25 × 1 × 28 / 4⌋ = ⌊8.75⌋ = 8개입니다. 전문가 1이 받은 14개 가운데 6개는 넘칩니다. 넘친 토큰은 그 층의 전문가 계산을 건너뛰고, 층을 거치지 않고 입력을 그대로 다음 층에 넘기는 길(잔차 연결⁠, residual connection⁠)로만 다음 층에 갑니다. 그 토큰은 그 층에서 전문가의 처리를 받지 못하는 셈입니다.

쏠림과 보조 손실⁠(auxiliary loss)⁠. 학습을 그냥 두면 쏠림이 스스로 강해집니다. 많이 뽑힌 전문가는 그만큼 많이 학습해서 더 나아지고, 라우터는 더 나은 전문가를 더 자주 고르기 때문입니다. 2017년 논문도 이 현상을 적었습니다. 2021년 윌리엄 페더스, 배럿 조프, 셰이저의 스위치 트랜스포머는 이것을 손실로 막았습니다. 손실은 모델이 얼마나 틀렸는지를 잰 값이고, 학습은 손실을 줄이는 쪽으로 매개변수를 고치는 일입니다. 그러니 쏠림에 벌점을 매겨 본래의 손실에 더하면(보조 손실), 학습이 쏠림도 함께 줄입니다. 이들이 더한 보조 손실은 다음과 같습니다(α = 0.01).

Laux=αN∑i=1Nfi Pi,fi=i에게 간 토큰 수T,Pi=1T∑xpi(x)\mathcal L_{\text{aux}} = \alpha N \sum_{i=1}^{N} f_i\,P_i, \qquad f_i = \frac{\text{i에게 간 토큰 수}}{T}, \qquad P_i = \frac1T \sum_{x} p_i(x)

f는 실제로 나눠 준 비율이고, P는 라우터 확률 pi(x)=softmax⁡(s(x))ip_i(x) = \operatorname{softmax}(s(x))_i의 평균입니다. 왜 이런 곱일까요? 우리가 줄이고 싶은 것은 f의 쏠림인데, f는 상위 k를 세어 얻은 개수라서 라우터 벡터에 대해 미분⁠(differentiation)⁠할 수 없습니다(조금 움직여도 대개 그대로이다가 어느 순간 한 칸씩 뜁니다). P는 미분할 수 있는 대리인입니다. f를 상수로 보고 미분하면 ∂Laux/∂Pi=αNfi\partial \mathcal L_{\text{aux}}/\partial P_i = \alpha N f_i이니, 일을 많이 받은 전문가일수록 라우터 확률이 세게 깎입니다.

이 손실이 왜 고른 분배에서 가장 작을까요? 라우팅이 확률과 들어맞아 f ≈ P라면 Laux/α≈N∑ifi2\mathcal L_{\text{aux}}/\alpha \approx N\sum_i f_i^2입니다. 전문가 넷(N = 4)으로 숫자를 넣어 봅니다. 완전히 고르게 f = (1/4, 1/4, 1/4, 1/4)이면 4 × (4 × 1/16) = 1입니다. 둘에게 반씩 f = (1/2, 1/2, 0, 0)이면 4 × (1/4 + 1/4) = 2입니다. 하나에게 모두 f = (1, 0, 0, 0)이면 4 × 1 = 4입니다. 쏠릴수록 커집니다. 일반적으로는 코시–슈바르츠 부등식⁠(Cauchy–Schwarz inequality)⁠ (∑ifi)2≤N∑ifi2(\sum_i f_i)^2 \le N\sum_i f_i^2이 이것을 보장합니다. 이 부등식은 'N개 수의 합의 제곱은 제곱의 합의 N배를 넘지 않고, 같아지는 것은 N개가 모두 같을 때뿐'이라는 뜻입니다. 여기서 ∑ifi=1\sum_i f_i = 1이므로 이 값은 1 이상이고, 등호는 모든 fi=1/Nf_i = 1/N일 때만 성립합니다. 한 전문가가 모두 가져가면 N이 됩니다.

'보조 손실로 5걸음'은 이 손실(α를 뺀 부분)만으로 라우터 벡터를 경사 하강법⁠(gradient descent)⁠으로 다섯 번 고칩니다(f는 1순위로 셉니다). 처음 값 1.299가 한 번 누르면 1.040으로 내려가고, 세 번쯤 누르면 f가 모두 1/N = 0.25가 되어 정확히 1이 됩니다. 이때 P는 1/N 근처에 머물 뿐 꼭 1/N이 되지는 않습니다. f가 모두 1/N이면 P와 상관없이 N∑ifiPi=∑iPi=1N\sum_i f_i P_i = \sum_i P_i = 1이라 더 줄일 것이 없기 때문입니다. 조심할 점도 보입니다. 거꾸로 f는 쏠린 채로 확률 P만 평평하게 만들어도 이 값은 1로 내려갑니다. 그래서 이 손실만 따로 줄이면 아무것도 구별하지 않는 라우터를 좋아할 수 있고, 실제로는 본래의 학습 손실에 작은 가중치⁠(weight)⁠로 더합니다.

보조 손실 없이. 보조 손실이 크면 본래의 목표를 방해합니다. 2024년 12월 딥시크의 DeepSeek-V3는 전문가마다 편향 bib_i를 두어 누구를 고를지에만 si+bis_i + b_i를 쓰고, 게이트 값은 원래 점수로 계산했습니다. 학습 한 걸음이 끝날 때마다 일이 넘친 전문가는 bib_i를 γ만큼 내리고 모자란 전문가는 γ만큼 올립니다. 미분이 전혀 없는 되먹임⁠(feedback)⁠ 제어입니다. '편향 조정 1번'이 이 규칙을 한 번 적용합니다(여기서는 γ = 0.15, 게이트는 소프트맥스). 화살표는 그대로인데 토큰 수가 고르게 됩니다. 처음 상태에서 k = 2이면 세 번 만에 네 전문가가 14개씩 받습니다. k = 1이면 처음 다섯 번은 겉보기에 아무 일도 없습니다. 편향이 점수 차를 넘어설 만큼 쌓이는 중이기 때문입니다. 여섯 번째부터 전문가 1의 몫이 13, 12, 11로 하나씩 줄고, 아홉 번째에 8, 8, 6, 6이 되어 용량 8을 넘치는 토큰이 없어집니다. 그런데 더 누르면 편향이 계속 움직여, 열한 번째에는 6, 5, 7, 10으로 전문가 4가 다시 넘칩니다. 고칠 때마다 같은 크기 γ만큼만 움직이는 단순한 되먹임이라, 딱 맞는 자리에서 멈추지 못하고 그 근처에서 출렁일 수 있는 것입니다. 실제 학습에서는 라우터도 함께 학습되고 γ도 작게 잡습니다. V3도 한 시퀀스 안의 극단적인 쏠림을 막으려고 아주 작은 보조 손실(α = 0.0001)은 남겨 두었습니다.

규모. 이 구조로 모델은 얼마나 커졌을까요? 2020년 구글의 GShard는 상위 2개 게이트로 매개변수 6,000억 개가 넘는 번역 모델을 학습시켰습니다. 2021년 스위치 트랜스포머는 상위 1개만 쓰는 방식으로 매개변수 1.6조 개, 전문가 2,048개의 모델을 학습시켰습니다. 이 논문은 구글의 기존 트랜스포머 모델 T5와 견주어, 같은 계산 자원으로 사전학습이 최대 7배 빨라졌다고 보고했습니다. 사전학습은 특정 과제를 가르치기 전에 많은 글로 다음 토큰 맞히기 같은 일반적인 일을 먼저 배우는 단계입니다. 2024년 1월 DeepSeekMoE는 전문가를 잘게 쪼개 많이 두고, 모든 토큰이 늘 거치는 공유 전문가를 따로 두는 설계를 내놓았습니다. DeepSeek-V3는 층마다 공유 전문가 1개와 라우팅 전문가 256개 가운데 8개를 써서, 전체 6,710억 개 가운데 토큰당 370억 개의 매개변수만 씁니다. 2025년 이후 공개된 큰 모델에는 전문가 혼합이 흔합니다. 아래에서 '활성'은 토큰 하나를 처리할 때 실제로 쓰는 매개변수 수입니다.

  • 메타의 Llama 4 Maverick: 전체 4,000억·활성 170억, 라우팅 전문가 128개.
  • 오픈AI의 gpt-oss-120b: 전체 1,170억·활성 51억, 전문가 128개 중 4개.
  • 알리바바의 Qwen3-235B-A22B: 이름대로 전체 2,350억·활성 220억.
  • 문샷의 Kimi K2: 전체 1조·활성 320억, 전문가 384개 중 8개.

GPT-4가 전문가 혼합이라는 이야기가 돌았지만 오픈AI는 GPT-4의 구조를 공식적으로 밝힌 적이 없습니다.

오해하기 쉬운 것. 첫째, '전문가'가 주제별 전문가는 아닙니다. Mixtral 논문은 arXiv 논문, 생물의학 초록, 철학 논문처럼 분야가 다른 글을 넣어 보았지만 분야에 따라 전문가가 뚜렷이 나뉘는 양상을 찾지 못했고, 오히려 들여쓰기나 특정 낱말 같은 문법적 단위, 연달아 오는 토큰이 같은 전문가로 가는 경향을 보고했습니다. 둘째, 활성 매개변수가 적다고 가벼운 모델은 아닙니다. 어느 토큰이 어느 전문가를 부를지 모르니 전체 매개변수를 모두 메모리에 올려 두어야 하고, 전문가들을 여러 GPU에 나눠 두면 토큰을 주고받는 통신이 병목이 됩니다. 셋째, '전체 N개' 전문가 혼합 모델과 '매개변수 N개' 밀집 모델의 성능은 같지 않습니다. 같은 활성 매개변수의 밀집 모델보다는 대개 낫고, 같은 전체 매개변수의 밀집 모델보다는 대개 못하다는 것이 흔한 관찰이지만, 얼마나 차이 나는지는 설정에 따라 다릅니다. 모델을 비교할 때는 전체와 활성 매개변수를 함께 적어야 하는 까닭입니다.

이어지는 곳.

관련 인물제프리 힌턴

이 개념이 나오는 긴 글

언어 모델 다음 단어를 맞히는 기계 다음 낱말을 짐작하는 일만으로 어디까지 갈 수 있을까? 마르코프의 글자 세기에서 섀넌의 추측 게임, 트랜스포머와 규모의 법칙, 사람의 선호까지. 밑바닥에는 확률의 곱셈 규칙과 로그 하나가 있고, 그 수학은 모델이 왜 그럴듯하게 틀리는지도 말해 준다.

이 개념을 언급하는 페이지

이 페이지가 가리키는 개념