MATH & ML

논문요약 - STDP-based spiking deep convolutional neural networks for object recognition[17.12] 본문

Paper Review

논문요약 - STDP-based spiking deep convolutional neural networks for object recognition[17.12]

BlogYong 2018. 5. 31. 10:48

[2017.12] STDP-based spiking deep convolutional neural networks for object recognition

Saeed Reza Kheradpisheh, Mohammad Ganjtabesh, Simon J. Thorpe and Timoth ee Masquelier 


지난번에도 정리했듯이 spiking neural network란 기존의 nn에 더 생물학적인 개념을 도입하여 실제 뉴런이 보내는 spike를 이용하여  시간적, 공간적으로 텀을 두어 신호를 내보내고 받고 하는 nn이다. 따라서 이에 맞게 nn을 학습하는 러닝방법도 새로운 방법들이 제시되고 있는데 그중 가장 유명한 unsupervised learning 중 하나가 STDP rule을 기반으로 한 방법이다. STDP rule이란 우리가 아는 상식으로 이해하자면 이전뉴런에서 신호가 가고 그다음 추후에 다음 뉴런에서 신호가 가면 그 사이 weight를 증가하는 업데이트를 하고, 반대의 경우에는 감소하는 업데이트를 하는 규칙이라고 할 수 있다. snn쪽 에서는 이  stdp rule을 바탕으로 하는 여러가지 알고리즘이 계속 발표되고 있다.

이번에 리뷰해본 논문은 그  stdp rule을 바탕으로 하여 기존의 cnn에 변형을 시켜 spiking deep neural network로 사진 데이터에 적용해보았다. 

이 논문에서 주장하기로는 현재 가장 높은 퍼포먼스를 자랑하는 supervised back=propagation에 기반한 DCNN은 수렴하는데 오래걸리고 몇 만개의 parameter와 많은 lable있는 sample들이 필요한 단점들을 가지고 있다. 반면에 실제 사람의 뉴런을 보면 몇 개의 sample만으로도 학습을 빠르고 정확하게 하는데 아마도 stdp rule같은걸 쓰기 때문일 것이기에 우리도 nn에 이 rule을 적용해서 만들어 보자는 이야기이다.

이를 위해 최신 논문들에서 다양한 snn들이 물체인식에 쓰일 수 있도록 발표되고 있는데 그것들은 back=propagation을 사용하고, temporal coding이 아닌 rate를 사용하기도 하며, trainable한 layer를 딱 하나만 사용했다. 이 단점들을 극복한 Temporal coding과 stdp를 바탕으로한 변형된 cnn을 제안한 논문이다.

이 저자는 자신감있게 논문에서 다음과 같이 말했다. 

”Based on our knowledge, there is no other spiking deep network which can recognize large-scale natrual objects”

이 논문에서 제안한 구조는 다음 그림과 같다.

기존의 cnn처럼 convolution layer와 pooling layer가 반복되는건 같은데, 처음 DoG(Difference of Gaussian)를 이용하여 사진을 필터링 하는것과 동시에 이를 진한 곳부터 먼저 보내고 연한 곳은 나중에 보내서 시간차를 두어 spike를 내보내 시간에 따라서 차례차례 다음 레이어로 보내는 과정을 거친다. 그렇다면 기존 cnn에서 하던 커널창을 이용하여 convolution을 취하는 과정은 어떻게 바뀐걸까? 이는 그림에서 볼 수 있듯이 conv-window창을 이용하여 그 창에서 오는 신호만을 받아 다음 layer에 신호를 전달하는 과정을 거치는데 물론 이 과정에서  STDP rule을 이용하여 전달한다. 이렇게 해서 실험을 label이 없는 소수의 data 만으로도 좋은 인식 결과를 보여준다.

이 논문 저자는 실제 구성한 nn code와 실험결과를 잘 이해 할 수 있도록 돕는 youtube 영상을 함께 제공했다.

code : https://github.com/npvoid/SDNN_python

youtube : https://www.youtube.com/watch?v=u32Xnz2hDkE


이번기회에는 code를 직접 실행해보고 뜯어 고쳐보고 이해해보고, 더 나아가 조금 변형시켜서도 실행시켜보는 연습을 할 계획.

Comments