Cover image of latest post

AI

Mathematics

스칼라를 벡터로 미분하면?

AI - Basics - April 28, 2023

#

Introduction

간단한 선형회귀 모델을 세워보자. 총 NN개의 Data {(xi,yi)}i=1i=N\{({\bf x}_i, y_i)\}_{i = 1}^{i = N}가 있다고 할 때, weight vector w\bf w 와 bias bb에 대한 MSE LL은 다음과 같다.

L(w,b)=i=1N(yi(wx+b))2 L({\bf w}, b) = \sum_{i = 1}^N (y_i - ({\bf w}^\top {\bf x} + b))^2

이를 최소화 하는 w\bf w의 값을 찾기 위해서는 LLw\bf w에 대해 미분해야 한다. 이러한 벡터로의 미분, 나아가 행렬로의 미분을 알아보자.

#

w.r.t. Vector

함수 f:RDRf : \R^D \to \R 을 생각하자. 즉, RD\R^D의 벡터 x=(x1,,xD){\bf x} = (x_1, \cdots, x_D)^\top를 스칼라 yy로 mapping 하는 함수이다.

이 때, dfdx\dfrac{{\rm d}f}{{\rm d}{\bf x}} 는 다음과 같이 정의된다.

dfdx:=(fx1fxD)RD \frac{{\rm d}f}{{\rm d}{\bf x}} := \begin{pmatrix} \dfrac{\partial f}{\partial x_1} \\ \\ \vdots \\ \\ \dfrac{\partial f}{\partial x_D} \end{pmatrix} \in \R^D

즉, x\bf x 각각의 성분에 대하여 편미분한 것을 벡터화한 것이다. 이렇게도 표현할 수 있다.

[dfdx]i=fxD \left[ \frac{{\rm d}f}{{\rm d}{\bf x}} \right]_i = \frac{\partial f}{\partial x_D}

여기서 미분의 결과가 원래 벡터와 같은 **열벡터(Column vector)**임에 유의한다. 이는 마치 dfdx\dfrac{{\rm d}f}{{\rm d}{\bf x}} 가 분모(?)에 위치한 x\bf x를 따라가는 것만 같은 느낌을 준다. 이러한 notation을 Denominator Layout Notation이라 한다.

몇몇 책에서는 df/dx{{\rm d}f}/{{\rm d}{\bf x}} 를 행벡터로 적는데, 이는 Numerator layout notation을 적용한 결과이다. 많은 인공지능 교재와 Matrix cookbook 등에서는 Denominator layout notation을 사용하므로, 이를 기준으로 설명한다.

##

examples

f(x)=wx=w1x1+wDxD f({\bf x}) = {\bf w}^\top {\bf x} = w_1 x_1 + \cdots w_D x_D

여기서 f/xi=wi{\partial f}/{\partial x_i} = w_i 이므로, df/dx{{\rm d}f}/{{\rm d}{\bf x}} 는 다음과 같다.

dfdx=(w1wD)=w \frac{{\rm d}f}{{\rm d}{\bf x}} = \begin{pmatrix} w_1 \\ \vdots \\ w_D \end{pmatrix} = {\bf w}
f(x)=x2=xx f({\bf x}) = \Vert {\bf x} \Vert ^2 = {\bf x}^\top {\bf x}

여기서 f/xi=2xi{\partial f}/{\partial x_i} = 2x_i 이므로 df/dx{{\rm d}f}/{{\rm d}{\bf x}} 는 다음과 같다.

dfdx=2(x1xD)=2x \frac{{\rm d}f}{{\rm d}{\bf x}} = 2 \begin{pmatrix} x_1 \\ \vdots \\ x_D \end{pmatrix} = 2{\bf x}
f(w)=i=1N(wxib)2=i=1N(j=1Dwjxijb)2\begin{align*} f({\bf w}) &= \sum _{i = 1}^N ({\bf w}^\top {\bf x}_i - b)^2 \\ &= \sum_{i = 1}^N \left(\sum _{j = 1}^D w_j x_{ij} - b\right)^2 \end{align*}

(단, 여기서 xiRD{\bf x}_i \in \R^D 인 vector, bRb \in \R)

fw1=2(jwjx1jb)x11+2(jwjx2jb)x21+=iN2(jwjxijb)xi1\begin{align*} \pdv{f}{w_1} &= 2\left(\sum_j w_j x_{1j} - b\right) x_{11} + 2 \left(\sum_j w_j x_{2j} - b\right) x_{21} + \cdots \\ &=\sum_{i}^N 2 \left(\sum_j w_j x_{ij} - b\right) x_{i1} \end{align*}

정리하면,

dfdw=iN2(jwjxijb)(xi1xiD)=iN2(wxib)xi\dv{f}{\bf w} = \sum_{i}^N 2\left(\sum_j w_j x_{ij} - b\right) \begin{pmatrix} x_{i1} \\ \vdots \\ x_{iD} \end{pmatrix} = \sum _{i}^{N} 2({\bf w}^\top {\bf x}_i - b) {\bf x}_i
f(w)=wXwf({\bf w}) = {\bf w} ^\top {\bf X}{\bf w}

(단, 여기서 wRD{\bf w} \in \R^D, XRD×D{\bf X} \in \R^{D \times D})

지금까지는 무작정 전개하여, 성분을 비교하는 방법으로 미분의 결과를 구했지만, 조금 다른 방법을 사용해보자.

벡터에 대한 미분 또한, 곱의 미분법이 비슷하게 적용된다. (전개하면 곱의 미분을 적용시킬 수 있으므로!) 하지만, 그 꼴을 잘 맞추어야 한다.

Xw=x{\bf Xw = x}, wX=y\bf w^\top X = y^\top 라고 하자. 그러면, dfdw\dv{f}{\bf w} 는 다음과 같다.

dfdw=d(wx)dw+d(yw)dw=x+y=(X+X)w\begin{align*} \dv{f}{\bf w} &= \dv{(\bf w^\top x)}{\bf w} + \dv{(\bf y^\top w)}{\bf w} \\ &= \bf x + y \\ &= \bf (X + X^\top) w \end{align*}

이 방법은 실로 강력하다. 하지만, 처음에는 굉장히 비직관적이게 보일 수도 있으므로, 익숙하지 않다면 이전처럼 전개하여 증명하여도 좋다.