AI 에이전트를 활용한 머신러닝 자동화

발행: (2026년 1월 6일 오전 10:08 GMT+9)
18 min read
원문: Dev.to

Source: Dev.to

위에 제공된 소스 링크 외에 번역할 텍스트를 알려주시면, 요청하신 대로 한국어로 번역해 드리겠습니다.

개요

Kaggle 대회를 해결할 때, 곧 다음과 같은 패턴을 발견하게 됩니다:

  • Baseline – 데이터를 업로드하고 CatBoost 또는 LightGBM을 실행하여 베이스라인 메트릭을 얻는다 (≈ ½ 시간).
  • Top solutions – 수십 개의 전처리 옵션, 수백 개의 피처 조합, 수천 개의 하이퍼파라미터 세트를 필요로 한다.

기존 AutoML 시스템은 큰 도움이 되지 않습니다:

SystemHow it worksLimitation
AutoGluon여러 모델을 학습하고 다단계 앙상블을 구축한다.각 실행이 처음부터 시작된다.
TPOT유전 알고리즘을 통해 파이프라인을 생성한다.이전 실행으로부터 학습하지 않는다.
Typical AutoML고정된 알고리즘 집합을 시도하고 메트릭에 따라 최적을 선택한다.추론이 없고, 적응이 없으며, 경험 축적이 없다.

주된 문제는 추론 부족입니다. 이러한 시스템은 특정 접근법이 왜 성공했는지 혹은 실패했는지를 분석하지 않으며, 새로운 작업의 구체적인 상황에 맞게 적응하지도 않습니다. 모든 새로운 데이터셋을 마치 처음 보는 것처럼 취급합니다.

인간은 다르게 행동합니다. 불균형 클래스가 보이면 데이터 과학자는 즉시 층화(stratification)와 임계값 선택을 생각합니다; 비슷한 문제를 이전에 다뤘다면 성공했던 방법을 재사용합니다. 첫 시도가 실패하면 원인을 분석하고 다른 접근법을 시도합니다.

인간과 같은 AutoML 아키텍처

대형 언어 모델(LLM)을 사용하면 인간처럼 추론하는 시스템을 구축할 수 있게 되었습니다. LLM은 다음을 수행할 수 있습니다:

  • 데이터를 분석한다.
  • 방법 선택에 대해 추론한다.
  • 예시로부터 학습한다.

하지만 단일 모델만으로는 여전히 명백한 실수를 놓치거나 잘못된 접근에 머물 수 있습니다. 따라서 시스템이 스스로를 점검하고 경험을 축적할 수 있는 아키텍처가 필요합니다.

Actor‑Critic 영감

강화 학습에서 Actor‑Critic 방법은 두 개의 에이전트를 사용합니다:

  • Actor – 행동을 수행한다.
  • Critic – 그 행동을 평가한다.

이 아이디어를 AutoML에 적용하면 다음과 같습니다:

역할책임
Actor데이터를 받고 특화된 서비스(MCP 서버) 도구 상자를 활용한다. 데이터셋을 탐색하고 필요한 단계들을 결정한 뒤 솔루션(보고서 + 아티팩트)을 생성한다.
CriticActor의 보고서만을 받는다(도구는 없음). 모든 작업이 올바르게 수행됐는지 확인한다. 문제가 발견되면 피드백을 반환해 Actor가 다시 시도할 수 있게 한다.
Memory각 반복 후 경험(보고서, 피드백, 결과)을 저장하고, 유사한 작업에 대해 나중에 재사용한다.

루프는 다음과 같습니다: Actor → Critic → Feedback → Actor (반복).

Tooling: MCP (Model Context Protocol)

LLM은 추론할 수 있지만 데이터를 조작하려면 도구가 필요합니다. 나는 도구를 네 가지 범주로 나눴습니다:

  1. 데이터 미리보기 – 원시 파일을 빠르게 검사합니다.
  2. 통계 분석 – 기술 통계, 결측값 진단 등.
  3. 전처리 – 인코딩, 결측값 대체, 스케일링 등.
  4. 모델 학습 – 모델 학습, 예측 생성, 앙상블.

Example: Data‑preview tool output

{
  "shape": [150, 5],
  "columns": ["sepal_length", "sepal_width", "petal_length", "petal_width", "species"],
  "dtypes": {
    "sepal_length": "Float64",
    "species": "String"
  },
  "sample": [
    {"sepal_length": 5.1, "species": "setosa"},
    ...
  ]
}

Actor는 차원, 열 타입, 몇 개의 행을 확인할 수 있어 다음 단계를 결정하기에 충분합니다.

Consistent preprocessing

핵심 요구 사항은 학습과 테스트에 동일한 변환을 적용하는 것입니다. 예를 들어, 범주형 특성이 학습 세트에서 {"red": 0, "blue": 1} 로 인코딩되었다면 테스트 세트에도 동일한 매핑을 적용해야 합니다. 매핑은 JSON 파일로 저장됩니다:

mapping_path = Path(output_dir) / f"{column}_mapping.json"
with open(mapping_path, "w") as f:
    json.dump(mapping, f)

이는 특히 범주형 분류에서 중요합니다. 모델은 숫자 코드를 출력하고, 이를 원래 클래스 레이블로 다시 변환해야 합니다.

Training‑tool contract

각 학습 도구는 세 가지 항목을 반환합니다:

  1. 저장된 모델의 경로.
  2. 예측 파일의 경로.
  3. 학습 데이터에 대해 계산된 메트릭.

경로는 타임스탬프와 UUID로 생성되어 Actor가 이름 충돌 없이 여러 알고리즘을 병렬로 실행할 수 있게 합니다.

Source:

툴박스 확장

툴의 수가 열 개를 넘으면 관리·지원·확장이 번거로워집니다. FastMCP 프레임워크(모델 컨텍스트 프로토콜 구현)는 다음과 같이 해결합니다:

  • 각 툴을 독립적인 서버로 패키징합니다.
  • 액터가 필요할 때 호출할 수 있는 간단한 RPC‑스타일 API를 제공합니다.

다섯 개의 MCP 서버를 만들었습니다:

ServerPurpose (목적)
file_operations파일 I/O 유틸리티
data_previewCSV 빠른 미리보기
data_analysis통계 요약
data_processing변환(인코딩, 결측값 보정, 스케일링)
machine_learning모델 학습, 예측, 앙상블

구조화된 보고 및 다중 심사자 비평

Actor는 네 개의 섹션으로 구성된 구조화된 보고서를 작성합니다:

  1. 데이터 분석
  2. 전처리
  3. 모델 학습
  4. 결과

Critic은 도구를 사용하지 않으며 보고서만 읽습니다. 단일 판사 대신 네 명의 전문 LLM 판사를 활용하여 각 섹션을 별도로 평가합니다.

judges = [
    LLMJudge(rubric="Evaluate data_analysis: Is exploration thorough?"),
    LLMJudge(rubric="Evaluate preprocessing: Are steps appropriate?"),
    LLMJudge(rubric="Evaluate model_training: Is selection justified?"),
    LLMJudge(rubric="Evaluate results: Are metrics calculated correctly?"),
]

각 판사는 다음을 반환합니다:

  • 0에서 1 사이의 점수
  • 평가 점수를 설명하는 정당성(justification)

전체 Critic 점수는 네 명 판사의 평균값입니다. 평균이 사전에 정의된 임계값 이하일 경우, Critic은 Actor에게 상세 피드백을 보내고, Actor는 솔루션을 수정한 뒤 반복합니다.

엔드‑투‑엔드 흐름 (의사코드)

memory = ExperienceMemory()

def auto_ml_pipeline(data_path):
    # 1. Load prior experience (if any)
    context = memory.retrieve_similar(data_path)

    # 2. Actor generates an initial solution
    report, artifacts = Actor.run(data_path, context)

    while True:
        # 3. Critic evaluates the report
        scores, feedback = Critic.evaluate(report)

        # 4. If the average score is high enough → finish
        if sum(scores) / len(scores) >= 0.85:
            break

        # 5. Otherwise, give feedback to Actor and iterate
        report, artifacts = Actor.improve(report, feedback)

    # 6. Store the successful experience for future tasks
    memory.store(data_path, report, artifacts, scores)

    return artifacts["predictions_path"]

요점

  • Reasoning + tools → LLM만으로는 데이터를 조작할 수 없으며, 툴박스(MCP 서버)가 그 격차를 메웁니다.
  • Actor‑Critic loop → 실수를 조기에 포착하고 반복적인 개선을 이끕니다.
  • Specialized judges → 단일 거대한 평가가 아니라 집중되고 세분화된 피드백을 제공합니다.
  • Experience memory → 시스템이 작업 전반에 걸쳐 지식을 축적하게 하여 AutoML을 인간과 같은 전문성에 가깝게 만듭니다.

액터와 크리틱을 활용한 반복 의사결정

액터의 솔루션은 수용 임계값(보통 0.75)과 비교됩니다.

  • 점수가 더 높으면, 결정이 승인됩니다.
  • 그렇지 않으면, 크리틱이 모든 심사위원의 의견을 수집하여 액터에게 다음 반복을 위해 전달합니다.

이 다중 심사위원 접근 방식은 단일 심사위원에 의존하는 것보다 더 안정적입니다.
하나의 LLM은 지나치게 엄격하거나 명백한 오류를 놓칠 수 있지만, 네 명의 전문 심사위원이 주관성을 완화합니다.

파일‑시스템 격리

에이전트가 파일을 다룰 때 전체 파일 시스템에 접근해서는 안 됩니다. 격리는 각 세션마다 전용 디렉터리를 만들어서 달성합니다:

~/.scald/actor/

├─ data/      # 원본 데이터 복사본
├─ output/    # 중간 파일
└─ workspace/ # 모델 및 예측
  • 원본 CSV 파일은 data/ 로 복사됩니다.
  • 모든 도구는 오직 이 디렉터리들 안에서만 작동하므로 중요한 파일이 우연히 덮어써지거나 관련 없는 데이터를 읽는 일을 방지합니다.

실행이 끝나면 모든 산출물은 타임스탬프가 포함된 세션 디렉터리로 복사되고, 워크스페이스는 비워집니다. 이후 이 디렉터리를 확인하면 에이전트가 정확히 무엇을 했는지 알 수 있습니다:

  • 어떤 모델이 학습되었는지 (.pkl 파일에서 로드)
  • 얻어진 메트릭은 무엇인지
  • 수행된 단계는 무엇인지

Experience Storage & Retrieval

각 반복이 끝날 때마다 시스템은 경험을 저장합니다:

self.mm.save(
    actor_solution=actor_solution,
    critic_evaluation=critic_evaluation,
    task_type=task_type,
    iteration=iteration,
)

Search for Similar Past Solutions

# Retrieve the most relevant memories
actor_memory, critic_memory = self.mm.retrieve(
    actor_report=actor_solution.report,
    task_type=task_type,
    top_k=5,
)
  • Actor reportCritic evaluationChromaDB 벡터 데이터베이스에 저장됩니다.
  • 새로운 작업이 들어오면, 시스템은 Jina 임베딩 모델을 사용해 의미 검색을 수행하고 과거의 유사한 솔루션을 찾습니다.
  • 찾아낸 솔루션은 에이전트에게 컨텍스트로 제공됩니다.

실패한 시도조차도 가치가 있습니다.
비평가가 “갭을 처리하는 것을 잊었다”고 한 번이라도 말했으면, 그 피드백이 향후 작업을 안내할 수 있습니다. 의미 검색은 이러한 경우도 찾아냅니다.

전체 반복 사이클

모든 구성 요소가 준비되면 사이클은 다음 중 하나가 될 때까지 실행됩니다:

  • 최대 반복 횟수에 도달 또는
  • 비평가(Critic)가 최종 결정을 내릴 때

각 반복마다:

  1. 행위자(Actor) 가 문제를 해결하고, 피드백을 반영합니다.
  2. 비평가(Critic) 가 해결책을 평가합니다.
  3. 경험이 메모리에 저장됩니다.
  4. 다음 시도를 위해 관련 컨텍스트가 추출됩니다.

행위자 학습 관찰

  • 반복 1: 간단한 전처리 + 하나의 모델.
  • 비평가 피드백: “클래스 균형을 확인하지 않았습니다”, “특성 엔지니어링이 누락되었습니다.”
  • 반복 2: 누락된 단계를 추가하고, 여러 모델을 시도하며, 앙상블을 구축합니다.

구체적인 실패 사례: 행위자가 타깃 열을 인코딩하고 모델을 학습했지만 예측을 디코딩하는 것을 잊었습니다. 출력이 클래스 레이블 대신 숫자 ID가 되었습니다. 해결 방법은 시스템 프롬프트에 명시적인 지시를 추가하는 것이었습니다:

타깃 열을 인코딩한다면, 반환하기 전에 반드시 예측을 디코딩해야 합니다.
인코딩 단계에서 얻은 매핑 경로와 함께 decode_categorical_label을 사용하십시오.

행위자가 여러 모델을 실험할 때 파일이 서로 덮어쓰기 되는 경우가 발생했습니다. LLM에 고유 파일명을 생성하도록 요청하는 것은 신뢰성이 떨어졌습니다. 견고한 해결책은 도구 수준에서 파일명을 관리하는 것으로, 각 파일에 타임스탬프UUID를 추가하는 것입니다.

실험 결과

시스템은 여러 OpenML 데이터셋에 대해 평가되었습니다.

데이터셋Metric (F1)Baseline (RF)Baseline (AutoGluon)Baseline (FLAML)
christine0.7430.713 (‑4 %)
cnae‑90.9800.945 (‑3.5 %)
Australian0.8360.860
blood‑transfusion0.7560.7120.7340.767 (‑1.5 %)
  • 비용은 작업 복잡도와 반복 횟수에 따라 $0.14에서 $3.43 사이였습니다.
  • 실행 시간1 분에서 30 분까지 다양했습니다.

시스템의 가치는 단순히 원시 메트릭이 아니라 지능형 자동화를 제공한다는 점에 있습니다.
워크플로우를 모듈화(MCP)함으로써, 우리는 어떤 작업이든 특화된 에이전트를 삽입할 수 있으며, 단일 반복 개선 루프를 유지하고 시간이 지남에 따라 경험을 축적할 수 있습니다.

제한 사항

  • 표형 데이터그래디언트 부스팅 알고리즘에 가장 적합합니다.
  • 딥러닝이나 시계열 작업에 바로 적용하기는 어려우며(추가 도구 필요).
  • 전체적인 품질은 기본이 되는 LLM의 규모와 역량에 크게 좌우됩니다.

Getting Started

Installation

pip install scald

Using the CLI

scald --train data/train.csv \
      --test data/test.csv \
      --target price \
      --task-type regression

Using the Python API

from scald import Scald

scald = Scald(max_iterations=5)

predictions = await scald.run(
    train="data/train.csv",          # .csv or pandas DataFrame
    test="data/test.csv",
    target="target_column",
    task_type="classification",
)

Note: OpenAI와 호환되는 제공업체(예: OpenRouter)에서 API 키가 필요합니다.

Additional Information

  • Need a key from Jina 메모리 시스템의 임베딩을 위해 (서비스는 등록 시 많은 무료 토큰을 제공합니다).
  • All code is packaged in a library 모든 코드는 라이브러리로 패키징되어 있으며 GitHub에서 사용할 수 있습니다.
Back to Blog

관련 글

더 보기 »

2025년 AI Agent 컨퍼런스 궁극 가이드

2025년 AI 에이전트 컨퍼런스 궁극 가이드 AI가 지속적으로 진화하고 산업을 혁신함에 따라, AI 에이전트—작업을 자율적으로 수행하는 소프트웨어 프로그램—는 ...