23  벡터 미분

노트
  • 이 장은 부교재 139-159쪽에 대한 정리입니다.
  • 5.4 Gradients of Matrices 는 시험범위에 포함되지 않습니다.
  • 5.6.2 Automatic Differentiation 은 Exaample 5.14 를 꼭 읽어보세요.

23.1 용어

  • vector differential: 벡터 미분
  • partial derivative: 편미분
  • gradient: 그레디언트
  • Jacobian: 야코비안, 자코비안

23.2 벡터 미분의 표기법

이제 다변량함수(multivariate function), \(f: \RR^n \rightarrow \RR^m\)에 대한 미분을 생각해보자.

먼저 간단한 예제를 고려해 보자. 두 열벡터 \(\pmb x=(x_1,x_2)^t \in \RR_2\), \(\pmb y=(y_1,y_2,y_3)^t \in \RR^3\)를 고려하고 다음과 같은 함수로 두 벡터의 관계가 정의된다고 하자.

\[ y_1 = x_1^2 + x_2, \quad y_2= \exp (x_1) + 3 x_2, \quad y_3 = \sin(x_1) + x_2^3 \tag{23.1}\]

위의 관계를 함수 관계 \(\pmb f: \RR^2 \rightarrow \RR^3\) 로 나타내보면

\[ \pmb f(\pmb x) = \begin{bmatrix} f_1(\pmb x) \\ f_2 (\pmb x) \\ f_3(\pmb x) \end{bmatrix} = \begin{bmatrix} x_1^2 + x_2 \\ \exp (x_1) + 3 x_2 \\ \sin(x_1) + x_2^3 \end{bmatrix} \]

이러한 경우 다변량 함수 \(\pmb f\)를 벡터 \(\pmb x\)로 미분하려면, 즉 미분 표기법을 이용하려면 편미분을 한 결과를 행렬의 형태를 정해야한다.

\[ \pardifftwo{ \pmb f}{\pmb x} = (n \times m)-\text{matrix} \quad \text{ or } \quad (m \times n)-\text{matrix}? \]

일단 각각의 편미분 \(\pardifftwo{f_i}{x_j}\)를 구해야 하며 이는 scalar 미분으로 쉽게 구해진다.

\[ \begin{aligned} \pardifftwo{ f_1}{ x_1} & = 2x_1, & \quad \pardifftwo{ f_2}{ x_1} & = \exp(x_1), & \quad \pardifftwo{ f_3}{ x_1} & = \cos(x_1) \\ \pardifftwo{ f_1}{ x_2} & = 1, & \quad \pardifftwo{ f_2}{ x_1} & = 3, & \quad \pardifftwo{ f_3}{ x_1} & = 3 x_2^2 \\ \end{aligned} \tag{23.2}\]

이제 이제 편미분값들을 행렬의 형태로 정리해보자. 편미분을 행렬에 배치할 떄 다음과 같은 규칙을 사용할 것이다.

  • 행렬의 행은 \(\pmb f\)의 차원 \(m\) 과 같다.
  • 행렬의 열은 \(\pmb x\)의 차원 \(n\) 과 같다.

위와 같이 편미분을 배치하는 벡타 미분 표기법을 분자 표기법 (Numerator layout)이라고 한다.

분자 표기법 (Numerator layout)

\[ \pmb J = \nabla_x \pmb x =\pardifftwo{ \pmb f}{\pmb x} \equiv \pardifftwo{ \pmb f}{\pmb x^t} \underset{def}{\equiv} \begin{bmatrix} \pardifftwo{ f_1}{ x_1} & \pardifftwo{ f_1}{ x_2} \\ \pardifftwo{ f_2}{ x_1} & \pardifftwo{ f_2}{ x_2} \\ \pardifftwo{ f_3}{ x_1} & \pardifftwo{ f_3}{ x_2} \end{bmatrix} = \begin{bmatrix} 2x_1 & 1 \\ \exp(x_1) & 3 \\ \cos(x_1) & 3x_2^2 \end{bmatrix} \] \(\pmb J\)는 야코비안 행렬(Jacobian matrix)이라고 부른다.

이제 이러한 분자표기법의 특별한 결과를 알아보자

  • \(f: \RR^n \rightarrow \RR^1\) 인 경우

    \(f: \RR^n \rightarrow \RR^1\) 인 경우 벡터미분 결과를 그레디언트(gradient)라고 부르며 다음과 같이 표기된다.

\[ \nabla_x f = \pardifftwo{ f}{\pmb x} = \begin{bmatrix} \pardifftwo{ f}{x_1} & \pardifftwo{ f}{x_2} & \cdots & \pardifftwo{ f}{x_n} \end{bmatrix} \]

  • \(f: \RR^1 \rightarrow \RR^m\) 인 경우

\[ \pardifftwo{\pmb f}{x} = \begin{bmatrix} \pardifftwo{ f_1}{x} \\ \pardifftwo{ f_2}{x} \\ \vdots \\ \pardifftwo{ f_m}{x} \end{bmatrix} \]

참고로 식 23.1 에서 정의한 함수 관계를 두 벡터 \(\pmb x\) 와 y$ 의 사상관계로 보면

\[ \pmb f : \pmb x \mapsto \pmb y \] 다음과 같이 그레디언트 벡터를 표기할 수 있다.

\[ \pardifftwo{ \pmb f}{\pmb x} = \pardifftwo{ \pmb y}{\pmb x} = \begin{bmatrix} \pardifftwo{ y_1}{ x_1} & \pardifftwo{ y_1}{ x_2} \\ \pardifftwo{ y_2}{ x_1} & \pardifftwo{ y_2}{ x_2} \\ \pardifftwo{ y_3}{ x_1} & \pardifftwo{ y_3}{ x_2} \end{bmatrix} \]

23.3 함성함수의 미분법

이제 합성함수의 미분법(chain rule)에 대하여 알아보자.

두 개의 함수

\[ \pmb g :\RR^n \mapsto \RR^m, \quad \pmb f :\RR^m \mapsto \RR^p \] 가 있을 때, \(\pmb f\)\(\pmb g\)의 합성함수 \(\pmb h\)는 다음과 같이 정의된다.

\[ \pmb h( \pmb x) = \pmb f( \pmb g( \pmb x)) = \pmb f \circ \pmb g\] 즉,

\[ \pmb h : \RR^n \mapsto \RR^m \mapsto \RR^p \]

이러한 합성함수의 미분은 다음과 같이 계산된다.

\[ \pardifftwo{ \pmb h}{\pmb x} = \pardifftwo{ \pmb f \circ \pmb g}{\pmb x} = \pardifftwo{ \pmb f}{\pmb g} \pardifftwo{ \pmb g}{\pmb x} \tag{23.3}\]

식 23.3 에서 \(\pardifftwo{ \pmb f}{\pmb g}\)\(p \times m\) Jacovian 벡터이고

\[ \pardifftwo{ \pmb f}{\pmb g} \begin{bmatrix} \pardifftwo{ f_1}{ g_1} & \pardifftwo{ f_1}{ g_2} & \cdots & \pardifftwo{ f_1}{ g_m} \\ \pardifftwo{ f_2}{ g_1} & \pardifftwo{ f_2}{ g_2} & \cdots & \pardifftwo{ f_2}{ g_m} \\ \vdots & \vdots & \ddots & \vdots \\ \pardifftwo{ f_p}{ g_1} & \pardifftwo{ f_p}{ g_2} & \cdots & \pardifftwo{ f_p}{ g_m} \\ \end{bmatrix} =(p \times m) \]

\(\pardifftwo{ \pmb g}{\pmb x}\)\(n \times m\) Jacovian 벡터이다

\[ \pardifftwo{ \pmb g}{\pmb x} = \begin{bmatrix} \pardifftwo{ g_1}{ x_1} & \pardifftwo{ g_1}{ x_2} & \cdots & \pardifftwo{ g_1}{ x_n} \\ \pardifftwo{ g_2}{ x_1} & \pardifftwo{ g_2}{ x_2} & \cdots & \pardifftwo{ g_2}{ x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \pardifftwo{ g_m}{ x_1} & \pardifftwo{ g_m}{ x_2} & \cdots & \pardifftwo{ g_m}{ x_n} \\ \end{bmatrix} = (n \times m) \]

함성함수의 미분 공식을 차원으로 나타내면 다음과 같다.

\[ \underset{ p \times n} {\pardifftwo{ \pmb h}{\pmb x}} = \underset{ p \times m} {\pardifftwo{ \pmb f}{\pmb g}} \underset{ m \times n} {\pardifftwo{ \pmb g}{\pmb x}} \]

23.4 두 벡터 내적의 미분

23.4.1 상수벡터와 변수벡터의 내적

먼저 상수 벡터 \(\pmb a\)와 변수 벡터 \(\pmb x\)의 내적의 미분을 생각해 보자.

참고로 다음과 같이 두 벡터의 내적은 스칼라이다.

\[ \pmb a^T \pmb x = \pmb x^T \pmb a = a_1 x_1 + a_2x_2 + \dots + a_n x_n \]

따라서 그레이디언트를 구하는 방법과 같이 결과는 행백터로 표기된다.

\[ \pardifftwo{ \pmb a^T \pmb x}{\pmb x} = \pardifftwo{ \pmb x^T \pmb a}{\pmb x} = \pmb a^T =[a_1, a_2, \dots, a_n] \]

위의 식에서 상수벡터 \(\pmb a\)는 가 전치로 앞에 나타나는 표현 \(\pmb a^T \pmb x\) 를 사용하면 결과 벡터 \(\pmb a^T\)가 행벡터로 그대로 나타나지므로 내적의 미분 표기로 사용할 것이다.

\[ \pardifftwo{ \pmb a^T \pmb x}{\pmb x} = \pmb a^T \pardifftwo{ \pmb x}{\pmb x} =\pmb a^T \tag{23.4}\]

23.4.2 상수벡터와 함수벡터의 내적

더 나아가서 상수 벡터 \(\pmb a\)와 함수 벡터 \(\pmb f\)의 내적의 미분도 식 23.4 을 표시하는 동일한 논리로 다음과 같이 표기할 수 있다.

\[ \pardifftwo{ \pmb a^T \pmb f}{\pmb x} = \pmb a^T \pardifftwo{ \pmb f}{\pmb x} \tag{23.5}\]

참고로 식 23.5 에서 \(\pardifftwo{ \pmb f}{\pmb x}\)는 행벡터가 아닌 행렬로 나타날 수 있다.

23.4.3 함수벡터와 함수벡터의 내적

이제 다음과 같이 같은 공간으로 사상되는 두 함수 \(\pmb f\)\(\pmb g\) 의 내적을 생각해 보자.

\[ \pmb f : \RR^n \mapsto \RR^m, \quad \pmb g : \RR^n \mapsto \RR^m\] 두 함수의 내적을 미분하는 경우 곱셉 법칙을 적용하여야 하는데 행렬의 곱셉에서는 교환법칙이 성립되지 않으므로 순서에 주의해야 한다.

내적 \(\pmb f^T \pmb g\) 를 각각 따로 미분해야 하는데 각 벡터에 대해 따로 미분을 실행해 보자

  • \(\pmb f\) 를 미분하는 경우 \(\pmb g\) 는 상수 벡터 \(\pmb a\) 로 취급한다. 그리고 식 23.5 를 적용한다.

\[ \pardifftwo{ \pmb f^T \pmb g}{\pmb x} = \pardifftwo{ \pmb f^T \pmb a}{\pmb x} = \pardifftwo{ \pmb a^T \pmb f}{\pmb x} = \pmb a^T \pardifftwo{ \pmb f}{\pmb x} = \pmb g^T \pardifftwo{ \pmb f}{\pmb x} \tag{23.6}\]

  • \(\pmb g\) 를 미분하는 경우 \(\pmb f\) 는 상수 벡터 \(\pmb a\) 로 취급한다. 그리고 식 23.5 를 적용한다.

\[ \pardifftwo{ \pmb f^T \pmb g}{\pmb x} = \pardifftwo{ \pmb a^T \pmb g}{\pmb x} = \pmb a^T \pardifftwo{ \pmb g}{\pmb x} = \pmb f^T \pardifftwo{ \pmb f}{\pmb x} \tag{23.7}\]

이제 위의 두 결과 식 23.6식 23.7 를 합치면 다음과 같은 최종적인 결과를 얻을 수 있다.

\[ \pardifftwo{ \pmb f^T \pmb g}{\pmb x} = \pmb g^T \pardifftwo{ \pmb f}{\pmb x} + \pmb f^T \pardifftwo{ \pmb g}{\pmb x} \tag{23.8}\]

23.5 벡터 미분의 응용

23.5.1 선형사상의 미분상

이제 앞에서 배운 벡터의 미분을 이용하여 유용한 응용 공식을 유도해보자.

먼저 선형변환 \(\pmb y = \pmb A \pmb x\) 를 생각해 보자. 이때 (M N)-\(\pmb A\)는 상수 행렬이다. 이때 \(\pmb y\)\(\pmb x\)로 미분하면 다음과 같다.

먼저 행렬 \(\pmb A\)\(i\) 번째 행을 \(\pmb a_i^T\)라고 하면

\[ \pmb A = \begin{bmatrix} A_{11} & A_{12} & \dots & A_{1N} \\ A_{21} & A_{22} & \dots & A_{2N} \\ \vdots & \vdots & \ddots & \vdots \\ A_{M1} & A_{M2} & \dots & A_{MN} \\ \end{bmatrix}= \begin{bmatrix} \pmb a_1^T \\ \pmb a_2^T \\ \vdots \\ \pmb a_M^T \\ \end{bmatrix} \]

선형변환 \(\pmb f(\pmb x) = \pmb A \pmb x\) 로 정의하면 다음과 같이 나타낼 수 있다.

\[ \pmb A \pmb x= \begin{bmatrix} \pmb a_1^T \pmb x \\ \pmb a_2^T \pmb x \\ \vdots \\ \pmb a_M^T \pmb x \\ \end{bmatrix} = \begin{bmatrix} f_1(\pmb x) \\ f_2(\pmb x) \\ \vdots \\ f_M(\pmb x) \\ \end{bmatrix} = \pmb f(\pmb x) \]

따라서

\[ \pardifftwo{\pmb A \pmb x}{\pmb x} = \pardifftwo{\pmb f (\pmb x)}{\pmb x} = \begin{bmatrix} \pardifftwo{f_1}{x_1} & \pardifftwo{f_1}{x_2} & \dots & \pardifftwo{f_1}{x_N} \\ \pardifftwo{f_2}{x_1} & \pardifftwo{f_2}{x_2} & \dots & \pardifftwo{f_2}{x_N} \\ \vdots & \vdots & \ddots & \vdots \\ \pardifftwo{f_M}{x_1} & \pardifftwo{f_M}{x_2} & \dots & \pardifftwo{f_M}{x_N} \\ \end{bmatrix} = \begin{bmatrix} A_{11} & A_{12} & \dots & A_{1N} \\ A_{21} & A_{22} & \dots & A_{2N} \\ \vdots & \vdots & \ddots & \vdots \\ A_{M1} & A_{M2} & \dots & A_{MN} \\ \end{bmatrix} = \pmb A \] 따라서 선형사상의 미분은 그 자신이다.

\[ \pardifftwo{\pmb A \pmb x}{\pmb x} = \pmb A \tag{23.9}\]

23.5.2 이차형식의 미분

이차형식 \(f(\pmb x) = \pmb x^T \pmb B \pmb x\) 을 미분하는 경우 식 23.8 을 적용한다. 이 경우 \(\pmb f= \pmb x^T\) 이고 \(\pmb g = \pmb B \pmb x\) 이라고 놓고 식 23.8 을 적용하면 다음과 같다.

\[ \begin{aligned} \pardifftwo{\pmb x^T \pmb B \pmb x}{\pmb x} & = \pardifftwo{\pmb x^T (\pmb B \pmb x)}{\pmb x} \\ & = (\pmb B \pmb x)^T \pardifftwo{ \pmb x}{\pmb x} + \pmb x^T \pardifftwo{ (\pmb B \pmb x)}{\pmb x} \\ & = \pmb x^T \pmb B^T + \pmb x^T \pmb B \\ & = \pmb x^T (\pmb B^T + \pmb B) \end{aligned} \]

만약 행렬 \(\pmb B\)가 대칭행렬이면 \(\pmb B^T = \pmb B\) 이므로 다음과 같이 간단하게 나타낼 수 있다.

\[ \pardifftwo{\pmb x^T \pmb B \pmb x}{\pmb x} = \pmb x^T (\pmb B + \pmb B) = 2 \pmb x^T \pmb B \tag{23.10}\]

23.5.3 최소제곱법의 미분

부교재 Example 5.11 의 내용을 다음과 같이 정리할 수 있다.

\[ \pmb y = \pmb \Phi \pmb \theta, \quad\]

여기서 \(\boldsymbol{\theta} \in \mathbb{R}^D\) 는 모수벡터(parameter vector), \(\boldsymbol{\Phi} \in \mathbb{R}^{N \times D}\) are 입력변수(input features), \(\boldsymbol{y} \in \mathbb{R}^N\) are the 관측값 벡터(observation vector).

다음으로 손실함수(loss function) \(L\) 과 오타벡터 $$ 를 다음과 같이 정의하자

\[ \begin{aligned} & L(\boldsymbol{e}):=\|\boldsymbol{e}\|^2 = \pmb e^T \pmb e\\ & \boldsymbol{e}(\boldsymbol{\theta}):=\boldsymbol{y}-\boldsymbol{\Phi} \boldsymbol{\theta} . \end{aligned} \]

이때 손실함수 \(L\) 을 최소화하는 \(\boldsymbol{\theta}\) 를 구하는 문제는 손실함수 \(L\)\(\boldsymbol{\theta}\) 로 미분하여 0 이 되는 \(\boldsymbol{\theta}\) 를 구하는 문제로 바뀐다.

이러한 경우 손실함수 \(L\)\(\boldsymbol{\theta}\) 로 미분하는 경우 다음과 같이 정리할 수 있다.

\[ \begin{aligned} \pardifftwo{L}{\pmb \theta} & = \pardifftwo{L}{\pmb e} \pardifftwo{\pmb e}{\pmb \theta} \\ & = \pardifftwo{\pmb e^T \pmb e}{\pmb e} \pardifftwo{(\pmb y - \pmb \Phi \pmb \theta)}{\pmb \theta} \\ & = 2\pmb e^T \pardifftwo {\pmb \Phi \pmb \theta}{\pmb \theta} \\ & = 2\pmb e^T \pmb \Phi \\ & = 2(\boldsymbol{y}-\boldsymbol{\Phi} \boldsymbol{\theta} ) ^T \pmb \Phi \\ \end{aligned} \] 참고로 위의 식에서 첫 번째 식은 합성함수의 공식(식 23.3), 세 번째 식은 이차형식의 미분(식 23.10) 과 선형사상의 미분(식 23.9) 을 적용하였다.