11장. 행렬 미적분

다변수 미적분 · 5부. 행렬 미적분

심화 · 약 15분 · 연습문제 5

요약

벡터·행렬에 대한 미분의 표기와 배치 관례, 자주 쓰는 공식(선형·이차형식·노름·대각합·로그행렬식), 소프트맥스와 교차 엔트로피, 선형회귀와 신경망 한 층의 그래디언트

머신러닝 논문은 “∇WL=(y^−y)xT\nabla_W L = (\hat{y} - y)x^T”처럼 벡터와 행렬에 대한 미분을 아무 설명 없이 씁니다. 이 장에서는 그런 식을 읽고 직접 유도할 수 있게, 표기와 관례를 정하고 자주 쓰는 공식들을 성분 계산으로 증명합니다. 요령은 하나입니다. 헷갈리면 성분 하나(∂L/∂xi\partial L/\partial x_i)를 구하고 다시 벡터·행렬로 모읍니다.

11.1 표기와 배치 관례

스칼라 함수 f(x)f(\mathbf{x})(x∈Rn\mathbf{x} \in \mathbb{R}^n)의 그래디언트 ∇xf\nabla_{\mathbf{x}}f는 x\mathbf{x}와 같은 모양(열벡터)으로 씁니다. 스칼라 함수 f(X)f(X)(XX는 m×nm \times n 행렬)의 그래디언트도 XX와 같은 모양으로 씁니다:

(∂f∂X)ij=∂f∂Xij.\left(\frac{\partial f}{\partial X}\right)_{ij} = \frac{\partial f}{\partial X_{ij}}.

이렇게 하면 경사하강법 X←X−η∂f∂XX \leftarrow X - \eta\frac{\partial f}{\partial X}가 모양이 맞게 쓰입니다. 이것을 분모 배치(denominator layout)라 하고, 머신러닝 논문 대부분이 이 관례를 씁니다.

벡터를 벡터로 미분한 야코비 행렬(3장)은 ∂f∂x\frac{\partial\mathbf{f}}{\partial\mathbf{x}}를 m×nm \times n(출력×입력)으로 쓰는 분자 배치(numerator layout)와, 그 전치인 분모 배치가 논문마다 섞여 있습니다. 식의 모양(행·열 수)을 맞춰 보면 어느 관례인지 알 수 있습니다. 이 장에서는 그래디언트는 입력과 같은 모양, 야코비 행렬은 출력×입력으로 씁니다.

11.2 기본 공식

정리 11.1. a∈Rn\mathbf{a} \in \mathbb{R}^n, A∈Rn×nA \in \mathbb{R}^{n\times n}에 대해

  1. ∇x(aTx)=a\nabla_{\mathbf{x}}(\mathbf{a}^T\mathbf{x}) = \mathbf{a}
  2. ∇x(xTAx)=(A+AT)x\nabla_{\mathbf{x}}(\mathbf{x}^TA\mathbf{x}) = (A + A^T)\mathbf{x}, AA가 대칭이면 2Ax2A\mathbf{x}
  3. ∇x∥x∥2=2x\nabla_{\mathbf{x}}\|\mathbf{x}\|^2 = 2\mathbf{x}
  4. ∇x∥Ax−b∥2=2AT(Ax−b)\nabla_{\mathbf{x}}\|A\mathbf{x} - \mathbf{b}\|^2 = 2A^T(A\mathbf{x} - \mathbf{b}) (AA는 m×nm \times n)

증명 (2). xTAx=∑j,kxjAjkxk\mathbf{x}^TA\mathbf{x} = \sum_{j,k}x_jA_{jk}x_k를 xix_i로 편미분하면 j=ij = i인 항에서 ∑kAikxk\sum_kA_{ik}x_k, k=ik = i인 항에서 ∑jxjAji\sum_jx_jA_{ji}가 나옵니다. 둘을 더하면 (Ax)i+(ATx)i(A\mathbf{x})_i + (A^T\mathbf{x})_i입니다. □

1변수의 (ax)′=a(ax)' = a, (ax2)′=2ax(ax^2)' = 2ax와 같은 모양이라 기억하기 쉽습니다. 4번은 3번에 연쇄법칙을 쓴 것입니다.

예제 11.2 (선형회귀). L(β)=∥Xβ−y∥2L(\boldsymbol\beta) = \|X\boldsymbol\beta - \mathbf{y}\|^2의 그래디언트는 2XT(Xβ−y)2X^T(X\boldsymbol\beta - \mathbf{y})이고, 0으로 두면 정규방정식 XTXβ=XTyX^TX\boldsymbol\beta = X^T\mathbf{y}(선형대수 13장)가 한 줄로 나옵니다.

11.3 행렬에 대한 미분

정리 11.3. 크기가 맞는 행렬에 대해

  1. ∂∂Xtr⁡(AX)=AT\dfrac{\partial}{\partial X}\operatorname{tr}(AX) = A^T
  2. ∂∂Xtr⁡(XTAX)=(A+AT)X\dfrac{\partial}{\partial X}\operatorname{tr}(X^TAX) = (A + A^T)X
  3. ∂∂X∥X∥F2=2X\dfrac{\partial}{\partial X}\|X\|_F^2 = 2X (프로베니우스 노름, ∥X∥F2=tr⁡(XTX)=∑Xij2\|X\|_F^2 = \operatorname{tr}(X^TX) = \sum X_{ij}^2)
  4. ∂∂XaTXb=abT\dfrac{\partial}{\partial X}\mathbf{a}^TX\mathbf{b} = \mathbf{a}\mathbf{b}^T
  5. ∂∂Xln⁡det⁡X=(X−1)T\dfrac{\partial}{\partial X}\ln\det X = (X^{-1})^T (XX 가역, det⁡X>0\det X > 0)

증명 (1). tr⁡(AX)=∑i,jAijXji\operatorname{tr}(AX) = \sum_{i,j}A_{ij}X_{ji}이므로 ∂∂Xji=Aij\frac{\partial}{\partial X_{ji}} = A_{ij}, 곧 (j,i)(j, i) 성분이 AijA_{ij}인 행렬 ATA^T입니다. □

증명 (4). aTXb=∑i,jaiXijbj\mathbf{a}^TX\mathbf{b} = \sum_{i,j}a_iX_{ij}b_j이므로 ∂∂Xij=aibj\frac{\partial}{\partial X_{ij}} = a_ib_j입니다. □

증명 (5) 개요. 여인수 전개(선형대수 15장)로 ∂det⁡X∂Xij=Cij\frac{\partial\det X}{\partial X_{ij}} = C_{ij}(여인수)이고, ∂ln⁡det⁡X∂Xij=Cijdet⁡X=((X−1)T)ij\frac{\partial\ln\det X}{\partial X_{ij}} = \frac{C_{ij}}{\det X} = ((X^{-1})^T)_{ij}입니다(수반행렬과 역행렬의 관계). □

대각합(trace)을 쓰는 이유: 스칼라는 1×11 \times 1 행렬이라 s=tr⁡(s)s = \operatorname{tr}(s)이고, 대각합은 순환을 허락합니다(tr⁡(ABC)=tr⁡(CAB)\operatorname{tr}(ABC) = \operatorname{tr}(CAB)). 복잡한 식을 대각합으로 바꿔 미분하는 것이 표준 기법입니다.

11.4 소프트맥스와 교차 엔트로피

분류 모델은 점수 z∈RK\mathbf{z} \in \mathbb{R}^K를 확률로 바꾸는 소프트맥스(softmax) pk=ezk∑jezjp_k = \frac{e^{z_k}}{\sum_je^{z_j}}와, 정답 yy(원-핫 벡터 y\mathbf{y})에 대한 교차 엔트로피(cross-entropy) L=−∑kykln⁡pk=−ln⁡pyL = -\sum_ky_k\ln p_k = -\ln p_y를 씁니다.

정리 11.4. ∇zL=p−y\nabla_{\mathbf{z}}L = \mathbf{p} - \mathbf{y}.

증명. ln⁡py=zy−ln⁡∑jezj\ln p_y = z_y - \ln\sum_je^{z_j}이므로 ∂(−ln⁡py)∂zk=−[k=y]+ezk∑jezj=pk−yk\frac{\partial(-\ln p_y)}{\partial z_k} = -[k = y] + \frac{e^{z_k}}{\sum_je^{z_j}} = p_k - y_k입니다. ([k=y][k = y]는 k=yk = y이면 1, 아니면 0.) □

“예측 확률 − 정답”이라는 놀랍도록 간단한 결과이고, 이것이 분류 신경망 학습의 출발점입니다. 정답 칸의 확률은 올리고 나머지는 내리는 방향입니다.

11.5 신경망 한 층의 그래디언트

예제 11.5. 선형층 z=Wx+b\mathbf{z} = W\mathbf{x} + \mathbf{b}(WW는 K×nK \times n) 뒤에 소프트맥스와 교차 엔트로피가 붙어 있을 때, 연쇄법칙과 정리 11.4로

∂L∂W=(p−y) xT,∂L∂b=p−y,∂L∂x=WT(p−y).\frac{\partial L}{\partial W} = (\mathbf{p} - \mathbf{y})\,\mathbf{x}^T, \qquad \frac{\partial L}{\partial\mathbf{b}} = \mathbf{p} - \mathbf{y}, \qquad \frac{\partial L}{\partial\mathbf{x}} = W^T(\mathbf{p} - \mathbf{y}).

유도. zk=∑jWkjxj+bkz_k = \sum_jW_{kj}x_j + b_k이므로 ∂L∂Wkj=∂L∂zkxj=(pk−yk)xj\frac{\partial L}{\partial W_{kj}} = \frac{\partial L}{\partial z_k}x_j = (p_k - y_k)x_j, 곧 외적 (p−y)xT(\mathbf{p} - \mathbf{y})\mathbf{x}^T입니다(정리 11.3의 4번과 같은 모양). ∂L∂xj=∑k∂L∂zkWkj\frac{\partial L}{\partial x_j} = \sum_k\frac{\partial L}{\partial z_k}W_{kj}는 WT(p−y)W^T(\mathbf{p} - \mathbf{y})입니다. □

마지막 식이 역전파에서 “앞 층으로 넘겨주는 그래디언트”입니다. 앞으로는 WW를 곱하고, 뒤로는 WTW^T를 곱합니다.

모양 확인. WW가 K×nK \times n이면 ∂L∂W\frac{\partial L}{\partial W}도 K×nK \times n이어야 하고, (p−y)xT(\mathbf{p} - \mathbf{y})\mathbf{x}^T는 (K×1)(1×n)=K×n(K\times1)(1\times n) = K \times n입니다. 논문의 식이 맞는지 볼 때 이 모양 확인이 가장 빠른 검산입니다.

11.6 이 장의 요약

함수 그래디언트
aTx\mathbf{a}^T\mathbf{x} a\mathbf{a}
xTAx\mathbf{x}^TA\mathbf{x} (A+AT)x(A + A^T)\mathbf{x}
∥Ax−b∥2\|A\mathbf{x} - \mathbf{b}\|^2 2AT(Ax−b)2A^T(A\mathbf{x} - \mathbf{b})
tr⁡(AX)\operatorname{tr}(AX) ATA^T
aTXb\mathbf{a}^TX\mathbf{b} abT\mathbf{a}\mathbf{b}^T
ln⁡det⁡X\ln\det X X−TX^{-T}
소프트맥스 + 교차 엔트로피 p−y\mathbf{p} - \mathbf{y}

헷갈리면 성분 하나를 미분하고 모으고, 마지막에 모양을 확인합니다.

쓰이는 곳. 모든 신경망 논문의 그래디언트 유도, 가우스 분포의 최대우도 추정(ln⁡det⁡Σ\ln\det\Sigma의 미분), 주의(attention) 메커니즘의 역전파, 행렬 분해 기반 추천 시스템의 학습이 이 장의 공식을 씁니다. 『The Matrix Cookbook』 같은 공식집을 읽을 때도 이 장의 배치 관례를 알아야 맞게 읽을 수 있습니다.

문제

11.1 [계산] · 확인 문제

A=[1203]A = \begin{bmatrix} 1 & 2 \\ 0 & 3 \end{bmatrix}, x=(1,1)\mathbf{x} = (1, 1)일 때 ∇x(xTAx)\nabla_{\mathbf{x}}(\mathbf{x}^TA\mathbf{x})의 성분을 씁니다.

성분 값
첫째 [?]
둘째 [?]
정답
4
8
풀이

(A+AT)x=[2226][11]=(4,8)(A + A^T)\mathbf{x} = \begin{bmatrix} 2 & 2 \\ 2 & 6 \end{bmatrix}\begin{bmatrix} 1 \\ 1 \end{bmatrix} = (4, 8)입니다.

11.2 [계산] · 확인 문제

점수 z=(0,0,ln⁡2)\mathbf{z} = (0, 0, \ln 2), 정답 y=3y = 3(셋째 칸)일 때 소프트맥스 확률과 ∇zL\nabla_{\mathbf{z}}L을 씁니다.

값 답
p1p_1 [?]
p3p_3 [?]
∂L/∂z1\partial L/\partial z_1 [?]
∂L/∂z3\partial L/\partial z_3 [?]
정답
1/4
1/2
1/4
-1/2
풀이

ez=(1,1,2)e^{z} = (1, 1, 2), 합 4이므로 p=(1/4,1/4,1/2)\mathbf{p} = (1/4, 1/4, 1/2). ∇L=p−y=(1/4,1/4,−1/2)\nabla L = \mathbf{p} - \mathbf{y} = (1/4, 1/4, -1/2)입니다.

11.3 [개념] · 확인 문제

WW가 3×53 \times 5 행렬이고 x∈R5\mathbf{x} \in \mathbb{R}^5, z=Wx\mathbf{z} = W\mathbf{x}일 때 ∂L∂W\frac{\partial L}{\partial W}의 모양으로 맞는 식은? (δ=∂L∂z∈R3\boldsymbol\delta = \frac{\partial L}{\partial\mathbf{z}} \in \mathbb{R}^3)

  1. xδT\mathbf{x}\boldsymbol\delta^T
  2. δxT\boldsymbol\delta\mathbf{x}^T
  3. δTx\boldsymbol\delta^T\mathbf{x}
  4. WTδW^T\boldsymbol\delta
정답
2
풀이

∂L∂W\frac{\partial L}{\partial W}는 WW와 같은 3×53 \times 5여야 합니다. δxT\boldsymbol\delta\mathbf{x}^T는 (3×1)(1×5)=3×5(3\times1)(1\times5) = 3\times5입니다. 1번은 5×35\times3, 3번은 크기가 맞지 않고, 4번은 ∂L∂x\frac{\partial L}{\partial\mathbf{x}}(5×15 \times 1)입니다.

11.4 [계산]

X=[2111]X = \begin{bmatrix} 2 & 1 \\ 1 & 1 \end{bmatrix}일 때 ∂∂Xln⁡det⁡X\frac{\partial}{\partial X}\ln\det X의 (1,2)(1, 2) 성분은?

정답
-1
풀이

det⁡X=1\det X = 1, X−1=[1−1−12]X^{-1} = \begin{bmatrix} 1 & -1 \\ -1 & 2 \end{bmatrix}이고 (X−1)T(X^{-1})^T도 같으므로 (1,2)(1, 2) 성분은 −1-1입니다.

11.5 [증명]

성분 계산으로 ∇x∥Ax−b∥2=2AT(Ax−b)\nabla_{\mathbf{x}}\|A\mathbf{x} - \mathbf{b}\|^2 = 2A^T(A\mathbf{x} - \mathbf{b})를 보입니다.

풀이

r=Ax−b\mathbf{r} = A\mathbf{x} - \mathbf{b}, ri=∑jAijxj−bir_i = \sum_jA_{ij}x_j - b_i로 두면 ∥r∥2=∑iri2\|\mathbf{r}\|^2 = \sum_ir_i^2입니다. ∂∂xk∑iri2=∑i2ri∂ri∂xk=∑i2riAik=2(ATr)k\frac{\partial}{\partial x_k}\sum_ir_i^2 = \sum_i2r_i\frac{\partial r_i}{\partial x_k} = \sum_i2r_iA_{ik} = 2(A^T\mathbf{r})_k이므로 그래디언트는 2AT(Ax−b)2A^T(A\mathbf{x} - \mathbf{b})입니다.