home search
Math
Machine Learning
Mathematics for Machine Learning 5.4장: 벡터 연산 - 행렬의 그래디언트
2023. 01. 26

이 내용은 책 Mathematics for machine learning(Marc Peter Deisenroth et al.)을 기반으로 하고 있습니다.

5.3: Gradients of Matrices

5.1장에서는 일변수 함수의, 5.2장에서는 다변수 함수의, 5.3장에서는 벡터값 함수의 미분을 보았다. 5.4장에서는 벡터 혹은 또다른 행렬에 대한 행렬의 그래디언트에 대해 살펴본다.

첫 번째 관점: 자코비안 텐서

벡터/행렬에 대한 행렬의 그래디언트는 편미분값들을 모은 다차원 텐서(다차원 배열) 형태로 나타난다. m X n 크기의 행렬 A의 p X q 크기의 행렬 B에 대한 그래디언트를 구한다고 할 때, 그 결과인 자코비안은 (m X n) X (p X q) 형태의 4차원 행렬 J가 되며, 각각의 요소는 $J_{ijkl} = \cfrac{\partial A_{ij}}{\partial B_{kl}}$ 이다.

이전 장에서 보았던 그림이 이를 나타낸다. (편미분을 합쳐(collating) 자코비안 텐서로 만드는 방법)

image

두 번째 관점: Flattening 활용

또 다른 방법으로는, 행렬이 선형 매핑을 의미한다는 점에서 기인해, $m \times n$ 의 $\mathbb{R}^{m \times n}$ 공간에서 $m n$ 벡터의 $\mathbb{R}^{mn}$ 공간으로 벡터 공간의 동형사상(isomorphism)을 이용한다.

동형사상(isomorphism)

두 벡터공간 V, W 사이에 전단사 맵핑(linear transformation, 일대일 대응)이 존재할 때를 말한다. 전단사 관계가 있을 때 invertible mapping이 된다. 쉽게 말해, 역함수가 존재한다.
출처: 피그티, “(선형대수학) 2.3 Isomorphism

그럼 행렬을 각각 $mn$ , $pq$ 크기의 벡터 둘로 나눌 수 있다. $mn$ 크기의 벡터를 이용한 그래디언트는 $mn \times pq$ 크기의 자코비안이 된다.

실제로는 이처럼 행렬을 벡터로 re-shape한 뒤 자코비안 행렬로 작업하는 것이 선호된다. Chain rule은 간단한 행렬 연산을 만드는데 반해 자코비안 텐서는 각 연산의 차원 확인에 주의해야 하기 때문이다.

이 두 번째 방식 역시 이전 장에서 보았던 그림에서 확인할 수 있다. 행렬을 열벡터를 stacking해 벡터들로 변환하는 방식(flattening)인 것이다.

image

행렬에 대한 벡터의 그래디언트

함수 $\boldsymbol{f} = \boldsymbol{Ax}$ 가 있고, 그래디언트 $\cfrac{\mathrm{d} \boldsymbol{f}}{\mathrm{d} \boldsymbol{A}}$ 를 구해보자. 함수가 벡터로 가는 mapping이기 때문에 행렬에 대한 ‘벡터의 그래디언트’를 구하는 것이다.

$\boldsymbol{f} \in \mathbb{R}^{M}$ 이고, $\boldsymbol{A} \in \mathbb{R}^{M \times N}$ 이며, $\boldsymbol{x} \in \mathbb{R}^{N}$ 이다.

그래디언트의 차원은 $\cfrac{\mathrm{d} \boldsymbol{f}}{\mathrm{d} \boldsymbol{A}} \in \mathbb{R}^{M \times (M \times N)}$ 이고, 그래디언트를 정의대로 ‘편미분의 모음’으로 나타내면 아래와 같다.

\[\cfrac{\mathrm{d} \boldsymbol{f}}{\mathrm{d} \boldsymbol{A}} = \begin{bmatrix} \cfrac{\partial f_1}{\partial \boldsymbol{A}} \\ \vdots \\ \cfrac{\partial f_M}{\partial \boldsymbol{A}} \end{bmatrix} , \ \cfrac{\partial f_i}{\partial \boldsymbol{A}} \in \mathbb{R}^{1 \times (M \times N)}\]

따라서, 그라디언트를 구하기 위해 A에 대한 각 함수의 편미분($\frac{\partial f_i}{\partial \boldsymbol{A}} \in \mathbb{R}^{1 \times (M \times N)}$)을 구해야 한다.

각 함수는 아래와 같이 행렬과 벡터의 곱으로 이루어져있다.

\[f_i = \sum \limits_{j=1}^N A_{ij} x_j \ (i = 1, \cdots, M)\]

그럼 A의 한 요소에 대한 각 함수의 편미분은 아래와 같다.

\[\cfrac{\partial f_i}{\partial A_{iq}} = x_q \ (q = 1, \cdots, N)\]

위 식을 A의 한 행, 즉 q = 1 ~ N을 전부 모으면 그것은 곧 x 전체와 같다. 따라서 A의 한 행에 대한 각 f의 편미분은 아래처럼 나타낼 수 있다. $f_i$ 함수일 때 A의 $i$ 행에 대한 편미분은

\[\cfrac{\partial f_i}{\partial A_{i,\ :}} = \boldsymbol{x}^T \in \mathbb{R}^{1 \times 1 \times N}\]

이고, 그 외 행에 대한 편미분은

\[\cfrac{\partial f_i}{\partial A_{k \ne i,\ :}} = \boldsymbol{0}^T \in \mathbb{R}^{1 \times 1 \times N}\]

따라서 A에 대한 각 함수의 편미분 $\frac{\partial f_i}{\partial \boldsymbol{A}} \in \mathbb{R}^{1 \times (M \times N)}$ 은

\[\cfrac{\partial f_i}{\partial \boldsymbol{A}} = \begin{bmatrix} \boldsymbol{0}^T \\ \vdots \\ \boldsymbol{0}^T \\ \boldsymbol{x}^T \\ \boldsymbol{0}^T \\ \vdots \\ \boldsymbol{0}^T \end{bmatrix} \in \mathbb{R}^{1 \times (M \times N)}\]

이고, 이를 모든 i에 대해(1부터 M까지) 수행하면 최종적으로 $M \times (M \times N)$ 형태가 된다.

행렬에 대한 행렬의 그래디언트

행렬과 행렬의 mapping인 함수 $\boldsymbol{f} : \mathbb{R}^{M \times N} \rightarrow \mathbb{R}^{N \times N}$ 와 행렬 $\boldsymbol{R} \in \mathbb{R}^{M \times N}$ 이 있다고 하자. 이때 함수는 아래와 같은 연산을 한다. 입력으로 들어오는 행렬(R)의 행렬곱을 수행해 또다른 행렬(K)을 만들어내는 것이다.

\[\boldsymbol{f}(\boldsymbol{R}) = \boldsymbol{R}^T \boldsymbol{R} =: \boldsymbol{K} \in \mathbb{R}^{N \times N}\]

여기서 행렬 R에 대한 행렬 K의 그래디언트를 구해보자. 아래에서도 알 수 있듯이 그래디언트 결과는 텐서의 형태이다.

\[\cfrac{\mathrm{d} \boldsymbol{K}}{\mathrm{d} \boldsymbol{R}} \in \mathbb{R}^{(N \times N) \times (M \times N)}\]

함수의 결과인 K 행렬의 (p, q)번째 요소를 $K_{pq}$라고 하면, 이는 곧 R의 열 $\boldsymbol{r}_i$ 의 내적이다.

\[K_{pq} = \boldsymbol{r}_p^T \boldsymbol{r}_q = \sum \limits_{m=1}^M R_{mp} R_{mq} \ (p, q = 1, \cdots, N)\]

따라서 K의 한 원소의 R에 대한 그래디언트는

\[\cfrac{\mathrm{d} K_{pq}}{\mathrm{d} \boldsymbol{R}} \in \mathbb{R}^{1 \times M \times N}\]

이다. 그럼 이 편미분을 풀어보자.

\[\cfrac{\partial K_{pq}}{\partial R_{ij}} = \sum \limits_{m=1}^M \cfrac{\partial R_{mp} R_{mq}}{\partial R_{ij}} = \partial_{pqij} = \begin{cases} R_{iq} & \mathrm{if} \ j=p, p \ne q \\ R_{ip} & \mathrm{if} \ j=q, p \ne q \\ 2R_{iq} & \mathrm{if} \ j=p, p = q \\ 0 & \mathrm{otherwise} \end{cases}\]

전체 그라디언트는 $(N \times N) \times (M \times N)$ 형태고, 텐서의 각 요소는 $\partial_{pqij} \ ( p, q, j = 1, \cdots, N \ , \ i=1, \cdots, M)$ 이다.

arrow_upward arrow_downward
loading