본문 바로가기
C.W.K.
Stream
Lesson 02 of 04 · published

두 개의 판단

~12 min · two-judgments, fitness-for-purpose, human-in-loop, risk

Level 0Empty Shelf
0 XP0/35 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"같은 문장이 나한텐 완벽히 쓸모 있고 그걸 인용하는 기계한텐 적극적으로 위험할 수 있어."

transcript 하나, 아주 다른 두 운명

진짜로 결함이 든 transcript 를 하나 잡아 보자. model 이 조용한 구간에 상투구를 hallucinate 했고, 이름도 한 번 잘못 들었어. 이제 그 똑같은 텍스트가 서로 다른 소비자 둘을 만나는 걸 봐.

  • Recall 검색. 어떤 구절을 검색하고, hit 을 받고, 그 타임스탬프의 영상으로 눌러 들어가. hallucinate 된 줄? 네가 검색할 만한 말이랑 하나도 안 맞으니까 볼 일이 없어. 잘못 들은 이름? 영상을 열고 진짜 단어를 듣고 넘어가면 그만이고. 결함이 무해한 거야. 소스가 클릭 한 번 거리에 있고, 쓰는 그 자리에서 사람이 검증하니까.
  • 지식 corpus. 같은 텍스트가 검색돼서 하류에서 사실로 인용돼. 아무도 영상을 안 열어 보고. 잘못 들은 그 이름이 이제 아빠가 한 적도 없는 말에 대한, 자신만만하고 출처까지 있어 보이는 주장이 돼. 결함이 위험해지는 거야. 검증 loop 이 없으니까. 여기선 텍스트가 증거거든.

같은 바이트, 정반대 평결. 이건 풀어야 할 모순이 아니라 문제의 실제 구조야.

적합성은 데이터의 속성이 아냐

이 퀘스트 전체에서 가져갈 만한 아이디어가 여기 있어. '이 데이터 좋아?' 는 제대로 된 질문이 아냐. 적합성은 데이터만의 속성이 아니라 (데이터, 소비자, 검증 loop) 세 개가 함께 만드는 속성이거든. 셋 중 하나만 바꿔도 바이트는 그대로인데 답이 달라져. 잡음이 섞인 transcript 는 소스를 확인하는 소비자한테는 적합하고, 눈 감고 인용하는 소비자한테는 부적합해. 그러니 데이터에 '품질: 좋음' 플래그를 하나 찍어두는 건 범주 오류야. 누가 묻는지, 뭘로 확인하는지를 대지 않으면 답할 수 없는 질문에 답해버리는 거니까.

그래서 Recall 은 임계값 하나를 튜닝하는 대신 두 판단을 구조적으로 갈라놨어. 검색 쪽 판단은 관대해도 돼. 사람이 loop 을 닫아주니까. corpus 쪽 판단은 엄격해야 하고. 하류에서 loop 을 닫아주는 게 아무것도 없으니까. 구조 품질 점수(트랙 3) 는 둘 다에 정보를 주지만 둘 중 어느 것도 결정하지 않아. 그건 텍스트의 속성이고, 결정은 사용의 속성이니까.

검증 loop 을 찾고, 그다음 기준을 정해

여기서 나오는 실전 수는, 데이터가 네 손을 떠나는 경계마다 던질 질문 하나야. 누가, 어디서 검증하지? 쓰는 순간에 사람이 소스를 본다면 잡음은 견딜 수 있어. loop 이 잡아주니까. 반대로 그 데이터를 확정된 사실로 다루는 쪽이 소비할 거라면 loop 이 사라진 거고, 그만큼 네 기준이 올라가서 메워야 해. 기준을 정하는 건 데이터가 얼마나 깨끗해 보이느냐가 아니라, 그 하류에 검증이 얼마나 있느냐야. Recall 의 격리 장치 전체가 이 원리를 기계로 옮긴 것뿐이고. 검색은 자기 loop 을 유지하니까 관대하게 남고, corpus 에는 loop 이 없으니까 승인이 기본값 아니오이고 그렇다고 말할 수 있는 건 사람뿐인 거야.

Code

release 하나, 소비자 둘, 다른 기준 둘·python
# 같은 release 객체를, 두 번, 다르게 판단.

def usable_for_search(release) -> bool:
    # 사람이 loop 을 닫음: hit -> 영상 열기 -> 검증.
    # 잡음은 견딜 만함; 소스가 클릭 하나 거리.
    return release.has_segments()          # 일부러 관대하게

def eligible_for_corpus(release) -> bool:
    # 하류에 loop 없음: 텍스트가 곧 증거, 사실로 인용됨.
    # 그래서: 기본값 거부, 사람 승인만.
    return (release.status in ('reviewed', 'published')
            and release.corpus_eligibility == 'approved')

# quality_score 는 둘 다에 정보를 주고 둘 다를 결정 안 함 --
# 그건 텍스트의 속성이고; 적합성은 사용의 속성이다.

External links

Exercise

네 일에서 소비자가 둘 이상인 데이터셋이나 출력을 하나 잡아 봐. 사람이 눈으로도 보고 알림도 거는 로그, 훑어보기도 하고 집계도 하는 스크랩, 유저에게 보이면서 저장도 되는 model 출력 같은 거. 소비자마다 검증 loop 을 대봐. 누가, 어느 순간에 확인해? 그다음 소비자별로 기준을 따로 정해. 'validated' 플래그 하나가 loop 이 전혀 다른 두 소비자를 동시에 섬기고 있는 데가 있으면 적어보고.
Hint
냄새나는 건 문 두 개를 품질 gate 하나가 지키고 있는 상황이야. 소비자마다 물어봐. 이 record 가 미묘하게 틀리면 누가 언제 알아채? 답이 '사람이, 즉시, 소스를 앞에 두고' 인 쪽에서는 관대해도 돼. '아무도 안 알아채고 그냥 쓰인다' 인 쪽에서는, 데이터가 똑같더라도 그 소비자한테는 더 엄격한 기본값 거부 gate 가 따로 있어야 하고.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.