사람의 '물컹함'을 기계에 가르치기
이 프로젝트의 핵심 질문
4부의 중심이자 이 프로젝트 전체의 기술적 핵심이 이 편이다.
질문은 하나다. 사람이 “여기 물컹하다”고 느낀 그 순간, 가속도 데이터에는 무엇이 있었는가.
이 질문에 답할 수 있으면 2단계가 성립한다. 답하지 못하면 이 프로젝트는 1단계 — 사람의 신고를 모으고 집계하는 서비스 — 에 머문다.
학습의 형태
기계학습의 형태로 옮기면 이렇다.
입력 — 어떤 구간의 신호 특징들. 3부에서 만든 것들이다. 대역별 크기, 봉우리 위치, 잦아드는 속도, 기준선과의 차이.
출력 — 사람이 그 구간을 이상하다고 표시했을 가능성.
학습 데이터 — 2부에서 모은 (신호, 신고 여부) 짝.
구조 자체는 평범한 분류 문제다. 그런데 실제로 해보면 걸리는 것이 많다.
문제 1: 이름표가 틀린다
학습 데이터의 “정답”이 사람의 판단이다. 그리고 사람은 틀린다.
기계학습에서 이건 잡음 있는 이름표 문제라 부른다. 알려진 대응책이 있다.
신뢰 가중 학습. 13편에서 만든 신뢰 점수를 학습에 반영한다. 신뢰가 높은 사용자의 신고에 더 큰 무게를 준다.
합의된 것만 쓴다. 여러 사람이 겹쳐 표시한 지점만 학습에 쓴다. 데이터 양은 크게 줄지만 품질이 올라간다.
모델이 이상하다고 판단한 이름표를 재검토한다. 학습 중에 모델이 “이건 신고가 없어야 하는데”라고 강하게 판단하는 사례를 뽑아, 그 신고를 다시 본다. 순환 논리 위험이 있어서 조심해야 하지만, 명백한 오류를 찾는 데는 쓸 수 있다.
문제 2: “신고 없음”이 “정상”이 아니다
이게 더 까다로운 문제다.
학습에는 양쪽 예시가 필요하다. 이상한 구간과 정상 구간. 그런데 “신고가 없는 구간”을 정상으로 취급해도 되나?
안 된다. 신고가 없는 이유가 여러 가지다.
- 실제로 정상이다
- 이상했지만 아무도 표시하지 않았다
- 이상했지만 그 구간을 지난 사람이 앱을 안 쓴다
- 느꼈지만 버튼을 누를 상황이 아니었다
즉 “신고 없음”은 “정상”이 아니라 “모름”이다.
이런 상황을 기계학습에서는 양성-미분류 학습이라 부른다. 확실한 양성(신고 있음)과 정체 불명의 나머지만 있는 경우다.
대응 방법이 있다.
미분류를 정상으로 쓰되 무게를 낮춘다. 대부분은 실제로 정상일 것이므로, 약한 정상 예시로 취급한다.
확실한 정상을 따로 확보한다. 최근 새로 포장한 구간, 정밀 조사에서 이상 없음이 확인된 구간. 이런 것들은 강한 정상 예시가 된다. 다만 이런 데이터를 얻기 위해서는 도로 관리 기관과의 협력이 필요하다.
같은 구간의 시간 변화를 쓴다. 어떤 구간이 몇 달간 신고가 없다가 최근 생겼다면, 과거의 그 구간이 상대적으로 정상이었다고 볼 수 있다. 한 구간을 자기 과거와 비교하는 것이다. 이게 가장 현실적인 방법이다.
문제 3: 사람의 감각과 위험이 다르다
22편에서 짚은 구분이다. 학습의 실제 목표는 “공동이 있는가”가 아니라 “사람이 이상하다고 느낄 신호인가”다.
이걸 다시 강조하는 이유는, 성공했을 때 무엇을 얻는지 정확히 알아야 하기 때문이다.
학습이 잘 되면 우리는 사람의 감각을 모방하는 기계를 얻는다. 사람이 없는 구간, 앱을 안 쓰는 사람만 지나는 구간에서도 “사람이 지났다면 이상하다고 느꼈을 것”을 판단할 수 있다.
이건 상당한 가치가 있다. 커버리지가 사람의 참여를 넘어 확장된다.
그런데 그것이 위험 판정은 아니다. 사람이 못 느끼는 위험은 여전히 못 잡는다. 그리고 사람이 잘못 느끼는 것은 함께 배운다.
즉 이 학습은 한계를 그대로 물려받는다. 스승의 한계를 넘지 못한다.
한계를 넘는 경로
그럼 사람의 감각을 넘어설 방법이 있나. 두 가지 경로가 보인다.
경로 1: 물리 모델과 결합한다.
24편의 두 겹 이야기다. 시뮬레이션으로 “공동이 있으면 신호가 이렇게 변한다”를 알아낸다. 그리고 사람의 감각으로 학습한 것과 비교한다.
- 둘이 겹치는 영역 — 사람도 느끼고 물리적으로도 설명되는 것. 가장 신뢰할 만하다
- 물리는 예측하는데 사람이 못 느끼는 영역 — 여기가 사람을 넘어서는 지점이다. 물리 모델이 옳다면, 사람이 못 느끼는 초기 단계를 기계가 잡을 수 있다
- 사람은 느끼는데 물리로 설명 안 되는 영역 — 다른 원인이거나 우리 모델의 부족
두 번째 항목이 이 프로젝트가 궁극적으로 노리는 자리다. 다만 그건 물리 모델을 신뢰할 수 있을 때 성립하고, 23편에서 봤듯 그 신뢰를 얻는 것 자체가 과제다.
경로 2: 사후 확인이 쌓인다.
12·13편에서 말한 외부 사실. 실제로 함몰이 발생하거나 정밀 조사에서 확인된 사례. 이것들은 사람의 감각과 무관한 진짜 정답이다.
몇 건만 있어도 가치가 크다. 사람의 감각으로 학습한 모델을 그 몇 건으로 교정할 수 있다. 적은 수의 진짜 정답으로 많은 수의 대체 정답을 보정하는 것이다.
이건 시간이 필요한 일이고, 지금은 없다.
학습을 시작할 수 있는 조건
실무적인 질문으로 돌아오자. 언제 이 학습을 시작할 수 있나.
필요한 것을 세면 이렇다.
- 신고가 붙은 구간이 충분히 많이 — 최소 수백 건 규모. 그리고 겹침이 있는 것들
- 각 구간에 여러 번의 통과 기록 — 20편의 반복 효과를 얻으려면
- 정규화가 작동하는 상태 — 19편. 안 되면 학습이 차량 지문을 배운다
- 비교 가능한 정상 구간 — 문제 2의 대응
이 조건들은 사용자가 어느 정도 모여야 만족된다. 얼마나 필요한지는 정확히 말할 수 없다. 다만 10편에서 말한 국지성이 여기서 도움이 된다. 전국이 아니라 한 동네에서 시작할 수 있다.
같은 통학로를 쓰는 몇십 명. 그 규모에서 몇 달이면 최소한의 데이터가 모일 수 있다. 그리고 그 데이터로 첫 학습을 시도해 볼 수 있다.
첫 시도는 대개 실패할 것이다. 그 실패에서 무엇이 부족한지 알게 되고, 그게 다음 설계로 이어진다.
정직한 결론
이 편의 결론을 분명히 적어두자.
우리는 아직 사람의 물컹함을 기계에 가르치지 못했다. 가르치는 방법을 설계했고, 그 방법이 성립하기 위한 조건들을 정리했다.
가장 큰 미지수는 애초에 그 신호가 존재하는지다. 4편에서 세운 가설 — 공동 위 도로의 응답이 다르다 — 가 실제 도심 주행 데이터에서 감지 가능한 크기인지, 확인되지 않았다.
가설이 틀렸을 수도 있다. 그러면 2단계는 성립하지 않고, 이 프로젝트는 1단계 서비스로 남는다.
그것도 의미는 있다. 사람들이 동네 도로의 위험을 기록하고 공유하고 민원의 근거로 쓰는 도구. 그건 그 자체로 쓸모가 있다.
다만 그것이 우리가 목표한 전부는 아니다. 그래서 검증을 계속한다.
다음 편 예고 — 사람의 신고와 기계의 신호가 만나면. 두 판단이 일치할 때와 어긋날 때 각각 무엇을 뜻하는지, 그 조합을 어떻게 쓰는지.
「우리 동네가 먼저 안다」는 5부 30편으로 이어집니다. 지금 읽은 글은 4부 physical AI의 4번째(전체 제25회)입니다.