다운로드
작성자: admin 작성일시: 2018-12-09 18:34:47 조회수: 2479 다운로드: 220
카테고리: 기타 태그목록:

4.5 변분법

데이터 분석에서는 함수와 더불어 다양한 범함수가 사용된다. 이 절에서는 범함수의 개념과 범함수의 미분에 해당하는 변분법을 공부한다.

범함수

함수(function)는 실수(real number)를 입력받아 실수를 출력한다.

$$ \begin{align} \text{real number } x \rightarrow \boxed{\; \text{ function } \; f \; \phantom{\frac{\dfrac{}{}}{\dfrac{}{}}}} \rightarrow \text{real number} \tag{4.5.1} \end{align} $$

그런데 앞으로 공부하게 될 기댓값, 엔트로피 등을 계산할 때는 함수를 입력받고 이를 기반으로 실수를 출력한다. 이렇게 함수를 입력으로 받아 실수를 출력하는 것을 범함수(functional)라고 한다.

$$ \begin{align} \text{function } y(x) \rightarrow \boxed{\; \text{ functional } \; F \; \phantom{\frac{\dfrac{}{}}{\dfrac{}{}}}} \rightarrow \text{real number} \tag{4.5.2} \end{align} $$

범함수는 보통 알파벳 대문자로 표기한다. 함수에서는 입력변수를 실수를 소괄호(parenthesis)로 감싸지만 범함수는 입력변수인 함수를 대괄호(square bracket)로 감싼다.

$$ \begin{align} F[y(x)] \tag{4.5.3} \end{align} $$

범함수 값은 정적분으로 계산하는 경우가 많다. 예를 들어 확률변수 $X$의 기댓값과 엔트로피는 확률밀도함수 $p(x)$를 다음처럼 적분한 값이다. 구체적인 정의는 확률론에서 공부하게 된다. 여기에서는 함수 $p(x)$를 입력으로 받아서 스칼라 실수를 출력하는 범함수 $E$와 $H$라는 것이 있다는 것만 알면 된다.

$$ \begin{align} \text{E}[p(x)] = \int_{-\infty}^{\infty} xp(x)dx \tag{4.5.4} \end{align} $$$$ \begin{align} \text{H}[p(x)] = -\int_{-\infty}^{\infty} p(x)\log p(x) dx \tag{4.5.5} \end{align} $$

입력인 함수가 변할 때 범함수의 출력이 어떻게 달라지는지를 계산하는 학문을 변분법(functional calculus, calculus of variations)이라고 한다.

범함수의 테일러 전개

함수 $f(x)$의 도함수 $\frac{df}{dx}$를 알면 다음처럼 함수의 근사값을 구할 수 있다. 이를 함수의 테일러 전개(Taylor expansion)라고 한다. 이 식에서 $\epsilon$은 아주 작은 실수를 의미한다.

$$ \begin{align} f(x + \epsilon) \approx f(x) + \dfrac{df}{dx} \epsilon \tag{4.5.6} \end{align} $$

범함수에 대해서도 마찬가지로 테일러 전개를 할 수 있다. 범함수의 테일러 전개를 이해하기 위해 우선 범함수가 아닌 단변수 함수의 테일러 전개부터 해보자. 설명의 편의를 위해 함수이름을 $F$, 독립변수를 $y$라고 하자. $F(y)$는 실수를 입력으로 받는 함수이지만 나중에 범함수와 비교하기 위해 편의상 대문자로 표시하였다. 입력 변수도 보통 사용하는 $x$ 대신 $y$라는 알파벳을 사용하였다.

함수 $F$의 테일러 전개식은 다음과 같다.

$$ \begin{align} F(y + \epsilon) \approx F(y) + \dfrac{dF}{dy} \epsilon \tag{4.5.7} \end{align} $$

$F$가 아직은 범함수가 아니라 함수이고 $y$도 아직은 함수가 아니라 변수이므로 이 식은 위 테일러 전개식을 함수와 변수 이름만 바꿔 쓴 것이다.

만약 $F$가 단변수 함수가 아니라 $y_1, y_2, \ldots, y_N$이라는 $N$개의 실수 입력을 받는 다변수 함수라면 테일러 전개식은 다음처럼 쓸 수 있다.

$$ \begin{align} \begin{aligned} F(y_1 + \epsilon_1, y_2 + \epsilon_2, \ldots, y_N + \epsilon_N) &\approx F(y_1, y_2, \ldots, y_N) + \dfrac{\partial F}{\partial y_1} \epsilon_1 + \dfrac{\partial F}{\partial y_2} \epsilon_2 + \cdots \dfrac{\partial F}{\partial y_N} \epsilon_N \\ &= F(y_1, y_2, \ldots, y_N) + \sum_{i=1}^{N} \dfrac{\partial F}{\partial y_i} \epsilon_i \end{aligned} \tag{4.5.8} \end{align} $$

위 식에서 $y_i$이 $x_i$를 입력으로 받아서 계산된 함수의 값 $y(x_i)$이라고 가정한다.

$$ \begin{align} y_i = y(x_i) \tag{4.5.9} \end{align} $$

그리고 $\epsilon_i$는 $x_i$를 입력으로 받는 임의의 함수 $\eta(x)$의 값 $\eta(x_i)$에 아주 작은 공통 상수 $\epsilon$을 곱한 값이라고 가정한다.

$$ \begin{align} \epsilon_i = \epsilon \eta(x_i) \tag{4.5.10} \end{align} $$

그러면 위 테일러 전개식은 다음처럼 쓸 수 있다.

$$ \begin{align} F \big( y(x_1) + \epsilon\eta(x_1), y(x_2) + \epsilon\eta(x_2), \ldots, y(x_N) + \epsilon\eta(x_N) \big) \approx F \big( y(x_1), y(x_2), \ldots, y(x_N) \big) + \epsilon \sum_{i=1}^{N} \dfrac{\partial F}{\partial y_i} \eta(x_i) \tag{4.5.11} \end{align} $$

위 식은 실수 벡터 또는 수열(sequence)를 입력으로 받고 실수를 출력하는 함수에 대한 테일러 전개이다.

$$ \begin{align} \text{ sequence } \{ y(x_1), \cdots, y(x_N) \} \;\; \rightarrow \;\; \text{ function } F \big( \{ y(x_1), \cdots, y(x_N) \} \big) \tag{4.5.12} \end{align} $$

여기에서 수열의 크기 $N$을 무한대로 늘리면 수열 $\{ y(x_1), \cdots, y(x_N) \}$는 $y(x)$라는 함수를 나타낸다고 볼 수 있다. 그려면 함수 $F$도 이제는 함수가 아니라 함수 $y$를 입력으로 받는 범함수가 된다.

$$ \begin{align} \text{ function } y(x) \;\; \rightarrow \;\; \text{ functional } F [ y(x) ] \tag{4.5.13} \end{align} $$

위 식에서 수열 $\{ y(x_1), \cdots, y(x_N) \}$를 함수 $y$로 바꿔 쓰면 다음과 같다.

$$ \begin{align} F[y(x) + \epsilon \eta(x)] \approx F[y(x)] + \epsilon \int \dfrac{\delta F}{\delta y(x)} \eta(x) dx \tag{4.5.14} \end{align} $$

이 식이 바로 범함수에 대한 테일러 전개이다.

범함수의 도함수

위 식에서 $\epsilon$의 변화에 의한 범함수 값의 변화는

$$ \begin{align} \dfrac{F[y(x) + \epsilon \eta(x)]-F[y(x)]}{\epsilon} = \int \dfrac{\delta F}{\delta y(x)} \eta(x) dx \tag{4.5.15} \end{align} $$

이다. 어떤 $\eta(x)$ 함수에 대해서도 이 값이 0이 되려면

$$ \begin{align} \dfrac{\delta F}{\delta y(x)} = 0 \tag{4.5.16} \end{align} $$

이 되는 수 밖에 없다. 여기에 나온

$$ \begin{align} \dfrac{\delta F}{\delta y(x)} \tag{4.5.17} \end{align} $$

를 범함수의 도함수(functional derivative)라고 하며 함수의 도함수와 같은 역할을 한다. $y$를 변수, $F$를 함수라고 놓고 미분하여 구한 도함수와 같다. 하지만 범함수를 함수로 미분하였다는 것을 강조하기 위해 $d$ 기호가 아니라 $\delta$ 기호를 사용하였다.

적분형 범함수의 도함수

대부분의 범함수는 $x$에 대한 적분으로 정의되며 적분 기호안의 연산은 $y(x)$와 $x$ 를 입력 변수로 받는 함수 $G \big( y, x \big)$라고 할 수 있다.

$$ \begin{align} F[y(x)] = \int G(y, x) dx \tag{4.5.18} \end{align} $$

이러한 범함수 $F$의 도함수는 다음처럼 계산할 수 있다.

$$ \begin{align} \dfrac{\delta F}{\delta y} = \dfrac{\partial G}{\partial y} \tag{4.5.19} \end{align} $$

$y$가 원래는 함수이지만 마치 변수처럼 생각하고 $G$의 편미분을 구했기 때문에 $\dfrac{\delta}{\delta y}$ 기호가 아닌 $\dfrac{\partial}{\partial y}$ 기호를 사용하였다.

예제

기댓값 $E$는 다음과 같이 정의되는 범함수이다.

$$ \begin{align} \text{E}[p(x)] = \int_{-\infty}^{\infty} xp(x)dx \tag{4.5.20} \end{align} $$

위 식에 대응시키면

$$ \begin{align} G(y,x) = xy \tag{4.5.21} \end{align} $$

가 된다. 이 때 $y$에 대한 $F$의 도함수는

$$ \begin{align} \dfrac{\delta F}{\delta y} = \dfrac{\partial G}{\partial y} = x \tag{4.5.22} \end{align} $$

이다.

예제

그레디언트 부스팅(gradient boosting) 방법에서는 주어진 목표함수 $y(x)$와 가장 비슷한 모형함수 $\hat{y}(x)$를 구하기 위해 다음과 같은 범함수인 손실함수를 사용한다.

$$ \begin{align} L = \int \dfrac{1}{2}(\hat{y}(x) - y(x))^2 dx \tag{4.5.23} \end{align} $$

모형함수 $\hat{y}(x)$에 대한 범함수 손실함수 $L$의 그레디언트를 구하면

$$ \begin{align} G(\hat{y}) = \dfrac{1}{2}(\hat{y}(x) - y(x))^2 \tag{4.5.24} \end{align} $$

에서

$$ \begin{align} \dfrac{\delta L}{\delta \hat{y}} = \dfrac{\partial G}{\partial y} = \hat{y}(x) - y(x) \tag{4.5.25} \end{align} $$

이 된다.

오일러-라그랑주 공식

가끔씩 $x$, $y(x)$ 이외에 추가로 $y(x)$의 $x$에 대한 도함수인 $y'(x) = \dfrac{dy}{dx}$도 입력 변수로 받는 함수 $G \big( y(x), y'(x), x \big)$로 정의된 도함수도 있을 수 있다.

$$ \begin{align} F[y(x)] = \int G(y, y', x) dx \tag{4.5.26} \end{align} $$

이 때는 범함수$F$의 함수 $y$에 대한 도함수를 다음처럼 구한다.

$$ \begin{align} \dfrac{\partial G}{\partial y} - \dfrac{d}{dx}\left( \dfrac{\partial G}{\partial y'} \right) \tag{4.5.27} \end{align} $$

위 식에서 $\dfrac{\partial G}{\partial y}$와 $\dfrac{\partial G}{\partial y'}$는 함수 $y$와 $y'$을 마치 별개의 변수인 것처럼 생각하고 편미분한 도함수를 뜻한다. $\dfrac{d}{dx}\left( \dfrac{\partial G}{\partial y'} \right)$는 그렇게 구해진 함수를 다시 변수 $x$로 미분한 결과를 말한다.

이를 오일러-라그랑주(Euler-Lagrange) 공식이라고 한다.

최적 제어

함수 $f(x)$가 있을 때 이 값이 가장 커지도록 혹은 가장 작아지도록 하는 독립변수 $x$의 값을 찾아내는 것을 최적화(optimization)이라고 한다. 이와 비슷하게 범함수 $F[y(x)]$가 있을 때 이 값이 가장 커지도록 혹은 가장 작아지도록 하는 독립함수 $y(x)$를 찾는 것을 최적 제어(optimal control)라고 한다.

최적화를 위한 필요조건은 최적의 독립변수의 값 $x^{\ast}$을 입력하면 함수의 도함수의 값이 0이 되어야 한다는 것이었다.

$$ \begin{align} \dfrac{df}{dx}(x^{\ast}) = 0 \tag{4.5.28} \end{align} $$

최적제어에서도 최적의 함수 $y^{\ast}(x)$를 입력하면 범함수의 도함수의 값이 0이 되어야 한다는 것이 최적 조건이다.

$$ \begin{align} \dfrac{\delta f}{\delta y}[y^{\ast}(x)] = 0 \tag{4.5.29} \end{align} $$

질문/덧글

식이 이해가 되지 않습니다 dlft*** 2020년 1월 26일 4:42 오후

식 4.5.18이 이해가 안갑니다 ㅠㅠ 식 4.5.19를 보면F = G인건가요?? G를 적분 한 값이 F인데 뭐가 어떻게 되는건지 잘 모르겠습니당..

답변: 식이 이해가 되지 않습니다 관리자 2020년 1월 29일 9:23 오전

F는 범함수의 이름이고 G는 그 범함수를 계산하기위해 사용되는 적분의 목적함수 이름입니다.