이번 포스트에서 소개드릴 논문은 Google Deepmind에서 2014년에 발표한 Neural Turing Machine입니다. 아래 발표 영상 을 보고 질문 & 답변 글을 참고하시기 바랍니다.

질문 혹은 토론하고 싶은 사항이 있다면 댓글 부탁드립니다. :)

발표 영상

발표 자료 PDF

질문 & 답변

Read와 Write의 Weight은 다른 Vector 인가?

  • Read는 N개의 Head, Write는 M개의 Head를 갖을 수 있음 (N과 M은 Hyper parameter)
  • Head 별로 각각 따로 Weight 존재 / Read & Write 는 각각 Head가 다르므로 Weight도 다름

Previous Read Vector는 어떻게 Controller의 Input으로 넣어 주는가?

  • Open Source에 따르면 Controller의 Input은 External Input과 Previous read vector를 Concat하여 구성됨

Controller의 External Output은 어떻게 계산 되는가?

  • Open Source에 따르면 Controller의 Output을 목적에 따라 다르게 활용하는 2개의 Dense Layer가 존재
    • O2P Layer - Controller의 Ouput을 Parameter로 변환
    • O2O Layer - Controller의 Output을 external output으로 변환

Head의 의미는?

  • Turing Machine에서 Head란 Memory에서 특정 위치에 정보를 Write 혹은 Read 하는 장치
  • Neural Turing Machine에서도 유사하게 사용
    • Write 혹은 Read 시 Attention을 위해 각 element에 가중치를 부여하는 Weight Vector (즉, Memory에서 접근할 위치를 결정)

Multiple Head는 어떻게 동작하는가?

  • Controller에서 Head 별로 Parameter가 Output으로 추출되고 이를 활용하여 각 Head는 Read와 Write를 진행
  • Read Operation
    • Multiple Read heads는 각 Head의 Read Vector를 Concat하여 최종적으로 1개의 Read Vector 구성
  • Write Operation
    • Multiple Write heads는 head 수 만큼 순차적으로 Memory에 Write operation을 수행

Multiple Head를 사용하는 이유?

  • 복잡한 알고리즘을 수행하기 위해서 1번의 time step에서 여러번의 Read, Write Operation이 필요할 수 있음
  • 예를 들어, Copy Task같은 단순한 알고리즘을 수행하기 위해서는 각 time step에서 Read 혹은 Write 1개의 Operation만 필요하지만 Sorting Task를 수행하기 위해서는 Write 했던 것을 메모리에서 다른 위치로 옮기고 등의 복잡한 Operation 필요
  • 따라서, Task에 따라 Head 수를 Hyper-parameter로 결정

References