**데이터랩스팀 김태훈

시작하며

인공지능의 핵심 기술인 딥러닝 (Deep learning)은 우리가 사용하고 있는 쇼핑, 영화 등 다양한 애플리케이션에 적용될 정도로 일반화되고 있다. 특히 쇼핑 애플리케이션에서 개인별 추천 기능의 비약적인 발전은 역시 딥러닝 기술로 가능하게 됐다. 상품 추천을 통해 사용자는 손쉽게 원하는 상품을 찾을 수 있고, 기업은 효과적인 상품 노출로 매출 이익을 극대화하고 있다.

최근에는 한 단계 발전한 Differential Neural Computer (이하 DNC)라는 새로운 딥러닝 모델이 주목 받고 있다. 이세돌 9단과의 바둑 대결로 유명한 알파고 개발사 구글 딥 마인드 (Google DeepMind)는 최근 새로운 패러다임을 제시하는 논문인 “Hybrid computing using a neural network with dynamic external memory” [1]을 발표했다.

이 모델은 기존의 뉴럴 네트워크 (Neural network)에 추가로 별도의 외부 메모리 (external memory)을 활용함으로써 기존 알고리즘의 성능을 비약적으로 향상 시켰다. external memory는 단순히 기록하는 역할뿐만 아니라 추론도 할 수 있어 딥러닝 알고리즘 성능향상에 도움을 줄 수 있고, 기존의 딥러닝 모델을 활용할 수 있는 장점이 있다. 여기에서 말하는 추론은 학습 데이터에 존재하지 않는 관계를 찾아내는 것을 말한다.

본 글에서는 DNC의 특징과 구조를 설명하고, GitHub에 공개된 예제 코드를 활용함으로써 알고리즘의 이해를 돕고자 한다. 딥 마인드의 공식 소스코드는 추후 공개 예정이라고 한다.

DNC의 특징 및 예제

DNC의 특징으로는 크게 추론과 일반화를 들 수 있다. 본 글에서는 지면 공간의 제약상 전체 알고리즘의 구체적인 수식 설명보다는 DNC의 특징 및 각 모듈의 역할에 소개하고자 한다. 구체적인 내용은 네이처 논문을 참고하면 된다.

기존의 딥러닝 알고리즘은 학습데이터로 모델을 학습시키고, 학습된 모델은 새로운 데이터가 들어왔을 때 학습된 모델을 기반으로 예측하게 된다. 여기에서 예측은 분류(classification), 회기 (regression)등의 문제가 될 수 있다. 따라서 대용량의 학습 데이터를 활용할수록 성능이 향상되며, 거기에 딥러닝은 대용량데이터 처리에 적합하다는 장점이 있다. 하지만, 기존 딥러닝의 문제는 하나의 대상을 기계에 완전히 학습시키기 위해선 모든 경우의 수에 대해 학습시켜야 하는 문제가 있다. 하지만 이는 현실적으로 불가능한데, 모든 경우의 수를 학습시키기에는 학습 데이터가 기하급수적으로 커지고, 이를 현재의 컴퓨팅 파워로는 해결하기 어려운 문제들이 많기 때문이다. DNC는 이러한 문제를 해결하고자 사전에 알려주지 않은 정보에 대해서도 기존에 존재하는 데이터를 external memory에 저장하고 활용해서 추론하는 과정을 거치도록 한다.

DNC[1] 논문에서는 기존 알고리즘과 성능 비교를 위해 자연어 처리, 그래프 문제, 강화 학습(Reinforcement learning)문제에 적용했다. 이뿐만 아니라 여기에 언급하지 않은 다른 분야에도 적용할 수 있다. 이렇듯 DNC는 한 분야에 종속되지 않고 다양한 분야에 적용할 수 있는 일반적인 프레임워크다.

논문[1]의 저자들은 자연어 처리 분야 질문 답변 데이터 셋인 bAbI를 통해 언어로 된 질문에 답을 하는 실험으로 기존 접근 방식보다 높은 정확도로 답변함을 확인할 수 있었다. bAbI데이터 셋은 스토리라고 하는 사전 정보와 이에 대한 질문과 답변으로 이루어진 데이터 셋이다. 예를 들어, “John이 운동장에 있다. John이 축구공을 주웠다.”가 스토리이고 “축구공은 어디에 있나?”가 질문이며, “운동장”이 답변인 식이다. 이러한 데이터를 학습시키고 학습된 모델로 스토리와 질문을 제공하며 답변을 얻는 방식이다.

그래프 문제에도 적용을 했는데, 런던 지하철 지도를 기반으로 한 지점에서 다른 지점으로 이동하는 경로를 찾는 순회 (traversal) 문제, 그 경로가 최단거리 (shortest-path)를 찾는 문제에 적용했다. LSTM이라는 기존의 방식과 비교했을 때, LSTM은 37%의 정확도, DNC의 경우 LSTM 학습 시 사용한 학습 데이터의 절반만 사용했음에도 98.8%의 정확도를 보였다.

또, 가계도에서 두 인물 간의 관계를 추론하는 문제에도 적용했다. 이 중 가계도 예제를 설명하면 (그림 1)과 같다. 학습 데이터로 (인물1, 인물2, 관계)로 이루어진 “triple”을 임의로 생성해 DNC 모델을 학습시킨다 (그림 1의 Family tree input 부분). 그리고 DNC에 인물1과 관계에 해당하는 인물이 누구인지 질문을 하는 경우 (그림 1의 Inference question 부분. 대답을 해야 하는 부분은 밑줄로 표시) DNC에서는 해당하는 인물을 찾아줬다. 이 두 인물 간의 관계는 학습 데이터에 존재하지 않았으며, 기존 학습데이터에 존재하는 관계를 바탕으로 두 인물의 관계를 추론한 것이었다.

DNC는 위와 같이 다양한 알고리즘에 일반화된 버전으로, 모델을 학습시킬 때 각 문제 별로 구체적인 각각의 알고리즘을 별도로 구현해 적용하는 것이 아닌, 학습시키는 데이터의 특성에 따라서 모델이 스스로 학습하고 데이터로부터 데이터 간의 관계를 학습하는 형태를 띠고 있다. 이를 수행하는데 컴퓨터의 메모리 구조와 유사한 external memory를 활용하였으며, 장기간의 저장하고 추후 학습 과정에서 활용하였다. 메모리 구조 전체가 미분가능하여 end-to-end gradient descent로 학습이 가능하다는 점도 특징적이다. 즉, 메모리를 어떻게 활용해야하는지를 학습하는 구조이다.

스크린샷 2017-03-07 오후 4.00.23

DNC의 구조

스크린샷 2017-03-07 오후 4.00.38