KR20220071091A - 스파이킹 뉴럴 네트워크를 최적화하는 방법 및 장치 - Google Patents

스파이킹 뉴럴 네트워크를 최적화하는 방법 및 장치 Download PDF

Info

Publication number
KR20220071091A
KR20220071091A KR1020210064885A KR20210064885A KR20220071091A KR 20220071091 A KR20220071091 A KR 20220071091A KR 1020210064885 A KR1020210064885 A KR 1020210064885A KR 20210064885 A KR20210064885 A KR 20210064885A KR 20220071091 A KR20220071091 A KR 20220071091A
Authority
KR
South Korea
Prior art keywords
spike
neural network
snn
spiking neural
floating
Prior art date
Application number
KR1020210064885A
Other languages
English (en)
Other versions
KR102637568B1 (ko
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 KR20220071091A publication Critical patent/KR20220071091A/ko
Application granted granted Critical
Publication of KR102637568B1 publication Critical patent/KR102637568B1/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/08Learning methods
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Image Analysis (AREA)

Abstract

일 실시예에 따른 프로세서에 의해 수행되는 스파이킹 뉴럴 네트워크(spiking neural network, SNN)의 연산 방법은, 스파이킹 뉴럴 네트워크에 포함된 복수의 레이어들 중 대상 레이어에서 입력 스파이크 시퀀스들(input spike sequences)을 수신하는 단계, 대상 레이어 출력들을 스파이크 간 간격이 동등한 출력 스파이크 시퀀스들(output spike sequences)로 변환하는 단계, 및 변환된 출력 스파이크 시퀀스들을 대상 레이어의 다음 레이어로 전파하는 단계를 포함할 수 있다.

Description

스파이킹 뉴럴 네트워크를 최적화하는 방법 및 장치{METHOD AND APPARATUS OF OPTIMIZING SPIKING NEURAL NETWORK}
이하, 스파이킹 뉴럴 네트워크를 최적화하는 기술에 관하여 설명한다.
최근 몇 년 동안, 다양한 유형의 인공 뉴럴 네트워크(artificial neural network, ANN)가 정확도(accuracy)를 높이면서 많은 객체 인식(recognition) 및 이미지 분류 문제들에 대한 효과적인 해결책으로 연구되고 있다. 높은 수준의 정확성을 유지하면서 최소 모델 크기 또는 하드웨어 비용으로 인공 뉴럴 네트워크를 설계하는 것은 어렵다. 인공 뉴럴 네트워크 모델들 중 하나의 모델인 스파이킹 뉴럴 네트워크(spiking neural network, SNN)는 생물학적 신경 시스템(biological neural system)과의 유사성으로 인하여 점점 더 주목을 받고 있다. 스파이킹 뉴럴 네트워크는 더 적은 하드웨어를 필요로 하여 칩 크기 및 전력 소비를 줄이는 것으로 알려져 있다.
일 실시예에 따른 프로세서에 의해 수행되는 스파이킹 뉴럴 네트워크 연산 방법은, 상기 스파이킹 뉴럴 네트워크에 포함된 복수의 레이어들 중 대상 레이어에서 입력 스파이크 시퀀스들(input spike sequences)을 수신하는 단계, 상기 대상 레이어 출력들을 스파이크 간 간격이 동등한 출력 스파이크 시퀀스들(output spike sequences)로 변환하는 단계, 및 상기 변환된 출력 스파이크 시퀀스들을 상기 대상 레이어의 다음 레이어로 전파하는 단계를 포함할 수 있다.
상기 스파이크 시퀀스는, 입력 데이터에 포함될 수 있는 입력 값 범위의 최대 값에 기초하여 결정된 시퀀스 길이(sequence length)를 가질 수 있다.
상기 스파이크 시퀀스는, 복수의 스파이크들을 가지는 경우, 상기 복수의 스파이크들의 각각은 상기 스파이크 시퀀스의 복수의 비트 위치들에서 다른 스파이크의 비트 위치에 대해 동등한 간격을 가지도록 분배될 수 있다.
상기 스파이크 시퀀스들로 변환하는 단계는, 상기 대상 레이어 출력들이 지시하는 복수의 정수값들(integer values) 각각을 주소로하여 대응하는 스파이크 시퀀스가 기록된 룩업 테이블(lookup table)을 로드하는 단계, 및 상기 대상 레이어 출력들 중 하나의 대상 출력에 대하여, 상기 로드된 룩업 테이블에 기초하여 상기 대상 출력이 지시하는 정수값을 주소로 디코딩하여 대응하는 스파이크 시퀀스를 선택하는 단계를 포함할 수 있다.
상기 스파이크 시퀀스들로 변환하는 단계는, 상기 선택된 스파이크 시퀀스에 대하여 스파이크 비율(ratio)을 동일하게 유지하면서 랜덤(random)으로 생성된 비트(bit) 개수만큼 시프트(shift)함으로써 변경된 스파이크 시퀀스를 생성하는 단계를 포함할 수 있다.
일 실시예에 따른 스파이킹 뉴럴 네트워크 연산 방법은, 상기 스파이킹 뉴럴 네트워크의 트레이닝에 기초하여 업데이트된 상기 스파이킹 뉴럴 네트워크의 부동소수점 가중치(weight)들을 클리핑(clipping)하는 단계, 상기 클리핑된 가중치들을 양자화(quantization)하기 위한 최소 비트 수를 목표 정확도(target accuracy)에 기초하여 결정하는 단계, 상기 결정된 최소 비트 수로 클리핑된 가중치를 정수값으로 양자화하는 단계, 및 상기 양자화된 가중치를 상기 스파이킹 뉴럴 네트워크에 적용하는 단계를 더 포함할 수 있다.
상기 클리핑하는 단계는, 상기 대상 레이어에 대한 부동소수점 가중치들의 평균(mean) 및 표준편차(standard deviation)에 기초하여 서로 상이한 양의 한계값 및 음의 한계값을 선택하는 단계, 상기 선택된 양의 한계값에 기초하여 양의 부동소수점 가중치들을 클리핑하고, 상기 선택된 음의 한계값에 기초하여 음의 부동소수점 가중치들을 클리핑하는 단계를 포함할 수 있다.
상기 양자화하는 단계는, 상기 대상 레이어에 대하여 스파이크의 생성에 사용되는 부동 소수점 임계 전압(threshold voltage)을 정수 임계 전압으로 보상(compensate)하는 단계를 포함할 수 있다.
상기 보상하는 단계는, 상기 대상 레이어의 모든 뉴런들 각각에 대하여, 대상 뉴런의 양자화된 정수 가중치들의 합 및 부동 소수점 가중치들의 합(sum)을 산출하고, 상기 산출된 부동 소수점 가중치들의 합에 대한 상기 양자화된 정수 가중치들의 합의 비율을 산출하는 단계, 및 상기 대상 레이어의 모든 뉴런들 각각에 대하여 산출된 비율의 평균(mean)을 부동 소수점 임계 전압에 곱하여 정수 임계 전압을 산출하는 단계를 포함할 수 있다.
일 실시예에 따른 스파이킹 뉴럴 네트워크 연산 장치는, 상기 스파이킹 뉴럴 네트워크에 포함된 복수의 레이어들 중 대상 레이어에서 입력 스파이크 시퀀스들을 수신하고, 상기 대상 레이어 출력들을 스파이크 간 간격이 동등한 출력 스파이크 시퀀스들로 변환하며, 상기 변환된 출력 스파이크 시퀀스들을 상기 대상 레이어의 다음 레이어로 전파하는 프로세서를 포함할 수 있다.
상기 스파이크 시퀀스는, 입력 데이터에 포함될 수 있는 입력 값 범위의 최대 값에 기초하여 결정된 시퀀스 길이를 가질 수 있다.
상기 스파이크 시퀀스는, 복수의 스파이크들을 가지는 경우, 상기 복수의 스파이크들의 각각은 상기 스파이크 시퀀스의 복수의 비트 위치들에서 다른 스파이크의 비트 위치에 대해 동등한 간격을 가지도록 분배될 수 있다.
상기 프로세서는, 상기 대상 레이어 출력들이 지시하는 복수의 정수값들 각각을 주소로하여 대응하는 스파이크 시퀀스가 기록된 룩업 테이블을 로드하고, 상기 대상 레이어 출력들 중 하나의 대상 출력에 대하여, 상기 로드된 룩업 테이블에 기초하여 상기 대상 출력이 지시하는 정수값을 주소로 디코딩하여 대응하는 스파이크 시퀀스를 선택할 수 있다.
상기 프로세서는, 상기 선택된 스파이크 시퀀스에 대하여 스파이크 비율을 동일하게 유지하면서 랜덤으로 생성된 비트 개수만큼 시프트함으로써 변경된 스파이크 시퀀스를 생성할 수 있다.
상기 프로세서는, 상기 스파이킹 뉴럴 네트워크의 트레이닝에 기초하여 업데이트된 상기 스파이킹 뉴럴 네트워크의 부동소수점 가중치들을 클리핑하고, 상기 클리핑된 가중치들을 양자화하기 위한 최소 비트 수를 목표 정확도에 기초하여 결정하며, 상기 결정된 최소 비트 수로 클리핑된 가중치를 정수값으로 양자화하고, 상기 양자화된 가중치를 상기 스파이킹 뉴럴 네트워크에 적용할 수 있다.
상기 프로세서는, 상기 대상 레이어에 대한 부동소수점 가중치들의 평균 및 표준편차에 기초하여 서로 상이한 양의 한계값 및 음의 한계값을 선택하고, 상기 선택된 양의 한계값에 기초하여 양의 부동소수점 가중치들을 클리핑하고, 상기 선택된 음의 한계값에 기초하여 음의 부동소수점 가중치들을 클리핑할 수 있다.
상기 프로세서는, 상기 대상 레이어에 대하여 스파이크의 생성에 사용되는 부동 소수점 임계 전압을 정수 임계 전압으로 보상할 수 있다.
상기 프로세서는, 상기 대상 레이어의 모든 뉴런들 각각에 대하여, 대상 뉴런의 양자화된 정수 가중치들의 합 및 부동 소수점 가중치들의 합(sum)을 산출하고, 상기 산출된 부동 소수점 가중치들의 합에 대한 상기 양자화된 정수 가중치들의 합의 비율을 산출하며, 상기 대상 레이어의 모든 뉴런들 각각에 대하여 산출된 비율의 평균(mean)을 부동 소수점 임계 전압에 곱하여 정수 임계 전압을 산출할 수 있다.
도 1a 및 도 1b는 스파이킹 뉴럴 네트워크의 구조를 나타낸다.
도 2a는 ANN의 뉴런 모델을 나타낸다.
도 2b는 SNN의 뉴런 모델을 나타낸다.
도 3은 일 실시예에 따른 스파이킹 뉴럴 네트워크 연산 장치의 코딩 방식(coding scheme)에 관하여 설명한다.
도 4에서는 일 실시예에 따른 스파이킹 뉴럴 네트워크 연산 장치의 코딩 방식을 스파이킹 뉴럴 네트워크의 구조를 이용하여 설명한다.
도 5는 SNN 모델들에 대하여 BSRC 방법을 사용하여 트레이닝한 경우에 대하여 얻은 테스트 정확도(testing accuracy)를 나타낸다.
도 6은 9 × 9의 MNIST 데이터 세트로 트레이닝된 SNN 모델의 정확도를 히든 레이어의 뉴런 개수에 따라 나타낸다.
도 7은 하나의 히든 레이어가 두개의 히든 레이어로 분할된 구조의 SNN 모델의 정확도를 히든 레이어의 뉴런 개수에 따라 나타낸다.
도 8에서는 일 실시예에 따른 SNN 장치가 가중치를 양자화하는 방법에 관하여 설명한다.
도 9는 SNN의 출력 레이어에 대한 부동 소수점 가중치들을 나타낸다.
도 10은 출력 레이어의 부동 소수점 가중치들에 대하여 클리핑 한계값에 의해 클리핑된 부동 소수점 가중치들을 나타낸다.
도 11은 SNN의 출력 레이어의 클리핑된 부동 소수점 가중치들에 대하여 4 비트로 양자화된 가중치들을 나타낸다.
도 12는 BSRC 코딩 방법을 사용하여 트레이닝된 SNN 모델의 테스트 정확도를 나타낸다.
도 13은 히든 레이어의 크기에 따른 SNN 모델의 테스트 정확도와 네트워크 크기를 나타낸다.
도 14는 가중치 양자화가 적용된 SNN 모델의 테스트 정확도를 나타낸다.
도 15는 SNN 모델에 대한 정확도, 시냅스 수, 및 회로 영역(circuit area)을 나타낸다.
도 16은 일 실시예에 따른 SNN 연산 장치의 구성을 나타낸 블록도이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1a 및 도 1b는 스파이킹 뉴럴 네트워크의 구조를 나타낸다.
스파이킹 뉴럴 네트워크(spiking neural network, SNN)(이하, 'SNN')는 스파이킹 뉴런(spiking neuron), 시냅스(synapse), 및 뉴런과 시냅스 사이의 상호 연결(interconnection)으로 구성된다. 시냅스는 조정 가능한 가중치들(weights)로 모델링 될 수 있다. 시냅스에는 가산형 시냅스(excitatory synapse) 및 저감형 시냅스(inhibitory synapse)가 존재한다. SNN은 완전 연결된 레이어(fully-connected layer)로 구성되는 유형과, 컨볼루션 레이어(convolutional layer) 및 완전 연결된 레이어로 구성되는 유형으로 분류될 수 있다. 완전 연결된 레이어로 구성된 유형의 SNN 모델에서 이전 레이어의 모든 뉴런은 후속 레이어의 모든 뉴런에 완전히 연결된다(fully-connected).
도 1a는 28×28 MNIST 데이터 세트에 대한 m개의 히든 레이어를 포함하는 완전 연결된 SNN의 구조에 관하여 나타낸다. MNIST(modified national institute of standards and technology) 데이터 세트는 단순성(simplicity)으로 인해 다양한 유형의 인공 뉴럴 네트워크(artificial neural network, ANN)(이하, 'ANN')을 테스트하는데 널리 사용되는 벤치 마크(benchmark) 중 하나이다. MNIST 데이터 세트에는 뉴럴 네트워크 모듈 학습 및 테스트를 위해 각각 60,000개 및 10,000개의 손으로 쓴 숫자(handwritten digits) 이미지가 포함되어 있다.
트레이닝(training) 또는 추론(inference) 프로세스는 28×28의 2차원 배열에서 784 크기의 1차원 벡터로 입력 이미지 픽셀을 플래튼(flatten)하는 것으로 시작한다. 입력 이미지를 1차원 벡터로 플래트닝(flattening)한 후, SNN의 입력 레이어는 시간 코딩(temporal coding) 및 레이트 코딩(rate coding)과 같은 다양한 방법을 사용하여 각 입력 픽셀의 정수값(integer value)을 스파이크 신호(spike signal)로 변환할 수 있다. 출력 레이어(output layer)는 MNIST의 클래스를 나타내는 출력의 뉴런으로 구성된다.
도 1b는 9×9 MNIST 데이터 세트에 대한 2개의 히든 레이어를 포함하는 완전 연결된 SNN의 구조에 관하여 나타낸다. 저비용 하드웨어를 구현하기 위하여 풀 스케일(full-scale) 입력 이미지가 스케일 다운(scaled down)되어 SNN 크기가 축소될 수 있다. 도 1b에서는 9×9로 축소된 MNIST 이미지를 입력으로 취하는 축소된 SNN 구조를 나타낸다.
도 1a에 도시된 풀 스케일 SNN 모델 및 도 1b에 도시된 축소된 SNN 모델은 일 실시예에 따른 스파이킹 뉴럴 네트워크 연산 방법을 평가하는데 사용될 수 있다. 이하 명세서에서는, 레이어의 크기(뉴런의 개수)로 SNN의 차원을 정의한다. 예를 들어, (784-800-10)의 SNN모델은 784개의 뉴런이 있는 입력 레이어, 800개의 뉴런이 있는 제1 히든 레이어, 10개의 뉴런이 있는 출력 레이어를 포함하는 SNN 모델의 구조를 의미하는 것으로 설명한다.
도 2a는 ANN의 뉴런 모델을 나타내고, 도 2b는 SNN의 뉴런 모델을 나타낸다.
대부분의 SNN은 시간 도메인(temporal domain) 및 공간 도메인(spatial domain)에서 스파이크 신호(spike signal)를 처리할 수 있다. 이는 공간 도메인만 갖는 기존 ANN 보다 두드러진 이점을 제공할 수 있다. 도 2a 및 도 2b는 ANN 모델과 SNN모델 간의 차이를 보여준다. 예를 들어, ANN 모델과 SNN 모델은 입력 신호, 곱셈 및 덧셈 프로세스, 활성화 함수(activation function), 및 출력 신호에서 차이점이 존재한다.
코딩 방식(coding scheme)은 각 레이어에서 스파이크 신호를 표현하고, 시간 및 공간 도메인으로 SNN을 트레이닝 하는데 중요한 역할을 한다. SNN에서 입력 픽셀 값을 변환하기 위하여 레이트 코딩(rate coding) 및 시간 코딩(temporal coding)의 두가지 일반적인 코딩 방식이 존재한다. 레이트 기반 코딩 방식은 라우팅 패브릭(routing fabric)에서 많은 가중치 조회와 높은 스파이크 트래픽(traffic)을 발생시키기 때문에 트레이닝 및 구현에 매우 까다롭다. 또 다른 문제점은 레이트 기반 코딩 방식은 높은 스파이크 레이트가 스파이킹 활동(activity)의 불연속적인 특성(discrete nature)을 가리는 경향이 있다. 반면, 시간 코딩 방식의 SNN 모델의 정확도(accuracy)가 떨어지는 경향이 있다. 이하에서는, 위의 코딩 방식의 단점을 극복할 수 있는 하드웨어 친화적인(hardware-friendly) 레이트 코딩 방식에 관하여 설명한다.
도 3은 일 실시예에 따른 스파이킹 뉴럴 네트워크 연산 장치의 코딩 방식(coding scheme)에 관하여 설명한다.
단계(310)에서 일 실시예에 따른 스파이킹 뉴럴 네트워크 연산 장치(이하, 'SNN 연산 장치')는 스파이킹 뉴럴 네트워크에 포함된 복수의 레이어들 중 대상 레이어에서 입력 스파이크 시퀀스들(input spike sequences)을 수신할 수 있다. 스파이크 시퀀스는 SNN 모델에 적용되는 입력 데이터들 및 SNN 모델이 포함하는 복수의 레이어의 출력 특징 데이터들 중 하나의 데이터가 변환된 스파이크 신호로서, 복수의 비트 위치들 내에서 스파이크가 분배된 신호를 나타낼 수 있다. 입력 스파이크 시퀀스는 대상 레이어가 수신하는 스파이크 시퀀스를 나타낼 수 있다.
단계(320)에서 SNN 연산 장치는 대상 레이어 출력들을 스파이크 간 간격이 동등한 출력 스파이크 시퀀스들(output spike sequence)로 변환할 수 있다. 출력 스파이크 시퀀스는 대상 레이어의 출력이 변환된 스파이크 시퀀스를 나타낼 수 있다.
단계(330)에서 SNN 연산 장치는 변환된 출력 스파이크 시퀀스들을 대상 레이어(target layer)의 다음 레이어로 전파할 수 있다. 이하, 도 4에서 일 실시예에 따른 스파이킹 뉴럴 네트워크 연산 장치의 코딩 방식(coding scheme)에 관하여 보다 자세히 설명한다.
도 4에서는 일 실시예에 따른 스파이킹 뉴럴 네트워크 연산 장치의 코딩 방식을 스파이킹 뉴럴 네트워크의 구조를 이용하여 설명한다.
일 실시예에 따른 SNN 연산 장치는 스파이킹 뉴럴 네트워크(400)의 입력 레이어(411)에 적용되는 입력 픽셀값들(pixel values)을 이진 스트림(binary stream)으로 표현되는 레이트 기반 스파이크 신호로 변환할 수 있다. 일 실시예에 따른 SNN 연산 장치는 입력 데이터(예를 들어, 입력 픽셀값)를 이진 스파이크 시퀀스(binary spike sequence)로 변환할 수 있다. SNN 연산 장치는 스파이킹 뉴럴 네트워크에 포함된 복수의 레이어들 중 대상 레이어(420)에서 입력 스파이크 시퀀스를 수신할 수 있다. SNN 연산 장치는 대상 레이어(420) 출력을 스파이크 간 간격이 동등한 출력 스파이크 시퀀스로 변환할 수 있다. SNN 연산 장치는 변환된 출력 스파이크 시퀀스를 대상 레이어(420)의 다음 레이어(421)로 전파할 수 있다. 도 4에서는 SNN 장치의 코딩 방식을 히든 레이어가 2개인 SNN 모델로 설명하나, SNN 장치의 코딩 방식은 히든 레이어가 2개 이상인 SNN 모델에도 적용될 수 있다.
코딩되는 이진 스파이크 시퀀스의 길이(length)는 하드웨어 구현 비용을 고려하여 결정될 수 있다. 일 실시예에 따른 SNN 연산 장치는 입력 레이어에 적용되는 입력 데이터를 이진 스파이크 시퀀스로 변환할 수 있고, SNN 모델에 포함된 복수의 레이어들의 출력도 이진 스파이크 시퀀스로 변환할 수 있다. 이진 스파이크 시퀀스 내에서 '1'은 스파이크가 존재하는 것을 지시하고, '0'은 스파이크가 존재하지 않은 것을 지시한다.
도 4를 참조하면, SNN에 입력되는 MNIST 데이터 세트의 각 이미지(image)는 대부분의 이미지 데이터와 같이 정수값(integer value)으로 표현되는 픽셀들로 구성될 수 있다. 일 실시예에 따른 SNN 연산 장치는 입력 레이어로 입력 이미지의 각 입력 픽셀이 지시하는 정수값이 입력되는 경우, 해당 정수값을 미리 결정된 길이(length)를 갖는 스파이크 시퀀스로 변환할 수 있다. 입력 이미지의 각 입력 픽셀들이 지시하는 정수값들이 n 비트의 이진수로 표현되는 경우, 변환되는 스파이크 시퀀스의 길이는 아래 수학식 1과 같이 나타낼 수 있다.
Figure pat00001
수학식 1에서 T는 변환되는 스파이크 시퀀스의 길이를 나타내고, n은 입력 픽셀들이 지시하는 정수값들을 이진수로 표현하기 위해 요구되는 비트 개수를 나타낼 수 있다. 다시 말해, 수학식 1에서 n은 SNN 연산 장치에 입력되는 픽셀들이 지시할 수 있는 최대 정수값을 이진수로 표현하기 위하여 요구되는 비트 개수를 나타낼 수 있다. 예를 들어, 입력 픽셀이 지시 가능한 최대 정수 값이 15인 경우, n은 4이다.
일 실시예에 따른 SNN 연산 장치가 대상 레이어 출력들을 스파이크 시퀀스들로 변환하는 경우, 스파이크 시퀀스의 길이(T)는 SNN의 입력 데이터에 포함될 수 있는 입력값 범위의 최대값에 기초하여 결정될 수 있다. 스파이크 시퀀스의 길이(T)는 SNN의 입력 데이터에 포함될 수 있는 입력값 범위의 최대값과 동일한 길이를 가질 수 있다. 입력 데이터는 SNN의 입력 레이어에 적용되는 입력 이미지의 입력 픽셀이 지시하는 정수값을 나타낼 수 있다. 예를 들어, SNN에 적용되는 입력 픽셀이 4비트를 가지는 경우(n=4), 입력 픽셀이 지시하는 정수값들은 0에서 15 사이의 범위를 가질 수 있다. 이때, 일 실시예에 따른 SNN 연산 장치가 변환하는 스파이크 시퀀스의 길이(T)는 입력 데이터에 포함될 수 있는 입력값 범위의 최대값인 15비트일 수 있다.
일 실시예에 따른 SNN 연산 장치는 대상 레이어(420)의 출력들을 스파이크 시퀀스들로 변환할 수 있다. 도 4에서 대상 레이어(420)는 히든 레이어로 도시되었으나, 대상 레이어는 입력 레이어일 수도 있다. 일 실시예에 따른 SNN 연산 장치는 대상 레이어(420)의 출력들을 스파이크 간 간격이 동등한 출력 스파이크 시퀀스들로 변환할 수 있다. SNN 연산 장치는 대상 레이어의 출력들 중 하나의 출력을 하나의 스파이크 시퀀스로 변환한다.
앞서 설명한 바와 같이, 스파이크 시퀀스는 복수의 비트 위치들 내에 스파이크가 분배된 신호를 나타낼 수 있다. 여기서, 스파이크 시퀀스가 가지는 복수의 비트 위치들의 개수는 스파이크 시퀀스의 길이(length)를 나타낼 수 있다. 스파이크 시퀀스는 스파이크를 가지지 않을 수도 있고, 하나 이상의 스파이크를 가질 수도 있다. 하나 이상의 스파이크를 가지는 스파이크 시퀀스에서 하나 이상의 스파이크의 각각은 복수의 비트 위치들 중 하나의 비트 위치로 분배될 수 있다. 일 실시예에 따른 SNN 연산 장치는 대상 레이어(420)의 출력을 스파이크 사이이 비트 간격이 균일한 출력 스파이크 시퀀스로 변환할 수 있다. 스파이크 시퀀스가 복수의 스파이크들을 가지는 경우, 복수의 스파이크들의 각각은 스파이크 시퀀스의 복수의 비트 위치들 내에서 다른 스파이크의 비트 위치에 대해 동등한 간격을 가지도록 분배될 수 있다. 예를 들어, 스파이크 시퀀스 내에 스파이크가 1개 존재하는 경우, 스파이크는 스파이크 시퀀스의 복수의 비트 위치들 중 임의의 위치에 배치될 수 있다. 스파이크 시퀀스 내에 스파이크가 2개가 존재하는 경우, 스파이크들은 스파이크 시퀀스의 복수의 비트 위치들 내에서 스파이크 간격이 스파이크 시퀀스의 길이의 절반(
Figure pat00002
)이 되도록 분배될 수 있다. 이하에서는, SNN 연산 장치가 대상 레이어의 출력을 출력 스파이크 시퀀스로 변환하는 방법에 대하여 구체적으로 설명한다.
일 실시예에 따른 SNN 연산 장치는 대상 레이어(420) 출력들이 지시하는 복수의 정수값들(integer values) 각각을 주소로하여 대응하는 스파이크 시퀀스가 기록된 룩업 테이블(lookup table)을 메모리로부터 로드(load)할 수 있다. SNN 연산 장치는 대상 레이어(420) 출력들 중 하나의 대상 출력에 대하여, 로드된 룩업 테이블에 기초하여 대상 출력이 지시하는 정수값을 주소로 디코딩하여 대응하는 스파이크 시퀀스를 선택할 수 있다. 룩업 테이블에 기록된 정수값들 각각을 주소로하여 대응하는 스파이크 시퀀스는, 해당 정수값에 대응하는 개수의 스파이크가 복수의 비트 위치들 내에 분배되고, 스파이크 사이의 간격이 최대화되도록 분배된 스파이크 시퀀스일 수 있다. SNN 연산 장치는 대상 출력을 선택된 스파이크 시퀀스로 코딩하여 출력 할 수 있다. 이하에서는, 일 실시예에 따른 SNN 연상 장치의 코딩 방법을 이진 스트림 레이트 코딩(Binary Streamed Rate Coding, BSRC)라고 설명한다.
다른 일 실시예에 따르면, SNN 연산 장치는 대상 출력에 대하여 룩업 테이블에 기초하여 정수값을 주소로 디코딩하여 대응하는 스파이크 시퀀스를 선택한 후에, 선택된 스파이크 시퀀스를 변경할 수 있다. SNN 연산 장치는 변경된 스파이크 시퀀스로 대상 출력을 변환할 수 있다. 보다 구체적으로, SNN 연산 장치는 룩업 테이블에 기초하여 선택된 스파이크 시퀀스에 대하여 스파이크 비율(ratio)을 동일하게 유지하면서 랜덤(random)으로 생성된 비트(bit) 개수만큼 시프트(shift)하여 변경된 스파이크 시퀀스를 생성할 수 있다. SNN 연산 장치는 스파이크 시퀀스에 대하여 랜덤으로 생성된 비트 개수만큼 시프트하여 변경된 스파이크 시퀀스로 대상 출력을 코딩하여 출력할 수 있다. 여기서, 스파이크 비율(ratio)이란, 스파이크 시퀀스의 시퀀스 길이(length) 대비 스파이크가 존재하는 비트 위치의 개수에 대한 비율을 나타낼 수 있다.
표 1에서는 일 실시예에 따른 SNN 장치가 데이터를 이진 스트림 레이트 코딩(BSRC)에 따라 변환하는 알고리즘(이하, 'BSRC 알고리즘')에 관하여 설명한다. BSRC 알고리즘에서는, 입력 픽셀들을 0 을 초과하고
Figure pat00003
미만의 정수값을 가지는 제1 그룹의 입력 픽셀과
Figure pat00004
이상의 정수값을 가지는 제2 그룹의 입력 픽셀로 분류한다. 제1 그룹의 경우에서는 스파이크 시퀀스의 모든 복수의 비트 위치들에 '1'(스파이크의 존재를 지시함)을 배치하는 초기화를 수행하고, 적절한 위치에 '0'(스파이크의 부존재를 지시함)을 배치한다. 제2 그룹의 경우에서는 스파이크 시퀀스의 모든 복수의 비트 위치들에 '0'을 배치하는 초기화를 수행하고, 적절한 위치에 '1'을 배치한다. 스파이크 시퀀스 내에는 변환하는 정수값에 대응하는 개수의 '1'이 복수의 비트 위치들 내에 분배된다. 더 나아가, 각 그룹의 마지막 단계로 '1' 및 '0'이 배치된 스파이크 시퀀스는 랜덤으로 시프트되고, 이는 강력한 분류 결과를 위하여 무작위성(randomness)을 가진 정규화(regularization)를 제공한다. 예를 들어, 스파이크 시퀀스는 가장 오른쪽 비트인 LSB(least significant bit)를 향하는 방향으로 랜덤 비트 만큼 시프트 될 수 있고, 가장 왼쪽 비트인 MSB(most significant bit)를 향하는 방향으로 랜덤 비트 만큼 시프트 되어 코딩될 수 있다.
Figure pat00005
이하에서는, 하나의 예시로 SNN의 입력 레이어에 적용되는 입력 픽셀들이 지시하는 정수값이 4비트로 표현되는 경우에 관하여 설명한다. SNN의 입력 레이어는 BSRC 알고리즘을 사용하여 각 입력 픽셀이 지시하는 정수값을 15개의 비트 길이를 갖는 스파이크 시퀀스로 변환할 수 있다. 예를 들어, SNN 연산 장치는 아래 표 2와 같이 픽셀들이 가질 수 있는 1이상 15이하의 정수값 각각에 대하여 15개의 비트 길이를 갖는 스파이크 시퀀스가 기록된 룩업 테이블을 메모리에 저장할 수 있다.
Figure pat00006
표 2를 참조하면, 일 실시예에 따른 SNN 연산 장치는 입력 픽셀이 지시하는 정수값이 '5'인 경우, 스파이크 시퀀스는 아래 수학식 2와 같은 스파이크 시퀀스로 변환할 수 있다.
Figure pat00007
일 실시예에 따른 SNN 연산 장치는 룩업 테이블로부터 선택된 스파이크 시퀀스에 대하여 랜덤 비트(예를 들어, '1' 비트) 만큼 LSB를 향해 시프트하여 아래 수학식 3과 같은 변형된 스파이크 시퀀스를 생성할 수 있다.
Figure pat00008
일 실시예에 따른 SNN 연산 장치는 랜덤 비트로 시프트하여 변형된 스파이크 시퀀스로 '5'의 정수값을 지시하는 입력 데이터를 변환할 수 있다.
스파이킹 뉴럴 네트워크 모델
다양한 스파이킹 뉴럴 네트워크(SNN) 모델들 중에서 Leaky Integrate and Fire(LIF) 뉴런은 다른 뉴런들보다 더 효율적이고 신뢰할 수 있는 것으로 간주된다. LIF 뉴런 모델은 아래 수학식 4에 의하여 표현될 수 있다.
Figure pat00009
수학식 4에서, Vm는 막 전압(membrane voltage)을 나타내고,
Figure pat00010
는 시정수(time constant)를 나타낸다.
Figure pat00011
는 시냅스 가중치(W) 및 시냅스전 입력(S)의 내적(dot product)을 나타낸다. Vm(t=0)에 대하여, 초기 조건은 아래 수학식 5와 같이 표현될 수 있다.
Figure pat00012
수학식 5에서, Vm(reset)은 회로의 리셋(reset) 시 초기 막 전압을 나타낸다. 수학식 4는 빠른 트레이닝 및 추론 프로세서의 수치적 구현에 적합하도록 아래 수학식 6과 같이 단순화될 수 있다.
Figure pat00013
수학식 6에서,
Figure pat00014
는 시간 t+1에서 i번째 뉴런의 막 전압으로, 실제 값(real value)을 나타낸다. Si(t)는 시냅스후 뉴런에 대한 이진값의 뉴런 스파이크 출력을 나타내고, Sj(t)는 시냅스전 뉴런에 대한 이진값의 뉴런 스파이크 출력을 나타내며, 실제값
Figure pat00015
는 i번째 시냅스후 뉴런과 j번째 시냅스전 뉴런 간의 시냅스 가중치를 나타낸다.
Figure pat00016
는 이전 레이어(l-1 레이어)의 뉴런 개수를 나타내고,
Figure pat00017
는 감쇠 상수(decay constant)를 나타낸다.
수학식 4에서 생성된 지수 감쇠 항(exponential decay term)인
Figure pat00018
는 일정한 기울기 Dcon이 반영된(factored) 이전 막 전압을 사용하여 더하기 연산으로 근사화 될 수 있다. 수학식 6은 수천개의 시냅스가 있는 대형 SNN의 경우에서도 회로 구현을 매우 간결하게 만들 수 있다.
수학식 6에서,
Figure pat00019
는 이진값 0 또는 1을 제공하고, 각 스파이크 프로세스 후, 스파이크 출력
Figure pat00020
가 1인 경우 막 전압
Figure pat00021
를 리셋한다. SNN 모델에 대하여 높은 정확도(accuracy)를 유지하면서 하드웨어 구현 비용을 최소화하기 위하여 수학식 6에서 감쇠 상수를 억제하여 수학식 7이 생성될 수 있다.
Figure pat00022
감쇠 상수를 제거해도 수학식 6 및 수학식 7을 기반으로 하드웨어 구현을 비교하여 보면 SNN 모델의 정확도(accuracy)가 저하되지 않는다. 일반적으로 각 입력 이미지에 대한 SNN 트레이닝 또는 추론 프로세스는 스파이크의 레이트 또는 시간 코딩을 고려하기 위해 반복적인 방식으로 계산된다. 일 실시예에 따른 SNN 장치가 T 길이의 스파이크 시퀀스로 데이터를 코딩하는 경우, 수학식 6 및 수학식 7로 표현된 트레이닝 또는 추론 프로세스가 각 입력 이미지에 대하여 T회 반복되어 막에서 전체 스파이크 스트림의 효과(effect)를 누적하게 된다.
SNN 모델의 최적화(Optimization of SNN Model)
BSRC 기반 트레이닝
이하에서는, SNN 모델을 최적화하는 방법에 관하여 설명한다. 먼저, SNN 모델을 이진 스트림 레이트 코딩(BSRC) 방법을 기반으로 트레이닝시켜 최적화하는 방법에 관하여 설명한다.
일 실시예에 따른 SNN 연산 장치는 SNN 모델을 트레이닝 시키기 위하여, 스파이크 신호를 처리하기 위한 수정된 경사 하강법(modified gradient descent)에 기초한 역전파 알고리즘(backpropagation algorithm)을 사용할 수 있다. 스파이크 신호가 미분될 수 없는 문제점을 해결하기 위하여, 미분 가능한 수학식 8의 직사각형 신호로 스파이크 신호를 근사할 수 있다. 수학식 9에 의하여 수학식 8의 미분을 표현할 수 있다.
Figure pat00023
Figure pat00024
수학식 8 및 9에서, S(x)의 '1'은 스파이크가 존재함을 나타내고, '0'은 스파이크가 존재하지 않음을 나타내며, Vm은 막 전압을 나타내고, Vth는 임계 전압(threshold voltage)을 나타낸다.
일 실시예에 따른 SNN 연산 장치의 수학식 8 및 9를 사용한 BSRC 기반 트레이닝 방법은 SNN의 공간 및 시간 특성을 모두 활용하여 SNN의 가중치 값들(weight values)을 최적화할 수 있다. 또한, BSRC 기반 트레이닝 방법은 과적합(overfitting)을 피하기 위해 SNN 모델의 정규화를 증가시키고, 이를 위하여 스파이크 시퀀스를 무작위로 시프트할 수 있다. 더 빠른 SNN 모델의 트레이닝을 위하여, 일 실시예에 따른 SNN 연산 장치는 모든 레이어의 모든 뉴런에 대하여 일정한 임계 전압을 사용할 수 있다. 예를 들어, 임계 전압(Vth)은 0.5V일 수 있으나, 이로 한정하지는 않는다. 일반적으로, 고정 임계값(fixed threshold value)은 상수 임계값(constant threshold)에 관하여 최적의 가중치들(optimal weights)이 선택되기 때문에 트레이닝 과정에서 SNN 모델의 정확도(accuracy)를 저하시키지 않는다. 이하에서는, 스파이크 시퀀스의 길이가 15이고, 배치 크기(batch size)가 100이며, 학습률이 10-3으로 트레이닝을 수행하는 경우에서, SNN 모델들의 트레이닝 정확도를 서로 비교한다.
SNN 구조 최적화
이하에서는, SNN의 구조 및 크기를 최적화(optimize)하는 방법에 관하여 설명한다. SNN 최적화의 목적은 SNN의 크기(뉴런 및 시냅스의 수)를 최소화하는 것이다. SNN에 MNIST 데이터 세트가 트레이닝 데이터 세트로 입력되고, SNN의 레이어는 완전히 연결된(fully-connected) 경우에 관하여 설명한다. SNN에 입력되는 입력 픽셀이 지시하는 정수값은 4비트로 표시 가능하고, MNIST 데이터 세트를 입력한 경우의 SNN의 목표 정확도(target accuracy)는 94.60% 또는 더 높은 정확도로 설정된 경우에 관하여 설명한다. 여기서, 목표 정확도는 SNN 모델이 트레이닝을 거친 후 달성해야 하는 정확도를 나타낸다.
도 5는 SNN 모델들에 대하여 BSRC 방법을 사용하여 트레이닝한 경우에 대하여 얻은 테스트 정확도(testing accuracy)를 나타낸다.
서로 다른 입력 이미지 크기를 사용하는 세 종류의 SNN 모델에 대하여 BSRC 방법을 사용하여 트레이닝하여 테스트 정확도를 얻을 수 있다. 구조 최적화 프로세스는 다양한 입력 이미지 크기, 다양한 레이어의 개수 및 노드 개수에서 각 레이어 크기의 SNN 구조를 탐색한다. 이미지 크기의 경우, MNIST 데이터 세트를 스케일링하여 28 × 28, 14 × 14 및 9 × 9의 세 가지 입력 이미지의 크기가 탐색된다. (784-800-10)의 SNN 모델(501)에는 28 × 28 크기의 입력 이미지가 입력되고, (196-800-10)의 SNN 모델(502)에는 14 × 14크기의 입력 이미지가 입력되며, (81-800-10)의 SNN 모델(503)에는 9 × 9크기의 입력 이미지가 입력된다. 도 5에 도시된 세 종류의 SNN 모델(501, 502, 503)은 일 실시예에 따른 가중치 양자화(weight quantization) 알고리즘을 적용하기 전에 부동 소수점(floating-point) 가중치 값으로 트레이닝이 수행될 수 있다. 세 종류의 SNN 모델(501, 502, 503)의 하드웨어 비용은 시냅스 개수의 측면에서 (635, 200)에서 (164, 800)으로 감소한 다음, (72, 800)으로 감소하여 각각 75% 및 88.54% 만큼 감소될 수 있다. 즉, SNN 모델(503)의 테스트 정확도를 참조하면, 구조 최적화를 통하여 입력 이미지를 9 × 9의 픽셀로 리사이징(resizing)하는 경우에 무시할 수 있는 정도의 0.84%의 정확도 손실로도 하드웨어의 크기를 상당하게 감소시킬 수 있다.
도 6은 9 × 9의 MNIST 데이터 세트로 트레이닝된 SNN 모델의 정확도를 히든 레이어의 뉴런 개수에 따라 나타낸다.
구조 최적화의 또 다른 방법은 SNN 모델에 포함된 히든 레이어의 뉴런 개수를 감소시키는 것이다. 도 6을 참조하면, 히든 레이어가 갖는 뉴런의 개수가 800개인 (81-800-10)의 SNN 모델(601)의 최대 테스트 정확도(maximum testing accuracy)는 98.00%로 측정되고, 히든 레이어가 갖는 뉴런의 수가 50개인 (81-50-10)의 SNN 모델(602)의 최대 테스트 정확도는 95.87%로 측정된다. 즉, SNN 모델(602)의 최대 테스트 정확도를 참조하면, 2.13%의 정확도의 감소만으로도 72,800개의 시냅스에서 4,550개의 시냅스로 94.75%의 상당한 시냅스 수의 감소를 얻을 수 있다.
도 7은 하나의 히든 레이어가 두개의 히든 레이어로 분할된 구조의 SNN 모델의 정확도를 히든 레이어의 뉴런 개수에 따라 나타낸다.
전체 하드웨어 비용을 더 줄이기 위하여 하나의 히든 레이어가 두개의 히든 레이어로 분할된 구조의 SNN 모델을 탐색할 수 있다. 도 1b의 SNN모델은 히든 레이어 하나가 두개의 히든 레이어로 분할된 구조를 가진다. 총 시냅스의 개수를 더 줄이면 SNN의 최대 테스트 정확도가 감소하는 것이 관찰된다.
SNN 가중치 양자화(SNN weight quantization)
SNN 모델을 회로로 구현하였을 때의 회로 크기 및 전력 소모를 감소시키기 위한 방법으로 SNN 모델이 포함된 레이어의 가중치(weight)를 양자화(quantization)하는 방법에 관하여 설명한다. 이하에서는, SNN 모델의 목표 정확도를 94.60%로 설정한 경우에 관하여 설명하나, 목표 정확도의 설정값은 이로 한정하지는 않는다. 이하에서는, 도 7의 (81-30-20-10)의 SNN 모델 구조를 사용하여 가중치를 양자화하는 방법에 대하여 설명하나, 가중치 양자화는 다른 구조의 SNN 모델에도 사용될 수 있다.
SNN 모델에서 모든 시냅스는 두 가지 유형의 가중치로 구성될 수 있다. 두가지 유형에는 가산형 시냅스(excitatory synapse)에 대한 양(positive)의 가중치 및 저감형 시냅스(inhibitory synapse)에 대한 음(negative)의 가중치가 있다. 스파이크 신호를 수신하면, 가산형 시냅스는 스파이킹 레이트를 증가시키는 반면, 저감형 시냅스는 스파이킹 레이트를 감소시킨다.
도 8에서는 일 실시예에 따른 SNN 장치가 가중치를 양자화하는 방법에 관하여 설명한다.
먼저, 단계(810)에서 일 실시예에 따른 SNN 장치는 SNN 모델의 트레이닝에 기초하여 업데이트된 SNN가 포함하는 레이어의 부동소수점 가중치들을 클리핑(clipping)할 수 있다. SNN 장치는 SNN 모델이 포함하는 복수의 레이어들 각각에 대한 부동소수점 가중치들을 클리핑할 수 있다. SNN 장치는 SNN 모델에 포함된 복수의 레이어들 중 대상 레이어에 대하여 시냅스 유형 마다 부동 소수점으로 표현되는 트레이닝된 가중치의 평균 및 표준편차를 계산할 수 있다. 다시 말해, SNN 장치는 대상 레이어에 대한 가중치들 중 가산형 시냅스로 분류되는 양의 부동 소수점 가중치들의 평균(mean) 및 표준편차(standard deviation)를 계산할 수 있고, 저감형 시냅스로 분류되는 음의 부동 소수점 가중치들의 평균 및 표준편차를 계산할 수 있다.
일 실시예에 따른 SNN 장치는 대상 레이어에 대한 부동소수점 가중치들의 평균 및 표준편차에 기초하여 서로 상이한 양의 한계값 및 음의 한계값을 선택할 수 있다. 보다 구체적으로, SNN 장치는 부동소수점 가중치들의 평균(mean) 및 표준편차(standard deviation)에 기초하여 가중치의 최적 범위(optimal range)를 결정하고, 결정된 가중치 범위 내에서 서로 상이한 양의 한계값 및 음의 한계값을 선택할 수 있다. SNN 장치는 선택된 양의 한계값에 기초하여 양의 부동소수점 가중치들을 클리핑할 수 있고, 선택된 음의 한계값에 기초하여 음의 부동소수점 가중치들을 클리핑할 수 있다. 양의 한계값은 수학식 10에 따라 산출될 수 있고, 음의 한계값은 수학식 11에 의해 산출될 수 있다.
Figure pat00025
Figure pat00026
수학식 10에서, LExc는 양의 한계값을 나타내고, MeanExc는 양의 부동소수점 가중치들의 평균을 나타내며, StdExc는 양의 부동소수점 가중치들의 표준편차를 나타낸다. nExc는 양의 부동소수점 가중치들의 표준편차 가중치를 나타낸다. 수학식 11에서, LInh는 음의 한계값을 나타내고, MeanInh는 음의 부동소수점 가중치들의 평균을 나타내며, StdInh는 음의 부동소수점 가중치들의 표준편차를 나타낸다. ninh는 음의 부동소수점 가중치들의 표준편차 가중치를 나타낸다.
SNN 장치는 선택된 양의 한계값을 초과하는 양의 부동소주점 가중치를 양의 한계값으로 클리핑할 수 있고, 선택된 음의 한계값 미만의 음의 부동소수점 가중치를 음의 한계값으로 클리핑할 수 있다. 선택된 클리핑 한계값들은 SNN 모델의 최종 정확도에 영향을 주게 된다.
단계(820)에서 일 실시예에 따른 SNN 장치는 클리핑된 가중치들을 양자화(quantization)하기 위한 최소 비트 수를 미리 설정된 목표 정확도에 기초하여 결정할 수 있다. SNN 장치는 SNN 모델이 포함하는 복수의 레이어들 마다 클리핑된 가중치들을 양자화 하기 위한 최소 비트 수를 결정할 수 있다. 보다 구체적으로, SNN 장치는 대상 레이어에 대하여 클리핑된 가중치들을 양자화하기 위한 비트 수의 범위(예를 들어, 0 내지 Bmax)를 설정할 수 있다. SNN 장치는 대상 레이어에 대하여 클리핑된 가중치들을 양자화하기 위한 비트 수를 0에서 Bmax로 증가시키면서 SNN 모델의 정확도를 측정할 수 있다. 예를 들어, SNN 장치는 설정된 비트 수에 맞추어 클리핑된 가중치들을 양자화할 수 있고, SNN 모델의 정확도를 산출할 수 있다. SNN 장치는 설정된 비트 수에 따라 가산형 양자화 단위값(
Figure pat00027
Excq ), 저감형 양자화 단위값(
Figure pat00028
Inhq ), 양자화 결과 가중치 값(w Q_int [i])을 각각 산출할 수 있다. 가산형 양자화 단위값은 수학식 12에 따라 산출될 수 있고, 저감형 양자화 단위값은 수학식 13에 따라 산출될 수 있으며, 양자화 결과 가중치 값은 수학식 14에 따라 산출될 수 있다.
Figure pat00029
Figure pat00030
Figure pat00031
수학식 12 및 수학식 13에서 N은 클리핑된 가중치들을 양자화하기 위하여 설정된 비트 수를 나타낼 수 있다.
일 실시예에 따른 SNN 장치는 설정된 비트 수에 따라 SNN 모델의 정확도를 산출할 수 있다. SNN 장치는 SNN 모델이 설정된 목표 정확도(예를 들어, 94.60%)를 달성하는 최소의 비트 수(이하, '최소 비트 수')를 결정할 수 있다.
단계(830)에서 일 실시예에 따른 SNN 장치는 결정된 최소 비트 수로 클리핑된 가중치를 정수값으로 양자화할 수 있다. 단계(840)에서 SNN 장치는 양자화된 가중치를 SNN 모델에 적용할 수 있다.
아래 표 3은 일 실시예에 따른 SNN 장치의 양자화 알고리즘에 관하여 설명한다.
Figure pat00032
도 9 내지 도 11은 가중치 양자화 알고리즘을 (81-30-20-10)의 SNN 모델에 적용하는 예시에 관하여 설명한다. nmin=0.8, nmax=1.6, nstep = 0.1, Bmax = 8인 경우를 가정한다. 이에 따라, SNN 모델의 모든 레이어에 관하여 최소 비트 수가 4비트로 결정되고, 모든 레이어의 클리핑 한계값(양의 한계값, 음의 한계값)은 첫번째 히든 레이어에 대해 (1.04, -1.03)이고, 두번째 히든 레이어에 대하여 (0.95, -1.19)이며, 출력 레이어에 대하여 (1.24, -2.20)로 결정된다.
도 9는 SNN의 출력 레이어에 대한 부동 소수점 가중치들을 나타낸다. 가로선(901, 902)는 가중치 클리핑전 부동 소수점 가중치들의 범위를 나타낸다. 예를 들어, SNN 모델의 출력 레이어의 부동 소수점 가중치들은 32 비트의 부동 소수점으로 표현 될 수 있고, 가산형 가중치는 46.5% 및 저감형 가중치는 53.5%의 비율로 나타난다.
도 10은 SNN의 출력 레이어의 부동 소수점 가중치들에 대하여 클리핑 한계값에 의해 클리핑된 부동 소수점 가중치들을 나타낸다. 가로선(1001, 1002)는 각각 클리핑을 위한 양의 한계값 및 음의 한계값을 나타낸다.
도 11은 SNN의 출력 레이어의 클리핑된 부동 소수점 가중치들에 대하여 4 비트로 양자화된 가중치들을 나타낸다. SNN 출력 레이어의 클리핑된 부동 소수점 가중치들은 4비트의 정수로 양자화된다. 다시 말해, 출력 레이어의 클리핑된 부동 소수점 가중치들의 각각은 가중치 양자화 방법에 따라 -8에서 7 사이의 정수로 최적화된다.
정수 임계값 보상(integer threshold compensation)
이하에서는, SNN 최적화의 마지막 단계로서 대상 레이어에 대하여 스파이크의 생성에 사용되는 임계 전압을 보상하는 방법에 관하여 설명한다. SNN 모델에 가중치 양자화 방법을 적용한 후에는 SNN 모델의 목표 정확도를 유지하기 위하여 부동 소수점 임계 전압(floating-point threshold)을 정수 임계 전압으로 보상 해야한다. 아래 수학식 15는 임계값 보상이 필요한 이유를 설명하고, 정수 임계 전압을 계산하기 위한 수학식을 도출한다.
Figure pat00033
수학식 15에서, Nspikes(post)i는 레이어의 하나의 뉴런(i)에서 생성된 스파이크의 개수를 나타낸다.
Figure pat00034
수학식 16에서, Fr(post)i는 후-뉴런(post-neuron)(i)에 대한 부동 소수점 가중치를 사용한 발화 레이트(firing rate)를 나타낸다. Vth는 기존의 임계 전압(부동 소수점 임계 전압)을 나타낸다.
아래 수학식 17 내지 수학식 20은 각 뉴런에 대한 모든 시냅스의 가중치 및 입력 스파이크 스트림을 행렬 표기법(matrix notations)을 사용하여 나타낸 것이다.
Figure pat00035
Figure pat00036
Figure pat00037
Figure pat00038
수학식 17 내지 20에서, Fr(post)는 모든 후-뉴런들의 발화 레이트를 나타내고, Fr(pre)는 모든 전-뉴런들의 발화 레이트를 나타낸다.
Figure pat00039
는 후-레이어에서 뉴런의 개수를 나타내고,
Figure pat00040
는 전-레이어에서 뉴런의 개수를 나타내며, W는 부동 소수점 가중치 행렬을 나타낸다.
Figure pat00041
는 각 시냅스 j에 대한 스파이크 스트림(T)의 발화 레이트를 나타낸다.
아래 수학식 21은 수학식 20에 기초한 정수 임계 전압을 사용하여 N 비트로 가중치 양자화 프로세스 후 발화 레이트를 추정한 것이다.
Figure pat00042
수학식 21에서
Figure pat00043
는 N 비트로 양자화된 가중치의 행렬을 나타내고,
Figure pat00044
는 현재 레이어의 정수값으로 보상할 대상 정수 임계 전압을 나타내며,
Figure pat00045
는 전-시냅스 발화 레이트 및
Figure pat00046
는 후-뉴런의 발화 레이트를 나타낸다. 임계 전압 보상 알고리즘의 목적은 양자화된 가중치에 대한 정수 임계 전압(
Figure pat00047
)을 결정하는 것이고, 수학식 20 및 수학식 21의 발생 레이트가 가장 일치하도록 하는 것으로 표현된다. 이는, 아래 수학식 22와 같이 표현된다.
Figure pat00048
수학식 22를 만족하는 빠른 해(solution)을 결정하기 위해,
Figure pat00049
Figure pat00050
(가중치 양자화 전후의 전-시냅스 발화 레이트)와 같다고 가정하면, 이러한 목표는 수학식 23으로 표현된다.
Figure pat00051
계산 속도를 더 높이기 위해 수학식 24로 수학식 23을 단순화할 수 있다. 수학식 23은 각 네트워크 레이어의 모든 뉴런에 대해 하나의 공통 임계 전압을 찾는 간단하고 빠른 방법을 가능하게 한다.
Figure pat00052
이하, 표 4에서는 임계 전압을 보상하는 알고리즘에 대하여 설명한다. 일 실시예에 따른 SNN 장치는 대상 레이어의 모든 뉴런들 각각에 대하여 부동 소수점 가중치 및 정수 가중치를 추출한다. SNN 장치는 모든 뉴런들 각각에 대하여, 대상 뉴런의 양자화된 정수 가중치들의 합 및 부동 소수점 가중치들의 합을 산출하고, 산출된 부동 소수점 가중치들의 합에 대한 양자화된 정수 가중치들의 합의 비율을 산출할 수 있다. SNN 장치는 각 뉴런 마다 산출된 비율의 절대 평균(absolute mean)을 점진적으로 계산한다. SNN 장치는 대상 레이어의 모든 뉴런들 각각에 대하여 산출된 비율의 평균을 부동 소수점 임계 전압에 곱하여 정수 임계 전압(
Figure pat00053
)을 산출할 수 있다. 결국, 수학식 24를 사용하여 대상 레이어에 대한 보상된 정수 임계 전압(
Figure pat00054
)이 산출될 수 있다.
Figure pat00055
성능 평가(performance evaluation)
SNN 최적화 방법을 평가하기 위해, 목표 정확도 제약 하에서 최소 하드웨어 비용을 목표로 하는 MNIST에 대한 다양한 구조의 SNN을 비교할 수 있다. 먼저 SNN 모델의 BSRC 방법에 따른 부동 소수점 가중치 트레이닝의 효과를 분석한 후, 가중치 양자화 및 임계 보상 방법을 평가한다.
도 12는 BSRC 코딩 방법을 사용하여 트레이닝된 SNN 모델의 테스트 정확도를 나타낸다.
BSRC 코딩 방법을 풀 스케일 MNIST 데이터 세트를 사용하고, 부동 소수점 가중치를 갖는 (784-800-10)의 SNN 모델(1203)에 적용하면 SNN 모델(1203)은 단지 84 에포크(epoch) 후에 98.84 %의 정확도를 달성한다. 대조적으로, HM2-BP 의 코딩 방법을 적용하는 SNN 모델(1201)와 STBP의 코딩 방법을 적용하는 SNN 모델(1202)는 동일한 SNN 구조에 대해 동일한 수준의 정확도를 얻기 위해 각각 100 에포크 및 200 에포크가 필요하다. 감소된 SNN 구조인 (784-400-10)의 SNN 모델(1204, 1205)경우 BSRC의 코딩 방법을 적용한 SNN 모델(1205)는 43 에포크의 트레이닝으로 STBP의 코딩 방법을 적용한 SNN 모델(1204)보다 정확도가 0.3 % 뛰어나다. 이는 BSRC의 코딩 방법으로 SNN을 트레이닝 시키는 방법의 효과를 증명한다.
도 13은 히든 레이어의 크기에 따른 SNN 모델의 테스트 정확도와 네트워크 크기를 나타낸다.
다음으로 하드웨어 비용 절감을 목표로 하는 SNN 구조 최적화를 비교한다. 하나의 히든 레이어를 두개의 히든 레이어로 분할하는 경우에 SNN 모델의 총 시냅스의 수는 급격하게 감소한다. 예를 들어, (81-30-20-10)의 SNN 모델에 대하여, (81-50-10)의 SNN 모델에 대한 4550 개의 뉴런과 비교하여 뉴런의 수를 3230 개로 줄이는 데 단지 0.7 %의 정확도 손실이 발생한다.
도 14는 가중치 양자화가 적용된 SNN 모델의 테스트 정확도를 나타낸다.
가중치 양자화 적용 이전에 감쇠 인자(decay factor)가 없는 SNN 모델(1401)은 감쇠 인자가 있는 SNN 모델(1402)보다 0.27 % 더 높은 정확도로 이어진다. 감쇠 인자가 없는 단순화된 SNN 모델이 정확도 손실이 없음을 나타낸다. 도 14는 또한 가중치 양자화 전후에 최적화된 SNN의 정확도를 비교하여 가중치 양자화 방법의 효과를 입증한다. 예를 들어, 부동 소수점 가중치를 갖는 (81-30-20-10)의 SNN 모델(1401)은 95.25 %의 정확도를 제공하는 반면, SNN 모델(1403, 1404)은 각각 8 비트와 4 비트로 가중치가 양자화되어 94.88 %와 94.69 %의 SNN 모델 정확도를 얻는다. 이는 무시할 수 있는 정확도 손실을 감수하고, 가중치 양자화를 통하여 상당한 크기의 하드웨어 감소를 얻을 수 있음을 나타낸다.
도 15는 SNN 모델에 대한 정확도, 시냅스 수, 및 회로 영역(circuit area)을 나타낸다.
SNN 모델(1501)은 HM2-BP의 코딩 방법에 따라 트레이닝된 784-800-10의 SNN 모델을 나타내고, SNN 모델(1502)은 STBP의 코딩 방법에 따라 트레이닝된 784-400-10의 SNN 모델을 나타낸다. SNN에는 많은 수의 시냅스가 필요하므로 과도한 하드웨어 비용이 발생한다. 여기서 SNN 회로 크기는 mm2 단위의 실리콘 크기로 표시된다. 반대로, SNN 모델(1503) 및 SNN 모델(1504)은 9 × 9 MNIST 이미지에 대해 최적화된 (81-30-20-10) SNN 모델을 나타낸다. 부동 소수점 가중치를 갖는 SNN 모델(1503) 및 4 비트 양자화된 가중치를 갖는 SNN 모델(1504)의 각각은, SNN 모델(1501, 502)과 비교하여 4.24 %의 작은 정확도 손실로 94.60 %의 목표 정확도를 달성하면서 하드웨어 크기를 183.19 배 및 764.73 배 줄였다. 더 나아가, SNN 모델(1501)과 비교할 때 최적화된 부동 소수점 가중치를 갖는 (81-30-20-10)의 SNN모델(1503)은 98.93 %에서 95.25 %로 정확도 손실을 감수하면서, 시냅스 수를 635,200 개에서 3230 개로 크게 줄였다.
수학식 25를 사용하여 SNN 모델에 대한 회로 구현의 상대적 영역(area)을 추정할 수 있다.
Figure pat00056
수학식 25에서, Circuit Area는 회로 영역을 나타내고,
Figure pat00057
는 총 시냅스 수를 나타내며,
Figure pat00058
는 양자화된 가중치들에 대한 메모리를 포함하는 시냅스 회로의 전체 크기를 나타낸다.
Figure pat00059
은 총 뉴런 수를 나타내고
Figure pat00060
은 뉴런 회로의 크기를 나타낸다.
Figure pat00061
는 와이어링(wiring) 및 라우팅(routing) 오버 헤드를 나타낸다.
도 15를 참조하면, SNN 최적화 방법은 32 비트 부동 소수점 가중치를 사용하는 (784-800-10)의 SNN 모델(1501)의 경우 하드웨어 영역을 3089.49mm2에서 32 비트 부동 소수점 가중치를 사용하는 (81-30-20-10)의 SNN 모델(1503)에 대하여 16.86mm2로 줄인다. 4 비트 가중치 양자화 방법은 0.56 %의 무시할 수 있는 정확도 손실로 16.86mm2에서 4.04mm2로 4 배의 추가 크기 감소를 제공할 수 있다. 결국, BSRC 코딩 방법 및 SNN 최적화 방법(가중치 양자화 및 임계 전압 보상)은 SNN 하드웨어 크기를 최소화하고, 정확도와 하드웨어 크기 간의 균형을 맞추는 데 매우 효과적인 접근 방식임을 보여준다.
도 16은 일 실시예에 따른 SNN 연산 장치의 구성을 나타낸 블록도이다.
일 실시예에 따른 SNN 연산 장치(1600)는 통신부(1610), 메모리(1620), 및 프로세서(1630)을 포함할 수 있다. 통신부(1610)는 외부 장치로부터 입력 데이터를 수신할 수 있다. 메모리(1620)는 트레이닝 데이터 세트 및 SNN 모델들을 저장할 수 있다. 프로세서(1630)는 트레이닝 데이터 세트에 기초하여 SNN 모델을 트레이닝 시킬 수 있다. 프로세서(1630)는 BSRC 코딩 방법에 따라 SNN 모델을 트레이닝 시킬 수 있다. 보다 구체적으로, 프로세서(1630)는 대상 레이어 출력들을 스파이크 간 간격이 동등한 출력 스파이크 시퀀스들로 변환하고, 변환된 출력 스파이크 시퀀스들을 대상 레이어의 다음 레이어로 전파함으로써 SNN 모델을 트레이닝 시킬 수 있다. 또한, 프로세서(1630)는 트레이닝에 기초하여 업데이트된 SNN의 부동 소수점 가중치들을 클리핑하고, 클리핑된 부동 소수점 가중치들을 양자화하기 위한 최소 비트 수를 목표 정확도에 기초하여 결정하며, 결정된 최소 비트 수로 클리핑된 가중치를 정수값으로 양자화할 수 있다. 프로세서(1630)는 양자화된 가중치를 SNN에 적용할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (19)

  1. 프로세서에 의해 수행되는 스파이킹 뉴럴 네트워크(spiking neural network, SNN)의 연산 방법에 있어서,
    상기 스파이킹 뉴럴 네트워크에 포함된 복수의 레이어들 중 대상 레이어에서 입력 스파이크 시퀀스들(input spike sequences)을 수신하는 단계;
    상기 대상 레이어의 출력들을 스파이크 간 간격이 동등한 출력 스파이크 시퀀스들(output spike sequences)로 변환하는 단계; 및
    상기 변환된 출력 스파이크 시퀀스들을 상기 대상 레이어의 다음 레이어로 전파하는 단계
    를 포함하는 스파이킹 뉴럴 네트워크 연산 방법.
  2. 제1항에 있어서,
    상기 스파이크 시퀀스는,
    입력 데이터에 포함될 수 있는 입력 값 범위의 최대 값에 기초하여 결정된 시퀀스 길이(sequence length)를 갖는,
    스파이킹 뉴럴 네트워크 동작 방법.
  3. 제1항에 있어서,
    상기 스파이크 시퀀스는,
    복수의 스파이크들을 가지는 경우, 상기 복수의 스파이크들의 각각은 상기 스파이크 시퀀스의 복수의 비트 위치들에서 다른 스파이크의 비트 위치에 대해 동등한 간격을 가지도록 분배된,
    스파이킹 뉴럴 네트워크 연산 방법.
  4. 제1항에 있어서,
    상기 스파이크 시퀀스들로 변환하는 단계는,
    상기 대상 레이어 출력들이 지시하는 복수의 정수값들(integer values) 각각을 주소로하여 대응하는 스파이크 시퀀스가 기록된 룩업 테이블(lookup table)을 로드하는 단계; 및
    상기 대상 레이어 출력들 중 하나의 대상 출력에 대하여, 상기 로드된 룩업 테이블에 기초하여 상기 대상 출력이 지시하는 정수값을 주소로 디코딩하여 대응하는 스파이크 시퀀스를 선택하는 단계
    를 포함하는 스파이킹 뉴럴 네트워크 동작 방법.
  5. 제4항에 있어서,
    상기 스파이크 시퀀스들로 변환하는 단계는,
    상기 선택된 스파이크 시퀀스에 대하여 스파이크 비율(ratio)을 동일하게 유지하면서 랜덤(random)으로 생성된 비트(bit) 개수만큼 시프트(shift)함으로써 변경된 스파이크 시퀀스를 생성하는 단계
    를 포함하는 스파이킹 뉴럴 네트워크 동작 방법.
  6. 제1항에 있어서,
    상기 스파이킹 뉴럴 네트워크의 트레이닝에 기초하여 업데이트된 상기 스파이킹 뉴럴 네트워크의 부동소수점 가중치(weight)들을 클리핑(clipping)하는 단계;
    상기 클리핑된 가중치들을 양자화(quantization)하기 위한 최소 비트 수를 목표 정확도(target accuracy)에 기초하여 결정하는 단계;
    상기 결정된 최소 비트 수로 클리핑된 가중치를 정수값으로 양자화하는 단계; 및
    상기 양자화된 가중치를 상기 스파이킹 뉴럴 네트워크에 적용하는 단계
    를 더 포함하는 스파이킹 뉴럴 네트워크 동작 방법.
  7. 제6항에 있어서,
    상기 클리핑하는 단계는,
    상기 대상 레이어에 대한 부동소수점 가중치들의 평균(mean) 및 표준편차(standard deviation)에 기초하여 서로 상이한 양의 한계값 및 음의 한계값을 선택하는 단계;
    상기 선택된 양의 한계값에 기초하여 양의 부동소수점 가중치들을 클리핑하고, 상기 선택된 음의 한계값에 기초하여 음의 부동소수점 가중치들을 클리핑하는 단계
    를 포함하는 스파이킹 뉴럴 네트워크 동작 방법.
  8. 제6항에 있어서,
    상기 양자화하는 단계는,
    상기 대상 레이어에 대하여 스파이크의 생성에 사용되는 부동 소수점 임계 전압(threshold voltage)을 정수 임계 전압으로 보상(compensate)하는 단계
    를 포함하는 스파이킹 뉴럴 네트워크 동작 방법.
  9. 제8항에 있어서,
    상기 보상하는 단계는,
    상기 대상 레이어의 모든 뉴런들 각각에 대하여, 대상 뉴런의 양자화된 정수 가중치들의 합 및 부동 소수점 가중치들의 합(sum)을 산출하고, 상기 산출된 부동 소수점 가중치들의 합에 대한 상기 양자화된 정수 가중치들의 합의 비율을 산출하는 단계; 및
    상기 대상 레이어의 모든 뉴런들 각각에 대하여 산출된 비율의 평균(mean)을 부동 소수점 임계 전압에 곱하여 정수 임계 전압을 산출하는 단계
    를 포함하는 스파이킹 뉴럴 네트워크 동작 방법.
  10. 하드웨어와 결합되어 제1항 내지 제9항 중 어느 하나의 항의 방법을 실행시키기 위하여 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.
  11. 스파이킹 뉴럴 네트워크 연산 장치에 있어서,
    상기 스파이킹 뉴럴 네트워크에 포함된 복수의 레이어들 중 대상 레이어에서 입력 스파이크 시퀀스들을 수신하고, 상기 대상 레이어의 출력들을 스파이크 간 간격이 동등한 출력 스파이크 시퀀스들로 변환하며, 상기 변환된 출력 스파이크 시퀀스들을 상기 대상 레이어의 다음 레이어로 전파하는 프로세서
    를 포함하는 스파이킹 뉴럴 네트워크 연산 장치.
  12. 제11항에 있어서,
    상기 스파이크 시퀀스는,
    입력 데이터에 포함될 수 있는 입력 값 범위의 최대 값에 기초하여 결정된 시퀀스 길이를 갖는,
    스파이킹 뉴럴 네트워크 연산 장치.
  13. 제11항에 있어서,
    상기 스파이크 시퀀스는,
    복수의 스파이크들을 가지는 경우, 상기 복수의 스파이크들의 각각은 상기 스파이크 시퀀스의 복수의 비트 위치들에서 다른 스파이크의 비트 위치에 대해 동등한 간격을 가지도록 분배된,
    스파이킹 뉴럴 네트워크 연산 장치.
  14. 제11항에 있어서,
    상기 프로세서는,
    상기 대상 레이어 출력들이 지시하는 복수의 정수값들 각각을 주소로하여 대응하는 스파이크 시퀀스가 기록된 룩업 테이블을 로드하고, 상기 대상 레이어 출력들 중 하나의 대상 출력에 대하여, 상기 로드된 룩업 테이블에 기초하여 상기 대상 출력이 지시하는 정수값을 주소로 디코딩하여 대응하는 스파이크 시퀀스를 선택하는,
    스파이킹 뉴럴 네트워크 연산 장치.
  15. 제14항에 있어서,
    상기 프로세서는,
    상기 선택된 스파이크 시퀀스에 대하여 스파이크 비율을 동일하게 유지하면서 랜덤으로 생성된 비트 개수만큼 시프트함으로써 변경된 스파이크 시퀀스를 생성하는,
    스파이킹 뉴럴 네트워크 연산 장치.
  16. 제11항에 있어서,
    상기 프로세서는,
    상기 스파이킹 뉴럴 네트워크의 트레이닝에 기초하여 업데이트된 상기 스파이킹 뉴럴 네트워크의 부동소수점 가중치들을 클리핑하고, 상기 클리핑된 가중치들을 양자화하기 위한 최소 비트 수를 목표 정확도에 기초하여 결정하며, 상기 결정된 최소 비트 수로 클리핑된 가중치를 정수값으로 양자화하고, 상기 양자화된 가중치를 상기 스파이킹 뉴럴 네트워크에 적용하는,
    스파이킹 뉴럴 네트워크 연산 장치.
  17. 제16항에 있어서,
    상기 프로세서는,
    상기 대상 레이어에 대한 부동소수점 가중치들의 평균 및 표준편차에 기초하여 서로 상이한 양의 한계값 및 음의 한계값을 선택하고, 상기 선택된 양의 한계값에 기초하여 양의 부동소수점 가중치들을 클리핑하고, 상기 선택된 음의 한계값에 기초하여 음의 부동소수점 가중치들을 클리핑하는,
    스파이킹 뉴럴 네트워크 연산 장치.
  18. 제16항에 있어서,
    상기 프로세서는,
    상기 대상 레이어에 대하여 스파이크의 생성에 사용되는 부동 소수점 임계 전압을 정수 임계 전압으로 보상하는,
    스파이킹 뉴럴 네트워크 연산 장치.
  19. 제18항에 있어서,
    상기 프로세서는,
    상기 대상 레이어의 모든 뉴런들 각각에 대하여, 대상 뉴런의 양자화된 정수 가중치들의 합 및 부동 소수점 가중치들의 합(sum)을 산출하고, 상기 산출된 부동 소수점 가중치들의 합에 대한 상기 양자화된 정수 가중치들의 합의 비율을 산출하며, 상기 대상 레이어의 모든 뉴런들 각각에 대하여 산출된 비율의 평균(mean)을 부동 소수점 임계 전압에 곱하여 정수 임계 전압을 산출하는,
    스파이킹 뉴럴 네트워크 연산 장치.
KR1020210064885A 2020-11-23 2021-05-20 스파이킹 뉴럴 네트워크를 최적화하는 방법 및 장치 KR102637568B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20200157950 2020-11-23
KR1020200157950 2020-11-23

Publications (2)

Publication Number Publication Date
KR20220071091A true KR20220071091A (ko) 2022-05-31
KR102637568B1 KR102637568B1 (ko) 2024-02-19

Family

ID=81780108

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210064885A KR102637568B1 (ko) 2020-11-23 2021-05-20 스파이킹 뉴럴 네트워크를 최적화하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102637568B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140129067A (ko) * 2012-02-08 2014-11-06 퀄컴 인코포레이티드 스파이킹 뉴럴 연산을 위한 방법들 및 장치
JP2017126332A (ja) * 2016-01-13 2017-07-20 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コア・ベース・ニューロモーフィック・システムにおいて確率的スパイク・パターンを効率的に生成するためのシステムおよび方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140129067A (ko) * 2012-02-08 2014-11-06 퀄컴 인코포레이티드 스파이킹 뉴럴 연산을 위한 방법들 및 장치
JP2017126332A (ja) * 2016-01-13 2017-07-20 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コア・ベース・ニューロモーフィック・システムにおいて確率的スパイク・パターンを効率的に生成するためのシステムおよび方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
A. Yousefzadeh 등. "Conversion of Synchronous Artificial Neural Network to Asynchronous Spiking Neural Network using sigma-delta quantization". AICAS* *
Intel AI Lab. "Neural Network Distiller: Quantization Algorithms"* *
Jose Rodrigues de Oliveira Neto 등. "Neural Encoding and Spike Generation for Spiking Neural Networks implemented in FPGA". 2015 International Conference on Electronics, Communications and Computers* *

Also Published As

Publication number Publication date
KR102637568B1 (ko) 2024-02-19

Similar Documents

Publication Publication Date Title
US12008461B2 (en) Method for determining neuron events based on cluster activations and apparatus performing same method
Bu et al. Optimal ANN-SNN conversion for high-accuracy and ultra-low-latency spiking neural networks
US11853875B2 (en) Neural network apparatus and method
US11308398B2 (en) Computation method
KR102399548B1 (ko) 뉴럴 네트워크를 위한 방법 및 그 방법을 수행하는 장치
Yan et al. Near lossless transfer learning for spiking neural networks
US10671912B2 (en) Spatio-temporal spiking neural networks in neuromorphic hardware systems
KR20200004700A (ko) 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치
KR20200106475A (ko) 인공신경망의 비트 양자화 방법 및 시스템
CN113222102B (zh) 用于神经网络模型量化的优化方法
KR20190130443A (ko) 뉴럴 네트워크의 양자화 방법 및 장치
US20220284298A1 (en) Method and apparatus for pruning neural networks
EP3882823A1 (en) Method and apparatus with softmax approximation
US11429771B2 (en) Hardware-implemented argmax layer
Yan et al. CQ $^{+} $+ Training: Minimizing Accuracy Loss in Conversion From Convolutional Neural Networks to Spiking Neural Networks
KR102637568B1 (ko) 스파이킹 뉴럴 네트워크를 최적화하는 방법 및 장치
KR102478256B1 (ko) 랭크 오더 코딩 기반 스파이킹 cnn 연산 방법 및 그 처리기
KR20210116182A (ko) 소프트맥스 연산 근사화 방법 및 장치
US20200193276A1 (en) Neuromorphic Neuron Apparatus For Artificial Neural Networks
Dinh et al. FBW-SNN: a fully binarized weights-spiking neural networks for edge-AI applications
US11727252B2 (en) Adaptive neuromorphic neuron apparatus for artificial neural networks
KR102384588B1 (ko) 신경망 연산방법 및 신경망 가중치 생성방법
KR20220040234A (ko) 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
KR20230092286A (ko) 효율적이고 정확한 이진화된 심층 스파이킹 신경망
WO2022084765A1 (en) Neural apparatus for a neural network system

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant