> > > [인공지능/AI/최적화]휴리스틱 알고리즘 BO(Bayesian Optimization)란? 적은 실험으로 최적점을 똑똑하게 찾는 방법
본문 바로가기
기억하고 싶은 지식/인공지능

[인공지능/AI/최적화]휴리스틱 알고리즘 BO(Bayesian Optimization)란? 적은 실험으로 최적점을 똑똑하게 찾는 방법

by Remember-me 2026. 4. 8.
반응형

안녕하세요.
“기억하고자 하는 모든 것”을 담아내는 “리멤버미” 입니다.

 

최적화 문제를 풀다 보면 이런 상황을 자주 만나게 됩니다.
한 번 평가하는 데 시간이 오래 걸리거나, 실제 실험 비용이 크거나, 시뮬레이션 한 번 돌리는 것 자체가 부담스러운 경우입니다. 이럴 때는 무작정 많은 점을 찍어보는 방식이 비효율적입니다. 바로 이런 문제를 다룰 때 자주 언급되는 방법이 BO(Bayesian Optimization) 입니다. BO는 비용이 큰 black-box function을 적은 평가 횟수로 순차적으로 최적화하는 대표적인 방법으로 소개되며, 하이퍼파라미터 최적화, A/B 테스트, 과학·공학 문제 등 폭넓은 영역에 적용됩니다.

핵심만 먼저 말하면,
BO는 실제 목적함수를 자주 직접 계산하지 않고, 먼저 그 함수를 흉내 내는 surrogate model을 만든 뒤, 다음에 어디를 평가할지를 acquisition function으로 똑똑하게 고르는 알고리즘입니다. 그래서 단순히 “좋아 보이는 곳을 계속 찍는 방법”이 아니라, 현재까지의 관측값과 불확실성까지 함께 고려하는 확률적 최적화 방식에 가깝습니다.


BO는 정확히 무엇인가?

BO를 이해할 때 가장 중요한 키워드는 두 개입니다.

첫 번째는 surrogate model 입니다.
실제 목적함수 f(x)f(x)를 직접 많이 계산하는 대신, 현재까지 얻은 데이터로 “이 함수가 대략 이런 모양일 것 같다”라고 추정하는 대리 모델을 만듭니다. BoTorch 공식 문서도 BO에서 surrogate model은 아직 평가하지 않은 점들에 대해 함수값을 외삽하고, 그 예측의 uncertainty까지 함께 표현해야 한다고 설명합니다.

두 번째는 acquisition function 입니다.
surrogate model이 “어디가 좋아 보이는지”와 “어디가 아직 불확실한지”를 알려주면, acquisition function은 그 정보를 바탕으로 다음 실험점의 우선순위를 계산합니다. BoTorch는 acquisition function을, underlying black-box function을 최대화하기 위해 특정 설계점이 얼마나 유용한지를 평가하는 heuristic이라고 설명합니다.

즉, BO는 한 문장으로 정리하면 이렇게 볼 수 있습니다.

“비싼 실험을 많이 하지 않기 위해, 먼저 확률적 대리모델을 만들고 그 모델이 추천하는 다음 점만 선택적으로 평가하는 최적화 방법” 입니다.


왜 BO는 ‘비싼 함수’에 특히 강할까?

일반적인 최적화에서는 수많은 후보를 직접 계산하면서 최적점을 찾기도 합니다.
하지만 함수 평가 한 번이 수 초, 수 분, 수 시간씩 걸린다면 이런 접근은 금방 비현실적이 됩니다. scikit-optimize 문서도 신경망 하이퍼파라미터처럼 한 번 평가가 매우 비싼 경우, 표준적인 탐색 방식은 너무 오래 걸릴 수 있다고 설명합니다. 대신 Gaussian Process 기반 근사와 acquisition function을 이용해 다음 평가점을 스마트하게 고를 수 있다고 안내합니다.

이 점이 BO의 가장 큰 장점입니다.
BO는 “계산 자체를 빠르게 하는 알고리즘”이라기보다, 비싼 평가 횟수를 줄이는 알고리즘입니다. Jones 등의 EGO(Efficient Global Optimization) 논문도 이러한 response surface 접근이 경쟁 기법 대비 적은 함수 평가 횟수를 요구할 수 있고, local search와 global search를 균형 있게 다룰 수 있다고 설명합니다.


BO의 기본 흐름은 어떻게 될까?

BO의 전형적인 흐름은 아래와 같습니다.

  1. 몇 개의 초기 샘플을 실제로 평가한다.
  2. 그 결과로 surrogate model을 학습한다.
  3. surrogate model의 평균과 불확실성을 바탕으로 acquisition function을 계산한다.
  4. acquisition score가 높은 다음 점을 선택한다.
  5. 그 점을 실제로 평가한다.
  6. 데이터를 업데이트하고 반복한다.

이 구조는 BoTorch가 설명하는 “costly-to-evaluate black-box function에 대해, 소수의 평가만으로 near-optimal value를 찾기 위해 surrogate와 acquisition을 순차적으로 쓰는 방식”과 정확히 맞닿아 있습니다. scikit-optimize의 gp_minimize 역시 초기 포인트들을 먼저 평가하고, 이후에는 surrogate model이 guide하는 방식으로 나머지 평가를 진행합니다.

본문 중간에 아래 이미지를 넣으면 전체 흐름이 한눈에 들어옵니다.


Surrogate Model은 왜 중요한가?

BO의 성능은 결국 surrogate model의 품질에 크게 좌우됩니다.
실무나 입문 설명에서는 보통 Gaussian Process(GP) 가 가장 먼저 등장합니다. BoTorch는 BO가 전통적으로 GP 모델에 많이 의존해 왔고, GP가 잘 보정된 uncertainty estimate를 제공한다고 설명합니다. scikit-optimize 역시 gp_minimize를 “Bayesian optimization using Gaussian Processes”로 소개합니다.

GP가 많이 쓰이는 이유는 단순히 예측값만 내는 것이 아니라, 평균(mean)과 분산 또는 표준편차 형태의 불확실성 정보까지 함께 제공하기 때문입니다. scikit-learn 문서도 Gaussian Process는 probabilistic prediction을 제공하므로 confidence interval을 계산할 수 있고, 예측 시 mean과 standard deviation을 함께 다룰 수 있다고 설명합니다.

이게 BO에서는 매우 중요합니다.
왜냐하면 “예상 성능이 좋은 지점”만 보는 것이 아니라, “아직 잘 모르지만 잠재적으로 더 좋을 수 있는 지점”도 함께 봐야 하기 때문입니다. 다시 말해, GP는 단순 회귀 모델이 아니라 탐색 전략까지 결정하는 기반 정보를 만들어 줍니다.

이 부분은 아래 그림을 같이 넣으면 설명이 훨씬 쉬워집니다.


Acquisition Function은 무엇을 하는가?

acquisition function은 BO의 “의사결정 엔진”이라고 볼 수 있습니다.
surrogate model이 평균과 uncertainty를 알려주면, acquisition function은 이를 이용해 “다음에는 어디를 찍는 것이 가장 효율적인가?”를 수치화합니다. BoTorch 공식 문서는 acquisition function을 black-box function 최적화를 위해 설계점의 유용성을 평가하는 함수로 설명합니다.

대표적으로 많이 언급되는 acquisition function은 다음과 같습니다.

  • EI(Expected Improvement)
  • PI(Probability of Improvement)
  • UCB/LCB(Upper/Lower Confidence Bound)
  • KG(Knowledge Gradient)

scikit-optimize 문서에는 LCB, EI, PI가 대표 옵션으로 제시되어 있고, gp_hedge는 이들 중 하나를 확률적으로 선택하는 방식으로 설명됩니다. 또 kappa는 LCB에서 exploration 대 exploitation 비중을 조절하고, xi는 EI/PI에서 얼마나 개선을 요구할지를 조절한다고 안내합니다. BoTorch의 KG 문서에서는 Knowledge Gradient가 간단한 EI보다 더 나은 성능을 보일 수 있지만 계산적으로 더 비싸고 구현이 어렵다고 설명합니다.


Exploration과 Exploitation의 균형이 왜 중요한가?

BO를 이야기할 때 거의 항상 같이 나오는 표현이 있습니다.
바로 explorationexploitation 입니다.

  • exploitation은 이미 좋아 보이는 근처를 더 파고드는 것입니다.
  • exploration은 아직 잘 모르지만 불확실성이 큰 영역을 확인하는 것입니다.

BoTorch overview 문서는 BO가 좋은 observed performance가 있는 영역과 high uncertainty 영역 사이에서 principled trade-off를 한다고 설명합니다. scikit-optimize도 kappa를 크게 두면 분산을 더 중시해 exploration을 선호하고, 작게 두면 exploitation 쪽으로 기운다고 설명합니다.

이 균형이 중요한 이유는 아주 단순합니다.
지금까지 가장 좋았던 점만 계속 파고들면 진짜 전역 최적점이 다른 곳에 있어도 놓칠 수 있고, 반대로 너무 불확실한 곳만 돌아다니면 좋은 영역을 제대로 수렴하지 못할 수 있습니다. BO의 강점은 이 둘을 데이터 기반으로 조절한다는 점입니다.

여기에는 아래 이미지를 같이 넣는 것이 좋습니다.

 


BO는 어디에 많이 쓰일까?

BO는 특히 평가 한 번이 비싸고, 파라미터 수는 아주 크지 않은 문제에서 자주 검토됩니다.
BoTorch는 하이퍼파라미터 최적화, A/B 테스트, 과학 및 공학 문제를 대표적인 적용 분야로 소개합니다. 실제로 머신러닝에서는 모델 학습을 반복해야 하는 하이퍼파라미터 튜닝에, 공학에서는 시뮬레이션 기반 설계 최적화에 자주 사용됩니다.

예를 들어,

  • 딥러닝 학습률, 배치 크기, 정규화 계수 같은 하이퍼파라미터 탐색
  • 공정 조건 최적화
  • 실험 장비 조건 탐색
  • 회로나 구조 설계 변수 튜닝
    같은 문제는 BO와 잘 맞는 편입니다.
    이유는 공통적으로 “한 번 시험해보는 비용이 크고, 가능한 평가 횟수는 제한적”이기 때문입니다.

BO의 장점

BO의 장점은 생각보다 분명합니다.

첫째, 평가 예산이 작을 때 효율적입니다.
적은 횟수의 실험으로도 꽤 괜찮은 해를 찾는 데 강점이 있습니다.

둘째, 불확실성을 모델링한다는 점이 큽니다.
단순히 평균 예측이 아니라 uncertainty까지 활용하므로, 단순 탐색보다 더 정보 효율적으로 움직일 수 있습니다.

셋째, black-box 함수에 잘 맞습니다.
함수의 식을 모르거나 gradient를 쓰기 어려운 경우에도 적용할 수 있습니다.

넷째, 실험 설계 관점과 잘 맞습니다.
BO는 단순히 숫자 최적화가 아니라, “다음 실험을 어디서 할 것인가”를 결정하는 순차적 실험 설계와도 연결됩니다.


BO의 한계

물론 BO도 만능은 아닙니다.

가장 대표적인 한계는 고차원 문제에서 점점 어려워진다는 점입니다.
scikit-learn의 Gaussian Process 문서는 GP가 수십 개 수준을 넘는 feature가 있는 high-dimensional space에서 효율을 잃는다고 설명합니다. 최근 확장형 BO 연구들이 계속 나오는 이유도 바로 이 확장성 문제 때문입니다.

또 하나는 surrogate model 자체의 학습 비용입니다.
BO는 실제 목적함수 평가를 아끼는 대신, surrogate model을 반복해서 갱신해야 합니다. 따라서 목적함수 평가가 아주 싸다면 오히려 단순한 random search나 다른 전역 탐색법이 더 실용적일 수도 있습니다. 이 부분은 scikit-optimize와 GP 문서의 구조를 보면 자연스럽게 따라오는 해석입니다.

마지막으로, acquisition function의 선택과 모델 가정에 따라 성능이 꽤 달라질 수 있습니다.
즉, BO도 자동 만능 솔루션이라기보다 문제 구조에 맞는 surrogate와 acquisition을 잘 고르는 것이 중요합니다.


마무리

BO(Bayesian Optimization)는 이름 때문에 어렵게 느껴질 수 있지만, 핵심 아이디어는 생각보다 명확합니다.

“비싼 목적함수를 직접 많이 계산하지 말고, 먼저 그 함수를 잘 흉내 내는 모델을 만든 뒤, 가장 가치 있는 다음 실험점만 골라서 평가하자.”

이 한 문장이 BO의 본질에 가장 가깝습니다.
하이퍼파라미터 튜닝처럼 한 번 학습하는 데 시간이 오래 걸리는 문제나, 공학 시뮬레이션처럼 평가 비용이 큰 설계 최적화 문제에서는 BO가 매우 강력한 선택지가 될 수 있습니다. 특히 적은 실험 횟수 안에서 좋은 해를 찾고 싶다면, BO는 한 번쯤 꼭 이해해둘 가치가 있는 알고리즘입니다.

반응형

댓글