Differentiable Neural Computer

44
Differentiable Neural Computer Taehoon Kim 2016-10-27

Transcript of Differentiable Neural Computer

Page 1: Differentiable Neural Computer

DifferentiableNeuralComputer

Taehoon Kim

2016-10-27

Page 2: Differentiable Neural Computer

V�:�vectorH�:�header

Page 3: Differentiable Neural Computer
Page 4: Differentiable Neural Computer

DNC�architecture

Page 5: Differentiable Neural Computer

DNC�architecture

CPU RAM

Page 6: Differentiable Neural Computer

3 types�of�Attention

1. Content�lookup (뭐랑 비슷한가)

• 데이터 사이에 연관성(유사도)을 고려

2. Temporal�links (누구랑 친한가)

• 인풋의 정보를 읽고 연속적인 데이터를 가져옴

3. Allocation�(어디다 넣을 것인가)

•Write�header에게 빈 공간을 알려줌

Page 7: Differentiable Neural Computer

메모리 𝑀

•미분 가능한 어텐션을 주소를 찾는데 사용

• 주소라기 보단 distribution이라고 이해하는게 좋음

• 컴퓨터는 discrete한 메모리 주소를 사용

•Weightings�=�주소

•𝑀은 𝑁×𝑊 크키의 행렬

Page 8: Differentiable Neural Computer

읽기와쓰기

•𝒘 (weighting)�:�어떤 장소가 얼마나 수정이 되는지

•읽기 : 𝒓 = ∑ 𝑀 𝑖,+ 𝒘𝒓[𝑖]./01 , (‘+’는 𝑗 = 1,… ,𝑊 모두를 의미)

• 𝒓 (read�vector)�:�각 메모리에 weighting을 곱하고 더하면

• 𝒘𝒓 (read�weighting)

•쓰기 : 𝑀 𝑖, 𝑗 ← 𝑀 𝑖, 𝑗 1 − 𝒘7 𝑖 𝑒 𝑗 + 𝒘7 𝑖 𝑣[𝑗]

Page 9: Differentiable Neural Computer
Page 10: Differentiable Neural Computer
Page 11: Differentiable Neural Computer

Method

Page 12: Differentiable Neural Computer

1. Controller�Network�𝒩

Page 13: Differentiable Neural Computer

매시간 𝑡마다

1. Input�V�𝑥> ∈ ℝA를 데이터 혹은 환경으로부터 받음

2. Output�V�𝑦> ∈ ℝC를 벹어 target�V�𝑧> ∈ ℝC를 계산

• SL일 경우 𝑧> = predictive�distribution

• RL일 경우 𝑧> = action�distribution

Page 14: Differentiable Neural Computer

매시간 𝑡마다

3. 메모리 𝑀>E1 ∈ ℝ.×F에서 Read�H를 사용해서

• R개의 read�V 𝑟>E11 , … , 𝑟>E1H 를 읽음

4. 메모리 𝑀>E1과의 상호작용을 정하는 interface�V�𝜉>를 계산

•𝒳> = [𝑥>; 𝑟>E11 ; … ; 𝑟>E1H ]

• 편의를 위해 read, input�V를 붙여 하나의 controller�input�V를 정

Page 15: Differentiable Neural Computer

네트워크

•모든 뉴럴 네트워크를𝒩로 사용할 수 있음

• 논문에서는 LSTM를 약간 바꾼 네트워크를 사용

Page 16: Differentiable Neural Computer

LSTM

Page 17: Differentiable Neural Computer

LSTM

• 𝒊𝒕𝒍 = 𝜎 𝑊/P 𝒉𝒕E𝟏𝒍 ; 𝒉𝒕𝒍E𝟏 + 𝑏/P

• 𝒇𝒕𝒍 = 𝜎 𝑊UP 𝒉𝒕E𝟏𝒍 ; 𝒉𝒕𝒍E𝟏 + 𝑏UP

• 𝒐𝒕𝒍 = 𝜎 𝑊UP 𝒉𝒕E𝟏𝒍 ; 𝒉𝒕𝒍E𝟏 + 𝑏WP

• 𝑪𝒕𝒍 = 𝒊𝒕𝒍 ∗ tanh 𝑊P 𝒉𝒕E𝟏𝒍 ; 𝒉𝒕𝒍E𝟏 + 𝑏^P + 𝒇𝒕𝒍 ∗ 𝑪𝒕E𝟏𝒍

• 𝒉𝒕𝒍 = 𝒐𝒕𝒍 ∗ tanh 𝑪𝒕𝒍

Page 18: Differentiable Neural Computer

LSTM

• 𝒊𝒕𝒍 = 𝜎 𝑊/P 𝒉𝒕E𝟏𝒍 ; 𝒉𝒕𝒍E𝟏 + 𝑏/P

• 𝒇𝒕𝒍 = 𝜎 𝑊UP 𝒉𝒕E𝟏𝒍 ; 𝒉𝒕𝒍E𝟏 + 𝑏UP

• 𝒐𝒕𝒍 = 𝜎 𝑊UP 𝒉𝒕E𝟏𝒍 ; 𝒉𝒕𝒍E𝟏 + 𝑏WP

• 𝑪𝒕𝒍 = 𝒊𝒕𝒍 ∗ tanh 𝑊P 𝒉𝒕E𝟏𝒍 ; 𝒉𝒕𝒍E𝟏 + 𝑏^P + 𝒇𝒕𝒍 ∗ 𝑪𝒕E𝟏𝒍

• 𝒉𝒕𝒍 = 𝒐𝒕𝒍 ∗ tanh 𝑪𝒕𝒍Cell�state는 정보를 빼거나 추가할 때 사용된다

Input�gate

Forget�gate

Output�gate

Page 19: Differentiable Neural Computer

• 𝒊𝒕𝒍 = 𝜎 𝑊/P 𝒉𝒕E𝟏𝒍 ; 𝒉𝒕𝒍E𝟏 + 𝑏/P

• 𝒇𝒕𝒍 = 𝜎 𝑊UP 𝒉𝒕E𝟏𝒍 ; 𝒉𝒕𝒍E𝟏 + 𝑏UP

• 𝒐𝒕𝒍 = 𝜎 𝑊UP 𝒉𝒕E𝟏𝒍 ; 𝒉𝒕𝒍E𝟏 + 𝑏WP

• 𝑪𝒕𝒍 = 𝒊𝒕𝒍 ∗ tanh 𝑊P 𝒉𝒕E𝟏𝒍 ; 𝒉𝒕𝒍E𝟏 + 𝑏^P + 𝒇𝒕𝒍 ∗ 𝑪𝒕E𝟏𝒍

• 𝒉𝒕𝒍 = 𝒐𝒕𝒍 ∗ tanh 𝑪𝒕𝒍𝑪𝟎𝟎

𝒙𝟏 = 𝒉𝟏E𝟏

𝒉𝟎𝟎

𝒐𝟏𝟎 𝒇𝟏𝟎 𝒊𝟏𝟎 𝒈𝟏𝟎

𝑪𝟏𝟎

𝒉𝟏𝟎

𝑪𝟏𝟏

𝒉𝟏𝟏

𝑪𝟎𝟏

𝒉𝟎𝟏

𝒐𝟏𝟏 𝒇𝟏𝟏 𝒊𝟏𝟏 𝒈𝟏𝟏

Page 20: Differentiable Neural Computer

Controller�Network�𝒩

𝓧𝒕

𝓋𝒕, 𝝃𝒕

Page 21: Differentiable Neural Computer

Controller�Network�𝒩

• 𝒊𝒕𝒍 = 𝜎 𝑊/P 𝓧𝒕; 𝒉𝒕E𝟏𝒍 ; 𝒉𝒕𝒍E𝟏 + 𝑏/P

• 𝒇𝒕𝒍 = 𝜎 𝑊UP 𝓧𝒕; 𝒉𝒕E𝟏𝒍 ; 𝒉𝒕𝒍E𝟏 + 𝑏UP

• 𝒐𝒕𝒍 = 𝜎 𝑊WP 𝓧𝒕; 𝒉𝒕E𝟏𝒍 ; 𝒉𝒕𝒍E𝟏 + 𝑏WP

• 𝒔𝒕𝒍 = 𝑖>P ∗ tanh 𝑊P 𝓧𝒕; 𝒉𝒕E𝟏𝒍 ; 𝒉𝒕𝒍E𝟏 + 𝑏^P + 𝑓>P ∗ 𝒔𝒕E𝟏𝒍

• 𝒉𝒕𝒍 = 𝑜>P ∗ tanh 𝒔𝒕𝒍

𝓧𝒕𝒉𝒕𝒍E𝟏

𝒉𝒕E𝟏𝒍

Page 22: Differentiable Neural Computer

𝒔𝟎𝟏

𝒉𝟏𝟎𝒙𝟏

𝒉𝟎𝟏

𝒐𝟏𝟏 𝒇𝟏𝟏 𝒊𝟏𝟏 𝒈𝟏𝟏

𝒔𝟏𝟏

𝒉𝟏𝟏

𝒔𝟏𝟐

𝒉𝟏𝟐

𝒔𝟎𝟐

𝒉𝟎𝟐

𝒐𝟏𝟐 𝒇𝟏𝟐 𝒊𝟏𝟐 𝒈𝟏𝟐

𝑴𝟎

• 𝒊𝒕𝒍 = 𝜎 𝑊/P 𝓧𝒕; 𝒉𝒕E𝟏𝒍 ; 𝒉𝒕𝒍E𝟏 + 𝑏/P

• 𝒇𝒕𝒍 = 𝜎 𝑊UP 𝓧𝒕; 𝒉𝒕E𝟏𝒍 ; 𝒉𝒕𝒍E𝟏 + 𝑏UP

• 𝒐𝒕𝒍 = 𝜎 𝑊WP 𝓧𝒕; 𝒉𝒕E𝟏𝒍 ; 𝒉𝒕𝒍E𝟏 + 𝑏WP

• 𝒔𝒕𝒍 = 𝑖>P ∗ tanh 𝑊P 𝓧𝒕; 𝒉𝒕E𝟏𝒍 ; 𝒉𝒕𝒍E𝟏 + 𝑏^P + 𝑓>P ∗ 𝒔𝒕E𝟏𝒍

• 𝒉𝒕𝒍 = 𝑜>P ∗ tanh 𝒔𝒕𝒍

… ℎ>k = 0

…ℎkP = 0

𝒳1

Page 23: Differentiable Neural Computer

𝒔𝟎𝟏

𝒉𝟏𝟎𝒙𝟏

𝒉𝟎𝟏

𝒐𝟏𝟏 𝒇𝟏𝟏 𝒊𝟏𝟏 𝒈𝟏𝟏

𝒔𝟏𝟏

𝒉𝟏𝟏

𝒔𝟏𝟐

𝒉𝟏𝟐

𝒔𝟎𝟐

𝒉𝟎𝟐

𝒐𝟏𝟐 𝒇𝟏𝟐 𝒊𝟏𝟐 𝒈𝟏𝟐

𝑴𝟎

𝑪𝟎𝟎

𝒉𝟎𝟎

𝒐𝟏𝟎 𝒇𝟏𝟎 𝒊𝟏𝟎 𝒈𝟏𝟎

𝑪𝟏𝟎

𝒉𝟏𝟎

𝑪𝟏𝟏

𝒉𝟏𝟏

𝑪𝟎𝟏

𝒉𝟎𝟏

𝒐𝟏𝟏 𝒇𝟏𝟏 𝒊𝟏𝟏 𝒈𝟏𝟏

𝒙𝟏 = 𝒉𝟏E𝟏

𝒳1

Page 24: Differentiable Neural Computer

Controller�Network�𝒩

•모든 𝒕에 대해서 𝒉𝒕𝟎 = 𝟎

•모든 𝒕에 대해서 𝒉𝟎𝒍 = 𝟎

•매 시간 controller는 두개의 값을 벹어냄

• Output�V�𝓋> = 𝑊m ℎ>1; … ; ℎ>n

• Interface�V�𝜉> ∈ ℝ F×o pqFprHpq = 𝑊s ℎ>1; … ; ℎ>n

𝝃𝒕

𝒗𝒕

Page 25: Differentiable Neural Computer

𝒔𝟎𝟏

𝒉𝟏𝟎𝒙𝟏

𝒉𝟎𝟏

𝒐𝟏𝟏 𝒇𝟏𝟏 𝒊𝟏𝟏 𝒈𝟏𝟏

𝒔𝟏𝟏

𝒉𝟏𝟐

𝒔𝟎𝟐

𝒉𝟎𝟐

𝒐𝟏𝟐 𝒇𝟏𝟐 𝒊𝟏𝟐 𝒈𝟏𝟐

𝑴𝟎 𝒉𝟐𝟎𝒙𝟐

𝒉𝟏𝟏

𝒐𝟐𝟏 𝒇𝟐𝟏 𝒊𝟐𝟏 𝒈𝟐𝟏

𝒔𝟐𝟏

𝒉𝟐𝟏

𝒔𝟐𝟐

𝒉𝟐𝟐

𝒔𝟏𝟐

𝒐𝟐𝟐 𝒇𝟐𝟐 𝒊𝟐𝟐 𝒈𝟐𝟐

𝑴𝟏

𝓋𝟏 𝜉𝟏 𝓋𝟐 𝜉𝟐

𝒚𝟏 𝒚𝟐

𝑴𝟐

Page 26: Differentiable Neural Computer

Controller�Network�𝒩

• (𝓋>, 𝜉>) = 𝒩 𝒳1;… ;𝒳> ; 𝜃

• 𝒳> = [𝑥>; 𝑟>E11 ; … ; 𝑟>E1H ]

• 만약 recurrent가 아니라 feedforward였다면,

• (𝓋>, 𝜉>) = 𝒩 𝒳>; 𝜃

• 𝑦> = 𝓋> +𝑊x 𝒓𝒕𝟏; … ; 𝒓𝒕𝑹 ,�𝑊x ∈ ℝC×HF

• 𝒓𝒕𝟏; … ; 𝒓𝒕𝑹 를 추가해 방금 읽은 메모리를 보고 결과를 만들도록 함

Page 27: Differentiable Neural Computer

Interface�parameters

• Interface�V�𝜉>는 메모리 상호작용을 결정하는 파라미터들로 구성됨

•각 파라미터는 함수들에 의해 가질 수 있는 값의 범위가 조절됨

• logistic�sigmoid�function�:�[0,1]사이의 값

• ‘Oneplus’�function�:� 1,∞ 사이의 값

• 𝑜𝑛𝑒𝑝𝑙𝑢𝑠 𝑥 = 1 + 𝑙𝑜𝑔(1 + 𝑒�)

Page 28: Differentiable Neural Computer

Interface�parameters

• 𝑅개의 read�key� 𝑘>x,/ ∈ ℝF; 1 ≤ 𝑖 ≤ 𝑅

• 𝑅개의 read�strength�{𝛽>x,/ = 𝑜𝑛𝑒𝑝𝑙𝑢𝑠(𝛽>

x,/) ∈ [1,∞); 1 ≤ 𝑖 ≤ 𝑅}

•write�key�𝑘>7 ∈ ℝ7

•wright�strength�𝛽>7 = 𝑜𝑛𝑒𝑝𝑙𝑢𝑠 𝛽>7 ∈ [1,∞)

• 𝑅개의 free�gates�{𝑓>/ = 𝜎 𝑓>/ ∈ [0,1]; 1 ≤ 𝑖 ≤ 𝑅}

Page 29: Differentiable Neural Computer

Interface�parameters

• 𝑅개의 free�gates�{𝑓>/ = 𝜎 𝑓>/ ∈ [0,1]; 1 ≤ 𝑖 ≤ 𝑅}

• allocation�gate�𝑔>� = 𝜎 𝑔>� ∈ [0,1]

•write�gate�𝑔>7 = 𝜎 𝑔>7 ∈ [0,1]

• 𝑅개의 read�modes�{𝜋>/ = 𝑠𝑜𝑓𝑡𝑚𝑎𝑥 𝜋>/ ∈ 𝒮q; 1 ≤ 𝑖 ≤ 𝑅}

Page 30: Differentiable Neural Computer

메모리읽고쓰기

•얼마나 읽고 쓸지는 weightings에 의해 결정

• 각 벡터들은 양수이며, 모든 값의 합은 최대 1

• ∆.= 𝛼 ∈ ℝ.: 𝛼/ ∈ 0,1 , ∑ 𝛼/./01 ≤ 1

•읽기: 𝑅개의 read�weightings� 𝑤>x,1, … , 𝑤>

x,H ∈ ∆. 이 사용

• 𝑟>/ = 𝑀>�𝑤>

x,/ ∈ ℝF

•읽어진 read�vector들은 다음 time-step에 입력으로 사용

Page 31: Differentiable Neural Computer

메모리읽고쓰기

•쓰기 : 𝑀> = 𝑀>E1 ∘ 𝐸 − 𝒘𝒕𝒘𝒆𝒕� + 𝒘𝒕

𝒘𝒗𝒕�

• 하나의 write�weighting�𝑤>7 ∈ Δ.

• Erase�V�𝑒> ∈ 0,1 F,�Write�V�𝑣> ∈ ℝF

• ∘는 element-wise�multiplication을 의미

• 𝐸 ∈ ℝ.×F는 1만으로 구성된 행렬

Page 32: Differentiable Neural Computer

메모리 addressing

•쓰기

• Content-based�addressing�+�dynamic�memory�allocation

•읽기

• Content-based�addressing�+�temporal�memory�linkage

Page 33: Differentiable Neural Computer

Content-based�addressing

𝒞 𝑀, 𝒌, 𝛽 𝑖 =exp 𝒟 𝒌,𝑀[𝑖,+] 𝛽∑ exp 𝒟 𝒌,𝑀[𝑗,+] 𝛽��

• Lookup�key�: 𝒌 ∈ ℝF

• Key�strength:�𝛽 ∈ 1,∞

• 𝒟 𝑢, 𝑣 =  +¡  ¡

(cosine�similarity)

Page 34: Differentiable Neural Computer

Content-based�addressing

•Weighting�𝒞 𝑀, 𝒌, 𝛽 ∈ 𝒮¢은 메모리 위치에 대한

normalized된 확률 분포

• normalized�:�벡터 값들의 합이 1

• Read�H,�write�H�모두에 사용됨

Page 35: Differentiable Neural Computer

Dynamic�memory�allocation

• Controller가 메모리를 필요한 만큼 할당하고 free하기 위해

• 사용 가능한 메모리 주소들을 free�list라는 리스트에 저장

• 𝒖> ∈ 0,1 . :�memory�usage�vector

• 𝒖k = 𝟎

•메모리에 쓰기 전에 controller는 각각의 read�head마다 하나씩

free�gate 𝑓>/들을 벹고 읽어진 메모리들이 free될지 안될지를 결정

Page 36: Differentiable Neural Computer

Dynamic�memory�allocation

• 𝜓> ∈ 0,1 .는 한 메모리가얼마나 free�되지않을지를 나타냄

• 𝜓> = ∏ 𝟏 − 𝑓>/𝑤>E1x,/H

/01

• Usage�vector�𝒖> = 𝒖>E1 + 𝑤>E17 − 𝒖>E1 ∘ 𝑤>E17 ∘ 𝜓>• 𝒖> = 𝒖>E1 ∘ 1 − 𝑤>E17 + 𝑤>E17 ∘ 𝜓>• 사용되었다 = 사용 중이다 (높은 𝒖) or�방금전에 쓰여졌다 (낮은 𝒖)

• 𝜓> 𝑖 ≈ 1, free�gate에 의해 유지된다는 의미

• 모든 write는 usage를 증가시킨다

• 메모리는 오직 free�gate 𝑓>/에 의해 비워질 수 있다

Page 37: Differentiable Neural Computer

Dynamic�memory�allocation

• 𝑢>가 정해지고 나면 free�list�𝜙> ∈ ℤ.가 정해진다

• 𝜙>:�메모리 index를 usage가 증가하는 방향으로 정렬

• 𝜙>[1]은 가장 적게 사용된 index

• Allocation�weighting�𝒂𝒕 ∈ Δ.는 새로 쓸 index를 계산

• 만약 𝒖𝒕 = 𝟏라면 𝒂> = 𝟎

𝒂𝒕 𝜙> 𝑗 = 1 − 𝒖𝒕 𝜙> 𝑗 ª𝒖𝒕 𝜙> 𝑖�E1

/01

Page 38: Differentiable Neural Computer

Write�weighting

• Controller는 새로운 메모리 혹은 content에 의해 결정된 위

치에 쓸 수 있고, 아얘 쓰지 않겠다고 결정할 수 있음

•Write�content�weighting�𝒄𝒕𝒘 ∈ 𝒮.

• 𝒄𝒕𝒘 = 𝒞 𝑀>E1,𝒌𝒕𝒘, 𝛽>7

Page 39: Differentiable Neural Computer

Write�weighting

•Write�weighting�𝑤>7 ∈ Δ.• 𝒘𝒕

𝒘 = 𝑔>7 𝑔>�𝒂𝒕 + 1 − 𝑔>� 𝒄𝒕𝒘

• 𝑔>7 ∈ [0,1] :�write�gate. 0일경우아무것도쓰지않음

• 𝑔>� ∈ 0,1 :�allocation�gate

• 어디에 쓸 것인가, 새로운 곳? 혹은 Context로 찾은곳?

Page 40: Differentiable Neural Computer

Temporal�memory�linkage

•Memory�allocation은 어떤 순서로 메모리가 써졌는지 모른다

• 하지만 순서를 기억해 둬야할 상황이 있다

• Temporal�link�matrix�𝐿> ∈ 0,1 .×.

• 𝐿>[𝑖, 𝑗]는 주소 j 이후에 i에 얼마나 쓰여졌는가를 나타냄

• 𝐿> 𝑖,+ ∈ Δ.,�𝐿> +, 𝑗 ∈ Δ.

Page 41: Differentiable Neural Computer

Temporal�memory�linkage

• 𝐿>를 정의하기 위해서 𝒑> ∈ Δ.가 필요

• 각 𝒑>[𝑖]는 어느 i가 마지막으로 쓰여졌는가의 정도를 나타냄

• 𝒑k = 0

• 𝒑> = 1 − ∑ 𝒘>7 𝑖�

/ 𝒑>E1 + 𝐰¯°

• 𝑳> 𝑖, 𝑗 = 1 − 𝑤>7 𝑖 − 𝑤>7 𝑗 𝐿>E1 𝑖, 𝑗 + 𝑤>7 𝑖 𝑝>E1 𝑗• 𝑳> 𝑖, 𝑗 = 0 ∀𝑖, 𝑗

• 𝑳> 𝑖, 𝑗 = 0 ∀𝑖

• 𝑳> 𝑖, 𝑖 = 0 ∀𝑖:�자기 자신으로의 링크는 무시됨 (계산하기 어려움)

Page 42: Differentiable Neural Computer

Temporal�memory�linkage

• 𝐿>를 정의하기 위해서 𝒑> ∈ Δ.가 필요

• 각 𝒑>[𝑖]는 어느 i가 마지막으로 쓰여졌는가의 정도를 나타냄

• 𝒑k = 0

• 𝒑> = 1 − ∑ 𝒘>7 𝑖�

/ 𝒑>E1 + 𝐰¯°

• 𝑳> 𝑖, 𝑗 = 1 − 𝑤>7 𝑖 − 𝑤>7 𝑗 𝐿>E1 𝑖, 𝑗 + 𝑤>7 𝑖 𝑝>E1 𝑗• 𝑳> 𝑖, 𝑗 = 0 ∀𝑖, 𝑗

• 𝑳> 𝑖, 𝑗 = 0 ∀𝑖

• 𝑳> 𝑖, 𝑖 = 0 ∀𝑖:�자기 자신으로의 링크는 무시됨 (계산하기 어려움)

Page 43: Differentiable Neural Computer

Temporal�memory�linkage

• 𝐿> :�특정 메모리에서 이전 or�이후에 얼마나 읽었는지의 정도

• Backward�weighting�𝑏>/ ∈ Δ. = 𝐿>�𝑤>E1x,/

• Forward�weighting�𝑓>/ ∈ Δ. = 𝐿>𝑤>E1x,/

Page 44: Differentiable Neural Computer

Sparse�link�matrix