브레인 스토리
[TGNet] 3.연구 비하인드 스토리를 공개합니다
2019/01/15 by 이수경 이도엽

결과도 중요하지만, 문제를 해결해 나가는 과정 또한 중요하다는 옛말이 있습니다. 카카오브레인은 이 문장에 공감합니다. 인공지능 생태계 발전에 조금이라도 보탬이 되려면 단순히 연구 성과를 공유하는 데 그치지 않고, 어떤 과정을 거쳤는지 상세히 공유하는 과업 또한 중요하다고 생각하기 때문입니다.

이에 이번 글에서는 카카오브레인과 카카오 모빌리티가 공동 연구한 택시 수요 예측 모델인 ‘TGNet’에 관한 연구 뒷이야기를 상세히 적었습니다. 어떤 시행착오를 거쳐서 유의미한 결과를 낼 수 있었는지를 알아보고자 논문 제1 저자인 이도엽 카카오브레인 연구원을 인터뷰했습니다. TGNet 관련된 이야기는 블로그 2편에서 상세히 소개하고 있습니다.

[ 그림 1 ] 왼쪽부터 천영재, 정수헌, 이도엽 카카오브레인 연구원이 기념사진을 촬영하고 있다.


Q.택시 수요를 예측하는 연구를 시작하게 된 계기는 무엇인가요?

지난해 3월 카카오브레인에 인턴으로 입사한 저는 객체 추적(object tracking) 분야를 연구하고 있었습니다. 동영상(video)을 시간에 따른 이미지(image)의 연속으로 간주하는 시계열 데이터 연구는 흥미로웠습니다만, 비전(vision) 분야 관련된 지식이 부족해 어려움을 겪었죠. 그러던 찰나, 브레인 연구 성과를 내부적으로 공유하는 미니컨퍼런스를 통해 모빌리티 버스[1]가 택시의 수요를 예측하는 모델을 개발한다는 소식을 전해 들었습니다.

모빌리티 버스는 카카오 모빌리티가 서비스를 통해 축적해온 다량의 로그 데이터(시계열 형태)와 카카오브레인의 인공지능 기술을 활용해 새로운 가치를 창출하는 기술을 연구・개발하는 프로젝트입니다. 지난해 4월 카카오 모빌리티의 유승일님이 중국 최대 차량 호출 업체인 디디추싱이 발표한 논문인 'DVMST-Net’ 리뷰한 것을 계기로 택시 수요 예측 모델 연구가 본격화된 것으로 알고 있습니다.

[ 그림 2 ] 모빌리티 버스가 2018년 5월에 활용한 발표자료 중 일부

저는 2018년 6월 모빌리티 버스에 탑승해 수요 예측 모델을 본격적으로 연구하기 시작했습니다. 저의 전공인 산업경영공학에서 배운 지식과 기존 연구 경험을 잘 살릴 수 있겠다 싶었습니다. 아울러 연구 내용이 모빌리티 서비스에 스며들어 고객에게 새로운 가치를 줄 미래를 그려보니 정말 재미있을 것 같다는 생각이 들었죠.

연구를 진행하기에 앞서 가장 먼저 한 일은 선행 연구 분석과 기본 모델(baseline model) 실험이었습니다.


Q.선행 연구에서 무엇을 통찰했나요?

선행 연구에서의 문제 해결 방법론 그 자체보다는, 해결하려는 ‘문제’와 문제가 발생한 ‘원인’, 문제 해결 ‘방식’, 이 방식이 문제 해결에 효과적인 ‘이유’ 등 각 부분을 세부적으로 분석하는 데 집중했습니다. 각 도메인 데이터가 갖는 특징과 문제를 정확하게 이해해야 적합한 딥러닝 모델을 설계・개발할 수 있다고 판단했기 때문입니다.

택시 수요 예측 모델에서 전반적으로 고려해야 할 중요 특징은 TGNet 블로그 1편([ 표 1] 참고)에서 다룬 바 있습니다. 이 각각의 특징을 잘 추출하고자 연구 논문에서 방법론을 탐색했습니다. 우리 팀은 성능 향상이 주목적인 모델이 아닌, 실제 서비스에 적용할 수 있는 실용적인 모델을 만들기로 했습니다. 간단한 구조를 갖추면서도 시공간 특징을 효율적으로 추출하고, 외부 데이터를 활용하기가 쉬운 방향으로의 모델 설계가 골자입니다.

[ 표 1 ] 시공간 데이터에서 알 수 있는 3가지 특징


Q.택시 수요를 예측하는 연구를 해본 적이 있으신가요?

누구보다 택시를 많이 이용해 보기는 했어도 그 수요를 예측해본 적은 없습니다. 다만, 대학원 진학해서 가장 먼저 진행한 기계학습 프로젝트가 바로 이 시계열 데이터 분석과 연관이 있었습니다. DBMS(database management system) 관련 회사에서 발생하는 다양한 시계열 데이터를 가지고 미래 지표를 예측하는 프로젝트를 진행했거든요. 딥러닝을 통해 시계열 데이터를 예측할 수 있다는 가능성을 확인하는 정도로 프로젝트를 마무리하면서 깨달았던 것은 미래 예측은 정말 어려운 과업이라는 사실이었습니다. 따지고 보면 제 직장 동료가 내일 점심으로 뭘 먹을지를 예측하는 것과 비슷한 일이니까요.

이런 경험은 택시 수요 예측 프로젝트 합류를 흔쾌히 결정한 배경이 됐습니다. 한편으로는 조금 두려운 마음이 들기도 했습니다. 미래를 예측하는 게 현실적으로 얼마나 힘들고 어려운 일인지를 이미 경험해봤으니까요. 하지만 그동안 공부와 연구를 열심히 하면서 나름대로 성장 궤도에 놓여 있다는 판단이 들었습니다. 또 어려운 일을 해결하는 것도 제 인생 나름대로 가치 있는 일이라고 생각했죠.


Q.김종석 연구원이 '딥러닝 실험은 모든 요소가 톱니바퀴 돌듯이 확실하게 맞아 떨어야 한다는 점에서 늘 어렵다'라고 말한 적이 있습니다. 이번 택시 수요 예측 모델을 만드는 과정 또한 만만치 않았을 거 같아요. 어떤 시행착오를 거쳐 결과물을 낼 수 있었는지 자세한 설명 부탁드립니다.

처음에는 컨볼루션 층(convolutional layer)[2]을 단순히 쌓아 올리는 방식으로 기본 모델을 만든 뒤 성능 개선을 시도했습니다. 하지만 초매개변수(hyperparameter)[3]나 모델을 바꾸거나 손실 함수를 다양하게 만들어도 성능이 뚜렷하게 개선되지 않은 상황을 마주해야만 했습니다. 성능이 개선되더라도 구체적인 가설을 설정하지 않은 탓에 유의미한 개선인지 판단하는 것조차 어려웠죠.

그래서 앞에서 말한 대로 논문을 다시 분석해가며 생각을 재정리했습니다. 택시 수요 예측에 관한 분야와 데이터에 대한 이해가 심화됨에 따라 모델의 설계 방향을 다시 구체화해나갈 수 있었습니다. 몇 가지 구체적인 사례를 소개하자면 다음과 같습니다.

(1) 최대값 풀링(max pooling)→평균값 풀링(average pooling)

주변 영역의 추론 결과값 중 최댓값만을 상위층으로 보내는 최대값 풀링은 택시 수요 데이터에서는 적합한 선택이 아니었습니다. 각 지역의 수요값을 추론해야 하는 상황에서 최대값 풀링을 적용하면 최댓값을 제외한 나머지 결과값은 버려지게 됩니다. 이렇게 되면 많은 지역에서의 수요 정보를 잃게 돼 예측 정확도가 낮아지죠. 이에 연구팀은 수용영역(receptive field)에 해당하는 넓은 지역 사이의 관계를 대표하는 값을 나타내고자 평균값 풀링 방식을 채택했습니다. 그 결과 성능이 일정 폭 이상 향상됨을 확인할 수 있었습니다. 이를 계기로 해결하려는 문제와 모델에 대한 다층적 이해가 매우 중요하다는 사실을 깨닫게 됐죠.

(2) CNN+LSTM[4]→FCN(fully convolutional networks)

대부분의 선행 연구에서는 CNN으로 공간적인 특징을 추출하고, LSTM이나 GRU[5]로 시간적인 특징을 추출한 뒤, 두 결과를 합쳐 택시 수요를 예측함을 볼 수 있었습니다. 직관적으로 보자면 합리적인 모델 설계 방식입니다. 다만 우리 연구팀은 이렇게 시간과 공간적 특징을 개별적으로 모델링하면 모델의 복잡도가 높아지는 건 아닌지 우려했습니다. 가능하다면 최대한 간단하게 모델을 구성하는 게 좋다는 오컴의 면도날(Ockham's Razor)이 떠올랐죠.

이에 연구팀은 간단한 구조의 CNN만으로도 공간적인 특징과 시간적인 특징을 모두 추출하는 모델을 고안하기로 했습니다. 그 결과 FCN 구조에서 레이어 수와 CNN 필터 수를 조절하는 것만으로도 학습이 이뤄짐을 볼 수 있었습니다. 또한 , 기존 모델보다 약 20배 적은 수의 학습 파라미터만으로 더 좋은 성능을 낼 수 있었죠.

(3) 인접 4시간 데이터 활용→시간 안내 임베딩(temporal guided embedding)

일별, 주별로 반복되는 패턴을 고려하려는 목적에서 과거 다른 날짜, 같은 시간대의 데이터를 활용하면 수요 예측 모델의 성능 향상을 기대해볼 수 있습니다. 단점은 입력 데이터의 범위가 넓어질수록 모델 크기가 커진다는 거죠. 아울러 이 방식은 모델이 시간적인 맥락을 이해한다고 보기 어렵습니다. 단순히 입력된 데이터의 패턴만을 가지고 미래 수요값을 예측하는 쪽에 가깝죠.

연구팀은 기존의 방식(인접 4시간 데이터 활용)이 사람이 미래 수요를 예측하는 방식과는 상당히 차이가 있다고 봤습니다. 사람은 절대적인 시각 정보를 토대로 미래를 예측합니다. 예를 들어, 출근 시간대 수요는 과거 비슷한 시간대의 경험을 토대로 유추하는 거죠. 따라서 모델이 시간적인 맥락을 이해하고 학습할 수 있다면, 인접한 4시간 데이터와 예측하려는 시각 정보만으로도 높은 성능을 보여주리라 판단했습니다.

이에 연구팀은 시간 정보(시각, 요일, 휴일 여부, 전날 휴일 여부)를 연속된 실수값으로 표현하는 임베딩 레이어(embedding layer)를 뒀습니다. 임베딩 결과는 기본 모델의 입력 부분에서 조건 역할을 하며 정답을 맞추는 데 더 적절한 특징을 추출하도록 안내(guided)합니다. 그 결과 유의미한 성과를 얻을 수 있었죠.

(4) 하차 데이터 활용

택시 수요 예측 모델이 실용성을 갖추기 위해서는 비정기적인 이벤트가 열린 상황에서도 예측 정확도가 높아야 할 필요성이 있겠다는 생각이 들었습니다. 월드컵이나 뮤직 페스티벌과 같은 대규모 이벤트가 발생하면 택시 수요가 특정 시간에 집중되는 만큼, 이벤트 정보를 활용해 평소와는 다른 수요를 조금 더 정확하게 예측할 수 있습니다.

그러나 이벤트 정보를 알 수 있는 출처가 제각각이며, 그조차도 100%를 다 알 수 없기에 그 실용성이 낮다는 판단이 들었습니다. 일반적인 상황에서도 잘 동작해야 하는 모델에서 문제마다 해결법을 두는 게 근본적인 대책이 아니라고 봤어요.

모델의 비용 함수를 바꾸거나 불확실성을 고려한 모델을 덧붙여보긴 했으나 큰 개선은 없었습니다. 다시 한 번 연구팀이 보유한 데이터를 점검해봤습니다. 연구 방향을 결정한 후에는 택시를 호출한 데이터만 활용했는데요, 원 데이터를 들여다보니 하차에 관한 정보도 포함하고 있음을 발견했습니다. 이 데이터를 활용하면 이벤트 상황에서도 수요를 예측할 수 있겠다는 판단이 섰어요.

하차 데이터가 가진 잠재성에 관한 검증도 진행했습니다. 이벤트가 열린 지역을 중심으로 해당 시각에서의 택시 탑승과 하차 패턴을 분석했습니다. 그 결과, 실제 이벤트가 열리기 몇 시간 전에 기존과 다른 패턴의 하차 수요가 발생함을 발견할 수 있었습니다. 제시간에 맞춰서 콘서트에 가려는 사람들이 그 주변으로 택시를 타고 이동하는 거죠. 과거 하차의 쏠림 현상이 이벤트 상황에서의 수요 예측에 도움이 되리라 연구팀은 하차 데이터를 예측에 실제로도 활용했습니다. 그 결과, 저희가 예측한 대로 모델 성능이 개선됨을 확인할 수 있었습니다.


Q.TGNet의 성능을 평가할 때 뉴욕시 데이터뿐만 아니라 카카오택시 서울시 수요 데이터로도 성능을 비교했다는 이야기를 건네 들었습니다. 그 결과는 어땠나요?

택시 수요를 예측하는 모델의 성능을 평가하는데 뉴욕시 택시 데이터와 카카오택시 서울시 수요 데이터를 활용했습니다. 연구팀은 이 과정에서 재미있는 사실을 하나 발견했습니다. 바로 TGNet은 초매개변수나 채널 수, 학습률 등을 조정하지 않고도 뉴욕 택시 데이터와 서울 택시 데이터셋을 모두 학습했습니다. 반면, 상대적으로 모델 구조가 더 복잡했던 기존 모델에서는 서울시 데이터를 학습시키는데 초매개변수 조정에 상당 부분 시간을 소요했음에도 불구, 아무런 예측값을 내놓지 못했습니다. 나름대로 분석해본 원인은 다음과 같습니다.

첫 번째, 학습 데이터 규모가 학습에 큰 영향을 미쳤습니다.

정사각형 격자(700m*700m)로 10*20개 나눈 뉴욕시 데이터의 분량은 2개월입니다. 서울시 데이터셋은 정사각형 격자(700m*700m)로 50*50개로 그 영역을 나눴으며 6개월가량의 택시 수요 정보를 담고 있죠. 더 긴 기간, 더 넓은 영역의 데이터에서 특징을 추출하는 작업은 더 복잡합니다. 기존 모델이 서울시 데이터를 잘 학습하지 못했다는 의미는 뉴욕 데이터셋같은 규모가 작은 데이터 학습에는 적합하나, 대규모 데이터 학습에 부적합함을 의미합니다.

[ 표 2 ] TGNet 성능 평가에 사용한 데이터셋 종류

두 번째, 데이터 전처리 또한 학습에 큰 영향을 미쳤습니다.

최근 소개된 DMVST-Net이나 STDN과 같은 모델에서 활용하는 local CNN에서는 복잡한 데이터 전처리 과정을 거칩니다(자세한 이야기는 블로그 1편을 참고해주세요). 실제 공개된 코드를 분석해본 결과, 100MB도 되지 않은 뉴욕 데이터셋의 크기는 전처리를 거치면 기하급수적으로 커집니다(대략 32GB). 한 번 학습하는 데 시간도 오래 걸리죠(8시간). 반면, 우리가 제안한 모델은 학습 시간은 1시간도 채 걸리지 않았습니다.

정리하자면, 기존 모델은 작은 규모의 데이터에서 복잡한 구조와 계산으로 최적화된 모델입니다. 그래서 오히려 데이터가 많고 복잡했을 때 제대로 작동하지 않게 되죠. 복잡한 데이터 전처리는 비효율적이며 실용성이 떨어집니다. 더 많은 분량의 데이터를 학습해야 하는 실제 서비스에서는 새로운 데이터가 축적될 때마다 학습하는 데 많은 시간이 걸리는 반면, 예측 정확도는 학습 시간에 비례해 높아지지 않기 때문입니다.


Q.딥러닝 모델 실험 과정에서 정말 중요하게 생각해야 할 부분을 공유한다면요?

[ 그림 3] 이도엽 카카오브레인 연구원이 라이언 인형을 들고 기념 사진을 촬영하고 있다.

딥러닝 모델을 실험하는 데 고려해야 할 요소는 정말 다양합니다만, 그중에서도 저는 특히 세 가지가 중요하다고 생각합니다.

첫 번째, 모델을 객관적으로 평가하는 환경을 체계적으로 구축해야 합니다.

딥러닝 모델을 활용한 서비스를 제공할 목적이라면 객관적인 성능이 우수함을 증명하는 것보다는 높은 성능을 내는 게 더 중요합니다. 예를 들어, 물체를 인식하는 기능을 제공하는 애플리케이션에 사용되는 딥러닝 모델은 모델 설계나 학습 방법이 이론적으로는 부실하더라도 좋은 성능을 내면 됩니다. 반면, 연구에서는 대조군 모델보다 우리 모델이 객관적으로 더 나음을 증명해야 합니다. 실험을 반복하며 어떤 가설이 유효하고, 타당하지 않는지를 명확하게 알아야 한다는 점에서 객관적인 모델 평가 환경이 중요하죠.

즉, 성능을 객관적으로 비교할 적합한 성능 척도를 정의하고, 성능 평가에 활용할 테스트 데이터셋 구축하고, 실험의 조작 변인[6]을 체계적으로 변경하며 실험하자는 게 핵심입니다. 이 내용은 모든 연구의 기본이라고도 할 수 있습니다. 적절한 기준을 정하지 않고 실험하는 것은 흡사 나침반 없이 여행하는 것과도 같기 때문입니다.

모델 평가 기준은 시간이 오래 걸려도 꼭 분명하게 짚어야 합니다. 그렇지 않으면 예측 결과를 신뢰할 수 없습니다. 처음부터 제대로 된 실험 환경 설정이 시행착오를 줄이는 데 큰 영향을 미친다고 볼 수 있습니다.

두 번째, 해결하려는 문제와 데이터를 심층적으로 이해할 수 있어야 합니다.

만능 해결사로 인식되는 딥러닝. 실제로는 그렇지 않은 쪽에 더 가깝습니다. 딥러닝으로 문제를 풀기 위해서는 문제와 데이터를 종합적으로 분석한 후, 문제 해결에 필요한 데이터를 취사 선택해 이를 적절한 형태로 가공할 수 있어야 합니다. 하차 데이터를 활용해 비정기적인 이벤트에서 수요를 예측한 사례가 여기에 해당합니다.

또한, 본격적인 모델 학습에 앞서 데이터의 특징을 다각도로 분석할 수 있어야 합니다. 적당한 예를 한 번 설명해볼게요. 기존 택시 수요 예측 논문에서는 min-max 스케일링[7]으로 데이터를 전처리했습니다. 하지만 이 방식이 서울시 데이터에는 적합하지 않았습니다. 서울시 데이터는 다른 벤치마크와 비교했을 때 지역별 격차가 심하며, 피크타임일 때와 아닐 때의 택시 수요량 또한 상당한 차이를 보입니다. 이런 이유로 min-max 스케일링을 하게 되면 데이터 대부분이 분별력을 잃게 됩니다. 이렇게 되면 인공신경망 모델은 더욱 힘들어지게 되죠. 연구팀이 log 스케일링 방식을 채택한 이유죠.

요약하자면, 선행 연구 조사와 탐험적 데이터 분석(EDA)[8]을 통해 도메인을 깊게 연구할 수 있었고, 연구 방향을 명확하게 설정할 수 있었다고 생각합니다. 문제 요소를 확실하게 정리하게 되면서 모델을 개발하는 속도와 실험 주기 또한 빨라지고, 실험 결과를 바탕으로 모델을 좀 더 명료하게 개선할 수 있었죠. 아울러 브레인 클라우드라는 막강한 컴퓨팅 자원 덕분에 가설의 타당성을 좀 더 빠르게 검증할 수 있었습니다.

마지막으로 중요한 부분은 바로 팀워크입니다.

혼자 생각하고, 가설을 설정하고, 실험하는 단계에서는 신중하게 가설을 세우더라도 예리함이 다소 부족할 수 있습니다. 이에 주기적으로 팀원들과 자신의 가설과 방향을 공유하고, 토의하는 과정에서 잘못된 점을 빠르게 찾을 수 있고 좀 더 모델을 정교하게 만들면서 실험할 수 있었죠.


Q.'택시 수요가 변화하는 상황을 스스로 인지하고, 여기에 적절하게 조치하는 법을 스스로 터득하는 모델’에 관한 후속 연구를 진행한다고 들었습니다. 앞으로의 계획에 대해 구체적으로 설명해주세요.

지금까지 연구된 택시 수요 예측 모델을 보면 성능이 점점 좋아짐을 확인해볼 수 있습니다. 다만 아직은 실제 서비스에 적용하기엔 무리가 있다고 봤습니다. 성능 척도(MAPE, RMSE)에서 수치(오차)를 최소화하는 게 전부는 아니기 때문입니다. 100%에 가까운 정확도를 보여주는 이미지 인식과는 달리, 택시 수요 예측에서는 에러를 0으로 만드는 게 근본적으로 불가능합니다. 언제 어디서 사고가 나서 교통체증이 생길지 알 수 없거든요.

이런 이유로 택시 수요 예측 모델이 제대로 된 예측값을 내놓지 못하는 상황에서도 적절한 대응이 가능해야 합니다. 예를 들어, 콘서트가 끝난 후 한꺼번에 빠져나온 관객들이 동시다발적으로 택시를 호출한다면 평소와는 달리 1시간을 기다려도 택시를 못 탈 확률이 높죠. 이처럼 예기치 못하는 상황에서 수요-공급을 적절하게 조정하는 여부가 사용자 경험에 지대한 영향을 미치게 됩니다.

연구팀은 대응 방식을 마련하는 데 있어 모델이 자신의 예측 결과에 대한 불확실성을 인지할 수 있어야 한다고 봤습니다. 모델은 드문 상황에서 부정확한 결과를 내놓습니다. 예를 들어, 평소와는 다르게 오전 6시 택시 수요가 증가한다면 모델은 정상적인 판단을 내리지 못하게 됩니다. 이 상황에서 모델은 ‘나는 잘 모르겠다’는 정도를 스스로 인지할 수 있어야 합니다. 이를 바탕으로, 모델은 관리자와 상호작용하며 불확실한 상황에서 적절히 대응할 수 있다고 봤습니다.

후속 연구가 나아갈 방향은 열린 상태입니다. 택시 수요 예측 결과 자체를 높이는 데 집중하면서도, 예측 모델이 실제 서비스에서 동작할 때 사람답게 판단하며 사람과 원활하게 상호작용할 수 있는 방향으로 고민을 거듭하고 있습니다. 구체적인 내용은 후속 연구를 통해 추후 알려드리겠습니다. 감사합니다.


참고
[1] 카카오브레인에서 개별 연구 프로젝트를 지칭하는 단어
[2] 이미지에서 숨은 특징을 추출하는 층
[3] 개발자가 머신러닝 알고리즘에서 직접 조정하는 값
[4] long short term memory의 약자. RNN의 셀(cell)을 세 가지 게이트로 구성된 메모리 블록(memory block)으로 대체한 구조를 가리킨다. 이전 상태에서 넘어온 새로운 정보를 얼마나 반영할지(output gate), 어떤 정보를 얼마나 입력할지(input gate), 어떤 정보를 얼마나 출력할지(forget gate)를 가중치를 통해 결정한다. 이는 가장 기본적인 구조이며, 모델마다 그 구조가 조금씩 다르다.
[5] Gated Recurrent Unit의 줄임말 LSTM을 변형한 모델이며 LSTM과 함께 자연어처리나 음성인식에 사용되는 모델 중 하나다.
[6] 가설을 검증하는 실험을 설계할 때 서로 다르게 설정해야 할 조건
[7] 0과 1사이 범위로 데이터를 표준화하는 방법
[8] 수집된 최초의 데이터를 있는 그대로 탐구하고 분석하는 활동
이 글을 쓴 사람들
samantha.lee
이수경 글,정리 | samantha.lee@kakaobrain.com
2016년 3월 알파고와 이세돌 9단이 펼치는 세기의 대결을 두 눈으로 목도한 이후 인공지능을 제대로 공부해봐야겠다고 결심했습니다. 인공지능 본진이자 연구소인 카카오브레인으로 걸어들어온 이유죠. 인공지능 기술과 이로 인해 바뀔 미래 사회를 다루는 글을 통해 사람들과 소통하고자 합니다.
damien.lee
이도엽
인공지능 기술이 세상을 밝고 행복하게 만들어주길 기대하며 매일 조금씩 성장해나가고 있습니다. 카카오브레인에서 시계열 데이터와 이상 탐지를 연구하고 있습니다. 사람이 해결하지 못한 문제를 푸는 인공지능을 통해 더욱 윤택하고 안전한 인간 세상을 만드는 데 일조하고자 합니다.