KR20210137663A - Apparatus and method for learning a spiking neural network - Google Patents

Apparatus and method for learning a spiking neural network Download PDF

Info

Publication number
KR20210137663A
KR20210137663A KR1020200055739A KR20200055739A KR20210137663A KR 20210137663 A KR20210137663 A KR 20210137663A KR 1020200055739 A KR1020200055739 A KR 1020200055739A KR 20200055739 A KR20200055739 A KR 20200055739A KR 20210137663 A KR20210137663 A KR 20210137663A
Authority
KR
South Korea
Prior art keywords
input
output
spike
neuron
neural network
Prior art date
Application number
KR1020200055739A
Other languages
Korean (ko)
Other versions
KR102500633B1 (en
Inventor
정성욱
박지아
주성환
김재윤
Original Assignee
연세대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 연세대학교 산학협력단 filed Critical 연세대학교 산학협력단
Priority to KR1020200055739A priority Critical patent/KR102500633B1/en
Publication of KR20210137663A publication Critical patent/KR20210137663A/en
Application granted granted Critical
Publication of KR102500633B1 publication Critical patent/KR102500633B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Abstract

The present invention provides an apparatus and a method for training a spiking neural network. The apparatus comprises: a counter for receiving and counting a clock signal and outputting a shift signal in units of a predetermined time interval; a plurality of input shift registers which have a number corresponding to the number of a plurality of input neurons and a size corresponding to the number and size of a plurality of quantization intervals, which are time intervals divided by a quantization STDP function, and add a predetermined value to an input spike when the input spike is applied to a corresponding input neuron; a plurality of output shift registers which have a number corresponding to the number of a plurality of output neurons and a size corresponding to the number and size of the plurality of quantization sections, and add a predetermined value to an output spike when the output spike occurs in a corresponding output neuron; and a weight update unit which receives the values stored in the plurality of input shift registers and the plurality of output shift registers as accumulated weight change amounts and adds or subtracts the values from the weights stored in a plurality of synapses to update weights. Therefore, the apparatus can be easily implemented as hardware with a small size and at a low cost, and the size of a learning window can be easily varied.

Description

스파이킹 신경망 학습 장치 및 방법{APPARATUS AND METHOD FOR LEARNING A SPIKING NEURAL NETWORK}Spiking neural network learning apparatus and method {APPARATUS AND METHOD FOR LEARNING A SPIKING NEURAL NETWORK}

본 발명은 스파이킹 신경망의 학습 장치에 관한 것으로, 스파이크 타이밍 의존 가소성을 시프트 누적기를 사용하여 하드웨어적으로 구현하는 스파이킹 신경망의 학습 장치에 관한 것이다.The present invention relates to a learning apparatus for a spiking neural network, and to a learning apparatus for a spiking neural network that implements spike timing dependent plasticity in hardware using a shift accumulator.

뉴로모픽(Neuromorphic) 기술은 인간의 신경구조를 하드웨어적으로 모방하기 위한 기술로서, 기존 컴퓨팅 아키텍처가 인지처리 기능을 수행함에 있어 인간에 비해 효율성이 매우 낮고 전력 소모가 크다는 한계를 극복하기 위해 제안되었다.Neuromorphic technology is a technology to mimic the human neural structure in hardware. It is proposed to overcome the limitations that the existing computing architecture is very low in efficiency and consumes a lot of power compared to humans in performing cognitive processing functions. became

뉴로모픽 기술에는 대표적으로 스파이킹 신경망(Spiking Neural Network: 이하 SNN)이 있다. SNN은 인간의 두뇌가 뉴런(Neuron)-시냅스(Synapse) 구조를 가지고 있고, 뉴런과 뉴런을 잇는 시냅스가 스파이크 형태의 전기 신호로 정보를 전달한다는 특징을 모방하여 고안된 신경망이다. 이러한 SNN은 스파이크가 전송되는 타이밍 차에 기초하여 정보를 처리한다.A typical example of neuromorphic technology is a spiking neural network (SNN). SNN is a neural network designed by mimicking the characteristics that the human brain has a neuron-synapse structure, and a synapse between neurons transmits information as a spike-type electrical signal. These SNNs process information based on the timing difference at which the spikes are transmitted.

도 1은 스파이킹 신경망의 동작 개념을 설명하기 위한 도면이다.1 is a diagram for explaining an operation concept of a spiking neural network.

도 1의 (b) 도시된 바와 같이, SNN은 다수의 입력 뉴런(I1 ~ I3)와 다수의 출력 뉴런(O1 ~ O3) 및 다수의 입력 뉴런(I1 ~ I3)와 다수의 출력 뉴런(O1 ~ O3)을 서로 잇는 다수의 시냅스를 포함한다. 그리고 다수의 시냅스 각각은 학습에 의해 획득되는 가중치를 갖는다. 도 1에서는 일 예로 3개의 입력 뉴런(I1 ~ I3)과 하나의 출력 뉴런(O2) 사이를 잇는 3개의 시냅스가 갖는 가중치(W12, W22, W32)를 도시하였다.As shown in (b) of Figure 1, the SNN is a plurality of input neurons (I1 ~ I3), a plurality of output neurons (O1 ~ O3), and a plurality of input neurons (I1 ~ I3) and a plurality of output neurons (O1 ~) O3) contains multiple synapses that connect each other. And each of the plurality of synapses has a weight obtained by learning. In FIG. 1, as an example, weights W12, W22, and W32 of three synapses connecting three input neurons (I1 to I3) and one output neuron (O2) are illustrated.

다수의 입력 뉴런(I1 ~ I3)에는 (a)와 같이 서로 다른 타이밍(T1, T2, T4)에 입력 스파이크(Input spike) 신호가 인가된다. 입력 스파이크는 입력 데이터를 기지정된 방식으로 인코딩하여 스파이크 트레인(spike train)의 형태로 획득된 신호이다. 그리고 입력 스파이크가 인가된 입력 뉴런(I1 ~ I3)은 시냅스를 따라 다수의 출력 뉴런(O1 ~ O3)으로 스파이크를 전달한다. 이때, 각 시냅스의 가중치가 입력 스파이크에 가중되어 전달되고, 가중치가 가중된 입력 스파이크가 전달된 다수의 출력 뉴런(O1 ~ O3) 각각은 입력 스파이크가 전달된 타이밍과 시냅스에 할당된 가중치에 기반하여, 서로 다른 크기로 누적된 스파이크의 세기가 기지정된 발화 문턱값(Vth) 이상이면, 출력 스파이크(Output spike) 신호를 출력한다.An input spike signal is applied to a plurality of input neurons (I1 to I3) at different timings (T1, T2, T4) as shown in (a). The input spike is a signal obtained in the form of a spike train by encoding input data in a predetermined manner. And the input neurons (I1 ~ I3) to which the input spike is applied transmit the spike to a number of output neurons (O1 ~ O3) along the synapse. At this time, the weight of each synapse is weighted and transmitted to the input spike, and each of the multiple output neurons (O1 to O3) to which the weighted input spike is transmitted is based on the timing at which the input spike is transmitted and the weight assigned to the synapse. , when the intensity of spikes accumulated with different sizes is equal to or greater than a predetermined firing threshold (V th ), an output spike signal is output.

도 1에서 (c)를 살펴보면, 제1 타이밍(T1)과 제2 타이밍(T2)에 각각 제1 및 제3 입력 뉴런(I1, I3)으로 인가된 입력 스파이크에 시냅스의 가중치(W12, W32)가 가중되어 제2 출력 뉴런(O2)으로 전달되고, 제2 출력 뉴런(O2)은 가중치(W12, W32)가 가중되고 누적된 입력 스파이크의 전압이 발화 문턱값(Vth) 이상이므로, 제3 타이밍(T3)에서 출력 스파이크를 출력한다.Referring to FIG. 1C , the weights (W12, W32) of the synapses to the input spikes applied to the first and third input neurons (I1, I3) at the first timing (T1) and the second timing (T2), respectively is weighted and transmitted to the second output neuron O2, and the second output neuron O2 is weighted with weights W12, W32 and the accumulated voltage of the input spike is equal to or greater than the firing threshold V th , so the third Output an output spike at timing T3.

이와 같은 SNN에서는 주로 인간 신경망의 동작 특성을 모방한 LIF(Leaky-Integrate and Fire) 뉴런 모델이 이용된다. LIF 뉴런 모델은 입력되는 입력 스파이크에 따른 가중치를 누적(Integrate)하고, 누적된 가중치가 기지정된 기준 레벨 이상이면, 발화(Fire)하여 다음 뉴런으로 전달할 새로운 입력 스파이크를 생성하며, 입력 스파이크가 전달되지 않으면 누적된 입력 스파이크의 세기가 누설(Leaky)되어 시간이 흐를수록 점차 약해지도록 구성된 모델이다.In such an SNN, a Leaky-Integrate and Fire (LIF) neuron model that mimics the operation characteristics of a human neural network is mainly used. The LIF neuron model accumulates weights according to input spikes, and when the accumulated weights are above a predetermined reference level, it fires and generates a new input spike to be transmitted to the next neuron, and the input spike is not transmitted. Otherwise, the accumulated strength of the input spike is leaked and the model is configured to gradually weaken as time goes by.

한편, SNN 또한 인공 신경망의 일종이므로 뉴런을 잇는 시냅스의 가중치를 업데이트하기 위한 학습이 수행되어야 하며, 특히 LIF 뉴런 모델에 기반하는 SNN의 학습에는 일반적으로 스파이크 타이밍 의존 가소성(Spike-timing-dependent plasticity: 이하 STDP) 기법이 이용되고 있다.On the other hand, since SNN is also a kind of artificial neural network, learning to update the weights of synapses connecting neurons must be performed. Hereinafter, STDP) technique is used.

STDP 기법은 출력 스파이크가 발생되는 타이밍과 입력 스파이크가 시냅스를 통해 전달된 타이밍 사이의 시간 차(Δt)에 따라 대응하는 시냅스의 가중치를 기지정된 가중치 변화량(Δw)만큼 증가 또는 감소시켜 업데이트 함으로써 학습을 수행하는 기법이다.The STDP technique learns by increasing or decreasing the weight of the corresponding synapse by a predetermined weight change amount (Δw) according to the time difference (Δt) between the timing at which the output spike occurs and the timing at which the input spike is transmitted through the synapse. method to do it.

다만 기존에는 STDP 기법을 하드웨어로 구현하는 경우에, 출력 스파이크가 발생되는 타이밍과 입력 스파이크 전달되는 타이밍 사이의 시간 차(Δt)를 계산하기 위해, 기지정된 기간 동안 다수의 입력 뉴런 각각으로 입력 스파이스 신호가 인가된 시간 정보인 입력 스파이크 히스토리를 저장하기 위한 다수의 입력 히스토리 레지스터와 기지정된 기간 동안 다수의 출력 뉴런 각각에서 출력 스파이스 신호가 발생된 시간 정보인 출력 스파이크 히스토리를 저장하기 위한 다수의 출력 히스토리 레지스터가 요구되었다. 또한 다수의 입력 히스토리 레지스터와 다수의 출력 히스토리 레지스터에 저장된 입력 스파이크 히스토리와 출력 스파이크 히스토리로부터 계산되는 누적 가중치 변화량(∑Δw)을 저장하기 위한 별도의 변화량 레지스터가 요구되었다.However, when the STDP technique is implemented in hardware, the input spice signal is sent to each of a plurality of input neurons for a predetermined period in order to calculate the time difference (Δt) between the timing at which the output spike is generated and the timing at which the input spike is transmitted. A plurality of input history registers for storing the input spike history, which is the time information to which ? was requested In addition, a separate change amount register for storing the accumulated weight change amount (∑Δw) calculated from the input spike history and the output spike history stored in the plurality of input history registers and the plurality of output history registers was required.

이때 입력 히스토리 레지스터와 출력 히스토리 레지스터는 각각 기지정된 시간 구간에 대응하는 크기로 구현되어 입력 뉴런의 개수와 출력 뉴런의 개수에 대응하는 개수로 구비되어야 하고, 변화량 레지스터 또한 입력 뉴런의 개수와 출력 뉴런의 개수에 각각에 대응하는 개수로 구비되어야 한다.At this time, the input history register and the output history register should be implemented with a size corresponding to a predetermined time interval and provided with the number corresponding to the number of input neurons and the number of output neurons. It should be provided in the number corresponding to each number.

따라서 STDP 기법을 하드웨어로 구현하고자 하는 경우, 요구되는 레지스터의 개수가 매우 많아, 하드웨어 소모가 크다는 단점이 있다. 즉 하드웨어로 구현이 어렵고, 제조 비용이 크게 상승한다는 문제가 있다.Therefore, when the STDP technique is to be implemented in hardware, the number of required registers is very large, which has a disadvantage in that hardware consumption is large. That is, it is difficult to implement in hardware, and there is a problem in that the manufacturing cost is greatly increased.

한국 공개 특허 제10-2018-0062934호 (2018.06.11 공개)Korean Patent Publication No. 10-2018-0062934 (published on June 11, 2018)

본 발명의 목적은 소형, 저비용으로 용이하게 하드웨어로 구현할 수 있는 스파이킹 신경망 학습 장치 및 방법을 제공하는데 있다.An object of the present invention is to provide an apparatus and method for learning a spiking neural network that can be easily implemented in hardware at a low cost and small size.

본 발명의 다른 목적은 STDP 기법에 따른 학습 수행 시 학습 윈도우 크기를 용이하게 가변할 수 있는 스파이킹 신경망 학습 장치 및 방법을 제공하는데 있다.Another object of the present invention is to provide an apparatus and method for learning a spiking neural network that can easily change the size of a learning window when learning is performed according to the STDP technique.

상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 스파이킹 신경망 학습 장치는 다수의 입력 뉴런과 다수의 출력 뉴런 및 각각 가중치가 저장된 다수의 시냅스를 포함하는 스파이킹 신경망을 학습시키기 위한 학습 장치에 있어서, 클럭 신호를 인가받아 카운트하여 기지정된 시간 간격 단위로 시프트 신호를 출력하는 카운터; 상기 다수의 입력 뉴런의 개수에 대응하는 개수와 양자화 STDP 함수에 의해 구분된 시간 구간인 다수의 양자화 구간의 개수 및 크기에 대응하는 크기를 갖고, 대응하는 입력 뉴런으로 입력 스파이크가 인가되면, 기지정된 값을 가산하는 다수의 입력 시프트 레지스터; 상기 다수의 출력 뉴런의 개수에 대응하는 개수와 상기 다수의 양자화 구간의 개수 및 크기에 대응하는 크기를 갖고, 대응하는 출력 뉴런에서 출력 스파이크가 발생되면, 기지정된 값을 가산하는 다수의 출력 시프트 레지스터; 및 상기 다수의 입력 시프트 레지스터와 상기 다수의 출력 시프트 레지스터에 저장된 값을 누적 가중치 변화량으로 인가받아 다수의 시냅스에 저장된 가중치에 가산 또는 감산하여 가중치를 업데이트하는 가중치 업데이트부를 포함한다.A spiking neural network learning apparatus according to an embodiment of the present invention for achieving the above object is a learning apparatus for learning a spiking neural network including a plurality of input neurons, a plurality of output neurons, and a plurality of synapses in which weights are stored, respectively. a counter for receiving and counting a clock signal and outputting a shift signal in units of a predetermined time interval; It has a number corresponding to the number of the plurality of input neurons and a size corresponding to the number and size of a plurality of quantization sections that are time sections separated by the quantization STDP function, and when an input spike is applied to the corresponding input neuron, a predetermined a plurality of input shift registers for adding values; A plurality of output shift registers having a number corresponding to the number of the plurality of output neurons and a size corresponding to the number and size of the plurality of quantization sections, and adding a predetermined value when an output spike occurs in the corresponding output neuron ; and a weight update unit that receives the values stored in the plurality of input shift registers and the plurality of output shift registers as cumulative weight change amounts, and updates the weights by adding or subtracting the values stored in the plurality of synapses.

상기 카운터는 상기 다수의 양자화 구간의 시간 구간에 대응하는 시간 간격 단위로 상기 시프트 신호를 출력할 수 있다.The counter may output the shift signal in units of time intervals corresponding to time intervals of the plurality of quantization intervals.

상기 다수의 입력 시프트 레지스터와 상기 다수의 출력 레지스터 각각은 상기 다수의 양자화 구간의 개수에 기지정된 비트 수가 추가된 크기를 가질 수 있다.Each of the plurality of input shift registers and the plurality of output registers may have a size in which a predetermined number of bits is added to the number of the plurality of quantization sections.

상기 다수의 입력 시프트 레지스터와 상기 다수의 출력 레지스터 각각은 상기 시프트 신호가 인가되면, 저장된 값을 최하위 비트 방향으로 1비트 단위로 시프트시킬 수 있다.Each of the plurality of input shift registers and the plurality of output registers may shift the stored value in the least significant bit direction in units of one bit when the shift signal is applied.

상기 다수의 입력 시프트 레지스터 각각은 대응하는 입력 뉴런으로 입력 스파이크가 인가되면, 상기 다수의 양자화 구간의 개수에 대응하는 비트 위치에 1의 값을 가산할 수 있다.Each of the plurality of input shift registers may add a value of 1 to a bit position corresponding to the number of the plurality of quantization sections when an input spike is applied to a corresponding input neuron.

상기 다수의 입력 시프트 레지스터 각각은 상기 다수의 출력 뉴런 중 적어도 하나의 출력 뉴런에서 출력 스파이크가 발생되면, 저장된 값을 입력 누적 가중치 변화량으로서 상기 가중치 업데이트부로 출력할 수 있다.Each of the plurality of input shift registers may output a stored value to the weight updater as an input cumulative weight change amount when an output spike occurs in at least one output neuron among the plurality of output neurons.

상기 다수의 출력 시프트 레지스터 각각은 대응하는 출력 뉴런에서 출력 스파이크가 발생되면, 상기 다수의 양자화 구간의 개수에 대응하는 비트 위치에 1의 값을 가산할 수 있다.Each of the plurality of output shift registers may add a value of 1 to a bit position corresponding to the number of the plurality of quantization sections when an output spike is generated from a corresponding output neuron.

상기 다수의 출력 시프트 레지스터 각각은 상기 다수의 입력 뉴런 중 적어도 하나의 입력 뉴런으로 입력 스파이크가 인가되면, 저장된 값을 출력 누적 가중치 변화량으로서 상기 가중치 업데이트부로 출력할 수 있다.Each of the plurality of output shift registers may output a stored value to the weight updater as an output cumulative weight change amount when an input spike is applied to at least one input neuron among the plurality of input neurons.

상기 가중치 업데이트부는 상기 다수의 입력 시프트 레지스터 각각에 저장된 값을 인가받아, 상기 다수의 시냅스 중 출력 스파이크를 발생한 출력 뉴런에 연결된 시냅스의 가중치에 가산하고, 상기 다수의 출력 시프트 레지스터 각각에 저장된 값을 인가받아, 상기 다수의 시냅스 중 입력 스파이크가 인가된 입력 뉴런에 연결된 시냅스의 가중치에 감산할 수 있다.The weight update unit receives the values stored in each of the plurality of input shift registers, adds them to the weights of synapses connected to the output neurons that generated output spikes among the plurality of synapses, and applies the values stored in each of the plurality of output shift registers In response, the weight of the synapse connected to the input neuron to which the input spike is applied among the plurality of synapses may be subtracted.

상기 다른 목적을 달성하기 위한 본 발명의 다른 실시예에 따른 스파이킹 신경망 학습 방법은 다수의 입력 뉴런과 다수의 출력 뉴런 및 각각 가중치가 저장된 다수의 시냅스를 포함하는 스파이킹 신경망을 학습시키기 위한 학습 방법에 있어서, 클럭 신호를 인가받아 카운트하여 기지정된 시간 간격 단위로 시프트 신호를 출력하는 단계; 대응하는 입력 뉴런으로 입력 스파이크가 인가되면, 상기 다수의 입력 뉴런의 개수에 대응하는 개수와 양자화 STDP 함수에 의해 구분된 시간 구간인 다수의 양자화 구간의 개수 및 크기에 대응하는 크기를 갖는 입력 시프트 레지스터에 기지정된 값을 가산하는 단계; 대응하는 출력 뉴런에서 출력 스파이크가 발생되면, 상기 다수의 출력 뉴런의 개수에 대응하는 개수와 상기 다수의 양자화 구간의 개수 및 크기에 대응하는 크기를 갖는 출력 시프트 레지스터에 기지정된 값을 가산하는 단계; 및 상기 다수의 입력 시프트 레지스터와 상기 다수의 출력 시프트 레지스터에 저장된 값을 누적 가중치 변화량으로 인가받아 다수의 시냅스에 저장된 가중치에 가산 또는 감산하여 가중치를 업데이트하는 단계를 포함한다.A spiking neural network learning method according to another embodiment of the present invention for achieving the above other object is a learning method for learning a spiking neural network including a plurality of input neurons, a plurality of output neurons, and a plurality of synapses in which weights are stored, respectively. The method of claim 1 , further comprising: receiving a clock signal, counting it, and outputting a shift signal in units of a predetermined time interval; When an input spike is applied to a corresponding input neuron, an input shift register having a number corresponding to the number of the plurality of input neurons and a size corresponding to the number and size of a plurality of quantization sections, which are time sections divided by the quantization STDP function adding a predetermined value to ; adding a predetermined value to an output shift register having a number corresponding to the number of the plurality of output neurons and a size corresponding to the number and size of the plurality of quantization sections when an output spike is generated from a corresponding output neuron; and updating the weights by receiving the values stored in the plurality of input shift registers and the plurality of output shift registers as cumulative weight changes and adding or subtracting the values stored in the plurality of synapses to the weights.

따라서, 본 발명의 실시예에 따른 스파이킹 신경망 학습 장치 및 방법은 입력 히스토리 레지스터와 출력 히스토리 레지스터를 필요로 하지 않고, 누적 가중치 변화량을 계산하여 시냅스의 가중치를 업데이트하여, 소형, 저비용으로 용이하게 하드웨어로 구현할 수 있고, 학습 윈도우 크기를 용이하게 가변할 수 있다.Therefore, the spiking neural network learning apparatus and method according to an embodiment of the present invention do not require an input history register and an output history register, and update the weight of the synapse by calculating the cumulative weight change amount, making it easy to use hardware with a small size and low cost. can be implemented, and the size of the learning window can be easily changed.

도 1은 스파이킹 신경망의 동작 개념을 설명하기 위한 도면이다.
도 2는 STDP 기법을 이용한 스파이킹 신경망의 학습 개념을 설명하기 위한 도면이다.
도 3 내지 도 5는 양자화된 STDP 함수를 이용하여 학습되는 SNN의 일예를 나타낸다.
도 6은 본 발명의 일 실시예에 따른 스파이킹 신경망의 개략적 구조를 나타낸다.
도 7은 도 6의 가중치 학습부의 상세 구성을 나타낸다.
도 8은 도 7의 가중치 학습부에서 입력 시프트 레지스터의 동작을 설명하기 위한 도면이다.
도 9는 학습 윈도우의 크기 및 양자화 구간의 개수와 시프트 레지스터의 크기 사이의 관계를 설명하기 위한 도면이다.
도 10은 본 발명의 일 실시예에 따른 스파이킹 신경망 학습 방법을 나타낸다.
1 is a diagram for explaining an operation concept of a spiking neural network.
2 is a diagram for explaining a learning concept of a spiking neural network using the STDP technique.
3 to 5 show an example of an SNN that is learned using a quantized STDP function.
6 shows a schematic structure of a spiking neural network according to an embodiment of the present invention.
FIG. 7 shows a detailed configuration of the weight learning unit of FIG. 6 .
FIG. 8 is a diagram for explaining an operation of an input shift register in the weight learning unit of FIG. 7 .
9 is a diagram for explaining a relationship between the size of a learning window and the number of quantization sections and the size of a shift register.
10 shows a spiking neural network learning method according to an embodiment of the present invention.

본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다. In order to fully understand the present invention, the operational advantages of the present invention, and the objects achieved by the practice of the present invention, reference should be made to the accompanying drawings illustrating preferred embodiments of the present invention and the contents described in the accompanying drawings.

이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 그러나, 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며, 설명하는 실시예에 한정되는 것이 아니다. 그리고, 본 발명을 명확하게 설명하기 위하여 설명과 관계없는 부분은 생략되며, 도면의 동일한 참조부호는 동일한 부재임을 나타낸다. Hereinafter, the present invention will be described in detail by describing preferred embodiments of the present invention with reference to the accompanying drawings. However, the present invention may be embodied in various different forms, and is not limited to the described embodiments. In addition, in order to clearly describe the present invention, parts irrelevant to the description are omitted, and the same reference numerals in the drawings indicate the same members.

명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라, 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "...부", "...기", "모듈", "블록" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다. Throughout the specification, when a part "includes" a certain component, it means that other components may be further included, rather than excluding other components unless otherwise stated. In addition, terms such as "... unit", "... group", "module", and "block" described in the specification mean a unit that processes at least one function or operation, which is hardware, software, or hardware. and a combination of software.

도 2는 STDP 기법을 이용한 스파이킹 신경망의 학습 개념을 설명하기 위한 도면이다.2 is a diagram for explaining a learning concept of a spiking neural network using the STDP technique.

도 2에서도 도 1과 유사하게, (a)는 다수의 입력 뉴런(I1 ~ I3)에 입력 스파이크가 인가되는 타이밍을 나타내고, (b)는 다수의 입력 뉴런(I1 ~ I3)과 하나의 출력 뉴런(O2) 사이에 연결되는 시냅스의 가중치(W12, W22, W32)를 나타내며, (c)는 STDP 기법에서 출력 스파이크가 발생되는 타이밍과 입력 스파이크가 인가되는 타이밍 사이의 시간 차이(Δt)에 따라 대응하는 시냅스에서 업데이트되는 가중치 변화량(Δw)을 나타낸다.In FIG. 2, similarly to FIG. 1, (a) shows the timing when the input spike is applied to a plurality of input neurons (I1 to I3), (b) is a plurality of input neurons (I1 to I3) and one output neuron (O2) represents the weights (W12, W22, W32) of synapses connected between represents the weight change amount (Δw) updated in the synapse.

(c)에 그래프로 도시된 바와 같이, STDP 기법에서는 기지정된 STDP 함수에 따라 출력 뉴런(O2)이 출력 스파이크를 발생하기 이전 입력 스파이크를 전달한 시냅스는 출력 스파이크의 발생과 관련성이 높다고 판단하여 가중치(W)를 증가(Δw > 0)시키는 장기 강화(Long Term Potentiation: 이하 LTP)와 출력 스파이크가 발생된 이후 입력 스파이크를 전달한 시냅스는 출력 스파이크의 발생과 관련성이 낮다고 판단하여 가중치(W)를 감소(Δw < 0)시키는 장기 저하(Long Term Depression: LTD)로 구성될 수 있다. 여기서 가중치 변화량(Δw)의 절대값(|Δw|)은 도 2의 (c)에 도시된 바와 같이, 출력 스파이크와 입력 스파이크 사이의 타이밍 차이(Δt)의 절대값(|Δt = toutputspike - tinputspike|)이 작을 수록 크다. 즉 제2 출력 뉴런(O2)에서 출력 스파이크가 발생된 제3 타이밍(T3)을 기준으로 제1 입력 뉴런(I1)에 입력 스파이크가 인가된 제1 타이밍(T1)과의 타이밍 차이보다 제3 입력 뉴런(I3)에 입력 스파이크가 인가된 제2 타이밍(T2)과의 타이밍 차이가 더 작으므로, 가중치 변화량(Δw)의 절대값이 더 크게 나타남을 알 수 있다. 그리고 제2 입력 뉴런(I2)에는 출력 스파이크가 발생된 이후인 제4 타이밍에 입력 스파이크가 인가되므로, 가중치 변화량(Δw)이 음의 값으로 나타남을 알 수 있다.As shown in the graph in (c), in the STDP technique, according to the predetermined STDP function, the synapse that the output neuron (O2) delivered the input spike before generating the output spike is judged to be highly related to the occurrence of the output spike and weighted ( Long Term Potentiation (LTP), which increases W) (Δw > 0), and the synapse that transmits the input spike after the occurrence of the output spike are judged to have low relevance to the occurrence of the output spike and decrease the weight (W) ( Δw < 0) and may consist of Long Term Depression (LTD). Here, the absolute value (|Δw|) of the weight change amount Δw is the absolute value (|Δt = t outputspike - t) of the timing difference Δt between the output spike and the input spike, as shown in FIG. 2(c). The smaller the inputspike |) is, the bigger it is. That is, based on the third timing T3 at which the output spike is generated in the second output neuron O2, the third input is greater than the timing difference from the first timing T1 at which the input spike is applied to the first input neuron I1. Since the timing difference from the second timing T2 at which the input spike is applied to the neuron I3 is smaller, it can be seen that the absolute value of the weight change amount Δw is larger. Also, since the input spike is applied to the second input neuron I2 at the fourth timing after the output spike is generated, it can be seen that the weight change amount Δw is negative.

다만, 도 2의 (c)와 같이 연속적인 STDP 함수에 따른 가중치 변화량(Δw)을 그대로 하드웨어로 구현하는 것은 매우 어렵기 때문에 일반적으로 양자화(quantization)된 STDP 함수를 적용한다.However, since it is very difficult to implement the weight change amount Δw according to the continuous STDP function as it is in hardware as shown in FIG. 2C , a quantized STDP function is generally applied.

도 3 내지 도 5는 양자화된 STDP 함수를 이용하여 학습되는 SNN의 일예를 나타낸다.3 to 5 show an example of an SNN that is learned using a quantized STDP function.

도 3에서는 784개의 입력 뉴런(I1~ I784)과 784개의 출력 뉴런(O1 ~ O784) 및 입력 뉴런(I1~ I784)과 출력 뉴런(O1 ~ O784)을 각각 서로 연결하는 시냅스를 포함하는 SNN을 도시하였다. 그리고 SNN의 학습을 위해 입력 뉴런(I1~ I784)의 개수에 대응하는 개수의 입력 히스토리 레지스터(Input history register)와 출력 뉴런(O1 ~ O784)의 개수에 대응하는 개수의 출력 히스토리 레지스터(Input history register)가 더 구비된다. 입력 히스토리 레지스터는 기지정된 시간 구간 동안 입력 스파이크가 인가된 타이밍을 저장하기 위한 레지스터이고, 출력 히스토리 레지스터는 기지정된 시간 구간 동안 출력 스파이크가 발생된 타이밍을 저장하기 위한 레지스터이다. 또한 입력 히스토리 레지스터와 출력 히스토리 레지스터는 시프트 레지스터로 구현되어 인가된 입력 스파이크 또는 발생된 출력 스파이크를 기지정된 시간 간격 단위(여기서는 클럭 또는 사이클 단위)로 이동시킨다.3 shows an SNN including 784 input neurons (I1 to I784) and 784 output neurons (O1 to O784) and synapses connecting the input neurons (I1 to I784) and output neurons (O1 to O784), respectively. did. And for SNN learning, the number of input history registers corresponding to the number of input neurons (I1 to I784) and the number of output history registers corresponding to the number of output neurons (O1 to O784) are input history registers (Input history registers) ) is further provided. The input history register is a register for storing the timing at which the input spike is applied for a predetermined time period, and the output history register is a register for storing the timing at which the output spike is generated for the predetermined time period. In addition, the input history register and the output history register are implemented as shift registers to shift an applied input spike or a generated output spike in units of a predetermined time interval (here, in units of clocks or cycles).

도 4에서는 STDP 함수가 20클럭과 40 클럭을 기준으로 서로 다른 가중치 변화량(Δw)을 갖도록 2개의 양자화 구간으로 양자화된 STDP 함수를 도시하였으며, 이 경우, 입력 히스토리 레지스터와 출력 히스토리 레지스터 각각은 입력 스파이크가 인가된 타이밍 또는 출력 스파이크가 발생된 타이밍을 40클럭까지 저장할 수 있어야 한다. 즉 입력 히스토리 레지스터와 출력 히스토리 레지스터는 양자화된 STDP 함수에 의해 지정된 시간 구간에 대응하는 크기를 가져야 한다.4 shows the STDP function quantized into two quantization sections so that the STDP function has different weight change amounts (Δw) based on 20 clocks and 40 clocks. In this case, the input history register and the output history register each have an input spike. It should be able to store up to 40 clocks the timing at which is applied or the timing at which the output spike is generated. That is, the input history register and the output history register must have sizes corresponding to the time interval specified by the quantized STDP function.

도 4에서 시간 차(Δt)가 0인 위치를 기준으로 양의 값을 갖는 LTP에서 가중치 변화량(Δw)이 0이 될 때까지, 또는 음의 값을 갖는 LTD에서 가중치 변화량(Δw)이 0이 될 때까지를 각각 학습 윈도우(learning window)라고 한다. 도 4에서는 일 예로 LTP 학습 윈도우와 LTD 학습 윈도우 각각이 20클럭 단위로 2개의 양자화 구간으로 구분되는 것으로 도시하였으나, 양자화된 STDP 함수에서 학습 윈도우의 크기와 양자화 구간의 개수 및 각 양자화 구간에 대응하는 가중치 변화량(Δw)은 조절될 수 있다.In FIG. 4, based on the position where the time difference (Δt) is 0, the weight change amount (Δw) is 0 in the LTP having a positive value until the weight change amount (Δw) becomes 0, or in the LTD having a negative value, the weight change amount (Δw) is 0 Each period is called a learning window. In FIG. 4, as an example, each of the LTP learning window and the LTD learning window is shown as being divided into two quantization sections in units of 20 clocks. The weight change amount Δw may be adjusted.

그리고 도 5의 (a)에 도시된 바와 같이, 다수의 입력 히스토리 레지스터에 저장된 입력 스파이크 타이밍은 다수의 출력 뉴런 중 특정 출력 뉴런에서 출력 스파이크가 발생되면, 도 4의 양자화된 STDP 함수의 LTP에 기반하여 타이밍에 따라 서로 다르게 적용되는 가중치 변화량(Δw)이 가산되어 입력 변화량 레지스터에 저장된다. 여기서 입력 변화량 레지스터는 다수의 입력 히스토리 레지스터 각각에 대응하는 개수로 구비되어 대응하는 입력 히스토리 레지스터에 저장된 입력 스파이크 타이밍에 따른 가중치 변화량(Δw)을 가산한 누적 가중치 변화량(∑Δw)을 획득하고, 획득된 누적 가중치 변화량(∑Δw)을 대응하는 시냅스의 가중치(w)에 더하여 시냅스의 가중치(w+∑Δw)를 업데이트 한다.And as shown in FIG. 5A, the input spike timing stored in the plurality of input history registers is based on the LTP of the quantized STDP function of FIG. 4 when an output spike occurs in a specific output neuron among the plurality of output neurons. Thus, the weight change amount Δw applied differently depending on the timing is added and stored in the input change amount register. Here, the input change amount register is provided in a number corresponding to each of the plurality of input history registers, and the accumulated weight change amount (∑Δw) is obtained by adding the weight change amount (Δw) according to the input spike timing stored in the corresponding input history register. The synapse weight (w+∑Δw) is updated by adding the accumulated weight change amount (∑Δw) to the corresponding synapse weight (w).

또한 도 5의 (b)에 도시된 바와 같이, 다수의 출력 히스토리 레지스터에 저장된 출력 스파이크 타이밍은 다수의 입력 뉴런 중 특정 입력 뉴런에서 입력 스파이크가 인가되면, 도 4의 양자화된 STDP 함수의 LTD에 기반하여 타이밍에 따라 서로 다르게 적용되는 가중치 변화량(Δw)이 가산되어 출력 변화량 레지스터에 저장된다. 출력 변화량 레지스터 또한 다수의 출력 히스토리 레지스터 각각에 대응하는 개수로 구비되어, 대응하는 출력 히스토리 레지스터에 저장된 출력 스파이크 타이밍에 따른 가중치 변화량(Δw)을 가산한 누적 가중치 변화량(∑Δw)을 획득하고, 획득된 누적 가중치 변화량(∑Δw)을 대응하는 시냅스의 가중치(w)에 더하여 시냅스의 가중치(w+∑Δw)를 업데이트 한다.Also, as shown in FIG. 5B, the output spike timing stored in the plurality of output history registers is based on the LTD of the quantized STDP function of FIG. 4 when an input spike is applied from a specific input neuron among the plurality of input neurons. Accordingly, the weight change amount Δw applied differently depending on the timing is added and stored in the output change amount register. The output change amount register is also provided in a number corresponding to each of the plurality of output history registers, and the accumulated weight change amount (∑Δw) is obtained by adding the weight change amount (Δw) according to the output spike timing stored in the corresponding output history register. The synapse weight (w+∑Δw) is updated by adding the accumulated weight change amount (∑Δw) to the corresponding synapse weight (w).

결과적으로, 도 3 내지 도 5에서는 기지정된 크기로 입력 히스토리 레지스터와 출력 히스토리 레지스터가 다수의 입력 뉴런 및 다수의 출력 뉴런 각각에 대응하는 개수로 요구될 뿐만 아니라, 입력 변화량 레지스터와 출력 변화량 레지스터 또한 입력 뉴런 및 출력 뉴런의 개수로 요구된다. 따라서 이를 하드웨어로 구현하는 경우, 대량의 레지스터가 필요하게 된다.As a result, in Figs. 3 to 5, not only the input history register and the output history register with a predetermined size are required in numbers corresponding to each of the plurality of input neurons and the plurality of output neurons, but also the input change register and the output change register are input The number of neurons and output neurons is required. Therefore, when implementing this in hardware, a large number of registers are required.

도 6은 본 발명의 일 실시예에 따른 스파이킹 신경망의 개략적 구조를 나타낸다.6 shows a schematic structure of a spiking neural network according to an embodiment of the present invention.

도 6을 참조하면, SNN은 입력 뉴런부(100)와 가중치 시냅스부(200), 출력 뉴런부(300) 및 가중치 학습부(400)를 포함한다.Referring to FIG. 6 , the SNN includes an input neuron unit 100 , a weighted synapse unit 200 , an output neuron unit 300 , and a weight learning unit 400 .

입력 뉴런부(100)는 다수의 입력 뉴런(미도시)을 포함하고, 입력 데이터가 인가되면, 인가된 입력 데이터를 기지정된 방식에 따라 인코딩하여 스파이크 트레인(spike train)의 형태의 입력 스파이크로 변환하여 대응하는 입력 뉴런으로 인가한다.The input neuron unit 100 includes a plurality of input neurons (not shown), and when input data is applied, it encodes the applied input data according to a predetermined method and converts it into an input spike in the form of a spike train. to the corresponding input neuron.

이때 입력 뉴런부(100)는 포아송 인코딩(Poisson encoding) 기법에 따라 입력 데이터를 인코딩하여 입력 스파이크로 변환할 수 있다. 포아송 인코딩은 SNN에서 입력 데이터를 변환하기 위해 주로 사용되는 인코딩 기법으로 포아송 분포(Poisson distribution)에 따른 확률 기반하여 각각 시간차를 두고 발생되는 희소 입력 스파이크로 생성될 수 있다. 일 예로 입력 뉴런부(100)는 이미지에서 대응하는 각 픽셀의 픽셀값들을 입력 데이터로 인가받고, 인가된 픽셀값에 따라 시간차를 두고 발생되는 입력 스파이크를 출력할 수 있다.In this case, the input neuron unit 100 may encode input data according to a Poisson encoding technique and convert it into an input spike. Poisson encoding is an encoding technique mainly used to transform input data in SNN, and may be generated with sparse input spikes generated with a time difference, based on a probability according to a Poisson distribution. For example, the input neuron unit 100 may receive the pixel values of each pixel corresponding to the image as input data, and may output an input spike generated with a time difference according to the applied pixel value.

여기서 입력 뉴런부(100)는 이진 데이터의 형식으로 입력 스파이크를 생성하는 것으로 가정한다. 일 예로 입력 스파이크가 발생되면 1의 값을 출력하고, 입력 스파이크가 발생되지 않으면 0의 값을 출력하도록 설정될 수 있다.Here, it is assumed that the input neuron unit 100 generates an input spike in the form of binary data. For example, it may be set to output a value of 1 when an input spike occurs, and output a value of 0 when no input spike occurs.

또한 입력 뉴런부(100)는 이진 데이터 형식으로 다수의 입력 스파이크를 인가받도록 구성될 수도 있으며, 이 경우 입력 뉴런부(100)는 다수의 입력 스파이크를 버퍼링하여 출력하는 버퍼로 구현될 수 있다.Also, the input neuron unit 100 may be configured to receive a plurality of input spikes in a binary data format. In this case, the input neuron unit 100 may be implemented as a buffer that buffers and outputs the plurality of input spikes.

그리고 입력 스파이크가 인가된 다수의 입력 뉴런 각각은 인가된 입력 스파이크를 가중치 시냅스부(200)의 대응하는 시냅스로 전달한다.In addition, each of the plurality of input neurons to which the input spike is applied transmits the applied input spike to the corresponding synapse of the weighted synapse unit 200 .

가중치 시냅스부(200)는 SNN에서 두뇌의 시냅스를 모방한 구성으로, 다수의 가중치를 저장하는 메모리 어레이와 유사한 구조를 가질 수 있다. 일 예로 가중치 시냅스부(200)는 SRAM(Static Random access memory) 등으로 구현될 수 있다.The weight synapse unit 200 is configured to imitate brain synapses in SNN, and may have a structure similar to a memory array storing a plurality of weights. For example, the weight synapse unit 200 may be implemented as a static random access memory (SRAM) or the like.

가중치 시냅스부(200)의 다수의 시냅스 각각은 대응하는 가중치를 저장하고, 입력 뉴런부(100)에서 입력 스파이크가 인가되면, 인가된 입력 스파이크에 대응하는 가중치를 출력 뉴런부(300)로 출력한다. 여기서 가중치 시냅스부(200)에 저장된 다수의 가중치는 가중치 학습부(400)에 의해 업데이트된다.Each of the plurality of synapses of the weighted synapse unit 200 stores a corresponding weight, and when an input spike is applied from the input neuron unit 100 , a weight corresponding to the applied input spike is outputted to the output neuron unit 300 . . Here, a plurality of weights stored in the weight synapse unit 200 are updated by the weight learning unit 400 .

가중치 시냅스부(200)의 다수의 시냅스 각각은 입력 뉴런부(100)로부터 시간차를 두고 발생되어 인가되는 다수의 입력 스파이크 각각에 응답하여 대응하는 가중치를 반복적으로 출력 뉴런부(300)의 대응하는 출력 뉴런으로 전달한다. 즉 입력 뉴런부(100)에서 입력 스파이크가 발생될 때마다 저장된 가중치 중 대응하는 가중치를 출력 뉴런부(300)로 출력한다.Each of the plurality of synapses of the weighted synaptic unit 200 repeatedly outputs a corresponding weight in response to each of a plurality of input spikes generated and applied with a time difference from the input neuron unit 100. The corresponding output of the neuron unit 300 transmitted to neurons. That is, whenever an input spike occurs in the input neuron unit 100 , a corresponding weight among the stored weights is output to the output neuron unit 300 .

출력 뉴런부(300)의 다수의 출력 뉴런 각각은 가중치 시냅스부(200)에서 출력되는 가중치의 누적 합에 기초하여 다수의 출력 스파이크를 생성한다. 다수의 출력 뉴런은 상기한 LIF 뉴런 모델에 기반하여 구성될 수 있다.Each of the plurality of output neurons of the output neuron unit 300 generates a plurality of output spikes based on the cumulative sum of weights output from the weighted synaptic unit 200 . A plurality of output neurons may be constructed based on the above-described LIF neuron model.

다수의 출력 뉴런 각각은 적어도 하나의 입력 스파이크가 발생될 때마다 대응하는 시냅스부로부터 인가되는 가중치(w)를 모두 합하고, 가중 입력 스파이크의 합에 이전 획득된 누적 스파이크를 더 가산한다. 이때 출력 뉴런부(300)는 입력 스파이크의 합에 이전 획득된 누적 스파이크를 그대로 더하는 것이 아니라, LIF 기법의 누설을 구현하기 위해, 이전 획득된 누적 스파이크에 기지정된 누설 팩터(λ)(여기서 0 < λ < 1인 실수)를 가중한 누설 누적 스파이크를 더하여 누적 스파이크를 획득할 수 있다.Each of the plurality of output neurons sums all the weights w applied from the corresponding synaptic units whenever at least one input spike occurs, and further adds the previously obtained cumulative spike to the sum of the weighted input spikes. At this time, the output neuron unit 300 does not add the previously acquired cumulative spike to the sum of the input spikes as it is, but in order to implement the leakage of the LIF technique, a leakage factor (λ) predetermined to the previously acquired cumulative spike (where 0 < A cumulative spike may be obtained by adding the leakage cumulative spike weighted by λ < 1).

그리고 누적 스파이크가 기지정된 발화 문턱값(Vth)보다 전압 레벨이 높으면, 출력 스파이크를 발화하여 출력한다.And when the voltage level of the accumulated spike is higher than the predetermined ignition threshold (V th ), the output spike is ignited and output.

가중치 학습부(400)는 SNN을 학습시키기 위한 학습 장치에 해당하는 구성으로 상기한 STDP 기법에 따라 가중치 시냅스부(200)의 다수의 시냅스 각각에 대한 가중치를 업데이트하여 시냅스를 학습시킨다. STDP 기법에 따라 가중치를 학습시키는 가중치 학습부(400)는 출력 스파이크가 발생된 시점을 기준으로 이전 기지정된 기간 동안 입력 뉴런부(100)으로부터 가중치 시냅스부(200)로 입력 스파이크가 입력된 시간 정보를 기반으로 가중치를 증가시킨다. 한편, 가중치 학습부(400)는 입력 뉴런부(100)으로부터 가중치 시냅스부(200)로 입력 스파이크가 입력되면, 입력 스파이크가 입력된 이전 기지정된 기간 동안 출력 스파이크가 발생된 시간 정보를 기반으로 가중치를 감소시킨다. 즉 가중치 학습부(400)는 인가되는 입력 스파이크와 출력 스파이크의 발생 시간에 기반하여 가중치를 증가 또는 감소시킨다.The weight learning unit 400 learns synapses by updating the weights for each of a plurality of synapses of the weighted synapse unit 200 according to the above-described STDP technique as a configuration corresponding to a learning apparatus for learning the SNN. The weight learning unit 400 for learning the weights according to the STDP technique is the time information when the input spike is input from the input neuron unit 100 to the weight synapse unit 200 for a previously predetermined period based on the time when the output spike is generated. weights are increased based on On the other hand, the weight learning unit 400, when an input spike is input from the input neuron unit 100 to the weight synapse unit 200, weights based on the time information at which the output spike occurred during the previous predetermined period when the input spike was input. reduces the That is, the weight learning unit 400 increases or decreases the weight based on the generation time of the applied input spike and the output spike.

이때 가중치 학습부(400)는 상기한 바와 같이, 양자화 STDP 함수에 기반하여 가중치(w)의 가중치 변화량(Δw)을 조절하여 가중치를 업데이트 함으로써 시냅스를 학습시킬 수 있다.At this time, as described above, the weight learning unit 400 may learn the synapse by adjusting the weight change amount Δw of the weight w based on the quantization STDP function and updating the weight.

도 7은 도 6의 가중치 학습부의 상세 구성을 나타내고, 도 8은 도 7의 가중치 학습부에서 입력 시프트 레지스터의 동작을 설명하기 위한 도면이다.FIG. 7 shows the detailed configuration of the weight learning unit of FIG. 6 , and FIG. 8 is a diagram for explaining the operation of the input shift register in the weight learning unit of FIG. 7 .

도 7을 참조하면, 가중치 학습부(400)는 카운터(410)와 입력 시프트 레지스터부(420), 출력 시프트 레지스터부(430) 및 가중치 업데이트부(440)를 포함할 수 있다.Referring to FIG. 7 , the weight learning unit 400 may include a counter 410 , an input shift register unit 420 , an output shift register unit 430 , and a weight update unit 440 .

카운터(410)는 클럭 신호(clk)를 인가받아 카운트하고, 카운트된 클럭 신호의 개수가 기지정된 개수에 도달하면, 시프트 신호(sf)를 입력 시프트 레지스터부(420)와 출력 시프트 레지스터부(430)로 출력한다.The counter 410 receives and counts the clock signal clk, and when the counted number of clock signals reaches a predetermined number, the counter 410 transmits the shift signal sf to the input shift register unit 420 and the output shift register unit 430 . ) is output.

여기서 카운터(410)는 양자화 STDP 함수에 의해 지정된 시간 구간에 따라 클럭 개수를 카운트하여 시프트 신호(sf)를 출력하도록 설정될 수 있다. 일 예로 도 4에 도시된 바와 같이, 양자화 STDP 함수가 20 클럭(20clk) 단위로 가중치 변화량(Δw)을 가변하는 경우, 카운터(410)는 20 클럭(20clk)마다 시프트 신호(sf)를 출력하도록 설정될 수 있으며, 양자화 STDP 함수가 40 클럭(40clk) 단위로 가중치 변화량(Δw)을 가변하는 경우, 카운터(410)는 40 클럭(40clk)마다 시프트 신호(sf)를 출력하도록 설정될 수 있다.Here, the counter 410 may be set to output the shift signal sf by counting the number of clocks according to a time interval specified by the quantization STDP function. For example, as shown in FIG. 4 , when the quantization STDP function varies the weight change amount Δw in units of 20 clocks (20clk), the counter 410 outputs a shift signal sf every 20 clocks (20clk). may be set, and when the quantization STDP function varies the weight change amount Δw in units of 40 clocks (40clk), the counter 410 may be configured to output the shift signal sf every 40 clocks (40clk).

입력 시프트 레지스터부(420)와 출력 시프트 레지스터부(430)는 각각 입력 뉴런부(100)의 입력 뉴런의 개수에 대응하는 개수의 입력 시프트 레지스터와 출력 뉴런부(300)의 출력 뉴런의 개수에 대응하는 개수의 출력 시프트 레지스터를 포함한다. 그리고 입력 시프트 레지스터와 출력 시프트 레지스터 각각은 양자화 STDP 함수에서 지정되는 학습 윈도우의 크기와 학습 윈도우 내에 가중치 변화량(Δw)이 구분되는 양자화 구간의 개수에 대응하는 크기를 갖는다.The input shift register unit 420 and the output shift register unit 430 correspond to the number of input shift registers corresponding to the number of input neurons of the input neuron unit 100 and the number of output neurons of the output neuron unit 300, respectively. It contains a number of output shift registers. In addition, each of the input shift register and the output shift register has a size corresponding to the size of the learning window specified in the quantization STDP function and the number of quantization sections in which the weight change amount Δw is divided within the learning window.

본 발명에서 입력 시프트 레지스터와 출력 시프트 레지스터는 학습 윈도우에 포함되는 양자화 구간의 개수와 기지정된 비트수(예를 들면 2비트)의 합에 대응하는 비트수를 갖도록 구현될 수 있다. 여기서 기지정된 비트수는 학습 윈도우에서 양자화 구간의 크기에 따라 조절될 수 있다.In the present invention, the input shift register and the output shift register may be implemented to have the number of bits corresponding to the sum of the number of quantization sections included in the learning window and a predetermined number of bits (eg, 2 bits). Here, the predetermined number of bits may be adjusted according to the size of the quantization section in the learning window.

일 예로 도 4에서와 같이, 40 클럭 크기의 학습 윈도우가 서로 다른 2개의 가중치 변화량(Δw)을 갖는 2개의 양자화 구간으로 구분되는 경우를 가정하였다. 이 경우, 입력 시프트 레지스터와 출력 시프트 레지스터는 각각 4(= 2+2)비트 크기의 시프트 레지스터로 구현될 수 있다. 그러나 만일 학습 윈도우가 60 클럭 크기를 갖고 3개의 양자화 구간으로 구분되는 경우, 입력 시프트 레지스터와 출력 시프트 레지스터는 각각 5(= 3+2)비트 크기의 시프트 레지스터로 구현될 수도 있다. 또한 학습 윈도우가 1000 클럭 크기를 갖고 2개의 양자화 구간으로 구분되는 경우, 입력 시프트 레지스터와 출력 시프트 레지스터는 각각 5(= 2+3)비트 크기의 시프트 레지스터로 구현될 수도 있다.As an example, as shown in FIG. 4 , it is assumed that a learning window having a size of 40 clocks is divided into two quantization sections having two different weight change amounts Δw. In this case, the input shift register and the output shift register may be implemented as shift registers each having a size of 4 (= 2+2) bits. However, if the learning window has a clock size of 60 and is divided into three quantization sections, the input shift register and the output shift register may be implemented as shift registers each having a size of 5 (= 3+2) bits. In addition, when the learning window has a size of 1000 clocks and is divided into two quantization sections, the input shift register and the output shift register may be implemented as shift registers each having a size of 5 (= 2+3) bits.

학습 윈도우의 크기 및 양자화 구간의 개수와 입력 시프트 레지스터와 출력 시프트 레지스터의 크기 사이의 관계는 후술하도록 한다.The relationship between the size of the learning window, the number of quantization intervals, and the sizes of the input shift register and the output shift register will be described later.

다수의 입력 시프트 레지스터 각각은 대응하는 뉴런으로 입력 스파이크(IS)가 인가되면, 입력 시프트 레지스터의 기지정된 비트 위치에 1의 값을 가산한다. 즉 입력 시프트 레지스터에 저장된 위치에 미리 지정된 값을 가산한다. 입력 시프트 레지스터는 양자화 STDP 함수에서 LTP에 기반하여 가중치 변화량(Δw)을 가산하며, 이에 학습 윈도우를 구분한 다수의 양자화 구간 중 시간 차(Δt)가 0인 위치를 초기 양자화 구간에 대응하는 가중치 변화량(Δw)을 이전 저장된 값에 가산한다. 입력 시프트 레지스터부(420)는 입력 스파이크(IS)가 인가될 때마다 동일한 값을 가산하므로, 매번 동일 비트 위치에 1을 가산한다. 그리고 카운터(410)에서 시프트 신호(sf)가 인가될 때마다 저장된 값을 지정된 방향으로 시프트시킨다.Each of the plurality of input shift registers adds a value of 1 to a predetermined bit position of the input shift register when an input spike IS is applied to the corresponding neuron. That is, a predetermined value is added to the position stored in the input shift register. The input shift register adds the weight change amount (Δw) based on the LTP in the quantization STDP function, and the position where the time difference (Δt) is 0 among a plurality of quantization sections dividing the learning window to the weight change amount corresponding to the initial quantization section (Δw) is added to the previously stored value. Since the input shift register unit 420 adds the same value whenever the input spike IS is applied, 1 is added to the same bit position each time. And whenever the shift signal sf is applied from the counter 410, the stored value is shifted in a designated direction.

도 8에서 (a)는 입력 시프트 레지스터의 일 예를 나타내고, (b)는 입력 스파이크가 인가되는 타이밍에 따라 입력 시프트 레지스터에 저장된 값을 나타낸다. 도 8에서는 입력 시프트 레지스터부(420)가 입력 뉴런의 개수에 대응하여 784개의 입력 시프트 레지스터를 포함하는 경우를 가정하여 도시하였다. 그리고 도 8에서도 입력 시프트 레지스터가 도 4의 양자화 STDP 함수를 기반으로 동작하는 것으로 가정한다.In FIG. 8, (a) shows an example of an input shift register, and (b) shows a value stored in the input shift register according to the timing at which the input spike is applied. In FIG. 8 , it is assumed that the input shift register unit 420 includes 784 input shift registers corresponding to the number of input neurons. Also in FIG. 8 , it is assumed that the input shift register operates based on the quantization STDP function of FIG. 4 .

도 4의 예에서 초기 양자화 구간의 가중치 변화량(Δw)은 +2이므로, 입력 시프트 레지스터는 입력 스파이크(IS)가 인가되면, 2에 대응하는 비트 위치에 1의 값을 가산한다. 이에 도 8의 (b)에서 제1 타이밍(T = t1)에 인가된 입력 스파이크에 응답하여, 입력 시프트 레지스터는 최우측의 최하위 비트(Least Significant Bit: LSB) 위치로부터 좌측 첫번째 위치한 비트 위치에 1을 가산하였다.In the example of FIG. 4 , since the weight change amount Δw in the initial quantization section is +2, the input shift register adds a value of 1 to the bit position corresponding to 2 when the input spike IS is applied. Accordingly, in response to the input spike applied at the first timing (T = t1) in FIG. 8B , the input shift register is 1 at the first left bit position from the right least significant bit (LSB) position. was added.

그리고 카운터(410)로부터 제2 타이밍(T = t2)에 시프트 신호(sf)가 인가되면, 입력 시프트 레지스터는 각 비트 위치에 저장된 값을 최하위 비트 방향으로 1비트 시프트 시킨다. 시프트 레지스터에서 최하위 비트 방향으로 1비트 시프트시키는 것은 수학적으로 시프트 레지스터에 저장된 값을 2로 나누는 연산을 수행하는 것과 유사하므로, 입력 시프트 레지스터에 저장된 값은 1로 감소된다.And when the shift signal sf is applied from the counter 410 at the second timing (T = t2), the input shift register shifts the value stored at each bit position by one bit in the least significant bit direction. Shifting one bit in the least significant bit direction in the shift register is mathematically similar to performing a division by two operation on the value stored in the shift register, so the value stored in the input shift register is decremented by 1.

한편 제3 타이밍(T = t3)과 제4 타이밍(T = t4)에 각각 입력 스파이크가 다시 인가되면, 입력 시프트 레지스터는 제3 및 제4 타이밍(t3, t4)에 인가된 입력 스파이크 각각에 응답하여, 연속적으로 +2를 가산한다.Meanwhile, when the input spikes are applied again at the third timing (T = t3) and the fourth timing (T = t4), respectively, the input shift register responds to the input spikes applied at the third and fourth timings (t3 and t4), respectively So, +2 is added continuously.

이와 같이 입력 시프트 레지스터는 입력 스파이크가 인가될 때마다 기지정된 값을 가산하고, 카운터(410)로부터 시프트 신호(sf)가 인가될 때마다 저장된 값을 2로 나누는 연산이 수행되도록 비트 시프트를 수행한다. 이는 출력 스파이크가 발생되기 이전 입력 스파이크를 전달한 시냅스는 출력 스파이크의 발생과 관련성이 높다고 판단하여 가중치(W)를 증가시키는 LTP를 구현하는 것으로, 입력 시프트 레지스터에항시 누적 가중치 변화량(∑Δw)을 저장하고 잇는 것으로 볼 수 있다.In this way, the input shift register adds a predetermined value whenever an input spike is applied, and performs a bit shift so that an operation of dividing the stored value by 2 is performed whenever a shift signal sf is applied from the counter 410. . This is to implement LTP that increases the weight (W) by determining that the synapse that delivered the input spike before the output spike is highly related to the occurrence of the output spike, and always stores the accumulated weight change (∑Δw) in the input shift register It can be seen as doing

그리고 다수의 출력 뉴런 중 적어도 하나의 출력 뉴런에서 출력 스파이크(OS)가 발생되면, 입력 시프트 레지스터는 현재 저장된 누적 가중치 변화량(∑Δw)을 출력한다.In addition, when an output spike OS occurs in at least one output neuron among the plurality of output neurons, the input shift register outputs the currently stored accumulated weight change amount ∑Δw.

한편, 도시하지 않았으나, 출력 시프트 레지스터는 입력 시프트 레지스터와 유사하게, 출력 스파이크가 인가될 때마다 기지정된 값을 가산하고, 카운터(410)로부터 시프트 신호(sf)가 인가될 때마다 저장된 값을 2로 나누는 연산이 수행되도록 비트 시프트를 수행한다. 그리고 이러한 동작은 출력 스파이크가 발생된 이후 입력 스파이크를 전달한 시냅스는 출력 스파이크의 발생과 관련성이 낮다고 판단하여 가중치(W)를 감소가시키는 LTD를 구현하는 것으로, 출력 시프트 레지스터에도항시 누적 가중치 변화량(∑Δw)을 저장하고 잇는 것으로 볼 수 있다.On the other hand, although not shown, the output shift register, similar to the input shift register, adds a predetermined value each time an output spike is applied, and each time a shift signal sf is applied from the counter 410, the stored value is 2 A bit shift is performed so that the division by . And this operation implements an LTD that decreases the weight (W) by determining that the synapse that delivered the input spike after the output spike has occurred has low relevance to the occurrence of the output spike. It can be seen that Δw) is being stored.

다만 출력 시프트 레지스터의 경우, 양자화 STDP 함수에 따라 음의 값을 갖는 누적 가중치 변화량(∑Δw)이 저장되어야 하므로, 누적 가중치 변화량(∑Δw)의 절대값(|∑Δw |)이 저장된 것으로 볼 수 있다. 그리고 다수의 입력 뉴런 중 적어도 하나의 입력 뉴런에 입력 스파이크(IS)가 인가되면, 입력 시프트 레지스터는 현재 저장된 누적 가중치 변화량(∑Δw)을 출력한다.However, in the case of the output shift register, the absolute value (|∑Δw |) of the cumulative weight change (∑Δw) must be stored according to the quantization STDP function. have. And when the input spike IS is applied to at least one input neuron among the plurality of input neurons, the input shift register outputs the currently stored cumulative weight change amount ∑Δw.

여기서는 설명의 편의를 위해, 입력 시프트 레지스터에 저장된 누적 가중치 변화량(∑Δw)을 입력 누적 가중치 변화량으로, 그리고 출력 시프트 레지스터에 저장된 누적 가중치 변화량(∑Δw)을 출력 누적 가중치 변화량으로 구분하여 표현할 수 있다.Here, for convenience of explanation, the cumulative weight change amount (∑Δw) stored in the input shift register is divided into the input cumulative weight change amount, and the cumulative weight change amount (∑Δw) stored in the output shift register is divided into the output cumulative weight change amount. .

가중치 업데이트부(440)는 입력 시프트 레지스터에서 입력 누적 가중치 변화량(∑Δw)이 인가되면, 출력 스파이크(OS)가 발생된 출력 뉴런에 연결된 다수의 시냅스의 현재 가중치(w(t))를 인가받고, 인가된 가중치(w(t))에 가중치 변화량(Δw)을 가산하여 업데이트 가중치(w(t+1))를 획득한다.The weight update unit 440 receives the current weight (w(t)) of a plurality of synapses connected to the output neuron in which the output spike OS is generated when the input cumulative weight change amount (∑Δw) is applied from the input shift register. , an update weight w(t+1) is obtained by adding the weight change amount Δw to the applied weight w(t).

반면, 출력 시프트 레지스터에서 출력 누적 가중치 변화량(∑Δw)이 인가되면, 입력 스파이크(IS)가 발생된 입력 뉴런에 연결된 다수의 시냅스의 현재 가중치(w(t))를 인가받고, 인가된 가중치(w(t))에 가중치 변화량(Δw)을 감산하여 업데이트 가중치(w(t+1))를 획득한다.On the other hand, when the output cumulative weight change amount (∑Δw) is applied from the output shift register, the current weight (w(t)) of a plurality of synapses connected to the input neuron where the input spike (IS) is generated is applied, and the applied weight ( An update weight w(t+1) is obtained by subtracting the weight change amount Δw from w(t)).

그리고 획득된 업데이트 가중치(w(t+1))를 대응하는 시냅스의 현재 가중치(w(t))를 대체하여 저장함으로써 가중치를 업데이트 한다. 즉 SNN을 학습시킨다.Then, the weight is updated by replacing the obtained update weight w(t+1) with the current weight w(t) of the corresponding synapse and storing it. That is, the SNN is trained.

상기한 바와 같이, 본 실시예에서는 입력 시프트 레지스터부(420)의 다수의 입력 시프트 레지스터와 출력 시프트 레지스터부(430)의 다수의 출력 시프트 레지스터가 작은 크기의 시프트 레지스터로 구현됨에도 각각 LTP와 LTD를 위한 누적 가중치 변화량을항시 저장하고 있으므로, 입력 스파이크가 인가되거나 출력 스파이크가 발생되면 즉시 누적 가중치 변화량(∑Δw)을 가중치 업데이트부(440)로 전달하여 대응하는 시냅스의 가중치를 실시간으로 업데이트 할 수 있다.As described above, in the present embodiment, the LTP and LTD are respectively implemented even though the plurality of input shift registers of the input shift register unit 420 and the plurality of output shift registers of the output shift register unit 430 are implemented as small-sized shift registers. Since the accumulated weight change amount is always stored for this purpose, when an input spike is applied or an output spike occurs, the accumulated weight change amount (∑Δw) is immediately transmitted to the weight update unit 440 to update the weight of the corresponding synapse in real time. .

다만, 입력 시프트 레지스터와 출력 시프트 레지스터 각각이 입력 스파이크(IS)가 인가된 정확한 타이밍과 출력 스파이크(OS)가 발생된 정확한 타이밍을 저장하지 않고, 카운터(410)로부터 인가되는 시프트 신호(sf)에 따라 저장된 누적 가중치 변화량(∑Δw)을 감소시키는데 따른 누적 가중치 변화량(∑Δw)의 오차가 일부 발생될 수 있다. 그러나 상기한 바와 같이, 포아송 인코딩에 따라 생성되는 입력 스파이크(IS)와 입력 스파이크(IS)에 응답하여 발생되는 출력 스파이크(OS)는 매우 낮은 확률로 발생되기 때문에, 시프트 신호(sf)에 따라 저장된 누적 가중치 변화량(∑Δw)을 감소시키는데 따른 오차는 크게 발생되지 않는다. 일반적으로 SNN에서 양자화 STDP 함수의 학습 윈도우 구간 동안, 포아송 인코딩에 따라 입력 스파이크(IS)가 발생되는 경우는 10% 미만이다. 즉 대부분의 학습 윈도우 구간에 입력 스파이크(IS)는 1개 이하로 존재한다. 이는 출력 스파이크(OS)에서도 유사하게 나타난다. 따라서 시프트 신호(sf)에 따라 저장된 누적 가중치 변화량(∑Δw)을 감소시키는데 따른 오차는 시냅스의 학습에 큰 영향을 미치지 않는다.However, each of the input shift register and the output shift register does not store the exact timing at which the input spike IS is applied and the exact timing at which the output spike OS is generated, but does not store the shift signal sf applied from the counter 410. Accordingly, an error in the accumulated weight change amount ∑Δw due to the decrease of the stored accumulated weight change amount ∑Δw may be partially generated. However, as described above, since the input spike (IS) generated according to Poisson encoding and the output spike (OS) generated in response to the input spike (IS) are generated with a very low probability, stored according to the shift signal sf The error caused by reducing the cumulative weight change amount (∑Δw) does not occur significantly. In general, during the learning window period of the quantization STDP function in SNN, the case where an input spike (IS) is generated according to Poisson encoding is less than 10%. That is, there is less than one input spike IS in most of the learning window sections. This is similar to the output spike (OS). Therefore, the error caused by reducing the accumulated weight change amount (∑Δw) stored according to the shift signal sf does not significantly affect the learning of the synapse.

반면, 입력 시프트 레지스터와 출력 시프트 레지스터를 이용하여 누적 가중치 변화량(∑Δw)을 획득하는 경우, 도 3에 비해 요구되는 레지스터의 크기를 크게 줄일 수 있다.On the other hand, when the accumulated weight change amount ∑Δw is obtained using the input shift register and the output shift register, the size of the required register can be significantly reduced compared to FIG. 3 .

Figure pat00001
Figure pat00001

표 1은 도 5와 도 8의 방식으로 가중치 학습부(400)를 구현하는 경우에, 요구되는 레지스터의 크기를 나타낸다. 표 1에서는 입력 뉴런의 개수가 784개이고, 출력 뉴런의 개수가 256개인 경우를 가정하였다. 이 경우, 도 5와 같이 가중치 학습부(400)를 구현하는 경우, 시프트 레지스터로 구현되는 입력 히스토리 레지스터와 출력 히스토리 레지스터가 각각 입력 뉴런과 출력 뉴런의 개수만큼 구비될 뿐만 아니라, 각각 학습 윈도우의 크기(40 clk)에 대응하는 크기를 가져야 한다. 또한 입력 변화량 레지스터와 출력 변화량 레지스터가 누적 가중치 변화량(∑Δw)을 저장할 수 있는 크기를 가져야 한다. 이에 도 5의 방식을 이용하는 경우, 가중치 학습부(400)는 총 46800 크기의 레지스터가 요구된다. 그에 반해 도 8과 같이, 입력 시프트 레지스터와 출력 시프트 레지스터를 이용하여 가중치 학습부(400)를 구성하는 경우, 총 4160 크기의 레지스터가 요구된다. 즉 가중치 학습부(400)에 요구되는 레지스터의 크기를 91.1%나 줄일 수 있다.Table 1 shows the size of a register required when the weight learning unit 400 is implemented in the manner of FIGS. 5 and 8 . In Table 1, it is assumed that the number of input neurons is 784 and the number of output neurons is 256. In this case, when the weight learning unit 400 is implemented as shown in FIG. 5 , input history registers and output history registers implemented as shift registers are provided as many as the number of input neurons and output neurons, respectively, and the size of each learning window. It should have a size corresponding to (40 clk). In addition, the input change amount register and the output change amount register must have a size that can store the accumulated weight change amount (∑Δw). Accordingly, when the method of FIG. 5 is used, the weight learning unit 400 requires a register having a total size of 46800. On the other hand, as shown in FIG. 8 , when the weight learning unit 400 is configured using the input shift register and the output shift register, a total size of 4160 registers is required. That is, the size of the register required for the weight learning unit 400 can be reduced by 91.1%.

도 9는 학습 윈도우의 크기 및 양자화 구간의 개수와 시프트 레지스터의 크기 사이의 관계를 설명하기 위한 도면이다.9 is a diagram for explaining a relationship between the size of a learning window and the number of quantization sections and the size of a shift register.

상기한 바와 같이, 입력 시프트 레지스터와 출력 시프트 레지스터의 크기는 학습 윈도우의 크기와 학습 윈도우 내에 가중치 변화량(Δw)이 구분되는 양자화 구간의 개수에 따라 조절될 수 있다. 도 9의 (a)에 도시된 바와 같이, 학습 윈도우 내에 양자와 구간이 2개로 구분되고 학습 윈도우의 전체 크기가 40 클럭(40 clk)인 경우, 입력 시프트 레지스터와 출력 시프트 레지스터는 입력 스파이크가 인가되거나 출력 스파이크가 발생되면, (b)에 도시된 바와 같이 최하위 비트(LSB)의 좌측 첫번째 비트 위치에 1의 값을 저장해야 한다. 그러나, (c)와 같이 학습 윈도우 내에 양자와 구간이 2개로 구분되고 학습 윈도우의 전체 크기가 40 클럭(40 clk)인 경우, (d)와 같이 최하위 비트(LSB)의 좌측 두번째 비트 위치에 1의 값을 저장해야 한다. 즉 학습 윈도우 내에 양자화 구간의 개수가 증가할수록 입력 시프트 레지스터와 출력 시프트 레지스터의 크기는 증가되어야 한다. 또한 양자화 구간의 개수에 대응하는 비트 수를 제외한 나머지 비트 수는 양자화 구간 내에 발생되는 입력 스파이크 또는 출력 스파이크의 모든 개수를 표현할 수 있어야 한다. 일 예로, 도 9의 (b) 및 (d)에서는 양자화 구간에 대응하는 비트 수로 각각 2비트와 3비트가 할당되었으므로, 나머지 비트 수는 2비트이다. 그리고 2비트로 표현 가능한 최대 개수는 3이다. 따라서 도 9의 (b) 및 (d)에 표시된 입력 시프트 레지스터와 출력 시프트 레지스터는 양자와 구간 내에 4개 이상의 입력 스파이크 또는 출력 스파이크가 발생되면, 누적 가중치 변화량(∑Δw)에 오류를 발생시키게 된다.As described above, the sizes of the input shift register and the output shift register may be adjusted according to the size of the learning window and the number of quantization sections in which the weight change amount Δw in the learning window is divided. As shown in (a) of FIG. 9 , when both and a section are divided into two within the learning window and the total size of the learning window is 40 clocks (40 clk), the input shift register and the output shift register receive input spikes. or an output spike occurs, a value of 1 should be stored in the first bit position on the left of the least significant bit (LSB) as shown in (b). However, as shown in (c), when the quantum and section are divided into two in the learning window and the total size of the learning window is 40 clocks (40 clk), as shown in (d), 1 at the left second bit position of the least significant bit (LSB) value should be stored. That is, as the number of quantization sections increases in the learning window, the sizes of the input shift register and the output shift register should increase. In addition, the remaining number of bits excluding the number of bits corresponding to the number of quantization intervals should be able to represent all the number of input spikes or output spikes generated within the quantization interval. For example, in (b) and (d) of FIG. 9 , 2 bits and 3 bits are allocated as the number of bits corresponding to the quantization period, respectively, so the remaining number of bits is 2 bits. And the maximum number that can be expressed with 2 bits is 3. Therefore, when four or more input or output spikes are generated in both the input shift register and the output shift register shown in (b) and (d) of FIG. .

상기한 바와 같이 포아송 인코딩의 경우, 하나의 양자화 구간에 하나의 입력 스파이크 또는 출력 스파이크가 발생될 확률조차 낮으므로, 일반적으로 양자와 구간 내에 4개 이상의 입력 스파이크 또는 출력 스파이크가 발생될 가능성은 극히 희박하다고 볼 수 있다. 이에 본 실시예에서는 입력 시프트 레지스터와 출력 시프트 레지스터가 양자화 구간의 개수와 기지정된 비트수(여기서는 2비트)의 합에 대응하는 비트수를 갖는 시프트 레지스터로 구현되는 것으로 가정하였다. 그럼에도 불구하고, 비록 SNN에서 적용될 가능성이 매우 낮지만 각 양자화 구간의 크기가 매우 크다면(예를 들면 100 clk), 기지정된 비트수를 증가시킴으로써, 누적 가중치 변화량(∑Δw)에 오류를 발생되는 것을 용이하게 방지할 수 있다.As described above, in the case of Poisson encoding, even the probability that one input spike or output spike will occur in one quantization interval is low, so in general, the probability that four or more input spikes or output spikes occur within the quantum and interval is extremely slim. it can be seen that Accordingly, in this embodiment, it is assumed that the input shift register and the output shift register are implemented as shift registers having the number of bits corresponding to the sum of the number of quantization sections and the predetermined number of bits (here, 2 bits). Nevertheless, although the possibility of application in SNN is very low, if the size of each quantization interval is very large (for example, 100 clk), an error is generated in the cumulative weight change amount (∑Δw) by increasing the predetermined number of bits. can be easily prevented.

이와 같이, 본 실시예에 따른 가중치 학습부(400)는 학습 윈도우의 크기와 학습 윈도우 내의 양자화 구간의 개수가 조절되더라도, 입력 시프트 레지스터와 출력 시프트 레지스터의 크기를 매우 작게 증가시킴으로써 용이하게 대응할 수 있다.As such, the weight learning unit 400 according to the present embodiment can easily respond by increasing the size of the input shift register and the output shift register to a very small size even when the size of the learning window and the number of quantization sections in the learning window are adjusted. .

도 10은 본 발명의 일 실시예에 따른 스파이킹 신경망 학습 방법을 나타낸다.10 shows a spiking neural network learning method according to an embodiment of the present invention.

도 6 내지 도 9를 참조하여, 도 10의 SNN 학습 방법을 설명하면, 우선 양자화 STDP 함수의 학습 윈도우를 구성하는 양자화 구간 개수에 대응하는 기지정된 비트수를 갖도록 구성된 다수의 입력 시프트 레지스터 각각은 입력 뉴런부(100)의 다수의 입력 뉴런 중 대응하는 입력 뉴런으로 입력 스파이크(IS)가 인가되는지 판별한다(S11). 만일 입력 스파이크(IS)가 인가되는 것으로 판별되면, 양자화 STDP 함수의 학습 윈도우를 구성하는 양자화 구간 개수에 대응하는 값을 기저장된 값에 가산한다(S12). 이때, 입력 시프트 레지스터는 양자화 구간 개수에 대응하는 비트 위치에 1을 가산하여 양자화 구간 개수에 대응하는 값을 가산할 수 있다.6 to 9, the SNN learning method of FIG. 10 is described. First, each of a plurality of input shift registers configured to have a predetermined number of bits corresponding to the number of quantization sections constituting the learning window of the quantization STDP function is input. It is determined whether the input spike IS is applied to a corresponding input neuron among a plurality of input neurons of the neuron unit 100 (S11). If it is determined that the input spike IS is applied, a value corresponding to the number of quantization sections constituting the learning window of the quantization STDP function is added to the pre-stored value (S12). In this case, the input shift register may add a value corresponding to the number of quantization sections by adding 1 to a bit position corresponding to the number of quantization sections.

한편, 입력 시프트 레지스터와 대응하는 비트수를 갖는 다수의 출력 시프트 레지스터 각각은 입력 스파이크(IS)에 응답하여, 기저장된 값을 출력 누적 가중치 변화량으로 획득한다(S13).Meanwhile, each of the plurality of output shift registers having the number of bits corresponding to the input shift register acquires a pre-stored value as an output cumulative weight change amount in response to the input spike IS (S13).

그리고 출력 시프트 레지스터에 대응하는 출력 뉴런에 연결된 다수의 시냅스 각각의 현재 가중치(w)에 획득된 출력 누적 가중치 변화량(∑Δw)을 감산하여 각 시냅스의 가중치를 업데이트 한다(S14).Then, the weight of each synapse is updated by subtracting the acquired output cumulative weight change (∑Δw) from the current weight w of each of a plurality of synapses connected to the output neuron corresponding to the output shift register (S14).

또한 다수의 출력 시프트 레지스터 각각은 출력 뉴런부(300)의 다수의 출력 뉴런 중 대응하는 출력 뉴런에서 출력 스파이크(OS)가 발생되는지 판별한다(S15). 만일 출력 스파이크(OS)가 발생되면, 양자화 STDP 함수의 학습 윈도우를 구성하는 양자화 구간 개수에 대응하는 값을 기저장된 값에 가산한다(S16). 이때, 출력 시프트 레지스터 또한 양자화 구간 개수에 대응하는 비트 위치에 1을 가산하여 양자화 구간 개수에 대응하는 값을 가산할 수 있다.In addition, each of the plurality of output shift registers determines whether an output spike OS occurs in a corresponding output neuron among a plurality of output neurons of the output neuron unit 300 ( S15 ). If the output spike OS occurs, a value corresponding to the number of quantization sections constituting the learning window of the quantization STDP function is added to the pre-stored value (S16). In this case, the output shift register may also add 1 to a bit position corresponding to the number of quantization sections to add a value corresponding to the number of quantization sections.

한편, 다수의 입력 시프트 레지스터 각각은 출력 스파이크에 응답하여, 기저장된 값을 입력 누적 가중치 변화량으로 획득한다(S17).Meanwhile, each of the plurality of input shift registers acquires a pre-stored value as an input cumulative weight change amount in response to an output spike ( S17 ).

그리고 입력 시프트 레지스터에 대응하는 입력 뉴런에 연결된 다수의 시냅스 각각의 현재 가중치(w)에 획득된 출력 누적 가중치 변화량(∑Δw)을 가산하여 각 시냅스의 가중치를 업데이트 한다(S18).Then, the weight of each synapse is updated by adding the acquired output cumulative weight change amount (∑Δw) to the current weight w of each of the plurality of synapses connected to the input neuron corresponding to the input shift register (S18).

또한 만일 카운터(410)가 기지정된 클럭 개수에 대응하는 주기로 발생하는 시프트 신호(sf)가 인가되는지 판별한다(S19). 만일 시프트 신호(sf)가 인가되면, 다수의 입력 시프트 레지스터와 다수의 출력 시프트 레지스터 각각은 저장된 값을 최하위 비트 방향으로 1비트 시프트시켜, 입력 누적 가중치 변화량(∑Δw)과 출력 누적 가중치 변화량(∑Δw)을 감소시킨다(S20).Also, the counter 410 determines whether a shift signal sf generated at a cycle corresponding to a predetermined number of clocks is applied (S19). If the shift signal sf is applied, each of the plurality of input shift registers and the plurality of output shift registers shifts the stored value by one bit in the least significant bit direction, so that the input cumulative weight change amount ?w and the output cumulative weight change amount ? Δw) is decreased (S20).

본 발명에 따른 방법은 컴퓨터에서 실행시키기 위한 매체에 저장된 컴퓨터 프로그램으로 구현될 수 있다. 여기서 컴퓨터 판독가능 매체는 컴퓨터에 의해 액세스 될 수 있는 임의의 가용 매체일 수 있고, 또한 컴퓨터 저장 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함하며, ROM(판독 전용 메모리), RAM(랜덤 액세스 메모리), CD(컴팩트 디스크)-ROM, DVD(디지털 비디오 디스크)-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등을 포함할 수 있다.The method according to the present invention may be implemented as a computer program stored in a medium for execution by a computer. Here, the computer-readable medium may be any available medium that can be accessed by a computer, and may include all computer storage media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data, and read dedicated memory), RAM (Random Access Memory), CD (Compact Disk)-ROM, DVD (Digital Video Disk)-ROM, magnetic tape, floppy disk, optical data storage, and the like.

본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다.Although the present invention has been described with reference to the embodiment shown in the drawings, which is merely exemplary, those skilled in the art will understand that various modifications and equivalent other embodiments are possible therefrom.

따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 청구범위의 기술적 사상에 의해 정해져야 할 것이다.Accordingly, the true technical protection scope of the present invention should be defined by the technical spirit of the appended claims.

100: 입력 뉴런부 200: 가중치 시냅스부
300: 출력 뉴런부 400: 가중치 학습부
410: 카운터 420: 입력 시프트 레지스터부
430: 출력 시프트 레지스터부 440: 가중치 업데이트부
100: input neuron unit 200: weighted synaptic unit
300: output neuron unit 400: weight learning unit
410: counter 420: input shift register unit
430: output shift register unit 440: weight update unit

Claims (18)

다수의 입력 뉴런과 다수의 출력 뉴런 및 각각 가중치가 저장된 다수의 시냅스를 포함하는 스파이킹 신경망을 학습시키기 위한 학습 장치에 있어서,
클럭 신호를 인가받아 카운트하여 기지정된 시간 간격 단위로 시프트 신호를 출력하는 카운터;
상기 다수의 입력 뉴런의 개수에 대응하는 개수와 양자화 STDP 함수에 의해 구분된 시간 구간인 다수의 양자화 구간의 개수 및 크기에 대응하는 크기를 갖고, 대응하는 입력 뉴런으로 입력 스파이크가 인가되면, 기지정된 값을 가산하는 다수의 입력 시프트 레지스터;
상기 다수의 출력 뉴런의 개수에 대응하는 개수와 상기 다수의 양자화 구간의 개수 및 크기에 대응하는 크기를 갖고, 대응하는 출력 뉴런에서 출력 스파이크가 발생되면, 기지정된 값을 가산하는 다수의 출력 시프트 레지스터; 및
상기 다수의 입력 시프트 레지스터와 상기 다수의 출력 시프트 레지스터에 저장된 값을 누적 가중치 변화량으로 인가받아 다수의 시냅스에 저장된 가중치에 가산 또는 감산하여 가중치를 업데이트하는 가중치 업데이트부를 포함하는 스파이킹 신경망 학습 장치.
A learning apparatus for learning a spiking neural network including a plurality of input neurons, a plurality of output neurons, and a plurality of synapses in which weights are stored, respectively,
a counter for receiving and counting a clock signal and outputting a shift signal in units of a predetermined time interval;
It has a number corresponding to the number of the plurality of input neurons and a size corresponding to the number and size of a plurality of quantization sections that are time sections separated by the quantization STDP function, and when an input spike is applied to the corresponding input neuron, a predetermined a plurality of input shift registers for adding values;
A plurality of output shift registers having a number corresponding to the number of the plurality of output neurons and a size corresponding to the number and size of the plurality of quantization sections, and adding a predetermined value when an output spike occurs in the corresponding output neuron ; and
and a weight update unit configured to receive the values stored in the plurality of input shift registers and the plurality of output shift registers as cumulative weight changes, and add or subtract weights stored in the plurality of synapses to update the weights.
제1항에 있어서, 상기 카운터는
상기 다수의 양자화 구간의 시간 구간에 대응하는 시간 간격 단위로 상기 시프트 신호를 출력하는 스파이킹 신경망 학습 장치.
The method of claim 1, wherein the counter
A spiking neural network learning apparatus for outputting the shift signal in units of time intervals corresponding to time intervals of the plurality of quantization intervals.
제1항에 있어서, 상기 다수의 입력 시프트 레지스터와 상기 다수의 출력 레지스터 각각은
상기 다수의 양자화 구간의 개수에 기지정된 비트 수가 추가된 크기를 갖는 스파이킹 신경망 학습 장치.
2. The method of claim 1, wherein each of the plurality of input shift registers and the plurality of output registers comprises:
A spiking neural network learning apparatus having a size in which a predetermined number of bits is added to the number of the plurality of quantization sections.
제3항에 있어서, 상기 다수의 입력 시프트 레지스터와 상기 다수의 출력 레지스터 각각은
상기 시프트 신호가 인가되면, 저장된 값을 최하위 비트 방향으로 1비트 단위로 시프트시키는 스파이킹 신경망 학습 장치.
4. The method of claim 3, wherein each of the plurality of input shift registers and the plurality of output registers comprises:
When the shift signal is applied, the spiking neural network learning apparatus shifts the stored value in the least significant bit direction by one bit.
제4항에 있어서, 상기 다수의 입력 시프트 레지스터 각각은
대응하는 입력 뉴런으로 입력 스파이크가 인가되면, 상기 다수의 양자화 구간의 개수에 대응하는 비트 위치에 1의 값을 가산하는 스파이킹 신경망 학습 장치.
5. The method of claim 4, wherein each of the plurality of input shift registers comprises:
A spiking neural network learning apparatus for adding a value of 1 to bit positions corresponding to the number of the plurality of quantization sections when an input spike is applied to a corresponding input neuron.
제5항에 있어서, 상기 다수의 입력 시프트 레지스터 각각은
상기 다수의 출력 뉴런 중 적어도 하나의 출력 뉴런에서 출력 스파이크가 발생되면, 저장된 값을 입력 누적 가중치 변화량으로서 상기 가중치 업데이트부로 출력하는 스파이킹 신경망 학습 장치.
6. The method of claim 5, wherein each of the plurality of input shift registers comprises:
When an output spike occurs in at least one output neuron among the plurality of output neurons, the spiking neural network learning apparatus outputs a stored value as an input cumulative weight change amount to the weight update unit.
제6항에 있어서, 상기 다수의 출력 시프트 레지스터 각각은
대응하는 출력 뉴런에서 출력 스파이크가 발생되면, 상기 다수의 양자화 구간의 개수에 대응하는 비트 위치에 1의 값을 가산하는 스파이킹 신경망 학습 장치.
7. The method of claim 6, wherein each of the plurality of output shift registers comprises:
When an output spike is generated from a corresponding output neuron, a spiking neural network learning apparatus for adding a value of 1 to bit positions corresponding to the number of the plurality of quantization sections.
제7항에 있어서, 상기 다수의 출력 시프트 레지스터 각각은
상기 다수의 입력 뉴런 중 적어도 하나의 입력 뉴런으로 입력 스파이크가 인가되면, 저장된 값을 출력 누적 가중치 변화량으로서 상기 가중치 업데이트부로 출력하는 스파이킹 신경망 학습 장치.
8. The method of claim 7, wherein each of the plurality of output shift registers comprises:
When an input spike is applied to at least one input neuron among the plurality of input neurons, the spiking neural network learning apparatus outputs a stored value as an output cumulative weight change amount to the weight updater.
제8항에 있어서, 상기 가중치 업데이트부는
상기 다수의 입력 시프트 레지스터 각각에 저장된 값을 인가받아, 상기 다수의 시냅스 중 출력 스파이크를 발생한 출력 뉴런에 연결된 시냅스의 가중치에 가산하고,
상기 다수의 출력 시프트 레지스터 각각에 저장된 값을 인가받아, 상기 다수의 시냅스 중 입력 스파이크가 인가된 입력 뉴런에 연결된 시냅스의 가중치에 감산하는 스파이킹 신경망 학습 장치.
The method of claim 8, wherein the weight update unit
receiving the value stored in each of the plurality of input shift registers, and adding an output spike among the plurality of synapses to the weight of the synapse connected to the output neuron,
A spiking neural network learning apparatus for receiving a value stored in each of the plurality of output shift registers, and subtracting a weight of a synapse connected to an input neuron to which an input spike is applied among the plurality of synapses.
다수의 입력 뉴런과 다수의 출력 뉴런 및 각각 가중치가 저장된 다수의 시냅스를 포함하는 스파이킹 신경망을 학습시키기 위한 학습 방법에 있어서,
클럭 신호를 인가받아 카운트하여 기지정된 시간 간격 단위로 시프트 신호를 출력하는 단계;
대응하는 입력 뉴런으로 입력 스파이크가 인가되면, 상기 다수의 입력 뉴런의 개수에 대응하는 개수와 양자화 STDP 함수에 의해 구분된 시간 구간인 다수의 양자화 구간의 개수 및 크기에 대응하는 크기를 갖는 입력 시프트 레지스터에 기지정된 값을 가산하는 단계;
대응하는 출력 뉴런에서 출력 스파이크가 발생되면, 상기 다수의 출력 뉴런의 개수에 대응하는 개수와 상기 다수의 양자화 구간의 개수 및 크기에 대응하는 크기를 갖는 출력 시프트 레지스터에 기지정된 값을 가산하는 단계; 및
상기 다수의 입력 시프트 레지스터와 상기 다수의 출력 시프트 레지스터에 저장된 값을 누적 가중치 변화량으로 인가받아 다수의 시냅스에 저장된 가중치에 가산 또는 감산하여 가중치를 업데이트하는 단계를 포함하는 스파이킹 신경망 학습 방법.
A learning method for learning a spiking neural network including a plurality of input neurons, a plurality of output neurons, and a plurality of synapses in which weights are stored, respectively,
receiving and counting the clock signal and outputting a shift signal in units of a predetermined time interval;
When an input spike is applied to a corresponding input neuron, an input shift register having a number corresponding to the number of the plurality of input neurons and a size corresponding to the number and size of a plurality of quantization sections, which are time sections divided by the quantization STDP function adding a predetermined value to ;
adding a predetermined value to an output shift register having a number corresponding to the number of the plurality of output neurons and a size corresponding to the number and size of the plurality of quantization sections when an output spike is generated from a corresponding output neuron; and
and updating the weights by receiving the values stored in the plurality of input shift registers and the plurality of output shift registers as cumulative weight changes and adding or subtracting the values stored in the plurality of synapses to the weights.
제10항에 있어서, 상기 시프트 신호를 출력하는 단계는
상기 다수의 양자화 구간의 시간 구간에 대응하는 시간 간격 단위로 상기 시프트 신호를 출력하는 스파이킹 신경망 학습 방법.
The method of claim 10, wherein outputting the shift signal comprises:
A spiking neural network learning method for outputting the shift signal in units of time intervals corresponding to time sections of the plurality of quantization sections.
제10항에 있어서, 상기 다수의 입력 시프트 레지스터와 상기 다수의 출력 레지스터 각각은
상기 다수의 양자화 구간의 개수에 기지정된 비트 수가 추가된 크기를 갖는 스파이킹 신경망 학습 방법.
11. The method of claim 10, wherein each of the plurality of input shift registers and the plurality of output registers comprises:
A spiking neural network learning method having a size in which a predetermined number of bits is added to the number of the plurality of quantization sections.
제12항에 있어서, 상기 스파이킹 신경망 학습 방법은
상기 시프트 신호가 인가되면, 다수의 입력 시프트 레지스터와 상기 다수의 출력 레지스터 각각에 저장된 값을 최하위 비트 방향으로 1비트 단위로 시프트시키는 단계를 더 포함하는 스파이킹 신경망 학습 방법.
The method of claim 12, wherein the spiking neural network learning method is
When the shift signal is applied, the spiking neural network learning method further comprising the step of shifting the values stored in each of the plurality of input shift registers and the plurality of output registers in the least significant bit direction by one bit.
제13항에 있어서, 상기 입력 시프트 레지스터에 기지정된 값을 가산하는 단계는
대응하는 입력 뉴런으로 입력 스파이크가 인가되면, 상기 다수의 양자화 구간의 개수에 대응하는 비트 위치에 1의 값을 가산하는 스파이킹 신경망 학습 방법.
14. The method of claim 13, wherein adding a predetermined value to the input shift register comprises:
When an input spike is applied to a corresponding input neuron, a spiking neural network learning method for adding a value of 1 to bit positions corresponding to the number of the plurality of quantization sections.
제14항에 있어서, 상기 스파이킹 신경망 학습 방법은
상기 다수의 출력 뉴런 중 적어도 하나의 출력 뉴런에서 출력 스파이크가 발생되면, 상기 다수의 입력 시프트 레지스터에 저장된 값을 입력 누적 가중치 변화량으로서 출력하는 단계를 더 포함하는 스파이킹 신경망 학습 방법.
15. The method of claim 14, wherein the spiking neural network learning method is
and outputting a value stored in the plurality of input shift registers as an input cumulative weight change amount when an output spike occurs in at least one output neuron among the plurality of output neurons.
제15항에 있어서, 상기 출력 시프트 레지스터에 기지정된 값을 가산하는 단계는
대응하는 출력 뉴런에서 출력 스파이크가 발생되면, 상기 다수의 양자화 구간의 개수에 대응하는 비트 위치에 1의 값을 가산하는 스파이킹 신경망 학습 방법.
16. The method of claim 15, wherein adding a predetermined value to the output shift register comprises:
When an output spike is generated from a corresponding output neuron, a spiking neural network learning method for adding a value of 1 to bit positions corresponding to the number of the plurality of quantization sections.
제16항에 있어서, 상기 스파이킹 신경망 학습 방법은
상기 다수의 입력 뉴런 중 적어도 하나의 입력 뉴런으로 입력 스파이크가 인가되면, 저장된 값을 출력 누적 가중치 변화량으로서 출력하는 단계를 더 포함하는 스파이킹 신경망 학습 방법.
The method of claim 16, wherein the spiking neural network learning method is
When an input spike is applied to at least one input neuron among the plurality of input neurons, outputting a stored value as an output cumulative weight change amount.
제17항에 있어서, 상기 가중치를 업데이트하는 단계는
상기 다수의 입력 시프트 레지스터 각각에 저장된 값을 인가받아, 상기 다수의 시냅스 중 출력 스파이크를 발생한 출력 뉴런에 연결된 시냅스의 가중치에 가산하는 단계; 및
상기 다수의 출력 시프트 레지스터 각각에 저장된 값을 인가받아, 상기 다수의 시냅스 중 입력 스파이크가 인가된 입력 뉴런에 연결된 시냅스의 가중치에 감산하는 단계를 포함하는 스파이킹 신경망 학습 방법.
18. The method of claim 17, wherein updating the weight comprises:
receiving a value stored in each of the plurality of input shift registers and adding an output spike among the plurality of synapses to a weight of a synapse connected to an output neuron; and
and subtracting a weight of a synapse connected to an input neuron to which an input spike is applied among the plurality of synapses by receiving a value stored in each of the plurality of output shift registers.
KR1020200055739A 2020-05-11 2020-05-11 Apparatus and method for learning a spiking neural network KR102500633B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200055739A KR102500633B1 (en) 2020-05-11 2020-05-11 Apparatus and method for learning a spiking neural network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200055739A KR102500633B1 (en) 2020-05-11 2020-05-11 Apparatus and method for learning a spiking neural network

Publications (2)

Publication Number Publication Date
KR20210137663A true KR20210137663A (en) 2021-11-18
KR102500633B1 KR102500633B1 (en) 2023-02-15

Family

ID=78717378

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200055739A KR102500633B1 (en) 2020-05-11 2020-05-11 Apparatus and method for learning a spiking neural network

Country Status (1)

Country Link
KR (1) KR102500633B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023101255A1 (en) * 2021-11-30 2023-06-08 서울대학교산학협력단 Neuromorphic device and method for compensating for variation characteristics in neuromorphic device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120259804A1 (en) * 2011-04-08 2012-10-11 International Business Machines Corporation Reconfigurable and customizable general-purpose circuits for neural networks
KR20180062934A (en) 2016-12-01 2018-06-11 한국과학기술원 Spiking neural network system for dynamic control of flexible, stable and hybrid memory storage
KR20190051766A (en) * 2017-11-06 2019-05-15 삼성전자주식회사 Neuron Circuit, system and method for synapse weight learning

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120259804A1 (en) * 2011-04-08 2012-10-11 International Business Machines Corporation Reconfigurable and customizable general-purpose circuits for neural networks
KR20180062934A (en) 2016-12-01 2018-06-11 한국과학기술원 Spiking neural network system for dynamic control of flexible, stable and hybrid memory storage
KR20190051766A (en) * 2017-11-06 2019-05-15 삼성전자주식회사 Neuron Circuit, system and method for synapse weight learning

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023101255A1 (en) * 2021-11-30 2023-06-08 서울대학교산학협력단 Neuromorphic device and method for compensating for variation characteristics in neuromorphic device

Also Published As

Publication number Publication date
KR102500633B1 (en) 2023-02-15

Similar Documents

Publication Publication Date Title
US10339041B2 (en) Shared memory architecture for a neural simulator
US20150206050A1 (en) Configuring neural network for low spiking rate
JP2019032808A (en) Mechanical learning method and device
CN111417963A (en) Improved spiking neural network
US20150120627A1 (en) Causal saliency time inference
US20150212861A1 (en) Value synchronization across neural processors
KR20170031695A (en) Decomposing convolution operation in neural networks
KR102344678B1 (en) Apparatus for learning a spiking neural network
US20150317557A1 (en) Temporal spike encoding for temporal learning
US9959499B2 (en) Methods and apparatus for implementation of group tags for neural models
KR20160125967A (en) Method and apparatus for efficient implementation of common neuron models
US5517597A (en) Convolutional expert neural system (ConExNS)
KR102500633B1 (en) Apparatus and method for learning a spiking neural network
US9542645B2 (en) Plastic synapse management
CN114450891A (en) Design and training of binary neurons and binary neural networks using error correction codes
US9460384B2 (en) Effecting modulation by global scalar values in a spiking neural network
US20150213356A1 (en) Method for converting values into spikes
KR20200108173A (en) A neuromorphic processor for reducing the amount of computation for spiking neural network
JP3172278B2 (en) Neural network circuit
KR102419338B1 (en) Apparatus and method for learning a spiking neural network
CN112598119A (en) On-chip storage compression method of neuromorphic processor facing liquid state machine
Toennies 7 multi-layer perceptron for image classification
US20230289582A1 (en) Neuron circuit with synaptic weight learning
KR102514655B1 (en) Neuromorphic device for parallel processing of spike signals
KR102356787B1 (en) Storage device using neural network and operating method for automatic redistribution of information and variable storage capacity based on accuracy-storage capacity tradeoff thereof

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant