인공지능을 위한 선형대수학 기초

최적화 기법

최 수빈 2025. 1. 8. 18:13

 

최적화 기법

 

머신러닝과 딥러닝에서 모델의 성능을 극대화하고, 목적 함수의 값을 최소화(또는 최대화)하는 기법

 

경사 하강법(Gradient Descent)

목적 함수의 기울기(Gradient)를 활용해 함수의 최소값을 찾는 반복적인 최적화 알고리즘

 

 

동작 원리

  1. 목적 함수의 기울기를 계산
  2. 기울기의 반대 방향으로 학습률(learning rate)에 비례해 이동
  3. 1, 2 과정을 반복하며 최소값에 수렴 ⇒ 학습률(step size)을 통해 각 반복에서 얼마나 이동할지 결정

 

*learning rate : 설정된 상수값

경사 하강법에서 사용되는 하이퍼파라미터

각 반복(iteration)마다 가중치를 얼마나 변경할지 결졍하는 상수

보통 eta로 표시, 모든 파라미터 업데이트에서 동일하게 적용

→일정한 크기의 이동을 의미

 

*step size : 기울기에 의해 달라지는 실제 이동 거리

특정 경로 또는 지점에서 실제로 이동하는 거리 자체를 의미

eta와 기울기 크기의 곱으로 계산

 learning rate가 동일하더라도 기울기의 크기에 따라 step size는 달라질 수 있음

 

 

변형

배치 경사 하강법 : 전체 데이터셋을 사용하여 기울기를 계산

확률적 경사 하강법(SGD) : 데이터 샘플 하나씩 사용

미니배치 경사 하강법 : 데이터셋을 소규모 미니배치로 나누어 사용

 

장점

간단한 구현

대규모 데이터셋 처리 가능(SGD 및 미니배치)

 

단점

지역 최소값(local minima) 또는 안장점(saddle point)에 빠질 수 있음

학습률 설정이 까다롭고, 부적절할 경우 발산 또는 느린 수렴 발생

 

 

 

✔️딥러닝에서 신경망 학습 시 역전파(backpropagation)와 함께 사용되어 신경망의 가중치 최적화

✔️강화학습에서 정책 경사법(policy gradient)에서 활용

 

라그랑주 승수법(Lagrange Multipliers)

 

제약 조건이 있는 최적화 문제를 해결하는 방법

 

 

아이디어

  • 제약 조건을 만족하는 영역에서 목적 함수 f(x)를 최적화
  • 목적 함수와 제약 조건을 결합한 라그랑주 함수 L(x, λ) = f(x) - λg(x)를 정의
  • 라그랑주 함수의 정류점(critical point)를 찾아 최적해 구함

장점 

제약 조건이 있는 문제를 무제약 최적화 문제로 변환

복잡한 수식도 효과적으로 다룰 수 있음

 

단점

제약 조건의 형태와 문제의 복잡성에 따라 계산이 어려워질 수 있음

 

 

 

✔️SVM(서포트 벡터 머신)의 쌍대 문제(dual problem) 해결

✔️물리학 및 경제학에서 제약 조건이 있는 최적화 문제에 사용

예 : 진자 운동에서 길이 제약 조건을 포함한 최적화, 기업의 이윤 극대화 문제에서 생산량 제약, 예산 제약 등을 포함

→라그랑주 승수법은 이러한 문제를 정리된 형태로 변환, 제약 조건을 직접적으로 다루기 때문에 학문적으로 표준적인 접근 방식이 됨

 

 

Adam 최적화 알고리즘(Adaptive Moment Estimation)

 

딥러닝에서 널리 사용되는 고급 최적화 기법

 

원리

  • 모멘텀(momentum)과 RMSprop의 아이디어를 결합한 알고리즘
  • 적응형 학습률을 사용해 각 파라미터의 업데이트 크기를 조정
  • 1차 모멘트(평균)와 2차 모멘트(분산)의 지수 이동 평균(exponential moving average)을 계산

장점

하이퍼파라미터 튜닝이 비교적 쉬움

대부분의 문제에서 빠른 수렴과 좋은 성능

 

단점

계산 비용이 SGD보다 약간 높음

특정 경우(예: 과적합 상황)에서는 성능이 저하될 수 있음

 

 

 

✔️딥러닝 신경망 학습에서 표준적으로 사용

 

 

기타 주요 최적화 기법

 

확률적 최적화

랜덤 탐색을 포함한 기법, 복잡한 함수에서 글로벌 최소값(global minimum)을 찾는 데 사용

예 : 시뮬레이티드 어닐링(Simulated Annealing), 유전 알고리즘(Genetic Algorithm)

 

제약 없는 최적화

BFGS(Quasi-Newton)와 같은 방법론은 목적 함수의 2차 미분 정보를 근사해 최적화

 

 

SciPy를 사용하여 간단한 최적화 문제를 해결하는 방법

import numpy as np
from scipy.optimize import minimize

# 최소화할 함수 정의
def f(x):
    return (x[0] - 1)**2 + (x[1] - 2.5)**2

# 초기값
x0 = [0, 0]

# 최적화 수행
res = minimize(f, x0, method='BFGS')

print("최적해:", res.x)


"""
최적해: [0.99999996 2.50000001]
"""

 

이 예제에서는 BFGS 알고리즘을 사용하고 있지만, 실제 머신러닝 애플리케이션에서는 문제의 특성에 따라 다양한 최적화 알고리즘을 선택할 수 있음

*BFGS : 준뉴턴 방식의 알고리즘으로 빠른 수렴을 제공

 

 


  • 신경망 학습 : 확률적 경사 하강법(SGD) 및 Adam 최적화 알고리즘
  • 서포트 벡터 머신(SVM): 라그랑주 승수법을 이용한 최적화 (선형 및 비선형 분류 문제 해결, 쌍대 문제를 통한 최적화)
  • 강화학습 : 정책 경사법(Policy Gradient)을 이용, 에이전트의 행동 정책 최적화 누적 보상 최대화
  • 하이퍼파라미터 최적화 : Bayesian Optimization이나 Grid Search/Random Search 기법 활용 모델 성능 극대화(최적 하이퍼파라미터 조합 탐색)

'인공지능을 위한 선형대수학 기초' 카테고리의 다른 글

텐서 연산  (2) 2025.01.09
고유값과 고유벡터  (4) 2025.01.07
선형 변환  (0) 2025.01.06
행렬식과 역행렬  (2) 2025.01.03
행렬과 행렬 연산  (1) 2025.01.03