본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 21. 22:56

나의 기계를 날카롭게 만드는 대화에 축복을

요약

사용자의 수동 수정 사항을 학습 신호로 활용하여 로컬 AI 모델을 지속적으로 개선하는 피드백 루프 구축 방법을 설명합니다. 'isManuallyEdited' 플래그를 통해 레이블링된 데이터를 확보하고 재학습 파이프라인에 연결함으로써 모델의 성능을 실질적으로 향상시킨 사례를 다룹니다.

핵심 포인트

  • isManuallyEdited 플래그를 단순 보호용이 아닌 학습 데이터 신호로 활용
  • 인간의 수정 사항을 레이블이 지정된 학습 예시로 변환
  • 지속적인 피드백 루프를 통한 도메인 특화 모델 최적화
  • 수동 수정 필요율을 40%에서 12%로 대폭 감소시킨 성과

이 글은 How I Designed Invariants for AI-Human Collaboration의 후속 글입니다. 아직 읽지 않으셨다면, 짧게 요약하자면 이렇습니다: 저는 협업형 AI 시스템에 신뢰성을 부여하는 세 가지 규칙을 구축했습니다. 그 규칙 중 하나는 isManuallyEdited라고 불리는 불리언 (boolean) 플래그였습니다. 이 포스트는 그 이후에 일어난 일에 관한 것입니다.

isManuallyEdited가 대화를 통해 나의 로컬 AI를 학습시키는 방법

처음에는 단순한 불리언 (boolean)이었습니다. 데이터베이스의 단일 필드였죠. "사람이 이것을 수정함"이라고 표시하는 마커였습니다.

그 플래그가 바로 isManuallyEdited입니다.

그리고 그것은 제가 완전히 계획하지 않았던 피드백 루프 (feedback loop)의 시작이 되었습니다.

문제: 자신의 실수를 배우지 못하는 AI

처음 로컬 AI 시스템을 구축했을 때, 저는 익숙한 좌절감을 맛보았습니다.

AI는 응답을 생성했습니다. 저는 그것을 수정했습니다. 그러면 AI는 똑같은 실수를 다시 반복했습니다.

기억이 없었습니다. 학습도 없었습니다. 수정 사항과 다음 생성 사이의 연결 고리도 없었습니다.

기계가 멍청했던 것은 데이터가 부족해서가 아니었습니다. 피드백을 받을 메커니즘이 부족했기 때문이었습니다.

해결책: isManuallyEdited를 학습 신호로 취급하기

원래 시스템에서 isManuallyEdited는 인간의 수정 사항이 덮어쓰여지지 않도록 보호했습니다. 플래그가 true로 바뀌면, AI는 해당 행을 다시 건드릴 수 없었습니다.

그것은 지난 포스트의 불변량 (Invariant) 2번인 'override-is-sacred(덮어쓰기 금지)' 규칙이었습니다.

하지만 저는 이 플래그가 제가 사용하지 않고 있던 신호의 노다지 위에 놓여 있다는 것을 깨달았습니다.

모든 isManuallyEdited = true 레코드는 한 쌍입니다: AI가 생성한 것과, 인간이 실제로 이렇게 말해야 한다고 결정한 것. 이것은 레이블이 지정된 학습 예시 (labeled training example)입니다. 그리고 저는 수백 개를 가지고 있었습니다.

그래서 저는 파이프라인 (pipeline)에 한 단계를 더 추가했습니다: 수정한 내용을 저장하고, 재학습을 위해 대기열에 넣는 것입니다.

class AIGeneratedContent:
    content: str
    isManuallyEdited: bool = False
...

변화는 작았습니다. 하지만 그 효과는 작지 않았습니다.

루프 (The loop)

AI가 출력을 생성함
        ↓
인간이 이를 수정함
...

인간은 수정을 통해 말합니다. 모델은 재학습 (Retraining)을 통해 듣습니다. 각각의 편집은 데이터가 됩니다. 이 루프는 정해진 월간 배치 (Monthly batches) 대신 지속적으로 실행됩니다.

루프가 만들어낸 결과물

재학습 파이프라인 (Retraining pipeline)을 추가한 이후 몇 달 동안, 저는 모든 편집 사항을 추적했습니다.

지표 (Metric)이전이후
수동 수정이 필요한 출력물~40%~12%
...

모델은 단순히 평균적으로 개선된 것이 아니라, 제 워크플로 (Workflow)에 실제로 중요한 특정 실수들을 개선했습니다. 왜냐하면 그것들이 바로 제가 수정하고 있었던 실수들이었기 때문입니다.

공개 데이터셋을 이용한 일반적인 미세 조정 (Fine-tuning)으로는 이를 해낼 수 없었을 것입니다. 오직 저만의 데이터로, 저만의 도메인 (Domain)에서 이루어진 저만의 수정만이 가능했습니다.

자신의 시스템에 이를 구현하는 방법

이미 isManuallyEdited 플래그 (또는 이와 유사한 출처 추적 기능)를 가지고 있다면, 이미 목표의 대부분에 도달한 것입니다.

1단계: 모든 수동 개입에 플래그 지정하기

ALTER TABLE ai_outputs ADD COLUMN is_manually_edited BOOLEAN DEFAULT FALSE;
ALTER TABLE ai_outputs ADD COLUMN original_text TEXT;
ALTER TABLE ai_outputs ADD COLUMN edited_text TEXT;

2단계: 전체 편집 이력 저장하기

class EditHistory:
    edits: List[Dict] = []

...

3단계: 재학습 파이프라인 구축하기

def retrain_on_edits():
    edits = get_all_manually_edited_outputs()
    training_data = [
...

4단계: 날카로워진 정도 측정하기

다음 사항들을 추적하세요:

  • 시간에 따른 편집률 (Edit rate, 감소해야 함)
  • 사용자의 수정 노력 (User correction effort, 감소해야 함)
  • 도메인 대비 정확도 벤치마크 (Accuracy benchmarks, 증가해야 함)

이 지표들은 루프가 제대로 작동하고 있는지 알려줍니다. 만약 편집률이 더 이상 떨어지지 않는다면, 파이프라인 어딘가에 문제가 있거나, 모델이 현재의 수정 사항만으로는 배울 수 있는 한계치에 도달한 것입니다.

이것이 아닌 것

지난 포스트에서 그랬던 것처럼, 범위 (Scope)에 대해 솔직해지고 싶습니다.

이것은 RLHF가 아닙니다. 저는 보상 모델 (Reward Model)을 훈련하거나 강화학습 (Reinforcement Learning)을 수행하는 것이 아닙니다. 저는 수정 쌍 (Correction Pairs)을 활용한 지도 미세 조정 (Supervised Fine-tuning)을 수행하고 있습니다. 이것은 더 단순하고, 더 취약하며, 제 규모에 적합합니다.

이것이 프롬프트 엔지니어링 (Prompt Engineering)을 대체하지는 않습니다. 어떤 실수들은 재학습 (Retraining)을 하는 것보다 프롬프트를 개선함으로써 해결하는 것이 더 낫습니다. 저는 두 가지를 모두 수행합니다. 수정 사항에서 패턴이 보일 때, 저는 종종 프롬프트를 먼저 수정하고 그 다음에 재학습을 진행합니다.

이것은 소규모 규모에서 작동합니다. 수백 개의 라벨링된 수정 사항, 로컬 모델, 단일 도메인 규모 말입니다. 수백만 명의 사용자가 있는 프로덕션 규모에서는 더 많은 인프라와 더 세심한 데이터 큐레이션 (Data Curation)이 필요할 것입니다. 하지만 원칙은 동일하게 적용됩니다.

AI는 피드백을 의식하지 못합니다. AI는 자신이 교정되고 있다는 것을 "알지" 못합니다. 학습은 이해가 아니라 그래디언트 업데이트 (Gradient Updates)를 통해 일어납니다. 제가 이 점을 언급하는 이유는 이 루프를 의인화 (Anthropomorphizing)하는 오류에 빠지기 쉽기 때문입니다.

시간의 시험

isManuallyEdited 플래그는 2026년 4월 27일에 처음 작성되었습니다.

그것은 여전히 변하지 않았습니다.

변한 것은 그것을 활용하는 저의 방식입니다. 플래그는 항상 그 자리에 있었습니다. 재학습 파이프라인 (Retraining Pipeline)은 제가 사용하지 않고 있는 학습 데이터 위에 앉아 있다는 사실을 깨달은 후에 나중에 추가한 것입니다.

만약 여러분이 이미 시스템에서 수동 편집 (Manual Edits)을 추적하고 있다면, 여러분도 같은 상황에 처해 있을 수 있습니다. 신호는 이미 존재합니다. 문제는 여러분이 그 신호에 귀를 기울이고 있느냐 하는 것입니다.

Kiprono Ngetich는 AI 지원 협업 도구를 구축합니다. 그는 데이터 출처 (Data Provenance)와 피드백 루프 (Feedback Loops)에 대해 깊이 고민합니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0