KR20210098992A - 개선된 스파이킹 뉴럴 네트워크 - Google Patents

개선된 스파이킹 뉴럴 네트워크 Download PDF

Info

Publication number
KR20210098992A
KR20210098992A KR1020217016728A KR20217016728A KR20210098992A KR 20210098992 A KR20210098992 A KR 20210098992A KR 1020217016728 A KR1020217016728 A KR 1020217016728A KR 20217016728 A KR20217016728 A KR 20217016728A KR 20210098992 A KR20210098992 A KR 20210098992A
Authority
KR
South Korea
Prior art keywords
spike
spiking neuron
value
spiking
neuron circuit
Prior art date
Application number
KR1020217016728A
Other languages
English (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 브레인칩, 인크.
Publication of KR20210098992A publication Critical patent/KR20210098992A/ko

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/04Architecture, e.g. interconnection topology
    • G06N3/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • G06N3/0454
    • 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
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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
    • G06N3/088Non-supervised learning, e.g. competitive learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Memory System (AREA)
  • Feedback Control In General (AREA)
  • Error Detection And Correction (AREA)
  • Television Systems (AREA)

Abstract

본 명세서에서는 입력 스트림으로부터 특징들의 비지도 추출을 학습하고 수행하도록 구성된 개선된 스파이킹 뉴럴 네트워크(SNN)를 위한 시스템, 방법, 및 컴퓨터 프로그램 제품 실시예들이 개시된다. 실시예는 스파이킹 뉴런 회로와 연관된 시냅스들의 세트에 대응하는 스파이크 비트들의 세트를 수신함으로써 동작한다. 실시예는 스파이크 비트들의 세트 중의 제1 스파이크 비트와 시냅스들의 세트 중의 제1 시냅스의 제1 시냅틱 가중치에 제1 논리 AND 함수를 적용한다. 실시예는 상기 적용에 기초하여 스파이킹 뉴런 회로와 연관된 막전위 값을 증분시킨다. 실시예는 상기 스파이킹 뉴런 회로와 연관된 막전위 값이 학습 임계 값에 도달했다고 결정한다. 그 후 실시예는 상기 스파이킹 뉴런 회로의 막전위 값이 상기 학습 임계 값에 도달했다는 결정에 기초하여 스파이크 시간 의존적인 가소성(STDP) 학습 기능을 수행한다.

Description

개선된 스파이킹 뉴럴 네트워크
관련 출원(들)에 대한 상호 참조
본 출원은 2018년 11월 1일자로 출원된, 발명의 명칭이 "개선된 스파이킹 뉴럴 네트워크(An Improved Spiking Neural Network)"인 미국 가출원 제62/754,348호의 이익을 주장하고, 해당 출원은 이로써 사실상 그 전체가 인용에 의해 포함된다.
본 접근법은 일반적으로 신경 회로 엔지니어링에 관한 것으로, 더 특정하게는, 저전력 고밀도 자율 학습 인공 뉴럴 네트워크 온 칩을 위한 시스템 및 방법에 관한 것이다.
인공 뉴럴 네트워크가 생물학적 뉴럴 네트워크(뇌)의 기능을 복제하는 것이 오랫동안 목표였고, 성공은 제한적이었다. 인공 뉴럴 네트워크의 설계에 대한 무차별 대입 하드웨어 접근법들은 번거롭고 부적절했고, 인간 뇌의 기능성을 복제하는 원하는 목표를 보여주는 데 훨씬 못 미쳤다. 따라서, 매우 큰 네트워크들로 스케일링할 수 있지만, 매우 다양한 가능한 입력 데이터 및/또는 센서 소스들로부터 신속하게 추론하면서 칩에 맞을 수 있는 자율적이고 재구성 가능한 스파이킹 뉴럴 네트워크가 실현되는 것을 가능하게 하는 접근법에 대한 필요성이 존재한다.
본 명세서에서는 입력 스트림으로부터 특징들의 비지도(unsupervised) 추출을 학습하고 수행하도록 구성된 개선된 스파이킹 뉴럴 네트워크(spiking neural network, SNN)를 위한 시스템, 장치, 제조물, 방법 및/또는 컴퓨터 프로그램 제품 실시예들, 및/또는 이들의 조합들 및 부분 조합들이 제공된다. 일부 실시예들은 스파이크 변환기, 재구성 가능한 뉴런 패브릭, 메모리, 및 프로세서를 포함하는 뉴로모픽 집적 회로를 포함한다. 상기 스파이크 변환기는 입력 데이터로부터 스파이크들을 생성하도록 구성된다. 상기 재구성 가능한 뉴런 패브릭은 복수의 스파이킹 뉴런 회로를 포함하는 뉴럴 프로세서(neural processor)를 포함한다. 상기 스파이킹 뉴런 회로들은 상기 스파이크 변환기로부터 수신된 스파이크들 및 뉴럴 네트워크 구성에 기초하여 태스크를 수행하도록 구성된다. 상기 메모리는 전위 어레이(potential array) 및 복수의 시냅스(synapse)를 포함하는 상기 뉴럴 네트워크 구성을 포함한다. 상기 뉴럴 네트워크 구성은 상기 복수의 스파이킹 뉴런 회로와 상기 복수의 시냅스 사이의 연결들을 추가로 정의한다. 상기 프로세서는 구성 파일에 기초하여 상기 뉴럴 네트워크 구성을 수정하도록 구성된다.
또한 본 명세서에서는 입력 스트림으로부터 특징들의 비지도 추출을 학습하고 수행하기 위한 실시예들이 설명된다. 일부 실시예들은, 스파이킹 뉴런 회로에서, 시냅스들의 세트에 대응하는 스파이크 비트들의 세트를 수신하도록 동작한다. 상기 스파이킹 뉴런 회로는 상기 스파이크 비트들의 세트 중의 스파이크 비트와 상기 시냅스들의 세트 중의 시냅스의 시냅틱 가중치에 논리 AND 함수를 적용한다. 상기 스파이킹 뉴런 회로는 상기 논리 AND 함수를 적용하는 것에 기초하여 막전위 값(membrane potential value)을 증분시킨다. 그 후 뉴럴 프로세서는 상기 스파이킹 뉴런 회로와 연관된 막전위 값이 학습 임계 값에 도달했다고 결정한다. 그 후 상기 뉴럴 프로세서는 상기 스파이킹 뉴런 회로의 막전위 값이 상기 학습 임계 값에 도달했다는 결정에 기초하여 스파이크 시간 의존적인 가소성(Spike Time Dependent Plasticity, STDP) 학습 기능을 수행한다.
본 요약은 단지 본 명세서에 설명된 주제의 이해를 제공하기 위해 일부 예시적인 실시예들을 예시하기 위한 목적으로 제공된다. 따라서, 위에서 설명된 특징들은 단지 예들이고 본 개시내용의 주제의 범위 또는 사상을 좁히는 것으로 해석되어서는 안 된다. 본 개시내용의 다른 특징들, 양태들, 및 이점들은 다음의 상세한 설명, 도면들, 및 청구항들로부터 명백해질 것이다.
첨부 도면들은 본 명세서에 포함되고 본 명세서의 일부를 형성한다.
도 1은 일부 실시예들에 따른, 뉴럴 모델의 블록도이다.
도 2a는 일부 실시예들에 따른, 뉴로모픽 집적 회로의 블록도이다.
도 2b는 일부 실시예들에 따른, 도 2a의 뉴로모픽 집적 회로의 블록도이다.
도 3은 일부 실시예들에 따른, 다음 레이어에 대한 입력 스파이크 버퍼링, 패킷타이징, 및 출력 스파이크 버퍼링의 흐름도이다.
도 4는 일부 실시예들에 따른, 스파이킹 컨볼루션 뉴럴 프로세서로서 구성된 뉴럴 프로세서의 블록도이다.
도 5는 일부 실시예들에 따른, 스파이킹 완전 연결 뉴럴 프로세서로서 구성된 뉴럴 프로세서의 블록도이다.
도 6a는 일부 실시예들에 따른, 스파이크들을 스파이크 패킷으로 패킷타이징하는 예이다.
도 6b는 일부 실시예들에 따른, 도 6a의 스파이크 패킷의 예시적인 표현이다.
도 7은 일부 실시예들에 따른, 어떤 비트들이 막전위 카운터를 증분 또는 감분시키는지를 선택하는 방법의 예이다.
도 8은 일부 실시예들에 따른, STDP 학습 방법의 가중치 스와핑 단계를 예시한다.
도 9는 일부 실시예들에 따른, 스파이킹 컨볼루션 뉴럴 프로세서에서 사용되는 컨볼루션의 방법을 예시한다.
도 10은 일부 실시예들에 따른, 깊이 1의 픽셀들의 8x8 행렬에서의 컨볼루션의 상징적 표현을 예시한다.
도 11은 일부 실시예들에 따른, 스파이크들의 2개의 채널, 2개의 3x3 역 컨볼루션 커널, 및 결과적인 막전위 값들을 수반하는 컨볼루션의 상징적 표현을 예시한다.
도 12는 일부 실시예들에 따른, 도 11의 채널 1 및 채널 2 상의 뉴런들에서 생성된 결과적인 스파이크들을 예시한다.
도 13은 일부 실시예들에 따른, 스파이킹 뉴럴 네트워크 컨볼루션 연산을 예시한다.
도 14는 일부 실시예들에 따른, 입력 이미지에 8개의 방향성 필터 뉴런 컨볼루션이 적용되는 것의 결과를 예시한다.
도 15는 일부 실시예들에 따른, DVS 스파이크 기반 컨볼루션과 프레임 기반 컨볼루션 간의 유사성을 예시한다.
도 16은 일부 실시예들에 따른, YAML 구성 파일의 예를 예시한다.
도 17은 일부 실시예들에 따른, 각각의 스파이킹 뉴런 회로 및 스파이킹 뉴런 회로들의 각각의 레이어의 구성 및 연결성을 정의하는 스캔 체인을 포함하는 구성 레지스터들을 예시한다.
도면들에서, 유사한 참조 번호들은 일반적으로 동일하거나 유사한 요소들을 지시한다. 또한, 일반적으로, 참조 번호의 가장 왼쪽 숫자(들)는 참조 번호가 처음 나타나는 도면을 식별한다.
본 명세서에서는 입력 스트림으로부터 특징들의 비지도 추출을 학습하고 수행하도록 구성된 개선된 스파이킹 뉴럴 네트워크(SNN)를 위한 시스템, 장치, 디바이스, 방법 및/또는 컴퓨터 프로그램 제품 실시예들, 및/또는 이들의 조합들 및 부분 조합들이 제공된다. 본 명세서의 실시예들은 개선된 SNN을 제공하는 독립형 뉴로모픽 집적 회로를 포함한다. 뉴로모픽 집적 회로는 여러 이익을 제공한다. 첫 번째, 뉴로모픽 집적 회로는 크기가 소형이다. 예를 들어, 뉴로모픽 집적 회로는 실리콘 다이 상에 프로세서 복합체, 하나 이상의 센서 인터페이스, 하나 이상의 데이터 인터페이스, 스파이크 변환기, 및 메모리를 통합한다. 이는 하드웨어 구현들에서 실리콘 영역의 효율적인 사용을 가능하게 한다. 두 번째, 뉴로모픽 집적 회로는 사용자 정의 구성 파일을 이용하여 많은 상이한 태스크들에 대해 재프로그래밍될 수 있다. 예를 들어, 뉴로모픽 집적 회로 내의 레이어들과 뉴럴 프로세서들 사이의 연결들은 사용자 정의 구성 파일을 이용하여 재프로그래밍될 수 있다. 세 번째, 뉴로모픽 집적 회로는 낮은 레이턴시 출력을 제공한다. 네 번째, 뉴로모픽 집적 회로는 적은 양의 전력 소비를 소비한다. 예를 들어, 뉴로모픽 집적 회로는 동일한 태스크를 수행할 때 비교할 만한 인공 뉴럴 네트워크(ANN)보다 두 자릿수 적은 전력을 소비할 수 있다. 더욱이, 뉴로모픽 집적 회로는 최신 기술에 근접하거나 동등한 정확도를 제공할 수 있다. 마지막으로, 뉴로모픽 집적 회로는 내장된 항상성 및 시냅틱 가중치들의 입력되는 데이터 패턴들로의 빠른 수렴 양자를 나타내는 개선된 학습 방법을 제공한다.
ANN들은 일반적으로 설계 시에 결정되는 아키텍처를 특징으로 하는 인공 뉴런들로 구성된다. 뉴런들은 생물학적 뇌에서의 뉴런들을 느슨하게 모델링할 수 있다. 뉴런들은 하드웨어 회로들이거나 프로그램적으로 정의될 수 있다. ANN의 기능은 레이어 내의 뉴런들 사이의 연결들, 뉴런들의 레이어들 사이의 연결들, 시냅틱 가중치들, 및 미리 정의된 입력 범위에 맞추기 위한 입력 데이터의 전처리에 의해 정의될 수 있다.
ANN에서, 추론은 곱셈-누산(multiply-accumulate, MAC) 연산을 이용하여 수행될 수 있다. MAC 연산에서, 입력되는 데이터 값들은 메모리에 저장된 복수의 시냅틱 가중치와 곱해질 수 있다. 예를 들어, ANN은 이미지 내의 객체를 분류하기 위해 이미지마다 많은 MAC 연산들(예를 들어, 1억5천6백만 MAC 연산들)을 수행할 수 있다. 그 후 이들 곱셈의 결과들은 네트워크 내의 각각의 뉴런에서의 덧셈에 의해 적분될 수 있다. MAC 연산을 수행한 후에, 비선형 함수가 뉴런의 적분된 값에 적용되어 출력 값을 야기할 수 있다. 출력 값은 부동 소수점 값일 수 있다.
특정 태스크를 수행하기 위한 ANN을 생성하기 위해 다수의 레이어가 이용될 수 있다. 많은 뉴런들이 ANN의 각각의 레이어에서 병렬로 사용될 수 있다. 또한 추론 레이어들 사이에 풀링 연산(pooling operation)이 수행될 수 있다.
딥 ANN(Deep ANN)은 많은 레이어를 갖는 ANN의 소프트웨어 또는 하드웨어 구현을 지칭할 수 있다. 딥 ANN들은 이미지 분류에서 매우 성공적일 수 있다. 예를 들어, 딥 ANN들은 ImageNet에서 이미지들의 이미지 분류에서 매우 성공적이었다. ImageNet은 손으로 라벨링된 이미지들의 큰 컬렉션이다.
딥 ANN들은 생물학적 뉴런들은 발화율(firing rate), 예를 들어, 전기적 임펄스들이 뉴런에 의해 수신되고 생성되는 속도를 통해 데이터를 전달한다는 믿음에 근거를 두고 있다. 딥 ANN 내의 뉴런들은 부동 소수점 또는 멀티-비트 정수들로 통신할 수 있다.
컨볼루션 뉴럴 네트워크(CNN)들은 데이터세트에서 발생하는 특징들을 추출하기 위해 많은 라벨링된 예들을 사용하여 뉴런들이 훈련되는 딥 ANN들의 한 부류이다. 예를 들어, 데이터세트는 이미지일 수 있다. CNN들은 컨볼루션 연산을 이미지에 적용할 수 있다. 컨볼루션 연산은 이미지의 작은 섹션에 작용할 수 있고 이미지에서의 특징의 발생을 지시하는 값을 CNN에서의 다음 레이어에 전달할 수 있다. 특징은 작은 직사각형 영역에 포함될 수 있다. 이 작은 직사각형은 프로그램적으로 더 큰 입력 이미지 주위로 이동될 수 있다. 이미지에서의 특징이 뉴런의 시냅스 가중치들에 저장되는 특징 정보와 매칭할 때, 값이 CNN에서의 다음 레이어에 전송된다. CNN들에서, 시냅스 가중치들은 이미지의 상이한 위치들에서 유사한 특징들에 반응하는 뉴런들 사이에 공유된다. CNN 내의 뉴런은 정의된 특징들에 대한 필터로서의 역할을 할 수 있다. CNN을 훈련시키는 것은 역전파(backpropagation)로 알려진 수학적 최적화 기법을 통해 달성될 수 있다.
CNN들은 특징들을 검출하고 이미지들을 분류하는 데 성공적이었지만, 그것들은 종종 높은 계산 요구들, 파괴적 망각(catastrophic forgetfulness), 및 적대적 샘플들(adversarial samples)의 부정확한 분류를 포함한 여러 기술적 문제들을 겪는다. CNN들은 또한 높은 레이턴시를 겪는다. 높은 계산 요건들에 의해 야기되는 레이턴시 문제들을 오프셋하기 위해 CNN들에서 많은 코어 프로세서들 및 대규모 병렬 처리가 사용될 수 있지만, 이는 종종 CNN에 대한 높은 전력 요건들을 야기한다. 예를 들어, ImageNet에서 이미지들을 분류하기 위해 사용되는 CNN은 2000 와트 정도의 전력을 사용할 수 있다. 이는 CNN이 PCIe(Peripheral Component Interconnect Express) 애드-인 보드들 상에 구현되는 고전력 중앙 처리 유닛(CPU) 및 하나 이상의 그래픽 처리 유닛(GPU)을 이용해야 할 수 있기 때문이다.
SNN들은 CNN들과 연관된 기술적 문제들 중 일부를 해결할 수 있다. SNN들은 생물학적 뉴런들이 감각 기관들에 의해 그리고 신경층들 사이에서 방출되는 펄스들의 타이밍에서 데이터를 전달하는 생체 의학적 연구에서의 제안에 기초한다. 펄스들은 스파이크들이라고 지칭되는 에너지의 짧은 버스트들이다. SNN들은 뉴런들 사이의 정보가 스파이크들을 사용하여 표현되는 ANN들의 한 부류이다. 스파이크들은 그들의 타이밍 및 공간 분포에 기초하여 정보를 표현할 수 있다. SNN 내의 스파이킹 뉴런들은, 입력에서의 일련의 이벤트들이 이전에 학습된 시퀀스로서 인식될 때만, 스파이킹하고, 전기 에너지를 소비할 수 있다. 이는 생물학적 뇌에서 일어나는 처리와 유사하다. SNN에서 뇌 기능을 시뮬레이션하고 이미지 내의 객체들의 분류, 또는 데이터의 스트림 내의 특정 특징들의 인식과 같은 결과를 달성하는 기술은 뉴로모픽 컴퓨팅이라고 지칭될 수 있다.
SNN은 다른 유형들의 ANN들보다 여러 자릿수 더 적은 전력을 소비할 수 있는데, 그 이유는 SNN 내의 뉴런은 ANN들의 MAC 요건들을 수행하기 위해 끊임없이 처리하지 않기 때문이다. 오히려, 뉴런은 스파이크가 발생할 때에만 전력을 소비할 수 있다. SNN에서, 입력 스파이크가 수신될 때마다 뉴런의 시뮬레이션된 막전위 값에 가변적인 0이 아닌 시냅틱 가중치 값을 더함으로써 신경 함수가 에뮬레이션될 수 있다. 시뮬레이션된 막전위 값은 그 후 하나 이상의 임계 값과 비교될 수 있다. 뉴런의 막전위 값이 임계 값에 도달하거나 이를 초과할 때 스파이크가 생성될 수 있다. SNN이 훈련된 후에 SNN은 파괴적 망각을 나타내지 않고 학습을 계속할 수 있다. 더욱이, SNN들이 적대적 샘플들로 인해 부정확한 분류를 겪는다는 증거는 없다.
그러나 종래의 SNN들은 여러 기술적 문제들을 겪을 수 있다. 첫 번째, 종래의 SNN들은 컨볼루션과 완전 연결 연산 간에 스위칭할 수 없다. 예를 들어, 종래의 SNN은 특징들을 학습하고 데이터를 분류하기 위해 완전 연결 피드포워드 아키텍처를 사용하도록 설계 시에 구성될 수 있다. 본 명세서의 실시예들(예를 들어, 뉴로모픽 집적 회로)은 CNN 및 SNN의 특징들을 컨볼루션 연산 또는 완전 연결 뉴럴 네트워크 함수 간에 스위칭하도록 구성될 수 있는 스파이킹 컨볼루션 뉴럴 네트워크(SCNN)로 조합함으로써 이러한 기술적 문제를 해결한다. SCNN은 또한 각각의 뉴런에 대한 시냅스 가중치들의 수를 감소시킬 수 있다. 이는 또한 SCNN이 각각의 뉴런에 대해 더 적은 시냅스 가중치들을 갖는 종래의 SNN보다 깊도록(예를 들어, 더 많은 레이어들을 갖도록) 허용할 수 있다. 본 명세서의 실시예들은 입력 공간의 특정 위치에서 필터로서의 역할을 하는 각각의 뉴런에 대한 승자 독식(winner-take-all, WTA) 접근법을 사용함으로써 컨볼루션 연산을 더 개선한다. 이는 네트워크의 선택성 및 불변성을 개선할 수 있다. 다시 말해서, 이는 추론 연산의 정확도를 개선할 수 있다.
두 번째, 종래의 SNN들은 재구성 가능하지 않다. 본 명세서의 실시예들은 SNN의 시냅스들과 뉴런들 사이의 연결들이 사용자 정의 구성에 기초하여 재프로그래밍되는 것을 허용함으로써 이러한 기술적 문제를 해결한다. 예를 들어, 레이어들과 뉴럴 프로세서들 사이의 연결들은 사용자 정의 구성 파일을 이용하여 재프로그래밍될 수 있다.
세 번째, 종래의 SNN들은 SNN의 상이한 레이어들 간의 버퍼링을 제공하지 않는다. 그러나 버퍼링은 출력 스파이크들을 다음 레이어에 전달하기 위한 시간 지연을 허용할 수 있다. 본 명세서의 실시예들은 SCNN의 레이어들 사이에 입력 스파이크 버퍼들 및 출력 스파이크 버퍼들을 추가함으로써 이러한 기술적 문제를 해결한다.
네 번째, 종래의 SNN들은 시냅스 가중치 공유를 지원하지 않는다. 본 명세서의 실시예들은 컨볼루션을 수행할 때 SCNN의 커널들이 시냅스 가중치들을 공유하는 것을 허용함으로써 이러한 기술적 문제를 해결한다. 이는 SCNN의 메모리 요건들을 감소시킬 수 있다.
다섯 번째, 종래의 SNN들은 종종 1-비트 시냅스 가중치들을 사용한다. 그러나 1-비트 시냅스 가중치들의 사용은 연결들을 억제하는 방법을 제공하지 않는다. 본 명세서의 실시예들은 삼진 시냅스 가중치들(ternary synapse weights)을 사용함으로써 이러한 기술적 문제를 해결한다. 예를 들어, 본 명세서의 실시예들은 2-비트 시냅스 가중치들을 사용할 수 있다. 이러한 삼진 시냅스 가중치들은 플러스, 0, 또는 마이너스 값들을 가질 수 있다. 마이너스 가중치들의 사용은 선택성을 개선할 수 있는 연결들을 억제하는 방법을 제공할 수 있다. 다시 말해서, 이는 추론 연산의 정확도를 개선할 수 있다.
여섯 번째, 종래의 SNN들은 풀링을 수행하지 않는다. 이는 종래의 SNN들에 대한 증가된 메모리 요건들을 야기한다. 본 명세서의 실시예들은 이전 레이어 출력들에 대해 풀링을 수행함으로써 이러한 기술적 문제를 해결한다. 예를 들어, 본 명세서의 실시예들은 이전 레이어에 의해 출력된 전위 어레이에 대해 풀링을 수행할 수 있다. 이러한 풀링 연산은 가장 중요한 정보를 유지하면서 전위 어레이의 차원수(dimensionality)를 감소시킨다.
일곱 번째, 종래의 SNN은 종종 비트 어레이에 스파이크들을 저장한다. 본 명세서의 실시예들은 스파이크들을 표현하고 처리하기 위한 개선된 방법을 제공한다. 예를 들어, 본 명세서의 실시예들은 비트 어레이 대신에 연결 리스트를 사용할 수 있다. 이 연결 리스트는 각각의 입력 레이어 뉴런이 업데이트해야 하는 오프셋 인덱스들의 세트를 갖도록 최적화된다. 이는 본 명세서의 실시예들이 현재 레이어에서 연결된 뉴런들의 모든 막전위 값들을 업데이트하기 위해 단일 연결 리스트를 고려하기만 하면 되는 것을 가능하게 한다.
여덟 번째, 종래의 SNN들은 종종 스파이크 별로 처리한다. 대조적으로, 본 명세서의 실시예들은 스파이크들의 패킷들을 처리할 수 있다. 이는 스파이크가 처리되자마자 전위 어레이가 업데이트되게 할 수 있다. 이는 더 큰 하드웨어 병렬화를 허용할 수 있다.
마지막으로, 종래의 SNN들은 외부 소스로부터 학습(예를 들어, 시냅스 가중치들)을 가져오는 방법을 제공하지 않는다. 예를 들어, SNN들은 역전파를 사용하여 오프라인으로 수행되는 학습을 가져오는 방법을 제공하지 않는다. 본 명세서의 실시예들은 사용자가 오프라인으로 수행된 학습을 뉴로모픽 집적 회로에 가져오는 것을 허용함으로써 이러한 기술적 문제를 해결한다.
일부 실시예들에서, SCNN은 하나 이상의 뉴럴 프로세서를 포함할 수 있다. 각각의 뉴럴 프로세서는 재프로그래밍 가능한 패브릭을 통해 상호연결될 수 있다. 각각의 뉴럴 프로세서는 재구성 가능할 수 있다. 각각의 뉴런 프로세서는 완전 연결 레이어들에서 컨볼루션 또는 분류를 수행하도록 구성될 수 있다.
각각의 뉴럴 프로세서는 복수의 뉴런 및 복수의 시냅스를 포함할 수 있다. 뉴런들은 단순화된 적분 및 발화(Integrate and Fire, I&F) 뉴런들일 수 있다. 뉴런들 및 시냅스들은 재프로그래밍 가능한 패브릭을 통해 상호연결될 수 있다. 뉴럴 프로세서의 각각의 뉴런은 하드웨어 또는 소프트웨어로 구현될 수 있다. 하드웨어로 구현된 뉴런은 뉴런 회로라고 지칭될 수 있다.
일부 실시예들에서, 각각의 뉴런은 뉴런의 막전위 값을 설정하기 위해 증분 또는 감분 함수를 사용할 수 있다. 이는 종래의 I&F 뉴런의 덧셈 함수를 사용하는 것보다 효율적일 수 있다.
일부 실시예들에서, SCNN은 상이한 학습 기능들을 사용할 수 있다. 예를 들어, SCNN은 STDP 학습 기능을 사용할 수 있다. 일부 다른 실시예들에서, SCNN은 시냅스 가중치 스와핑을 이용하여 STDP 학습 기능의 개선된 버전을 구현할 수 있다. 이러한 개선된 STDP 학습 기능은 내장된 항상성(예를 들어, 안정된 학습 가중치들) 및 개선된 효율을 제공할 수 있다.
일부 실시예들에서, SCNN에 대한 입력은 오디오 스트림으로부터 도출된다. 아날로그-디지털(A/D) 변환기가 오디오 스트림을 디지털 데이터로 변환할 수 있다. A/D 변환기는 펄스 코드 변조(PCM) 데이터의 형태로 디지털 데이터를 출력할 수 있다. 데이터-스파이크 변환기는 디지털 데이터를 오디오 스트림의 스펙트럼을 나타내는 일련의 공간적으로 및 시간적으로 분포된 스파이크들로 변환할 수 있다.
일부 실시예들에서, SCNN에 대한 입력은 비디오 스트림으로부터 도출된다. A/D 변환기는 비디오 스트림을 디지털 데이터로 변환할 수 있다. 예를 들어, A/D 변환기는 비디오 스트림을 각각의 픽셀의 강도가 디지털 값으로 표현되는 픽셀 정보로 변환할 수 있다. 디지털 카메라가 그러한 픽셀 정보를 제공할 수 있다. 예를 들어, 디지털 카메라는 적색, 녹색 및 청색 픽셀들에 대한 3개의 8-비트 값의 형태로 픽셀 정보를 제공할 수 있다. 픽셀 정보는 캡처되어 메모리에 저장될 수 있다. 데이터-스파이크 변환기는 사람의 시각계(visual tract)의 액션들을 시뮬레이션하는 감각 뉴런들에 의해 픽셀 정보를 공간적으로 및 시간적으로 분포된 스파이크들로 변환할 수 있다.
일부 실시예들에서, SCNN에 대한 입력은 이진 값들의 형상의 데이터로부터 도출된다. 데이터-스파이크 변환기는 이진 값들의 형상의 데이터를 가우시안 수용 영역들(Gaussian receptive fields)에 의해 스파이크들로 변환할 수 있다. 본 기술분야의 통상의 기술자에 의해 이해되는 바와 같이, 데이터-스파이크 변환은 이진 값들의 형상의 데이터를 다른 수단에 의해 스파이크들로 변환할 수 있다.
일부 실시예들에서, 디지털 비전 센서(예를 들어, iniVation AG 또는 다른 제조자에 의해 공급된 DVS(Dynamic Vision Sensor))가 SCNN의 스파이크 입력 인터페이스에 연결된다. 디지털 비전 센서는 스파이크들의 형태로 픽셀 이벤트 정보를 송신할 수 있다. 디지털 비전 센서는 어드레스-이벤트 표현(Address-event representation, AER) 버스를 통해 스파이크들을 인코딩할 수 있다. 픽셀이 강도가 증가되거나 감소될 때 픽셀 이벤트들이 발생할 수 있다.
일부 실시예들에서, SCNN의 입력 포맷은 공간적 및 시간적 분포된 스파이크들의 형상이다. 스파이크는 전기 에너지의 짧은 버스트로서 정의될 수 있다.
일부 실시예들에서, SCNN은 스파이킹 뉴런들의 하나 이상의 레이어로 구성될 수 있다. 스파이킹 뉴런들은 뉴런들의 기능을 시뮬레이션할 수 있다. 스파이킹 뉴런들은 시냅스들의 기능을 시뮬레이션하는 회로들을 통해 상호연결될 수 있다.
스파이킹 뉴런은 하드웨어 또는 소프트웨어로 구현될 수 있다. 하드웨어 구현된 스파이킹 뉴런은 스파이킹 뉴런 회로라고 지칭될 수 있다. 그러나, 본 기술분야의 통상의 기술자에 의해 이해되는 바와 같이, 본 명세서의 임의의 실시예에서 스파이킹 뉴런 회로 대신에 소프트웨어 구현된 스파이킹 뉴런이 사용될 수 있다.
일부 실시예들에서, SCNN은 저장된 구성으로부터 구성될 수 있다. 저장된 구성은 YAML(YAML Ain't Markup Language) 파일을 사용하여 수정될 수 있다. YAML 파일은 특정 태스크에 관한 SCNN을 형성하기 위해 뉴럴 패브릭 내의 컴포넌트들의 기능을 정의할 수 있다. 예를 들어, YAML 파일은 CIFAR-10(Canadian Institute For Advanced Research 10) 데이터세트(기계 학습 및 컴퓨터 비전 알고리즘들을 훈련시키기 위해 흔히 사용되는 이미지들의 컬렉션) 내의 이미지들을 분류하도록 SCNN을 구성할 수 있다.
일부 실시예들에서, SCNN 내의 각각의 레이어는 최대 풀링 및 공유 시냅스 가중치들을 갖는 컨볼루션 레이어로서, 또는 개별 시냅스들을 갖는 완전 연결 레이어로서 정의되고, 연결되고, 구성될 수 있다.
일부 실시예들에서, 컨볼루션 레이어들은, 특정 특징들을 추출하고 해당 특징들을 메타데이터로서 SCNN의 다음 레이어에 전달함으로써 입력 신호의 차원수 감소에서 하나 이상의 최대 풀링 레이어들과 조합하여 사용될 수 있다. 각각의 뉴런에 의해 전달되는 메타데이터는 뉴런 막전위 값 또는 스파이크의 형태일 수 있다. 스파이크는 임계 값에 도달했다는 것을 지시할 수 있다. 스파이크는 학습 이벤트 또는 출력 스파이크를 트리거할 수 있다. 뉴런 막전위 값은 뉴런의 전위 값이다. 뉴런 막전위 값은 임계 값들과 무관하게 판독될 수 있다.
일부 실시예들에서, SCNN 내의 컨볼루션 네트워크 레이어들은 복수의 스파이킹 뉴런 회로를 포함할 수 있다. 각각의 스파이킹 뉴런 회로는 적분기 및 레이어 내의 다른 뉴런들과 공유되는 복수의 시냅스를 포함할 수 있다. 각각의 스파이킹 뉴런 회로는 특징 검출기로서 구성될 수 있다. 컨볼루션 레이어 바로 다음에 풀링 레이어가 올 수 있다. 풀링 레이어는 최대-풀링 레이어, 평균 풀링 레이어, 또는 본 기술분야의 통상의 기술자에 의해 이해되는 바와 같은 다른 유형의 풀링 레이어일 수 있다. 최대-풀링 레이어는 스파이킹 뉴런 회로들(예를 들어, 특징 검출기들)의 출력을 수신할 수 있다. 최대-풀링 레이어는 최고 전위 값을 갖는 뉴런 출력(예를 들어, 뉴런 막전위 값 또는 스파이크)만을 다음 레이어로 전달할 수 있다. 평균 풀링은, 입력을 직사각형 풀링 영역들로 분할하고 각각의 영역의 평균 값들을 계산함으로써 다운-샘플링을 수행할 수 있다.
일부 실시예들에서, SCNN 내의 완전 연결 레이어들은 분류, 자율 특징 학습, 및 특징 추출에서 사용될 수 있다. 완전 연결 레이어는 복수의 스파이킹 뉴런 회로를 포함할 수 있다. 각각의 스파이킹 뉴런 회로는 적분기 및 복수의 시냅스를 포함할 수 있다. 복수의 시냅스는 완전 연결 레이어 내의 다른 뉴런 회로들과 공유되지 않을 수 있다.
일부 실시예들에서, SCNN에서의 학습은 스파이크 시간 의존적인 가소성(STDP)으로 알려진 방법을 통해 발생할 수 있다. STDP 학습에서, 출력 스파이크에 선행하는 입력 스파이크가 입력 스파이크가 출력 스파이크에 기여한 것을 지시한다. STDP에서, 이는 시냅스 가중치가 강화되게 할 수 있다.
일부 실시예들에서, STDP 학습 방법은 시냅스 가중치 스와핑을 이용하여 개선된다. 시냅틱 가중치 값들은 출력 스파이크 이벤트들에 기여한 시냅틱 입력들을 강화하고 기여하지 않은 시냅스들을 약화시키기 위해 시냅스들에 걸쳐 스와핑될 수 있다. 이는 스파이킹 뉴런 회로가 특정 입력 특징에 대해 점점 더 선택적이 되게 할 수 있다.
일부 실시예들에서, STDP 학습 방법은 삼진 시냅스 가중치들을 이용하여 더 개선된다. 삼진 시냅스 가중치들은 플러스, 0, 또는 마이너스 값들을 가질 수 있다. 플러스 가중치들을 저장하는 시냅스들은 흥분성 시냅스들(excitatory synapses)이라고 지칭될 수 있다. 마이너스 가중치들을 저장하는 시냅스들은 억제성 시냅스들(inhibitory synapses)이라고 지칭될 수 있다. 0 가중치들을 저장하는 시냅스들은 선택 프로세스에 기여하지 않을 수 있다.
일부 실시예들에서, 뉴럴 네트워크의 각각의 레이어의 입력에 스파이크 입력 버퍼가 존재한다. 스파이크 입력 버퍼는 스파이크 정보를 수신하고 저장할 수 있다. 스파이크 정보는 디지털 비트들로서 스파이크 입력 버퍼에 송신될 수 있다. 스파이크의 존재는 '1'을 사용하여 표현될 수 있다. 스파이크의 부재는 '0'을 사용하여 표현될 수 있다.
일부 실시예들에서, 패킷타이저는 스파이크 입력 버퍼 내의 스파이크들을 하나 이상의 스파이크 패킷으로 소팅할 수 있다. 스파이크 패킷은 패킷 레지스터에 저장될 수 있다.
일부 실시예들에서, 제1 논리 AND 함수는 패킷 레지스터에 저장된 비트 패턴 및 시냅스들에 저장된 플러스 가중치 비트들에 적용될 수 있다. 제1 논리 AND 함수의 출력에서의 논리 '1'은 스파이킹 뉴런 회로의 막전위 카운터를 증분시킨다. 제2 AND 함수는 입력 스파이크 버퍼에 저장된 비트 패턴 및 시냅스들 내의 반전된 마이너스 가중치 비트들에 적용될 수 있다. 제2 논리 AND 함수의 출력에서의 논리 '1'은 스파이킹 뉴런 회로의 막전위 카운터를 감분시킨다.
일부 실시예들에서, SCNN 내의 레이어는 파라미터들을 공유하는 뉴런들의 컬렉션이다. 레이어는 이전 레이어들로부터 스파이크 정보를 수신하고 스파이크 정보를 후속 레이어들에 전파할 수 있다.
일부 실시예들에서, SCNN은 피드포워드 및 피드백 아키텍처를 지원할 수 있다. 이는 각각의 레이어가 로컬 버스 구조로부터 입력들을 수신하고 출력들을 동일한 로컬 버스에 전달하는 연결 토폴로지일 수 있다.
일부 실시예들에서, 각각의 레이어는 헤더 및 이벤트 어드레스들을 포함하는 어드레스-이벤트 표현(AER) 스타일 데이터 구조들을 수신 및 송신할 수 있다. 이 정보는 스파이크 입력 버퍼 내로 수신될 수 있다. AER 이벤트는 3개의 성분: x, y, f를 포함하고, 여기서 f는 특징(예를 들어, 채널)이고, x, y는 스파이킹한 스파이킹 뉴런 회로의 좌표이다. 입력 스파이크 버퍼는 레이어에 의해 처리되는 스파이크 패킷을 생성하도록 처리될 수 있다. 레이어는 출력 스파이크 버퍼에 대한 스파이크를 처리를 위해 다음 레이어로 출력할 수 있다.
일부 실시예들에서, 입력 레이어 유형이 아닌 모든 레이어 유형은 전위 어레이를 가질 수 있다. 전위 어레이는 각각의 스파이킹 뉴런 회로의 막전위 값들을 저장할 수 있다.
일부 실시예들에서, 각각의 레이어는 레이어 내의 스파이킹 뉴런 회로들과 뉴런들에 대한 입력들 사이의 연결성을 기술하는 2개의 데이터 구조를 포함할 수 있다. 제1 데이터 구조는 연결 리스트 어레이라고 지칭될 수 있다. 연결 리스트 어레이 내의 엔트리들은 특정 입력이 연결되는 스파이킹 뉴런 회로들의 리스트에 대응할 수 있다. 연결 리스트 어레이는 소스로부터 데스티네이션으로의 연결성 정보를 포함할 수 있다.
제2 데이터 구조는 가중치 벡터 어레이라고 지칭될 수 있다. 가중치 벡터 어레이 내의 각각의 엔트리는 특정 스파이킹 뉴런 회로가 연결되는 입력들의 벡터에 대응한다. 가중치 벡터 어레이는 데스티네이션 대 소스 정보를 포함할 수 있다.
일부 실시예들에서, 완전 연결 레이어 유형의 각각의 스파이킹 뉴런 회로는 전위 어레이에 단일 엔트리를 갖는다. 대조적으로, 일부 실시예들에서, 컨볼루션 레이어의 스파이킹 뉴런 회로들은 모든 입력 채널에 걸쳐 x-y 좌표에 적용되는 시냅틱 가중치들의 단일 세트를 공유할 수 있다. 시냅틱 가중치는 가중치 벡터 어레이에 데스티네이션 대 소스 포맷으로 저장될 수 있다.
계산적으로 도출된 뉴런 함수들(예를 들어, 딥 러닝 뉴럴 네트워크(Deep Learning Neural Networks, DNN))을 갖는 ANN들에서, 훈련 및 추론은 상이한 환경들 또는 머신들에서 발생하는 2개의 별개의 연산일 수 있다. 훈련 국면(training phase) 동안, DNN은 역-전파에 의해 뉴럴 네트워크에서 시냅틱 가중치 값들을 계산함으로써 큰 훈련 데이터 세트로부터 학습한다. 대조적으로, 학습이 DNN의 추론 국면(inference phase) 동안은 발생하지 않을 수 있다.
일부 실시예들에서, SCNN은 훈련 연산과 추론 연산 사이에 명확한 구분을 하지 않는다. 추론 연산은 이벤트 전파를 통해 동작할 수 있다. 이벤트 전파는 전위 어레이를 업데이트하고 레이어에 대해 발화하는 스파이크들의 출력 스파이크 버퍼를 생성하기 위해 SCNN의 레이어에 의한 입력들의 처리를 지칭할 수 있다. 레이어 내의 스파이킹 뉴런 회로는 먼저 이벤트 전파 단계(예를 들어, 추론)를 수행한 다음 학습 단계를 수행할 수 있다. 일부 실시예들에서, SCNN의 레이어에서 학습이 디스에이블될 때, 레이어는 사실상 추론 국면인 이벤트 전파 단계만을 수행할 수 있다.
컨볼루션을 수반하는 일부 실시예들에서, 스파이킹 뉴런 회로들은 시냅틱 가중치들을 공유할 수 있다. 이러한 뉴런 회로들은 필터들이라고 지칭될 수 있다. 이는 이러한 스파이킹 뉴런 회로들이 입력 스트림으로부터 특정 특징을 필터링할 수 있기 때문이다.
도 1은 일부 실시예들에 따른, 뉴럴 네트워크 모델의 블록도이다. 도 1에서, 스파이크들은 로컬 버스(101)를 통해 통신될 수 있다. 예를 들어, 로컬 버스(101)는 네트워크 온 칩(NoC) 버스일 수 있다. 스파이크들은 네트워크 패킷들의 형태로 통신될 수 있다. 네트워크 패킷은 하나 이상의 스파이크 및 오리진 및 데스티네이션 어드레스들을 지시하는 코드를 포함할 수 있다.
도 1에서, 스파이크 디코더(102)는 네트워크 패킷들 내의 스파이크들을 디코딩할 수 있다. 스파이크 디코더 회로(102)는 네트워크 패킷 내의 오리진 어드레스에 기초하여 특정 스파이킹 뉴런 회로에 스파이크를 전송할 수 있다. 예를 들어, 스파이크 디코더 회로(102)는 대응하는 스파이킹 뉴런 회로의 스파이크 입력 버퍼(103)에 스파이크를 저장할 수 있다. 스파이크 디코더 회로(102)는 또한 비트가 끝날 예정인 어드레스를 대응하는 뉴런 회로의 스파이크 입력 버퍼(103)에 저장할 수 있다.
스파이크 입력 버퍼(103)는 하나 이상의 스파이크를 저장할 수 있다. '1' 비트는 스파이크의 존재를 나타낼 수 있고 0 비트는 스파이크의 부재를 나타낼 수 있다. 스파이크 입력 버퍼(103)는 또한 비트가 끝날 예정인 어드레스를 포함할 수 있다.
도 1에서, 패킷타이저(114)는 스파이크 입력 버퍼(103) 내의 스파이크들을 하나 이상의 스파이크 패킷으로 소팅할 수 있다. 스파이크 패킷은 패킷 레지스터(104)에 저장될 수 있다. 예를 들어, 스파이킹 뉴런 회로가 1024개의 시냅스를 갖는 경우, 패킷 레지스터(104)는 1024 비트 길이일 수 있다. 패킷타이저(114)는 스파이크 입력 버퍼(103) 내의 비트들을 1024 비트 패킷 레지스터(104)를 따라 정확한 위치들로 소팅할 수 있다. 이 소팅 프로세스는 도 6에서 더 설명된다.
도 1에서, 시냅틱 가중치 값들이 시냅틱 가중치 저장소(105)에 저장될 수 있다. 일부 실시예들에서, 시냅틱 가중치 저장소(105)는 SRAM(static random-access memory)을 이용하여 구현될 수 있다. 본 기술분야의 통상의 기술자에 의해 이해되는 바와 같이, 시냅틱 가중치 저장소(105)는 다양한 다른 메모리 기술들을 이용하여 구현될 수 있다.
시냅틱 가중치 저장소(105) 내의 시냅틱 가중치 값들은 플러스 또는 마이너스일 수 있다. 일부 실시예들에서, 시냅틱 가중치 저장소(105) 내의 시냅틱 가중치 값들은 처리를 위해 가중치 레지스터(106)로 전송될 수 있다. 가중치 레지스터(106) 내의 플러스 시냅틱 가중치 값들은 논리 AND 회로(107)에서 패킷 레지스터(104) 내의 대응하는 비트들과 AND 연산될 수 있다. 논리 AND 회로(107)의 결과적인 출력은 AND 함수의 각각의 플러스 결과에 대해 카운터(109)를 증분시킬 수 있다. 카운터(109)는 뉴런의 막전위 값을 나타낼 수 있다.
가중치 레지스터(106) 내의 마이너스 시냅틱 가중치 값들은 논리 AND 회로(108)에서 패킷 레지스터(104) 내의 대응하는 비트들과 AND 연산될 수 있다. 논리 AND 회로(108)의 결과적인 출력은 카운터(109)를 감분시킬 수 있다. 이러한 프로세스는 패킷 레지스터(104) 내의 모든 비트들이 처리될 때까지 계속될 수 있다.
패킷 레지스터(104) 내의 모든 비트들이 처리된 후에, 카운터(109)는 가중치 레지스터(106) 내의 플러스 및 마이너스 시냅틱 가중치 값들에 대응하는 패킷 레지스터(104) 내의 비트들의 수를 나타내는 값을 포함할 수 있다. 카운터(109) 내의 값은 임계 값 비교기(110)를 사용하여 적어도 하나의 임계 값과 비교될 수 있다.
일부 실시예들에서, 임계 값 비교기(110)는 카운터(109) 내의 값을 2개의 임계 값과 비교할 수 있다. 예를 들어, 임계 값 비교기 회로(110)는 카운터(109) 내의 값을 학습 임계 값 레지스터(111) 내의 값 및 스파이킹 임계 값 레지스터(112) 내의 값과 비교할 수 있다.
일부 실시예들에서, 학습 임계 값 레지스터(111) 내의 값은 초기에 낮은 값으로 설정되어 뉴런이 학습하는 것을 허용할 수 있다. 학습 프로세스 동안, 가중치 스와퍼(113)를 사용하여 입력되는 스파이크들에 시냅틱 가중치들이 할당될 수 있다. 이 프로세스는 도 8 및 도 9에 예시된다. 일부 실시예들에서, 뉴런이 학습함에 따라, 카운터(109)의 값이 증가하고, 학습 임계 값 레지스터(111) 내의 값도 증가한다. 이 프로세스는 뉴런이 특정 학습된 패턴에 강한 반응을 제시할 때까지 계속될 수 있다.
도 2a는 일부 실시예들에 따른, 뉴로모픽 집적 회로(200)의 블록도이다. 뉴로모픽 집적 회로(200)는 뉴런 패브릭(201), 변환 복합체(202), 센서 인터페이스들(203), 프로세서 복합체(204), 하나 이상의 데이터 인터페이스(205), 하나 이상의 메모리 인터페이스(206), 고속 칩 대 칩 인터페이스를 제공할 수 있는 멀티-칩 확장 인터페이스(207), 전력 관리 유닛(213), 및 하나 이상의 직접 메모리 액세스(DMA) 엔진(214)을 포함할 수 있다.
일부 실시예들에서, 뉴런 패브릭(201)은 복수의 재구성 가능한 뉴럴 프로세서(208)를 포함할 수 있다. 뉴럴 프로세서(208)는 복수의 뉴런을 포함할 수 있다. 예를 들어, 뉴럴 프로세서(208)는 복수의 스파이킹 뉴런 회로 및 복수의 시냅스를 포함할 수 있다. 위에 논의된 바와 같이, 스파이킹 뉴런 회로는 입력 스파이크 버퍼(103), 패킷타이저(114), 패킷 레지스터(104), 논리 AND 회로(107), 논리 AND 회로(108), 카운터(109), 임계 값 비교기(110), 학습 임계 값(111), 스파이킹 임계 값(112)을 이용하여 구현될 수 있다. 복수의 시냅스는 가중치 레지스터(106), 시냅틱 가중치 저장소(105), 및 가중치 스와퍼(113)를 이용하여 구현될 수 있다. 각각의 뉴럴 프로세서(208)는 뉴럴 패브릭(201)의 임의의 부분에 연결될 수 있는 복수의 재프로그래밍 가능한 스파이킹 뉴런 회로를 포함할 수 있다.
일부 실시예들에서, 변환 복합체(202)는 픽셀-스파이크 변환기(209), 오디오-스파이크 변환기(210), DVS(Dynamic Vision Sensor)-스파이크 변환기(211), 및 데이터-스파이크 변환기(212) 중 하나 이상을 포함할 수 있다. 픽셀-스파이크 변환기(209)는 이미지들을 스파이크 이벤트들로 변환할 수 있다.
일부 실시예들에서, 센서 인터페이스(203)는, 픽셀 데이터, 오디오 데이터, 아날로그 데이터, 및 디지털 데이터에 대한 하나 이상의 인터페이스를 포함할 수 있다. 센서 인터페이스들(203)은 DVS 픽셀 데이터에 대한 AER 인터페이스를 또한 포함할 수 있다.
일부 실시예들에서, 프로세서 복합체(204)는, 적어도 하나의 프로그래밍 가능한 프로세서 코어, 메모리, 및 입력-출력 주변장치들을 포함할 수 있다. 프로세서 복합체(204)는 뉴로모픽 집적 회로(200)와 동일한 다이 상에 구현될 수 있다.
일부 실시예들에서, 데이터 인터페이스들(205)은 입력 및 출력 주변장치들을 위한 하나 이상의 인터페이스를 포함할 수 있다. 이 하나 이상의 인터페이스는 PCIe(Peripheral Component Interconnect Express) 버스 표준, USB(Universal Serial Bus) 버스 표준, 이더넷 버스 표준, CAN(Controller Area Network) 버스 표준, 및 시리얼 데이터를 송신 및 수신하기 위한 UART(Universal Asynchronous Receiver and Transmitter)를 사용할 수 있다.
일부 실시예들에서, 메모리 인터페이스들(206)은 동적 랜덤 액세스 메모리(RAM) 확장을 위한 하나 이상의 인터페이스를 포함할 수 있다. 이 하나 이상의 인터페이스는 DDR SDRAM(double data rate synchronous dynamic random-access memory) 표준을 사용할 수 있다. 예를 들어, 이 하나 이상의 인터페이스는 DDR3 또는 DDR4 표준을 사용할 수 있다.
일부 실시예들에서, 멀티-칩 확장 인터페이스(207)는 뉴럴 패브릭(201)의 다수의 칩들로의 확장을 가능하게 하기 위해 스파이크 정보를 반송할 수 있다. 멀티-칩 확장 인터페이스(207)는 AER을 이용하여 스파이크 정보를 반송할 수 있다. AER은 시스템 버스를 통해 스파이크 이벤트들을 송신하기 위한 표준이다. 스파이크가 발생할 때 스파이킹하는 특정 뉴런의 어드레스가 송신된다.
일부 실시예들에서, 뉴로모픽 집적 회로(200)는 스파이크 정보를 입력으로서 취하고 AER 스파이크 이벤트들을 출력으로서 생성할 수 있다. SCNN의 마지막 레이어로부터 스파이크들을 출력하는 것에 더하여, AER 스파이크 이벤트들은 또한 각각의 스파이킹 뉴런 회로에 대한 막전위 값들을 송신할 수 있다.
일부 실시예들에서, 뉴럴 패브릭(201)은 피드포워드 방식으로 스파이크들을 처리할 수 있다. 스파이크들은 AER 포맷 데이터를 사용하여 레이어들 사이에 전송될 수 있다. 각각의 레이어는 입력 스파이크 버퍼에 저장된 스파이크들을 스파이크 패킷들의 세트로 변환하는 입력 스파이크 버퍼(예를 들어, 입력 스파이크 버퍼(103))를 가질 수 있다. 모든 레이어는 그것의 출력 스파이크들을 다음 레이어에 전송하기 전에 입력 스파이크 버퍼 내의 모든 스파이크들을 완전히 처리할 수 있다.
도 2b는 일부 실시예들에 따른, 도 2a의 뉴로모픽 집적 회로(200)의 다른 블록도이다. 도 2b는 로컬 버스(220)(예를 들어, NoC 버스)를 이용하는 뉴로모픽 집적 회로(200)의 컴포넌트들의 상호연결을 예시한다. 도 2b에서, 뉴로모픽 집적 회로(200)는, 도 2a에 예시된 바와 같이, 뉴런 패브릭(201), 프로세서 복합체(204), 하나 이상의 데이터 인터페이스(205), 픽셀-스파이크 변환기(209), 오디오-스파이크 변환기(210), 및 DMA 엔진들(214)을 포함할 수 있다. 뉴로모픽 집적 회로(200)는 시냅틱 가중치 저장소(222), 메모리(224), 시리얼 판독 전용 메모리(ROM)(226), 구성 레지스터(228), PCIe 인터페이스 블록(230), PCIe 버스(232), UART 인터페이스(234), CAN 인터페이스(236), USB 인터페이스(238), 및 이더넷 인터페이스(240)를 또한 포함할 수 있다.
일부 실시예들에서, 시냅틱 가중치 저장소(222)는 도 1의 시냅틱 가중치 저장소(105)에 상당할 수 있다. 시냅틱 가중치 저장소(222)는 뉴런 패브릭(201)에 연결될 수 있다. 시냅틱 가중치 저장소(222)는 모든 시냅스들의 가중치들 및 모든 스파이킹 뉴런 회로들의 막전위 값들을 저장할 수 있다. 시냅틱 가중치 저장소(222)는 PCIe 버스(232)에 연결될 수 있는 PCIe 인터페이스 블록(230)으로부터의 하나 이상의 DMA 엔진(214)을 통해 외부에서 액세스될 수 있다.
일부 실시예들에서, 구성 레지스터들(228)은 뉴런 패브릭(201)에 연결될 수 있다. 뉴런 패브릭(201)의 초기화 동안, 프로세서 복합체(204)는 시리얼 ROM(226)을 판독하고, 구성 레지스터들(228) 및 시냅틱 가중치 저장소(222)에 값들을 기입함으로써 외부에서 정의된 기능을 위해 뉴런 패브릭(201)을 구성할 수 있다.
일부 실시예들에서, 프로세서 복합체(204)는 PCIe 인터페이스(230)를 통해 외부에서 이용가능하다. 프로그램이 메모리(224)에 저장될 수 있다. 프로그램은 UART 인터페이스(234), CAN 인터페이스(236), USB 인터페이스(238), 및 이더넷 인터페이스(240)의 기능을 결정할 수 있다. 이들 인터페이스들 중 하나 이상은, 뉴런 패브릭(201), 프로세서 복합체(204), 또는 양쪽 모두에 의해 처리될 데이터를 전달할 수 있다.
오디오-스파이크 변환기(210)는 뉴런 패브릭(201)에 의해 처리되도록 로컬 버스(220) 상에 직접 스파이크들을 전달할 수 있다. 픽셀-스파이크 변환기(209)는 외부 이미지 센서에 연결될 수 있고 픽셀 정보를, 뉴런 패브릭(201)에 의한 처리를 위해 로컬 버스(220) 상에 분배되는, 스파이크 패킷들로 변환한다. 처리된 스파이크들은 패킷타이징(예를 들어, 네트워크 패킷들에 삽입)되어 로컬 버스(220) 상에 배치될 수 있다.
도 3은 일부 실시예들에 따른, 다음 레이어에 대한 입력 스파이크 버퍼링, 패킷타이징, 및 출력 스파이크 버퍼링의 흐름도이다. 도 3은 입력 스파이크 버퍼(301), 하나 이상의 스파이크 패킷(302), 뉴런 패브릭(303), 및 출력 스파이크 버퍼(304)를 포함한다. 도 3에서, 입력 스파이크 버퍼(301) 내의 스파이크들은 뉴런 패브릭(303) 내의 특정 뉴런들(예를 들어, 스파이킹 뉴런 회로들)에 대한 하나 이상의 스파이크 패킷(302)으로 소팅될 수 있다. 뉴런 패브릭(303)에서의 처리 후에, 임의의 결과적인 스파이크들이 출력 스파이크 버퍼(304)에 저장될 수 있고, 이는 후속 레이어에 전송된다. 출력 스파이크 버퍼(304) 내의 결과적인 스파이크들은 후속 레이어에 의한 처리를 위해 패킷타이징될 수 있다.
일부 실시예들에서, 뉴런 패브릭(303) 내의 레이어는 전체 입력 스파이크 버퍼(301)를 처리할 수 있다. 레이어는 각각의 스파이크 패킷(302)을 순차적으로 처리할 수 있다. 결과적인 출력 스파이크들은 출력 스파이크 버퍼(304)에 배치될 수 있다. 출력 스파이크 버퍼(304)는 모든 스파이크 패킷들(302)이 처리될 때까지 처리를 위해 다음 레이어에 전송되지 않을 수 있다. 일부 실시예들에서, 뉴런 패브릭(303)의 모든 레이어는 이 워크플로우를 따를 수 있다.
일부 실시예들에서, 뉴런 패브릭(303)은 한 번에 많은 스파이크들을 처리할 수 있다. 일부 실시예들에서, 뉴런 패브릭(303) 내의 레이어들에 대해 상이한 스파이크 버퍼 유형들이 사용될 수 있다. 스파이크 입력 버퍼의 유형은 입력 데이터의 성질에 의존할 수 있다. 스파이크 버퍼 유형들 간의 차이는 그것들이 입력 스파이크 버퍼(301)로부터 스파이크 패킷들을 생성하는 방법에 있을 수 있다.
일부 실시예들에서, 연속적인 또는 진행중인 유형들의 데이터(예를 들어, DVS 카메라에 의해 생성된 스파이크들의 스트림)를 처리하기 위해 패킷타이징 버퍼 유형이 사용될 수 있다. 사용자는 이 버퍼 유형을 이용하도록 뉴런 패브릭(303)의 상이한 레이어들을 구성할 수 있다. 패킷타이징 버퍼 유형은 많은 스파이크들의 처리를 한 번에 하나씩 또는 매우 큰 버스트들로 가능하게 할 수 있다. 패킷타이징 버퍼는 스파이크들의 수가 구성 파일(예를 들어, YAML 파일)에서 특정된 파라미터(예를 들어, 패킷 크기)에 의해 정의된 크기에 도달할 때까지 스파이크들이 수신되는 순서로 그것들을 저장할 수 있다. 일단 패킷타이징 버퍼가 그 크기에 도달하면, 스파이크 패킷이 처리를 위해 뉴럴 패브릭(303)에 전달될 수 있다. 그 후 패킷타이징 버퍼는 클리어될 수 있다. 그 후 패킷타이징 버퍼는 스파이크들을 계속 저장할 수 있다.
일부 실시예들에서, 정의된 크기(예를 들어, 전통적인 비디오 이미지 프레임들 또는 값들의 정의된 세트들)의 형태로 데이터를 처리하기 위해 플러싱 버퍼 유형이 사용될 수 있다. 예를 들어, 비디오 프레임은 640x480 픽셀들과 같은 정의된 크기를 가질 수 있다. 그러나, 이 경우, 한번에 전송되는 많은 스파이크들은 단일 패킷으로서 처리하기 위해 즉시 전송될 수 있다. 스파이크 패킷들은 상이한 길이들일 수 있다.
일부 실시예들에서, 각각의 레이어 유형은 스파이크 입력 버퍼로부터 패킷들을 먼저 생성함으로써 전체 스파이크 입력 버퍼(예를 들어, 스파이크 입력 버퍼(301))를 처리하는 기능을 구현할 수 있다. 전체 스파이크 입력 버퍼가 패킷타이징된 후에, 이 기능은 모든 스파이크 패킷들을 처리할 수 있다. 그 후 이 기능은 처리된 스파이크 패킷을 삭제하고 출력 스파이크들을 스파이크 패킷으로부터 출력 스파이크 버퍼(예를 들어, 출력 스파이크 버퍼(304))로 푸시할 수 있다. 그 후 이 기능은 처리할 다음 스파이크 패킷을 얻을 수 있다. 버퍼 유형들 간의 차이는 그것들이 입력 스파이크 버퍼로부터 스파이크 패킷들을 생성하는 방법에 있을 수 있다.
도 4는 일부 실시예들에 따른, 스파이킹 컨볼루션 뉴럴 프로세서로서 구성된 뉴럴 프로세서(400)의 블록도이다. 뉴럴 프로세서(400)는 로컬 버스(401)(예를 들어, NoC 버스) 상의 네트워크, 스파이크 디코더(402), 시냅틱 가중치 저장소(403), 뉴런 위치 생성기, 풀링 회로(404), 뉴런 패브릭(405), 전위 업데이트 및 체크 회로(406), 및 스파이크 생성기(407)를 포함할 수 있다. 뉴런 패브릭(405)은 도 2의 뉴런 패브릭(201)에 상당할 수 있다. 시냅틱 가중치 저장소(403)는 뉴런들에 대한 시냅틱 가중치 값들 및 막전위 값들(예를 들어, 전위 어레이)을 저장할 수 있다. 풀링 회로(404)는 최대 풀링 연산, 평균 풀링 연산, 또는 본 기술분야의 통상의 기술자에 의해 이해되는 바와 같은 다른 유형의 풀링 연산을 수행할 수 있다. 일 대 다 스파이크 생성기 회로(407)는 로컬 버스(401)를 통해 일 대 다 송신될 수 있는 스파이크 패킷들을 생성할 수 있다.
도 5는 일부 실시예들에 따른, 스파이킹 완전 연결 뉴럴 프로세서로서 구성된 뉴럴 프로세서(500)의 블록도이다. 뉴럴 프로세서(500)는 로컬 버스(501)(예를 들어, NoC 버스), 스파이크 디코더(502), 시냅틱 가중치 저장소(503), 뉴런 위치 생성기, 패킷 형성기(504), 뉴런 패브릭(505), 전위 업데이트 및 체크 회로(506), 및 전위 및 스파이크 출력 회로(507)를 포함한다. 뉴런 패브릭(505)은 도 2의 뉴런 패브릭(201)에 상당할 수 있다. 시냅틱 가중치 저장소(503)는 뉴런들에 대한 시냅틱 가중치 값들 및 막전위 값들(예를 들어, 전위 어레이)을 저장할 수 있다. 도 5에서, 스파이크들은 스파이크 입력 버퍼 내로 수신되고 스파이킹 디코더(502)를 이용하여 스파이크 패킷들로서 분배될 수 있다.
일부 실시예들에서, 시냅스 가중치들은 삼진 가중치들일 수 있다. 이러한 삼진 시냅스 가중치들은 2-비트 폭일 수 있다. 이러한 2-비트 폭의 시냅스 가중치들은 플러스 및 마이너스 값들 둘 다를 포함할 수 있다. 이는 종래의 SNN들과 상이하다. 2-비트 폭의 시냅스 가중치들에서의 플러스 값들은 뉴런의 막전위 값을 증가시킬 수 있다. 2-비트 폭의 시냅스 가중치들에서의 마이너스 값들은 뉴런의 막전위 값을 감소시킬 수 있다.
일부 실시예들에서, 스파이크 패킷 내의 스파이크들은 그들의 시냅스 데스티네이션 번호들에 따라 분배될 수 있다. 일부 실시예들에서, 처리 동안, 삼진 시냅틱 가중치들은 스파이크 패킷에 표현된 스파이크들과 논리 AND 연산된다. 스파이크 패킷들 내의 스파이크들은 플러스 스파이크 비트들을 사용하여 표현될 수 있다. 스파이크 패킷 내의 스파이크의 부재는 0를 사용하여 표현될 수 있다. 시냅틱 가중치들은 마이너스 또는 플러스일 수 있다. 마이너스 시냅틱 가중치는 뉴런의 카운터(109)(예를 들어, 막전위 레지스터)를 감분시킬 수 있다. 플러스 시냅틱 가중치는 뉴런의 카운터(109)(예를 들어, 막전위 레지스터)를 증분시킬 수 있다.
일부 실시예들에서, 학습 프로세스는 뉴런의 학습 임계 값(예를 들어, 학습 임계 값 레지스터(111) 내의 값)에 도달할 때 입력을 검사함으로써 구현될 수 있다. 뉴런의 학습 임계 값은 초기에 매우 낮은 값으로 설정될 수 있다. 학습 임계 값은 뉴런이 학습하고 더 많은 시냅틱 가중치들이 매칭됨에 따라 증가할 수 있다. 일부 실시예들에서, 학습 프로세스는 미사용 시냅틱 가중치들(예를 들어, 스파이크가 발생하지 않은 위치에서의 플러스 시냅틱 가중치)과 미사용 스파이크들(예를 들어, 0의 값을 갖는 시냅틱 가중치에 대한 위치에 있는 스파이크 패킷에서의 스파이크)의 스와핑을 수반할 수 있다. 미사용 시냅틱 가중치들은 미사용 스파이크들을 포함하는 위치들로 스와핑될 수 있다.
일부 실시예들에서, 뉴런 막전위 값(예를 들어, 카운터(109)에 의해 표현됨)이 스파이킹 임계 값(예를 들어, 스파이킹 임계 값 레지스터(112) 내의 값)을 초과하면, 스파이크가 생성된다. 스파이크는 로컬 버스 상에 배치된다.
도 6a는 일부 실시예들에 따른, 스파이크들을 스파이크 패킷으로 패킷타이징하는 예이다. 도 6a에서, 스파이크 입력 버퍼(601)(예를 들어, 스파이크 입력 버퍼(103)에 상당함)는 스파이크 디코딩 회로에 의해 처리된 스파이크들을 로컬 버스로부터 수신한다. 패킷타이저(602)는 스파이크들의 시냅스 인덱스 번호들에 따라 스파이크 입력 버퍼(601) 내의 스파이크들을 스파이크 패킷(603)으로 소팅할 수 있다. 예를 들어, 도 6a에서, 수신되는 스파이크 시퀀스는 1, 6, 23, 1, 19, 18이다. 본 기술분야의 통상의 기술자에 의해 이해되는 바와 같이, 스파이크 시퀀스는 도 6a에 도시된 적은 수의 스파이크들보다 훨씬 클 수 있다. 예를 들어, 스파이크 시퀀스는 다수의 시냅스들에 분배되는 수천 개의 스파이크들을 포함할 수 있다.
도 6b는 일부 실시예들에 따른, 도 6a의 스파이크 패킷(603)의 예시적인 표현이다. 도 6b에서, 스파이크 패킷(603)은 스파이크 입력 버퍼(601)로부터의 소팅된 스파이크들을 포함한다. 스파이크 패킷(603)에서, 위치들 1, 6, 18, 19 및 23은 강조되어 그것들이 로직 '1' 값들을 포함함을 지시한다. 스파이크 패킷(603) 내의 나머지 위치들은 0들을 포함한다(예를 들어, 스파이크의 부재를 지시함).
일부 실시예들에서, 스파이크들은 시냅스 가중치들이 메모리(예를 들어, 시냅틱 가중치 저장소(105))에 위치하는 것과 동일한 순서로 조직될 수 있다. 이는 막전위 카운터(예를 들어, 카운터(109))가 증분되는지 또는 감분되는지를 결정하기 위해 시냅틱 가중치 값들과 입력되는 스파이크 패킷들 내의 스파이크들 사이에 AND 연산들을 수행하는 것을 가능하게 할 수 있다. 시냅틱 가중치 값이 0인 위치에서 스파이크가 발생할 때 카운터는 그 비트 위치에 대해 변경되지 않는다.
도 7은 일부 실시예들에 따른, 막전위 값(예를 들어, 카운터(109))이 증분되는지 또는 감분되는지를 선택하는 방법의 예이다. 도 7에서, 스파이크 패킷(701)과 가중치 레지스터(702)(예를 들어, 가중치 레지스터(702)는 가중치 레지스터(106)에 상당한다) 사이에 논리 AND 연산이 수행된다. 도 7에서, 스파이크 패킷(701)의 스파이크 비트들 1, 6, 18, 19, 및 23이 강조되어 그것들이 로직 '1' 값들을 포함함을 지시한다(예를 들어, 스파이크의 존재를 지시함). 스파이크 패킷(701) 내의 나머지 위치들은 0들을 포함한다(예를 들어, 스파이크의 부재를 지시함).
가중치 레지스터(702)는 플러스 또는 마이너스 값들을 지시하는 로직 비트들을 포함할 수 있다. 도 7에서, 비트 1, 4, 5, 14 및 22는 플러스 값을 포함하는 반면 비트 18은 마이너스 값을 포함한다. 플러스 값들은 흥분성 액션을 지시할 수 있는 반면 마이너스 값들은 억제성 액션을 지시할 수 있다. 가중치 레지스터(702) 내의 비트들은 흥분성에 대해서는 EXC로 그리고 억제성 가중치들에 대해서는 INH로 라벨링될 수 있다. 가중치 레지스터(702) 내의 비트들과 스파이크 패킷(701) 내의 비트들 사이에 논리 AND가 수행된다. 따라서 위치 1에서 발생한 스파이크는 뉴런의 막전위 값(예를 들어, 카운터(109))을 증분시킨다. 대조적으로, 위치 18에서 발생한 스파이크는 뉴런의 막전위 값(예를 들어, 카운터(109))을 감분시킨다.
도 7은 일부 실시예들에 따른, 스파이크 시간 의존적인 가소성(STDP) 학습 방법의 예이다. STDP 학습에서, 출력 이벤트/스파이크에 기여하는 스파이크들은 그들의 대표적인 시냅틱 가중치들이 강화될 수 있는 반면, 출력 이벤트/스파이크에 기여하지 않는 스파이크들은 그들의 시냅틱 가중치들이 약화될 수 있다.
일부 실시예들에서, STDP 학습 방법은 미사용 시냅틱 가중치들이 미사용 스파이크들을 포함하는 위치들로 스와핑되도록 수정된다. 예를 들어, 0이고, 스파이크를 수신한 시냅틱 가중치들은 로직 '1'이고 어떠한 스파이크도 수신하지 않은 시냅틱 가중치들과 스와핑된다.
일부 실시예들에서, '1'인 스파이크 패킷 내의 스파이크 비트와 0인 시냅틱 가중치에 대해 논리 AND 연산이 수행될 때, 결과는 0이다. 이는 '미사용 스파이크'라고 지칭될 수 있다. '0'인 스파이크 패킷 내의 스파이크 비트와 '1'인 시냅틱 가중치에 대해 논리 AND 연산이 수행될 때, 결과는 0이다. 이는 '미사용 시냅틱 가중치'라고 지칭될 수 있다. 학습 회로(예를 들어, 가중치 스와퍼(113))는 미사용 스파이크들이 발생하는 곳에서 랜덤하게 선택된 미사용 시냅틱 가중치들을 스와핑할 수 있다.
도 7에서, 스파이크 패킷(701) 내의 위치 1은 사용된 스파이크를 포함한다. 시냅틱 가중치들(702) 내의 위치 1은 사용된 가중치를 포함한다. 이는 뉴런의 막전위 값(예를 들어, 카운터(109))의 증분을 야기할 수 있다.
시냅틱 가중치들(702)의 위치 4 및 위치 5는 미사용 시냅틱 가중치들을 포함한다. 이러한 시냅틱 가중치들은 스와핑을 위한 후보들이다. 스파이크 패킷(701)의 위치 6은 미사용 스파이크를 포함한다. 다시 말해서, 스파이크 패킷(701)의 위치 6은 1을 포함하지만, 시냅틱 가중치들(702)의 위치 6은 0를 포함한다. 미사용 시냅틱 가중치가 이 위치로 스와핑될 수 있다. 시냅틱 가중치들(702)의 위치 14는 미사용 시냅틱 가중치를 포함한다. 스파이크 패킷(701)의 위치 18은 사용된 스파이크를 포함하고, 시냅틱 가중치들(702)의 위치 18은 사용된 시냅틱 가중치를 포함한다(이 경우 억제성). 이는 뉴런의 막전위 값(예를 들어, 카운터(109))의 감분을 야기할 수 있다. 스파이크 패킷(701)의 위치 19는 미사용 스파이크를 포함한다. 시냅틱 가중치들(702)의 위치 22는 미사용 시냅틱 가중치를 포함한다. 스파이크 패킷(701)의 위치 23은 미사용 스파이크를 포함한다.
이 STDP 학습 방법은 생물학적 뇌에서 발생하는 학습에 영감을 받는다. 일부 실시예들에서, STDP 학습 방법의 수정된 형태가 학습을 수행하기 위해 이용된다. 이 수정된 방법은 생물학적 뉴런이 학습하는 메커니즘과 유사하다.
일부 실시예들에서, 스파이킹 뉴런 회로는 그의 입력들이 그의 막전위 값(예를 들어, 카운터(109))을 임계 값까지 구동할 때 스파이크를 방출한다. 이는, 뉴런이 임계 값으로 구동되어 스파이크를 생성할 때, 그의 최근에 활성화된 입력들로부터의 연결들은 강화되는 반면, 다수의 그의 다른 연결들은 약화된다는 것을 의미할 수 있다. 이는 뉴런들이 반복적으로 보는 입력들의 패턴들에 반응하도록 학습하는 것을 야기할 수 있고, 그에 의해 입력 데이터세트를 특성화하는 특징들을 자율적으로 학습한다.
일부 실시예들에서, 학습 임계 값들의 변화에 의해 야기되는 뉴런들 사이의 자연 경쟁과 같은 이 STDP 방법의 다른 속성들에 따라, 레이어 내의 뉴런들의 집단은 입력 특징 공간의 넓은 커버리지를 학습한다. 따라서, 주어진 입력에 대한 뉴런들의 집단의 반응은 존재하는 특징에 관한 정보를 반송한다.
뇌에서, 감각 처리는 전형적으로 계층적이고, 일련의 레이어들에 걸쳐 발생한다. 초기 레이어들은 간단한 특징들에 관한 정보를 추출하고, 상위 레이어들은 그러한 특징들의 조합들에 반응하도록 학습하고, 따라서 그들의 반응들은 더 복잡한 형상들 또는 객체들에 대해 더 선택적일 뿐만 아니라, 그것들이 공간 위치 또는 배향에 대해 불변이라는 점에서 더 일반적이다.
일부 실시예들에서, 이러한 수정된 STDP 학습 방법은 완전히 비지도(unsupervised)이다. 이는 뉴럴 네트워크들에서 사용되고 있는 종래의 다양한 지도 훈련(supervised training) 방법들과는 상이하다. 이는 본 명세서의 실시예가 라벨링되지 않은 데이터세트로 제시될 수 있고, 임의의 추가적인 정보 없이, 데이터에 존재하는 상이한 특징들에 반응하도록 학습할 수 있다는 것을 의미한다. 학습은 진행중인 프로세스일 수 있다.
일부 실시예들에서, 새로운 부류가 이미 훈련된 데이터세트에 추가될 때 전체 뉴럴 네트워크(예를 들어, 뉴런 패브릭(201))을 재훈련시킬 필요가 없다. 이는 파괴적 망각의 기술적 문제를 제거할 수 있다. 학습이 계속되도록 허용함으로써, 네트워크에 의해 이미 인식된 특징들에 새로운 부류들이 추가될 수 있다.
비지도 학습은 특징들을 추출할 수 있다. 그러나, 라벨링된 데이터의 부재시에, 비지도 학습은 그의 출력을 직접 '라벨링'할 수 없다. 분류 태스크에서, 뉴럴 네트워크(예를 들어, 뉴런 패브릭(201))은 자극 데이터 세트에 존재하는 부류들을 구별하는 특징들의 세트를 학습할 수 있다. 그 후 특징들을 나타내는 반응들을 입력 라벨들에 링크하는 방법을 적용하는 것은 사용자에게 달려 있을 수 있다.
도 8은 일부 실시예들에 따른, STDP 학습 방법의 가중치 스와핑 단계를 예시한다. 도 8은 '미사용 시냅틱 가중치들'이 '미사용 입력들'로 스와핑되고 그에 의해 미래에 동일하거나 유사한 입력 스파이크 패턴에 대한 뉴런들의 반응을 강화하는 수정된 STDP 학습 프로세스에서의 다음 단계의 예를 보여준다.
도 8에서, 스파이크 패킷(801)의 스파이크 비트들 1, 6, 18, 19, 및 23이 강조되어 그것들이 로직 '1' 값들을 포함함을 지시한다(예를 들어, 스파이크의 존재를 지시함). 스파이크 패킷(801) 내의 나머지 위치들은 0들을 포함한다(예를 들어, 스파이크의 부재를 지시함). 시냅틱 가중치들(802)의 비트들 1, 4, 5, 14, 및 22는 '+1' 값들을 포함하는 반면 비트 18은 '-1' 값을 포함한다. 미사용 스파이크들(801)의 비트 19는 스파이크 패킷(801) 내의 미사용 스파이크를 나타낸다. 미사용 시냅틱 가중치들(802)의 비트 5 및 비트 14는 시냅틱 가중치들(802) 내의 미사용 시냅틱 가중치들을 나타낸다. 도 8에서, 새로운 시냅틱 가중치들(805)은 미사용 시냅틱 가중치들(예를 들어, 스파이크가 발생하지 않은 위치에서의 플러스 시냅틱 가중치)과 미사용 스파이크들(예를 들어, 0의 값을 갖는 시냅틱 가중치에 대한 위치에 있는 스파이크 패킷에서의 스파이크)을 스와핑한 결과를 나타낸다. 예를 들어, 새로운 시냅틱 가중치들(805)의 비트 14는 시냅틱 가중치들(802)의 비트 18의 값을 포함하고 그 반대도 마찬가지이다.
도 9는 일부 실시예들에 따른, 스파이킹 완전 연결 뉴럴 프로세서로서 구성된 뉴럴 프로세서에서의 컨볼루션을 예시한다. 예를 들어, 도 9는 스파이킹 완전 연결 뉴럴 프로세서들로서 구성된 뉴럴 프로세서들에서 사용되는 컨볼루션 레이어들에서의 가중치 스와핑에 의해 학습하는 수정된 STDP 방법을 보여준다.
컨볼루션은 데이터(예를 들어, 이미지)로부터 특징들을 추출하는 목적을 갖는 수학적 연산일 수 있다. 이미지 데이터이든 또는 다른 데이터 유형이든 간에, 2개의 데이터 세트 사이의 컨볼루션의 결과는 제3 데이터 세트이다.
일부 실시예들에서, 컨볼루션은 스파이크들 및 전위 값들에 작용할 수 있다. 각각의 뉴럴 프로세서(예를 들어, 뉴럴 프로세서(208))는 가장 높은 전위 값을 갖는 뉴런을 식별하고 그것을 동일한 레이어 내의 다른 뉴럴 프로세서들에 브로드캐스팅할 수 있다. 일부 실시예들에서, 뉴런의 전위 값이 학습 임계 값(예를 들어, 학습 임계 값 레지스터(111) 내의 값)보다 높다면, 뉴런에 출력하는 뉴런들의 모든 커널들의 시냅틱 가중치들이 업데이트된다. 동일한 이벤트 패킷이 이전 레이어로부터 재송신될 수 있다. 뉴럴 프로세서는 뉴런의 수용 영역 내의 스파이크들에만 영향을 미칠 수 있다. 예를 들어, 도 9에서, 902의 정사각형 내의 영역과 같이. 뉴럴 프로세서(208)는 수용 영역에서 미사용 스파이크들(U로 도시됨) 및 커널들(예를 들어, 커널들(901 및 903))에서 미사용 가중치들(U로 도시됨)을 식별하였다.
일부 실시예들에서, 수정된 STDP 학습 방법은 규칙에 따라 미사용 및 선호 시냅틱 가중치들 사이의 모든 커널들에 걸쳐 스와핑된 비트들의 총 수를 결정할 수 있다. 예를 들어, 규칙은 스와핑된 비트들의 수 = min(스왑들의 수, 미사용 스파이크들의 수, 미사용 가중치들의 수)일 수 있고, 여기서 스왑들의 수는 구성 필드일 수 있다. 이 예에서, min(5, 3, 4) = 3이다. 그 후 수정된 STDP 학습 방법은 모든 커널들에 걸쳐 "스와핑된 비트들의 수" 비트들을 랜덤하게 스와핑할 수 있다. 도 9에서, 3개의 비트가 스와핑된다. 그 후 수정된 STDP 학습 방법은 동일한 레이어의 모든 다른 뉴럴 프로세서들의 필터의 시냅틱 가중치들을 그에 따라 업데이트할 수 있다.
뉴럴 네트워크는 훈련 국면을 가질 수 있다. 훈련 국면은 알려진 샘플들을 이용할 수 있다. 뉴럴 네트워크들은 또한 이전에 사용되지 않았던 샘플들이 인식되는 추론 스테이지를 가질 수 있다. 훈련 국면 동안, 출력 뉴런들은 그들이 가장 많이 반응하는 자극 부류에 따라 라벨링된다. 추론 국면 동안, 입력들은 뉴런들이 가장 많이 반응한 특징들에 따라 라벨링된다. 본 명세서의 실시예들의 비지도 학습 방법은 작은 부분만이 라벨링되어 있는 상당한 데이터세트가 존재하는 경우에 유용할 수 있다. 이 경우, 본 명세서의 실시예들은 전체 데이터세트에 대해 훈련될 수 있고, 그 후에 보다 작은 라벨링된 데이터세트를 사용하여 네트워크 출력들을 라벨링하기 위해 지도 스테이지가 수행된다.
일부 실시예들에서, 지도 학습 알고리즘이 이용될 수 있다. 본 명세서의 실시예들의 추론 컴포넌트는 학습 알고리즘으로부터 완전히 분리 가능할 수 있고, 그것의 빠르고 효율적인 계산의 이익들을 유지한다. 본 명세서의 실시예들은 사용자의 선택의 알고리즘을 이용하여 오프라인으로 학습된 시냅틱 가중치들이 쉽게 업로드될 수 있도록 설계되었다. 네트워크 설계는 이진 또는 삼진 시냅틱 가중치들 및 활성화 레벨들로 제한될 수 있다. 이러한 제약들 내에서 지도 학습을 위한 점점 더 많은 수의 제3자 기법들이 존재한다.
비지도 학습이, 일부 스테이지에서 지도의 도움을 받아, 이러한 태스크들에 대해 잘 수행할 수 있지만, 지도 학습 방법이 이점을 갖는 일부 경우들이 있을 것이다. 그러나, 동등하게, 비지도 학습은 지도 학습 방법에 대해 불가능한 태스크들 - 예를 들어, 지도를 위해 사용할 라벨링된 결과가 없는 데이터에서의 미지의 그리고 예기치 않은 패턴들을 찾는 것 - 을 수행하는 능력을 갖는다. 이러한 접근법들은 놓치기 쉽다.
도 10은 일부 실시예들에 따른, 깊이 1의 픽셀들의 8x8 행렬에서의 컨볼루션의 상징적 표현을 예시한다. 도 10에서, 5x5 컨볼루션 필터(1002)의 예가 적용된다. 도 10에서, 필터(1002)는 원래의 입력의 '스틱 아웃(stick out)'이 허용된다. 도 10에서, 이는 원래의 입력(1001)을 0들로 패딩함으로써 행해질 수 있다.
다음 4개의 컨볼루션 유형이 지원된다: 유효, 동일, 완전 및 패딩. 도 10은 결과적인 컨볼루션들을 예시한다. '완전(full)' 컨볼루션(예를 들어, 완전 컨볼루션(1003))은 출력 컨볼루션 크기를 4의 패딩으로 최대로 증가시킬 수 있다. '동일' 컨볼루션(예를 들어, 동일 컨볼루션(1004))은 원래의 입력 차원들(예를 들어, 8x8x1)과 동일한 출력 컨볼루션 크기를 생성하기 위해 2의 패딩을 이용할 수 있다. '유효' 컨볼루션(예를 들어, 유효 컨볼루션(1005))은 0 패딩을 이용할 수 있고 원래의 입력 차원보다 작은 출력 컨볼루션 크기를 야기할 수 있다.
일부 실시예들에서, SCNN은 완전 컨볼루션, 동일 컨볼루션, 또는 유효 컨볼루션을 사용하도록 허용될 수 있다. SCNN은 또한 '패딩'이라고 지칭되는 커스텀 컨볼루션 유형을 사용하도록 허용될 수 있다. 프로그래머는 원래의 입력(1001)의 각각의 측면 주위의 패딩을 특정함으로써 패딩 컨볼루션 유형을 지시할 수 있다.
일부 실시예들에서, 상이한 유형의 컨볼루션이 식 2 내지 식 4에 의해 정의될 수 있다. 식 2 내지 식 4는 컨볼루션된 입력의 크기를 원래의 입력 크기 및 필터 크기의 함수로서 정의할 수 있다. 식 2 내지 식 4에서, Iw는 원래의 입력의 폭을 나타낼 수 있고, Cw는 컨볼루션된 입력(예를 들어, 전위 어레이)의 폭을 나타낼 수 있고, kw는 필터의 폭을 나타낼 수 있다.
Figure pct00001
도 11은 일부 실시예들에 따른, 스파이크들의 2개의 채널, 2개의 3x3 역 컨볼루션 커널, 및 결과적인 막전위 값들을 수반하는 컨볼루션의 상징적 표현을 예시한다. 도 11은 스파이크들(1101, 1102)의 2개의 채널을 예시한다. 도 11은 또한, 2개의 3x3 역 컨볼루션 커널(1103 및 1104), 및 결과적인 뉴런 막전위 값들(1105)을 예시한다. 본 실시예의 2-채널 예가 여기에 제시되고, 이들 연산은 프로그래밍된 프로세서보다는 스파이킹 뉴런 회로를 이용하여 수행된다는 수정이 있다. 먼저, SCNN 프로세서로서 구성된 뉴럴 프로세서에서의 모든 전위들은 0들로 클리어된다. 스파이크 패킷이 들어올 때, 스파이크 패킷의 처리는 영향받은 뉴런 회로들의 막전위 값들이 변하게 한다.
도 12는 일부 실시예들에 따른, 도 11의 채널들(1101 및 1102) 상의 스파이킹 뉴런 회로들에서 생성된 결과적인 스파이크들을 예시한다. 채널(1101)은 행렬에서 '1'들로서 발화한 스파이킹 뉴런 회로들을 예시한다. 채널(1101)에서의 모든 다른 위치들은 0들로 채워진다. 스파이크 맵은 채널들(1101 및 1102)에 대해 도 11에 도시된 2개의 역 커널(1103 및 1104)을 이용하여 컨볼루션되어, 도 11에 도시된 뉴런 막전위 값들(1105)을 야기할 수 있다.
도 13은 일부 실시예들에 따른, 스파이킹 뉴럴 네트워크 컨볼루션 연산을 예시한다. 도 13은 2개의 필터(예를 들어, 필터들(1304 및 1305))에 의해 처리되는 3개의 채널(예를 들어, 채널들(1301, 1302, 및 1303))을 갖는 입력(예를 들어, 이미지)을 보여준다. 필터들(1304 및 1305) 내의 공백 엔트리들은 0 값들에 대응할 수 있다.
도 13에서, 필터(1304)는 5 X 5 X 3(예를 들어, filterWidth × filterHeight × channelNumber)의 차원수를 갖는다. 필터(1304)는 입력 이미지의 좌표 (2, 2)에 중심을 둔다. 입력 이미지의 좌측 상단 코너는 좌표 (0, 0)을 갖는다. 필터의 폭 및 높이는 입력 이미지보다 작을 수 있다. 본 기술분야의 통상의 기술자에 의해 이해되는 바와 같이, 필터는 종종 3 X 3, 5 X 5, 또는 7 X 7 구성을 갖는다.
일부 실시예들에서, 필터는 입력의 특정 채널에 대응하는 가중치들의 상이한 세트들을 가질 수 있다. 가중치들의 각각의 세트는 필터의 커널이라고 지칭될 수 있다. 도 13에서, 필터(1304)는 3개의 커널(예를 들어, 커널들(1306, 1307, 및 1308))을 갖는다. 각각의 필터 내의 커널들의 수는 입력 내의 채널들의 수와 매칭될 수 있다. 모든 입력 이벤트는 (x, y) 좌표 및 채널 좌표를 가질 수 있다.
일부 실시예들에서, 컨볼루션 연산의 결과들은 전위 어레이 내의 단일 엔트리로 합산된다. 도 13에서, 점선 박스들은 입력들에 걸쳐 필터(1304) 컨볼루션들이 발생하는 곳을 보여준다. 필터(1304)에 대한 전위 어레이(1309) 내의 더 작은 점선 박스는 이들 입력이 합산되는 곳을 보여준다.
도 13에서, 필터(1304)에 의해 수행되는 컨볼루션 연산은 3D 내적(dot product)으로서 기술될 수 있다. 점선 박스는 필터(1304)가 입력과 정렬되는 곳을 보여준다. 3D 내적은 x, y 및 채널에 걸쳐 합산되고 이 스칼라 합을 전위 어레이(또는 활성화 맵)라고 불리는 제3 행렬에 배치한다. 도 13에서, 전위 어레이(1309)는 필터(1304)에 대한 전위 어레이를 나타낸다. 본 기술분야의 통상의 기술자에 의해 이해되는 바와 같이, 전위 어레이의 각각의 요소는 뉴런(예를 들어, 스파이킹 뉴런 회로)의 막전위 값으로 간주될 수 있다.
도 13에서, 전위 어레이들(1309 및 1310)은 필터들(1304 및 1305)에 대한 전위 어레이들을 나타낸다. 점선 박스는 현재 컨볼루션의 결과를 보여준다. 전위 어레이의 차원수는 뉴런들(예를 들어, 스파이킹 뉴런 회로들)의 총 수를 정의할 수 있다. 도 13에서, 필터들(1304 및 1305) 각각은 9개의 뉴런을 시뮬레이션한다. 각각의 필터(1304 및 1305)는 3개의 입력 채널 내의 상이한 x-y 위치에 중심을 둘 수 있다. 도 13에서의 이러한 컨볼루션의 예는 입력 이미지 내의 요소들에 대한 이진 값들 및 필터들(1304 및 1305) 내의 가중치들을 보여준다. 그러나, 본 기술분야의 통상의 기술자에 의해 이해되는 바와 같이, 입력 이미지 내의 요소들 및 필터들(1304 및 1305) 내의 가중치들은 플러스 및 마이너스 부동 소수점 값들을 포함할 수 있다.
일부 실시예들에서, 식 1을 사용하여 이산 컨볼루션(discrete convolution)이 수행될 수 있다. 식 1에서, f는 입력을 나타낼 수 있고 g는 필터(예를 들어, 필터(1304))를 나타낼 수 있다. 본 기술분야의 통상의 기술자에 의해 이해되는 바와 같이, 식 1은 각각의 값에 대한 상이한 이미지 위치에 중심을 둔 내적을 계산하는 것과 유사하다. 그러나, 본 기술분야의 통상의 기술자에 의해 이해되는 바와 같이, 필터는 각각의 내적에 대한 입력 위에서 '슬라이딩'되기 전에 '플립'될 필요가 있을 수 있다. 컨볼루션 연산은 인덱스들이 필터에서 플립될 것을 요구할 수 있는데 그 이유는 그것이 유용한 수학적 속성이기 때문이다.
Figure pct00002
일부 실시예들에서, 컨볼루션 레이어의 스트라이드(stride)는 필터(예를 들어, 1304)가 후속 내적 연산들 사이에서 얼마만큼 시프트되는지로서 정의될 수 있다. 일부 실시예들에서, 컨볼루션 스트라이드는 1로서 하드-코딩될 수 있다.
도 13에서, 필터들(1304 및 1305)은 컨볼루션 연산 동안 원래의 입력 이미지의 '스틱 아웃'이 전혀 허용되지 않는다. 이러한 유형의 컨볼루션은 '유효' 컨볼루션이라고 지칭될 수 있다. 이러한 유형의 컨볼루션은 원래의 입력보다 작은 전위 어레이(예를 들어, 전위 어레이들(1309 및 1310))를 야기할 수 있다.
도 14는 일부 실시예들에 따른, 입력 이미지에 8개의 방향성 필터 뉴런 컨볼루션이 적용되는 것의 결과를 예시한다. 도 14에서, 단일 채널을 갖는 고양이를 포함하는 입력 이미지(1401)는, 채널들(1402, 1403, 1404, 1405, 1406, 1407, 1408, 및 1409)을 갖는, 원래의 이미지와 동일한 폭 및 높이 치수들을 갖는 스파이크 맵으로 변환된다.
도 15는 일부 실시예들에 따른, DVS 스파이크 기반 컨볼루션과 프레임 기반 컨볼루션 간의 유사성을 예시한다. 프레임들은 표준 비디오 카메라에 의해 송신되는 프레임들을 지칭할 수 있다. 이벤트들(또는 스파이크들)은 스파이크 또는 이벤트 기반 카메라들에 의해 송신된다. 이벤트 기반 컨볼루션이 각각의 이벤트(또는 스파이크)에서 컨볼루션 연산을 수행하고 결과를 출력 막전위 어레이에 배치할 수 있다. 프레임 기반 컨볼루션(1502)은 전체 이미지에 대해 컨볼루션이 수행되는 고전적인 프레임 기반 컨볼루션을 보여준다. 컨볼루션의 파라미터들 및 결과가 도시되어 있다. 이벤트 기반 컨볼루션(1504)은 (3, 3)에서의 이벤트(또는 스파이크)가 시간 0 나노초(ns)에서 처리되고, 그 후 (2, 3)에서의 이벤트가 시간 10 ns에서 처리되고, 그 후 (3, 3)에서의 다른 이벤트가 20 ns에서 처리되고, 마지막으로 (3, 2)에서의 이벤트가 30 ns에서 처리되는 이벤트 기반 컨볼루션 연산을 보여준다. 각각의 이벤트가 처리된 후의 결과적인 어레이가 커널 위에 도시되어 있다. 최종 결과는 동일하다.
도 16은 일부 실시예들에 따른, YAML 구성 파일(1600)의 예를 예시한다. YAML 파일은 파이썬 프로그래밍 언어의 특징일 수 있다. 일부 실시예들에서, YAML 구성 파일(1600)은 뉴로모픽 집적 회로를 프로그래밍하고 그것을 초기화하여 정의된 애플리케이션에서 이벤트들(또는 스파이크들)을 처리하기 위해 사용될 수 있다. 이벤트는 스파이크의 발생에 의해 지시되고, 이미지에서의 컬러 변환, 측정된 아날로그 값의 증가 또는 감소, 콘트라스트의 변화, 데이터 패킷에서의 특정 데이터의 발생, 또는 다른 실세계 현상을 지시할 수 있다.
일부 실시예들에서, 뉴로모픽 집적 회로, 또는 그의 소프트웨어 시뮬레이션은 8개의 별개의 뉴럴 레이어를 갖는 SCNN에서 CIFAR10 데이터 세트를 처리하도록 YAML 구성 파일(1600)에 의해 구성된다. 제1 레이어(레이어(1602))은 데이터 세트의 해상도와 매칭하기 위해 32x32-비트 조직을 갖는 입력 레이어로서 구성된다. 이 레이어는 픽셀 정보를 스파이크들로 변환할 수 있고 레이어(1604)에 연결된다.
레이어(1604)는 삼진 시냅틱 가중치들을 갖는 컨볼루션 레이어로서 구성된다. 레이어(1604)는 "ConvolutionalTertiary" 레이어 유형으로서 정의된다. 가중치들은 특정된 디렉토리에 존재하는"scnn_conv2_wts.dat"라 불리는 파일로부터 레이어(1604) 내에 미리 로딩될 수 있다. 레이어(1604)는 'FlushingBuffer'를 사용하도록 정의된다. 'FlushingBuffer'는 YAML 구성 파일(1600) 내의 다른 곳에서 정의될 수 있다. 레이어(1604)에 대한 스파이크 패킷 크기는 131,072개의 스파이크로서 정의된다. 이는 깊이가 8인 32x32 픽셀의 하나의 전체 프레임에 상당할 수 있다. 레이어(1604)는 다음 레이어(예를 들어, 레이어(1606))로의 128개의 출력을 갖도록 정의된다. 레이어(1604)는 2 x 2 필드에 걸친 풀링과 함께 3x3 픽셀들의 컨볼루션 크기를 갖도록 정의된다.
SCNN 내의 각각의 컨볼루션 레이어는 유사하게 구성될 수 있다. 마지막 레이어는 레이어가 삼진 시냅틱 가중치들을 갖는 완전 연결 레이어임을 지시하는 유형 "FullyConnectedTernary"일 수 있다. 이 마지막 레이어는 10개의 출력을 가질 수 있다. 이는 CIFAR10 데이터 세트에 포함되는 10개의 부류에 상당할 수 있다. 마지막 레이어는 패킷 크기 1024를 가질 수 있다. 이는 이전의 컨볼루션 레이어에서 반환되는 특징들의 수에 상당할 수 있다.
일부 실시예들에서, YAML 구성 파일(1600)은 뉴로모픽 집적 회로의 초기화 동안 처리될 수 있다. 컨스트럭터 태스크(constructor task)가 YAML 구성 파일(1600)에 특정된 파라미터들로부터 파라미터 객체를 생성할 수 있다. 컨스트럭터 태스크는 YAML 구성 파일(1600) 내의 각각의 파라미터 객체에 대해 단일 레이어를 할당할 수 있다. 각각의 레이어는 그의 특정 파라미터들로 생성될 수 있다. 모든 레이어들에 걸쳐 순차적으로 반복하기 위해 데이터 구조가 사용될 수 있다. 버퍼링 유형 객체가 SCNN 내의 각각의 레이어에 대해 생성되고 초기화될 수 있다. 다음 레이어로의 입력 신호들 및 출력들에 연결될 수 있는, 입력 레이어를 제외하고, 각각의 레이어는 초기화되고 스캔 체인으로서 조직되는 레지스터들을 통해 이전 레이어들에 연결될 수 있다. 레이어 초기화 동안, 연결 리스트, 가중치 벡터 어레이, 및 전위 어레이가 초기화된다. 연결 리스트는 어느 뉴런 회로들이 연결되는지에 관한 정보를 포함할 수 있다. SCNN 내의 각각의 뉴런 회로는, 시냅틱 가중치 값들을 포함하는, 정의된 수의 시냅스들을 가질 수 있다. 각각의 뉴런의 막전위 값은 해당 뉴런 회로에 연결되고 스파이크 패킷 내의 스파이크에 의해 지정되는 모든 시냅스 가중치 벡터들의 합으로서 정의될 수 있다.
도 17은 일부 실시예들에 따른, 각각의 뉴런 회로 및 뉴런 회로들의 각각의 레이어의 구성 및 연결성을 정의하는 스캔 체인을 포함하는 구성 레지스터들을 예시한다. 도 17은 일부 실시예들에 따른, 각각의 뉴런 회로 및 뉴런 회로들의 각각의 레이어의 구성 및 연결성을 정의하는 스캔 체인을 포함하는 구성 레지스터들을 예시한다. 구성 데이터는 처리 시퀀스를 구성하기 위해 뉴럴 프로세서들에 순차적 방식으로 전송될 수 있다.

Claims (24)

  1. 뉴로모픽 집적 회로로서,
    입력 데이터로부터 스파이크들을 생성하도록 구성된 스파이크 변환기;
    상기 스파이크들 및 뉴럴 네트워크 구성에 기초하여 태스크를 수행하도록 구성된 복수의 스파이킹 뉴런 회로를 포함하는 뉴럴 프로세서를 포함하는 재구성 가능한 뉴런 패브릭;
    상기 뉴럴 네트워크 구성을 포함하는 메모리 - 상기 뉴럴 네트워크 구성은 전위 어레이 및 복수의 시냅스를 포함하고, 상기 뉴럴 네트워크 구성은 상기 복수의 스파이킹 뉴런 회로와 상기 복수의 시냅스 사이의 연결들을 정의하고, 상기 전위 어레이는 상기 복수의 스파이킹 뉴런 회로에 대한 막전위 값들을 포함하고, 상기 복수의 시냅스는 대응하는 시냅틱 가중치들을 가짐 -; 및
    구성 파일에 기초하여 상기 뉴럴 네트워크 구성을 수정하도록 구성된 프로세서를 포함하는, 뉴로모픽 집적 회로.
  2. 제1항에 있어서, 상기 시냅틱 가중치들의 각각의 시냅틱 가중치는 -1, 0, 및 1로 구성되는 그룹으로부터 선택되는 가중치 값을 갖는, 뉴로모픽 집적 회로.
  3. 제1항에 있어서, 상기 뉴로모픽 집적 회로는:
    상기 스파이크 변환기로부터의 상기 스파이크들을 저장하도록 구성된 스파이크 입력 버퍼; 및
    상기 스파이크 입력 버퍼 내의 상기 스파이크들을 나타내는 스파이크 비트들을 포함하는 스파이크 패킷을 생성하도록 구성된 패킷타이저를 추가로 포함하고, 상기 스파이크 패킷 내의 각각의 스파이크 비트는 상기 복수의 시냅스 중의 시냅스에 대응하는, 뉴로모픽 집적 회로.
  4. 제3항에 있어서, 상기 스파이크 패킷 내의 각각의 스파이크 비트는 디지털 비트를 사용하여 표현되는, 뉴로모픽 집적 회로.
  5. 제3항에 있어서, 상기 복수의 스파이킹 뉴런 회로 중의 스파이킹 뉴런 회로는:
    상기 스파이크 패킷 내의 제1 스파이크 비트와 상기 제1 스파이크 비트에 대응하는 제1 시냅스의 제1 시냅틱 가중치에 제1 논리 AND 함수를 적용하고 - 상기 제1 시냅틱 가중치는 1의 값을 갖고, 상기 제1 논리 AND 함수를 적용하는 것은 논리 1을 출력함 -;
    상기 논리 1을 출력하는 상기 제1 논리 AND 함수를 적용하는 것에 응답하여 상기 스파이킹 뉴런 회로와 연관된 막전위 값을 증분시키도록 구성되는, 뉴로모픽 집적 회로.
  6. 제3항에 있어서, 상기 복수의 스파이킹 뉴런 회로 중의 스파이킹 뉴런 회로는:
    상기 스파이크 패킷 내의 상기 제1 스파이크 비트와 상기 제1 스파이크 비트에 대응하는 제2 시냅틱 가중치에 제2 논리 AND 함수를 적용하고 - 상기 제2 시냅틱 가중치는 마이너스 값을 갖고, 상기 제2 논리 AND 함수를 적용하는 것은 논리 1을 출력함 -;
    상기 논리 1을 출력하는 상기 제2 논리 AND 함수를 적용하는 것에 응답하여 상기 스파이킹 뉴런 회로와 연관된 막전위 값을 감분시키도록 구성되는, 뉴로모픽 집적 회로.
  7. 제3항에 있어서, 상기 뉴럴 프로세서는:
    상기 복수의 스파이킹 뉴런 회로에 대한 상기 막전위 값들 중에서 최고 값인 막전위 값을 갖는 스파이킹 뉴런 회로에 기초하여 상기 복수의 스파이킹 뉴런 회로 중의 스파이킹 뉴런 회로를 선택하고;
    상기 선택된 스파이킹 뉴런 회로의 막전위 값이 상기 스파이킹 뉴런 회로와 연관된 학습 임계 값에 도달했다고 결정하고;
    상기 선택된 스파이킹 뉴런 회로의 막전위 값이 상기 선택된 스파이킹 뉴런 회로와 연관된 학습 임계 값에 도달했다는 결정에 기초하여 스파이크 시간 의존적인 가소성(Spike Time Dependent Plasticity, STDP) 학습 기능을 수행하도록 구성되는, 뉴로모픽 집적 회로.
  8. 제7항에 있어서, 상기 STDP 학습 기능을 수행하기 위해, 상기 뉴럴 프로세서는:
    상기 스파이크 패킷 내의 제1 스파이크 비트가 미사용 스파이크를 나타낸다고 결정하고 - 상기 제1 스파이크 비트는 상기 복수의 시냅스 중의 제1 시냅스에 대응하고, 상기 제1 스파이크 비트는 1의 값을 갖고, 상기 제1 시냅스의 제1 시냅틱 가중치는 0의 값을 가짐 -;
    상기 복수의 시냅스 중의 제2 시냅스의 제2 시냅틱 가중치가 미사용 시냅틱 가중치라고 결정하고 - 상기 제2 시냅틱 가중치는 상기 스파이크 패킷 내의 제2 스파이크 비트에 대응하고, 상기 제2 시냅틱 가중치는 1의 값을 갖고, 상기 스파이크 패킷 내의 상기 제2 스파이크 비트는 0의 값을 가짐 -;
    상기 제2 시냅틱 가중치의 값을 상기 제1 스파이크의 값과 스와핑하도록 구성되는, 뉴로모픽 집적 회로.
  9. 제1항에 있어서, 상기 복수의 스파이킹 뉴런 회로 중의 스파이킹 뉴런 회로는:
    상기 스파이킹 뉴런 회로와 연관된 막전위 값이 상기 스파이킹 뉴런 회로의 스파이킹 임계 값에 도달했다고 결정하고;
    상기 스파이킹 뉴런 회로의 막전위 값이 상기 스파이킹 임계 값에 도달했다는 결정에 기초하여 출력 스파이크를 생성하도록 구성되는, 뉴로모픽 집적 회로.
  10. 제9항에 있어서, 출력 스파이크 버퍼 및 네트워크 온 칩(NoC) 버스를 추가로 포함하고, 상기 복수의 스파이킹 뉴런 회로 중의 스파이킹 뉴런 회로는 상기 NoC 버스를 통한 송신을 위해 상기 출력 스파이크 버퍼에 상기 출력 스파이크를 삽입하도록 구성되는, 뉴로모픽 집적 회로.
  11. 제1항에 있어서, 상기 재구성 가능한 뉴런 패브릭은 컨볼루션 연산을 사용하여 상기 태스크를 수행하도록 구성되는, 뉴로모픽 집적 회로.
  12. 제1항에 있어서, 상기 뉴럴 네트워크 구성을 수정하기 위해 상기 프로세서는 상기 구성 파일에 기초하여 상기 복수의 스파이킹 뉴런 회로와 상기 복수의 시냅스 사이의 연결들을 수정하도록 구성되는, 뉴로모픽 집적 회로.
  13. 제1항에 있어서, 상기 구성 파일은 XML(Extensible Markup Language)을 이용하여 정의되는, 뉴로모픽 집적 회로.
  14. 제1항에 있어서, 상기 뉴로모픽 집적 회로는:
    USB(Universal Serial Bus) 인터페이스, 이더넷 인터페이스, CAN(Controller Area Network) 버스 인터페이스, UART(Universal Asynchronous Receiver-Transmitter)를 사용하는 시리얼 인터페이스, PCIe(Peripheral Component Interconnect Express) 인터페이스, 또는 JTAG(Joint Test Action Group) 인터페이스 중 적어도 하나를 포함하는 복수의 통신 인터페이스를 추가로 포함하는, 뉴로모픽 집적 회로.
  15. 제1항에 있어서, 상기 입력 데이터는 픽셀 데이터, 오디오 데이터, 또는 감각 데이터를 포함하는, 뉴로모픽 집적 회로.
  16. 제1항에 있어서, 상기 뉴로모픽 집적 회로는 복수의 센서 인터페이스를 추가로 포함하는, 뉴로모픽 집적 회로.
  17. 방법으로서,
    스파이킹 뉴런 회로에서, 상기 스파이킹 뉴런 회로와 연관된 시냅스들의 세트에 대응하는 스파이크 비트들의 세트를 수신하는 단계;
    상기 스파이킹 뉴런 회로에서, 상기 스파이크 비트들의 세트 중의 제1 스파이크 비트와 상기 시냅스들의 세트 중의 제1 시냅스의 제1 시냅틱 가중치에 제1 논리 AND 함수를 적용하는 단계 - 상기 제1 시냅스는 상기 제1 스파이크 비트에 대응함 -;
    상기 스파이킹 뉴런 회로에서, 상기 적용에 기초하여 상기 스파이킹 뉴런 회로와 연관된 막전위 값을 증분시키는 단계;
    뉴럴 프로세서에서, 상기 스파이킹 뉴런 회로와 연관된 막전위 값이 상기 스파이킹 뉴런 회로와 연관된 학습 임계 값에 도달했다고 결정하는 단계; 및
    상기 뉴럴 프로세서에서, 상기 스파이킹 뉴런 회로의 막전위 값이 상기 스파이킹 뉴런 회로와 연관된 학습 임계 값에 도달했다는 결정에 기초하여 스파이크 시간 의존적인 가소성(STDP) 학습 기능을 수행하는 단계를 포함하는, 방법.
  18. 제17항에 있어서, 상기 스파이크 비트들의 세트는 픽셀 데이터, 오디오 데이터, 또는 감각 데이터를 포함하는 입력 데이터를 나타내는, 방법.
  19. 제17항에 있어서, 상기 시냅스들의 세트는 대응하는 시냅틱 가중치들을 갖고, 각각의 시냅틱 가중치는 -1, 0, 및 1로 구성되는 그룹으로부터 선택되는 가중치 값을 갖는, 방법.
  20. 제17항에 있어서,
    상기 뉴럴 프로세서에 의해, 복수의 스파이킹 뉴런 회로에 대한 막전위 값들 중에서 최고 값을 갖는 스파이킹 뉴런 회로의 막전위 값에 기초하여 상기 복수의 스파이킹 뉴런 회로 중에서 스파이킹 뉴런 회로를 선택하는 단계를 추가로 포함하는, 방법.
  21. 제17항에 있어서,
    상기 스파이킹 뉴런 회로에서, 상기 스파이크 비트들의 세트 중의 상기 제1 스파이크 비트와 상기 시냅스들의 세트 중의 제2 시냅스의 제2 시냅틱 가중치에 제2 논리 AND 함수를 적용하는 단계 - 상기 제2 시냅스는 상기 제1 스파이크 비트에 대응하고, 상기 제2 시냅틱 가중치는 -1의 값을 갖고, 상기 제2 논리 AND 함수를 적용하는 것은 논리 1을 출력함 -; 및
    상기 스파이킹 뉴런 회로에서, 상기 논리 1을 출력하는 상기 제2 논리 AND 함수를 적용하는 것에 응답하여 상기 스파이킹 뉴런 회로와 연관된 막전위 값을 감분시키는 단계를 추가로 포함하는, 방법.
  22. 제17항에 있어서, 상기 STDP 학습 기능을 수행하는 단계는:
    상기 스파이크 패킷 내의 제2 스파이크 비트가 미사용 스파이크를 나타낸다고 결정하는 단계 - 상기 제2 스파이크 비트는 상기 복수의 시냅스 중의 제2 시냅스에 대응하고, 상기 제2 스파이크 비트는 1의 값을 갖고, 상기 제2 시냅스의 제2 시냅틱 가중치는 0의 값을 가짐 -;
    상기 복수의 시냅스 중의 제3 시냅스의 제3 시냅틱 가중치가 미사용 시냅틱 가중치라고 결정하는 단계 - 상기 제3 시냅스는 상기 스파이크 패킷 내의 제3 스파이크 비트에 대응하고, 상기 제3 시냅틱 가중치는 1의 값을 갖고, 상기 스파이크 패킷 내의 상기 제3 스파이크 비트는 0의 값을 가짐 -; 및
    상기 제3 시냅틱 가중치의 값을 상기 제2 스파이크 비트의 값과 스와핑하는 단계를 추가로 포함하는, 방법.
  23. 제17항에 있어서,
    상기 스파이킹 뉴런 회로에서, 상기 스파이킹 뉴런 회로와 연관된 막전위 값이 상기 스파이킹 뉴런 회로의 스파이킹 임계 값에 도달했다고 결정하는 단계; 및
    상기 스파이킹 뉴런 회로에서, 상기 스파이킹 뉴런 회로의 막전위 값이 상기 스파이킹 임계 값에 도달했다는 결정에 기초하여 출력 스파이크를 생성하는 단계를 추가로 포함하는, 방법.
  24. 제24항에 있어서,
    상기 스파이킹 뉴런 회로에 의해, 네트워크 온 칩(NOC) 버스로의 송신을 위해 출력 스파이크 버퍼에 출력 스파이크 비트를 삽입하는 단계를 추가로 포함하는, 방법.
KR1020217016728A 2018-11-01 2019-10-31 개선된 스파이킹 뉴럴 네트워크 KR20210098992A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862754348P 2018-11-01 2018-11-01
US62/754,348 2018-11-01
PCT/US2019/059032 WO2020092691A1 (en) 2018-11-01 2019-10-31 An improved spiking neural network

Publications (1)

Publication Number Publication Date
KR20210098992A true KR20210098992A (ko) 2021-08-11

Family

ID=70458523

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217016728A KR20210098992A (ko) 2018-11-01 2019-10-31 개선된 스파이킹 뉴럴 네트워크

Country Status (7)

Country Link
US (2) US11468299B2 (ko)
EP (1) EP3874411A4 (ko)
JP (1) JP2022509754A (ko)
KR (1) KR20210098992A (ko)
CN (2) CN113537471B (ko)
AU (2) AU2019372063B2 (ko)
WO (1) WO2020092691A1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022509754A (ja) 2018-11-01 2022-01-24 ブレインチップ,インコーポレイテッド 改良されたスパイキングニューラルネットワーク
US11204740B2 (en) * 2018-12-04 2021-12-21 Electronics And Telecommunications Research Institute Neuromorphic arithmetic device and operating method thereof
US20200401876A1 (en) * 2019-06-24 2020-12-24 Washington University Method for designing scalable and energy-efficient analog neuromorphic processors
CN112766511A (zh) * 2019-11-01 2021-05-07 伊姆西Ip控股有限责任公司 用于模型自适应的方法、设备以及机程序产品
KR20210063721A (ko) * 2019-11-25 2021-06-02 삼성전자주식회사 뉴로모픽 장치 및 이를 포함하는 뉴로모픽 시스템
EP4081954A4 (en) * 2019-12-27 2023-04-05 Micron Technology, Inc. NEUROMORPHIC STORAGE DEVICE AND METHOD
WO2021138329A1 (en) 2019-12-30 2021-07-08 Micron Technology, Inc. Memory device interface and method
US11538508B2 (en) 2019-12-31 2022-12-27 Micron Technology, Inc. Memory module multiple port buffer techniques
US11176043B2 (en) * 2020-04-02 2021-11-16 International Business Machines Corporation Distributed memory-augmented neural network architecture
US20220143820A1 (en) * 2020-11-11 2022-05-12 Sony Interactive Entertainment Inc. Domain adaptation for simulated motor backlash
FR3123748A1 (fr) * 2021-06-04 2022-12-09 Commissariat A L'energie Atomique Et Aux Energies Alternatives Apprentissage automatique sans annotation ameliore par regroupements adaptatifs en ensemble ouvert de classes
CN113902106B (zh) * 2021-12-06 2022-02-22 成都时识科技有限公司 脉冲事件决策装置、方法、芯片及电子设备
WO2023158352A1 (en) * 2022-02-21 2023-08-24 Telefonaktiebolaget Lm Ericsson (Publ) Communication of spiking data over a wireless communication network
WO2023163619A1 (en) * 2022-02-22 2023-08-31 Telefonaktiebolaget Lm Ericsson (Publ) Communication of spiking data on radio resources
CN114692681B (zh) * 2022-03-18 2023-08-15 电子科技大学 基于scnn的分布式光纤振动及声波传感信号识别方法
WO2023250092A1 (en) * 2022-06-22 2023-12-28 Brainchip, Inc. Method and system for processing event-based data in event-based spatiotemporal neural networks
WO2023250093A1 (en) * 2022-06-22 2023-12-28 Brainchip, Inc. Method and system for implementing temporal convolution in spatiotemporal neural networks
CN116030535B (zh) * 2023-03-24 2023-06-20 深圳时识科技有限公司 手势识别方法及装置、芯片和电子设备

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10410117B2 (en) * 2008-09-21 2019-09-10 Brainchip, Inc. Method and a system for creating dynamic neural function libraries
US8250011B2 (en) * 2008-09-21 2012-08-21 Van Der Made Peter A J Autonomous learning dynamic artificial neural computing device and brain inspired system
EP2259214B1 (en) * 2009-06-04 2013-02-27 Honda Research Institute Europe GmbH Implementing a neural associative memory based on non-linear learning of discrete synapses
US9129220B2 (en) 2010-07-07 2015-09-08 Qualcomm Incorporated Methods and systems for digital neural processing with discrete-level synapes and probabilistic STDP
US9269042B2 (en) * 2010-09-30 2016-02-23 International Business Machines Corporation Producing spike-timing dependent plasticity in a neuromorphic network utilizing phase change synaptic devices
US8856055B2 (en) 2011-04-08 2014-10-07 International Business Machines Corporation Reconfigurable and customizable general-purpose circuits for neural networks
US9460387B2 (en) 2011-09-21 2016-10-04 Qualcomm Technologies Inc. Apparatus and methods for implementing event-based updates in neuron networks
US20130325766A1 (en) * 2012-06-04 2013-12-05 Csaba Petre Spiking neuron network apparatus and methods
US9367798B2 (en) * 2012-09-20 2016-06-14 Brain Corporation Spiking neuron network adaptive control apparatus and methods
US20150134582A1 (en) * 2013-11-08 2015-05-14 Qualcomm Incorporated Implementing synaptic learning using replay in spiking neural networks
US20150269482A1 (en) * 2014-03-24 2015-09-24 Qualcomm Incorporated Artificial neural network and perceptron learning using spiking neurons
US11157800B2 (en) * 2015-07-24 2021-10-26 Brainchip, Inc. Neural processor based accelerator system and method
US20170236027A1 (en) * 2016-02-16 2017-08-17 Brainchip Inc. Intelligent biomorphic system for pattern recognition with autonomous visual feature extraction
US10586147B2 (en) 2016-09-22 2020-03-10 Intel Corporation Neuromorphic computing device, memory device, system, and method to maintain a spike history for neurons in a neuromorphic computing environment
EP3324343A1 (en) * 2016-11-21 2018-05-23 Centre National de la Recherche Scientifique Unsupervised detection of repeating patterns in a series of events
US10565500B2 (en) 2016-12-20 2020-02-18 Intel Corporation Unsupervised learning using neuromorphic computing
US20180174042A1 (en) 2016-12-20 2018-06-21 Intel Corporation Supervised training and pattern matching techniques for neural networks
US10846590B2 (en) 2016-12-20 2020-11-24 Intel Corporation Autonomous navigation using spiking neuromorphic computers
US10713558B2 (en) * 2016-12-30 2020-07-14 Intel Corporation Neural network with reconfigurable sparse connectivity and online learning
US11062203B2 (en) 2016-12-30 2021-07-13 Intel Corporation Neuromorphic computer with reconfigurable memory mapping for various neural network topologies
US11295204B2 (en) 2017-01-06 2022-04-05 International Business Machines Corporation Area-efficient, reconfigurable, energy-efficient, speed-efficient neural network substrate
US11151441B2 (en) * 2017-02-08 2021-10-19 Brainchip, Inc. System and method for spontaneous machine learning and feature extraction
US10878313B2 (en) 2017-05-02 2020-12-29 Intel Corporation Post synaptic potential-based learning rule
US11080592B2 (en) * 2017-10-05 2021-08-03 International Business Machines Corporation Neuromorphic architecture for feature learning using a spiking neural network
US11195079B2 (en) * 2017-11-22 2021-12-07 Intel Corporation Reconfigurable neuro-synaptic cores for spiking neural network
JP7167151B2 (ja) 2017-12-19 2022-11-08 インテル コーポレイション スパイキングニューラルネットワークの位相差でシナプス荷重を変化させる装置、システム及び方法
US20190228285A1 (en) * 2018-01-24 2019-07-25 The Regents Of The University Of Michigan Configurable Convolution Neural Network Processor
JP2022509754A (ja) 2018-11-01 2022-01-24 ブレインチップ,インコーポレイテッド 改良されたスパイキングニューラルネットワーク

Also Published As

Publication number Publication date
CN111417963A (zh) 2020-07-14
CN111417963B (zh) 2021-06-22
US20200143229A1 (en) 2020-05-07
AU2021254524A1 (en) 2021-11-11
US11468299B2 (en) 2022-10-11
CN113537471A (zh) 2021-10-22
AU2019372063A1 (en) 2021-06-10
CN113537471B (zh) 2024-04-02
US20230026363A1 (en) 2023-01-26
JP2022509754A (ja) 2022-01-24
AU2021254524B2 (en) 2022-07-28
WO2020092691A1 (en) 2020-05-07
EP3874411A4 (en) 2022-08-03
EP3874411A1 (en) 2021-09-08
AU2019372063B2 (en) 2022-12-01
US11657257B2 (en) 2023-05-23

Similar Documents

Publication Publication Date Title
AU2021254524B2 (en) An improved spiking neural network
AU2020315983B2 (en) Event-based classification of features in a reconfigurable and temporally coded convolutional spiking neural network
Xiao et al. An event-driven categorization model for AER image sensors using multispike encoding and learning
Serrano-Gotarredona et al. ConvNets experiments on SpiNNaker
CN111783973B (zh) 一种面向液体状态机计算的神经形态处理器及设备
Appiah et al. Implementation and applications of tri-state self-organizing maps on FPGA
CN111340194B (zh) 脉冲卷积神经网络神经形态硬件及其图像识别方法
Martinel et al. The evolution of neural learning systems: a novel architecture combining the strengths of NTs, CNNs, and ELMs
Sun et al. Low-consumption neuromorphic memristor architecture based on convolutional neural networks
Thiele et al. A timescale invariant stdp-based spiking deep network for unsupervised online feature extraction from event-based sensor data
CN107992942B (zh) 卷积神经网络芯片以及卷积神经网络芯片操作方法
AU2022287647B2 (en) An improved spiking neural network
AU2023214246A1 (en) Event-based extraction of features in a convolutional spiking neural network
NEPOMSCENE Fish classification based on Convolutional Neural