검색 공간 및 결정 변수 정의

AlphaEvolve 사용 사례의 탐색 공간과 결정 변수를 정의하려면 문제를 코드로 적절하게 공식화하고 진화적 휴리스틱이 반복하고 개선할 수 있는 작동하는 기준 솔루션을 제공해야 합니다.

이 프로세스에는 다음이 포함됩니다.

  • 대상 컨텍스트 제공: 최적화 사용 사례의 배경, 도메인 규칙, 성능 경계를 설정합니다.

  • 깔끔한 기준 제공: 대상 문제에 대한 기준 솔루션을 올바르게 구현하는 명확하고 잘 구조화된 코드를 제공합니다.

  • 자유도 태그 지정: 에이전트가 더 높은 성능의 솔루션을 식별하기 위해 변형하고 탐색할 수 있는 특정 결정 변수, 로직 구조 또는 루틴을 표시하기 위해 명시적인 EVOLVE-BLOCK 주석으로 코드베이스에 주석을 추가합니다.

초기 프로그램의 구조

초기 프로그램은 진화 검색의 경계를 결정하는 두 가지 기본 블록 유형으로 구성됩니다.

  1. 변경 불가능한 코드 블록: 검색 공간을 제한하거나 솔루션 성능에 영향을 미치지 않는 작업 (예: 표준 전처리 단계 또는 데이터 처리 루틴)을 실행하는 상용구 코드, 도우미 함수, 종속 항목입니다.

  2. 변경 가능한 코드 블록 (EVOLVE-BLOCK): 에이전트가 탐색하고 변경할 수 있는 특정 결정 변수, 로직 구조 또는 분석 표현식이 포함된 타겟팅된 리전입니다.

    import numpy as np
    # Code to constrain the search space (Immutable)
    def def_preprocessing():
        """Feature engineering and preprocessing."""
        pass
    
    # EVOLVE-BLOCK-START
    # Mutable block: Provides degrees of freedom for AlphaEvolve to optimize
    def model_tuning():
        """Model tuning function: parametrized to take features."""
        pass
    # EVOLVE-BLOCK-END
    
    # Boilerplate code that does not impact solution performance (Immutable)
    def batch_predictions():
        """Inference function: batch predictions to test performance."""
        pass
    

EVOLVE-BLOCK 형식 지정 규칙에는 다음이 포함됩니다.

  • 독립형 줄: EVOLVE-BLOCK-START 및 EVOLVE-BLOCK-END 주석 마커는 자체 줄에 단독으로 표시되어야 합니다. 공백 및 주석 프리픽스 (예: # 또는 //)를 제외하고 마커와 동일한 줄에 코드나 다른 콘텐츠를 배치하지 마세요.
  • 수정 가능한 코드 필요: 시작 마커와 종료 마커 사이의 영역에는 수정 가능한 코드가 한 줄 이상 포함되어야 합니다. 공백, 주석 또는 docstring만 포함하는 블록은 AlphaEvolve가 진화할 수 있는 변경 가능한 로직이 없기 때문에 검증 오류와 함께 거부됩니다.
  • 중첩 없음: 중첩된 evolve 블록은 지원되지 않습니다.

검색 공간 제약 권장사항

변경 불가능한 가져오기를 정렬하고 진화 블록을 배치하는 방식은 AlphaEvolve의 운영 경계를 명시적으로 보여줍니다.

라이브러리 가져오기 및 종속 항목 관리

AlphaEvolve는 프로덕션 환경에 유효한 외부 라이브러리를 본질적으로 결정할 수 없습니다.

개방형 탐색 허용: 측정항목을 극대화하기 위해 머신러닝 또는 수학 패키지를 허용할 수 있는 경우 변경 가능한 EVOLVE-BLOCK 내에 가져오기를 배치합니다. 이를 통해 AlphaEvolve는 대체 프레임워크를 자유롭게 대체할 수 있습니다 (예: sklearn을 TensorFlow 또는 xgboost로 대체).

엄격한 도구 체인 적용: 모든 모델이 특정 패키지에서 가져와야 하는 경우 해당 패키지를 evolve 블록 외부에서 변경 불가능한 가져오기로 선언합니다. AlphaEvolve가 검색 중에 해당 패키지의 추가 내부 모듈을 필요로 하는 경우 전역 제약 조건을 위반하지 않고 변경 가능한 공간 내에서 로컬로 가져올 수 있습니다.

과도하게 제한된 검색 공간 방지

초기 프로그램 또는 추가 사용자 제공 텍스트 컨텍스트 내에서 변경 불가능한 코드 블록으로 최대한 많은 하드 제약 조건을 공식화합니다. 이렇게 하면 에이전트가 구조적으로 불가능한 솔루션을 탐색할 가능성이 최소화됩니다.

하지만 진화적 접근 방식이 중복되는 지점까지 검색 공간을 좁히지 마세요. 예를 들어 AlphaEvolve가 단일 매개변수 선형 회귀만 사용하도록 강제하면 표준 그리드 검색 유틸리티로 파싱할 수 있는 좁은 구성 공간으로 문제가 줄어듭니다. 대신 평가 기준에서 소프트 제약조건을 음수 페널티로 사용하여 탐색을 방해하지 않고 유도하세요.

타겟팅된 목표를 위한 전략적 블록 배치

EVOLVE-BLOCK의 범위를 변경하면 파이프라인의 전체 최적화 목표가 변경됩니다.

샘플 외 (OOS) 보정 최적화: 광범위한 알고리즘 검색이 목표인 경우 전체 모델 조정 및 초기화 루틴을 블록으로 래핑합니다.

구조적 적합성 최적화: 선형 프레임워크를 유지하면서 복잡한 분석 표현식이나 커스텀 수학적 변환을 발견하려면 변경 가능한 블록을 특성 변환 로직 주변에 엄격하게 격리하여 다운스트림 모델 아키텍처를 고정되고 변경 불가능하게 유지합니다.

모듈식 계층 구조 보존 (HDL/Verilog 예시): 구조적 코드 블록 구성을 최적화할 때는 EVOLVE-BLOCK-START 및 EVOLVE-BLOCK-END 태그를 모듈 정의 경계 내에 엄격하게 유지합니다. 이렇게 하면 검색 휴리스틱이 구조적으로 잘못된 이동을 수행하지 않습니다. 예를 들어 깔끔하게 포함된 단일 모듈을 매핑되지 않은 여러 부동 하위 모듈로 바꾸려고 시도하지 않습니다.