최적화 이론(Optimization Theory)은 목적 함수를 최소화 또는 최대화하는 해를 찾는 수학적 방법론이다. 선택 가능한 대안 집합에서 특정 기준에 관해 최선의 원소를 선택하는 과정이며, 머신러닝, 운영 연구, 공학 설계의 핵심을 이룬다.
표준 문제 형식
minimize f(x) ← 목적 함수 (objective function)
subject to g_i(x) ≤ 0 ← 부등식 제약 조건
h_j(x) = 0 ← 등식 제약 조건
x ∈ ℝⁿ
최대화 문제는 -f(x) 최소화로 변환하여 동일하게 다룬다.
최적화 문제 분류
변수 유형
| 유형 | 설명 | 대표 알고리즘 |
|---|
| 연속 최적화 | 실수 도메인에서 해를 탐색 | 경사하강법, BFGS |
| 이산 최적화 | 정수·순열·그래프 등 가산 집합 | 분기한정법, 동적 계획법 |
| 혼합 정수 | 연속 + 정수 변수 혼합 | 분기절단법 |
목적 함수·제약 조건 형태
볼록(Convex):
- 지역 최솟값 = 전역 최솟값 (수렴 보장)
- 예: 선형 계획법, SVM, LASSO
비볼록(Non-convex):
- 여러 지역 최솟값 존재 → 전역 최적 탐색 어려움
- 예: 신경망, 조합 최적화
선형 계획법 (LP):
- 목적함수·제약 모두 선형
- 심플렉스 알고리즘으로 다항 시간 내 해결
이차 계획법 (QP):
- 목적함수에 이차항 포함, 제약은 선형
- SVM 학습의 핵심
최적성 조건
1차 필요조건 — KKT 조건
등식·부등식 제약이 있는 문제의 최적해에서 반드시 성립하는 조건이다.
∇f(x*) + Σ λᵢ ∇gᵢ(x*) + Σ μⱼ ∇hⱼ(x*) = 0 (정류점)
λᵢ ≥ 0 (비음성)
λᵢ gᵢ(x*) = 0 for all i (상보적 느슨함)
gᵢ(x*) ≤ 0, hⱼ(x*) = 0 (실현가능성)
2차 조건 — 헤시안 판정
헤시안 H = ∇²f(x*)
H 양의 정부호 (positive definite) → 극솟값
H 음의 정부호 (negative definite) → 극댓값
H 부정부호 → 안장점 (saddle point)
경사하강법 변형
python
import numpy as np
# 배치 종류
# - Batch GD: 전체 데이터로 기울기 계산 → 정확하나 느림
# - Stochastic GD: 샘플 1개씩 업데이트 → 빠르나 진동
# - Mini-batch GD: 32~256개 묶음 → 실용적 균형
class SGD:
def __init__(self, lr=0.01, momentum=0.9):
self.lr = lr
self.momentum = momentum
self.v = None
def step(self, params, grads):
if self.v is None:
self.v = {k: np.zeros_like(v) for k, v in params.items()}
for k in params:
self.v[k] = self.momentum * self.v[k] - self.lr * grads[k]
params[k] += self.v[k]
return params
Adam 옵티마이저 (Adaptive Moment Estimation)
1차 모멘텀(방향) + 2차 모멘텀(스케일)을 결합한 적응형 학습률 방법이다.
python
class AdamOptimizer:
"""Adam: Adaptive Moment Estimation (Kingma & Ba, 2014)"""
def __init__(self, lr=0.001, beta1=0.9, beta2=0.999, eps=1e-8):
self.lr = lr
self.beta1, self.beta2, self.eps = beta1, beta2, eps
self.m, self.v, self.t = None, None, 0
def step(self, params, grads):
if self.m is None:
self.m = {k: np.zeros_like(v) for k, v in params.items()}
self.v = {k: np.zeros_like(v) for k, v in params.items()}
self.t += 1
updated = {}
for k in params:
# 1차/2차 모멘텀 갱신
self.m[k] = self.beta1 * self.m[k] + (1 - self.beta1) * grads[k]
self.v[k] = self.beta2 * self.v[k] + (1 - self.beta2) * grads[k]**2
# 편향 보정 (초기 단계 보상)
m_hat = self.m[k] / (1 - self.beta1**self.t)
v_hat = self.v[k] / (1 - self.beta2**self.t)
updated[k] = params[k] - self.lr * m_hat / (np.sqrt(v_hat) + self.eps)
return updated
볼록 최적화 (Convex Optimization)
볼록 문제는 지역 최솟값이 전역 최솟값임이 보장되어 효율적으로 풀 수 있다.
python
from scipy.optimize import minimize
import numpy as np
# 제약 있는 볼록 최적화 예시 (SVM 마진 최대화)
def objective(x):
return 0.5 * np.dot(x, x) # ||w||² 최소화
constraints = [
{'type': 'ineq', 'fun': lambda x: np.dot([1, 1], x) - 1}, # y₁(w·x₁+b) ≥ 1
{'type': 'ineq', 'fun': lambda x: -np.dot([1, -1], x) + 1}, # y₂(w·x₂+b) ≥ 1
]
result = minimize(objective, x0=[0, 0], method='SLSQP', constraints=constraints)
print(f"최적해: {result.x}, 목적함수: {result.fun:.4f}")
주요 알고리즘 분류
| 범주 | 알고리즘 | 특징 |
|---|
| 1차 방법 | 경사하강법, SGD, Adam | 기울기만 사용, 대규모 문제 적합 |
| 2차 방법 | 뉴턴법, L-BFGS | 헤시안 활용, 빠른 수렴, 높은 계산 비용 |
| 단체법 | 심플렉스 알고리즘 | LP 전용, 유한 단계 내 종료 |
| 준뉴턴 | BFGS, L-BFGS | 헤시안 근사, 중대형 문제 (~1000 변수) |
| 휴리스틱 | 유전 알고리즘, 시뮬레이션 어닐링 | 비볼록 전역 탐색, 수렴 비보장 |
| 진화 알고리즘 | PSO, DE | 병렬 탐색, 블랙박스 문제 |
옵티마이저 비교
| 옵티마이저 | 특징 | 추천 상황 |
|---|
| SGD | 단순, 일반화 우수 | 이미지 분류 (ResNet) |
| SGD + Momentum | 진동 감소, 안정적 수렴 | 대부분 딥러닝 |
| Adam | 빠른 수렴, 학습률 자동 조정 | NLP, GAN, 기본 선택 |
| AdamW | Adam + 가중치 감쇠 분리 | Transformer 학습 |
| L-BFGS | 2차 수렴, 메모리 효율 | 소규모 볼록 문제 |
| Lion | 부호 기반 업데이트, 메모리 효율 | 대규모 모델 |
수렴 이론
볼록 함수 + Lipschitz 연속 기울기:
학습률 α ≤ 1/L 이면 O(1/t) 수렴 (t = 반복 횟수)
강볼록(Strongly Convex) 함수:
선형 수렴 (geometric convergence): O(ρᵗ), ρ < 1
비볼록:
KKT 정류점 수렴 가능 (전역 최적 보장 없음)
뉴턴법:
극소 근방에서 이차 수렴 (quadratic convergence)
바이어슈트라스 극값 정리: 컴팩트 집합 위 연속 함수는 반드시 최대·최소값을 가진다.
다목적 최적화
상충하는 여러 목적을 동시에 고려할 때 단일 최적해가 아닌 파레토 최적 집합(Pareto front)을 구한다.
예: 자동차 설계
minimize 연료 소비량 f₁(x)
minimize 제조 비용 f₂(x)
→ 파레토 최적: f₁ 개선 시 f₂ 악화 불가피한 해의 집합
한쪽을 희생하지 않고는 다른 쪽을 더 개선할 수 없는 상태
응용 분야
| 분야 | 활용 사례 |
|---|
| 머신러닝 | 신경망 가중치 학습, 하이퍼파라미터 튜닝 |
| 금융 | 포트폴리오 최적화, 리스크 최소화 |
| 공학 설계 | 항공우주 구조 최적화, 회로 설계 |
| 운영 연구 | 공급망 스케줄링, 경로 최적화 (TSP) |
| 제어 | 모델 예측 제어(MPC), 로봇 궤적 계획 |
| 생물정보학 | 단백질 구조 예측, 유전자 네트워크 추론 |
관련 개념
참고문헌
- •Boyd, S. & Vandenberghe, L. (2004). Convex Optimization. Cambridge University Press.
- •Kingma, D. & Ba, J. (2014). Adam: A Method for Stochastic Optimization
- •Nocedal, J. & Wright, S. (2006). Numerical Optimization. Springer.