수학 개념 지도
데이터와 학습(Data and learning)

소프트맥스와 교차 엔트로피(Softmax and cross-entropy)

점수 여러 개를 지수함수⁠(exponential function)⁠로 양수로 만든 뒤 합이 1이 되게 나누어 확률⁠(probability)⁠로 바꾸는 함수⁠(function)⁠. 정답에 준 확률의 음의 로그(교차 엔트로피⁠, cross-entropy⁠)를 손실로 쓰면, 점수에 대한 기울기⁠(slope)⁠가 '확률 − 정답'이라는 단순한 모양이 된다.

softmax⁡(z⃗)k=ezk/T∑jezj/T,L=−log⁡p정답,∂L∂zj=pj−yj\operatorname{softmax}(\vec z)_k = \frac{e^{z_k/T}}{\sum_j e^{z_j/T}}, \qquad L = -\log p_{\text{정답}}, \qquad \frac{\partial L}{\partial z_j} = p_j - y_j

사진 한 장을 보고 고양이, 개, 새 가운데 무엇인지 가리는 분류기가 있다고 합시다. 분류기의 마지막 단계는 부류마다 점수를 하나씩, 예를 들어 고양이 2, 개 1, 새 0.1을 냅니다. 이 점수(로짓⁠, logit⁠)는 음수도 될 수 있고 합도 정해져 있지 않아서 그대로는 확률이 아닙니다. 소프트맥스⁠(softmax)⁠는 각 점수에 지수함수를 씌워 모두 양수로 만든 뒤, 합이 1이 되도록 전체 합으로 나눕니다. T는 잠시 뒤에 설명할 온도이고, 보통은 1입니다.

softmax⁡(z⃗)k=ezk/T∑jezj/T\operatorname{softmax}(\vec z)_k = \frac{e^{z_k/T}}{\sum_{j} e^{z_j/T}}

T = 1이면 e2≈7.389e^2 \approx 7.389, e1≈2.718e^1 \approx 2.718, e0.1≈1.105e^{0.1} \approx 1.105이고 합이 약 11.212이므로, 고양이의 확률은 7.389/11.212≈0.6597.389/11.212 \approx 0.659, 개는 0.242, 새는 0.099입니다. 첫째 그림의 점을 위아래로 끌어 점수를 바꾸고, 온도 T = 를 바꿔 보세요. 둘째 그림의 막대가 확률이고, 흰검은 테두리가 정답()입니다. 지금 확률은 입니다. 처음 점수로

세 가지 성질을 그림으로 확인할 수 있습니다. 첫째, 모든 점수에 같은 수 c를 더해도 확률은 그대로입니다. ezk+c=ecezke^{z_k + c} = e^c e^{z_k}에서 ece^c가 분자와 분모에서 지워지기 때문입니다. 모든 점수에 1 더하기를 눌러 보세요. 점들은 모두 한 칸씩 올라가지만 막대는 그대로입니다. 확률을 정하는 것은 점수의 차이뿐입니다. 이 성질은 계산에서도 쓸모 있습니다. 컴퓨터가 흔히 쓰는 배정밀도⁠(double precision)⁠ 부동소수점⁠(floating point)⁠ 수는 약 1.8×103081.8 \times 10^{308}까지만 나타낼 수 있어서 e710e^{710}만 되어도 넘쳐 버립니다. 그래서 모든 점수에서 가장 큰 점수를 먼저 빼고 계산합니다. 첫째 성질 덕분에 답은 같고, 지수가 모두 0 이하가 되어 넘치지 않습니다.

둘째, 점수의 순서가 곧 확률의 순서입니다. T를 0에 가깝게 하면 가장 큰 점수의 확률이 1로, 나머지는 0으로 갑니다(가장 큰 점수가 하나뿐일 때). 가장 큰 것 하나를 고르는 argmax가 되는 것입니다. 반대로 T를 키우면 확률이 모두 1/3에 다가가며 고르게 퍼집니다. '소프트맥스'라는 이름은 딱 잘라 가장 큰 것을 고르는 일의 매끄러운 판이라는 뜻입니다. 분모에 로그를 씌운 로그합지수⁠(log-sum-exp)⁠ log⁡∑jezj\log\sum_j e^{z_j}도 매끄러운 최댓값이어서, 부류가 K개일 때 max⁡jzj≤log⁡∑jezj≤max⁡jzj+log⁡K\max_j z_j \le \log\sum_j e^{z_j} \le \max_j z_j + \log K입니다. 위의 예에서는 2≤2.417≤3.0992 \le 2.417 \le 3.099입니다.

셋째, 부류가 둘이면 ez1/(ez1+ez2)=1/(1+e−(z1−z2))=σ(z1−z2)e^{z_1}/(e^{z_1} + e^{z_2}) = 1/(1 + e^{-(z_1 - z_2)}) = \sigma(z_1 - z_2)로 로지스틱 회귀⁠(logistic regression)⁠의 시그모이드⁠(sigmoid)⁠가 됩니다. 그래서 부류마다 점수를 특성의 일차식으로 두고 소프트맥스를 씌운 모형은 로지스틱 회귀를 부류가 여럿인 경우로 넓힌 것이 됩니다. 통계학⁠(statistics)⁠에서는 이 모형을 다항 로지스틱 회귀⁠(multinomial logistic regression)⁠라고 부릅니다.

학습에는 정답에 준 확률의 음의 로그를 손실로 씁니다. 정답이 고양이라면 −ln⁡0.659≈0.417-\ln 0.659 \approx 0.417이고, 지금 손실은 입니다. 정답 자리만 1이고 나머지는 0인 분포를 y라 하면 이 값은 y와 모형의 분포 p 사이의 교차 엔트로피 H(y,p)=−∑jyjlog⁡pjH(y, p) = -\sum_j y_j \log p_j입니다. 일반적으로 두 분포 q, p에 대해

H(q,p)=H(q)+DKL(q ∥ p)H(q, p) = H(q) + D_{\mathrm{KL}}(q \,\|\, p)

가 성립합니다. q를 따르는 기호들을 부호로 적을 때 평균⁠(mean)⁠ 길이는 엔트로피⁠(entropy)⁠ H(q)H(q)보다 짧을 수 없습니다. 그런데 기호마다 −log⁡pj-\log p_j비트를 쓰는, p에 맞춘 부호로 적으면 평균 길이가 H(q,p)H(q, p)가 되어 쿨백–라이블러 발산⁠(Kullback–Leibler divergence)⁠만큼 더 듭니다(부호 길이를 정수⁠(integer)⁠로 반올림하는 효과는 무시했습니다). q는 자료가 정하니 H(q)H(q)는 상수이고, 따라서 교차 엔트로피를 줄이는 것은 KL 발산⁠(KL divergence)⁠을 줄이는 것과 같습니다. 자료 전체에서 평균한 교차 엔트로피는 로그 가능도⁠(log-likelihood)⁠의 부호를 바꾼 것이어서, 이를 줄이는 것은 최대가능도 추정이기도 합니다. 로그의 밑을 2로 하면 단위가 비트, e로 하면 내트(nat)입니다. 지금 모형의 분포가 가진 엔트로피는 비트이고, 세 부류가 고를 때의 최댓값은 log⁡23≈1.585\log_2 3 \approx 1.585비트입니다.

이 짝이 널리 쓰이는 가장 큰 까닭은 기울기가 단순하다는 데 있습니다. T = 1일 때 정답이 k라면 −log⁡pk=−zk+log⁡∑jezj-\log p_k = -z_k + \log\sum_j e^{z_j}이고, 둘째 항을 zjz_j로 미분⁠(differentiation)⁠하면 정확히 pjp_j가 나옵니다.

∂L∂zj=pj−yj\frac{\partial L}{\partial z_j} = p_j - y_j

첫째 그림의 청록 화살표가 −∂L/∂zj-\partial L/\partial z_j, 곧 손실을 줄이려면 각 점수를 어느 쪽으로 얼마나 움직여야 하는지입니다(길이는 두 배로 그렸고, 온도가 T이면 1/T배가 됩니다). 정답의 점수는 1−pk1 - p_k만큼 올라가라는 힘을, 나머지 점수는 저마다의 확률만큼 내려가라는 힘을 받고, 힘을 모두 더하면 0입니다. 모든 점수를 함께 올리는 것은 아무 소용이 없으니 당연한 일입니다. 모형이 이미 확신하며 맞히면 힘은 거의 0이고, 확신하며 틀리면 힘이 가장 큽니다. 이 '확률 − 정답'이 역전파⁠(backpropagation)⁠가 출력에서 입력 쪽으로 거슬러 전하는 첫 신호입니다. 손실은 어떤 유한한 점수에서도 0이 되지 않습니다. 학습 자료를 모두 맞힐 수 있으면 정답 점수와 나머지 점수의 차이가 한없이 벌어지려 하는데, 로지스틱 회귀의 완전 분리⁠(perfect separation)⁠와 같은 현상이며 정규화가 이를 막습니다.

이 식의 뿌리는 물리학에 있습니다. 온도 T에서 에너지가 EkE_k인 상태에 있을 확률은 e−Ek/(kBT)e^{-E_k/(k_B T)}에 비례하는데, 이 볼츠만 분포⁠(Boltzmann distribution)⁠를 깁스가 통계역학⁠(statistical mechanics)⁠의 바탕으로 삼았습니다. 소프트맥스는 점수를 음의 에너지로 본 같은 식이고, '온도'라는 이름도 여기서 왔습니다. 최대 엔트로피 원리⁠(principle of maximum entropy)⁠로도 같은 모양이 나옵니다. 점수의 평균 ∑kpkzk\sum_k p_k z_k가 정해진 분포 가운데 엔트로피가 가장 큰 것은 eλzke^{\lambda z_k}에 비례하는 분포이고, 상수 λ는 정해진 평균값에 맞춰 정해집니다. 확률적인 설명도 있습니다. 각 점수에 서로 독립⁠(independence)⁠인 굼벨 분포⁠(Gumbel distribution)⁠의 잡음을 더한 뒤 가장 큰 것을 고르면, k가 뽑힐 확률이 정확히 softmax⁡(z⃗)k\operatorname{softmax}(\vec z)_k입니다. 1970년대 경제학자 대니얼 맥패든이 사람들의 선택을 설명하려고 쓴 다항 로짓 모형⁠(multinomial logit model)⁠이 이 사실 위에 서 있습니다. 신경망⁠(neural network)⁠ 분야에서 '소프트맥스'라는 이름은 1990년 무렵 영국의 존 브리들이 붙였습니다.

흔한 오해는 소프트맥스의 출력을 그대로 믿을 수 있는 확률로 보는 것입니다. 합이 1이니 확률처럼 보이지만, '90%'라고 답한 예들이 실제로 90% 맞는다는 보장은 없습니다. 2017년 궈(Chuan Guo) 등은 여러 현대 이미지 분류 신경망이 이런 뜻에서 체계적으로 과신한다는 것을 측정해 보고했습니다. 그리고 검증 자료로 온도 T 하나만 맞추는 간단한 방법(온도 조정⁠, temperature scaling⁠)으로 그 차이를 크게 줄였습니다. 온도는 확률의 순서를 바꾸지 않으므로 이 보정으로 정확도는 변하지 않습니다.

이어지는 곳. 언어 모델⁠(language model)⁠은 다음 토큰⁠(token)⁠의 확률을 수만에서 수십만 개 토큰 전체에 대한 소프트맥스로 내고, 교차 엔트로피로 학습합니다. 그 확률에서 글을 뽑을 때 온도를 바꾸는 것이 디코딩의 가장 단순한 손잡이입니다. 어텐션⁠(attention)⁠은 단어 사이의 유사도⁠(similarity)⁠ 점수를 소프트맥스로 가중치⁠(weight)⁠로 바꾸어, 어느 단어를 얼마나 참고할지 정합니다. 이때 위치 인코딩⁠(positional encoding)⁠의 ALiBi처럼 두 단어의 거리 d에 비례한 벌점 −md(m은 미리 정한 양수)를 점수에 더하면, 소프트맥스를 거친 가중치에는 e−mde^{-md}가 곱해져 먼 단어일수록 지수적으로 덜 참고하게 됩니다. 전문가 혼합⁠(mixture of experts)⁠의 라우터⁠(router)⁠도 전문가별 점수를 소프트맥스로 비율로 바꾸고, 그 가운데 상위 몇 개만 계산합니다. 단어를 벡터⁠(vector)⁠로 배우는 단어 임베딩⁠(word embedding)⁠의 원래 형태도 어휘 전체에 대한 소프트맥스였는데, 어휘가 커서 계산이 비싸기 때문에 이를 어림하는 기법이 여럿 나왔습니다. 교차 엔트로피가 KL 발산과 엔트로피로 나뉜다는 사실은 상호 정보량⁠(mutual information)⁠과 조건부 엔트로피⁠(conditional entropy)⁠를 다룰 때도 되풀이해 쓰입니다.

이 개념이 나오는 긴 글

계산언어학 말을 세는 기계 문법은 규칙일까, 확률일까? 파니니의 문법에서 촘스키의 위계, 섀넌의 영어 엔트로피, 오늘날의 언어 모델까지. 신경망과 기계 학습 배우는 기계 예를 보여 주면 규칙을 스스로 찾는 기계. 1958년의 퍼셉트론에서 오늘의 심층 신경망까지, 그 밑바닥에는 미분과 연쇄법칙이 있다. 언어 모델 다음 단어를 맞히는 기계 다음 낱말을 짐작하는 일만으로 어디까지 갈 수 있을까? 마르코프의 글자 세기에서 섀넌의 추측 게임, 트랜스포머와 규모의 법칙, 사람의 선호까지. 밑바닥에는 확률의 곱셈 규칙과 로그 하나가 있고, 그 수학은 모델이 왜 그럴듯하게 틀리는지도 말해 준다. 반환과 동적 계획법 같은 계산, 다른 덧셈 가장 짧은 길, 길의 가짓수, 가장 그럴듯한 해석, 갈 수 있는지 없는지. 따로 태어난 알고리즘들이 사실은 한 계산이고, 달라지는 것은 더하기와 곱하기 자리에 무엇을 넣느냐뿐이다. 그렇게 바꿔 넣어도 되는 까닭은 분배법칙 하나다.

이 개념 위에 세워진 것

이 개념을 언급하는 페이지

이 페이지가 가리키는 개념