지난 글 (스칼라(scalar)를 벡터(vector)로 미분 하는 방법)에서 스칼라를 벡터로 미분하는 방법에 대해 알아보았다. 여기서 생각을 확장해서 벡터를 벡터로 미분하는 방법에 대해 보자. 벡터에서 벡터로 미분하는 방법은 [1]에 설명되어있는데 내 식대로 정리를 해보겠다. 지난 글 (스칼라(scalar)를 벡터(vector)로 미분 하는 방법)에서 부족했던 스칼라를 벡터로 미분했을 때의 값의 모양에 대해 먼저 살펴보고 벡터를 벡터로 미분한 결과에 대해 살펴보자.
스칼라를 벡터로 미분한 값의 모양
(스칼라(scalar)를 벡터(vector)로 미분 하는 방법)에서 $f: \mathbf{R}^n \to \mathbf{R}$의 미분을 $\frac{\partial f}{\partial \mathbb{x}^T}$라고 표시했습니다. $\frac{\partial f}{\partial \mathbb{x}^T}$의 크기는 어떻게 될까요? $\mathbb{x}$는 n개짜리 열벡터이므로 $\mathbb{x}^T$는 n개 짜리 행벡터임을 알수 있습니다. 이점을 고려하면 $\frac{\partial f}{\partial \mathbb{x}^T}$는 $1 \times n$짜리 벡터가 나옵니다.
벡터를 벡터로 미분할 때의 정의
위의 내용을 알면 쉽게 벡터를 벡터로 미분한것의 정의를 알 수 있기 때문에 스칼라를 벡터로 미분한 값의 모양을 알아봤습니다. 이젠 $f: \mathbf{R}^n \to \mathbf{R}^m$처럼 입력이 n차원 열벡터이고 출력이 m차원 열벡터인 함수의 미분값을 구해보도록 하겠스다. 기호는 똑같이 $\frac{\partial f}{\partial \mathbb{x}^T}$입니다. 어떻게 정의할까요? $f$는 사실 입력이 벡터이고 출력이 스칼라인 함수로 구성된 열벡터입니다. 표현하자면 $f(\mathbb{x}) = (f_1(\mathbb{x}),…,f_m(\mathbb{x}))^T$로써 표현되겠네요. 각각의 $f_i$는 벡터에서 스칼라로 가는 함수니까 $\frac{ \partial f_i}{\partial \mathbb{x}^T}$는 잘 정의되겠고 사이즈가 $1 \times n$이겟네요.
$\frac{ \partial f}{\partial \mathbb{x}^T}$는 $\frac{ \partial f_i}{\partial \mathbb{x}^T}$를 차곡차곡 쌓아올린 형태로 정의됩니다.
$$\frac{ \partial f}{\partial \mathbb{x}^T} = \begin{pmatrix} \frac{ \partial f_1}{\partial \mathbb{x}^T} \\ \frac{ \partial f_2}{\partial \mathbb{x}^T}\\ \cdot \\ \cdot \\ \cdot \\ \frac{ \partial f_m}{\partial \mathbb{x}^T}\end{pmatrix} $$
$\frac{ \partial f_i}{\partial \mathbb{x}^T}$는 사이즈가 1 X n 이었는데 m개를 쌓아올렸으니 $\frac{ \partial f}{\partial \mathbb{x}^T}$의 사이즈는 m X n 이 되겠습니다.
결론
벡터를 벡터로 미분하는 방법에 대해 배웠습니다. 스칼라를 벡터로 미분하는것에서부터 확장되어가는 형태입니다. 스칼라를 벡터로 미분한것을 차곡차곡 쌓아올린형태가 바로 벡터를 벡터로 미분한 형태입니다.!
Reference
[1] 혁펜하임 “[딥러닝] 5-2강. 벡터를 벡터로 미분 & 스칼라를 행렬로 미분,” YouTube, Apr. 20, 2020 [Video file]. [Accessed: Jul. 15, 2022].