"모바일 앱 환경에서는 latex 수식이 깨져 나타나므로, 가급적 웹 환경에서 읽어주시길 바랍니다."
"Linear algebra, Probability and Statistics, Calculus review"
오늘은 확률과 통계 마지막 개념에 대해 정리한 후, 미적분으로 넘어가겠다.
* 모멘트 (모멘트, $m_n$)
확률변수 $X$에 대해 확률밀도 함수 $p(x)$를 가질 때, 임의의 $n \in \mathb{R}$에 대하여 $m_n = \mathbb{E}[X^n]$을 모멘트라 한다.
평균 $\mathbb{E}[X]$는 1차 모멘트이고, 분산 $V(x)$는 2차 모멘트 ($\mathbb{E}[X^2]$)에서 1차 모멘트, 즉 평균의 제곱을 뺀 값이다.
$V(x) = \mathbb{E}[x^2] - (\mathbb{E}[x])^2$
또 중심 모멘트란 것도 있다. 이것은 때로 유용하게 쓰이므로 한 번 정도는 짚고 넘어가자.
중심 모멘트는 $\mu_n = (X-\mathbb{E}[X])^n$의 기댓값이다.
3차 중심 모멘트는 분포의 왜도 (비틀림)와 관련있는 값이며, 4차 중심 모멘트는 분포의 첨도 (뾰족한 정도)와 관련된다.
또한 여기서 확률통계에서 중요한 함수 하나가 등장하는 데 적률생성함수 (moment generating function, MGF)이다.
적률생성함수의 미분을 통해 우리는 $n$차 적률 (moment) 을 쉽게 구할 수 있다.
즉, $n$번 미분하고 위 $t$에 0을 대입하면 그것이 곧 n차 적률이다.
또한, 두 확률변수가 있을 때, 이들의 적률생성함수가 같다면 이들의 확률밀도함수도 같다.
이제 미적분학에 대한 기초 복습을 이야기하겠다.
먼저 테일러 급수에 대해 이야기하자.
* 테일러 급수 (Taylor series)
테일러 급수란 함수 $f$를 급수로 표현한 것을 의미한다.
$f(x_0)$를 테일러 급수로 표현하면 다음과 같이 된다.
여기서 $f^k(x_0)$는 $f$의 $x_0$에서의 k번째 미분 계수를 의미한다.
다음은 Gradient이다.
우리가 딥러닝에서 관심있는 함수는 다변수 함수이다. 즉, 다변수 (=벡터)를 입력으로 받아 스칼라 또는 벡터 등을 아웃풋으로 내놓는 함수가 주 대상이다.
다변수 함수를 다음과 같이 표현해보자.
함수 $f : \mathbb{R}^n \rightarrow \mathbb{R}$가 있다고 하자.
이 함수가 미분 가능할 때 $x_1$에 대한 편미분 (Partial derivative)은 다음과 같이 정의된다.
Gradient는 각 성분을 편미분으로 하는 벡터이다.
Gradient는 결국 성분이 $n$개인 벡터이며, 벡터의 각 성분들이 함수 $f$의 편미분값이다.
일반적으로 Gradient는 열벡터로 표기한다.
** 사실 수학적으로 위 gradient 정의는 완벽하진 않다. 위 정의는 어디까지나 dot product를 내적으로 갖는 유클리드 공간에서, standard basis vector를 basis vector로 정의한 경우에만 참이다.
즉, 다른 공간이나 dot product가 아닌 내적이 정의된 내적공간에서는 gradient가 위와 같이 표현되지 않는다.
하지만, 이에 대한 자세한 이야기는 측도론 / 함수해석학 이야기를 필요로 하므로 여기서는 이 수준에서만 넘어가도록 하겠다. 추후, 심화편에서 이에 대한 이야기를 다룰 기회가 있으리라 기대한다. **
다음은 Chain rule (합성함수의 미분법)이다.
어떤 이변수 함수 $f(\mathbb{x})$가 있을 때, $\mathbb{x} \in \mathbb{R}^2$도 $t$에 대한 함수라고 해보자.
즉, $x_1 = x_1(t), x_2 = x_2(t)$라 하자.
이런 $f$를 우리는 합성함수라 하는데 $f$를 변수 $t$에 대해서 미분하면 어떻게 될까? 이때 적용되는 것이 chain rule이다.
결국 $f$의 $x$에 대한 gradient와 $x$의 $t$에 대한 gradient의 내적이다.
참고로, $f$가 벡터를 인풋으로 받아 벡터를 아웃풋으로 내놓는 함수일 때, 즉 $f : \mathbb{R}^n \rightarrow \mathbb{R}^m$일 때, 이 함수의 1차 미분은 행렬이다.
이를 우리는 야코비안 (Jacobian matrix)이라 하며, 이 야코비안의 각 행벡터는 $f_1$의 gradient이다.
일단 딥러닝에서 손실함수는 벡터를 인풋으로 받아 스칼라를 아웃풋으로 내놓는 함수 ($f : \mathbb{R}^n \rightarrow \mathbb{R}$) 이므로, 이번 포스팅에서는 이에 초점을 맞추어 이야기하도록 하겠다.
gradient는 딥러닝에서 "기울기" 그 이상의 중요한 의미가 있다.
"gradient는 함수의 현재 지점에서 가장 가파른 방향을 의미한다."
즉, negative gradient의 방향은 가장 가파른 하강 방향을 가리키기 때문에 현재의 지점에서 그 방향으로 이동하면 함숫값이 가장 크게 감소한다.
앞서 우리는 함수 $f: \mathbb{R}^n \rightarrow \mathbb{R}$ 를 1번 미분한 벡터를 gradient라 한다고 하였다.
그렇다면 이를 2번 미분하면 어떻게 될까?
gradient의 성분, 즉 예를 들어 ${\partial \over \partial x_1}f$를 다시 $\{ x_1, \cdots, x_n \}$으로 편미분을 진행한 것이므로, 행렬이 나올 것이다.
이를 우리는 Hessian matrix (헤시안 행렬)이라고 한다.
결국 헤시안 행렬은 $f$를 2번 편미분한 성분들의 모음이다.
단순하게 $\mathbb{x} = {x_1, x_2}$를 정의역으로 하는 함수 $f$의 헤시안 행렬을 생각해보자.
$f$는 2번 미분 가능하다고 가정하자.
$2 \times 2$ 행렬이 나오고 각 성분은 편미분 값이다.
여기서 보면 알 수 있듯이 헤시안 행렬은 함수가 적어도 2번 미분 가능하면 항상 대칭 행렬이다.
헤시안 행렬은 상당히 중요한 행렬이면서 함수에 대해서도 상당히 중요한 정보들을 담고 있기 때문에 현재 딥러닝에서도 상당히 많은 연구가 이뤄지고 있는 행렬이다.
이는 Deep dive into optimization에서 기회가 되면 다루겠다. (eg : 뉴턴법)
이 정도로 딥러닝을 위한 기초수학, 선형대수학, 확률 통계, 미적분학에 대한 이야기를 마무리하고 다음 포스팅부터
본격적으로 딥러닝에 대한 이야기로 넘어가도록 하겠다.
'Deep dive into Deep learning' 카테고리의 다른 글
Deep dive into Deep learning part 11. 신경망 - Updated (0) | 2023.04.11 |
---|---|
Deep dive into Deep learning part 10. 신경망 - Updated (0) | 2023.04.05 |
Deep dive into Deep learning part 8. - Updated (0) | 2023.03.29 |
Deep dive into Deep learning part 7 - Updated (0) | 2023.03.22 |
Deep dive into Deep learning part 6. - Updated (0) | 2023.03.17 |
댓글