5. Vector Calculus
Differentiation of Univariate Function
- Difference Quotient(평균 변화율)
- Derivative(미분)
- 유도
- Taylor Series(테일러 급수, taylor expansion 전개)
- Taylor Polynomial(테일러 다항식)
- Taylor Series
의 의미는 함수 f를 연속적으로 무한이 미분가능하다는 것이다.
일반적으로 n차 테일러 다항식은 함수의 근사(approximation)으로 함수가 다항식일 필요가 없다. 테일러 다항식은 x0 근처에서 함수 f와 유사하다. 하지만, n차 테일러 다항식은 k차 다항식 f(k≤n)에 대해서 동일한 함수이다.
- 예시
, 에서의 테일러 급수
위와 같이 cos, sin함수를 다항식으로 표현한 것을 power series(멱급수) representation이라고 함. 일반적인 멱급수는 아래와 같으며, 테일러 급수는 power series의 특별한 형태이다.
- 기본 미분 법칙
Partial Differentiation and Gradients(편미분과 그래디언트)
함수 f의 변수가 n개로 늘어나면, 여러 변수에서 함수의 미분은 gradient로 일반화 할 수 있다. 함수 f의 gradient는 x의 한 변수를 변수로 하고 나머지를 상수로 고정 시켜, 편미분들의 모음으로 구할 수 있다.
의 1은 공역과 치역(codomain, image/range)의 차원이고, n은 변수의 개수이다. 이러한 행벡터를 f의 gradient 또는 Jacobian이라고 한다.
- row 벡터인 이유
벡터를 반환하는 함수(Vector-valued function, f: R^n → R^m )에서 gradient를 행렬로 일반화 할 수 있다. 그리고 row 벡터로 설정하는 경우, multivariate한 함수에서 chain rule을 적용할 때 차원을 고려하지 않고 바로 적용이 가능하다.
- 예시
- Basic Rule
입력 변수가 n인 multivariate한 경우, gradient가 벡터나 행렬이기 때문에 교환법칙(commutative)하지 않아 순서가 중요하다.
- chain rule
f: 이며 x1, x2를 입력으로 받고, x1과 x2는 각각 t를 입력으로 받는 함수인 경우 아래와 같다.
이 때, x1과 x2의 함수도 f와 마찬가지로, s와 t를 입력받는 다면 아래와 같이 표현 할 수 있다.
이를 간략하게 나타내면 아래와 같이 행렬곱의 형태로 표현할 수 있다. 이것이 우리가 row벡터로 gradient를 위에서 표현했기 때문에 가능하다. 그리고 gradient가 행렬인 경우에도 가능하다.
Gradients of Vector-Valued Functions (벡터함수의 그래디언트)
다변량 함수인 함수에서, 인 vector-valued function(벡터함수)에서 그래디언트가 어떻게 되는지 일반화 해보자.
- 이는 개수가 n인 입력 벡터 x에 대해, 적용하는 함수는 m개인 것이다.
- 벡터함수의 xi 에대한 편미분은 아래와 같다.
- 이를 벡터 x에대한 미분으로 확장하면 아래와 같다. 각 변수에 대한 편미분은 열벡터로 나열되고, 함수마다의 미분은 열로 나열된다.
- 야코비안: 벡터 함수에 대한 1차 편미분
위와 같이 mxn으로 표현하는 것을 numerator layout(분자중심의 표현)이라고 한다. 이를 transpose하면 denominator(분모중심의 표현)이 된다.
- 사상의 변환 크기 측정
- Linear Algebra 접근
단위 벡터를 기저로 이루어진 벡터공간을 행렬 J의 열벡터의 기저로 변환하는 경우, J행렬의 determinant의 절대값을 활용한다. 위의 경우, 단위 벡터로 이루어진 정사각형이, 기저 변환으로 인해 |det(J)| 값인 3배 커진 평행사변형으로 변환된 것을 볼 수 있다.
- Vector Calculus 접근
위 접근 방법은 선형 변환인 경우에만 계산할 수 있다. 6.7 Change of Variables에서 주로 사용하는 비선형 변수변환인 경우, 편미분을 사용하는 것이 더 일반적인 접근 방법이다.
함 는 변수 변환을 수행하는 것으로 본다. 기존 기저 b1, b2으로 표현된 x가 c1, c2로 표현된 경우 넓이(부피)가 f에 의해 어떻게 변화하는지 알고 싶은 것이다. 즉, x의 변화량에 대한 f(x)의 변화량을 알고 싶은 것이고, 이것이 야코비안 행렬이 그 답이다.
제일 위의 두줄 처럼 x와 y의 함수적 관계를 통해 3번째 줄처럼 편미분을 구해 야코비안 행렬을 구성할 수 있다.
좌표변환이 위의 예시처럼 선형인 경우에는 위의 기저 변환 행렬과 정확하게 같다. 만약 좌표변환이 비선형이라면, 야코비안은 locally linear 한 것에 근사화 할 수 있다. 동일하게, 야코비안 행렬의 determinat 절댓값으로 변환의 크기를 측정하며, 이를 Jacobian Determinant라고 한다.
이러한 변수변환과 야코비안 행렬식은 6.7의 확률변수와 확률분포에서도 사용하며, DNN을 학습할 때 사용하는 reparametrization trick(infinite perturbation analysis)에서도 사용한다.
- Linear Algebra 접근
- (Partial) derivatives 의 차원
입력변수의 차원과 함수의 차원(출력값의 차원)에 따라 Partial Derivatives의 차원은 위와 같다.
- 예제
행렬의 Gradients
행렬을 벡터(또는 다른 행렬)에 대하여 gradient를 구해야 한다면, 그 결과는 다차원 텐서(다차원 행렬)가 될 것이다.
행렬이 선형사상임을 이용해, mxn 행렬의 공간과 mn크기의 벡터의 공간 사이에 벡터공간 isomorphism(동형, linear & invertible/bijective)이 있다는 사실을 이용할 수 있다.
실제 이를 이용할 때에는, 행렬을 벡터로 reshape해 계산한 야코비안 행렬을 사용하는 것이, chian rule을 적용하기에 편하다.
- 벡터를 행렬로 미분
- 행렬을 행렬로 미분
Gradient를 계산을 위한 유용한 성질
는 f(X)의 역함수이며 있다고 가정할 때이다. 고차원의 텐서에서 전치와 trace는 일반적으로 정의 되지 않는다. tensor contraction을 사용해 D x D x E x F의 텐서의 trace의 경우, E x F차원의 행렬로 구할 수 있다. 유사하게 전치는 처음 두 차원을 바꾸는 것으로 볼 수 있다.
Backpropagation and Automatic Differentiation (역전파와 자동미분)
- 책에서 추천하는 자료
http://timvieira.github.io/blog/post/2017/08/18/backprop-is-not-just-the-chain-rule/
https://people.cs.umass.edu/~domke/courses/sml2011/08autodiff_nnets.pdf
많은 ML 애플리케이션은, 모델의 파라미터에 관련된 학습 목적(learning objective)의 gradient를 계산할 수 있다는 사실에 기반한 gradient descent를 수행함으로서 우리는 좋은 파라미터 모델을 찾을 수 있다. 목적함수가 주어지면, 모델 파라미터의 gradient를 chain rule과 미분을 이용해 구할 수 있다.
위처럼 직접 함수를 미분해 구할 수 있지만, 이는 실용적인 방법은 아니다.
- DNN의 gradient
DNN에서는 위처럼 다층함수 구조(many-level function composition)로 되어있다.
i번째의 layer는 와 같은 함수가 있다. 시그마는 활성함수.
이를 아래와 같이 재구성할 수 있다.
이며, 마지막의 손실이 최소화되는 세타를 찾고싶다. 파라미터들의 gradient를 구하기 위해 각 layer에 있는 파라미터로 Loss함수를 편미분과 chain rule로 이를 나타내면 아래와 같다.
오렌지 항들은 출력층의 output과 그 출력층의 input으로 편미분을 한 것이고, 파란색 항은 출력층을 layer의 파라미터로 미분한 것이, 은 를 계산할 때 재사용 되며, 입력의 반대방향으로 이어지며 이를 도식화하면 아래와 같다.
- 자동 미분
Backpropagation은 수치해석의 자동미분(automatic differentiation)의 특별한 경우이다.
(numeric, symbolic, automatic 차이 https://stackoverflow.com/questions/43455320/difference-between-symbolic-differentiation-and-automatic-differentiation)
자동미분은 매개변수(intermediate variables)와 chain rule을 사용해 정확하게(기계정밀도에 한해) gradient를 수치적으로 계산하는 방법들이다. 기초 산술연산(arithmetic operations; +, -, ...)과 초등 함수(elementary function; sin, cos, exp, log, ...)에 적용해 복잡한 함수의 gradient를 자동미분한다. ML모델에 사용되는 자동미분에 관한 서베이 논문은 다음과 같다. [Baydin et al.2018] https://arxiv.org/pdf/1502.05767.pdf
자동미분에는 forward mode와 reverse mode가 있는데 이는 각각 아래와 같이 계산하며, 우리는 backpropagation이라고도 하는 reverse mode 자동미분에 초점을 맞추며, 이것이 계산량이 forward mode보다 훨씬 적다.
- symbolic vs automatic diff.
- 자동미분 수식화
일 때, 아래와 같이 표현할 수 있다.
이 때, 은 초등함수(sin, cos, exp, ...)이고, 는 계산그래프에서 변수 xi의 부모노드이다. 이렇게 함수를 정의하면, chain rule을 활용해 단계별로 도함수를 계산할 수 있다.
이 때, 우리의 초등함수가 아니라, if문이나 for문과 같은 프로그래밍 구조라면, 자동 미분 시 더 주의를 기울여야한다.
Higher-Order Derivatives (고계 도함수)
- newton’s method와 같이 2계도함수가 필요한 경우도 있다.
Linearization and Multivariate Taylor Series
wikipedia: linearization is finding the linear approximation to a function at a given point.
함수 f의 gradient를 이용해 f를 x0에서 선형 근사할 수있다.
x0에서 멀어질수록 f(x)와 부정확해진다. 위 식은 f에 대한 x0에서의 Multivariate Taylor expansion의 특별한 경우로 첫 두항만 고려한 것이다.
- Multivariate Taylor Series
위와같은 함수를 고려하고, 에서 smooth(무한번 미분이 가능)하다고 하자. 벡터의 차이 벡터를
로 표현하면, 에서 함수 f의 다변수 테일러 급수는 아래와 같다.
이 때, 는 x에 대한 f의 k계도함수의 x0에서의 값이다.
- Taylor Polynomial
outer product를 시각화하면 아래와 같다.
vector field에서 테일러 급수를 정의해보자.
k=0, ... ,3에 대하여 을 전개해보면 아래와 같다.
2변수에 대한 함수에 대한 테일러 급수 전개, pdf 173 page
위 예제의 마지막 식을 풀어보면 맨 위의 식이 나와 결국 같게 된다. 기존 식이 3차식이었고, 우리는 상수, 1차, 2차, 3차 테일러 급수로 표현했기 때문이다.
Machine Learning & Vector calculus
ML에서는 아래와 같은 기댓값을 구할 때가 있다.
p(x)가 가우시안 분포처럼 편리한 형태여도, 일반적으로 이 적분은 analytic하게 해결할 수 없다.
f에 대한 테일러 급수 전개는 근사 해를 찾는 방법 중 하나이다. 와 같은 가우시안 분포로 가정하고, 근처에서 테일러 급수 전개를 비선형함수 f에 대해 테일러 급수 전개를 통해 선형화를 한다. 선형함수에 대해서는 p(x)의 평균과 공분산을 정확하게 계산할 수 있다(6.5)
이러한 성질은 동역학계(dynamical systems)의 online state estimation을 위한 확장칼만 필터(상태공간모형)에 사용된다.
위 적분을 근사하기 위한 또 다른 deterministic한 방법으로는 unscented transform이 있다. 이 방법은 gradient나 laplace approximation을 사용하지 않다. 대신에 헤시안을 필요로하는 2차 테일러 급수 전개를 통해 mode(최빈값?)주변의 p(x)의 local Gaussian approximation를 사용한다.