
하이퍼파라미터란?
하이퍼파라미터(Hyperparameter)는 모델 학습이 시작되기 전에 사용자가 직접 설정하는 값을 의미합니다.
모델의 구조나 학습 방식을 결정하는 중요한 요소로,
학습률(Learning Rate), 규제 강도(Regularization Strength), 트리의 깊이(Max Depth), 은닉층의 개수 등이 대표적으로 있어요.
여기서 하이퍼파라미터와 모델 파라미터(Parameter)는 반드시 구분해야 합니다!
하이퍼파라미터는 사용자가 직접 설정하는 값,
모델 파라미터는 학습 과정에서 데이터로부터 자동으로 학습되는 값입니다.
예를 들어, 선형 회귀의 가중치(Weight)나 신경망의 가중치와 편향(Bias)은 모델 파라미터에 해당합니다.
최적의 하이퍼파라미터 조합을 찾으면 모델의 성능을 크게 향상시킬 수 있는데요,
이 작업은 과적합(Overfitting)과 과소적합(Underfitting)을 방지하고,
새로운 데이터에 대한 일반화 성능을 높이는 데에도 중요한 역할을 합니다.
즉, 하이퍼파라미터 튜닝은 머신러닝 모델 개발 과정에서 필수적인 단계라고 할 수 있어요.
하이퍼파라미터 탐색 방법
하이퍼파라미터 최적화를 위해 대표적으로 다음과 같은 방법들이 사용됩니다.
- 수동 탐색 (Manual Search)
- Grid Search
- Random Search
- Optuna (베이지안 최적화 기반)
1. 수동 탐색 (Manual Search)
가장 단순한 방법은 분석가의 경험과 직관을 바탕으로 하이퍼파라미터 값을 직접 변경하면서 성능을 확인하는 것입니다.
별도의 구현이 필요하지 않고 즉시 시도할 수 있다는 장점이 있습니다.
또한 특정 도메인에 대한 전문 지식이 풍부한 경우 비교적 효율적으로 탐색할 수 있습니다.
하지만 탐색 과정이 분석가의 주관에 의존하기 때문에 최적의 조합을 찾는다는 보장이 없고,
하이퍼파라미터의 개수가 많아질수록 탐색해야 할 경우의 수가 급격히 증가하여 확장성에 한계가 있습니다.
2. Grid Search
Grid Search는 하이퍼파라미터 후보 값을 미리 지정한 뒤,
가능한 모든 조합을 생성하여 순차적으로 탐색하는 방법입니다.
예를 들어, 트리 깊이를 3, 5, 7로 설정하고 학습률을 0.01, 0.1, 0.2로 설정했다면?
3x3, 총 9개의 조합을 모두 평가하게 됩니다.
일반적으로, 각 조합에 대해 교차 검증(Cross Validation)을 수행해 가장 좋은 성능을 보이는 조합을 선택합니다.
이 방식의 장점은 지정된 탐색 공간 내에서는 최적의 조합을 찾을 수 있다는 점입니다.
하지만 하이퍼파라미터 개수와 후보 값의 수가 증가할수록 조합 수가 기하급수적으로 증가하게 되는데요,
이를 흔히 차원의 저주(Curse of Dimensionality)라고 하고, 계산 비용이 매우 커져서 비효율적인 탐색 방법이 될 수 있습니다.
3. Random Search
Random Search는 Grid Search의 단점을 보완하기 위한 방법입니다.
모든 조합을 탐색하는 대신, 지정된 횟수만큼 하이퍼파라미터 조합을 무작위로 샘플링해서 평가를 해줍니다.
동일한 시간 안에 더 넓고 다양한 탐색 공간을 살펴볼 수 있어요.
Random Search가 Grid Search보다 더 좋은 결과를 보이는 경우가 많을 수도 있는데요.
이는 모든 하이퍼파라미터가 모델 성능에 동일한 영향을 주지 않기 때문입니다.
실제로 일부 중요한 하이퍼파라미터가 성능을 좌우하는 경우가 많습니다.
Grid Search는 중요하지 않은 파라미터까지 똑같은 비중으로 탐색하지만,
Random Search는 다양한 조합을 시도하면서 중요한 파라미터 영역을 발견할 확률이 더 높습니다.
즉, Random Search의 핵심 장점은 탐색의 다양성과 효율성에 있습니다.
4. Optuna
머신러닝 모델의 성능은 하이퍼파라미터 선택에 크게 영향을 받습니다.
Random Search 역시 효과적인 방법이지만, 이전 탐색 결과를 활용하지 못한다는 한계가 있어요.
좋은 결과를 얻었던 영역과 상관없이
계속 무작위 탐색을 수행하기 때문에 비효율적인 탐색이 발생할 수 있었습니다.
이를 해결하기 위해 등장한 방법이 베이지안 최적화(Bayesian Optimization)입니다.
베이지안 최적화는 과거의 평가 결과를 활용해
아직 탐색되지 않은 하이퍼파라미터 조합의 성능을 예측하고,
가장 유망할 것으로 예상되는 영역을 우선적으로 탐색합니다.
적은 시도 횟수만으로도 우수한 성능의 하이퍼파라미터를 찾을 수 있겠죠.
Optuna는 이러한 베이지안 최적화 개념을 기반으로 한 대표적인 하이퍼파라미터 최적화 프레임워크입니다.
베이지안 최적화의 핵심 개념
베이지안 최적화는 크게 두 가지 요소로 구성됩니다.
1) Surrogate Model (대리 모델)
실제 모델의 성능을 확인하려면 하이퍼파라미터를 적용해 학습과 평가를 반복해야 하는데,
이 과정은 시간이 많이 들고 계산 비용도 큽니다.
그래서 베이지안 최적화에서는 대리 모델(Surrogate Model) 을 사용합니다.
대리 모델은 지금까지 실험한 결과를 학습해 “어떤 하이퍼파라미터 조합이 좋은 성능을 낼 가능성이 높은지”를 예측하는 역할을 합니다.
이를 가지고 모든 경우의 수를 직접 시도하지 않고도 효율적으로 최적의 파라미터를 찾을 수 있습니다.
대표적인 대리 모델로는 Gaussian Process(GP) 와 TPE(Tree-structured Parzen Estimator) 가 있고,
Optuna는 여기서 기본적으로 TPE 알고리즘을 사용하여 다음에 실험할 하이퍼파라미터 조합을 선택합니다.
2) Acquisition Function (획득 함수)
획득 함수는 대리 모델의 예측 결과를 바탕으로 다음에 탐색할 위치를 선택하는 역할을 수행합니다.
이때 두 가지 요소를 균형 있게 고려해야 합니다.
- Exploitation: 현재까지 좋은 결과가 나온 영역을 집중적으로 탐색
- Exploration: 아직 충분히 탐색되지 않은 영역을 탐색
이 균형을 적절하게 유지함으로써 최적의 하이퍼파라미터를 효율적으로 찾을 수 있습니다.
획득 함수(Acquisition Function)는 대리 모델이 예측한 결과를 바탕으로
다음에 어떤 하이퍼파라미터를 시험해 볼지 결정하는 역할을 합니다.
이 과정에서는 두 가지를 함께 고려하는데요,
지금까지 좋은 성능을 보인 영역을 더 자세히 탐색하는 활용(Exploitation),
아직 충분히 시도해보지 않은 영역을 탐색하여 더 좋은 해를 찾을 가능성을 확인하는 탐색(Exploration) 입니다.
획득 함수는 이 두 요소의 균형을 맞춰서,
적은 실험 횟수로도 효율적으로 최적의 하이퍼파라미터를 찾을 수 있도록 도와줍니다.
Optuna의 주요 구성 요소
Optuna의 최적화 과정은 크게 세 가지 요소로 구성됩니다.

Study
Study는 하나의 최적화 세션 전체를 의미합니다.
모든 Trial의 결과를 관리하고, 지금까지의 성능을 기반으로 다음에 탐색할 하이퍼파라미터 조합을 결정하는 역할을 수행합니다.
Objective
Objective는 사용자가 정의하는 평가 함수입니다.
주어진 하이퍼파라미터 조합으로 모델을 학습시키고 검증 성능을 계산하여 반환해주고,
Optuna는 이 반환값을 기준으로 최적화 방향을 결정합니다.
Trial
Trial은 Objective 함수의 단일 실행 단위를 의미합니다.
각 Trial은 하나의 하이퍼파라미터 조합을 제안하고, 해당 조합으로 모델을 학습한 뒤 얻은 성능 점수를 Study에 기록합니다.
Optuna가 해결하는 두 가지 문제
Optuna는 크게 두 가지 질문에 대한 답을 제공합니다.
1. 어디를 탐색할 것인가? (Sampling)
Sampling은 다음에 시도할 하이퍼파라미터 조합을 결정하는 과정입니다.
Optuna는 이전 Trial 결과를 분석하여 가장 유망한 영역을 선택하고,
이때 기본적으로 TPE 기반의 베이지안 최적화를 사용합니다.
2. 언제 멈출 것인가? (Pruning)
Pruning은 성능이 좋지 않을 것으로 예상되는 Trial을 학습 도중에 조기 종료하는 기능입니다.
예를 들어, XGBoost의 하이퍼파라미터를 탐색하는 과정에서 1000개의 트리를 학습하도록 설정했는데,
100번째 트리까지 학습했을 때 성능이 매우 낮다면 남은 900개의 트리를 끝까지 학습할 필요가 없겠죠.
Optuna는 중간 평가 결과를 분석해 해당 Trial이 유망하지 않다고 판단되면 학습을 조기에 종료함으로써 계산 자원을 절약합니다.
학습 과정 중 trial.should_prune()을 사용하면 현재 Trial을 계속 진행할지, 조기에 종료할지를 결정할 수 있습니다.
이를 통해 불필요한 계산을 줄이고 최적화 속도를 더욱 향상시킬 수 있습니다.
Optuna의 Define-by-Run 방식
Optuna는 Define-by-Run이라는 설계 철학을 사용하는데요,
기존 프레임워크처럼 탐색 공간을 미리 선언하는 것이 아니라, Objective 함수가 실행되는 과정에서 동적으로 탐색 공간을 정의합니다.
코드에서 보면, Trial 객체의 suggest_*() 메서드를 사용해 하이퍼파라미터 범위를 지정합니다.
- trial.suggest_int() : 정수형 파라미터 탐색
- trial.suggest_float() : 실수형 파라미터 탐색
- trial.suggest_categorical() : 범주형 파라미터 탐색
이 방식은 조건부 탐색 공간을 쉽게 구현할 수 있고, 복잡한 모델 구조에서도 높은 유연성을 제공합니다.
실습해보기
이러한 Optuna의 하이퍼파라미터 최적화 기능을 실제로 활용해 보기 위해,
OpenML에서 제공하는 당뇨병 환자 데이터셋을 이용해 머신러닝 모델 학습을 진행했습니다.
다양한 하이퍼파라미터 조합을 자동으로 탐색하고, 최적의 모델을 찾는 과정을 수행했습니다.
이를 통해 하이퍼파라미터 튜닝이 모델 성능 향상에 얼마나 중요한 영향을 미치는지 직접 확인할 수 있었습니다.
https://github.com/Funital/ai_health_care_05/blob/main/ml_study/optuna_diabetes.ipynb
ai_health_care_05/ml_study/optuna_diabetes.ipynb at main · Funital/ai_health_care_05
AI 헬스케어. Contribute to Funital/ai_health_care_05 development by creating an account on GitHub.
github.com
'개발' 카테고리의 다른 글
| [LLM] LangGraph&LangSmith — 에이전트 워크플로우 구축과 실행 추적 (0) | 2026.06.24 |
|---|---|
| [NLP] OCR — 이미지 속 글자를 데이터로 바꾸기 (0) | 2026.06.24 |
| [머신러닝]: 지도학습과 비지도학습의 데이터 구성 및 구조 (0) | 2026.05.01 |
| [머신러닝]: AI가 학습하는 데이터 구조 이해하기 (0) | 2026.04.30 |
| [머신러닝]: AI의 문제 해결 방식(지도학습, 비지도학습) (1) | 2026.04.30 |