Post

[HPO] 베이지안 최적화 (Bayesian Optimization)

[HPO] 베이지안 최적화 (Bayesian Optimization)

베이지안 최적화란?

베이지안 최적화 (BO)는 과거의 탐색 결과를 바탕으로 목적함수에 대한 확률 모델을 업데이트하고, 이를 이용해 다음에는 어디를 탐색하는 것이 가장 이득일지 결정하는 블랙박스 함수 최적화 알고리즘이다.
쉽게 말해, 지금까지 가본 곳들의 결과를 종합해서 다음엔 어느 지점이 제일 성능이 좋을지를 추측하는 방식이다.

베이지안 최적화은 HPO 분야에서도 자주 사용되며, 현재의 하이퍼파라미터 조합과 그에 따른 성능 결과를 바탕으로 다음에 시도할 하이퍼파라미터를 결정하는 방식으로 사용된다.

베이지안 최적화는 크게 Surrogate Model (대체 모델)과 Acquisition Function (획득 함수)으로 이루어져 있으며, 다음과 같은 순환 루프 (2-4번 반복)를 가진다.

  1. Initialization: 무작위로 선택한 초기 점들을 평가해 관측 데이터 확보
  2. Surrogate Model: 관측 데이터로부터 사후 분포 업데이트
  3. Acquisition Function: 사후 분포를 이용해 다음 탐색 지점 선정
  4. Evaluatation: 선정된 지점에서 실제 목적함수 평가

베이지안 최적화 과정

1. Initialization

베이지안 최적화를 시작하려면 가장 먼저 모델의 성능 지형을 파악하기 위한 기초 데이터가 필요하다.
이를 위해 서로 다른 몇 가지 하이퍼파라미터 조합을 무작위로 추출하여 모델을 학습시키고, 각각의 성능을 측정한다.

이처럼 특정 하이퍼파라미터 조합을 적용해 모델을 처음부터 끝까지 학습시키고 최종 결과를 얻는 1회의 평가 과정 전체를 Trial이라고 부른다.

예를 들어, 모델의 learning rate를 최적화한다고 가정 해보자.
초기 데이터 수집을 위해 총 3번의 Trial을 진행한다고 할 때, 각 Trial은 다음과 같다.

  • Trial1: {lr: 0.01} $\to$ 모델 학습 $\to$ loss=0.50
  • Trial2: {lr: 0.06} $\to$ 모델 학습 $\to$ loss=0.32
  • Trial3: {lr: 0.03} $\to$ 모델 학습 $\to$ loss=0.18

초기 탐색 단계에서 이렇게 수집된 몇 번의 Trial 결과들은, 이후 Surrogate Model이 전체 하이퍼파라미터 공간의 성능 지형을 추정하는 데 필요한 초기 관측 데이터로 활용된다.

2. Surrogate Model

실제 딥러닝 모델을 매번 학습시키는 것은 비용이 너무 크기 때문에, 지금까지의 Trial 결과들을 바탕으로 하이퍼파라미터와 성능 간의 관계를 추정하는 가벼운 수학적 모델을 만든다.
이를 Surrogate Model이라고 한다.

즉, Surrogate Model은 현재까지의 데이터를 바탕으로, 하이퍼파라미터와 성능 사이의 관계를 나타내는 성능 지형을 추측한다.

Surrogate Model로 가장 많이 사용하는 모델은 GP (Gaussian Process)이다.

GP (Gaussian Process)

일반적인 회귀에서는 $f(x)=wx+b$처럼 함수의 형태를 정해놓고, 파라미터 $w$와 $b$를 추정한다.
반면 GP는 함수의 형태를 정하지 않고, 가능한 모든 함수에 대한 확률 분포를 다룬다.

GP는 다음과 같이 정의된다.

\[f(x) \sim \mathcal{GP}(m(x), k(x, x')) \tag{1}\]
  • 평균 함수 $m(x)$: 함수가 평균적으로 어떤 값을 가질지
  • 커널 함수 $k(x,x’)$: 두 입력 $x$와 $x’$에서의 함수 값이 얼마나 비슷할지 (공분산을 의미)

직관적으로 $k(x,x’)$가 크다는 것은 두 입력이 가까워 $f(x)$와 $f(x’)$ 또한 비슷할 것이라는 의미이다.
반대로 $k(x,x′)$가 작다는 것은 두 입력이 멀어 $f(x)$와 $f(x’)$가 서로 독립적일 것이라는 의미이다.

GP는 임의의 하이퍼파라미터 조합 $x^*$를 입력받았을 때, 그 지점에서의 예측값 $\mu(x^*)$와 불확실성 $\sigma(x^*)$를 함께 출력한다.

  • 예측값 $\mu(x^*)$ : ‘이 파라미터 조합을 쓰면 모델의 성능이 대략 어느 정도 나올 것이다’라는 기대 성능
  • 불확실성 $\sigma(x^*)$ : ‘이 파라미터 조합은 테스트해 본 적이 없거나 데이터가 부족하여, 예측의 오차 범위가 이 정도 된다’라는 불확실성의 정도

3. Acquisition Function

Acquisition Function은 Surrogate Model이 추측한 성능 지형을 바탕으로, 다음 Trial에서 어떤 하이퍼파라미터 조합을 이용해 평가할지를 결정해 주는 함수이다.
이미 성능이 측정된 지점을 다시 탐색하는 것이 아니라, 아직 측정하지 않은 지점 중에서 가장 유망한 곳을 선택하도록 설계되어 있다.

이때 다음 두 가지 원칙 사이의 균형을 고려해 다음 탐색 지점을 결정한다.

  • Exploitation (활용): 예측값이 가장 좋게 나온 파라미터 근처를 조사
  • Exploration (탐색): 불확실성이 커서 아직 성능을 모르는 영역을 조사

Acquisition Function으로 가장 많이 사용하는 함수는 EI (Expected Improvement)이다.

EI (Expected Improvement)

EI는 현재까지의 최고 결과보다 얼마나 더 나은 결과를 얻을 수 있을지를 확률론적으로 계산한 것이다.

먼저, 개선량 (Improvement) $I(x)$를 다음과 같이 정의한다.

\[I(x) = \max(0, f(x^+) - f(x)) \tag{2}\]

위의 식에서 $f(x^+)$는 현재까지 찾은 가장 낮은 Loss를, $f(x)$는 새로운 후보지 $x$에서의 Loss를 의미한다.

$f(x)$가 현재 최고 기록 $f(x^+)$보다 더 작다면 (좋다면) 그 차이만큼이 개선량이 되고, 반대로 더 크다면 개선량은 0이 된다.
개선량의 기댓값을 구하는 것이 EI다.

\[\text{EI}(x) = \mathbb{E}[I(x)] = \mathbb{E}[\max(0, f(x^+) - f(x))] \tag{3}\]

Gaussian Process를 사용할 때의 EI

Surrogate Model로 GP를 사용하면, $f(x)$는 평균 $\mu(x)$와 표준편차 $\sigma(x)$를 갖는 정규분포를 따른다.
이를 이용해 위 기댓값 식을 풀면 다음과 같은 수식이 나온다.

\[\text{EI}(x) = \underbrace{(f(x^+) - \mu(x)) \Phi(Z)}_{\text{Exploitation}} + \underbrace{\sigma(x) \phi(Z)}_{\text{Exploration}} ~~~,~~~Z = \frac{f(x^+) - \mu(x)}{\sigma(x)} \tag{4}\]

위 식에서 $\Phi(\cdot)$는 표준정규분포의 CDF, $\phi(\cdot)$는 표준정규분포의 PDF를 의미한다.

식 (4)는 두 개의 항이 더해진 형태이다.

  • 예측된 평균값이 현재 최고 기록보다 좋을수록, Exploitation term의 값이 커진다.
  • 표준편차 값이 클수록, Exploration term의 값이 커진다.

이때 $Z$값이 두 term 사이의 가중치를 조절한다.

4. Evaluation

선정된 하이퍼파라미터 조합으로 실제 모델을 학습시켜 성능을 측정하고, 그 결과를 관측 데이터에 추가한다.

이후 다시 Surrogate Model 단계로 돌아가며 루프를 반복한다.

전체 개요

현재 learning rate를 최적화하는 중이며, 2번의 초기 탐색 (Trial 1, 2)을 마친 상태라고 가정해 보자.

아래 그림을 보면, 본격적인 첫 번째 BO 단계에서 다음 탐색 지점으로 $\text{lr}=0.08$을 추천받았음을 알 수 있다.
이에 따라 $\text{lr}=0.08$로 실제 실험 Trial 3을 진행하여 새로운 관측값을 얻었다.
이 새로운 데이터가 Surrogate Model에 업데이트되면서, 방금 탐색한 지점 근처인 $\text{lr}=0.06$ 영역의 불확실성 $\sigma(0.06)$이 이전 단계보다 줄어든 것을 확인할 수 있다.

마찬가지로 한 번 더 BO 사이클을 거쳐 $\text{lr}=0.12$를 추천받고 Trial 4를 진행했다.
그 결과, 이번에도 새롭게 관측된 지점 근처인 $\text{lr}=0.14$에서의 불확실성 $\sigma(0.14)$이 줄어든 것을 확인할 수 있다.

fig1

This post is licensed under CC BY 4.0 by the author.