피드백 루프를 소유하는 법: 현장 신호가 모델 개선이 되기까지
앞선 글에서 데이터 자체가 아니라 데이터를 만드는 루프가 해자라고 정리했습니다. 그 글의 마지막 질문은 이거였습니다. "우리 제품이 고객의 어떤 판단 순간에 함께 있는가, 그리고 그 순간이 다음 버전을 실제로 좋게 만들고 있는가."
이번 글은 그 질문의 공학 편입니다. 루프를 실제로 짓는 방법을, 공개된 스타트업 구현 사례를 근거로 단계별로 풀어보겠습니다. 추상적인 플라이휠 그림이 아니라, 어떤 신호를 어떻게 로깅하고, 그걸 어떤 학습 방법에 넣으며, 무엇이 이 루프를 망가뜨리는지까지 다룹니다.
루프의 해부도: 여섯 단계가 전부 있어야 돕니다
먼저 전체 구조입니다. 현장 피드백 루프는 낭만적인 순환 화살표가 아니라, 여섯 개의 구체적인 공정입니다. 하나라도 빠지면 돌지 않습니다.
이제 단계별로 들어갑니다.
1단계. 신호 설계: 사용자의 다음 행동이 곧 라벨입니다
가장 흔한 착각이 "피드백 = 썸업 버튼"입니다. 명시적 평가 버튼은 누르는 사람이 적고(대개 세션의 한 자릿수 퍼센트), 극단적 경험을 한 사람만 눌러 편향됩니다. 실전에서 루프를 돌리는 신호는 대부분 사용자가 어차피 하는 다음 행동 속에 있습니다.
| 신호 유형 | 예시 | 강도 | 비용 |
|---|---|---|---|
| 명시적 평가 | 썸업·별점·설문 | 약함(희소·편향) | 사용자 부담 |
| 행동 신호 | 수락/거절, 재생성, 복사, 이탈 | 중간(밀도 높음) | 공짜 |
| 수정 신호 | 초안과 최종본의 편집 거리 | 강함(정답 포함) | 공짜 |
| 결과 검증 | 테스트 통과, 빌드 성공, PR 머지, 사건 해결 | 가장 강함 | 검증기 구축 필요 |
위로 갈수록 모으기 쉽고, 아래로 갈수록 진실에 가깝습니다. 설계 원칙은 세 가지입니다.
첫째, 거절도 데이터입니다. 수락만 모으면 "무엇이 좋은가"만 배우고 "무엇을 보여주지 말아야 하는가"를 못 배웁니다. 뒤에서 볼 커서 사례의 핵심이 바로 이겁니다.
둘째, 수정본은 공짜 정답지입니다. 번역기의 후편집, 의료 기록 초안에 대한 의사의 수정, 코드 제안에 대한 개발자의 손질. 초안과 최종본의 차이(편집 거리)는 "모델이 무엇을 틀렸고 정답이 무엇인지"를 동시에 담은, 라벨러 없이 생기는 지도학습 데이터입니다.
셋째, 가능하다면 결과 검증기를 먼저 지으십시오. 코드는 테스트가, 예약은 확정 여부가, 청구는 승인 여부가 검증기입니다. 채점기를 먼저 만들고 과제를 내는 이 "검증기 우선" 설계는 업스테이지 오피스버스와 키미 K3의 강화학습 환경이 공통으로 채택한, 지금 프런티어 학습 데이터 공장의 표준입니다. 제품 회사에게 검증기란 결국 고객의 업무가 성공했는지를 기계가 판정할 수 있게 만드는 일입니다.
2단계. 귀속: 로깅이 안 되면 전부 무용지물입니다
신호를 잡아도 "어느 모델의, 어느 출력이, 어떤 문맥에서" 만든 결과인지 연결이 안 되면 학습에 못 씁니다. 실무 체크리스트는 짧습니다.
- 트레이스 ID: 요청부터 사용자 반응까지 한 줄로 잇는 식별자. 세션 단위가 아니라 출력 단위로 겁니다.
- 버전 스탬프: 모델 체크포인트, 프롬프트 버전, 검색 인덱스 버전을 모든 출력에 기록합니다. 이게 없으면 나중에 "개선이 모델 덕인지 프롬프트 덕인지"를 영영 못 가립니다.
- 문맥 스냅샷: 그 출력이 생성될 때 모델이 본 입력을 재현 가능하게 저장합니다(개인정보 마스킹 후). 실패 사례를 학습 데이터로 되살리는 유일한 방법입니다.
- 크레딧 배분: 에이전트처럼 여러 스텝이 이어지면, 최종 결과를 어느 스텝에 귀속할지 규칙이 필요합니다. 처음엔 세션 전체에 같은 보상을 주는 뭉툭한 방식으로 시작해도 됩니다. 없는 것보다 낫습니다.
- 경계 설계: 어떤 테넌트의 데이터를 어떤 범위의 학습에 쓸 수 있는지 계약·동의 단계에서 확정합니다. 나중에 바꾸는 건 몇 배 비쌉니다.
3단계. 신호를 학습으로: 변환 규칙은 이미 표준화됐습니다
모인 신호를 모델 개선으로 바꾸는 경로는 이제 꽤 정형화돼 있습니다.
| 갖고 있는 신호 | 학습 방법 | 비고 |
|---|---|---|
| 수정된 최종본 | SFT(지도 미세조정) | 가장 단순, 가장 확실한 출발점 |
| 수락 vs 거절 쌍 | DPO·KTO(선호 최적화) | 쌍이 아니어도 KTO는 단건 신호로 가능 |
| 대량의 쌍대 비교 | 보상 모델 학습 → RLHF | 미드저니식 이미지 순위 평가가 전형 |
| 실시간 스칼라 결과 | 온라인 RL(정책 경사) | 아래 커서 사례. 가장 공격적, 가장 신선 |
| 검증기 통과 여부 | 검증 가능 보상 RL | 코드·수학·예약처럼 채점 가능한 영역 |
성숙한 팀의 순서는 대개 이렇습니다. 실패 로그로 골드 평가셋부터 만들고(학습보다 평가가 먼저입니다), 수정본으로 SFT 배치를 돌리고, 신호가 쌓이면 선호 최적화로, 트래픽이 충분하면 온라인 RL로 갑니다. 이 네 단계를 하나씩 실무 수준으로 풀면 다음과 같습니다.
3-1. 골드 평가셋: 실패 로그를 시험지로 바꿉니다
학습보다 평가가 먼저인 이유는 단순합니다. 잣대가 없으면 미세조정 후 "좋아진 것 같은" 착각과 실제 개선을 구분할 방법이 없고, 한 곳을 고치며 다른 곳을 망가뜨려도 모릅니다.
어디서 캐는가. 실패의 흔적이 남은 로그부터 캡니다. 재생성 직전의 출력, 낮은 평가를 받은 답, 사용자가 이탈해버린 세션, 사람 상담원에게 넘어간(에스컬레이션) 건, 수정량이 유난히 컸던 초안. 이것들이 전부 "모델이 틀린 지점"의 후보입니다.
만드는 순서. 첫째, 실패 후보를 모아 유형별로 군집화합니다. 같은 실패 10건보다 다른 실패 10건이 훨씬 값집니다. 둘째, 건별로 "무엇이 정답인가"를 정의합니다. 정답이 하나로 떨어지면 기대 출력을 적고, 아니면 채점 기준표(루브릭)를 적습니다. 셋째, 자동 채점기를 붙입니다. 형식 검사·필수 요소 포함 여부·테스트 통과 같은 결정적 검사가 1순위이고, 그걸로 안 되는 항목만 모델 심판(LLM-as-judge)을 쓰되, 사람 라벨 100~200건과의 일치율로 심판을 먼저 교정합니다. 넷째, 격리합니다. 평가셋이 학습 데이터에 한 조각이라도 섞이면 시험지 유출입니다. 별도 저장소에 버전 관리하고, 학습 배치와의 중복을 해시로 상시 검사합니다.
규모와 운영. 시작은 50~200건이면 충분합니다. 크기보다 실패 유형의 커버리지가 중요합니다. 이후 모델이든 프롬프트든 무엇이 바뀌든 전체를 재실행하는 회귀 게이트로 운영하고, 유형별(슬라이스) 점수를 따로 추적해 어느 능력이 후퇴했는지 즉시 보이게 합니다. 새 실패 유형이 현장에서 발견될 때마다 평가셋에 추가하는 것까지가 운영입니다.
3-2. 수정본 SFT: 공짜 정답지로 첫 학습을 돌립니다
평가 게이트가 서면 그다음이 지도 미세조정입니다. 원료는 1단계에서 말한 수정 신호, 즉 초안과 사용자의 최종본입니다.
선별이 절반입니다. 모든 수정본을 쓰면 안 됩니다. 조건 두 개를 걸어 거릅니다. 편집 거리가 의미 있게 클 것(오타 교정 수준은 잡음), 그리고 수정 후 결과가 실제로 성공했을 것(제출·머지·승인 등 결과 신호와 결합). 이 둘을 통과한 것만 (문맥 스냅샷, 최종본)의 학습 쌍으로 만듭니다. 개인정보를 걷어내고, 근사 중복을 제거하고, 특정 사용자나 테넌트가 과대표집되지 않게 상한을 둡니다.
망각을 막는 배합. 수정본만으로 학습하면 그 좁은 분포에 과적합돼 일반 능력이 퇴행합니다. 그래서 신규 수정 데이터에 일반 지시 데이터를 섞어 돌립니다(경험칙으로 신규 6~8에 일반 2~4 비율). 에폭은 1~2회로 짧게, 학습률은 낮게가 기본값입니다. 갱신 주기가 잦고 트래픽이 작다면 전체 미세조정 대신 LoRA 같은 어댑터 방식이 운영상 다루기 쉽습니다.
게이트. 배포 전에 3-1의 골드셋을 통과해야 하고, 이번 배치에서 새로 발견된 실패 유형은 평가셋에 편입합니다. 이 사이클이 주 단위 혹은 격주 단위로 돌기 시작하면, 루프의 최소 형태가 완성된 것입니다.
3-3. 선호 최적화: 무엇이 더 나은가를 쌍으로 가르칩니다
SFT는 "정답을 따라 하기"까지만 가르칩니다. 신호가 더 쌓이면, 같은 상황에서 무엇이 더 나은지를 직접 가르치는 선호 최적화로 넘어갑니다.
쌍을 만드는 네 경로. 첫째, 거절 후 재생성해 수락된 시퀀스입니다. 같은 문맥에서 거절본이 패자, 수락본이 승자인 자연 발생 쌍입니다. 둘째, 두 후보를 나란히 보여주고 고르게 하는 A/B 노출입니다. 셋째, 전문가의 블라인드 비교입니다(아래 하비 사례의 방식). 넷째, 수락된 출력과 모델이 그 자리에서 만들 수 있었던 다른 후보 샘플의 대조입니다.
방법 선택. 쌍이 있으면 DPO가 기본기입니다. 별도 보상 모델 없이 (승자, 패자) 쌍으로 바로 학습합니다. 쌍이 아니라 단건 좋아요·싫어요만 있다면 KTO 계열이 그 형태 그대로를 받습니다. 보상 모델을 따로 세우는 정통 RLHF는 쌍이 수만 건 이상 쌓이고 팀이 성숙한 뒤의 선택지입니다.
위생이 성패를 가릅니다. 반드시 같은 문맥에서 나온 쌍만 씁니다. 둘 다 나쁘거나 둘 다 좋은 박빙 쌍은 잡음이니 버립니다. 그리고 가장 흔한 함정이 길이입니다. 승자가 단지 길어서 이긴 쌍을 그대로 학습하면 모델은 장황함을 배웁니다(뒤의 보상 해킹 절). 길이를 보정하거나 길이 차이가 큰 쌍을 제외하는 규칙이 필요합니다. DPO의 베타 하이퍼파라미터는 기준 모델에서 얼마나 멀리 가도 되는지의 고삐라고 이해하면 됩니다. 작을수록 공격적, 클수록 보수적입니다.
게이트. 골드셋 회귀에 더해, 새 모델과 이전 모델을 신규 트래픽 표본에서 맞붙인 승률을 봅니다. 규모 경험칙은 수천에서 수만 쌍입니다.
3-4. 온라인 RL: 루프 자체를 학습 알고리즘으로 만듭니다
마지막 단계는 배치 학습을 버리고, 배포된 모델이 방금 만든 상호작용으로 모델을 상시 갱신하는 것입니다. 전제가 셋입니다. 체크포인트마다 통계적으로 의미 있는 신호가 모일 만큼의 트래픽, 시간 단위로 배포와 데이터 회수가 도는 인프라, 그리고 행동을 스칼라 보상으로 바꾸는 규칙(커서의 +0.75, −0.25, 0이 정확히 이것입니다).
방법. 정책 경사 계열을 씁니다. 핵심 규율은 온폴리시, 즉 지금 정책이 만든 데이터로 지금 정책을 고치는 것입니다. 현실에서는 배포와 회수 사이의 지연 때문에 데이터가 조금씩 낡는데, 토큰 단위 신뢰 영역이나 중요도 보정으로 그 낡음을 흡수합니다. 키미 K3의 부분 롤아웃이 같은 계열의 해법입니다.
붕괴 방지. 기준 모델과의 거리 제약(KL 페널티)으로 정책이 이상한 곳으로 튀는 걸 막고, 보상에는 반드시 비용 항을 둡니다(침묵이면 0처럼, 아무 행동이나 하는 것보다 안 하는 게 나은 선택지를 남겨두는 것). 길이·형식 익스플로잇을 지표로 상시 감시합니다.
배포 안전장치. 새 체크포인트는 전체 트래픽이 아니라 몇 퍼센트의 카나리로 먼저 나가고, 핵심 지표가 떨어지면 자동 롤백되며, 어떤 체크포인트도 골드셋 통과 없이는 승격되지 않습니다. 커서의 1.5~2시간 루프는 이 장치들이 전부 자동화됐을 때 도달하는 속도입니다.
이제 이 뼈대가 실제로 어떻게 구현됐는지, 공개된 사례 셋을 보겠습니다.
사례 1. 테슬라: 배포면을 소유하면 불일치 신호가 공짜로 생깁니다
이 패턴의 원조는 테슬라의 "데이터 엔진"입니다(카파시 전 AI 총괄의 공개 발표 기준). 구조가 교과서적입니다.
핵심 장치는 섀도 모드입니다. 사람이 직접 운전하는 동안에도 자율주행 모델은 뒤에서 조용히 "나라면 이렇게 했다"를 계속 예측합니다. 그리고 모델의 예측과 사람의 실제 행동이 어긋나는 순간이 잠재적 실패 사례로 자동 기록됩니다. 사람의 운전 자체가 정답 라벨이므로, 라벨링 비용 없이 "모델이 틀리는 지점"만 골라 수집되는 셈입니다.
여기에 트리거를 더합니다. 광고판에 그려진 정지 표지판, 트래픽콘을 실은 트럭처럼 모델이 헷갈리는 희귀 상황을 감지하는 조건을 200개 이상 만들어 두고, 전체 차량에서 딱 그 장면들만 수집합니다. 수집된 클립은 실서비스에는 못 쓸 만큼 무거운 오프라인 모델로 자동 라벨링한 뒤 사람이 다듬고, 재학습으로 들어갑니다.
여기서 챙길 교훈은 규모가 아니라 구조입니다. 배포면(제품이 실제로 돌아가는 자리)을 소유하면, "모델 예측 대 현실"의 불일치가 상시로, 공짜로, 실패 사례만 골라서 생깁니다. 크롤링으로는 절대 안 생기는 데이터입니다.
사례 2. 커서: 수락·거절을 보상 수식으로 바꾼 온라인 RL
코드 편집기 커서(Cursor)의 탭 자동완성은, 암묵 행동 신호를 온라인 강화학습으로 바꾼 가장 구체적인 공개 사례입니다(회사 기술 블로그 발표 기준).
구조를 뜯어보면 이렇습니다.
신호: 탭 제안에 대한 개발자의 수락과 거절. 버튼을 누를 필요가 없는, 코딩이라는 업무 자체에 내장된 행동 신호입니다.
보상 설계: 수락 +0.75, 거절 −0.25, 침묵 0. 이 비대칭이 핵심입니다. 기대보상이 양수가 되려면 수락 확률이 25퍼센트를 넘어야 하므로, 모델은 자신 없는 제안은 안 하는 것까지 함께 배웁니다. 나쁜 제안을 사후 필터로 거르는 게 아니라, 애초에 만들지 않도록 정책 자체를 바꾸는 것입니다. 이전 세대의 접근(깃허브 코파일럿이 썼던, 수작업 특징 위의 별도 필터 모델)과 대비되는 지점입니다.
학습: 정책 경사(policy gradient) 방식의 온라인 RL입니다. 온라인이 중요한 이유는 신선도입니다. 지금 배포된 정책이 만든 데이터로 지금 정책을 고쳐야 학습이 안정적인데, 커서는 새 체크포인트를 배포하고 그 상호작용 데이터를 회수하기까지 1.5~2시간이 걸리는 인프라를 만들어 하루에도 여러 번 모델을 갱신합니다.
결과: 제안 횟수는 21퍼센트 줄고 수락률은 28퍼센트 올랐습니다(회사 발표 기준). 사용자가 매일 쓰는 제품의 품질 지표가, 사용자의 행동만으로, 사람 라벨러 없이 계속 오르는 구조입니다. 그리고 이 루프는 커서의 배포면(편집기)을 가진 회사만 돌릴 수 있습니다.
사례 3. 하비: 전문가 판단을 평가 게이트로 만든 규제 버티컬
법률 AI 하비(Harvey)는 신호의 밀도 대신 신호의 질로 승부하는 반대편 사례입니다(오픈AI·하비 공개 사례집 기준).
법률에는 "수락률" 같은 고밀도 행동 신호가 약합니다. 대신 하비는 변호사의 판단 자체를 파이프라인에 심었습니다. 오픈AI와 판례 특화 커스텀 모델을 만들면서, 변호사들이 기반 모델과 커스텀 모델의 출력을 나란히 놓고 고르는 블라인드 선호 평가를 상시 운영했고, 그 결과 97퍼센트가 커스텀 모델을 선호했다고 발표했습니다. 이 선호 데이터가 다음 학습의 원료가 됩니다.
환각 관리도 검증기 사고방식입니다. 생성된 답변을 개별 사실 주장 단위로 분해해 각각을 원전과 대조하고, 어긋나면 표시합니다(회사 내부 평가 기준 환각률 약 0.2퍼센트 주장). 여기에 자체 벤치마크(빅로 벤치)를 회귀 게이트로 두고, 새 모델이 들어올 때마다 같은 잣대로 통과 여부를 검사합니다.
챙길 교훈은 이겁니다. 행동 신호가 희소한 고부가 버티컬에서는, 전문가의 비교 판단을 제품 운영의 일부로 만들고, 그 판단을 평가 게이트와 학습 데이터로 이중 활용하는 것이 루프의 형태가 됩니다. 전문가의 시간은 비싸므로, 같은 판단을 두 번 쓰는 설계가 경제성을 만듭니다.
루프를 망가뜨리는 것들: 안전장치가 없으면 루프는 스스로를 속입니다
피드백 루프는 강력한 만큼, 자기 자신을 속이는 고장이 잘 납니다. 실무에서 반드시 막아야 할 네 가지입니다.
보상 해킹. 사람 평가를 보상으로 쓰면 모델은 "더 좋은 답" 대신 "더 좋아 보이는 답"을 배웁니다. 대표 증상이 장황함입니다. 길게 쓰면 점수가 오르는 편향을 막으려고, 키미 K3는 출력 길이가 예산을 넘으면 비교 평가에서 자동 패배시키는 규칙을 넣었습니다. 보상에는 반드시 비용 항이 함께 있어야 합니다.
아첨 드리프트. 수락된 것만 계속 학습하면 모델은 사용자 비위에 수렴합니다. 코드라면 "동작은 하지만 나쁜 패턴"이 수락될 때마다 강화됩니다. 해독제는 행동 신호와 독립적인 결과 검증(테스트·빌드·해결율)을 보상에 섞고, 사람 전문가가 만든 골드셋을 학습에 오염되지 않게 격리해 회귀 검사로 쓰는 것입니다.
분포 이동과 신선도. 어제의 정책이 만든 데이터로 오늘의 정책을 고치면 어긋납니다. 커서가 배포·회수 루프를 2시간 이내로 조인 이유가 이것입니다. 온라인 RL을 못 하는 팀이라면, 최소한 학습 배치에 "언제 어느 버전이 만든 데이터인지"를 남기고 오래된 데이터의 가중치를 낮춰야 합니다.
굿하트의 법칙. 수락률·해결율 같은 대리 지표를 목표로 삼는 순간, 지표는 오르는데 실제 가치는 정체되는 구간이 옵니다. 대리 지표와 별도로, 분기마다 사람 눈으로 실제 산출물을 채점하는 저빈도·고품질 평가를 유지해야 지표의 인플레이션을 잡아냅니다.
성숙도 사다리: 우리 팀은 지금 어디인가
마지막으로, 이 전부를 자가 진단용 사다리로 정리합니다.
앞 글의 세 질문을 이 사다리에 얹으면 진단이 끝납니다. 그 데이터가 다음 버전을 실제로 개선했는가(L2 이상), 개선이 고객이 체감할 수준인가(L3 이상에서 지표로 증명), 고객이 떠나면 정말 품질이 떨어지는가(L4의 온라인 루프에서만 참이 되는 명제).
정리하면 이렇습니다. 피드백 루프를 소유한다는 건 세 가지를 소유한다는 뜻입니다. 사용자의 다음 행동이 일어나는 배포면, 그 행동을 라벨로 바꾸는 계측과 귀속 체계, 그리고 그 라벨을 모델 갱신으로 되돌리는 학습·평가 파이프라인. 테슬라는 차에서, 커서는 편집기에서, 하비는 변호사의 검토 화면에서 이 셋을 쥐었습니다. 셋 중 무엇 하나라도 남의 것이라면, 그 루프는 언제든 남의 해자가 됩니다.
본 글은 각 회사가 공개한 기술 블로그·발표·사례집을 근거로 한 기술 분석이며, 특정 종목에 대한 판단을 담고 있지 않습니다. 커서의 보상 수치·성과와 하비의 선호도·환각률은 각 회사 발표 기준으로 외부 독립 검증 전이며, 테슬라 데이터 엔진 서술은 전 AI 총괄의 공개 발표를 따랐습니다.
주요 출처: Cursor 기술 블로그 「Improving Cursor Tab with online RL」, OpenAI·Harvey 커스텀 모델 사례집 및 하비 평가 방법론 공개 자료, 안드레이 카파시의 테슬라 오토파일럿 공개 발표(CVPR 등), 관련 선행 글(태스크 이코노미·업스테이지 솔라 오픈 2·키미 K3 리뷰).