본문 바로가기

공부/기계학습

간단한 Vector calculus 1

728x90
반응형

 

공돌이 대학생 시절 따로 Vector calculus를 배우진 않았던 것 같다. 미적분학, Calculus만 배웠다. 대학 Calculus에서 배울 것들이 많지만, 기계학습쪽을 공부할 때에 아주 큰 도움이 되지는 않는 것 같다. 물론 기본적인 최적화 개념이나 Tailor series 같은건 중요한 개념이긴 하다.
하지만 기계학습에서 다루는 데이터는 기본적으로 행렬이기 때문에 단일 변수에 대한 연산보다는,

행렬을 이용한 기본적인 선형대수적 연산과 행렬로 이루어진 식들의 미분을 할 줄 아는 게 쓸모 있는 경우가 꽤 많다.

나도 따로 vector calculus를 강의를 듣거나 책을 제대로 살펴본적은 없지만,

기계학습 공부하다가 알게 된 간단한 내용만 정리해본다.

상수로 이루어진 벡터 $\textbf{a} \in \mathbb{R}^n$가 있고, 같은 크기의 weight 벡터 $\textbf{v}$가 있다고 하자. 벡터의 dot product로 표현된 선형 식을 다음과 같이 볼 수 있다.
$\textbf{a} \cdot \textbf{v} = a_1 v_1 + a_2 v_2 + \cdots + a_n v_n$

이 선형 식을 $v_i$에 미분해본다면, 대부분의 term들이 상수로 여겨지며 사라지고, $a_i v_i$를 미분하여 $a_i$라는 값을 얻게 된다. 일차식을 한 변수로 미분한 것이니 별 특별한 것도 없다.
그런데 이걸 벡터 단위로 표현하면, 다소 낯설 수 있다.
$\frac{\partial \textbf{a} \cdot \textbf{v}}{\partial \textbf{v}}$
이 식이 의미하는 것은 dot product로 표현됐던 일차식을 모든 $v_i$에 배해 미분하라는 것이다.

$v_i$는 총 $n$개 있으니, $n$개의 결과가 나올 것이고, 이 $n$개의 결과가 벡터를 이루게 된다. 위 식을 다시 정리해보면 다음과 같다.
$\{ \frac{\partial \textbf{a} \cdot \textbf{v}}{\partial v_1}, \frac{\partial \textbf{a} \cdot \textbf{v}}{\partial v_2}, \cdots, \frac{\partial \textbf{a} \cdot \textbf{v}}{\partial v_n} \}$
$= \{ a_1, a_2, \cdots, a_n \} = \textbf{a}$

정리해보면 $\textbf{a} \cdot \textbf{v}$를 $\textbf{v}$로 미분했더니 $\textbf{a}$가 나왔다.

이번엔 벡터 $\textbf{a}$ 대신 행렬 $A \in \mathbb{R}^{m \times n}$으로 바꿔보자. 우리의 식은 $A \textbf{v}$.

이 식을 풀어써보면 다음과 같이 $m$개의 식이 나오게 된다.
$a_{1,1} v_1 + a_{1,2} v_2 + \cdots + a_{1,n} v_n$
$a_{2,1} v_1 + a_{2,2} v_2 + \cdots + a_{2,n} v_n$
$\cdots$
$a_{m,1} v_1 + a_{m,2} v_2 + \cdots + a_{m,n} v_n$

그럼 $A \textbf{v}$를 $v_i$로 미분한다는 것은 $m$개의 식을 각각 $v_i$로 미분한다는 의미가 되고, $m$개의 결과가 나오게 된다.

이것을 식으로 정리해보면 다음과 같다.
$\frac{\partial A \textbf{v}}{ \partial v_i } = \{ \frac{\textbf{a}^1 \cdot \textbf{v} }{\partial v_i}, \frac{\textbf{a}^2 \cdot \textbf{v} }{\partial v_i}, \cdots, \frac{\textbf{a}^m \cdot \textbf{v} }{\partial v_i} \}$
$ = \{ a_{1,i}, a_{2, i}, \cdots, a_{m, i} \} = \textbf{a}_i$
이 때 $\textbf{a}^j$는 $A$의 $j$번째 행벡터, $\textbf{a}_j$는 $j$번째 열벡터로 표현되었다.
정리해보면 $A\textbf{v}$를 $v_i$로 미분했더니 행렬 $A$의 $i$번째 열벡터가 튀어나왔다.

그럼 모든 $v_i$로 미분하게 되면 이런 열벡터들이 $n$개가 튀어나올 것이고,
결국 $A\textbf{v}$를 $\textbf{v}$로 미분하게 되면 $A$가 나온다.

정리해보면 $A \textbf{v}$를 $\textbf{v}$로 미분했더니 $A$가 나왔다.

 

결국 dot product로 표현된 일차식을 미분할 때,

우리가 알고 있는 단일 변수의 일차식의 미분과 결과가 똑같다.

미분하고자 하는 변수 앞 상수가 미분 값이 되는데, 여기서는 변수 앞 벡터나 행렬이 미분 값이 된다.

공식화해서 최종 정리해보자.
$\textbf{a}, \textbf{v} \in \mathbb{R}^n$이고 $A \in \mathbb{R}^{m \times n}$ 일 때,
$\frac{\partial \textbf{a} \cdot \textbf{v}}{\partial \textbf{v}} = \textbf{a}$
$\frac{\partial A\textbf{v}}{\partial \textbf{v}} = A$

728x90
반응형

'공부 > 기계학습' 카테고리의 다른 글

간단한 Vector calculus 3  (0) 2023.04.17
간단한 Vector calculus 2  (1) 2023.04.16
matrix norm에 대하여  (1) 2023.04.14
norm에 대하여  (0) 2023.04.13