Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

기억보다 기록을

Bayesian Optimization에 대한 컨셉 이해 & MATLAB 실습 본문

Research

Bayesian Optimization에 대한 컨셉 이해 & MATLAB 실습

쿠키아버님 2026. 1. 31. 20:14

요즘에는 Arizona State University의 Zheng-Meng Zhai 아저씨가 작성한 이런 저런 논문을 읽는 중인데,

 

Emergence of a resonance in machine learning (Zheng-Meng Zhai et al., 2023)중

 

 

Reservoir Computing (RC)을 사용할 때 필요한 hyperparameter들을 optimize할 때 Bayesian Optimization (BO)을 자주 사용했다고 한다.

 

그의 논문을 리뷰하기 위한 초석을 다지는 의미로, Bayesian Optimization에 대한 아주 기본적인 컨셉과 코드 실습, 추후에는 RC에서의 BO를 해보고자 한다.

 

 

 

머신러닝에서의 Hyperparameter optimization 기법은 아주 다양하다 [1]. 

대표적으로 Grid search, Random search 등이 있는데,

BO는 두 방법과는 달리 바로 직전의 결과를 학습하여 현재 시점에서 탐색할 곳을 결정하는 특징이 있다.

 

BO에는 크게 두가지의 구성 요소가 있는데, 바로 Surrogate model과 Acquisition function이다.

 

  1. Surrogate model은 현재까지의 데이터를 바탕으로 목적 함수 (Loss function)의 형태를 추정하는 역할을 한다 (주로 Gaussian process, Random forest를 사용한다고 한다). 
  2. Acquisition function은 추정된 모델을 바탕으로 '성능이 좋을 것 같은 곳(Exploitation)'과 '아직 불확실한 곳(Exploration)'을 계산하여 다음 탐색 지점을 추천한다.

 

 

BO의 수학적 이론에 대해서는 나중을 기약하고, MATLAB으로 BO를 직접 구현해보자.

 

다행히도 MATLAB 에는 bayesopt 라고 하는, BO를 구현할 수 있는 패키지가 존재한다

(https://www.mathworks.com/help/stats/bayesopt.html)

 

 

기본적인 사용법은 아래와 같다.

results = bayesopt(fun, vars, ...
    'MaxObjectiveEvaluations', N, ...        
    'AcquisitionFunctionName', 'expected-improvement-plus', ...  
    'NumSeedPoints', 10, ...                    
    'IsObjectiveDeterministic', true, ...
    'UseParallel', true, ...                   
    'PlotFcn', {@plotObjectiveModel, @plotMinObjective});

 

  • vars는 탐색할 변수 혹은 hyperparameter를 의미하며, fun은 목적 함수를 의미한다.
  • MaxObjectiveEvaluations : 총 시행 횟수
  • AcquisitionFunctionName : Acquisition function으로 무엇을 사용할 것인지? 추구하는 방향성에 따라 아래와 같은 다양한 형태의 함수들을 쓸 수 있다고 한다.
    • expected-improvement-plus
    • expected-improvement
    • probability-of-improvement
    • lower-confidence-bound
  • NumSeedPoints : Preiteration 정도로 이해하자
  • IsObjectiveDeterministic : 목적함수가 deterministic한지 여부 (노이즈 없다 → true, 있다 → false)
  • UseParallel : 병렬연산을 사용할 것인지 여부
  • PlotFcn : 시각화 목록

 

results의 형태는 아래 예시를 보며 이야기하자.


MATLAB 코드 예시 ) 

 

아래 예시처럼 목적 함수 \( z \)를 두고 (RC에서 다루게 된다면 \( z \)는 MSE가 된다) 찾을 변수를 지정하자.

$$ z = (x^2 + y^2)/10 - \cos(x)\cos(y)  $$

clc; clear; close all;

%% 탐색할 변수 2개 설정 (x 좌표, y 좌표)
vars = [
    optimizableVariable('x', [-5, 5]), ...
    optimizableVariable('y', [-5, 5])
];

%% 목적 함수 (Objective function) 정의 
% 가장 낮은 z값을 찾는 것이 목적
% 식: z = (x^2 + y^2)/10 - cos(x)*cos(y)
fun = @(v) (v.x.^2 + v.y.^2)/10 - cos(v.x) .* cos(v.y);

 

 

패키지 함수를 사용하여 Bayesian Optimization을 시행한다.

results = bayesopt(fun, vars, ...
    'MaxObjectiveEvaluations', 30, ...  % 시도 횟수 30회
    'AcquisitionFunctionName', 'expected-improvement-plus', ...
    'IsObjectiveDeterministic', true, ...
    'PlotFcn', {@plotObjectiveModel, @plotMinObjective}); % 그림 그리기

 

 

 

results는 이런 형태로 생겼다. 중요한 몇개의 property만 살펴보자.

  • XAtMinObjective : 목적함수가 최소값일 때의 (성능이 가장 좋을 때의) parameter 혹은 variable의 값 (우리의 경우 \( x \)와 \( y \) )
  • MinObjective : 목적함수의 최소값 (여기서는 \( z \)의 값. 보통 에러값이 이 자리에 들어간다)
  • XTrace, ObjectiveTrace : 각 시행에서의 파라미터 값과 목적 함수의 값에 대한 기록
  • NumObjectiveEvaluations : 총 몇번 시도했는지?
  • TotalElapsedTime : BO를 끝내기까지 걸린 시간

 

결과를 출력해보자.

best = results.XAtMinObjective;
fprintf('x 좌표 : %.4f\n', best.x);
fprintf('y 좌표 : %.4f\n', best.y);
fprintf('목적 함수의 Miminum 값 : %.4f\n', results.MinObjective);

 

 

최선의 추정된 실현가능점(모델에 따라 다름):
        x            y    
    _________    _________

    -0.015555    0.0050738

추정된 목적 함수 값 = -0.99985
추정된 함수 실행 시간 = 0.00058459

x 좌표 : 0.0118
y 좌표 : -0.0023
목적 함수의 Miminum 값 : -0.9999

 

 

다음 포스팅에서는 Reservoir computing에서의 Bayesian Optimization에 대해 다뤄보자.


<참고 문헌>

  1. L. Yang and A. Shami, On hyperparameter optimization of machine learning algorithms: Theory and practice, Neurocomputing 415, 295 (2020).
  2. B. Shahriari, K. Swersky, Z. Wang, R. P. Adams and N. de Freitas, "Taking the Human Out of the Loop: A Review of Bayesian Optimization," in Proceedings of the IEEE, vol. 104, no. 1, pp. 148-175, Jan. 2016, doi: 10.1109/JPROC.2015.2494218.
  3. Z. M. Zhai, L. W. Kong, and Y. C. Lai, Emergence of a resonance in machine learning, Phys. Rev. Research 5, 033127 (2023).