[AI Paper] ๐ Towards Reliable ML Feature Engineering via Planning in Constrained-Topology of LLM Agents
๐ Towards Reliable ML Feature Engineering via Planning in Constrained-Topology of LLM Agents
๋ฉํ ์ ๋ณด
์ ์: Himanshu Thakur, Anusha Kamath, Anurag Muthyala, Dhwani Sanmukhani, Smruthi Mukund, Jay Katukuri
์ถ์ฒ: arXiv:2601.10820v1
๋ฐํ์ผ: 2026๋ 1์
๋ผ์ด์ ์ค: CC BY 4.0
ํ์ค ์์ฝ
[!tip] ํต์ฌ ๋ฉ์์ง
LLM ์์ด์ ํธ์ ์ ํ๋ ํ ํด๋ก์ง (Constrained-Topology)์ ์ฒด๊ณ์ ๊ณํ ๋ฉ์ปค๋์ฆ (Planning)์ ํตํด ์ ๋ขฐํ ์ ์๊ณ ํด์ ๊ฐ๋ฅํ ์๋ํ๋ ML ํผ์ฒ ์์ง๋์ด๋ง ์์คํ ์ ๊ตฌ์ถ
์ฐ๊ตฌ ๋ฐฐ๊ฒฝ ๋ฐ ๋๊ธฐ
๊ธฐ์กด AutoML์ ํ๊ณ
[!warning] ๋ฌธ์ ์
– ์ผ๊ด์ฑ ๋ถ์กฑ: ๊ฐ์ ๋ฐ์ดํฐ์ ๋ํด ์คํํ ๋๋ง๋ค ๋ค๋ฅธ ํผ์ฒ ์์ฑ
– ํด์ ๋ถ๊ฐ๋ฅ์ฑ: ์ ํน์ ํผ์ฒ๊ฐ ์์ฑ๋์๋์ง ์ดํดํ๊ธฐ ์ด๋ ค์
– ์ ๋ขฐ์ฑ ๋ฌธ์ : ํ๋ก๋์ ํ๊ฒฝ์์ ์์ธก ๋ถ๊ฐ๋ฅํ ๋์
– ๊ฒ์ฆ ์ด๋ ค์: ์๋ ์์ฑ๋ ํผ์ฒ์ ํ์ง ํ๊ฐ ๊ณค๋
์ฐ๊ตฌ ๋๊ธฐ
- ์ฝ๋ ์์ฑ ๋ชจ๋ธ์ ๋ฐ์ : ์ต๊ทผ LLM์ ์ฝ๋ ์์ฑ ๋ฅ๋ ฅ์ด ํผ์ฒ ์์ง๋์ด๋ง ์๋ํ์ ์๋ก์ด ๊ธฐํ ์ ๊ณต
- ์ค๋ฌด ๋์
์ ์ฅ๋ฒฝ:
- ํ๋ก๋์ ๊ธ ํผ์ฒ ์์ง๋์ด๋ง์ ๋ฐ๋ณต์ ์ด๊ณ ๋ณต์กํ ํ๋ก์ธ์ค๋ฅผ ๋ด์ ๋ฐ์ดํฐ์ ๋ถ์กฑ
- CoPilot, Devin ๋ฑ ๊ธฐ์กด ์ฝ๋ฉ ์์ด์ ํธ์ ํ ๊ณ ์ ๋๊ตฌ/์ฝ๋๋ฒ ์ด์ค/์ํฌํ๋ก์ฐ์์ ํตํฉ ๋ฐ ๊ฐ์ธํ ํ๊ณ
- ์ ๋ขฐ์ฑ ์๊ตฌ: ML ํ์ด ์ค์ ๋ก ์ฌ์ฉํ ์ ์๋ ์ ๋ขฐํ ์ ์๋ ์๋ํ ์์คํ ํ์
ํต์ฌ ์์ด๋์ด
1. Constrained-Topology ํ๋ ์์ํฌ
[!important] ์ ํ๋ ํ ํด๋ก์ง
์์ด์ ํธ ๊ฐ ์ํธ์์ฉ์ ๊ตฌ์กฐ์ ์ผ๋ก ์ ํํ์ฌ ๋ฌด๋ถ๋ณํ ํ์ ์ผ๋ก ์ธํ ํผ๋ ๋ฐฉ์ง
- ์์ ๋ก์ด ํต์ ๋์ ์ ์๋ ๊ฒฝ๋ก๋ฅผ ํตํ ํต์
- ์ญํ ๋ณ ์์ด์ ํธ ๋ถ๋ฆฌ ๋ฐ ๋ช ํํ ์ฑ ์ ๊ฒฝ๊ณ
- ์ค๋ณต ๋ฐ ์ถฉ๋ํ๋ ํผ์ฒ ์ ์ ๋ฐฉ์ง
graph TD
A[Planning Agent] --> B[Feature Proposal Agent]
A --> C[Validation Agent]
B --> D[Integration Agent]
C --> D
D --> E[Final Features]
2. ์ฒด๊ณ์ ์ธ Planning ๋ฉ์ปค๋์ฆ
[!note] ๊ณํ ์ค์ฌ ์ ๊ทผ
์คํ ์ ์ ์ ๋ต์ ์๋ฆฝํ๊ณ ์์ด์ ํธ ๊ฐ ํ์ ์ ์กฐ์
- ํผ์ฒ ์์ฑ ์ ๋ชฉํ ๋ฐ ์ ์ฝ ์กฐ๊ฑด ๋ช ํํ
- ๋จ๊ณ๋ณ ์คํ ๊ณํ ์๋ฆฝ
- ์์ด์ ํธ ๊ฐ ์ผ๊ด์ฑ ์๋ ์์ฌ๊ฒฐ์
3. ์ ๋ขฐ์ฑ ๋ฐ ํด์๊ฐ๋ฅ์ฑ ํฅ์
์ ๋ขฐ์ฑ ๊ฐ์ ์์:
– ๊ตฌ์กฐํ๋ ํ๋ก์ธ์ค๋ก ์์ธก ๊ฐ๋ฅํ ๊ฒฐ๊ณผ
– ๊ฒ์ฆ ๋จ๊ณ๋ฅผ ํตํ ํ์ง ๋ณด์ฅ
– ๋จ๊ณ๋ณ ์ถ์ ๊ฐ๋ฅ์ฑ
ํด์๊ฐ๋ฅ์ฑ ๊ฐ์ ์์:
– ๊ฐ ํผ์ฒ์ ์์ฑ ์ด์ ๊ธฐ๋ก
– ์์ฌ๊ฒฐ์ ๊ณผ์ ์ ํฌ๋ช
์ฑ
– ์ฌ๋์ด ์ดํด ๊ฐ๋ฅํ ํผ์ฒ ์ค๋ช
๋ฐฉ๋ฒ๋ก ๋ฐ ์ํคํ ์ฒ
์์คํ ๊ตฌ์ฑ ์์
1. ๋ค์ค ์์ด์ ํธ ์ํคํ ์ฒ
| ์์ด์ ํธ ์ ํ | ์ญํ | ์ฑ ์ |
|---|---|---|
| Planning Agent | ์ ๋ต ์๋ฆฝ | ๋ชฉํ ์ค์ , ์ ์ฝ ์กฐ๊ฑด ์ ์, ์ ์ฒด ํ๋ก์ธ์ค ์กฐ์จ |
| Proposal Agent | ํผ์ฒ ์ ์ | ๋ฐ์ดํฐ ๋ถ์ ๊ธฐ๋ฐ ํผ์ฒ ์์ด๋์ด ์์ฑ |
| Validation Agent | ๊ฒ์ฆ | ์ ์๋ ํผ์ฒ์ ์ ํจ์ฑ, ์คํ ๊ฐ๋ฅ์ฑ ํ๊ฐ |
| Integration Agent | ํตํฉ | ์น์ธ๋ ํผ์ฒ์ ์ฝ๋ ๊ตฌํ ๋ฐ ํตํฉ |
2. ์ ํ๋ ํต์ ๊ฒฝ๋ก
[!example] ํต์ ์ ์ฝ
โ ํ์ฉ๋ ํต์ : - Planning โ Proposal (๋ชฉํ ์ ๋ฌ) - Planning โ Validation (ํ๊ฐ ๊ธฐ์ค ์ ๋ฌ) - Proposal โ Integration (์น์ธ๋ ํผ์ฒ ์ ๋ฌ) - Validation โ Integration (๊ฒ์ฆ ๊ฒฐ๊ณผ ์ ๋ฌ) โ ๊ธ์ง๋ ํต์ : - Proposal โ Proposal (์ง์ ํ์ ๊ธ์ง) - Validation โ Proposal (์ง์ ํผ๋๋ฐฑ ๊ธ์ง)
3๋จ๊ณ ํ๋ก์ธ์ค
Phase 1: Planning (๊ณํ)
# ์๋ ์ฝ๋
def planning_phase(dataset, task_requirements):
"""
๋ชฉํ ์ค์ ๋ฐ ์ ๋ต ์๋ฆฝ
"""
objectives = define_objectives(task_requirements)
constraints = identify_constraints(dataset)
strategy = create_strategy(objectives, constraints)
return strategy
์ฃผ์ ํ๋:
– ๋ฐ์ดํฐ์
ํน์ฑ ๋ถ์
– ML ํ์คํฌ ๋ชฉํ ์ดํด
– ํผ์ฒ ์์ง๋์ด๋ง ์ ๋ต ์๋ฆฝ
– ํ๊ฐ ๊ธฐ์ค ์ ์
Phase 2: Proposal & Validation (์ ์ ๋ฐ ๊ฒ์ฆ)
# ์๋ ์ฝ๋
def proposal_validation_cycle(strategy, dataset):
"""
ํผ์ฒ ์ ์ ๋ฐ ๊ฒ์ฆ์ ๋ฐ๋ณต ์ฌ์ดํด
"""
proposals = []
for iteration in range(max_iterations):
# ํผ์ฒ ์ ์
new_features = proposal_agent.generate(strategy, dataset)
# ๊ฒ์ฆ
validation_results = validation_agent.evaluate(new_features)
# ์น์ธ๋ ํผ์ฒ๋ง ์ ํ
approved = [f for f in new_features if validation_results[f].passed]
proposals.extend(approved)
if convergence_criteria_met(proposals):
break
return proposals
์ ์ ๋จ๊ณ:
– ๋ฐ์ดํฐ ํจํด ๋ถ์
– ๋๋ฉ์ธ ์ง์ ํ์ฉ
– ๋ค์ํ ๋ณํ ๊ธฐ๋ฒ ์ ์ฉ
– ํผ์ฒ ํ๋ณด ์์ฑ
๊ฒ์ฆ ๋จ๊ณ:
– ํต๊ณ์ ์ ์์ฑ ๊ฒ์ฌ
– ์คํ ๊ฐ๋ฅ์ฑ ํ์ธ
– ์ค๋ณต์ฑ ๊ฒ์ฌ
– ํด์ ๊ฐ๋ฅ์ฑ ํ๊ฐ
Phase 3: Integration (ํตํฉ)
# ์๋ ์ฝ๋
def integration_phase(approved_features, codebase):
"""
์น์ธ๋ ํผ์ฒ๋ฅผ ์ฝ๋๋ฒ ์ด์ค์ ํตํฉ
"""
for feature in approved_features:
# ์ฝ๋ ์์ฑ
code = generate_feature_code(feature)
# ํธํ์ฑ ๊ฒ์ฌ
compatibility_check(code, codebase)
# ํตํฉ
integrate_to_codebase(code)
# ๋ฌธ์ํ
document_feature(feature, rationale)
return integrated_codebase
ํตํฉ ํ๋:
– ํผ์ฒ ๋ณํ ์ฝ๋ ์์ฑ
– ๊ธฐ์กด ํ์ดํ๋ผ์ธ๊ณผ์ ํธํ์ฑ ํ๋ณด
– ๋จ์ ํ
์คํธ ์์ฑ
– ๋ฌธ์ํ ๋ฐ ์ฃผ์ ์ถ๊ฐ
์คํ ๊ฒฐ๊ณผ
๋ฒค์น๋งํฌ ๋ฐ์ดํฐ์
๋
ผ๋ฌธ์์ ์ฌ์ฉ๋ ์ฃผ์ ๋ฐ์ดํฐ์
(Table 1-5 ์ฐธ์กฐ):
– ํ์ค ML ๋ฒค์น๋งํฌ ๋ฐ์ดํฐ์
– ๋ค์ํ ๋๋ฉ์ธ ๋ฐ ๋ณต์ก๋
์ฑ๋ฅ ๊ฐ์
[!success] ์ฃผ์ ์ฑ๊ณผ
์ผ๊ด์ฑ (Consistency):
– ๋์ผ ๋ฐ์ดํฐ์ ๋ํ ๋ฐ๋ณต ์คํ ์ ๋์ ์ฌํ์ฑ
– ๊ธฐ์กด AutoML ๋๋น ๋ณ๋์ฑ ๊ฐ์ํ์ง (Quality):
– ์์ฑ๋ ํผ์ฒ์ ์์ธก ์ฑ๋ฅ ํฅ์
– ๋ ํด์ ๊ฐ๋ฅํ ํผ์ฒ ์์ฑ์ ๋ขฐ์ฑ (Reliability):
– ์์ธก ๊ฐ๋ฅํ ๋์
– ๊ฒ์ฆ ๋จ๊ณ๋ฅผ ํตํ ์ค๋ฅ ๊ฐ์
๋น๊ต ๋ถ์
| ๋ฉํธ๋ฆญ | ๊ธฐ์กด AutoML | Constrained-Topology | ๊ฐ์ ์จ |
|---|---|---|---|
| ์ฌํ์ฑ | ๋ฎ์ | ๋์ | โ |
| ํด์๊ฐ๋ฅ์ฑ | ๋ฎ์ | ๋์ | โ |
| ํผ์ฒ ํ์ง | ์ค๊ฐ | ๋์ | โ |
| ๊ณ์ฐ ์๊ฐ | ๋น ๋ฆ | ์ค๊ฐ | โ |
๊ฐ์ ๋ฐ ํ๊ณ์
๊ฐ์
[!tip] ์ฃผ์ ์ฅ์
1. ํด์๊ฐ๋ฅ์ฑ: ๊ฐ ํผ์ฒ๊ฐ ์ ์์ฑ๋์๋์ง ์ถ์ ๊ฐ๋ฅ
2. ์ ๋ขฐ์ฑ: ๊ตฌ์กฐํ๋ ํ๋ก์ธ์ค๋ก ์์ธก ๊ฐ๋ฅํ ๊ฒฐ๊ณผ
3. ํ์ง ๋ณด์ฅ: ๊ฒ์ฆ ๋จ๊ณ๋ฅผ ํตํ ํผ์ฒ ํ์ง ๊ด๋ฆฌ
4. ํ์ ํจ์จ์ฑ: ์ ํ๋ ํ ํด๋ก์ง๋ก ์ค๋ณต ๋ฐ ์ถฉ๋ ๋ฐฉ์ง
5. ํ๋ก๋์ ์ ํฉ์ฑ: ์ค์ ML ํ์ ์ํฌํ๋ก์ฐ์ ํตํฉ ๊ฐ๋ฅ
ํ๊ณ์
[!warning] ๊ฐ์ ํ์ ์์ญ
1. ํ์ฅ์ฑ (Scalability):
– ๊ณ ์ฐจ์ ๋ฐ์ดํฐ์ (์์ฒ~์๋ง ๊ฐ ํผ์ฒ)์์์ ์ฑ๋ฅ ๋ฏธ๊ฒ์ฆ
– ๋๊ท๋ชจ ๋ฐ์ดํฐ์์์ ๊ณ์ฐ ๋ถ๋ด
- ๊ณ์ฐ ์ค๋ฒํค๋ (Computational Overhead):
- Planning ๋จ๊ณ์ ์ถ๊ฐ ๊ณ์ฐ ๋น์ฉ
- ๊ธฐ์กด AutoML ๋๋น ์คํ ์๊ฐ ์ฆ๊ฐ
- ๋๋ฉ์ธ ํนํ (Domain Specificity):
- ํน์ ๋๋ฉ์ธ์ ๋ณต์กํ ํผ์ฒ ์์ง๋์ด๋ง ํ์คํฌ์ ๋ํ ์ถ๊ฐ ์ฐ๊ตฌ ํ์
- ๋๋ฉ์ธ ์ง์ ํตํฉ ๋ฐฉ๋ฒ๋ก ๊ฐ์ ์ฌ์ง
- ์ ์ฝ ํจํด (Constraint Patterns):
- ๋ค์ํ ๋ฌธ์ ์ ํ์ ๋ง๋ ์ต์ ํ ํด๋ก์ง ํจํด ํ์ ํ์
์ค๋ฌด ์ ์ฉ ํฌ์ธํธ
1. ํ๋ก๋์ ํ๊ฒฝ ๋์
[!example] ์ค๋ฌด ์๋๋ฆฌ์ค
๊ธฐ์กด ๋ฌธ์ :
– AutoML์ด ๋งค๋ฒ ๋ค๋ฅธ ํผ์ฒ๋ฅผ ์์ฑํด ์ฌํ์ต ์ ์ผ๊ด์ฑ ๋ถ์กฑ
– ์์ฑ๋ ํผ์ฒ๋ฅผ ์ดํดํ์ง ๋ชปํด ๋๋ฒ๊น ์ด๋ ค์์ ์ฉ ๋ฐฉ๋ฒ:
– Constrained-Topology ํ๋ ์์ํฌ๋ก ์ผ๊ด๋ ํผ์ฒ ์์ฑ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ
– Planning ๋จ๊ณ์์ ๋น์ฆ๋์ค ์ ์ฝ ์กฐ๊ฑด ๋ช ์
– Validation ๋จ๊ณ์์ ๋๋ฉ์ธ ๊ท์น ๊ฒ์ฆ
2. ํ ์ํฌํ๋ก์ฐ ํตํฉ
ํตํฉ ์ ๋ต:
# ์ค๋ฌด ์ ์ฉ ์์
class FeatureEngineeringPipeline:
"""
ํ์ ๊ธฐ์กด ML ํ์ดํ๋ผ์ธ์ ํตํฉ
"""
def __init__(self, team_codebase, domain_rules):
self.planning_agent = PlanningAgent(domain_rules)
self.proposal_agent = ProposalAgent(team_codebase)
self.validation_agent = ValidationAgent(domain_rules)
self.integration_agent = IntegrationAgent(team_codebase)
def generate_features(self, dataset, task):
# ํ์ ๊ธฐ์ค์ ๋ง์ถ ํผ์ฒ ์์ฑ
strategy = self.planning_agent.plan(dataset, task)
proposals = self.proposal_agent.propose(strategy)
validated = self.validation_agent.validate(proposals)
features = self.integration_agent.integrate(validated)
# ๋ฌธ์ํ ๋ฐ ๋ฆฌ๋ทฐ๋ฅผ ์ํ ์ถ๋ ฅ
self.generate_documentation(features)
return features
3. ์ ๋ขฐ์ฑ ํ๋ณด
์ค๋ฌด ์ฒดํฌ๋ฆฌ์คํธ:
- [ ] Planning ๋จ๊ณ์์ ๋น์ฆ๋์ค ๋ชฉํ ๋ช ํํ ์ ์
- [ ] Validation ๋จ๊ณ์์ ๋๋ฉ์ธ ์ ๋ฌธ๊ฐ์ ๊ท์น ์ ์ฉ
- [ ] ์์ฑ๋ ํผ์ฒ์ ํด์ ๋ฌธ์ ์๋ ์์ฑ
- [ ] A/B ํ ์คํธ๋ก ๊ธฐ์กด ํผ์ฒ ๋๋น ์ฑ๋ฅ ๊ฒ์ฆ
- [ ] ๋ชจ๋ํฐ๋ง ์์คํ ์ผ๋ก ํ๋ก๋์ ์ฑ๋ฅ ์ถ์
4. ์ ์ง์ ๋์ ์ ๋ต
[!note] ๋จ๊ณ๋ณ ๋์
Phase 1: ํ์ผ๋ฟ ํ๋ก์ ํธ
– ์์ ๊ท๋ชจ ๋ฐ์ดํฐ์ ์ผ๋ก ๊ฒ์ฆ
– ๊ธฐ์กด ์๋ ํผ์ฒ ์์ง๋์ด๋ง๊ณผ ๋น๊ตPhase 2: ํ์ด๋ธ๋ฆฌ๋ ์ ๊ทผ
– ์๋ ์์ฑ + ์ฌ๋์ ๊ฒํ
– ์ ์ง์ ์ผ๋ก ์๋ํ ๋น์จ ์ฆ๊ฐPhase 3: ์์ ์๋ํ
– ๋ชจ๋ํฐ๋ง ํ์ ํ๋ก๋์ ๋ฐฐํฌ
– ์ง์์ ์ธ ๊ฐ์ ๋ฐ ์ต์ ํ
5. ์ดํด๊ด๊ณ์ ์ค๋
์ค๋ ํฌ์ธํธ:
- ๊ฒฝ์์ง:
- ์ผ๊ด์ฑ ์๋ ํผ์ฒ๋ก ๋ชจ๋ธ ์ฑ๋ฅ ์์ ํ
- ๋ฐ์ดํฐ ์ฌ์ด์ธํฐ์คํธ ์์ฐ์ฑ ํฅ์
- ๋ฐ์ดํฐ ์ฌ์ด์ธํฐ์คํธ:
- ๋ฐ๋ณต ์์ ์๋ํ๋ก ์ฐฝ์์ ์์ ์ ์ง์ค
- ํผ์ฒ ์์ฑ ์ด์ ๋ฅผ ์ดํดํ ์ ์์ด ๋๋ฒ๊น ์ฉ์ด
- ML ์์ง๋์ด:
- ํ๋ก๋์ ๋ฐฐํฌ ์ ์์ธก ๊ฐ๋ฅํ ๋์
- ๊ธฐ์กด ํ์ดํ๋ผ์ธ๊ณผ์ ๋งค๋๋ฌ์ด ํตํฉ
๊ด๋ จ ๊ฐ๋ ๋ฐ ๋ ธํธ
๊ด๋ จ ๊ธฐ์
- AutoML ํ๋ ์์ํฌ: Auto-sklearn, H2O AutoML, TPOT
- LLM ์ฝ๋ฉ ์์ด์ ํธ: GitHub Copilot, Devin, CodeLlama
- Multi-Agent Systems: ReAct, AutoGPT, MetaGPT
References
- ์๋ ผ๋ฌธ: Towards Reliable ML Feature Engineering via Planning in Constrained-Topology of LLM Agents
- PDF: arXiv PDF
- ๊ด๋ จ ์ฐ๊ตฌ:
- AutoML ์์คํ ์ค๊ณ
- LLM Agent ์ํคํ ์ฒ
- Feature Engineering ๋ฐฉ๋ฒ๋ก
๋ฉ๋ชจ ๋ฐ ์ธ์ฌ์ดํธ
[!tip] ๊ฐ์ธ์ ์ธ์ฌ์ดํธ
– ์ค๋ฌด ์ ์ฉ ๊ฐ๋ฅ์ฑ: Planning ๋จ๊ณ์์ ๋๋ฉ์ธ ์ง์์ ์ฒด๊ณ์ ์ผ๋ก ํตํฉํ๋ ๋ฐฉ๋ฒ์ด ์ธ์์
– ์ํคํ ์ฒ ์ค๊ณ: ์ ํ๋ ํ ํด๋ก์ง ๊ฐ๋ ์ ๋ค๋ฅธ Multi-Agent ์์คํ ์๋ ์ ์ฉ ๊ฐ๋ฅ
– ํฅํ ์ฐ๊ตฌ ๋ฐฉํฅ: ๋๋ฉ์ธ๋ณ ์ต์ ํ ํด๋ก์ง ํจํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ตฌ์ถ ํ์[!example] ์ ์ฉ ์์ด๋์ด
– ํ์ฌ์ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ Validation Agent ์ถ๊ฐํ์ฌ ํผ์ฒ ํ์ง ๊ด๋ฆฌ
– Planning Agent์ ๋น์ฆ๋์ค ์ ์ฝ ์กฐ๊ฑด (๊ท์ , ์ค๋ฆฌ) ํตํฉ
– ๊ธฐ์กด ํผ์ฒ ์์ง๋์ด๋ง ์ฝ๋๋ฅผ ํ์ต ๋ฐ์ดํฐ๋ก ํ์ฉ