Brain's Pick
[TGNet] 2.택시 수요 예측 모델을 소개합니다
2018/12/07 by 이수경 이도엽

지난 1편에서는 카카오브레인과 카카오모빌리티가 택시 수요 예측 모델을 만들게 된 배경과 이 연구를 위해 참고한 선행연구 3편에 대해 살펴봤습니다. 공동 연구팀은 리서치 자료를 기반으로 다음처럼 연구 방향을 설정했습니다.

첫 번째, 연구팀은 외부 데이터를 활용하지 않기로 했습니다. 물론 과거 데이터만으로 미래 수요를 예측하는 일은 쉽지 않습니다. 마치 자동차의 백미러만 보고 운전하는 것과도 같죠. 하지만 과거 데이터에서 숨겨진 시공간적인 특징을 효과적으로 파악한다면 완전히 불가능한 일은 아니라고 판단했습니다. 이에 공동 연구팀은 과거 데이터 패턴을 활용하는 기존 모델보다 높은 성능을 내면서도 간단한 모델을 만드는 데 주력했습니다.

두 번째, 제안된 모델은 외부 데이터를 쉽게 활용할 수 있는 구조여야 한다고 판단했습니다. 불확실한 미래에 영향을 줄 수 있는 정보를 예측에 반영하는 일은 매우 중요합니다. 기존 연구에서도 이벤트 정보나 날씨 데이터 등을 활용해 택시 수요 예측력을 높였죠. 이에 연구팀은 다양한 외부 데이터를 활용해 성능을 높이는 부분은 후속 연구로 남기되, 외부 데이터 활용이 편리한 구조를 고안했습니다.

이렇게 카카오브레인(이도엽, 정수헌, 천영재)과 카카오모빌리티(김동일, 유승일)가 고안한 택시 수요 모델인 TGNet은 신경정보처리시스템학회(NeurIPS)[1] 워크숍 주제 중 하나인 ‘시공간 영역에서의 모델링과 의사결정(Modeling and decision-making in the spatiotemporal domain)’에 승인됐습니다(accepted). 자세한 이야기는 TGNet의 아키텍처를 설명하는 부분에서 이어 하겠습니다.


TGNet 아키텍처

TGNet은 기본 모델(baseline model)(a), 시간 안내 임베딩(temporal guided embedding)(b), 그리고 추가 임베딩(supplement embedding)(c) 이렇게 세 영역으로 구성됩니다.

연구팀은 뉴욕시 택시 데이터(NYC-taxi dataset)로 모델을 훈련시키고 그 성능을 평가했습니다. 뉴욕시 택시 데이터는 택시 수요 예측 모델의 성능을 평가하는 기본 벤치마크(benchmark)입니다. 비교적 최근에 나온 STDN 또한 뉴욕시 택시 데이터를 성능 평가 척도로 삼았죠.

[ 그림 1 ] TGNet 아키텍처 © 카카오브레인


(a) 기본 모델(baseline model)

통상적으로 도시의 택시나 교통량을 예측하는 연구에서는 현재 시점으로부터 30분 단위로 쪼갠 과거 4시간을 인접 시간대로 정의합니다. 선행 연구와 마찬가지로 공동 연구팀 또한 30분 단위로 10행×20열의 그리드 배열로 뉴욕시를 나누는 전처리 작업을 진행했습니다([그림 2]). 이렇게 하면 총 8개 채널(channel)의 2D 이미지를 얻게 됩니다([그림 3]에서 왼쪽).

[ 그림 2] 10행×20열의 그리드 배열로 뉴욕시 전체를 나누면 총 400개의 구역이 생긴다. © 카카오브레인

기존 연구에서는 1채널 2D 이미지에 각각 CNN[2]을 적용해 공간적 상관관계를 추출한 뒤, 각각의 특징 맵을 LSTM[3]에 입력해 시간적 상관관계를 추론했습니다. 하지만 local CNN에서는 불필요한 중복 계산이 많았습니다. 아울러 LSTM을 과도하게 사용해 주의 기법을 도입하더라도 모델 학습이 어려웠고, 비효율적인 계산이 발생했습니다. 이에 연구팀은 전처리된 이미지라면 컨볼루션 연산만으로도 시공간적인 특징을 충분히 추출할 수 있다고 분석했습니다. 입력 데이터와 출력 데이터가 모두 2D 이미지 형태임을 봤을 때 보자면 비전(vision) 분야의 의미론적 분할(semantic segmentation)이나 깊이 회귀(depth regression) 등의 문제를 푸는 방식과 유사하기 때문입니다. LSTM보다는 CNN이 GPU 병렬 처리에 더욱 유리하다는 점도 이런 판단에 영향을 미쳤습니다.

이같은 이유로 TGNet의 기본 모델은 컨볼루션 네트워크만을 활용해 FCN(fully convolutional networks)로 구성됐습니다. 공동 연구팀은 [그림 3]처럼 8채널 2D 이미지를 붙여서(channel-wise concatenation) 한꺼번에 컨볼루션 연산을 수행합니다.

[ 그림 3 ] 지난 4시간의 택시 수요 데이터를 30분 간격으로 나누면 총 8개의 채널을 얻을 수 있다. TGNet은 이 8채널의 2d 이미지를 붙여서 한꺼번에 컨볼루션 연산을 수행한다

한편, 연구팀은 상업지역, 주거지역과 같은 지역적인 상관관계를 추론하고자 의료 분할(segmentation) 분야 등에서도 활발하게 이용되는 UNet 구조의 풀링(pooling)과 스킵 커넥션(skip-connection)[4]을 활용했습니다. 수용영역(receptive field)[5]에 해당하는 넓은 지역 사이의 관계를 대표하는 값을 나타내고자 평균값 풀링(average pooling)[6]을 사용했습니다. 풀링으로 인해 정교한 위치정보가 사라져 특정 지역의 수요를 정확하게 파악하기 어려운 문제는 스킵 커넥션으로 해결했습니다. 디컨볼루션(deconvolution)[7] 연산으로 특징 맵을 원래 크기로 확대한 뒤 스킨 커넥션을 이용해 정교한 위치 정보를 잃기 전의 특징을 대칭적으로 붙여줍니다.

1×1 컨볼루션 층에서 최종적으로 공간적, 시간적, 공간적 상관관계를 동시에 고려하며 각 지역의 수요를 예측합니다.


(b) 시간 안내 임베딩(temporal guided embedding)

택시 수요 데이터가 요일별, 주별로 어느 정도 반복적인 패턴을 보인다는 점을 고려한다면 과거 4시간만으로는 패턴을 찾기가 어렵습니다. 기존 연구에서 하루 전, 이틀 전, 일주일 전과 같은 데이터도 예측에 활용한 이유입니다.

반면, TGNet의 기본 모델은 과거 4시간만을 예측에 활용하기에 특정 기간마다, 주기마다 반복되는 패턴까지는 인식하지 못합니다. 연구팀은 더 많은 과거 데이터를 입력하는 것에 대한 의문을 가졌습니다. 함께 입력하는 과거 데이터가 많아질수록 학습에 많은 시간이 걸리고 케이스에 따라서는 학습이 잘 이뤄지지 않는 문제가 발생하기 때문입니다. 또한, 앞서 제시된 모델은 입력 데이터가 어느 시간대에 속하는지, 어느 날짜에 속하는지와 같은 시간적인 맥락 자체를 이해하지 못합니다. 그저 예측하려는 시간대와 가장 유사한 패턴을 가진 과거 데이터를 찾아 예측 결과를 낼 뿐이죠.

이에 연구팀은 사람이 미래 수요를 예측하는 방식대로 문제를 풀어보기로 했습니다. 사람은 자신이 예측하려는 시각의 시간대, 또는 요일, 휴일 여부 등을 먼저 고려합니다. 금요일 퇴근시간대와 토요일 오전 시간대의 택시 수요가 다르다는 사실을 인지하는 거죠. 이 방식처럼 모델이 시간적인 맥락이라는 조건(condition)에 따라 시공간적인 특징을 추론해 수요를 예측할 수 있다면 특정 기간마다 주기마다 반복되는 유사 패턴을 학습할 거라 판단했습니다. 4시간의 데이터만을 가지고도 시간적인 맥락을 스스로 학습하는 방식이 딥러닝(deep learning)이라는 본연에 더 가깝다고 생각한 거죠. 연구팀이 시간 안내 임베딩을 고안하게 된 배경입니다.

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

[ 표 1 ] 시간 안내 임베딩 레이어에서 고려하는 시간 정보


(c) 추가 임베딩(supplement embedding)

연구팀은 기본 모델과 시간 안내 임베딩만으로도 택시 수요 데이터로부터 효율적으로 특징을 추출해 효과적인 성능을 낼 수 있었습니다. 물론 외부 데이터를 활용해 예측 모델의 성능을 높이는 것 또한 중요한 요소죠.

[ 그림 4 ] 앞으로 일어날 날씨, 행사 등의 정보를 담은 외부 데이터를 활용하면 미래 택시 수요를 좀 더 정확하게 예측해볼 수 있다

이에 연구팀은 연구 목적에 따라 외부 데이터를 쉽게 활용할 수 있는 구조를 제안했습니다. 과거 택시 수요 데이터 패턴에서 특징을 추출하는 부분(a, b)과 외부 데이터에서 특징을 추출하는 부분(c)을 따로 구현해 각각의 결과를 합치는(concatenate) 방식으로 말이죠. 멀티모달 학습(multi-modal learning)에서 사용되는 뒷단에서의 퓨전(late fusion)[8]에서 영감을 얻었습니다. 이렇게 되면 기본 모델을 변형하지 않고도 다양한 외부 데이터를 얼마든지 예측에 반영할 수 있게 됩니다.


TGNet의 성능

그렇다면 TGNet이 얼마나 높은 정확도로 미래 택시 수요를 예측하는지는 어떻게 알 수 있을까요? 택시 수요를 예측하는 성능 척도에는 주로 MAPE[9]와 RMSE[10], 이 두 가지가 활용됩니다([표 2]). 수치가 작을수록 성능이 더 좋음을 나타냅니다. 통상적인 연구에서는 상황에 따라 더 적합한 기준을 가지고 모델의 성능을 평가합니다.

[ 표 2 ] 미래 택시 수요 예측에 주로 쓰이는 성능 척도인 MAPE와 RMSE

그 결과([그림 5]), TGNet 기본 모델(a)의 성능은 전통적인 시계열 방법인 ARIMA[11] 기반 모델보다 뛰어납니다. 반면, ConvLSTM 또는 DMVST-Net과 성능이 유사하거나 그에 미치지 못했습니다. FCN만으로는 시간적인 특징을 잘 잡아내지 못한 거죠. 이에 기본 모델(a)과 시간 안내 임베딩(b)으로 특징 맵을 구성하면 ConvLSTM, DMVST-Net보다 성능이 높아짐을 확인할 수 있습니다. 한편, STDN과 비교했을 때 MAPE 성능 척도에서는 더 뛰어난 성능을, RMSE는 약간 못 미치지마는 충분히 경쟁적인 성능을 보여줍니다.

[ 그림 5 ] 뉴욕시 택시 데이터를 이용한 성능 평가. 왼쪽은 MAPE, 오른쪽은 RMSE

주목해야 할 건 다른 모델은 날씨 정보나 이벤트 정보 등 외부 정보를 활용해 예측력을 높이고, 카카오브레인과 카카오모빌리티는 택시 하차 정보를 제외한 다른 외부 데이터를 활용하지 않았다는 점입니다. 활용하는 외부 정보가 많아질수록 학습해야 할 매개변수(parameter) 수가 늘어납니다. SOTA(state-of-the-art, 현재 최고 수준의) 성능을 낸 STDN는 약 900만 개의 매개변수를 훈련시켰죠. 하지만 이렇게 학습시켜야 할 매개변수의 양이 많을수록 모델 복잡성이 커져 학습이 어렵고 네트워크 처리 속도가 느려질 수 있습니다. 이에 TGNet은 1/8배 수준인 매개변수 규모를 갖춘 훨씬 간단한 모델 구조를 확보하면서도 경쟁력 있는 예측 정확도를 제공합니다.


택시 수요 예측에 관한 흥미로운 실험 2가지

연구팀은 TGNet이 기본 벤치마크인 뉴욕시 데이터에 대해 그 성능이 우수함을 확인했습니다. 이번 세션에서는 카카오모빌리티가 보유하고 있는 카카오택시 서울시 수요 데이터(Seoul-ride-hailing dataset)를 활용한 재미있는 실험 결과를 공유해보고자 합니다. 이 데이터에는 카카오 택시 사용자의 출발지가 서울 시내일 때 택시를 요청한 시각과 장소(x, y 좌표) 하차한 장소(x, y 좌표) 정보가 담겨 있습니다. 이를 위해 [그림 6]처럼 50행×50열의 그리드 배열로 서울시를 나누는 전처리 작업을 진행했습니다. 나머지 부분은 앞에서 기술한 내용과 같습니다.

[ 그림 6 ] 50행×50열의 그리드 배열로 서울시 전체를 나누면 총 2,500개의 구역이 생긴다. © 카카오브레인


(1) 택시 하차 정보를 활용한 수요 예측

연구팀은 평상시와는 다른 상황에서는 택시 수요를 보다 정확하게 예측하기 어렵다는 점을 인지했습니다. [그림 6]의 <택시 요청> 그래프에서 보듯이 상암 월드컵 경기장, 고척 스타디움, 장충체육관, 잠실 종합운동장과 같은 대규모 이벤트 시설에서 음악 페스티벌이나 콘서트와 같은 대규모 행사가 열리면 택시 수요는 넘쳐나는데 택시 공급량이 부족해집니다. 절대다수가 택시를 이용하지 못하는 상황이 일어나게 되는 거죠. 이와는 달리 평소보다 수요가 현저히 적어도 택시 수요 예측력이 떨어지기도 합니다.

연구팀은 이처럼 평상시와 다른 폭발적인 또는 현저히 낮은 수요가 발생하는 상황에서도 수요 예측력을 높이고자 자체 보유한 데이터를 활용한 방법을 고민했습니다. 택시 도착지 정보에서 큰 힌트를 얻었습니다. [그림 7]의 <택시 하차> 그래프를 보면 이벤트가 발생하기 전에 주변으로 많은 택시가 도착했음을 볼 수 있습니다. 특정 지역에서의 택시 하차량이 눈에 띄게 많아지는 원인에는 비정기적인 이벤트가 있을 것이니 이벤트가 종료되면 순간적으로 택시 수요가 폭발할 것이라고 추론했습니다. 실제로 이 가정을 토대로 택시 도착지 정보를 활용해(a+b+c) 모델을 훈련시킨 결과([그림 5]), 택시 도착지 정보를 활용하지 않았을 때보다(a+b) 성능이 높음을 확인할 수 있었습니다.

[ 그림 7 ] 비정기 이벤트가 자주 발생하는 지역에서의 택시 요청값과 택시 하차값


(2) 다단계 수요 예측하기(multi-step ahead forecasting)

두 번째 실험은 다단계 수요 예측하기입니다. 30분을 한 단계로 봤을 때 2단계(1시간), 3단계(1시간 30분) 등 N 단계(N=1, 2…)에서의 택시 수요를 알아보는 거죠. 기존 연구에서 다단계 수요를 예측한 주된 방법은 다음과 같습니다.

재귀적 접근 방식(recursive approach) : N 단계 수요 예측값을 다시 입력값으로 사용해 N+1단계에서의 수요를 예측을 진행합니다.

직접적 접근 방식(direct approach) : N 단계마다 예측 모델을 만듭니다.

첫 번째는 1단계를 예측하는 모델만 구현하면 되기에 상대적으로 접근이 쉽습니다. 하지만 그 성능은 좋지 않을 공산이 큽니다. 단계별 발생한 오차가 누적돼 정확도가 낮아지는 이유에서죠. 두 번째는 각 단계에서의 택시 수요를 예측하는 부분에 있어서 최적화된 결과를 기대할 수 있습니다. 그러나 단계별로 예측 모델을 두는 것은 비효율적입니다. 매개변수 수가 10개 미만인 기존 통계 모델과는 달리, 학습해야 할 매개변수가 수백만 개에 이르는 딥러닝 모델은 학습에 더 많은 자원을 사용합니다. 그런 딥러닝 모델을 단계별로 두게 된다면 자원의 비효율성이 증가하게 되겠죠.


[ 그림 8 ] TGNet은 개별 레이어 층을 추가하는 방식으로 1시간 이후의 택시 수요를 높은 정확도로 예측한다

연구팀은 다중작업 접근 방식(multi-task approach)으로 문제를 해결해보고자 했습니다. [그림 8]처럼 TGNet의 기본 모델을 구성하는 뒷단에 있는 1×1 컨볼루션 층을 N개 만드는 게 골자입니다. 앞쪽 층에서 시공간 패턴의 일반적인 특징을 잘 학습한다면, N개의 컨볼루션 층이 단계별 택시 수요값을 예측할 수 있으리라 기대했습니다

그 결과([그림 9]), 재귀적인 접근 방식(①)과 비교했을 때 성능이 월등히 높고, 직접적인 접근 방식(②)과 그 성능이 엇비슷하다는 사실을 알 수 있었습니다. 연구팀은 다단계 예측에 필요한 단계별 매개변수 수를 120만 개에서 약 250개로 줄이는 더 간단한 구조를 가지고서 다양한 시간대의 택시 수요를 예측할 수 있다는 점에서 TGNet의 잠재력을 높게 평가했습니다.

[ 그림 9 ] 3가지 방식으로 다단계 수요를 예측한 결과, 다중작업 접근 방식에서 유의미한 성능을 확인할 수 있었다


앞으로의 과제 및 연구 방향

카카오브레인과 카카오모빌리티는 과거 수요 데이터 패턴으로부터 시공간적인 특징 파악에 주안을 두고 이번 연구를 진행했습니다. 물론 과거 데이터만을 가지고서는 모든 돌발상황을 고려한 택시 수요 예측이 어렵습니다. 따라서 불확실한 미래에 영향을 미치는 정보를 예측에 반영해 모델의 성능을 높이는 게 중요한 과제입니다. 하지만 지구상에 존재하는 모든 외부 데이터를 활용할 수 없다는 현실적인 상황을 고려해야 합니다. 연구팀은 어떤 지역의 수요가 평상시와 다르며 과거 데이터만으로는 정확한 예측이 힘든 상황임을 스스로 인지하는 모델을 만드는 게 궁극적인 목표가 되어야 한다고 생각합니다. 이런 상황을 미리 알 수 있다면 수요-공급의 불균형이 나타나기 전에 적절한 대응을 펼칠 수 있기 때문이죠. 연구팀은 TGNet을 택시 수요 예측을 위한 디딤돌로 삼아 수요가 변화하는 상황을 스스로 인지하고, 여기에 적절하게 조치하는 법을 스스로 터득하는 모델에 관한 후속 연구를 진행할 계획입니다.


참고
[1] Neural Information Processing Systems의 약자. 기계학습 국제컨퍼런스(International Conference on Machine Learning, ICML)과 더불어 AI 연구 결과가 발표되는 대표적인 학회로 꼽힌다.
[2] 이미지의 공간 정보를 유지하면서 특징을 효과적으로 인식하고 강조하는 딥러닝 모델. 특징을 추출하는 영역은 컨볼루션 층은 풀링 층로 구성된다. 컨볼루션 층은 필터(filter)를 사용해 공유 파라미터 수를 최소화하면서 이미지의 특징을 찾는다. 풀링 층은 특징을 강화하고 모은다.
[3] long short term memory의 약자. RNN의 셀(cell)을 세 가지 게이트로 구성된 메모리 블록(memory block)으로 대체한 구조를 가리킨다. 이전 상태에서 넘어온 새로운 정보를 얼마나 반영할지(output gate), 어떤 정보를 얼마나 입력할지(input gate), 어떤 정보를 얼마나 출력할지(forget gate)를 가중치를 통해 결정한다. 이는 가장 기본적인 구조이며, 모델마다 그 구조가 조금씩 다르다.
[4] 중간 계층을 건너뛰는 연결을 추가해 오류를 효율적으로 전파(propergate)할 수 있는 구조
[5] 어떤 출력 층에 존재하는 하나의 뉴런에 영향을 미치는 입력 뉴런들의 공간 크기
[6] 풀링 층을 처리하는 방법의 하나로, 정사각 행렬의 특정 영역의 평균을 구한다.
[7] 특징맵의 크기를 키울 때 쓰는 방법론. 다른 말로 업샘플링(upsampling)이 있다.
[8] 다른 종류의 데이터를 딥러닝 모델에 학습시키는 방식은 다음과 같다. 데이터 종류별로 특징을 각각 따로 뽑은 뒤 이 특징을 합친다(fusion). 입력층과 가까운 은닉층에서 특징을 합치는 것을 앞단에서의 퓨전(early fusion), 출력층 쪽에서 합치는 것을 뒷단에서의 퓨전(late fusion)이라고 한다.
[9] mean absolute percentage error의 약자
[10] root mean square error의 약자
[11] autoregressive integrated moving average의 약자.
이 글을 쓴 사람들
samantha.lee
이수경 | samantha.lee@kakaobrain.com
2016년 3월 알파고와 이세돌 9단이 펼치는 세기의 대결을 두 눈으로 목도한 이후 인공지능을 제대로 공부해봐야겠다고 결심했습니다. 인공지능 본진이자 연구소인 카카오브레인으로 걸어들어온 이유죠. 인공지능 기술과 이로 인해 바뀔 미래 사회를 다루는 글을 통해 사람들과 소통하고자 합니다.
damien.lee
이도엽 | damien.lee@kakaobrain.com
인공지능 기술이 세상을 밝고 행복하게 만들어주길 기대하며 매일 조금씩 성장해나가고 있습니다. 카카오브레인에서 시계열 데이터와 이상 탐지를 연구하고 있습니다. 사람이 해결하지 못한 문제를 푸는 인공지능을 통해 더욱 윤택하고 안전한 인간 세상을 만드는 데 일조하고자 합니다.