[Hello AI]예보관은 날씨를 어떻게 예측할까…과거 데이터 활용하는 순환 신경망 ‘RNN’ [AI 이야기]


[AI 이야기]


누적된 시계열 정보를 미래 예측에 활용…연산 과부하 줄이려고 중요 데이터만 ‘기억’하기도




[한경비즈니스 칼럼=이주열 LG CNS AI빅데이터연구소장·김명지 AI빅데이터연구소 책임] 시계열 예측 분석은 대표적인 데이터 분석 과제다. 이는 순차적인 시계열 데이터를 활용해 근미래에 어떤 데이터 값이 나타날지 예측하는 과제로, 시간 흐름에 따라 변화하는 로그 데이터를 활용한다. 주가 예측이나 기상 예측이 그 예다. 시간대별로 기온을 예측해야 하는 기상청을 예로 들어보자. 다음 시각의 기상 정보를 예측하려고 할 때 한 시각의 입력 데이터만 고려하지 않을 것이다.


시간 흐름에 따른 데이터 처리하기

현 시각의 기온을 예측할 때 이전 시각의 기온, 바람의 풍속, 습도 데이터가 중요하다고 가정하자. 일기 예보관은 세 시간마다 이전 시각까지 확보한 데이터를 가지고 현 시각의 기온이 어떻게 될지 예측할 것이다,


9시엔 이전 시각의 기온 10도, 풍속 시속 29km, 습도 80%라는 값을 활용해 9시의 기온이 13도가 될 것이라고 예측한다. 12시에는 9시의 기온(13도), 풍속과 습도를 가지고 19도가 될 것이라고 예측하고 15시에도 마찬가지 작업을 한다. 매 시각마다 예측하고자 하는 Y값(기온)을 맞추기 위해 이전의 기온·풍속·습도라는 입력 값 X를 활용하는 것이다. 여기까지는 기존의 인공지능(AI) 학습 방식과 동일하다. 입력 값 X를 가지고 Y를 예측한다는 것은 이미지를 넣으면 강아지와 고양이를 구별한다든가 텍스트 문장을 넣어 긍정과 부정을 분류하는 문제와 같다.


여기서 한 아이디어가 머릿속에 떠오른다. 일기 예보관은 매시간 같은 일을 반복하는데 일을 반복하면서 쌓인 예측 노하우가 있을 것이다. 또한 밤낮이라는 시간의 흐름, 계절이라는 흐름에 따른 패턴이 분명히 존재할 텐데 지금처럼 해당 시각의 입력 값 3개만으로 기온을 예측하는 것은 활용할 수 있는 정보를 다 쓰지 못하는 것처럼 보인다. 한 시각의 데이터 세 개 만으로 예측할 수도 있겠지만 과거의 정보들이 연속된 형태니까 어떤 식으로든 현 시각의 예측에 도움이 될 것이다.




순환 신경망 RNN

이런 형태의 데이터를 잘 다루기 위한 인공신경망 종류가 있다. ‘순환 신경망’이라고 하는 RNN(Recurrent Neural Network)이다.


기존의 신경망이 벡터 또는 매트릭스로 변환된 입력 데이터를 가지고 출력한다면 RNN 역시 동일 작업을 하지만 하나 차이점이 있다. RNN은 데이터를 처리해 결과를 출력했던 과거 과정의 일부를 가져와 현시점에서 데이터를 처리하고 결과를 출력하는 데 도움을 주는데 에서 오른쪽을 향하는 가로 방향의 화살표에 해당한다. 이때 벡터 형태로 누적된 과거의 정보(feature)가 넘어간다. 그래서 둘째 시점에는 해당 시각의 입력 데이터뿐만 아니라 첫째 시점의 누적된 정보를 포함해 예측하게 된다. 셋째 시점에는 첫째와 둘째 시점의 누적된 정보가 반영될 것이고 넷째 시점이 되면 세 시점의 압축된 정보가 도움을 준다. 입력 데이터만으로 예측하는 것보다 과거의 누적된 정보까지 활용한다면 더 개선된 예측을 할 수 있다.


RNN의 특징은 다음과 같다.

장점1 : RNN은 시간 흐름에 따른 과거 정보를 누적할 수 있다. 기상청 기온 예측 사례와 마찬가지로 RNN이라는 특수한 형태의 신경망은 입력 데이터뿐만 아니라 과거의 처리 내역을 반영해 더 나은 결정을 할 수 있다는 것이 가장 큰 장점이다.


장점2 : RNN은 가변 길이의 데이터를 처리할 수 있다. 기온 예측 사례의 경우 3시각 단위로 예측하는데 이러한 단위 시간마다의 매 시점을 타임스텝(timestep)이라고 한다. 타임스텝은 시간 단위가 될 수도 있고 일·월·초 단위 등 순서만 있다면 구성할 수 있다. RNN은 과거의 정보를 매 타임스텝마다 압축해 다음 타임스텝으로 넘기므로 데이터의 길이에 무관하게 자유롭게 구성할 수 있다. 하루 치 데이터로 예측할 수도 있고 1주일 치, 한 달 치 데이터를 모아 예측할 수도 있다.


장점3 : RNN은 다양한 구성의 모델을 만들 수 있다. 유연한 구조를 가진 RNN은 상황에 따라 다양하게 입력 데이터를 처리, 누적하고 결과를 예측하도록 신경망을 구성할 수 있다.


이때 입력 데이터의 정보를 누적하는 부분을 인코딩(encoding), 결과를 출력하는 부분을 디코딩(decoding)이라고 한다.


이때의 단점은 연산 속도가 느리다는 것이다. RNN은 과거의 처리 내역을 현재에 반영해야 하기 때문에 현시점의 데이터를 처리하려면 반드시 이전 시점의 데이터가 처리 완료돼야 한다. 따라서 병렬 학습이 어렵고 순차적으로 데이터를 처리해야 하는 성질 때문에 연산 속도가 다소 느린 편이다. 딥러닝 모델 학습 시 많은 경우 그래픽처리장치(GPU) 서버를 활용하곤 하는데 RNN을 학습할 때 GPU 병렬 처리의 이점을 잘 활용할 수 없는 한계가 있다. 정형 데이터(수치·범주형 등)를 예측할 때 속도 저하를 크게 체감하지 못하는 것이 대부분이지만 텍스트 데이터를 다룰 때는 종종 느린 속도가 문제가 되곤 한다.


또한 실질적으로 과거 정보를 잘 활용할 수 있는 모델은 아니다. 이론적으로 RNN은 과거의 정보가 누적되며 현재 추론에 도움을 주지만 실질적으로 먼 과거의 정보를 반영하기는 힘들다. RNN은 한 타임스텝씩 정보를 누적해 인코딩하는데 먼 과거의 정보는 여러 번 압축되고 누적되다 보니 거의 영향을 미치지 못한다. 이를 RNN의 장기 종속성 문제(long-term dependency)라고 한다.


이는 사람도 마찬가지다. 오늘 점심 메뉴는 뭐였는지 기억하지만 어제 점심이 뭐였는지, 1주일 전 점심은 무엇이었는지 바로 기억할 수 있는 사람은 많지 않다. 최근의 정보일수록 잘 기억하고 반영하며 먼 과거일수록 잊어버리는 경향이 인공 신경망에서도 동일하게 나타난다.





RNN의 성능을 보완한 LSTM

RNN의 이러한 단점을 해결하는 방안도 나왔다. 먼 과거 시점의 정보 중 중요한 것은 기억하고 불필요한 것은 잊어 버리도록 스스로 조절할 수 있는 RNN 유닛을 만드는 것이다. 대표적으로 LSTM(Long-Short Term Memory) 유닛이 있다. 장·단기 메모리 유닛이라는 뜻인데 아래와 같은 구성이다.


LSTM에는 세 부분의 게이트(gate)가 있는데 정보의 흐름을 조절하는 관문 역할을 수행한다. 의 A 부분은 망각 게이트(forget gate)라고 불리며 말 그대로 잊어버림에 대해 조절한다. 과거의 정보 중 불필요하다고 생각하는 부분은 망각하기로 결정한다. B 부분은 입력 게이트(input gate)로, 현재의 정보(input data)를 얼마나 반영할지 결정한다. C 부분은 출력 게이트(output gate)로, 현시점에 연산된 최종 정보를 다음 시점에 얼마나 넘길지 결정한다. 이 세 게이트는 정보의 흐름을 AI가 자체적으로 더 원활하게 조절하는 기능을 한다. 따라서 데이터가 길어진다고 해도 기본 RNN에 비해 더 좋은 예측을 할 수 있다.


오늘날 인공 신경망을 활용하는 대부분의 시계열 예측은 아주 간단한 과제를 제외하고는 LSTM과 같은 개선된 유닛을 활용한다. 대부분의 딥러닝 학습용 프레임워크에서 이를 쉽게 구현할 수 있도록 기능을 제공하고 있다.




사람은 오래전부터 과거의 경험을 통해 미래를 예견하고자 했다. 사람은 한 번 수행했던 업무라면 노하우를 얻어 다음에 더 빠르고 잘 수행할 수 있고 과거에 실패를 경험했다면 같은 실패를 다시 경험할 가능성도 낮다. 인간의 신경계를 본뜬 인공 신경망에도 비슷한 기능을 수행하는 알고리즘이 있다. 인공 신경망에서는 RNN이라고 불리는 특별한 형태의 신경망이 그 역할을 수행한다. AI가 미래를 예측한다는 것은 미래 예언의 개념이 아니다. 과거의 패턴을 통해 근미래에 벌어질 가능성이 가장 높은 데이터를 수리 통계적으로 유추하는 것이다.

[본 기사는 한경비즈니스 제 1300호(2020.10.26 ~ 2020.11.01) 기사입니다.]
상단 바로가기