모델 성능 개선을 위한 과학적 접근 방식

이 문서에서는 다음을 가정합니다.

머신러닝 개발의 궁극적인 목표는 배포된 모델의 유용성을 극대화하는 것입니다.

일반적으로 이 섹션의 기본 단계와 원칙을 모든 ML 문제에 사용할 수 있습니다.

이 섹션에서는 다음을 가정합니다.

  • 이미 완전히 실행되는 학습 파이프라인과 적절한 결과를 얻는 구성이 있습니다.
  • 의미 있는 튜닝 실험을 수행하고 최소한 여러 학습 작업을 동시에 실행할 수 있는 충분한 컴퓨팅 리소스가 있습니다.

증분 조정 전략

권장사항: 간단한 구성으로 시작하세요. 그런 다음 문제에 대한 통계를 파악하면서 점진적으로 개선합니다. 개선사항은 확실한 증거에 기반해야 합니다.

목표는 모델의 성능을 극대화하는 구성을 찾는 것이라고 가정합니다. 정해진 기한까지 모델 개선을 극대화하는 것이 목표인 경우도 있습니다. 다른 경우에는 모델을 무기한으로 계속 개선할 수 있습니다(예: 프로덕션에 사용되는 모델을 지속적으로 개선).

원칙적으로 알고리즘을 사용하여 가능한 구성의 전체 공간을 자동으로 검색하면 성능을 극대화할 수 있지만 이는 실용적인 옵션이 아닙니다. 가능한 구성의 공간은 매우 크며 인간의 안내 없이 이 공간을 효율적으로 검색할 만큼 정교한 알고리즘은 아직 없습니다. 대부분의 자동 검색 알고리즘은 검색할 구성 집합을 정의하는 수동 설계 검색 공간에 의존하며 이러한 검색 공간은 상당히 중요할 수 있습니다.

성능을 극대화하는 가장 효과적인 방법은 간단한 구성으로 시작하여 문제를 파악하면서 기능을 점진적으로 추가하고 개선하는 것입니다.

각 조정 라운드에서 자동 검색 알고리즘을 사용하고 이해도가 높아짐에 따라 검색 공간을 지속적으로 업데이트하는 것이 좋습니다. 탐색하면서 더 나은 구성을 자연스럽게 찾게 되므로 '최고' 모델이 계속 개선됩니다.

'출시'라는 용어는 최적의 구성에 대한 업데이트를 의미합니다(실제 프로덕션 모델 출시와 일치할 수도 있고 그렇지 않을 수도 있음). 각 '출시'에서 변경사항이 행운의 구성에 따른 무작위 기회가 아니라 강력한 증거에 기반해야 학습 파이프라인에 불필요한 복잡성을 추가하지 않습니다.

상위 수준에서 증분 조정 전략에는 다음 네 단계를 반복하는 것이 포함됩니다.

  1. 다음 실험의 목표를 선택하세요. 목표의 범위가 적절한지 확인합니다.
  2. 다음 실험 설계 이 목표를 향해 나아가는 일련의 실험을 설계하고 실행합니다.
  3. 실험 결과에서 학습합니다. 체크리스트에 따라 실험을 평가합니다.
  4. 후보 변경사항을 채택할지 여부를 결정합니다.

이 섹션의 나머지 부분에서는 이 전략을 자세히 설명합니다.

다음 실험 라운드의 목표 선택

한 번에 여러 기능을 추가하거나 여러 질문에 답변하려고 하면 결과에 대한 개별 효과를 구분하지 못할 수 있습니다. 목표의 예는 다음과 같습니다.

  • 파이프라인의 잠재적 개선사항 (예: 새로운 정규화 도구, 전처리 선택사항 등)을 시도해 보세요.
  • 특정 모델 초매개변수 (예: 활성화 함수)의 영향 이해
  • 검증 오류를 최소화합니다.

단기 검증 오류 개선보다 장기적인 진행 상황을 우선시

요약: 대부분의 경우 기본 목표는 튜닝 문제에 대한 통찰력을 얻는 것입니다.

시간의 대부분을 문제에 대한 통찰력을 얻는 데 사용하고 검증 세트의 성능을 극대화하는 데는 상대적으로 적은 시간을 사용하는 것이 좋습니다. 즉, 대부분의 시간을 '탐색'에 사용하고 '활용'에는 적은 시간만 사용합니다. 최종 실적을 극대화하려면 문제를 이해하는 것이 중요합니다. 단기적인 이익보다 통계를 우선시하면 다음과 같은 이점이 있습니다.

  • 실적이 우수한 실행에 우연히 포함된 불필요한 변경사항을 출시하지 마세요.
  • 유효성 검사 오류에 가장 민감한 초매개변수, 가장 많이 상호작용하여 함께 재조정해야 하는 초매개변수, 다른 변경사항에 비교적 덜 민감하여 향후 실험에서 수정할 수 있는 초매개변수를 식별합니다.
  • 과적합이 문제인 경우 새로운 정규화 도구와 같은 시도해 볼 만한 새로운 기능을 제안합니다.
  • 도움이 되지 않아 삭제할 수 있는 기능을 식별하여 향후 실험의 복잡성을 줄입니다.
  • 하이퍼파라미터 조정으로 인한 개선이 포화 상태에 도달했을 가능성을 인식합니다.
  • 최적 값 주변의 검색 공간을 좁혀 조정 효율성을 개선합니다.

결국 문제를 이해하게 됩니다. 그러면 실험에서 조정 문제의 구조에 관한 정보를 최대한 제공하지 않더라도 검증 오류에만 집중할 수 있습니다.

다음 실험 설계

요약: 실험 목표에 대해 과학적 초매개변수, 방해 초매개변수, 고정 초매개변수를 식별합니다. 과학적 초매개변수의 다양한 값을 비교하면서 성가신 초매개변수를 최적화하기 위해 연구 시퀀스를 만듭니다. 리소스 비용과 과학적 가치의 균형을 맞추기 위해 방해 초매개변수의 검색 공간을 선택합니다.

과학적, 성가신, 고정된 초매개변수 식별

주어진 목표에 대해 모든 초매개변수는 다음 카테고리 중 하나에 속합니다.

  • 과학적 초매개변수는 모델의 성능에 미치는 영향을 측정하려는 초매개변수입니다.
  • 노이즈 초매개변수는 과학적 초매개변수의 다양한 값을 공정하게 비교하기 위해 최적화해야 하는 초매개변수입니다. 성가신 초매개변수는 통계의 성가신 매개변수와 유사합니다.
  • 고정된 하이퍼파라미터는 현재 실험 라운드에서 값이 일정합니다. 과학적 초매개변수의 서로 다른 값을 비교할 때 고정된 초매개변수의 값은 변경되지 않아야 합니다. 일련의 실험에서 특정 초매개변수를 고정하면 실험에서 도출된 결론이 고정된 초매개변수의 다른 설정에는 유효하지 않을 수 있음을 인정해야 합니다. 즉, 고정된 하이퍼파라미터는 실험에서 도출되는 결론에 주의사항을 만듭니다.

예를 들어 목표가 다음과 같다고 가정해 보겠습니다.

숨겨진 레이어가 더 많은 모델의 검증 오류가 더 낮은지 확인합니다.

이 경우에는 다음과 같습니다.

  • 학습률은 성가신 하이퍼파라미터입니다. 학습률이 각 숨겨진 레이어 수에 대해 별도로 조정된 경우에만 숨겨진 레이어 수가 다른 모델을 공정하게 비교할 수 있기 때문입니다. (최적의 학습률은 일반적으로 모델 아키텍처에 따라 다름)
  • 이전 실험에서 최적의 활성화 함수가 모델 깊이에 민감하지 않다고 판단한 경우 활성화 함수는 고정된 하이퍼파라미터일 수 있습니다. 또는 이 활성화 함수를 포함하도록 숨겨진 레이어의 수를 제한할 수 있습니다. 또는 숨겨진 레이어 수마다 별도로 조정할 준비가 되어 있다면 성가신 초매개변수일 수 있습니다.

특정 초매개변수는 과학적 초매개변수, 방해 초매개변수 또는 고정 초매개변수일 수 있습니다. 초매개변수의 지정은 실험 목표에 따라 달라집니다. 예를 들어 활성화 함수는 다음 중 하나일 수 있습니다.

  • 과학적 초매개변수: 문제에 ReLU가 더 적합한가요, 아니면 tanh가 더 적합한가요?
  • 성가신 초매개변수: 여러 가지 가능한 활성화 함수를 허용할 때 최적의 5개 레이어 모델이 최적의 6개 레이어 모델보다 나은가요?
  • 고정된 초매개변수: ReLU 네트워크의 경우 특정 위치에 배치 정규화를 추가하면 도움이 될까요?

새로운 실험 라운드를 설계할 때는 다음 사항을 고려하세요.

  1. 실험 목표의 과학적 초매개변수를 식별합니다. (이 단계에서는 다른 모든 하이퍼파라미터를 방해 하이퍼파라미터로 간주할 수 있습니다.)
  2. 일부 성가신 초매개변수를 고정 초매개변수로 변환합니다.

무한한 리소스가 있다면 실험에서 도출한 결론에 고정된 초매개변수 값에 관한 주의사항이 없도록 모든 비과학적 초매개변수를 성가신 초매개변수로 남겨둘 것입니다. 하지만 조정하려는 성가신 초매개변수가 많을수록 과학적 초매개변수의 각 설정에 대해 충분히 잘 조정하지 못하고 실험에서 잘못된 결론에 도달할 위험이 커집니다. 나중에 나오는 섹션에 설명된 대로 컴퓨팅 예산을 늘려 이 위험을 방지할 수 있습니다. 하지만 최대 리소스 예산은 모든 비과학적 초매개변수를 조정하는 데 필요한 것보다 적은 경우가 많습니다.

고정으로 인해 발생하는 주의사항이 성가신 초매개변수로 포함하는 비용보다 부담이 적은 경우 성가신 초매개변수를 고정 초매개변수로 변환하는 것이 좋습니다. 성가신 하이퍼파라미터가 과학적 하이퍼파라미터와 상호작용할수록 값을 수정하는 것이 더 해롭습니다. 예를 들어 가중치 감소 강도의 최적값은 일반적으로 모델 크기에 따라 달라지므로 가중치 감소의 단일 특정 값을 가정하여 다양한 모델 크기를 비교하는 것은 유용하지 않습니다.

일부 옵티마이저 매개변수

일반적으로 일부 옵티마이저 초매개변수 (예: 학습률, 모멘텀, 학습률 일정 매개변수, Adam 베타 등)는 다른 변경사항과 가장 많이 상호작용하는 경향이 있으므로 성가신 초매개변수입니다. 이러한 옵티마이저 초매개변수는 드문 경우를 제외하고 과학적 초매개변수가 아닙니다. '현재 파이프라인에 가장 적합한 학습률은 무엇인가요?'와 같은 목표는 많은 통찰력을 제공하지 않기 때문입니다. 어차피 다음 파이프라인 변경으로 최적의 설정이 바뀔 수 있습니다.

리소스 제약이나 과학적 매개변수와 상호작용하지 않는다는 특히 강력한 증거로 인해 가끔 일부 최적화 프로그램 하이퍼파라미터를 수정할 수 있습니다. 하지만 일반적으로 과학적 초매개변수의 다양한 설정을 공정하게 비교하려면 옵티마이저 초매개변수를 별도로 조정해야 한다고 가정해야 하므로 고정해서는 안 됩니다. 또한 한 옵티마이저 초매개변수 값을 다른 값보다 선호해야 할 사전 이유가 없습니다. 예를 들어 옵티마이저 초매개변수 값은 일반적으로 순방향 패스 또는 그라데이션의 계산 비용에 어떤 식으로든 영향을 미치지 않습니다.

최적화 도구 선택

옵티마이저 선택은 일반적으로 다음 중 하나입니다.

  • 과학적 초매개변수
  • 고정된 초매개변수

실험 목표에 두 개 이상의 서로 다른 최적화 프로그램 간의 공정한 비교가 포함되는 경우 최적화 프로그램은 과학적 초매개변수입니다. 예를 들면 다음과 같습니다.

주어진 단계 수에서 가장 낮은 검증 오류를 생성하는 최적화 프로그램을 결정합니다.

또는 다음과 같은 다양한 이유로 최적화 프로그램을 고정 초매개변수로 만들 수 있습니다.

  • 이전 실험에 따르면 조정 문제에 가장 적합한 최적화 프로그램은 현재 과학적 초매개변수에 민감하지 않습니다.
  • 학습 곡선을 추론하기가 더 쉬우므로 이 옵티마이저를 사용하여 과학적 초매개변수의 값을 비교하는 것이 좋습니다.
  • 이 최적화 프로그램은 대안보다 메모리를 적게 사용하므로 이 최적화 프로그램을 사용하는 것이 좋습니다.

정규화 초매개변수

정규화 기법으로 도입된 하이퍼파라미터는 일반적으로 성가신 하이퍼파라미터입니다. 하지만 정규화 기법을 포함할지 여부는 과학적 또는 고정된 하이퍼파라미터입니다.

예를 들어 드롭아웃 정규화는 코드 복잡성을 추가합니다. 따라서 드롭아웃 정규화를 포함할지 여부를 결정할 때 '드롭아웃 없음'과 '드롭아웃'을 과학적 초매개변수로 만들고 드롭아웃 비율을 성가신 초매개변수로 만들 수 있습니다. 이 실험을 기반으로 드롭아웃 정규화를 파이프라인에 추가하기로 결정한 경우 드롭아웃 비율은 향후 실험에서 성가신 하이퍼파라미터가 됩니다.

아키텍처 초매개변수

아키텍처 변경은 제공 및 학습 비용, 지연 시간, 메모리 요구사항에 영향을 미칠 수 있으므로 아키텍처 하이퍼파라미터는 과학적 또는 고정 하이퍼파라미터인 경우가 많습니다. 예를 들어 레이어 수는 학습 속도와 메모리 사용량에 큰 영향을 미치므로 일반적으로 과학적 또는 고정된 하이퍼파라미터입니다.

과학적 하이퍼파라미터에 대한 종속 항목

일부 경우에 방해 및 고정 초매개변수 집합은 과학 초매개변수 값에 따라 달라집니다. 예를 들어 Nesterov 모멘텀과 Adam의 어떤 최적화 도구가 가장 낮은 검증 오류를 생성하는지 확인하려고 한다고 가정해 보겠습니다. 이 경우에는 다음과 같습니다.

  • 과학적 하이퍼파라미터는 옵티마이저이며 {"Nesterov_momentum", "Adam"} 값을 취합니다.
  • optimizer="Nesterov_momentum" 값은 불편한 초매개변수 또는 고정된 초매개변수일 수 있는 초매개변수 {learning_rate, momentum}을 도입합니다.
  • optimizer="Adam" 값은 성가신 초매개변수 또는 고정된 초매개변수일 수 있는 {learning_rate, beta1, beta2, epsilon} 초매개변수를 도입합니다.

과학적 초매개변수의 특정 값에만 존재하는 초매개변수를 조건부 초매개변수라고 합니다. 이름이 같다고 해서 두 조건부 초매개변수가 동일하다고 가정하지 마세요. 위 예에서 learning_rate라는 조건부 초매개변수는 optimizer="Adam"의 초매개변수와 다른 optimizer="Nesterov_momentum"의 초매개변수입니다. 역할은 두 알고리즘에서 유사하지만(동일하지는 않음) 각 최적화 프로그램에서 잘 작동하는 값의 범위는 일반적으로 몇 자릿수만큼 다릅니다.

학습 세트 만들기

과학적 초매개변수와 방해 초매개변수를 식별한 후 실험 목표를 달성하기 위한 연구 또는 연구 시퀀스를 설계해야 합니다. 연구는 후속 분석을 위해 실행할 하이퍼파라미터 구성 집합을 지정합니다. 각 구성을 트라이얼이라고 합니다. 일반적으로 연구를 만들 때는 다음을 선택합니다.

  • 시도마다 달라지는 초매개변수입니다.
  • 이러한 초매개변수가 사용할 수 있는 값 (검색 공간)입니다.
  • 시도 횟수입니다.
  • 검색 공간에서 많은 트라이얼을 샘플링하는 자동 검색 알고리즘

또는 초매개변수 구성 집합을 수동으로 지정하여 스터디를 만들 수 있습니다.

연구의 목적은 다음과 같습니다.

  • 과학적 초매개변수의 값을 다르게 하여 파이프라인을 실행합니다.
  • 과학적 초매개변수의 다양한 값 간 비교가 최대한 공정하도록 성가신 초매개변수를 '최적화'합니다.

가장 간단한 경우 과학적 매개변수의 각 구성에 대해 별도의 연구를 수행합니다. 각 연구는 성가신 초매개변수를 조정합니다. 예를 들어 Nesterov 모멘텀과 Adam 중에서 가장 적합한 옵티마이저를 선택하는 것이 목표라면 다음과 같이 두 개의 연구를 만들 수 있습니다.

  • optimizer="Nesterov_momentum"와 방해 초매개변수가 {learning_rate, momentum}인 연구
  • optimizer="Adam"와 성가신 초매개변수가 {learning_rate, beta1, beta2, epsilon}인 또 다른 연구

각 연구에서 실적이 가장 우수한 시험을 선택하여 두 최적화 도구를 비교합니다.

베이즈 최적화 또는 진화 알고리즘과 같은 방법을 포함한 기울기 없는 최적화 알고리즘을 사용하여 성가신 하이퍼파라미터를 최적화할 수 있습니다. 하지만 이 설정에는 다양한 이점이 있으므로 튜닝의 탐색 단계에서는 준무작위 검색을 사용하는 것이 좋습니다. 탐색이 완료되면 최신 Bayesian 최적화 소프트웨어 (사용 가능한 경우)를 사용하는 것이 좋습니다.

과학적 초매개변수의 값을 많이 비교하고 싶지만 독립적인 연구를 많이 수행하는 것이 비실용적인 더 복잡한 사례를 생각해 보겠습니다. 이 경우 다음을 수행할 수 있습니다.

  • 과학적 매개변수를 성가신 초매개변수와 동일한 검색 공간에 포함합니다.
  • 검색 알고리즘을 사용하여 단일 연구에서 과학적 초매개변수와 노이즈 초매개변수의 값을 모두 샘플링합니다.

이 방법을 사용할 때는 조건부 초매개변수가 문제를 일으킬 수 있습니다. 결국 과학적 초매개변수의 모든 값에 대해 방해 초매개변수 집합이 동일하지 않으면 검색 공간을 지정하기 어렵습니다. 이 경우 과학적 초매개변수의 다양한 값이 균일하게 샘플링되므로 더 정교한 블랙박스 최적화 도구보다 준무작위 검색을 사용하는 것이 좋습니다. 검색 알고리즘과 관계없이 과학적 매개변수를 균일하게 검색해야 합니다.

정보를 제공하면서도 저렴한 실험을 진행하세요

학습 또는 학습 시퀀스를 설계할 때는 다음 세 가지 목표를 적절하게 달성할 수 있도록 제한된 예산을 할당하세요.

  • 과학적 초매개변수의 다양한 값을 비교합니다.
  • 충분히 큰 검색 공간에서 방해 요인 초매개변수를 조정합니다.
  • 성가신 초매개변수의 검색 공간을 충분히 밀도 있게 샘플링합니다.

이 세 가지 목표를 더 잘 달성할수록 실험에서 더 많은 통계를 추출할 수 있습니다. 과학적 초매개변수의 값을 최대한 많이 비교하면 실험에서 얻을 수 있는 통계의 범위가 넓어집니다.

가능한 한 많은 방해 초매개변수를 포함하고 각 방해 초매개변수가 가능한 한 넓은 범위에서 변하도록 허용하면 과학 초매개변수의 각 구성에 대한 검색 공간에 방해 초매개변수의 '좋은' 값이 존재한다는 신뢰도가 높아집니다. 그렇지 않으면 과학 초매개변수의 일부 값에 대해 더 나은 값이 있을 수 있는 방해 초매개변수 공간의 가능한 영역을 검색하지 않아 과학 초매개변수의 값을 불공정하게 비교할 수 있습니다.

성가신 하이퍼파라미터의 검색 공간을 최대한 밀도 있게 샘플링합니다. 이렇게 하면 검색 절차에서 검색 공간에 있는 성가신 초매개변수에 적합한 설정을 찾을 수 있다는 신뢰도가 높아집니다. 그렇지 않으면 일부 값이 성가신 초매개변수의 샘플링에서 운이 좋기 때문에 과학적 매개변수 값을 불공정하게 비교할 수 있습니다.

아쉽게도 이러한 세 가지 측면을 개선하려면 다음 중 하나가 필요합니다.

  • 시도 횟수를 늘려 리소스 비용을 늘립니다.
  • 다른 차원에서 리소스를 절약하는 방법을 찾습니다.

모든 문제에는 고유한 특성과 계산 제약 조건이 있으므로 이러한 세 가지 목표에 리소스를 할당하려면 어느 정도의 도메인 지식이 필요합니다. 학습을 실행한 후에는 항상 학습에서 방해 요인 초매개변수를 충분히 잘 조정했는지 파악하세요. 즉, 이 연구에서는 과학적 초매개변수를 공정하게 비교할 수 있을 만큼 충분히 큰 공간을 광범위하게 검색했습니다 (다음 섹션에서 자세히 설명).

실험 결과에서 학습

권장사항: 각 실험 그룹의 원래 과학적 목표를 달성하려고 노력하는 것 외에도 추가 질문 체크리스트를 확인하세요. 문제가 발견되면 실험을 수정하고 다시 실행합니다.

궁극적으로 각 실험 그룹에는 특정 목표가 있습니다. 실험에서 제공하는 증거를 평가하여 목표 달성 여부를 확인해야 합니다. 하지만 적절한 질문을 하면 특정 실험이 원래 목표를 향해 진행되기 전에 수정해야 할 문제를 찾을 수 있는 경우가 많습니다. 이러한 질문을 하지 않으면 잘못된 결론을 내릴 수 있습니다.

실험을 실행하는 데 비용이 많이 들 수 있으므로 현재 목표와 직접 관련이 없더라도 각 실험 그룹에서 유용한 다른 통계를 추출해야 합니다.

원래 목표를 달성하기 위해 특정 실험 세트를 분석하기 전에 다음 질문을 추가로 고려하세요.

  • 검색 공간이 충분히 큰가요? 연구의 최적점이 하나 이상의 차원에서 검색 공간의 경계에 가까운 경우 검색이 충분히 넓지 않을 수 있습니다. 이 경우 확장된 검색 공간으로 다른 연구를 실행합니다.
  • 검색 공간에서 충분한 포인트를 샘플링했나요? 그렇지 않은 경우 포인트를 더 많이 실행하거나 조정 목표를 덜 야심차게 설정하세요.
  • 각 연구에서 불가능한 시도의 비율은 얼마인가요? 즉, 어떤 시험이 발산하고, 손실 값이 매우 나쁘거나, 일부 암시적 제약 조건을 위반하여 전혀 실행되지 않나요? 연구에서 매우 큰 비율의 포인트가 불가능한 경우 이러한 포인트를 샘플링하지 않도록 검색 공간을 조정합니다. 이렇게 하려면 검색 공간을 다시 매개변수화해야 하는 경우가 있습니다. 불가능한 점이 많은 경우 학습 코드에 버그가 있을 수 있습니다.
  • 모델에 최적화 문제가 있나요?
  • 최고의 트라이얼의 학습 곡선에서 무엇을 배울 수 있나요? 예를 들어 최적의 트라이얼에 문제가 있는 과적합과 일치하는 학습 곡선이 있나요?

필요한 경우 앞의 질문에 대한 답변을 바탕으로 최신 연구 또는 연구 그룹을 개선하여 검색 공간을 개선하거나 더 많은 시험을 샘플링하거나 다른 수정 조치를 취합니다.

앞의 질문에 답한 후에는 실험에서 제공하는 증거를 원래 목표에 따라 평가할 수 있습니다. 예를 들어 변경사항이 유용한지 평가할 수 있습니다.

검색 공간에서 샘플링된 최적의 점이 경계에 가까우면 검색 공간이 의심스럽습니다. 해당 방향으로 검색 범위를 확장하면 더 나은 지점을 찾을 수 있습니다.

검색 공간 경계를 확인하려면 완료된 시도를 기본 초매개변수 축 플롯에 플롯하는 것이 좋습니다. 여기서는 검증 목표 값을 초매개변수 중 하나(예: 학습률)에 대해 표시합니다. 그림의 각 점은 단일 시험에 해당합니다.

각 트라이얼의 검증 목표 값은 일반적으로 학습 과정에서 달성한 최적의 값이어야 합니다.

검증 세트의 오류율 (y축)과 최대 학습률 (x축)을 그래프로 나타내어 잘못된 검색 공간 경계를 보여줍니다. 이 그래프에서 최적의 트라이얼 (오류율이 가장 낮음)은 검색 공간의 가장자리에 있으며, 여기서 최대 학습률이 가장 높습니다. 검증 세트의 오류율 (y축)과 최대 학습률 (x축)을 그래프로 나타내어 적절한 검색 공간 경계를 보여줍니다. 이 그래프에서 최적의 트라이얼 (가장 낮은 오류율)은 검색 공간의 중간에 있습니다. 이때 최고 학습률은 0.001이며 최고 학습률이 0.00001 또는 0.1일 때는 그렇지 않습니다.

그림 1: 잘못된 검색 공간 경계와 허용되는 검색 공간 경계의 예

그림 1의 플롯은 초기 학습률에 대한 오류율을 보여줍니다 (낮을수록 좋음). 최적의 점이 검색 공간의 가장자리 (일부 차원)에 클러스터링되는 경우 관찰된 최적의 점이 더 이상 경계에 가깝지 않을 때까지 검색 공간 경계를 확장해야 할 수 있습니다.

연구에는 결과가 크게 달라지거나 매우 나쁜 '실행 불가능'한 시험이 포함되는 경우가 많습니다 (그림 1에서 빨간색 X로 표시됨). 모든 트라이얼이 특정 임곗값보다 큰 학습률에 대해 불가능하고 성능이 가장 우수한 트라이얼의 학습률이 해당 영역의 가장자리에 있는 경우 모델에 더 높은 학습률에 액세스하지 못하도록 하는 안정성 문제가 있을 수 있습니다.

검색 공간에서 충분한 포인트를 샘플링하지 않음

일반적으로 검색 공간이 충분히 밀도 있게 샘플링되었는지 알기가 매우 어렵습니다. 🤖 시도 횟수를 늘리는 것이 시도 횟수를 줄이는 것보다 낫지만 시도 횟수를 늘리면 추가 비용이 발생합니다.

충분한 샘플링이 이루어졌는지 알기가 어려우므로 다음을 권장합니다.

  • 감당할 수 있는 범위 내에서 샘플링합니다.
  • 다양한 초매개변수 축 플롯을 반복적으로 살펴보고 검색 공간의 '좋은' 영역에 얼마나 많은 포인트가 있는지 파악하려고 노력하여 직관적인 신뢰도를 보정합니다.

학습 곡선 검토

요약: 손실 곡선을 검사하면 일반적인 실패 모드를 쉽게 식별할 수 있으며 잠재적인 다음 조치의 우선순위를 정하는 데 도움이 됩니다.

대부분의 경우 실험의 기본 목표는 각 시험의 유효성 검사 오류만 고려하면 됩니다. 하지만 각 시험을 단일 숫자로 줄일 때는 주의해야 합니다. 이러한 방식은 표면 아래에서 일어나는 일에 관한 중요한 세부정보를 숨길 수 있기 때문입니다. 모든 연구에서 최소한 상위 몇 개 트라이얼의 손실 곡선을 살펴보는 것이 좋습니다. 기본 실험 목표를 해결하는 데 필요하지 않더라도 손실 곡선 (학습 손실과 검증 손실 모두 포함)을 검토하면 일반적인 실패 모드를 식별할 수 있으며 다음에 취할 조치의 우선순위를 정하는 데 도움이 됩니다.

손실 곡선을 검사할 때는 다음 질문에 집중하세요.

  • 문제가 있는 과적합을 보이는 트라이얼이 있나요? 문제가 있는 과적합은 학습 중에 검증 오류가 증가하기 시작할 때 발생합니다. 과학적 초매개변수의 각 설정에 대해 '최고' 시도를 선택하여 성가신 초매개변수를 최적화하는 실험 설정에서는 비교하는 과학적 초매개변수의 설정에 해당하는 최고 시도 각각에서 문제성 과적합이 있는지 확인하세요. 최고의 트라이 중 하나에 문제가 있는 과적합이 있는 경우 다음 중 하나 또는 둘 다를 실행합니다.

    • 추가 정규화 기법을 사용하여 실험을 다시 실행합니다.
    • 과학적 하이퍼파라미터의 값을 비교하기 전에 기존 정규화 파라미터를 재조정합니다. 과학적 초매개변수에 정규화 매개변수가 포함된 경우에는 적용되지 않을 수 있습니다. 이러한 정규화 매개변수의 강도가 낮은 설정으로 인해 문제가 되는 과적합이 발생해도 놀라운 일이 아니기 때문입니다.

    과적합을 줄이는 것은 최소한의 코드 복잡성이나 추가 계산을 더하는 일반적인 정규화 기법(예: 드롭아웃 정규화, 라벨 스무딩, 가중치 감소)을 사용하여 간단하게 수행할 수 있습니다. 따라서 다음 실험 라운드에 이러한 항목을 하나 이상 추가하는 것은 일반적으로 간단합니다. 예를 들어 과학적 초매개변수가 '숨겨진 레이어 수'이고 숨겨진 레이어 수가 가장 많은 최적의 트라이얼에 문제가 있는 과적합이 표시되는 경우 숨겨진 레이어 수가 더 적은 트라이얼을 즉시 선택하는 대신 추가 정규화를 사용하여 다시 시도하는 것이 좋습니다.

    '최고' 시험에 문제가 되는 과적합이 없더라도 시험 중 하나에서 발생하면 문제가 있을 수 있습니다. 최적의 트라이얼을 선택하면 문제가 있는 과적합을 보이는 구성이 억제되고 문제가 없는 구성이 선호됩니다. 즉, 최적의 트라이얼을 선택하면 정규화가 더 많은 구성이 선호됩니다. 하지만 학습을 악화시키는 모든 것은 의도하지 않았더라도 규제기로 작용할 수 있습니다. 예를 들어 학습률을 작게 선택하면 최적화 프로세스를 방해하여 학습을 정규화할 수 있지만 일반적으로 이러한 방식으로 학습률을 선택하지는 않습니다. 과학적 초매개변수의 각 설정에 대한 '최고' 시행은 일부 과학적 또는 방해 초매개변수의 '나쁜' 값을 선호하는 방식으로 선택될 수 있습니다.

  • 학습 후반에 학습 또는 검증 오류에 단계별 편차가 큰가요? 이 경우 다음 두 가지가 방해될 수 있습니다.

    • 과학 초매개변수의 다양한 값을 비교할 수 있습니다. 각 시도는 '운이 좋은' 단계 또는 '운이 나쁜' 단계에서 무작위로 종료되기 때문입니다.
    • 프로덕션에서 최적의 트라이얼 결과를 재현할 수 있는지 여부 이는 프로덕션 모델이 연구에서와 동일한 '운이 좋은' 단계에서 종료되지 않을 수 있기 때문입니다.

    단계별 변동의 가장 가능성 있는 원인은 다음과 같습니다.

    • 각 배치에 대해 학습 세트에서 예시를 무작위로 샘플링하여 발생하는 배치 분산입니다.
    • 작은 검증 세트
    • 학습 후반에 너무 높은 학습률을 사용합니다.

    가능한 해결 방법은 다음과 같습니다.

    • 배치 크기를 늘립니다.
    • 더 많은 검증 데이터를 가져오는 중입니다.
    • 학습률 감소 사용
    • Polyak 평균 사용
  • 학습이 끝날 때까지 트라이얼이 계속 개선되나요? 이 경우 '컴퓨팅 제한' 체제에 있으며 학습 단계 수를 늘리거나 학습률 일정을 변경하면 도움이 될 수 있습니다.

  • 최종 학습 단계 전에 학습 및 검증 세트의 성능이 포화되었나요? 이 경우 '컴퓨팅에 제한되지 않음' 체제에 있으며 학습 단계 수를 줄일 수 있습니다.

이 목록 외에도 손실 곡선을 검사하면 많은 추가 동작을 확인할 수 있습니다. 예를 들어 학습 중에 학습 손실이 증가하는 것은 일반적으로 학습 파이프라인에 버그가 있음을 나타냅니다.

격리 플롯으로 변경사항이 유용한지 감지

ImageNet에서 학습된 ResNet-50의 최적 가중치 감소 값을 조사하는 격리 플롯 이 경우 가중치 감소가 ~0.00005일 때 검증 오류율이 가장 낮습니다.

그림 2: ImageNet에서 학습된 ResNet-50의 최적 가중치 감소 값을 조사하는 격리 플롯

 

실험 세트의 목표는 과학적 초매개변수의 다양한 값을 비교하는 것입니다. 예를 들어 최상의 검증 오류를 생성하는 가중치 감소 값을 확인한다고 가정해 보겠습니다. 격리 플롯은 기본 초매개변수 축 플롯의 특수한 경우입니다. 격리 플롯의 각 점은 일부 (또는 전체) 성가신 초매개변수에서 가장 우수한 트라이얼의 성능에 해당합니다. 즉, 성가신 하이퍼파라미터를 '최적화'한 후 모델 성능을 플롯합니다.

격리 플롯을 사용하면 과학적 초매개변수의 서로 다른 값을 동일한 기준으로 비교하기가 쉬워집니다. 예를 들어 그림 2의 격리 플롯은 ImageNet에서 학습된 ResNet-50의 특정 구성에 대해 최상의 검증 성능을 생성하는 가중치 감소 값을 보여줍니다.

목표가 가중치 감소를 포함할지 여부를 결정하는 것이라면 이 그래프의 최적점을 가중치 감소가 없는 기준선과 비교합니다. 공정한 비교를 위해 기준선도 학습률이 동일하게 잘 조정되어야 합니다.

(준)무작위 검색으로 생성된 데이터가 있고 격리 플롯에 연속 초매개변수를 고려하는 경우 기본 초매개변수 축 플롯의 x축 값을 버킷팅하고 버킷으로 정의된 각 세로 슬라이스에서 최적의 트라이얼을 가져와 격리 플롯을 근사화할 수 있습니다.

일반적으로 유용한 플롯 자동화

플롯을 생성하는 데 노력이 많이 들수록 플롯을 제대로 살펴보지 않을 가능성이 높습니다. 따라서 가능한 한 많은 플롯을 자동으로 생성하도록 인프라를 설정하는 것이 좋습니다. 실험에서 변경하는 모든 초매개변수에 대해 기본 초매개변수 축 플롯을 자동으로 생성하는 것이 좋습니다.

또한 모든 시험에 대해 손실 곡선을 자동으로 생성하는 것이 좋습니다. 또한 각 연구의 최적의 몇 가지 시험을 쉽게 찾고 손실 곡선을 검사할 수 있도록 하는 것이 좋습니다.

유용한 잠재적 플롯과 시각화를 많이 추가할 수 있습니다. 제프리 힌턴의 말을 바꿔 말하면 다음과 같습니다.

새로운 것을 계획할 때마다 새로운 것을 배우게 됩니다.

후보 변경사항을 채택할지 여부 결정

요약: 모델 또는 학습 절차를 변경하거나 새로운 초매개변수 구성을 채택할지 결정할 때는 결과의 다양한 변동 요인을 고려하세요.

모델을 개선하려고 할 때 특정 후보 변경사항이 기존 구성에 비해 더 나은 검증 오류를 달성할 수 있습니다. 하지만 실험을 반복해도 일관된 이점이 없을 수 있습니다. 비공식적으로 불일치 결과의 가장 중요한 소스는 다음과 같은 광범위한 카테고리로 그룹화할 수 있습니다.

  • 학습 절차 분산, 재학습 분산 또는 시도 분산: 동일한 초매개변수를 사용하지만 서로 다른 무작위 시드를 사용하는 학습 실행 간의 변동입니다. 예를 들어 다양한 무작위 초기화, 학습 데이터 셔플, 드롭아웃 마스크, 데이터 증강 작업 패턴, 병렬 산술 연산 순서가 모두 트라이얼 분산의 잠재적 소스입니다.
  • 초매개변수 검색 분산 또는 연구 분산: 초매개변수를 선택하는 절차로 인해 발생하는 결과의 변동입니다. 예를 들어 특정 검색 공간에서 동일한 실험을 실행하지만 준무작위 검색에 대해 두 개의 다른 시드를 사용하면 서로 다른 초매개변숫값이 선택될 수 있습니다.
  • 데이터 수집 및 샘플링 분산: 학습, 검증, 테스트 데이터로의 무작위 분할로 인한 분산 또는 학습 데이터 생성 프로세스로 인한 분산입니다.

맞습니다. 꼼꼼한 통계 테스트를 사용하여 유한 검증 세트에서 추정된 검증 오류율을 비교할 수 있습니다. 하지만 시도 분산만으로도 동일한 초매개변수 설정을 사용하는 두 개의 서로 다른 학습된 모델 간에 통계적으로 유의미한 차이가 발생할 수 있습니다.

하이퍼파라미터 공간에서 개별 지점 수준을 벗어나는 결론을 내리려고 할 때 연구 분산이 가장 우려됩니다. 연구 분산은 시도 횟수와 검색 공간에 따라 달라집니다. 연구 분산이 시험 분산보다 큰 경우와 훨씬 작은 경우가 있습니다. 따라서 후보 변경사항을 채택하기 전에 최적의 트라이얼을 N번 실행하여 트라이얼 간 편차를 특성화하는 것이 좋습니다. 일반적으로 파이프라인을 크게 변경한 후에는 평가판 분산을 다시 특성화하기만 하면 되지만, 경우에 따라 더 새로운 추정치가 필요할 수 있습니다. 다른 애플리케이션에서는 시험 변동을 특성화하는 데 비용이 너무 많이 들어 그만한 가치가 없습니다.

실질적인 개선을 가져오는 변경사항 (새로운 하이퍼 매개변수 구성 포함)만 채택하고 싶지만, 특정 변경사항이 도움이 된다는 완전한 확신을 요구하는 것도 올바른 방법은 아닙니다. 따라서 새 초매개변수 포인트 (또는 기타 변경사항)가 기준보다 더 나은 결과를 얻는다면 (새 포인트와 기준의 재학습 분산을 최대한 고려) 향후 비교를 위해 새 기준으로 채택하는 것이 좋습니다. 하지만 복잡성을 추가하는 것보다 더 큰 개선을 가져오는 변경사항만 채택하는 것이 좋습니다.

탐색이 종료된 후

요약: Bayesian 최적화 도구는 적절한 검색 공간을 검색하고 조정할 가치가 있는 초매개변수를 결정한 후 사용할 수 있는 유용한 옵션입니다.

결국 튜닝 문제에 대해 자세히 알아보는 것에서 출시하거나 다른 용도로 사용할 단일 최적 구성을 생성하는 것으로 우선순위가 바뀝니다. 이때 최적의 관찰된 트라이얼 주변의 로컬 영역을 편안하게 포함하고 적절하게 샘플링된 세련된 검색 공간이 있어야 합니다. 탐색 작업을 통해 조정해야 하는 가장 필수적인 초매개변수와 가능한 한 큰 조정 예산을 사용하여 최종 자동 조정 연구의 검색 공간을 구성하는 데 사용할 수 있는 적절한 범위를 파악해야 합니다.

튜닝 문제에 대한 통찰력을 극대화하는 데 더 이상 신경 쓰지 않으므로 준무작위 검색의 많은 이점이 더 이상 적용되지 않습니다. 따라서 Bayesian 최적화 도구를 사용하여 최적의 초매개변수 구성을 자동으로 찾아야 합니다. 오픈소스 Vizier는 베이지안 최적화 알고리즘을 비롯한 ML 모델을 조정하기 위한 다양한 정교한 알고리즘을 구현합니다.

검색 공간에 사소하지 않은 양의 발산점이 포함되어 있다고 가정해 보겠습니다. 즉, NaN 학습 손실이 발생하거나 평균보다 표준 편차가 훨씬 큰 학습 손실이 발생하는 점입니다. 이 경우 발산하는 트라이얼을 적절하게 처리하는 블랙박스 최적화 도구를 사용하는 것이 좋습니다. (이 문제를 처리하는 좋은 방법은 알 수 없는 제약 조건이 있는 베이즈 최적화를 참고하세요.) 오픈소스 Vizier는 트라이얼을 불가능한 것으로 표시하여 발산점을 표시하는 기능을 지원하지만 구성 방식에 따라 Gelbart 외의 선호하는 접근 방식을 사용하지 않을 수도 있습니다.

탐색이 완료되면 테스트 세트의 실적을 확인해 보세요. 원칙적으로는 검증 세트를 학습 세트에 포함하고 베이지안 최적화로 찾은 최적의 구성을 재학습할 수도 있습니다. 하지만 이 방법은 이 특정 워크로드로 향후 출시가 없을 때만 적합합니다 (예: 일회성 Kaggle 대회).