Home [수학/미적분] 행렬미분, 행렬미분법칙
포스트
취소

[수학/미적분] 행렬미분, 행렬미분법칙

행렬미분

정의 :

스칼라, 벡터, 행렬을 출력하는 함수를 스칼라, 벡터, 행렬로 미분하는 것.

예 :

  • 스칼라 출력하는 다변수함수를 입력변수인 벡터로 미분
  • 스칼라 출력하는 다변수함수를 입력변수인 행렬로 미분
  • 벡터 출력하는 함수를 입력변수인 벡터로 미분

스칼라를 벡터로 미분

다변수 입력이 들어오고. 스칼라 출력하는 다변수함수를

입력벡터로 ‘편미분’할 수 있다. 편미분 결과인 1차 도함수를 ‘그레디언트 벡터’ 라고 한다.

그레디언트 벡터 $(\nabla{f})$

$\nabla f = \frac{\partial f}{\partial x}$

정의 :

스칼라 함수 $f$를 입력변수 벡터 $x$로 편미분한 ‘1차 도함수 벡터’

스칼라 $f$ 를 벡터 각 원소로 편미분 한 것이다.

특징 :

그레디언트 벡터 사이즈는 미분하는 입력벡터 사이즈랑 같다.

열벡터 형태다.

예)

$f(x,y) = 3x^{2}+12x-5y^{2}+y-23$ 를 벡터 미분해보자.

위 함수는 다변수 스칼라함수다(입력 $x,y$ 벡터, 출력 : 스칼라).

스칼라 함수를 입력벡터로 미분하자.

$x_{0} = [x,y]$

$\nabla{f} = \frac{\partial f}{\partial x_{0}} = [6x+12, -10y+1]^{T}$

입력벡터 $x_{0}$ 각 원소로 스칼라 함수 $f$ 를 편미분 했다.

그 결과물 $[6x+12, -10y+1]^{T}$ 이 1차 도함수 벡터인 그레디언트 벡터다.


헤시안 행렬 $(H)$

스칼라 출력하는 다변수함수를 입력변수 벡터로 1차 편미분 한 결과를 ‘그레디언트 벡터($\nabla{f}$)’ 라고 했다.

그레디언트 벡터는 스칼라 다변수함수의 1차 도함수다.

이 1차 도함수를 입력변수 벡터로 한번 더 미분하면 2차 도함수가 나온다.

헤시안 행렬($H$)은 스칼라 함수를 벡터로 두번 미분해서 나오는 2차 도함수이다.

정의 :

스칼라 함수를 입력변수 벡터로 두번 미분해서 구한 2차 도함수 행렬

특징 :

  • 1차 도함수 그레디언트 벡터($\nabla{f}$) 의 자코비안 행렬의 전치행렬과 같다.

  • 맨 처음 스칼라 함수가 연속이고. 전 구간 미분 가능하다면 2차 도함수. 헤시안 행렬은 대칭행렬이다.


퀴버플롯

정의 :

2차원 컨투어 플롯 위에 각 점에서의 그레디언트 벡터를 화살표로 표시한 것.

각 그레디언트 벡터(화살표)는

시점 : 컨투어 플롯 위 내가 지정해준 어떤 점

종점 : 내가 지정해준 어떤 점의 그레디언트 벡터 값

이다.

Screen Shot 2021-08-30 at 10 11 11

  • 그레디언트 벡터 길이(크기) 는 각 점(벡터 시작점)의 기울기를 나타낸다.
  • 그레디언트 벡터 방향은 등고선 방향과 직교한다.

그레디언트 벡터 방향의 의미 1 :

그레디언트 벡터 방향은 입력 $x,y$ 가 출력에 각각 어떤 영향 미치는지 보여준다.


설명 )

퀴버플롯에서 그레디언트 벡터 방향은 그레디언트 벡터의 원소 $\frac{\partial{f}}{\partial{x}}, \frac{\partial{f}}{\partial{y}}$ 부호에 의해 결정된다.

입력변수 $x$ 가 증가할 때, 출력 $f$가 증가한다면.

변수 $x$에 대한 기울깃값 $\frac{\partial f}{\partial x}$ 는 양수다.

입력변수 $y$ 가 증가할 때, 출력 $f$ 가 감소한다면.

변수 $y$ 에 대한 기울깃값 $\frac{\partial f}{\partial y}$ 는 음수다.

그러면 그레디언트 벡터 원소 부호가 $+, -$ 이므로. 그레디언트 벡터 방향은 오른쪽 아래를 가리킨다.

이 뱡향, ‘오른쪽 아래’ 에서 입력변수 $x$ 가 증가할 때 출력 $f$가 증가하고.

입력변수 $y$ 가 증가할 때 출력 $f$ 가 감소하고. 를 읽을 수 있다.

$\Rightarrow$ 각 입력변수가 변화할 때. 출력이 어떻게 변화하는 지 알 수 있다.


그레디언트 벡터 방향의 의미 2 :

그레디언트 벡터 방향은 각 점(벡터 시작점)에서 값을 살짝 증가시킬 때 기울기가 가장 커지는 방향.

그러니까 단위길이 당 함숫값이 가장 크게 증가하는 방향을 가리킨다.


임의의 그레디언트 벡터 시작지점이 $x_{0}$ 라고 하자.

$x_{0}$ 에서 출발해서 함수 $f$ 최대점을 찾고 싶을 때,

$x_{0}$ 에서 입력값을 어떻게. 어디로 변화시켜야

최대한 시행착오 줄이면서 함수 $f$ 최대점에 도달할 수 있을까?

$x_{0}$ 에서 값을 변화시켰을 때, 함숫값이 기존 $f(x_{0})$ 에서 가장 크게 증가하는 점으로

입력값을 변화시켜야 최댓값까지 더 빠르게 올라갈 것이다.

변화시킨 입력값을 $x_{1}$ 이라고 하면. $x_{1}$ 에서 다시 함숫값이 가장 크게 증가하는 점으로

입력을 변화시켜야 한다. 이 과정을 반복하다보면 최대점에 최소한의 시행착오로 도달할 것이다.

$\Rightarrow$ 그레디언트 벡터 방향은 입력값을 변화시킬 때, 함숫값이 가장 크게 증가하는 방향을 의미한다고 했다.

$\Rightarrow$ 점 $x_{0}$ 에서 그레디언트 벡터 방향에 위치한 점을 새 입력으로 넣어야 함숫값이 가장 크게 증가할 것이다.

$\Rightarrow$ 새 입력에서 다시 그레디언트 벡터를 구하고, 그레디언트 벡터 방향에 위치한 점을 새 입력으로 사용하면 다시 함숫값이 가장 크게 증가할 것이다.

$\Rightarrow$ 함숫값을 계속 증가시켜 가다보면 그레디언트 벡터 값이 0인 지점. 그러니까 1차 도함숫값이 0 나오는 지점에 도달할 것이다. 이 지점이 최대점이다.

= 그레디언트 벡터 방향은 2차원 함수 $f$의 최대점에 도달하기 위한 지름길이다.


한편, 그레디언트 벡터 방향을 반대로 뒤집으면 어떻게 될까?

그레디언트 벡터 방향이 함숫값이 가장 크게 증가하는 지점. 즉 ‘3차원 지형이 가장 가파르게 올라가는 지점’ 이었다면

그레디언트 벡터 반대 방향은 ‘3차원 지형이 가장 가파르게 내려오는 지점’ 이 될 것이다.

즉 지형의 경사가 가장 가파르게 감소하는 지점이라는 거다.

계곡으로 생각하면, 지형 경사가 가장 가파르게 감소하는 방향 따라가다보면 계곡 바닥(=골짜기의 최저점) 에 가장 빠르게 다다를 것이다.

계곡 = 2차원 함수 , 지형 경사가 가장 가파르게 감소하는 방향 = 그레디언트 벡터 반대방향 으로 넣고 생각해보자.

2차원 함수에서 각 점의 그레디언트 벡터 반대방향을 따라가다보면 2차원 함수의 최저점에 최소한의 시행착오로 도달할 것이다.

따라서

$\Rightarrow$ 그레디언트 벡터 반대 방향은 2차원 함수 $f$의 최소점에 도달하기 위한 지름길이다.


데이터사이언스 스쿨 4.4.3 연습문제 )

문 )

함수 $2x^{2}+6xy+7y^{2}-26x-54y+107$ 로 표현되는 지형을 상상해보자.

이 지형의 $(14,4)$ 지점에서 공을 두었다면, 어떤 경로로 공이 움직일까?

나의 답 )

공을 둔 지점이 경사가 있는 지점이라면, 공은 경사가 가장 가파르게 감소하는 방향을 따라 굴러내려가서 경사가 가장 평평한 지점에서 멈출 것이다.

경사가 가장 평평한 곳 = 기울기가 0인 곳 = 지형의 최저점 이라 볼 수 있다.

공이 굴러내려 갈 경로인 ‘경사가 가장 가파르게 감소하는 방향’ 은 단위길이 당 함숫값이 가장 크게 감소하는 방향. 즉 그레디언트 벡터 반대방향이다.

종합하면, 공은 지형의 $(14,4)$ 위치에서 시작해서 그 지점 그레디언트 벡터 반대방향을 타고 굴러내려가 지형 최저점에 도달할 것이다.

지형 = 2차원 함수로 생각하면, 2차원 함수의 $(14,4)$ 위치에서 시작해서 그레디언트 벡터 반대방향으로 입력을 변화시켜 가며 끝내 함수의 최저점을 찾은 것과 같다.

이 공 굴리기 문제는 결국 2차원 함수 최소화 문제인 거다.

$\Rightarrow$ 2차원 함수 특정 지점에서 시작해서 입력을 변화시켜 가며 함수를 최소화 시키는 최저점을 찾기 위해서는,

입력을 그레디언트 벡터 반대방향으로 변화시켜야 한다는 사실을 알 수 있다.


행렬미분법칙(스칼라 - 벡터 미분)

1. 선형 모형

함수 $f(x)$ 가 선형모형인 경우($f$가 스칼라 함수)

$f(x) = w^{T}x$

$f$ 를 벡터 미분하면 그레디언트 벡터는 가중치 벡터 $w$ 다.

$\nabla{f} = w$

2. 이차형식

함수 $f(x)$ 가 이차형식인 경우($f$는 스칼라 함수)

$f(x) = x^{T}Ax$

$f$를 벡터 $x$로 미분하면 그레디언트 벡터는 $(A+A^{T})x$ 이다.

$\nabla{f} = (A+A^{T})x$


벡터를 스칼라로 미분

- 벡터를 스칼라로 미분하는 경우, 벡터 각 원소를 스칼라로 ‘편미분’ 한다.

- 결과는 행벡터로 나타낸다.

$f(x) = [f_{1}, f_{2}, f_{3} … f_{n}]^{T}$

벡터함수 $f$를 스칼라 $x$로 미분하는 경우

$\frac{\partial{f}}{\partial{x}} = [\frac{\partial{f_{1}}}{\partial{x}}, \frac{\partial{f_{2}}}{\partial{x}}, \frac{\partial{f_{3}}}{\partial{x}}, … \frac{\partial{f_{n}}}{\partial{x}}]$


벡터를 벡터로 미분

- 벡터로 스칼라 미분을 여러 번 하거나

- 스칼라로 벡터 미분을 여러 번 하거나.


1. 벡터로 스칼라 미분을 여러 번 하는 경우

함수 입력 벡터로 미분당하는 벡터(함수)의 스칼라 원소 하나하나를 스칼라-벡터 미분 할때와 똑같이 편미분 한다.

결과는 미분한 벡터와 똑같은 사이즈 열벡터인 그레디언트 벡터가 여러 개 나올 것이다.

이 열벡터들을 옆으로 (열로) 쌓은 행렬이 벡터-벡터 미분 결과다.

2. 스칼라로 벡터 미분을 여러 번 하는 경우

함수 입력 벡터 스칼라 원소 하나하나로, 미분당하는 벡터(함수)를 벡터-스칼라 미분할때와 같이 편미분 한다.

벡터 - 스칼라 미분 결과인 행벡터 여러 개가 결과로 나올 것이다.

이 행벡터들을 위에서 아래로 (행으로) 쌓은 행렬이 벡터-벡터 미분 결과다.

자코비안 행렬

정의 :

벡터를 벡터로 미분해서 나오는 1차 도함수 행렬의 전치행렬


행렬미분법칙(벡터 - 스칼라 & 벡터 미분)

3. 행렬과 벡터 곱의 미분

함수 $f(x)$ 가 행렬과 벡터 곱 인 경우($f$ 가 벡터 함수)

$f(x) = Ax$

$f$ 를 벡터 $x$로 미분하면 결과는 행렬 $A^{T}$ 가 된다.

$\nabla{f} = A^{T}$


스칼라를 행렬로 미분

스칼라(함수 $f$)를 입력변수 행렬 각 원소로 편미분.

$\frac{\partial{f}}{\partial{X}}$

스칼라를 벡터 미분한 결과인 그레디언트 벡터는 미분한 벡터와 사이즈가 같았다.

스칼라를 행렬로 편미분한 도함수 행렬도 입력변수 행렬과 사이즈가 같다.

if)

$X \in R^{5 \times 5}$,

$\frac{\partial{f}}{\partial{X}} \in R^{5 \times 5}$.


행렬미분법칙 (행렬 곱의 대각합)

두 정방행렬 곱해서 만들어진 행렬의 대각합은 스칼라다.

$f(X) = tr(WX)$

$f$ 는 스칼라 함수.

이 스칼라를 뒤의 행렬 $X$ 로 편미분하면 앞의 행렬의 전치행렬이 나온다.

$\frac{\partial{f}}{\partial{X}} = \frac{\partial{tr(WX)}}{\partial{X}} = W^{T}$


행렬미분법칙 (행렬식에 로그 취한 경우)

어떤 행렬 $X$가 있다고 하자.

이 행렬의 행렬식 $\lvert X \rvert$ 는 스칼라다.

행렬식 $\lvert X \rvert$ 에 $\log$ 를 씌워도 스칼라다.

$f(X) = \log{\lvert X \rvert}$

$f(X)$ 는 스칼라 함수.

스칼라 함수 $f(X)$ 를 행렬 $X$ 로 편미분하면 $(X^{-1})^{T}$ 가 나온다.

$\frac{\partial{f}}{\partial{X}} = \frac{\partial{\log{\lvert X \rvert}}}{\partial{X}} = (X^{-1})^{T}$

[수학/미적분] 수치미분, 심볼릭연산을 이용한 미분과 적분, 수치적분

[수학/미적분] 범함수, 변분법, 최적제어 개념