Neural Turing Machines: 외부 메모리를 붙인 미분 가능한 컴퓨터 (NTM)

개요

컴퓨터 프로그램은 기본 연산, 분기, 그리고 외부 메모리에 값을 써 두었다가 다시 읽는 일로 돌아가는데, 당시 신경망은 이 가운데 분기와 외부 메모리를 거의 쓰지 않았다. RNN은 이론상 튜링 완전(Turing-complete, 어떤 계산이든 흉내 낼 수 있음)하지만 “원리상 가능한 것이 실제로 쉬운 것은 아니다”. 기억을 전부 은닉 상태 안에 넣어야 하는 LSTM은 길이 20까지의 수열 복사를 거의 완벽히 배우고도 그보다 긴 수열에서는 빠르게 무너진다. 이 논문의 통찰은 메모리 주소를 “한 칸을 고르는” 이산 연산 대신 모든 칸에 대한 가중치 분포로 바꾸면, 즉 attention으로 흐릿하게 읽고 쓰면 컴퓨터 전체가 미분 가능해져 경사하강법으로 프로그램을 배울 수 있다는 것이다. 그래서 NTM은 신경망 controller에 메모리 행렬을 붙이고, head가 내놓는 가중치로 칸들을 가중 평균해 읽고, 지운 뒤 더하는 방식으로 쓴다. 가중치는 두 방식을 섞어 만든다. content-based addressing은 찾는 내용과 비슷한 칸으로 곧장 뛰고(사전에서 단어로 찾기), location-based addressing은 이전에 보던 위치에서 정해진 칸 수만큼 옮겨 간다(책장을 한 장씩 넘기기). 효과는 일반화에서 드러났다. 길이 20까지만 복사를 배운 NTM은 길이 120 수열도 몇 군데 실수만 빼고 복사했고, 메모리를 들여다보면 “순서대로 쓰고, 처음으로 돌아가, 순서대로 읽는” 배열 순회 알고리즘이 보였다. 연상 기억 과제에서는 LSTM이 백만 에피소드가 지나도 비용 0에 닿지 못한 반면 NTM은 약 3만 에피소드 안에 거의 0에 닿았고, feedforward controller NTM은 학습 때 최대 6개였던 항목 수를 12개로 늘려도 거의 완벽했다.

Implication: 저장(메모리 행렬)과 계산(controller)을 떼어 놓으면 파라미터 수를 늘리지 않고도 메모리를 키울 수 있고, attention을 “어느 칸을 읽고 쓸지 고르는 주소”로 쓸 수 있다. 다만 증거는 작은 합성 과제 5개의 단일 학습 곡선과 몇 개의 시각화이며, 반복 횟수 세기처럼 수를 다뤄야 하는 부분에서는 일반화하지 못했다.

📎 https://arxiv.org/abs/1410.5401

배경과 문제

문제의 출발점 (Section 1, author-stated). 컴퓨터 프로그램은 세 가지 기본 장치를 쓴다. 기본 연산(덧셈 등), 논리적 흐름 제어(분기), 그리고 계산 도중 쓰고 읽는 외부 메모리다(Von Neumann 1945). 기계학습은 복잡한 데이터를 모델링하는 데는 성공했지만 흐름 제어와 외부 메모리는 대체로 무시해 왔다. RNN은 Siegelmann & Sontag(1995)에 따라 튜링 완전하므로 “제대로 배선하면” 어떤 절차든 흉내 낼 수 있다. 그러나 원리상 가능한 것이 실제로 쉬운 것은 아니다. 저자들은 튜링이 유한 상태 기계에 무한한 테이프를 붙였듯 RNN에 크고 주소 지정이 가능한 메모리를 붙이고, 이것을 Neural Turing Machine이라 부른다.

인지과학 쪽 동기 (Section 1, 2.1–2.2, author-stated).

  • 사람의 인지에서 알고리즘 연산과 가장 닮은 것은 working memory(작업 기억, 정보를 잠깐 붙잡아 두고 규칙에 따라 조작하는 능력)다. NTM은 근사적 규칙을 “rapidly-created variables(빨리 만들어지는 변수, Hadley 2009)“에 적용하는 과제를 풀도록 설계되었다. 일반 컴퓨터에서 3과 4를 레지스터에 넣고 더해 7을 만드는 것과 같은 변수 바인딩이다(Minsky 1967).
  • 대부분의 작업 기억 모델은 기호 데이터 위에서 고정된 절차를 쓴다. NTM은 작업 기억을 쓰는 법을 스스로 배운다는 점이 다르다.
  • 신경과학 쪽 모델 중 가장 가까운 것은 Hazy et al.(2006)이다. 이 모델도 LSTM과 비슷하게 정보를 메모리 슬롯으로 들여보내는 게이트를 갖는다. 그러나 정교한 메모리 주소 지정이 없어서 비교적 단순한 원자적 데이터만 저장·회상할 수 있다. 주소 지정은 계산 신경과학 모델에서 보통 빠져 있지만, Gallistel & King(2009)과 Marcus(2003)는 뇌에도 주소 지정이 관여한다고 주장했다.
  • Fodor & Pylyshyn(1988)은 connectionist(연결주의, 신경망으로 인지를 설명하는 입장) 모델에 두 가지를 비판했다. variable-binding(어떤 값을 자료구조의 특정 자리에 묶는 것)을 못 하고, 고정 길이 입력 때문에 variable-length structure(가변 길이 구조)를 처리하지 못한다는 것이다. Hinton, Smolensky, Touretzky, Pollack, Plate, Kanerva가 이에 대응하는 메커니즘을 연구했고, NTM은 이 흐름을 잇는다고 저자는 쓴다.

신경망 쪽 계보 (Section 2.3, author-stated).

  • LSTM(Hochreiter & Schmidhuber 1997)은 vanishing/exploding gradient(기울기가 시간을 거슬러 갈수록 사라지거나 폭발하는 문제)를 풀려고 perfect integrator(완전 적분기)를 넣었다. x(t+1) = x(t) + i(t)에 문맥에 따라 열리고 닫히는 게이트를 붙이면 x(t+1) = x(t) + g(context)i(t)가 되어, 정보를 무기한 선택적으로 저장할 수 있다.
  • RNN은 가변 길이 구조를 그대로 처리하므로 음성 인식, 텍스트 생성, 손글씨 생성, 기계 번역(Sutskever et al. 2014)에 쓰였다.
  • 직접적인 선구 연구로 미분 가능한 attention(Graves 2013; Bahdanau et al. 2014)과, RNN으로 만든 program search(Hochreiter et al. 2001b; 외부 stack 메모리를 붙인 Das et al. 1992)를 든다.

기존 방법의 한계와 이 논문의 차이 (analyst-inference, 위 서술의 정리). LSTM의 기억은 은닉 상태 크기에 묶여 있고, 은닉 상태를 키우면 파라미터가 제곱으로 늘어난다(Section 4.6, author-stated). Hazy et al. 류 모델에는 주소가 없다. NTM은 크기를 따로 정할 수 있는 메모리 행렬과, 내용과 위치 두 방식의 미분 가능한 주소 지정을 함께 가진다는 점에서 이 둘과 갈린다.

지표

지표무엇을 세는가단위·범위방향분모·정규화측정 조건원문 위치
Cost per sequence (bits-per-sequence)이진 목표에 대한 cross-entropy(예측 확률이 정답에서 얼마나 먼지 재는 손실)를 비트 단위로 센 값bits, 0 이상낮을수록 좋음시퀀스 하나 단위. 배치 평균 방식은 보고되지 않았다모든 과제는 logistic sigmoid 출력층 + cross-entropy로 학습한 지도학습. 학습 곡선의 x축은 본 시퀀스 수(천 단위). 곡선이 학습 데이터 기준인지 검증 데이터 기준인지는 N-Gram 과제 말고는 명시되지 않았다Section 4 도입, Figure 3·7·10·13·18
일반화 비용 (항목 수별)학습 범위보다 긴 입력에서의 cost per sequencebits낮을수록 좋음시퀀스 하나 단위연상 기억 과제에서 항목 수 6–20. 학습은 항목 2–6개Figure 11
N-Gram 검증 비용과 최적 추정기같은 분포에서 뽑은 검증 시퀀스에서의 비용을 Bayes 최적 추정기(Eq. 10)의 비용과 비교bits낮을수록 좋음. 최적 추정기가 하한길이 200 시퀀스 1000개Beta(½, ½)에서 뽑은 6-Gram 확률표Section 4.4, Figure 13
정성적 일반화 시각화목표와 출력 비트를 나란히 그린 그림색(0–1 출력값)목표와 같을수록 좋음해당 없음복사·반복 복사 과제에서 학습보다 긴 길이 또는 많은 반복Figure 4·5·8

복사·반복 복사 과제의 길이 일반화는 숫자 지표 없이 위 시각화로만 보여 준다(analyst-inference). 파라미터 수(Table 1–3)는 성능 지표가 아니라 모델 크기를 알려 주는 설정값이다.

방법과 벤치마크 구성

구조 개요 (Section 3, Figure 1)

NTM은 두 부품으로 이루어진다. 하나는 신경망 controller이고, 다른 하나는 memory bank다(Section 3). controller는 보통 신경망처럼 외부 입력을 받아 외부 출력을 낸다. 그와 동시에 head(읽기·쓰기 동작을 정하는 controller 출력 묶음, 튜링 기계의 머리에서 따온 이름)를 통해 메모리 행렬을 선택적으로 읽고 쓴다.

핵심 설계는 모든 부품이 미분 가능하다는 것이다. 일반 컴퓨터처럼 원소 하나만 주소로 고르지 않고, 모든 메모리 원소와 정도의 차이를 두고 상호작용하는 “흐릿한(blurry)” 읽기·쓰기를 정의한다. 얼마나 흐릿한지는 attention의 “focus(초점)“가 정한다. 초점이 각 읽기·쓰기를 메모리의 작은 부분으로 제한하므로 상호작용이 sparse(희소)해지고, 그래서 NTM은 간섭 없이 데이터를 저장하는 쪽으로 치우친다(Section 3, author-stated).

읽기 (Section 3.1, Eq. 1–2)

  • 메모리 M_t는 N × M 행렬이다. N은 메모리 위치(행) 수, M은 위치마다 담기는 벡터 길이다.
  • 읽기 head는 N개 위치에 대한 가중치 w_t를 낸다. 가중치는 합이 1이고 각 원소가 0과 1 사이다(Eq. 1).
  • 읽은 벡터 r_t는 메모리 행들의 가중 평균(convex combination)이다(Eq. 2). 메모리와 가중치 양쪽에 대해 미분 가능하다.

쓰기 (Section 3.2, Eq. 3–4)

LSTM의 input gate와 forget gate에서 착안해 쓰기를 **erase(지우기)**와 add(더하기) 두 단계로 나눈다.

  • erase: 쓰기 가중치 w_t와 원소가 (0, 1)인 erase 벡터 e_t로, 각 위치의 기존 내용에 [1 − w_t(i)e_t]를 원소별로 곱한다(Eq. 3). 가중치와 erase 원소가 둘 다 1일 때만 0으로 지워지고, 둘 중 하나라도 0이면 그대로 남는다.
  • add: 길이 M인 add 벡터 a_t에 w_t(i)를 곱해 더한다(Eq. 4).
  • 쓰기 head가 여럿이면 곱셈과 덧셈은 순서를 바꿔도 같으므로 순서가 상관없다. erase·add 벡터가 각각 M개 성분을 가져서 위치 안의 어느 원소를 바꿀지 세밀하게 고를 수 있다.

주소 지정 (Section 3.3, Figure 2, Eq. 5–9)

가중치 w_t는 아래 네 단계를 차례로 거쳐 만든다(Figure 2).

  1. Content addressing (Section 3.3.1, Eq. 5–6). head가 길이 M의 key 벡터 k_t와 양수 key strength β_t를 낸다. 각 메모리 행과 key의 cosine similarity(두 벡터 방향이 얼마나 같은지, Eq. 6)에 β_t를 곱하고 softmax를 취해 w^c_t를 얻는다(Eq. 5). β_t가 클수록 초점이 날카로워진다. Hopfield(1982)의 content-addressing과 관련된다.
  2. Interpolation (Section 3.3.2, Eq. 7). (0, 1) 범위의 interpolation gate g_t로 w^c_t와 이전 단계 가중치 w_{t−1}을 섞어 w^g_t를 만든다. g_t = 0이면 내용 주소를 완전히 무시하고 이전 가중치를 쓴다. g_t = 1이면 이전 가중치를 무시하고 내용 주소를 쓴다.
  3. Convolutional shift (Eq. 8). shift weighting s_t(허용된 정수 이동량에 대한 분포)로 w^g_t를 원형으로 돌린다(위치 번호는 mod N). 예를 들어 이동 −1, 0, 1만 허용하면 s_t는 원소 3개다. s_t는 controller에 붙인 softmax로 만들 수도 있고, 폭 1짜리 균등 분포의 하한을 나타내는 스칼라 하나로 만들 수도 있다(6.7이면 s_t(6) = 0.3, s_t(7) = 0.7).
  4. Sharpening (Eq. 9). 이동 분포가 날카롭지 않으면 가중치가 점점 퍼진다. 예를 들어 −1, 0, 1에 0.1, 0.8, 0.1을 주면 한 점에 모인 초점이 세 점으로 번진다. 그래서 γ_t ≥ 1 제곱 후 다시 정규화해 초점을 다시 모은다.

이 조합은 세 가지 모드로 동작한다(Section 3.3, author-stated). 내용 주소만 쓰기, 내용 주소로 찾은 뒤 이동하기(연속된 데이터 블록을 찾은 다음 그 안의 특정 원소로 가기), 내용 주소 없이 이전 가중치만 이동하기(같은 거리씩 나아가며 주소들을 순회하기).

저자는 내용 주소가 위치 주소보다 엄밀히 더 일반적이라고 쓴다. 메모리 내용 안에 위치 정보를 담을 수 있기 때문이다. 그런데도 실험에서는 위치 주소를 기본 연산으로 주는 것이 “일부 형태의 일반화에 필수적”이었다고 해서 두 방식을 함께 쓴다(Section 3.3, author-stated). 이 주장을 뒷받침하는 비교 실험은 본문에 보고되지 않았다.

Controller (Section 3.4)

자유 설계 변수는 메모리 크기, 읽기·쓰기 head 수, 허용 이동 범위, 그리고 가장 중요한 controller 종류(recurrent 대 feedforward)다(author-stated).

  • LSTM controller: 자체 은닉 상태가 CPU의 레지스터처럼 여러 단계에 걸쳐 정보를 섞는다.
  • Feedforward controller: 매 단계 같은 메모리 위치를 읽고 쓰는 방식으로 recurrent 네트워크를 흉내 낼 수 있다. 메모리 읽기·쓰기 패턴이 RNN 내부 상태보다 해석하기 쉽다. 대신 동시에 쓰는 head 수가 계산의 병목이다. 읽기 head가 하나면 한 단계에 메모리 벡터 하나에 대한 단항 변환(unary transform)만, 둘이면 이항 변환만 할 수 있다.

실험 구성 (Section 4, 4.6, Table 1–3)

  • 비교 대상 세 가지: feedforward controller NTM, LSTM controller NTM, 표준 LSTM.
  • 에피소드 초기화: 입력 시퀀스마다 상태를 리셋한다. LSTM은 이전 은닉 상태를 학습된 bias 벡터로, NTM은 controller 상태·이전 읽기 벡터·메모리 내용을 모두 bias 값으로 리셋한다.
  • 학습: 이진 목표의 지도학습. RMSProp(Graves 2013 형식, momentum 0.9). 역전파 때 모든 기울기 성분을 원소별로 (−10, 10)에 clip한다. 모든 LSTM은 은닉층 3개를 쌓았다.
  • 메모리 크기: 모든 NTM 실험에서 128 × 20(Table 1–2). 즉 N = 128 위치, M = 20.
  • 과제 5개 (Section 4.1–4.5):
과제입력목표학습 범위무엇을 시험하나
Copy8비트 무작위 벡터 수열 + 구분 플래그같은 수열(플래그 제외). 목표를 내는 동안 입력 없음길이 1–20 무작위긴 시간 저장·회상, LSTM보다 긴 지연을 잇는가
Repeat Copy8비트 무작위 벡터 수열 + 반복 횟수 스칼라(별도 채널, 평균 0·분산 1로 정규화)수열을 지정 횟수만큼 반복한 뒤 끝 표시길이·반복 횟수 모두 1–10 무작위간단한 중첩 함수, “for loop”
Associative Recall항목 여러 개. 항목은 6비트 벡터 3개(항목당 18비트)이고 양쪽에 구분 기호질의한 항목의 바로 다음 항목에피소드당 항목 2–6개한 데이터가 다른 데이터를 가리키는 indirection(간접 참조)
Dynamic N-GramsBeta(½, ½)에서 32개 확률을 뽑은 6-Gram 표로 생성한 비트 200개(처음 5비트는 p = 0.5 Bernoulli)다음 비트매 예제마다 새 확률표메모리를 다시 쓸 수 있는 표로 써서 전이 통계를 세는가
Priority Sort이진 벡터 20개 + 각 벡터의 우선순위([−1, 1] 균등)우선순위가 가장 높은 16개 벡터를 정렬한 수열위와 같음정렬. 16으로 제한한 것은 깊이 4의 binary heap sort를 쓰는지 보려는 의도(각주 5)
  • 설정값은 과제·모델별로 다르다(Table 1–3). NTM 파라미터 수는 14,656–508,305, LSTM은 331,905–5,312,007이다. 저자는 LSTM 파라미터가 은닉 유닛 수의 제곱으로 늘지만 NTM 파라미터는 메모리 위치 수에 따라 늘지 않는다고 강조한다(Section 4.6).
  • 보고되지 않은 것: 실험별 허용 이동 범위, shift weighting을 두 방식 중 무엇으로 만들었는지, 반복 실행(seed) 수, 하이퍼파라미터 탐색 절차, 학습 데이터 생성 방식의 세부(무작위 생성으로 읽히지만 명시적 문장은 없음).

주요 결과

주장근거 위치관찰/수치조건·주의출처 라벨
Copy에서 NTM은 LSTM보다 훨씬 빨리 배우고 더 낮은 비용으로 수렴한다Section 4.1, Figure 3두 NTM은 초반에 비용이 거의 0이 된다. LSTM은 1,000천 시퀀스까지 약 0.5 bit 근처에 남는다단일 곡선. 수치는 그래프 판독author-stated (수치는 analyst-inference)
학습 곡선 차이가 커서 두 모델이 문제를 푸는 방식이 질적으로 다르다고 본다Section 4.1—저자의 해석이다author-stated
NTM은 학습 길이(≤ 20)보다 긴 복사로 일반화하고 LSTM은 길이 20을 넘기면 빠르게 무너진다Section 4.1, Figure 4–5NTM은 길이 10, 20, 30, 50에서 확신 있게, 실수 거의 없이 복사. 길이 120에서는 국소 오류 몇 개와 전역 오류 하나(벡터 하나가 중복되어 이후가 한 칸씩 밀림)시퀀스 한 개씩만 시각화. 숫자 지표 없음. 일반화를 막는 요인은 메모리 크기(128 위치)였다(각주 2)author-stated
NTM은 “순서대로 쓰고 처음으로 돌아가 순서대로 읽는” 복사 알고리즘을 배웠다Section 4.1, Figure 6읽기 위치가 쓰기 위치와 정확히 일치하고 읽은 벡터가 add 벡터와 일치내용 주소(시작으로 점프)와 위치 주소(이동)를 함께 쓴다author-stated
이전 가중치로부터의 상대 이동(Eq. 7)과 sharpening(Eq. 9)이 없으면 긴 수열로 일반화하지 못할 것이다Section 4.1—제거 실험(ablation)은 보고되지 않았다. 저자도 sharpening 쪽은 “probably”라고 쓴다author-stated
Repeat Copy는 NTM이 훨씬 빨리 배우지만 둘 다 완벽히 푼다Section 4.2, Figure 7LSTM도 결국 0 근처LSTM이 copy보다 잘한 이유로 더 짧은 수열(≤ 10)과 더 큰 LSTM을 추정(각주 3)author-stated
반복 복사의 일반화: NTM은 길이 2배에 성공, 반복 2배에서는 복사는 이어가지만 끝 표시를 틀린다. LSTM은 둘 다 실패Section 4.2, Figure 8길이 10·반복 20, 길이 20·반복 10을 시험. NTM은 11번째를 넘는 모든 반복 뒤에 끝 표시를 낸다부정 결과. 저자는 반복 횟수를 수치로 표현해서 고정 범위 밖으로 일반화하기 어렵기 때문일 것이라고 추정author-stated
반복 복사에서 NTM은 복사 알고리즘을 반복하는 단순한 확장을 배운다Section 4.2, Figure 96번 반복하는 예에서 읽기 가중치가 같은 대각선을 6번 그린다. 맨 아래 흰 점은 head를 수열 시작으로 되돌리는 중간 위치로 보인다(goto에 해당)시각화 하나에 대한 해석author-stated
연상 기억에서 NTM은 약 30,000 에피소드 안에 비용이 거의 0이고, LSTM은 백만 에피소드 뒤에도 0에 닿지 못한다Section 4.3, Figure 10그래프에서 feedforward NTM이 가장 먼저 떨어지고, LSTM controller NTM은 약 100–150천 시퀀스에 떨어진다. LSTM은 1,000천에서 약 1 bit”약 30,000”은 feedforward NTM 곡선과 맞아 보인다. 수치는 그래프 판독author-stated (그래프 값은 analyst-inference)
연상 기억에서 feedforward controller가 LSTM controller보다 빨리 배운다Section 4.3, Figure 10—저자는 두 결과를 묶어 외부 메모리가 LSTM 내부 상태보다 자료구조를 유지하는 데 더 효과적이라고 해석author-stated
연상 기억의 항목 수 일반화: NTM은 LSTM보다 훨씬 긴 항목 수열로 일반화한다Section 4.3, Figure 11feedforward NTM은 12개(학습 최대의 2배)까지 거의 완벽, 15개에서 평균 1 bit 미만. 그래프에서 LSTM은 10개 이상에서 약 36–40 bit, 두 NTM은 20개에서 약 7–8 bit15개 값은 그래프 눈금이 5 단위라 판독으로 1 bit 미만인지 확인하기 어렵다author-stated (그래프 값은 analyst-inference)
연상 기억에서 NTM은 항목을 압축 표현으로 한 위치에 쓰고, 내용 조회 후 한 칸 이동해 다음 항목을 읽는다Section 4.3, Figure 12구분 기호가 들어올 때만 쓰고, 그때마다 다른 벡터를 add한다. 질의 후 내용 조회 key가 그 add 벡터와 대응LSTM controller + head 1개 NTM의 한 에피소드 분석author-stated
Dynamic N-Gram에서 NTM은 LSTM보다 작지만 유의한 우위가 있고 최적에는 끝내 닿지 못한다Section 4.4, Figure 13그래프에서 LSTM 약 136 bit, 두 NTM 약 133 bit, 최적 추정기 약 131–132 bit통계 검정은 보고되지 않았다. “significant”의 근거가 없다. 수치는 그래프 판독author-stated (수치는 analyst-inference)
N-Gram에서 NTM은 문맥별 0과 1의 개수를 메모리로 센다Section 4.4, Figure 14–15같은 문맥(“00010”, “01111”)이 나올 때마다 같은 위치를 읽고 다음 단계에 쓴다. add 벡터가 입력 0/1에 따라 반대 상관저자 표현은 “postulate(가정)“author-stated
Priority Sort에서 두 NTM이 LSTM을 크게 앞선다Section 4.5, Figure 18그래프에서 1,000천 시퀀스 시점 LSTM 약 57 bit, NTM 약 18–20 bitfeedforward NTM은 최고 성능에 병렬 head 8개가 필요했다(단항 연산만으로 정렬하기 어렵기 때문일 수 있음, Section 3.4 참조)author-stated (수치는 analyst-inference)
Priority Sort에서 NTM은 우선순위로 쓰기 위치를 정하고 위치 순서대로 읽는다Section 4.5, Figure 17우선순위의 선형 함수로 맞춘 위치가 관찰된 쓰기 위치와 가깝게 맞고, 읽기는 위치가 커지는 순서binary heap sort를 쓰는지 보려 했지만(각주 5) 결과는 heap이 아니라 위치 기반 배치로 해석된다author-stated (heap 아님은 analyst-inference)
NTM은 LSTM보다 훨씬 적은 파라미터로 위 결과를 냈다Table 1–3Copy: NTM-FF 17,162 / NTM-LSTM 67,561 / LSTM 1,352,969. Repeat Copy: 16,712 / 66,111 / 5,312,007파라미터 수를 맞춘 비교가 아니다. 학습률과 크기도 모델마다 다르다author-stated (비교 해석은 analyst-inference)

결과들이 어떻게 이어지는가 (analyst-inference). 다섯 과제는 점점 복잡한 자료구조를 요구하도록 짜여 있다. 복사는 배열 하나를 만들고 순회한다. 반복 복사는 그 순회를 여러 번 되풀이한다. 연상 기억은 내용으로 찾고 위치로 한 칸 옮기는 간접 참조를 쓴다. N-Gram은 메모리를 다시 쓸 수 있는 계수 표로 쓴다. 정렬은 값에 따라 쓰는 위치를 정한다. 저자가 강조하는 증거는 학습 속도보다 학습 범위 밖 일반화와 해석 가능한 메모리 사용 패턴이다. 두 증거 모두 시퀀스 몇 개의 시각화에 기대고 있다. 반복 횟수 세기 실패와 N-Gram의 최적 미달은 메모리 순회는 잘 배우지만 수를 세고 비교하는 일은 아직 약하다는 점을 보여 준다.

Take-home

한 줄 요약. 신경망에 attention으로 주소를 고르는 외부 메모리를 붙이면 경사하강법만으로 복사·정렬·연상 기억 같은 간단한 알고리즘을 배우고, 학습 범위보다 긴 입력에 그 알고리즘을 적용할 수 있다.

결론이 성립하는 범위.

  • 이진 벡터로 된 작은 합성 과제 5개(Section 4).
  • 메모리 128 × 20, 비교 대상은 3층 LSTM 하나뿐(Table 1–3).
  • 일반화는 학습 길이의 약 2–6배까지 시험했다. 복사는 학습 ≤ 20, 시험 최대 120. 연상 기억은 학습 ≤ 6, 시험 최대 20.

저자가 인정한 한계 (author-stated).

  • 결과는 “preliminary(예비)“라고 스스로 부른다(Abstract, Section 4).
  • 반복 횟수를 세지 못해 끝 표시를 틀린다(Section 4.2).
  • 복사 일반화는 메모리 크기 128 위치에서 막힌다. 그 뒤로는 원형 이동이 돌아와 이전 기록을 덮어쓴다(각주 2).
  • feedforward controller는 head 수가 계산의 병목이다(Section 3.4). 정렬에는 head 8개가 필요했다(Section 4.5).
  • N-Gram에서 최적 추정기에 닿지 못했고, 엉뚱한 메모리 위치를 읽는 실수가 보인다(Figure 14–15).

작성자가 보는 우려 (analyst-inference).

  • 모든 학습 곡선이 단일 실행으로 보인다. 오차 막대나 여러 seed 결과가 없다.
  • 위치 주소가 “필수”, 상대 이동과 sharpening이 일반화에 필요하다는 주장에 제거 실험이 없다.
  • 길이 일반화는 숫자 대신 시퀀스 몇 개의 그림으로 보여 준다. 일반화 실패율을 셀 수 없다.
  • LSTM과의 비교가 파라미터 수나 학습률을 맞춘 비교가 아니다. 저자는 NTM이 적은 파라미터로 이긴다는 점을 장점으로 보지만, 하이퍼파라미터 탐색 노력이 같았는지 알 수 없다.
  • N-Gram의 “significant”는 통계 검정 없이 쓰였다.
  • 메모리 사용 패턴의 해석(“압축 표현”, “goto”, “카운터”)은 그림을 보고 세운 가설이다. 개입 실험으로 확인하지 않았다.

반복 횟수·공개 여부. seed 수와 반복 실행 횟수는 보고되지 않았다. 코드·데이터 공개도 보고되지 않았다(과제는 Section 4의 설명으로 다시 만들 수 있다).

읽지 못한 범위. 26쪽 전문을 읽었다. 읽지 못한 범위는 없다.

본문 도표

Figure 1 — NTM 구조

  • 무엇을 보여주는가: NTM의 상위 구조. controller가 외부 입력을 받아 외부 출력을 내고, Read Heads·Write Heads를 통해 Memory와 주고받는다.
  • 읽는 법: 점선 상자 안이 NTM 회로, 밖이 외부 세계다. 화살표는 정보가 흐르는 방향이다. controller와 Read Heads 사이는 양방향, Write Heads에서 Memory로는 한 방향이다.
  • 핵심 관찰: 매 업데이트 주기마다 controller가 입력을 받고 출력을 내며, 병렬 읽기·쓰기 head로 메모리 행렬을 읽고 쓴다(캡션).
  • 의미와 주의: 일반 신경망과 다른 점은 메모리와의 선택적 읽기·쓰기 경로뿐이다(author-stated, Section 3). 메모리는 외부 세계와 직접 연결되지 않는다(analyst-inference, 그림의 점선 배치).
  • 확인 상태: viewed

Figure 2 — 주소 지정 흐름도

  • 무엇을 보여주는가: 가중치 w_t를 만드는 네 단계(Content Addressing → Interpolation → Convolutional Shift → Sharpening)의 순서.
  • 읽는 법: 왼쪽 위 “Previous State”는 이전 가중치 w_{t−1}과 메모리 M_t, 왼쪽 아래 “Controller Outputs”는 k_t, β_t, g_t, s_t, γ_t다. 각 출력이 어느 상자로 들어가는지 화살표로 표시된다. 상자 사이로 w^c_t, w^g_t, w̃_t가 전달되고 마지막에 w_t가 나온다.
  • 핵심 관찰: k_t와 β_t는 메모리 M_t와 함께 내용 주소에만 쓰인다. w_{t−1}은 interpolation 단계에서 처음 들어온다. s_t는 이동, γ_t는 sharpening에만 쓰인다.
  • 의미와 주의: 내용 주소 → 이전 가중치와 섞기 → 이동 → 다시 날카롭게의 순서가 3.3.2절의 세 동작 모드를 가능하게 한다(author-stated, Section 3.3). Section 3.3 본문의 Eq. 5–9와 짝지어 읽으면 된다.
  • 확인 상태: viewed

Figure 3 — Copy 학습 곡선

  • 무엇을 보여주는가: 복사 과제에서 세 모델의 학습 곡선.
  • 읽는 법: x축은 본 시퀀스 수(천 단위, 0–1000), y축은 cost per sequence(bits, 0–10). 파랑 LSTM, 초록 LSTM controller NTM, 빨강 feedforward controller NTM.
  • 핵심 관찰: 두 NTM은 시작 직후 비용이 0 가까이로 떨어지고 그대로 머문다. LSTM은 천천히 내려가 1,000천 시퀀스에서도 약 0.5 bit 근처에 남는다(analyst-inference, 그래프 판독). y축 위쪽이 10에서 잘려 초기 비용은 보이지 않는다.
  • 의미와 주의: 저자는 차이가 커서 “양이 아니라 질의 차이”를 시사한다고 본다(author-stated, Section 4.1). 곡선 하나씩이라 실행 간 편차는 알 수 없다.
  • 확인 상태: viewed

Figure 4 — NTM의 Copy 일반화

  • 무엇을 보여주는가: 학습 길이(≤ 20)보다 긴 시험 수열에서 NTM의 목표(Targets)와 출력(Outputs).
  • 읽는 법: 위 줄의 네 쌍은 길이 10, 20, 30, 50 시험 수열, 아래 줄은 길이 120 수열이다. 가로가 시간, 세로가 벡터의 비트. 색은 0(파랑)–1(빨강) 출력값이다.
  • 핵심 관찰: 앞 네 수열은 확신 있게, 실수가 거의 없이 재현된다. 길이 120은 국소 오류 몇 개와 전역 오류 하나가 있다. 빨간 화살표 지점에서 벡터 하나가 중복되어 그 뒤 모든 벡터가 한 칸씩 밀린다(캡션).
  • 의미와 주의: 주관적으로는 거의 정확한 복사지만 한 칸 밀림 때문에 loss는 크다(author-stated, 캡션). 시각적 정답률과 비용 지표가 크게 어긋날 수 있다는 예다(analyst-inference).
  • 확인 상태: viewed

Figure 5 — LSTM의 Copy 일반화

  • 무엇을 보여주는가: Figure 4와 같은 길이에서 LSTM의 목표와 출력.
  • 읽는 법: Figure 4와 같은 배치와 색.
  • 핵심 관찰: 길이 10, 20은 거의 완벽하다. 길이 30부터 출력이 무너지고, 길이 120에서는 대부분이 틀린다. 길이가 늘수록 정확히 복사된 앞부분(prefix)이 짧아진다(캡션).
  • 의미와 주의: 앞부분이 짧아지는 것은 LSTM이 긴 기간 정보를 붙잡아 두기 어렵다는 것을 시사한다고 저자는 쓴다(author-stated).
  • 확인 상태: viewed

Figure 6 — Copy 중 NTM 메모리 사용

  • 무엇을 보여주는가: 복사 시험 수열 하나를 처리하는 동안의 입력·add 벡터·쓰기 가중치(왼쪽)와 출력·읽기 벡터·읽기 가중치(오른쪽).
  • 읽는 법: 아래 두 패널의 세로축은 메모리 위치(일부만 표시), 가로축은 시간. 검정은 가중치 0, 흰색은 가중치 1.
  • 핵심 관찰: 쓰기 가중치가 입력 구간 동안 한 위치씩 위로 올라가는 날카로운 대각선을 그린다. 출력 구간의 읽기 가중치가 같은 위치들을 같은 순서로 지난다. 읽기 위치는 쓰기 위치와 정확히 같고, 읽은 벡터는 add 벡터와 같다(캡션).
  • 의미와 주의: 초점이 한 위치에 날카롭게 모이고(sharpening), 초점이 시간에 따라 옮겨 가는 것은 위치 주소의 반복 이동을 쓴다는 뜻이다(author-stated, 캡션). 이 그림이 4.1절 의사코드(pseudocode)의 근거다.
  • 확인 상태: viewed

Figure 7 — Repeat Copy 학습 곡선

  • 무엇을 보여주는가: 반복 복사 과제의 학습 곡선.
  • 읽는 법: x축 본 시퀀스 수(천 단위, 0–500), y축 cost per sequence(bits, 0–200). 색은 Figure 3과 같다.
  • 핵심 관찰: 세 곡선 모두 약 180 bit에서 시작한다. LSTM controller NTM이 가장 빨리 떨어지고, feedforward NTM은 약 50천 부근에서 한 번 튄 뒤 떨어진다. LSTM은 약 100천을 지나서야 바닥에 가까워지고 약 220천에서 작은 튐이 있다(analyst-inference, 그래프 판독). 결국 셋 다 0 근처다.
  • 의미와 주의: 둘 다 과제를 완벽히 풀었고 NTM이 훨씬 빨랐다(author-stated, Section 4.2). 두 구조의 차이는 일반화에서만 드러난다(Figure 8).
  • 확인 상태: viewed

Figure 8 — Repeat Copy 일반화 (NTM 대 LSTM)

  • 무엇을 보여주는가: 학습 범위(길이·반복 ≤ 10) 밖 두 조건에서 NTM과 LSTM의 목표와 출력.
  • 읽는 법: 위 블록이 NTM, 아래 블록이 LSTM이다. 각 블록에 “Length 10, Repeat 20”과 “Length 20, Repeat 10” 두 조건이 있다.
  • 핵심 관찰: NTM은 길이 20·반복 10에서 거의 완벽하다. 반복 20에서는 입력 수열을 꽤 정확히 이어서 복사하지만, 11번째를 넘는 모든 반복 뒤에 끝 표시를 낸다(캡션). LSTM은 두 조건 모두에서 입력과 빠르게 어긋난다.
  • 의미와 주의: 부정 결과다. 저자는 반복 횟수를 수치로 표현하면 고정 범위 밖으로 쉽게 일반화하지 않기 때문일 것으로 본다(author-stated, Section 4.2). 끝 표시 오류를 정량화한 값은 없다.
  • 확인 상태: viewed

Figure 9 — Repeat Copy 중 NTM 메모리 사용

  • 무엇을 보여주는가: 입력을 6번 반복하는 반복 복사 수열 하나의 메모리 사용.
  • 읽는 법: Figure 6과 같은 배치. 왼쪽 쓰기, 오른쪽 읽기.
  • 핵심 관찰: 쓰기 가중치는 짧은 대각선 하나(반복 이동으로 입력을 씀)다. 읽기 가중치는 같은 모양의 대각선을 6번 되풀이한다. 읽기 가중치 맨 아래에 반복 경계마다 흰 점이 찍힌다.
  • 의미와 주의: 흰 점은 head를 수열 시작으로 되돌리는 중간 위치로 보이며, 저자는 이를 NTM판 goto 문이라고 부른다(author-stated, 캡션). 저자 표현이 “seems to”라 확정이 아니다. 이 그림에서는 대각선이 아래로 내려가는 방향으로 그려져 Figure 6과 이동 방향이 반대다(analyst-inference, 그래프 판독).
  • 확인 상태: viewed

Figure 10 — Associative Recall 학습 곡선

  • 무엇을 보여주는가: 연상 기억 과제의 학습 곡선.
  • 읽는 법: x축 본 시퀀스 수(천 단위, 0–1000), y축 cost per sequence(bits, 0–20).
  • 핵심 관찰: feedforward NTM(빨강)이 가장 먼저 0 근처로 떨어진다. LSTM controller NTM(초록)은 약 100–150천 사이에 떨어진다. LSTM(파랑)은 천천히 내려가 1,000천에서 약 1 bit다(analyst-inference, 그래프 판독).
  • 의미와 주의: 본문은 NTM이 약 30,000 에피소드 안에 거의 0이 되고 LSTM은 백만 에피소드 뒤에도 0에 닿지 못한다고 쓴다(author-stated, Section 4.3). “약 30,000”은 빨간 곡선과 맞고 초록 곡선은 그보다 늦다(analyst-inference).
  • 확인 상태: viewed

Figure 11 — Associative Recall 항목 수 일반화

  • 무엇을 보여주는가: 시험 수열의 항목 수에 따른 비용.
  • 읽는 법: x축 수열당 항목 수(6–20), y축 cost per sequence(bits, 0–40). 측정점은 6, 10, 15, 20이다. 학습은 항목 2–6개였다.
  • 핵심 관찰: LSTM은 6개에서 약 2.5 bit였다가 10개 이상에서 약 36–40 bit로 치솟는다. 두 NTM은 천천히 오르고 20개에서 약 7–8 bit다(analyst-inference, 그래프 판독). 20개에서는 feedforward NTM이 LSTM controller NTM보다 약간 높아 보인다(analyst-inference).
  • 의미와 주의: 저자는 feedforward NTM이 12개(학습 최대의 2배)까지 거의 완벽하고 15개에서도 평균 1 bit 미만이라고 쓴다(author-stated, Section 4.3과 캡션). 12개는 측정점에 없고 15개 값은 눈금 해상도로 확인이 어렵다.
  • 확인 상태: viewed

Figure 12 — Associative Recall 중 NTM 메모리 사용

  • 무엇을 보여주는가: LSTM controller(head 1개) NTM이 시험 에피소드 하나를 처리하는 모습.
  • 읽는 법: 입력의 7번째 행이 항목 구분 기호, 8번째 행이 질의 구분 기호다. 초록 상자가 질의 항목, 빨간 상자가 목표 항목(질의 다음 항목)이다. 쓰기·읽기 가중치의 빨간 상자는 목표 항목이 쓰이고 읽힌 위치다. add 패널의 검은 상자는 압축 표현이 쓰이는 지점이다.
  • 핵심 관찰: 네트워크는 목표 항목을 또렷하게 출력한다. 쓰기는 구분 기호가 들어올 때만 일어나고 그때마다 다른 벡터를 add한다. 마지막 세 단계에서 읽기 head는 항목 3의 시간 조각들이 저장된 인접 위치를 읽는다.
  • 의미와 주의: 저자의 해석은 이렇다. 각 구분 기호에서 직전 세 시간 조각의 압축 표현을 한 위치에 쓴다. 질의가 오면 같은 압축 표현을 다시 계산해 내용 조회로 그 위치를 찾고, 한 칸 이동해 다음 항목을 읽는다(author-stated, Section 4.3). 내용 조회와 위치 이동을 결합한 사례다.
  • 확인 상태: viewed

Figure 13 — Dynamic N-Gram 학습 곡선

  • 무엇을 보여주는가: N-Gram 과제의 학습 곡선과 최적 추정기의 비용.
  • 읽는 법: x축 본 시퀀스 수(천 단위, 0–1000), y축 cost per sequence(bits, 130–160). 주황 수평선이 Optimal Estimator다. y축이 130에서 시작한다.
  • 핵심 관찰: LSTM은 약 136 bit, 두 NTM은 약 133 bit 근처에서 흔들리고, 최적 추정기는 약 131–132 bit다(analyst-inference, 그래프 판독).
  • 의미와 주의: 저자는 NTM이 LSTM보다 작지만 유의한 우위가 있고 최적에는 끝내 닿지 못한다고 쓴다(author-stated, Section 4.4). 축이 130에서 시작해 차이가 크게 보인다. “유의함”에 대한 통계 검정은 없다(analyst-inference).
  • 확인 상태: viewed

Figure 14 — Dynamic N-Gram 추론

  • 무엇을 보여주는가: 시험 수열 하나와, 그에 대한 최적 추정기·NTM·LSTM의 예측 분포.
  • 읽는 법: 맨 위 행이 입력 비트, 그 아래 세 행이 각 모델이 낸 다음 비트 예측(밝을수록 1일 확률이 높다고 읽힘). 빨간 화살표 두 개가 NTM의 실수 지점이다.
  • 핵심 관찰: 대부분의 위치에서 NTM 예측은 최적 예측과 거의 구별되지 않는다. 화살표 두 곳에서 뚜렷한 실수를 한다. LSTM은 어떤 곳에서는 최적을 잘 따르지만 수열이 진행될수록 더 벗어난다(캡션).
  • 의미와 주의: LSTM이 수열 앞부분의 관찰을 “잊기” 때문이라는 설명은 저자의 추측이다(author-stated, 캡션의 “we speculate”).
  • 확인 상태: viewed

Figure 15 — Dynamic N-Gram 중 NTM 메모리 사용

  • 무엇을 보여주는가: N-Gram 시험 수열에서 add 벡터, 쓰기 가중치, 예측, 입력, 읽기 가중치를 시간에 맞춰 쌓은 그림.
  • 읽는 법: 초록 화살표는 문맥 “00010”, 빨간 화살표는 문맥 “01111”이 반복해서 나온 지점이다. 예측 행의 빨간 상자는 Figure 14 첫 번째 화살표의 실수다.
  • 핵심 관찰: 같은 문맥이 나올 때마다 읽기 head가 같은 위치에 접근하고, 다음 단계에 쓰기 head가 그 위치에 접근한다. add 벡터는 입력이 1인 곳과 0인 곳에서 뚜렷하게 반대 상관이다. 같은 문맥이 반복될수록 쓰기 가중치가 흐려진다. 실수 지점에서는 직전 문맥이 “01101”인데 “01111”의 위치를 읽었다(캡션).
  • 의미와 주의: 저자는 쓰기로 문맥별 1과 0의 비율을 세는 분산형 “카운터”를 가정(postulate)한다. 쓰기가 흐려지는 것은 절대 개수가 아니라 비율을 기록하기 때문일 수 있다고 본다(author-stated, 캡션). 둘 다 그림에 기반한 가설이다.
  • 확인 상태: viewed

Figure 16 — Priority Sort 입력과 목표 예

  • 무엇을 보여주는가: 정렬 과제의 입력 예와 목표 예.
  • 읽는 법: 왼쪽이 이진 벡터 입력과 각 벡터 위의 우선순위 곡선(숫자 1–7이 순위 표시), 오른쪽이 우선순위 순으로 정렬된 목표(“1234567…”).
  • 핵심 관찰: 목표는 입력 벡터 중 일부를 우선순위로 정렬한 것이다(캡션).
  • 의미와 주의: 과제 형식을 보여 주는 예시 그림이다. 실험 조건(입력 20개 중 상위 16개)은 Section 4.5에 있다.
  • 확인 상태: viewed

Figure 17 — Priority Sort 중 NTM 메모리 사용

  • 무엇을 보여주는가: 가설로 계산한 쓰기 위치, 실제 쓰기 가중치, 실제 읽기 가중치를 나란히 놓은 그림.
  • 읽는 법: 왼쪽은 우선순위의 선형 함수를 관찰된 쓰기 위치에 맞춰서 얻은 위치, 가운데는 관찰된 쓰기 위치, 오른쪽은 읽기 위치. 세로축 메모리 위치, 가로축 시간.
  • 핵심 관찰: 왼쪽 점들의 배치가 가운데 점들과 거의 같다. 오른쪽 읽기 가중치는 위치가 증가하는 방향의 대각선이다.
  • 의미와 주의: NTM이 우선순위로 각 쓰기의 상대 위치를 정하고, 위치 순서대로 읽어서 정렬된 수열을 순회한다는 저자 가설의 근거다(author-stated, Section 4.5). 선형 함수를 관찰값에 맞춘 것이라 일치가 독립적 검증은 아니다(analyst-inference). 그림 세로축 이름에 “Locatiobn” 오타가 있다.
  • 확인 상태: viewed

Figure 18 — Priority Sort 학습 곡선

  • 무엇을 보여주는가: 정렬 과제의 학습 곡선.
  • 읽는 법: x축 본 시퀀스 수(천 단위, 0–1000), y축 cost per sequence(bits, 0–140).
  • 핵심 관찰: 세 곡선 모두 약 120–125 bit에서 시작한다. feedforward NTM이 가장 먼저 떨어지고, LSTM controller NTM은 약 100천 이후 급히 떨어져 끝에서는 약간 더 낮다. 1,000천에서 두 NTM은 약 18–20 bit, LSTM은 약 57 bit다(analyst-inference, 그래프 판독).
  • 의미와 주의: 두 NTM 모두 LSTM을 크게 앞선다(author-stated, Section 4.5). 비용 0에 닿은 모델은 없다(analyst-inference). feedforward NTM은 head 8개, LSTM controller NTM은 head 5개 설정이다(Table 1–2).
  • 확인 상태: viewed

Table 1 — Feedforward controller NTM 실험 설정

  • 무엇을 보여주는가: 과제별 head 수, controller 크기, 메모리 크기, 학습률, 파라미터 수.
  • 읽는 법: 행은 과제, 열은 Heads, Controller Size, Memory Size, Learning Rate, Parameters.
  • 핵심 관찰: 메모리는 모든 과제에서 128 × 20이다. Copy와 Repeat Copy는 head 1개·controller 100·학습률 10^−4, 파라미터 17,162와 16,712. Associative는 head 4개·controller 256으로 146,845. N-Grams는 head 1개·학습률 3 × 10^−5로 14,656. Priority Sort는 head 8개·controller 512로 508,305.
  • 의미와 주의: 정렬과 연상 기억에서 head 수가 늘어난 것은 feedforward controller의 head 병목(Section 3.4)과 맞는다(analyst-inference).
  • 확인 상태: viewed

Table 2 — LSTM controller NTM 실험 설정

  • 무엇을 보여주는가: Table 1과 같은 항목의 LSTM controller NTM 설정.
  • 읽는 법: Table 1과 같은 열.
  • 핵심 관찰: Priority Sort만 빼면 head 1개·controller 100·메모리 128 × 20이다. 파라미터는 Copy 67,561, Repeat Copy 66,111, Associative 70,330, N-Grams 61,749. Priority Sort는 head 5개·controller 2 × 100으로 269,038.
  • 의미와 주의: 연상 기억에서 head 1개로도 풀었다는 점은 recurrent controller가 이전 읽기 벡터를 내부에 저장할 수 있어 head 병목이 덜하다는 Section 3.4 설명과 맞는다(analyst-inference).
  • 확인 상태: viewed

Table 3 — LSTM 실험 설정

  • 무엇을 보여주는가: 기준선 LSTM의 과제별 크기, 학습률, 파라미터 수.
  • 읽는 법: 열은 Network Size(층 수 × 유닛 수), Learning Rate, Parameters.
  • 핵심 관찰: Copy 3 × 256(1,352,969), Repeat Copy 3 × 512(5,312,007), Associative 3 × 256(1,344,518), N-Grams 3 × 128(331,905), Priority Sort 3 × 128(384,424). 학습률은 과제별로 3 × 10^−5 또는 10^−4.
  • 의미와 주의: LSTM 파라미터는 NTM보다 수 배에서 수백 배 많다. 저자는 LSTM 파라미터가 은닉 유닛 수의 제곱으로 늘지만 NTM은 메모리 위치 수에 따라 늘지 않는다고 강조한다(author-stated, Section 4.6). 이 크기를 어떻게 골랐는지는 보고되지 않았다.
  • 확인 상태: viewed

Wiki 연결

BibTeX

@article{graves2014neural,
  title   = {Neural Turing Machines},
  author  = {Graves, Alex and Wayne, Greg and Danihelka, Ivo},
  journal = {arXiv preprint arXiv:1410.5401},
  year    = {2014}
}