Optization(최적화)란 무엇인가?
Optimization(최적화)는
feasible candidates
(가능한 후보)들 중에서
Optimal element(최적의 요소)를 찾아내는 과정임.
쉽게 말해, 어떤 문제에 대해 Optimal solution
을 찾는 것임.
Feasible candidates
(가능 후보들):- 최적의 요소를 찾기 위해 고려하는 후보들임.
- 이 후보들은 보통
constraints
(제약 조건)에 의해 범위가 제한됨.
Objective function
(목적 함수, J):- Optimization에서 optimal solution을 찾기 위해 사용하는 함수를 가르키는 generic term임.
- 실제적으로는 이 함수의 값을 가장 작게(또는 크게) 만드는 것이 optimization의 목표임.
- 분야에 따라 다른 이름으로도 사용되는데 그 종류는 다음과 같음.
- cost function: C
- loss function: L
- energy function: E
- utility function (이 경우, 최대화의 대상)
Optimal solution
(최적해):- Objective function의 값이 가능한 범위 내 (=feasible candidates)에서
- 가장 작은(또는 큰) 값을 가지게 하는 solution임.
일반적인 Optimization Problem의 형식
일반적으로 minimization problem의 수식으로 나타내어지며 수식은 다음과 같음.
참고로 이 절에서는 minimization problem으로 표시했으나,
loss function에 -1을 곱해주면 maximization problem으로 쉽게 변환 가능함을 잊지 말것.
$$\underset{\boldsymbol{\omega}}{\min}f(\boldsymbol{\omega})$$
일반적으로 위의 최소화문제 다음의 constraint를 가짐.
- $m$개의 부등식 제약 조건 $g_i(\boldsymbol{\omega}) \le 0$ 및
- $p$개의 등식 제약 조건 $h_j(\boldsymbol{\omega})=0$에 종속된다.
위의 설명에서 각 term은 다음과 같음.
- $f(\textbf{x})$ : real-valued function of $\textbf{x}$ (or scalar field)
- $\textbf{x}$ : an input column vector $\textbf{x}=(x_0, x_1, \dots, x_n)^T$, which can be a scalar, while
- $\textbf{g(x), h(x)}$ : vector-valued functions.
$$f: \mathbb{R}^n \rightarrow \mathbb{R} \\ \textbf{g}: \mathbb{R}^n \rightarrow \mathbb{R}^m\\ \textbf{h}: \mathbb{R}^n \rightarrow \mathbb{R}^p$$
참고: 아래 URL 문서의 첫부분을 참고
2023.07.06 - [.../Math] - [Math] Lagrangian from Standard Form using Indicator Function
위와 같은 수식으로 Optimizaton problem이 정의되기 때문에
objective function $f(\textbf{x})$, inequality constraints $\textbf{g}(\textbf{x})$, 그리고 equality constraints $\textbf{h}(\textbf{x})$들의 종류 및 속성에 의해
Optimization의 종류를 나눌 수 있음.
2024.06.01 - [.../Math] - [Math] Optimization Problem 의 종류
Mathematical Optimization
수학적 최적화는,
- 주어진 domain(도메인)에서 (constraints로 주어짐)
- Objective function의 extreme value(극값)을 찾는 문제로
- 공식화된다.
즉, function의 extrem value를 찾는 문제라고 볼 수 있음.
때문에 Optimization은 Equation Solving(방정식 풀기)와 관련이 깊음.
2024.02.20 - [.../Math] - [Math] 용어: root, equality, expression
Root Finding과 Gradient
Optimization은 다음과 같은 특징 때문에 일종의 연립방정식의 근을 찾는 것이라고 볼 수 있음.
- loss function을 최소화하는 최적값(optimal value)에서는, 그 loss function의 derivative(도함수)나 gradient (multi-variable function이 loss function인 경우)가 0이 됨.
- 이에 대한 역은 반드시 참이 아님을 주의할 것.
- 즉, 도함수나 gradient가 0이라고 해서 반드시 최적값은 아님.
- 최적해가 되기 위한 necessary condition(필요조건)은 derivative 또는 gradient가 0임.
2022.05.19 - [.../Math] - [Math] 필요조건, 충분조건, 필요충분조건
때문에 Optimization 에서 흔히 사용되는 접근 방식은 다음과 같음:
- derivative 또는 gradient의 영점(zeros)을 찾고
- 1에 찾은 여러 후보들에 대해 최적성(optimality)으로 테스트하고 가장 최적의 값을 선정.
하지만 이 방법은 항상 가능하지 않으며, 종종 다른 수치적 접근이 필요하기도 함.
이러한 접근법 중 많은 것들이 방정식 풀이(numerical methods for root finding)와 밀접하게 관련되어 있음.
2022.06.07 - [Computer/ETC] - [ML] Newton-Raphson Method
위의 이유로 인해 Optimization에서 사용되는 objective function이나 constraints는 continuous하고 smooth한 경우가 많음.
참고로 많이 이용되는 방식 중 하나로 Lagrange Method가 있음.
2023.07.06 - [.../Math] - [Math] Lagrangian from Standard Form using Indicator Function
Lagrange Method는 inequality constraints도 다룰 수 있으나 equality constraints로 한정한 경우에 보다 쉽게 사용할 수 있음.
2023.06.26 - [.../Math] - [Math] Lagrange Method or Lagrange Multiplier Method
ML과 DL에서의 Optimization
ML이나 DL에서는 model이 주어진 데이터를 얼마나 잘 설명하는지를 평가하기 위해 loss function (손실 함수)을 사용함.
- model의 성능이 좋을수록 loss function의 값이 작아짐.
- 최적의 model을 찾는 과정이 learning이며, 해당 learning은 training을 통해 이루어짐.
- training은 loss function의 값을 최소화하는 model을 찾기 위해 Optimization을 사용함.
Learning(학습), Training(훈련), Optimization(최적화)의 관계
Learning(학습), Training(훈련), Optimization(최적화)는 ML과 DL에서 매우 중요한 개념임.
이들은 다음과 같이 서로 밀접하게 연관되어 있음.
- Learning(학습):
- Learning이란 training dataset(학습 데이터)를 통해 우리가 원하는 성능으로 특정 작업(task)을 수행하는 model을 얻는 과정임.
- Learning의 목표는 model이 주어진 데이터를 이해하고, 새로운 데이터에 대해서도 정확한 예측을 할 수 있도록 하는 것임.
- Training(훈련):
- Training은 model을 학습시키는 과정을 가리킴.
- 이 과정에서는 model이 training dataset을 통해 parameters를 조정하며 성능을 향상(=loss 를 최소화)시키는 것을 목표로 함.
- Training에서는 loss function을 사용해 model의 성능을 평가하고,
- Optimization Algorithms을 통해 loss function를 최소화하도록 parameters를 조정함.
- Optimization(최적화):
- Optimization(최적화)는 training 에서 최적의 parameters를 찾는 데 사용되는 방법임.
- Model의 loss function을 최소화하기 위해 parameters를 조정하는 과정임.
ML, DL에서의 Optimization 관련 용어
- 손실 함수(Loss function): 모델이 학습 데이터를 얼마나 잘 설명하는지를 측정하는 함수임.
- 모델의 파라미터(Parameter): 모델의 성능을 조절하는 변수들임.
- Optimizer(최적화 알고리즘): 손실 함수를 최소화하기 위해 모델의 파라미터를 조정하는 알고리즘임.
참고로
가장 기본적인 Optimization Algorith은 바로 gradient descent (경사 하강법).
- 이 알고리즘은 loss function을 가장 가파르게 최소화시키는 방향(gradient)을 찾아 parameters를 조금씩 조정함.
- 이를 반복하면 loss function의 값이 점점 작아지고, 결국 최적의 parameters를 찾게 됨: Iterative Method.
2023.10.19 - [Programming] - [ML] Gradient Descent Method : 경사하강법
예시: DL에서의 최적화
DL의 Artificial Neural Network (ANN)을 생각해 볼 것.
ANN은 여러 층(layer)으로 이루어져 있으며, 각 층에는 많은 노드(node)와 연결(connection)이 있음.
각 연결에는 가중치(weight)라는 파라미터가 존재함.
- 학습 과정 (Learning): 모델이 데이터를 통해 패턴을 인식하고 예측을 수행할 수 있도록 함.
- 훈련 과정 (Training): 손실 함수를 사용해 모델의 예측 성능을 평가하고, 최적화 알고리즘을 통해 가중치를 조정함.
- 최적화 (Optimization): 훈련 과정에서 손실 함수를 최소화하기 위해 가중치를 조정하는 구체적인 과정임.
이처럼 Optimization은 ML이나 DL에서 핵심적인 역할을 하며, modeld의 학습에서 매우 중요한 과정임.
Learning과 Training은 Optimization를 통해 이루어지며,
Optimization을 통해 model이 데이터를 가장 잘 설명하도록 만드는 것이 바로 DL의 목표임.
같이 읽어보면 좋은 자료들
Numerical Python : Scientific Computing and Data Science Applications with Numpy, SciPy and Matplotlib, 2nd Ed., Robert Johansson, Uraysasu-shi, and Chiba, 2019, Apress.
https://www.amazon.com/Numerical-Python-Scientific-Applications-Matplotlib/dp/1484242459
http://acornpub.co.kr/book/numerical-python-2e
'... > Math' 카테고리의 다른 글
[Math] Importance of Continuous and Smooth Functions in Optimization Problems (0) | 2024.06.01 |
---|---|
[Math] Optimization Problem 의 종류 (0) | 2024.06.01 |
[Math] Categorical Distribution (0) | 2024.05.22 |
[Math] Multinomial Distribution (다항분포) (0) | 2024.05.22 |
[Math] Probability Distribution (0) | 2024.04.18 |