본문 바로가기

최적화8

함수의 최소화 또는 최대화의 조건 다음과 같이 제약조건이 없는 일반적인 최적화 문제가 있다. \[ \min_{\mathbf{x}} f(\mathbf{x}) \ \ \ \ 또는 \ \ \ \ \max_{\mathbf{x}} f(\mathbf{x}) \] 여기서 \( \mathbf{x} \in R^n \)은 최적화 변수이고, \( f(\mathbf{x}) \)은 목적함수(objective function)이다. 이 목적함수를 최소화 또는 최대화하기 위한 조건은 무엇일까. \( \mathbf{x} \)의 독립적 변화에 의해 유도된 함수 \( f(\mathbf{x}) \)의 변화량을 계산해 보자. \( \mathbf{x} \)의 변화량을 \( \Delta \mathbf{x} \)라고 하면, 함수의 증분(increment) \( \Delta f .. 2020. 10. 20.
라그랑지 곱수법의 증명 라그랑지 곱수(Lagrange multiplier)법을 증명해 보자. 먼저 기하학적 직관을 이용해서 증명해 본다. 다음과 같이 변수가 \( \mathbf{x} \in R^2 \)이고 등식 제약조건이 한 개 있는 최적화 문제를 살펴보자. \[ \begin{align} & p^* = \min_{x_1, x_2} f( x_1, x_2 ) \\ \\ subject \ to \ \ \ & h (x_1, x_2) = 0 \end{align} \] 등식 제약조건은 평면상의 곡선의 식을 나타낸다. 먼저 목적함수와 등식 제약조건 식을 \( x_1,x_2 \)을 축으로 하는 평면에 그려보자. 검은색 선은 \( f(x_1,x_2 )=c \)의 등고선을 나타낸다. 등고선이란 동일한 함수 값 \(c\)를 산출하는 변수 \( x.. 2020. 10. 1.
라그랑지 곱수법 라그랑지 곱수(Lagrange multiplier)법은 등식 제약조건이 있는 최적화 문제를 풀기 위해 고안된 방법이다. 등식 제약조건이 있는 최적화 문제는 다음과 같다. \[ \begin{align} & p^* = \min_{\mathbf{x}} f( \mathbf{x} ) \\ \\ subject \ to \ \ \ & h_j ( \mathbf{x} ) = 0, \ \ \ j=1,...,p \end{align} \] 여기서 \( \mathbf{x} \in R^n \) 은 최적화 변수, \( f( \mathbf{x}):R^n \to R \) 은 목적함수, \( h_j (\mathbf{x}):R^n \to R \) 은 등식 제약함수이다. 라그랑지 곱수법에 의하면 등식 제약조건이 있는 최적화 문제를 제약조건.. 2020. 10. 1.
경사하강법 제약조건이 없는 일반적인 최적화 문제는 다음과 같다. \[ p^* = \min_{\mathbf{x}} f(\mathbf{x}) \] 또는, \[ \mathbf{x}^* = \arg \min_{\mathbf{x}} f(\mathbf{x}) \] 여기서 \( \mathbf{x} \in R^n \) 은 최적화 변수이고, \( f(\mathbf{x}) \)은 목적함수(objective function)이다. 대부분 신경망 학습 알고리즘은 손실함수(loss function)를 정하거나 최적화를 위한 목적함수를 만드는 것으로 시작한다. 경사하강법(gradient descent) 또는 경사상승법(gradient ascent)은 목적함수를 최소화(minimization)하거나 최대화(maximization)하기 위해 .. 2020. 9. 30.
최적화 문제의 분류 제약조건이 있는 비선형 다변수 함수 \( f(\mathbf{x}) \)의 최소값 (또는 최대값)을 구하는 문제를 정적 최적화(static optimization) 문제 또는 비선형 프로그래밍 문제(NLP, nonlinear programming problem)라고 한다. 수식으로 표현하면 다음과 같다. \[ \begin{align} & p^* = \min_{\mathbf{x}} f(\mathbf{x}) \\ \\ subject \ to \ \ \ & g_i (\mathbf{x}) \le 0, \ \ \ i=1,...,m \\ \\ & h_j (\mathbf{x}) = 0, \ \ \ j=1,...,p \end{align} \] 여기서 \( \mathbf{x} \in R^n \)을 최적화 변수(optimi.. 2020. 9. 30.
스칼라 함수를 벡터로 두번 미분하기 : 헤시안 스칼라 함수의 그래디언트는 벡터다. 그러면 그래디언트를 벡터에 대해 한번 더 미분한다면 행렬이 될 것이다. 이 행렬은 스칼라 함수를 벡터로 두 번 미분하여 얻어진 것으로 헤시안(Hessian)이라고 한다. 수식으로 알아보자. 벡터 \( {\bf x} = \begin{bmatrix} x_1 & x_2 & ... & x_n \end{bmatrix} ^T \)의 구성요소를 변수로 하는 다변수 스칼라 함수 \( f( {\bf x}) \)를 벡터 \( \bf x \)에 대해 미분하면 다음과 같이 된다. \[ \frac{d f}{d {\bf x} } = \begin{bmatrix} \frac{\partial f}{\partial x_1 } \\ \frac{\partial f}{\partial x_2 } \\ \vd.. 2020. 7. 17.
벡터 함수를 벡터로 미분하기 : 자코비안 벡터 \( {\bf x} = \begin{bmatrix} x_1 &x_2 & ... & x_n \end{bmatrix} ^T \) 의 구성요소를 변수로 하는 다변수 스칼라 함수 \(f(x_1, x_2, …, x_n) \) 을 간단히 \( f( {\bf x}) \) 로 표기했다. 동일한 벡터를 변수로 갖는 스칼라 함수가 여럿 있다면 \( f( {\bf x}) \), \( g( {\bf x}) \), \( h( {\bf x}) \), \(... \) 이렇게 구별할 수 있을 것이다. 그런데 함수가 많다면 함수 이름으로 사용할 알파벳이 동날 것이므로, 보통 함수에 아래 첨자를 써서 그 함수들을 구별한다. 만약 스칼라 함수가 \( m \) 개 있다면, \( f_1( {\bf x}) \), \( f_2( {\bf .. 2020. 7. 16.
스칼라 함수를 벡터로 미분하기 : 그래디언트 대부분의 딥러닝 학습 알고리즘은 손실함수나 목적함수를 만드는 것으로 시작한다. 그리고 손실함수를 최소화하거나 목적함수를 최대화하기 위해 최적화 방법을 사용한다. 손실함수나 목적함수는 신경망 연결값을 변수로 갖는 스칼라 함수다. 이러한 연결값의 갯수는 신경망의 크기에 따라서 수 십 개에서 수 십억 개가 될 수도 있다. 따라서 손실함수나 목적함수는 다변수 스칼라 함수다. 손실함수나 목적함수를 최소화하거나 최대화할 때 필요한 것이 미분이다. 벡터 \( {\bf x} = \begin{bmatrix} x_1 & x_2 & ... & x_n \end{bmatrix} ^T \) 의 구성요소를 변수로 하는 다변수 스칼라 함수 \(f (x_1, x_2, …, x_n ) \) 을 간단히 \( f( {\bf x}) \) 로.. 2020. 7. 16.