Gradient-Free-Optimizers 라이브러리 소개
Gradient-Free-Optimizers 라이브러리는 변화도(gradient)가 없는 최적화 기법을 제공하는 파이썬 라이브러리로, 목적 함수(objective function)가 단순히 임의의 점수를 필요로 하는 경우에 유용합니다. 이 라이브러리는 다양한 최적화 문제를 해결할 수 있는 여러 기법을 포함하고 있으며, 특히 변화도(gradient) 기반 최적화 방법이 적용되지 않는 문제에도 유효합니다. 예를 들어, 복잡한 수학 함수를 최적화하거나, 데이터에 여러 개의 가우스 분포를 적합시키는 문제, 그리고 머신러닝 모델의 하이퍼파라미터를 최적화하는 데 사용될 수 있습니다. Gradient-Free-Optimizers는 Hyperactive 패키지(3.0.0 이상)의 최적화 백엔드로 사용되는 가볍고 간단한 최적화 도구입니다. 이 라이브러리는 직관적인 API와 다양한 최적화 알고리즘을 제공하여 사용자들이 쉽게 최적화 작업을 수행할 수 있도록 합니다.
Gradient-Free-Optimizers는 다양한 최적화 알고리즘을 제공하며, 각 알고리즘은 서로 다른 최적화 문제에 적합합니다. 로컬 최적화 알고리즘은 주어진 검색 공간 내에서 국소적인 탐색을 수행하며, Hill Climbing, Stochastic Hill Climbing, Repulsing Hill Climbing, Simulated Annealing, Downhill Simplex Optimization과 같은 기법이 포함됩니다. 이들 기법은 각각의 장단점을 가지고 있으며, 특정 문제에 맞는 최적의 솔루션을 제공할 수 있습니다. 글로벌 최적화 알고리즘은 전체 검색 공간을 탐색하며, Random Search, Grid Search, Random Restart Hill Climbing, Random Annealing, Pattern Search, Powell's Method와 같은 기법이 포함됩니다. 이러한 기법들은 보다 넓은 범위의 탐색을 통해 전역 최적해를 찾는 데 유리합니다.
주요 기능
-
간단한 API 디자인: Python 함수로 정의된 모든 것을 최적화할 수 있습니다.
-
현대적인 최적화 기술: 메타 휴리스틱 최적화 방법뿐만 아니라 Bayesian 최적화와 같은 순차 모델 기반 최적화도 제공하여 복잡한 목적 함수에 적합합니다.
-
메모리 딕셔너리 사용: 평가된 위치와 점수를 메모리에 저장하여 계산 시간을 절약합니다.
-
광범위한 테스트: 400개 이상의 테스트로 신뢰성을 보장합니다.
사용 방법
Gradient-Free-Optimizers의 사용 예시는 다음과 같습니다. 먼저 최적화할 목적 함수를 정의하고, 탐색 공간을 설정합니다. 그 다음, 최적화 알고리즘을 선택하여 최적화를 수행합니다. 예를 들어, RandomSearchOptimizer를 사용하여 단순한 포물선 함수를 최적화하는 코드는 다음과 같습니다. objective_function 함수는 입력 파라미터에 따라 점수를 계산하고, search_space 딕셔너리는 탐색할 범위를 정의합니다. 그 다음, RandomSearchOptimizer 객체를 생성하고 search 메서드를 호출하여 최적화를 수행합니다. 이와 같은 간단한 사용 예시는 Gradient-Free-Optimizers의 사용이 얼마나 간편한지를 보여줍니다. 또한, 이 라이브러리는 다양한 최적화 알고리즘을 제공하므로, 사용자는 특정 문제에 맞는 최적의 알고리즘을 선택하여 최적화를 수행할 수 있습니다.
최적화 알고리즘
아래는 다양한 최적화 알고리즘에 대해 검색 공간을 탐색하고 Convex / Non-Convex 목적함수에 대한 검색 공간에 대해 수집된 정보를 활용하는 방법을 시각적으로 보여줍니다. 전체 최적화 알고리즘에 대한 자세한 설명은 공식 문서를 참고해주세요.
지역 최적화(Local Optimization)
- 힐 클라이밍(Hill Climbing): 주변 이웃의 점수를 평가하여 가장 높은 점수로 이동
Convex Function |
Non-convex Function |
|
|
- 확률적 힐 클라이밍(Stochastic Hill Climbing): 더 나쁜 위치로 이동할 확률을 추가하여 국소 최적점(local optima)을 벗어남
Convex Function |
Non-convex Function |
|
|
- 반발 힐 클라이밍(Repulsing Hill Climbing): 더 나은 이웃을 찾지 못하면 에플실론을 증가시켜 탐색
Convex Function |
Non-convex Function |
|
|
- 모의 어닐링(Simulated Annealing): 시간이 지남에 따라 더 나쁜 위치로 이동할 확률 감소
Convex Function |
Non-convex Function |
|
|
- 다운힐 심플렉스 최적화(Downhill Simplex Optimization): 여러 위치로 구성된 심플렉스를 사용하여 탐색
Convex Function |
Non-convex Function |
|
|
글로벌 최적화(Global Optimization)
- 랜덤 서치(Random Search): 각 반복마다 무작위 위치(random position)로 이동
Convex Function |
Non-convex Function |
|
|
- 그리드 서치(Grid Search): 격자 탐색을 통해 탐색 공간을 대각선으로 이동 (step-size=1)
Convex Function |
Non-convex Function |
|
|
- 랜덤 리스타트 힐 클라이밍(Random Restart Hill Climbing): n회 반복 후 무작위 위치로 이동하는 힐 클라이밍
Convex Function |
Non-convex Function |
|
|
- 랜덤 애닐링(Random Annealing): 탐색 시작 시 큰 엡실론(epsilon)을 사용하고, 시간이 지남에 따라 감소
Convex Function |
Non-convex Function |
|
|
- 패턴 서치(Pattern Search): 십자형 위치 집합을 사용하여 이동 또는 축소
Convex Function |
Non-convex Function |
|
|
- 파웰의 방법(Powell's Method): 힐 클라이밍 알고리즘을 사용하여 각 차원별로 최적화
Convex Function |
Non-convex Function |
|
|
군집 기반 최적화(Population-Based Optimization)
- 병렬 템퍼링: 여러 모의 어닐링(n simulated annealers) 집합으로 전환 확률 교환(swap transition probabilities)
Convex Function |
Non-convex Function |
|
|
- 입자 군집 최적화(Particle Swarm Optimization): 최적 입자(best particle) 주위로 이동
Convex Function |
Non-convex Function |
|
|
- 나선형 최적화(Spiral Optimization): 최적 위치 주위로 나선형 패턴으로 이동
Convex Function |
Non-convex Function |
|
|
- 유전 알고리즘(Genetic Algorithm): 군집의 최적 개체(best individual)를 선택하고 혼합하여 새로운 솔루션 생성
Convex Function |
Non-convex Function |
|
|
- 진화 전략(Evolution Strategy): 위치 정보를 혼합하고 최악의 위치를 제거
Convex Function |
Non-convex Function |
|
|
- 차별적 진화(Differential Evolution): 무작위로 선택한 차등 돌연변이(differential mutation)을 통해 시험 벡터(trial vector)를 생성하여 개선
Convex Function |
Non-convex Function |
|
|
순차 모델 기반 최적화(Sequential Model-Based Optimization)
- 베이지안 최적화(Bayesian Optimization): 탐색된 위치에 대한 가우시안 프로세스를 사용하여 유망한 새 위치 예측
Convex Function |
Non-convex Function |
|
|
- 립시츠 최적화(Lipschitz Optimization): 이전 위치 간 거리의 상한을 계산하여 새로운 유망한 위치 탐색
Convex Function |
Non-convex Function |
|
|
- DIRECT 알고리즘(DIRECT algorithm): 탐색 공간을 하위 공간으로 나누고 중심 위치 평가
Convex Function |
Non-convex Function |
|
|
- 파젠 추정기 트리(Tree of Parzen Estimators): 커널 밀도 추정기를 사용하여 좋은 위치와 나쁜 위치 예측
Convex Function |
Non-convex Function |
|
|
- 포레스트 최적화(Forest Optimizer): 의사결정 트리(decision tree) 앙상블을 사용하여 유망한 새 위치 예측
Convex Function |
Non-convex Function |
|
|
Gradient-Free-Optimizers GitHub 저장소
Gradient-Free-Optimizers 공식 문서
https://simonblanke.github.io/gradient-free-optimizers-documentation
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래쪽에 좋아요를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~