셋째, 최적화할 하이퍼파라미터의 개수가 작은 경우(예를 들어 네 개보다 작은 경우), 그리드 서치(grid search)를 사용할 수 있습니다. 즉, 여러 하이퍼파라미터 조합을 모두 반복하면서 각 조합에 대해 모델을 훈련하고, 검증 손실을 기록하여 가장 낮은 검증 손실을 내는 하이퍼파라미터 조합을 선택합니다. 예를 들어 튜닝할 하이퍼파라미터가 1) 밀집 층의 유닛 개수와 2) 학습률 두 개뿐이라고 가정해 보죠. 일련의 유닛 개수({10, 20, 50, 100, 200})와 학습률({1e-5, 1e-4, 1e-3, 1e-2})13을 선택하고 두 집합을 조합하면 탐색할 하이퍼파라미터 조합은 5 * 4 = 20개가 됩니다. 직접 그리드 서치를 구현한다면 의사 코드는 다음과 비슷할 것입니다.
코드 3-4 간단한 하이퍼파라미터 그리드 서치를 위한 의사 코드
function hyperparameterGridSearch():
for units of [10, 20, 50, 100, 200]:
for learningRate of [1e-5, 1e-4, 1e-3, 1e-2]:
'units'개의 유닛을 가진 밀집 층을 사용한 모델 만들기
'learningRate'를 사용한 옵티마이저로 모델 훈련하기
최종 검증 손실을 계산하여 validationLoss에 저장하기
if validationLoss < minValidationLoss
minValidationLoss := validationLoss
bestUnits := units
bestLearningRate := learningRate
return [bestUnits, bestLearningRate]