일단 현재 필요한것만 보기 위해서 앞에서 7페이지만 읽어봄.
Fig. 2.에서 보면, 어떻게 뉴런이 동작하는지에 대해서 나와있다.
1. 이전 Neuron에서 들어온 Spike들을 버퍼에 저장.
2. 1kHz의 Signal(Tick)이 오면 axon으로 spike를 넘긴다.
3. Dendrite와 연결된 axon들이 해당 neuron으로 spike를 넣어준다.
4. Spike를 받은 Neuron은 Membrane Potential을 update한다.
5. Membrane potential을 update한 뒤, leak value를 값에서 뺴준다.
6. Updated된 membrane potential이 threshold voltage를 넘기면 Spike를 생성하여 output으로 넘긴다.
jth neuron의 membrane potential의 계산 방법은,
이전 membrane potential + [i = 0~255까지,] (Spike 가 있으면 1, 없으면 0) x (jth dendrite와 ith axon이 연결 되어있는지 보면서, 연결 되어 있으면 1, 아니면 0) x (Neuron의 type과 jth dendrite에 따른 weight) - (jth dendrite의 leaking value)
이렇게 계산하게 된다.
=> 그냥 computation을 일일이 해주는 것인 듯.
=> 실제로는 pseudo random number을 넣어서 더 복잡하게 한다고 한다.
=> 모델 만들면서 각 neuron마다 다르게 넣어줄 수 있는 것은,
1. 각 neuron의 type과 그에 따른 weight. 근데 같은 type이라도 neuron마다 조금씩 차이가 날 수 있어야 한다. 그리고 한 뉴런에는 한개의 weight만 사용한다.
2. 각 뉴런의 leaking value.
=> leaking value와 weight를 그냥 leaking value 한 가지 parameter로 퉁 칠수 있을까?? 머리로는 없다고 생각이 들긴 함.
Asynchronous Design: Communication & Control. Control은 input이 있을때만 computation하도록 하는 것이다.
Synchronous Design: Computation. Asynchronous control signal에 의해서 각각의 core에서 synchronous working을 위한 clock pulse가 생성된다.
그리고 computation 끝날때 까지만 clock이 생성됨.
이 논문을 보면 결국 한 core에 neuron이라고 할 수 있을만한 것은 256개가 아니라 1개 뿐임. 사실 그것도 computation unit이다. 즉, 얘가 SRAM에서 각 Neuron의 parameter/weight/leakage value들을 한개씩 받아와서 계산하고 다시 SRAM으로 넘기고 하는 과정을 256번 반복하는 것이다. Fig. 6에 block이 Neuron block이라고 불리는 computation unit이다.
Chip간의 data 통신은 I/O때문에, multiple bus를 merge해서 single stream of spike로 만든다.
'Research > Spiking Neural Network' 카테고리의 다른 글
[Manual] Yun&Xueyuan's Simulator (0) | 2018.12.02 |
---|---|
STDP - Wikipedia (0) | 2018.10.25 |
[Paper Review] Immunity to device variations in a spiking neural network with memristive nanodevices (0) | 2018.09.28 |