작성자: admin 작성일시: 2016-05-17 12:19:08 조회수: 1795 다운로드: 76
카테고리: 기초 수학 태그목록:

행렬의 미분

지금까지는 행렬의 원소로 스칼라 값, 즉 숫자를 사용했지만 사실 함수도 행렬의 원소가 될 수 있다.

$$ f(x) = \begin{bmatrix} x^2 & 2x \\ \log x & e^{x^2} \end{bmatrix} $$

이는 함수의 종속 변수가 행렬 또는 벡터인 경우라고 볼 수 있다.

반대로 여러개의 입력을 가지는 다변수 함수는 함수의 독립 변수가 벡터인 경우로 볼 수 있다.

$$ f(x_1, x_2) = f\left( \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} \right) $$

이를 확장하면 행렬을 입력으로 가지는 것도 가능하다.

이러한 행렬 함수를 미분하는 것을 행렬 미분이라고 한다. 사실 행렬 미분은 정확하게는 미분이 아닌 편미분(partial derivative)이지만 편의상 미분이라고 서술하도록 한다.

또한 행렬 미분에는 분자 중심 표현법(Numerator-layout notation)과 분모 중심 표현법(Denominator-layout notation) 두 가지가 있는데 데이터 분석에는 주로 분모 중심 표현법이 사용되므로 여기에서도 분모 중심 표현법으로 서술한다.

스칼라를 벡터로 미분

데이터 분석에서는 함수의 종속 변수 $y$ 가 스칼라이고 독립 변수 $x$ 가 벡터(다차원)인 경우가 일반적이다.

따라서 편미분 값도 $\frac{\partial y}{\partial x_1}, \frac{\partial y}{\partial x_2}, \cdots$ 등으로 여러 개가 존재한다.

이렇게 스칼라를 벡터로 미분하는 경우에는 결과를 (열) 벡터로 표시한다. 이렇게 만들어진 벡터를 그레디언트 벡터(gradient vector)라고 하고 $\nabla y$ 로 표기하기도 한다.

$$ \nabla y = \frac{\partial y}{\partial \mathbf{x}} = \begin{bmatrix} \frac{\partial y}{\partial x_1}\\ \frac{\partial y}{\partial x_2}\\ \vdots\\ \frac{\partial y}{\partial x_n}\\ \end{bmatrix} $$

벡터 미분 규칙 1: 벡터 일차항

$$\frac{\partial \mathbf{w}^{T}\mathbf{x}}{\partial \mathbf{x}} = \frac{\partial \mathbf{x}^{T}\mathbf{w}}{\partial \mathbf{x}} = \mathbf{w}$$

(증명)

$$ \dfrac{\partial (\mathbf{w}^T \mathbf{x})}{\partial \mathbf{x}}= \begin{bmatrix} \dfrac{\partial (\mathbf{w}^T \mathbf{x})}{\partial x_1} \\ \dfrac{\partial (\mathbf{w}^T \mathbf{x})}{\partial x_2} \\ \vdots \\ \dfrac{\partial (\mathbf{w}^T \mathbf{x})}{\partial x_N} \\ \end{bmatrix} = \begin{bmatrix} \dfrac{\partial (w_1 x_1 + \cancel{w_2 x_2} + \cdots + \cancel{w_N x_N})}{\partial x_1} \\ \dfrac{\partial (\cancel{w_1 x_1} + w_2 x_2 + \cdots + \cancel{w_N x_N})}{\partial x_2} \\ \vdots \\ \dfrac{\partial (\cancel{w_1 x_1} + \cancel{w_2 x_2} + \cdots + w_N x_N)}{\partial x_N} \\ \end{bmatrix} = \begin{bmatrix} w_1 \\ w_2 \\ \vdots \\ w_N \\ \end{bmatrix} = \mathbf{w} $$

벡터 미분 규칙 2: 벡터 이차항

$$\frac{\partial \mathbf{x}^{T}\mathbf{A}\mathbf{x}}{\partial \mathbf{x}} = (\mathbf{A} + \mathbf{A}^{T})\mathbf{x}$$

(증명)

$$ \begin{eqnarray} \dfrac{\partial (\mathbf{x}^{T}\mathbf{A}\mathbf{x})}{\partial \mathbf{x}} &=& \begin{bmatrix} \dfrac{\partial (\mathbf{x}^{T}\mathbf{A}\mathbf{x})}{\partial x_1} \\ \dfrac{\partial (\mathbf{x}^{T}\mathbf{A}\mathbf{x})}{\partial x_2} \\ \vdots \\ \dfrac{\partial (\mathbf{x}^{T}\mathbf{A}\mathbf{x})}{\partial x_N} \\ \end{bmatrix} \\ &=& \begin{bmatrix} \dfrac{\partial (\sum_{i=1}^{N} \sum_{j=1}^{N} a_{ij} x_i x_j)}{\partial x_1} \\ \dfrac{\partial (\sum_{i=1}^{N} \sum_{j=1}^{N} a_{ij} x_i x_j)}{\partial x_2} \\ \vdots \\ \dfrac{\partial (\sum_{i=1}^{N} \sum_{j=1}^{N} a_{ij} x_i x_j)}{\partial x_N} \\ \end{bmatrix} \\ &=& \begin{bmatrix} \dfrac{\partial \left( \begin{matrix} a_{11}x_1x_1 + a_{12}x_1x_2 + \cdots + a_{1N}x_1x_N + \\ a_{21}x_2x_1 + \cancel{a_{22}x_2x_2} + \cdots + \cancel{a_{2N}x_2x_N} + \\ \cdots \\ a_{N1}x_Nx_1 + \cancel{a_{N2}x_Nx_2} + \cdots + \cancel{a_{NN}x_Nx_N} \end{matrix} \right)}{\partial x_1} \\ \dfrac{\partial \left( \begin{matrix} \cancel{a_{11}x_1x_1} + a_{12}x_1x_2 + \cdots + \cancel{a_{1N}x_1x_N} + \\ a_{21}x_2x_1 + a_{22}x_2x_2 + \cdots + a_{2N}x_2x_N + \\ \cdots \\ \cancel{a_{N1}x_Nx_1} + a_{N2}x_Nx_2 + \cdots + \cancel{a_{NN}x_Nx_N} \end{matrix} \right)}{\partial x_2} \\ \vdots \\ \end{bmatrix} \\ &=& \begin{bmatrix} \sum_{i=1}^{N} a_{1i} x_i + \sum_{i=1}^{N} a_{i1} x_i\\ \sum_{i=1}^{N} a_{2i} x_i + \sum_{i=1}^{N} a_{i2} x_i\\ \vdots \\ \sum_{i=1}^{N} a_{Ni} x_i + \sum_{i=1}^{N} a_{iN} x_i\\ \end{bmatrix} \\ &=& \begin{bmatrix} \sum_{i=1}^{N} a_{1i} x_i\\ \sum_{i=1}^{N} a_{2i} x_i\\ \vdots \\ \sum_{i=1}^{N} a_{Ni} x_i\\ \end{bmatrix} + \begin{bmatrix} \sum_{i=1}^{N} a_{i1} x_i \\ \sum_{i=1}^{N} a_{i2} x_i \\ \vdots \\ \sum_{i=1}^{N} a_{iN} x_i \\ \end{bmatrix} \\ &=& \mathbf{A} \mathbf{x} + \mathbf{A}^T \mathbf{x} = (\mathbf{A} + \mathbf{A}^T)\mathbf{x} \end{eqnarray} $$

위의 두 가지 경우는 1차 다항식과 2차 다항식에 대한 스칼라 미분과 비슷하다. 두 경우를 비교해 보면 외우는데 도움이 된다.

스칼라 미분 벡터/행렬 미분
$$ax \;\; \rightarrow \;\; a$$ $$w^Tx \;\; \rightarrow \;\; w$$
$$ax^2 \;\; \rightarrow \;\; 2ax$$ $$x^TAx \;\; \rightarrow \;\; (A+A^T)x$$

벡터를 스칼라로 미분

만약 함수의 종속 변수 $y$ 가 벡터(다차원 데이터)이고 독립 변수 $x$ 가 스칼라인 경우는 함수가 여러 개라고 보는 것과 마찬가지이다.

$$ y_1 = f_1(x) $$$$ y_2 = f_2(x) $$$$ \vdots $$$$ y_m = f_m(x) $$$$ \downarrow $$$$ \mathbf{y} = \begin{bmatrix} y_1 \\ y_2 \\ \vdots\\ y_m \\ \end{bmatrix} = \mathbf{f}(x) $$

따라서 미분 값도 $\frac{\partial y_1}{\partial x}, \frac{\partial y_2}{\partial x}, \cdots$ 등으로 여러 개가 존재한다.

벡터를 스칼라로 미분하는 경우에는 결과를 행 벡터로 표시한다.

$$ \frac{\partial \mathbf{y}}{\partial x} = \left[ \frac{\partial y_1}{\partial x} \frac{\partial y_2}{\partial x} \cdots \frac{\partial y_m}{\partial x} \right]. $$

벡터를 벡터로 미분

함수의 종속 변수와 독립 변수가 모두 벡터(다차원) 데이터인 경우에는 독립 변수 각각과 종속 변수 각각의 조합에 대해 모두 미분이 존재한다. 따라서 도함수는 행렬 형태가 된다. 이렇게 만들어진 도함수의 행렬을 자코비안 행렬(Jacobian matrix) 이라고 한다.

$$ \mathbf J = \frac{d\mathbf y}{d\mathbf x} = \begin{bmatrix} \dfrac{\partial y_1}{\partial \mathbf x}^T \\ \cdots \\ \dfrac{\partial y_m}{\partial \mathbf x}^T \end{bmatrix} = \begin{bmatrix} \dfrac{\partial y_1}{\partial x_1} & \cdots & \dfrac{\partial y_1}{\partial x_n}\\ \vdots & \ddots & \vdots\\ \dfrac{\partial y_m}{\partial x_1} & \cdots & \dfrac{\partial y_m}{\partial x_n} \end{bmatrix} $$

스칼라를 행렬로 미분

종속 변수가 스칼라 값이고 독립 변수가 행렬인 경우에는 도함수 행렬의 모양이 독립 변수 행렬과 일치한다.

$$ \frac{\partial y}{\partial \mathbf{X}} = \begin{bmatrix} \frac{\partial y}{\partial x_{11}} & \frac{\partial y}{\partial x_{12}} & \cdots & \frac{\partial y}{\partial x_{1n}}\\ \frac{\partial y}{\partial x_{21}} & \frac{\partial y}{\partial x_{22}} & \cdots & \frac{\partial y}{\partial x_{2n}}\\ \vdots & \vdots & \ddots & \vdots\\ \frac{\partial y}{\partial x_{m1}} & \frac{\partial y}{\partial x_{m2}} & \cdots & \frac{\partial y}{\partial x_{mn}}\\ \end{bmatrix} $$

행렬 미분 규칙 3: 행렬 1차항

$$ \dfrac{\partial \text{tr} (\mathbf{B}\mathbf{A})}{\partial \mathbf{A}} = \mathbf{B}^T$$

(증명)

$$ \text{tr}(\mathbf{B}\mathbf{A}) = \sum_{i=1}^n \sum_{j=1}^n b_{ji} a_{ij} $$$$ \dfrac{\partial \text{tr} (\mathbf{B}\mathbf{A})}{\partial a_{ij}} = b_{ji} $$

행렬 미분 규칙 4: 행렬 로그

$$ \dfrac{\partial \log \det \mathbf{A} }{\partial \mathbf{A}} = (\mathbf{A}^{-1})^T $$

(증명)

$$ \dfrac{\partial}{\partial a_{i,j}} \det A = C_{i,j} $$$$ \dfrac{\partial}{\partial A} \det A = C = (\det A) (A^{-1})^T $$$$ \dfrac{d}{dx} \log f(x) = \dfrac{f'(x)}{f(x)} = (\det A) (A^{-1})^T / \det A = (A^{-1})^T $$

참고 문헌

행렬 미분에 대해 더 자세한 내용은 다음과 같은 문헌을 참조한다.

질문/덧글

행렬 미분 규칙 4 : 행렬 로그 에서 moon*** 2016년 9월 25일 9:55 오후

행렬 미분 규칙 4 : 행렬 로그 에서

증명 마지막 부분에는 A의 역행렬이 최종 해로 나왔는데

증명해야할 식의 답이 A 역행렬의 Transpose가 되는 이유가 무엇인가요?

답변: 행렬 미분 규칙 4 : 행렬 로그 에서 관리자 2016년 9월 26일 7:54 오전

두번째 등식에서 실수가 있었습니다. 수정하였습니다.
이 등식이 나오는 부분은 https://www.datascienceschool.net/view-notebook/d6205659aff0413797c22552947aec83/#행렬식 입니다.

사용자에 의해 삭제되었습니다. tyui*** 2016년 11월 28일 8:01 오후

사용자에 의해 삭제되었습니다.