간단한 선형회귀 모델을 세워보자. 총 N개의 Data {(xi,yi)}i=1i=N가 있다고 할 때,
weight vector w 와 bias b에 대한 MSE L은 다음과 같다.
L(w,b)=i=1∑N(yi−(w⊤x+b))2
이를 최소화 하는 w의 값을 찾기 위해서는 L을 w에 대해 미분해야 한다. 이러한 벡터로의 미분, 나아가 행렬로의 미분을 알아보자.
함수 f:RD→R 을 생각하자. 즉, RD의 벡터 x=(x1,⋯,xD)⊤를 스칼라 y로 mapping 하는 함수이다.
이 때, dxdf 는 다음과 같이 정의된다.
dxdf:=∂x1∂f⋮∂xD∂f∈RD
즉, x 각각의 성분에 대하여 편미분한 것을 벡터화한 것이다. 이렇게도 표현할 수 있다.
[dxdf]i=∂xD∂f
여기서 미분의 결과가 원래 벡터와 같은 **열벡터(Column vector)**임에 유의한다. 이는 마치 dxdf 가
분모(?)에 위치한 x를 따라가는 것만 같은 느낌을 준다. 이러한 notation을 Denominator Layout Notation이라 한다.
몇몇 책에서는 df/dx 를 행벡터로 적는데, 이는 Numerator layout notation을 적용한 결과이다.
많은 인공지능 교재와 Matrix cookbook 등에서는 Denominator layout notation을 사용하므로, 이를 기준으로 설명한다.
f(x)=w⊤x=w1x1+⋯wDxD
여기서 ∂f/∂xi=wi 이므로, df/dx 는 다음과 같다.
dxdf=w1⋮wD=w
f(x)=∥x∥2=x⊤x
여기서 ∂f/∂xi=2xi 이므로 df/dx 는 다음과 같다.
dxdf=2x1⋮xD=2x
f(w)=i=1∑N(w⊤xi−b)2=i=1∑N(j=1∑Dwjxij−b)2
(단, 여기서 xi∈RD 인 vector, b∈R)
∂w1∂f=2(j∑wjx1j−b)x11+2(j∑wjx2j−b)x21+⋯=i∑N2(j∑wjxij−b)xi1
정리하면,
dwdf=i∑N2(j∑wjxij−b)xi1⋮xiD=i∑N2(w⊤xi−b)xi
f(w)=w⊤Xw
(단, 여기서 w∈RD, X∈RD×D)
지금까지는 무작정 전개하여, 성분을 비교하는 방법으로 미분의 결과를 구했지만, 조금 다른 방법을 사용해보자.
벡터에 대한 미분 또한, 곱의 미분법이 비슷하게 적용된다. (전개하면 곱의 미분을 적용시킬 수 있으므로!)
하지만, 그 꼴을 잘 맞추어야 한다.
Xw=x, w⊤X=y⊤ 라고 하자. 그러면, dwdf 는 다음과 같다.
dwdf=dwd(w⊤x)+dwd(y⊤w)=x+y=(X+X⊤)w
이 방법은 실로 강력하다. 하지만, 처음에는 굉장히 비직관적이게 보일 수도 있으므로, 익숙하지 않다면
이전처럼 전개하여 증명하여도 좋다.