이거 나만...?

[흥신소]내비게이션은 어떻게 도착시간을 예측하나요?

2020.09.30

‘흥신소’는 돈을 받고 남의 뒤를 밟는 일을 주로 한다고 합니다. ‘블로터 흥신소’는 독자 여러분의 질문을 받고, 궁금한 점을 대신 알아봐 드리겠습니다. IT에 관한 질문, 아낌없이 던져주세요. 블로터 흥신소는 공짜입니다. 이메일(bloter@bloter.net), 페이스북(https://www.facebook.com/bloter.net) 모두 열려 있습니다.

“내비게이션을 쓰는 이유 중 하나가 예상 도착시간도 알려준다는 점 때문인데요. 원리가 뭔가요?”

목적지 경로와 예상 도착 시간을 계산해주는 스마트폰 길안내 서비스들

내비게이션은 참 대단한 발명품입니다. 특히 저 같은 ‘길치’는 종종 생각합니다. 내 세대에 내비가 없었다면 도대체 얼마나 많은 시간을 길 위에서 헤맸을까? 생각만 해도 끔찍합니다. 길 안내뿐 아니라 실시간 도착 시작까지 알려주니 더 고마운 마음입니다. 예측이 백퍼센트 정확하진 않아도 스케줄 관리에 도움이 되는 건 사실이죠.

내비게이션은 어떻게 도착 예정 시간을 맞출 수 있을까요? 길이야 지도를 기반으로 안내한다지만, 어딘가 이동하는 과정에는 매일 많은 변수가 따릅니다. 이를 모두 고려하면서 도착 시간을 예측한다는 건 쉬운 일이 아닐 텐데 말이죠.

이번 궁금증에 대해선 ‘[카카오AI리포트]카카오내비 예측의 정확성 그리고 AI’란 보고서에서 비교적 상세하고 참고할 만한 답을 얻을 수 있었습니다. 다소 기술적인 내용이 담긴 보고서인데, 흥신소 독자분들을 위해 최대한 쉽게 풀어보려 노력했습니다.

도착 예정 시간을 결정 짓는 3대 변수

먼저 목적지 도착 시간 예측에 쓰이는 변수는 크게 세 가지(카카오내비 기준)입니다. △도로별 주행소요 시간 △회전 시간 △신호대기 시간인데요. 비중이 가장 높은 건 도로별 주행시간이고 예측에는 특정한 인공지능(AI) 알고리즘이 사용됩니다.

하지만 도로별 주행 시간은 당일 상황에 따라 달라질 수 있습니다. 이를 정확히 예측하려면 실시간 데이터가 필요하죠. 보고서에 따르면 카카오내비는 이 정보(주행시간, 주행거리)를 크라우드(Crowd) 방식, 카카오내비 사용자들로부터 직접 수집합니다. 참고로 무단 수집은 아니고 이용약관 중 ‘위치정보 수집 및 이용 동의’에 동의한 사용자에 한해 데이터가 수집됩니다. 이 방식은 사용자가 증가할수록 표본도 늘어나는 만큼, AI와 결합 시 더 높은 정확도를 기대할 수 있습니다.

또 단순히 주행 데이터를 수집한다고 끝이 아니라, 여기서 ‘노이즈 데이터(noise data)’를 걸러내는 노하우도 필요합니다. 예컨대 정차 중인 차량을 도로 정체에 의한 것으로 판단하면 도착 예상 시간도 실제와 다르게 예측될 겁니다. 또 같은 고속도로 내에서도 직진 차선과 출구 차선의 속도가 다른 점, 설치와 제거가 가변적인 신호등·감시카메라, 공휴일, 날씨 등 실제 복합적으로 고려해야 할 요소는 한둘이 아닙니다.

출처=카카오내비 예측의 정확성 그리고 AI 리포트

상점 매출액 예측하던 AI 알고리즘이…

보고서 내에서 한 가지 흥미로웠던 점은 교통정보 예측에 사용된 알고리즘입니다. 카카오내비에는 유명 머신러닝 대회 우승자가 상점 매출액 예측을 위해 사용했던 AI 알고리즘  ‘GBT(Gradient Boosting Tree)’가 사용됐다고 하네요. 생각해 보면 각 상점의 매출도 매일 다양한 변수에 따라 달라질 수 있습니다. 개발팀은 이것이 교통정보 예측과 비슷하다고 판단했고, 실제 적용해본 결과 유의미한 성과를 거뒀던 거죠. 실제 이 알고리즘을 적용한 결과 교통 패턴별 속도의 상대 에러는 14~30%까지 개선됐다는 결과가 나와 있습니다.

이와 함께 알고리즘이 사용할 학습 모델도 평일과 주말 교통량 패턴의 차이, 길 모양에 따라 달라지는 패턴 등 다양한 조건에서 데이터 특성을 뽑아낸 뒤, 다시 중요도가 높은 특성들로 모델을 구축하는 등의 과정이 따릅니다. 최종 사용자인 우리는 “XX까지 가는 길 알려줘”라고 짧게 명령할 뿐이지만 그 한마디를 정확히 처리하기 위해 내부에선 무수히 많은 변수 처리와 AI 최적화가 이뤄지고 있던 셈이죠.

또한 보도와 차도의 구분이 없는 생활도로, 통행량이 적은 지방도로는 주행 데이터가 거의 없는 경우도 있습니다. 이 경우 평균값 적용 등을 고려할 수 있지만 교통 데이터 측정에서는 정확도가 낮은 방법입니다. 하지만 GBT 알고리즘은 이처럼 데이터가 없는 ‘null(널값이라고 부름)’ 상황에서도 오히려 그 상황에 대응하는 방법을 지속적으로 학습함으로써 어느 정도 문제를 해결할 수 있게 됐다고 하는데요. 단순 연산만 가능한 컴퓨팅 환경에서 볼 수 없는 AI의 재밌는 모습 중 하나입니다.

인간의 뇌처럼 다양한 상황 학습을 통해 대처법을 익혀가는 인공지능 / 출처=픽사베이

부족한 현실 데이터를 보완하는 가상 데이터

좋은 알고리즘에 좋은 데이터를 넣는다고 무조건 좋은 결과만 나오는 건 아닙니다. ‘인생은 실전’이라는 말처럼, 일단 만들어진 교통정보 예측 모델도 실전 검증을 거쳐야 최종 성능을 알 수 있습니다. 문제는 실시간 검증에 물리적인 한계가 따른다는 점인데요.

새 모델이 나와도 적어도 하루 이상은 눈으로 결과를 지켜봐야 하며, 동시에 진행할 수 있는 테스트의 숫자도 한정돼 있습니다. 실험 데이터가 많아야 검증 신뢰도도 높아지는데 이러면 성능 업데이트가 굉장히 느려지겠죠. 이 때문에 복잡한 현실 속 환경을 최대한 비슷하게 구현한 시뮬레이터를 만들어 실험 데이터를 보완합니다. 시뮬레이터에선 하루 이틀이 걸릴 실험도 1분이면 가능하니까요. 비슷한 사례로 자율주행 인공지능 학습에도 이런 시뮬레이션이 널리 활용됩니다.

시뮬레이터에서 좋은 결과를 얻은 모델은 이제 실서비스에서 A/B테스트(실험 집단을 나눠 각기 다른 조건에서 실험 후 결과를 확인하는 방법) 등을 거쳐 최종 품질 개선 과정을 거칩니다. 만약 테스트에 선정된 무작위 실험군에서 부정적인 피드백을 많이 보내온다면 그 모델은 자연히 도태될 겁니다. 사실 우리는 알게 모르게 데이터도 제공하고, 품질 검증에도 참여하고 있었던 거죠.

도착 예정시간 알고리즘이 서비스에 적용되는 과정 / 자료=카카오내비 예측의 정확성 그리고 AI 리포트

원래 매년 명절이면 티맵이나 카카오내비 등 주요 서비스 기업들이 ‘가장 덜 밀리는 귀향/귀성길 정보’를 경쟁적으로 내놓곤 했는데요. 올해는 코로나19로 고향 방문 자제가 권고되면서 그런 모습도 사라졌습니다. 사회적 약속이 반영된 변화라고 볼 수 있겠죠. 여러분도 긴 추석 명절 연휴, 가급적 내비를 켜는 일 없이 집에서 가족들과 더 많은 대화의 시간을 갖길 권해봅니다.

sugyo@bloter.net

더 쉽고, 알차게 쓰겠습니다.