KR20210152244A - 뉴럴 네트워크를 구현하는 장치 및 그 동작 방법 - Google Patents
뉴럴 네트워크를 구현하는 장치 및 그 동작 방법 Download PDFInfo
- Publication number
- KR20210152244A KR20210152244A KR1020200069100A KR20200069100A KR20210152244A KR 20210152244 A KR20210152244 A KR 20210152244A KR 1020200069100 A KR1020200069100 A KR 1020200069100A KR 20200069100 A KR20200069100 A KR 20200069100A KR 20210152244 A KR20210152244 A KR 20210152244A
- Authority
- KR
- South Korea
- Prior art keywords
- feature map
- neural network
- time domain
- input
- processor
- Prior art date
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 121
- 238000000034 method Methods 0.000 title claims description 52
- 239000013598 vector Substances 0.000 claims abstract description 122
- 230000015654 memory Effects 0.000 claims abstract description 70
- 230000002123 temporal effect Effects 0.000 claims abstract description 7
- 230000004913 activation Effects 0.000 claims description 97
- 238000001994 activation Methods 0.000 claims description 97
- 230000000946 synaptic effect Effects 0.000 claims description 43
- 238000010606 normalization Methods 0.000 claims description 41
- 238000013139 quantization Methods 0.000 claims description 40
- 230000006870 function Effects 0.000 claims description 38
- 238000012937 correction Methods 0.000 claims description 4
- 230000001131 transforming effect Effects 0.000 claims 3
- 230000001537 neural effect Effects 0.000 abstract description 16
- 210000000225 synapse Anatomy 0.000 abstract description 4
- 210000002569 neuron Anatomy 0.000 description 53
- 239000010410 layer Substances 0.000 description 42
- 238000010586 diagram Methods 0.000 description 28
- 238000012545 processing Methods 0.000 description 16
- 230000000875 corresponding effect Effects 0.000 description 13
- 239000011159 matrix material Substances 0.000 description 12
- 230000008569 process Effects 0.000 description 12
- 210000004027 cell Anatomy 0.000 description 7
- 238000007667 floating Methods 0.000 description 6
- 230000001242 postsynaptic effect Effects 0.000 description 6
- 210000005215 presynaptic neuron Anatomy 0.000 description 6
- 210000003050 axon Anatomy 0.000 description 5
- 210000004556 brain Anatomy 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 238000013178 mathematical model Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 210000005056 cell body Anatomy 0.000 description 3
- 210000001787 dendrite Anatomy 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000011176 pooling Methods 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000007786 learning performance Effects 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 239000002858 neurotransmitter agent Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 210000003463 organelle Anatomy 0.000 description 2
- 239000002356 single layer Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000017105 transposition Effects 0.000 description 2
- 210000003855 cell nucleus Anatomy 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 239000003302 ferromagnetic material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 210000003470 mitochondria Anatomy 0.000 description 1
- 238000013143 model size reduction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000000653 nervous system Anatomy 0.000 description 1
- 210000004940 nucleus Anatomy 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 229910000314 transition metal oxide Inorganic materials 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
- G06N3/065—Analogue means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Image Analysis (AREA)
Abstract
뉴럴 네트워크를 구현하는 뉴로모픽 장치는 적어도 하나의 프로그램이 저장된 메모리, 크로스바 어레이 회로를 포함하는 온-칩 메모리 및 적어도 하나의 프로그램을 실행함으로써 뉴럴 네트워크를 구동하는 적어도 하나의 프로세서를 포함할 수 있다.
적어도 하나의 프로세서는, 바이너리 가중치 값들을 상기 크로스바 어레이 회로에 포함되는 시냅스 회로들에 저장하고, 메모리로부터 입력 피처맵을 획득하고, 입력 피처맵을 시간 도메인 바이너리 벡터들로 변환할 수 있다. 또한, 적어도 하나의 프로세서는, 시간 도메인 바이너리 벡터들을 상기 크로스바 어레이 회로의 입력 값들로 제공하고, 바이너리 가중치 값들과 상기 시간 도메인 바이너리 벡터들 간의 컨벌루션 연산을 수행함으로써 출력 피처맵을 출력할 수 있다.
적어도 하나의 프로세서는, 바이너리 가중치 값들을 상기 크로스바 어레이 회로에 포함되는 시냅스 회로들에 저장하고, 메모리로부터 입력 피처맵을 획득하고, 입력 피처맵을 시간 도메인 바이너리 벡터들로 변환할 수 있다. 또한, 적어도 하나의 프로세서는, 시간 도메인 바이너리 벡터들을 상기 크로스바 어레이 회로의 입력 값들로 제공하고, 바이너리 가중치 값들과 상기 시간 도메인 바이너리 벡터들 간의 컨벌루션 연산을 수행함으로써 출력 피처맵을 출력할 수 있다.
Description
뉴럴 네트워크를 구현하는 장치 및 그 동작 방법에 관한다.
메모리 중심의 뉴럴 네트워크 장치는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 메모리 중심의 뉴럴 네트워크 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 메모리 중심의 뉴럴 네트워크를 활용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다.
따라서, 메모리 중심의 뉴럴 네트워크를 이용하여 대량의 입력 데이터를 실시간으로 분석하여, 원하는 정보를 추출하기 위해서는 연산을 효율적으로 처리할 수 있는 기술이 요구된다.
뉴럴 네트워크를 이용하여 화학 구조를 생성하는 장치 및 방법을 제공하는데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는 데 있다. 해결하려는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 개시의 제1 측면은, 뉴럴 네트워크를 구현하는 뉴로모픽 장치에 있어서, 적어도 하나의 프로그램이 저장된 메모리; 크로스바 어레이 회로를 포함하는 온-칩 메모리(on-chip memory); 및 상기 적어도 하나의 프로그램을 실행함으로써 뉴럴 네트워크를 구동하는 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 바이너리 가중치 값들을 상기 크로스바 어레이 회로에 포함되는 시냅스 회로들에 저장하고, 상기 메모리로부터 입력 피처맵(input feature map)을 획득하고, 상기 입력 피처맵을 시간 도메인 바이너리 벡터들(temporal domain binary vectors)로 변환하고, 상기 시간 도메인 바이너리 벡터들을 상기 크로스바 어레이 회로의 입력 값들로 제공하고, 상기 바이너리 가중치 값들과 상기 시간 도메인 바이너리 벡터들 간의 컨벌루션 연산을 수행함으로써 출력 피처맵(output feature map)을 출력하는 것인, 뉴로모픽 장치할 수 있다.
본 개시의 제 2 측면은, 뉴럴 네트워크를 구현하는 뉴럴 네트워크 장치에 있어서, 적어도 하나의 프로그램이 저장된 메모리; 및 상기 적어도 하나의 프로그램을 실행함으로써 뉴럴 네트워크를 구동하는 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 바이너리 가중치 값들 및 입력 피처맵을 상기 메모리로부터 획득하고, 상기 입력 피처맵을 시간 도메인 바이너리 벡터들로 변환하고, 상기 바이너리 가중치 값들과 상기 시간 도메인 바이너리 벡터들 간의 컨벌루션 연산을 수행함으로써 출력 피처맵을 출력하는 것인, 뉴럴 네트워크 장치를 제공할 수 있다.
본 개시의 제 3 측면은, 뉴로모픽 장치에서 뉴럴 네트워크를 구현하는 방법에 있어서, 바이너리 가중치 값들을 크로스바 어레이 회로에 포함되는 시냅스 회로들에 저장하는 단계; 메모리로부터 입력 피처맵을 획득하는 단계; 상기 입력 피처맵을 시간 도메인 바이너리 벡터들로 변환하는 단계; 상기 시간 도메인 바이너리 벡터들을 상기 크로스바 어레이 회로의 입력 값들로 제공하는 단계; 및 상기 바이너리 가중치 값들과 상기 시간 도메인 바이너리 벡터들 간의 컨벌루션 연산을 수행함으로써 출력 피처맵을 출력하는 단계;를 포함하는, 방법을 제공할 수 있다.
본 개시의 제 4 측면은, 뉴럴 네트워크 장치에서 뉴럴 네트워크를 구현하는 방법에 있어서, 바이너리 가중치 값들 및 입력 피처맵을 메모리로부터 획득하는 단계; 상기 입력 피처맵을 시간 도메인 바이너리 벡터들로 변환하는 단계; 및 상기 바이너리 가중치 값들과 상기 시간 도메인 바이너리 벡터들 간의 컨벌루션 연산을 수행함으로써 출력 피처맵을 출력하는 단계;를 포함하는, 방법을 제공할 수 있다.
본 개시의 제 5 측면은, 제 3 및 제 4 측면의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공할 수 있다.
전술한 본 개시의 과제 해결 수단에 의하면, 바이너리 가중치 값 및 시간 도메인 바이너리 벡터를 이용함으로써, 모델 사이즈 및 연산량을 줄일 수 있다.
또한, 본 개시의 다른 과제 해결 수단 중 하나에 의하면 바이너리 가중치 값과 시간 도메인 바이너리 벡터 간의 시간 축 XNOR 연산을 수행함으로써, 멀티 비트 데이터를 이용하는 뉴럴 네트워크와 유사한 수준의 학습 성능 및 최종 분류/인식 정확도를 확보할 수 있다.
도 1은 생물학적 뉴런과, 생물학적 뉴런의 동작을 모사한 수학적 모델을 설명하기 위한 도면이다.
도 2a 내지 도 2b는 일 실시예에 따른 뉴로모픽 장치의 동작 방법을 설명하기 위한 도면이다.
도 3a 내지 도 3b는 일 실시예에 따른 벡터-행렬 곱셈과 크로스바 어레이에서 수행되는 연산을 비교하기 위한 도면이다.
도 4는 일 실시예에 따른 뉴로모픽 장치에서 컨벌루션 연산이 수행되는 예시를 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 뉴럴 네트워크에서 수행되는 연산을 설명하기 위한 도면이다.
도 6a 내지 도 6c는 일 실시예에 따른 초기 가중치 값들을 바이너리 가중치 값들로 변환하는 예시를 설명하기 위한 도면이다.
도 7a 내지 도 7b는 일 실시예에 따른 입력 피처맵을 시간 도메인 바이너리 벡터들로 변환하는 예시를 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 바이너리 가중치 값들과 시간 도메인 바이너리 벡터들을 배치 정규화 과정에 적용하는 것을 설명하기 위한 도면이다.
도 9는 일 실시예에 따른 폰노이만 구조를 이용하는 뉴럴 네트워크 장치의 블록도를 도시한 도면이다.
도 10은 일 실시예에 따른 인메모리 구조를 이용하는 뉴로모픽 장치의 블록도를 도시한 도면이다.
도 11은 일 실시예에 따른 뉴럴 네트워크 장치에서 뉴럴 네트워크를 구현하는 방법을 설명하기 위한 흐름도이다.
도 12는 일 실시예에 따른 뉴로모픽 장치에서 뉴럴 네트워크를 구현하는 방법을 설명하기 위한 흐름도이다.
도 13은 일 실시예에 따른 뉴럴 네트워크 장치의 하드웨어 구성을 도시한 블록도이다.
도 14는 일 실시예에 따른 뉴로모픽 장치의 하드웨어 구성을 도시한 블록도이다.
도 2a 내지 도 2b는 일 실시예에 따른 뉴로모픽 장치의 동작 방법을 설명하기 위한 도면이다.
도 3a 내지 도 3b는 일 실시예에 따른 벡터-행렬 곱셈과 크로스바 어레이에서 수행되는 연산을 비교하기 위한 도면이다.
도 4는 일 실시예에 따른 뉴로모픽 장치에서 컨벌루션 연산이 수행되는 예시를 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 뉴럴 네트워크에서 수행되는 연산을 설명하기 위한 도면이다.
도 6a 내지 도 6c는 일 실시예에 따른 초기 가중치 값들을 바이너리 가중치 값들로 변환하는 예시를 설명하기 위한 도면이다.
도 7a 내지 도 7b는 일 실시예에 따른 입력 피처맵을 시간 도메인 바이너리 벡터들로 변환하는 예시를 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 바이너리 가중치 값들과 시간 도메인 바이너리 벡터들을 배치 정규화 과정에 적용하는 것을 설명하기 위한 도면이다.
도 9는 일 실시예에 따른 폰노이만 구조를 이용하는 뉴럴 네트워크 장치의 블록도를 도시한 도면이다.
도 10은 일 실시예에 따른 인메모리 구조를 이용하는 뉴로모픽 장치의 블록도를 도시한 도면이다.
도 11은 일 실시예에 따른 뉴럴 네트워크 장치에서 뉴럴 네트워크를 구현하는 방법을 설명하기 위한 흐름도이다.
도 12는 일 실시예에 따른 뉴로모픽 장치에서 뉴럴 네트워크를 구현하는 방법을 설명하기 위한 흐름도이다.
도 13은 일 실시예에 따른 뉴럴 네트워크 장치의 하드웨어 구성을 도시한 블록도이다.
도 14는 일 실시예에 따른 뉴로모픽 장치의 하드웨어 구성을 도시한 블록도이다.
본 명세서에서 다양한 곳에 등장하는 "일부 실시예에서" 또는 "일 실시예에서" 등의 어구는 반드시 모두 동일한 실시예를 가리키는 것은 아니다.
본 개시의 일부 실시예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들의 일부 또는 전부는, 특정 기능들을 실행하는 다양한 개수의 하드웨어 및/또는 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 본 개시의 기능 블록들은 하나 이상의 마이크로프로세서들에 의해 구현되거나, 소정의 기능을 위한 회로 구성들에 의해 구현될 수 있다. 또한, 예를 들어, 본 개시의 기능 블록들은 다양한 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능 블록들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 개시는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. “매커니즘”, “요소”, “수단” 및 “구성”등과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다.
또한, 도면에 도시된 구성 요소들 간의 연결 선 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것일 뿐이다. 실제 장치에서는 대체 가능하거나 추가된 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들에 의해 구성 요소들 간의 연결이 나타내어질 수 있다.
이하 첨부된 도면을 참고하여 본 개시를 상세히 설명하기로 한다.
도 1은 생물학적 뉴런과, 생물학적 뉴런의 동작을 모사한 수학적 모델을 설명하기 위한 도면이다.
생물학적 뉴런은 인간의 신경계에 존재하는 세포를 의미한다. 생물학적 뉴런은 기초적인 생물학적 계산 개체의 하나이다. 인간의 두뇌는 대략 1000억개 정도의 생물학적 뉴런과 생물학적 뉴런들 사이의 100조개 정도의 연결(interconnect)을 포함하고 있다.
도 1을 참조하면, 생물학적 뉴런(10)은 단일 세포이다. 생물학적 뉴런(10)은 세포핵(nucleus) 및 다양한 세포기관(organelles)을 포함하는 세포체(neuron cell body)를 포함한다. 다양한 세포기관은 미토콘드리아, 세포체로부터 방사되는 다수의 수상돌기들(dendrites) 및 많은 분기 확장선(extension)들에서 종단하는 축색돌기(axon)를 포함한다.
일반적으로, 축색돌기는 뉴런으로부터 다른 뉴런으로 신호들을 송신하는 기능을 수행하고, 수상돌기는 다른 뉴런으로부터 신호를 수신하는 기능을 수행한다. 예를 들어, 서로 다른 뉴런들이 연결되어 있는 경우 뉴런의 축색돌기를 통해 전달된 신호는 다른 뉴런의 수상돌기에 의해 수신될 수 있다. 이때, 뉴런들 사이에서 신호는 시냅스(synapse)라 지칭되는 특화된 연결을 통해 전달되며, 여러 뉴런들이 서로 연결되어 신경망(neural network)을 형성한다. 시냅스를 기준으로 신경전달물질(neurotransmitter)을 분비하는 뉴런은 프리 시냅틱 뉴런(pre-synaptic neuron)으로 지칭되고, 신경전달물질을 통해 전달되는 정보를 받는 뉴런은 포스트 시냅틱 뉴런(post-synaptic neuron)이라고 지칭될 수 있다.
한편, 인간의 두뇌는 많은 수의 뉴런들이 서로 연결되어 형성되는 신경망을 통해 다양한 신호들을 전달 및 처리함으로써 방대한 양의 정보를 학습하고 기억할 수 있다. 인간의 두뇌 내의 뉴런들 사이의 방대한 수의 연결들은 생물학적 컴퓨팅의 거대 병렬 속성(massively parallel nature)에 직접 상관되는바, 인공 신경망을 모사하여 방대한 양의 정보를 효율적으로 처리하기 위한 다양한 시도가 있어왔다. 예를 들어, 인공 신경망을 뉴런 수준에서 구현하기 위해 설계된 컴퓨팅 시스템으로서, 뉴로모픽 장치가 연구되고 있다.
한편, 생물학적 뉴런(10)의 동작은 수학적 모델(11)로 모사될 수 있다. 생물학적 뉴런(10)에 대응하는 수학적 모델(11)은 뉴로모픽 연산의 일 예로서, 다수의 뉴런들로부터의 정보에 대해 시냅틱 가중치를 곱하는 곱셈 연산, 시냅틱 가중치가 곱해진 값들(ω0x0, ω1x1, ω2x2)에 대한 덧셈 연산(Σ), 및 덧셈 연산 결과에 대해 특성 함수(b) 및 활성 함수(f)를 적용하는 연산을 포함할 수 있다. 뉴로모픽 연산에 의해 뉴로모픽 연산 결과가 제공될 수 있다. 여기서, x0, x1, x2, ... 등의 값들은 액손 값들에 해당하고, ω0, ω1, ω2, ... 등의 값들은 시냅틱 가중치들에 해당한다.
도 2a 내지 도 2b는 일 실시예에 따른 뉴로모픽 장치의 동작 방법을 설명하기 위한 도면이다.
도 2a를 참조하면, 뉴로모픽 장치는 크로스바 어레이 회로 유닛을 포함할 수 있다. 크로스바 어레이 회로 유닛은 복수의 크로스바 어레이 회로들을 포함할 수 있으며, 각각의 크로스바 어레이 회로들은 RCA(Resistive Crossbar Memory Arrays)로 구현될 수 있다. 구체적으로, 각각의 크로스바 어레이 회로들은 프리 시냅틱 뉴런에 대응되는 입력 노드(input node, 210), 포스트 시냅틱 뉴런에 대응되는 뉴런 회로(220), 및 입력 노드(210)와 뉴런 회로(220) 사이의 연결을 제공하는 시냅스 회로(230)를 포함할 수 있다.
일 실시예에서 뉴로모픽 장치의 크로스바 어레이 회로는, 4개의 입력 노드(210), 4개의 뉴런 회로(220), 및 16개의 시냅스 회로(230)를 포함하고 있으나, 이들 개수는 다양하게 변형될 수 있다. 입력 노드(210)의 개수가 N개(여기서, N은 2 이상의 자연수임)이고, 뉴런 회로(220)의 개수가 M개(여기서, M은 2 이상의 자연수이고, N과 같거나 다를 수 있음)인 경우, N*M개의 시냅스 회로(230)가 매트릭스 형태로 배열될 수 있다.
구체적으로, 입력 노드(210)와 연결되고 제1 방향(예를 들어, 가로 방향)으로 연장하는 배선(21)과, 뉴런 회로(220)와 연결되고 제1 방향과 교차하는 제2 방향(예를 들어, 세로 방향)으로 연장하는 배선(22)이 제공될 수 있다. 이하, 설명의 편의를 위하여, 제1 방향으로 연장하는 배선(21)을 로우 배선(row line)이라 하고, 제2 방향으로 연장하는 배선(22)을 컬럼 배선(column line)이라 하기로 한다. 복수의 시냅스 회로(230)는 로우 배선(21)과 컬럼 배선(22)의 교차점마다 배치되어 대응하는 로우 배선(21)과 대응하는 컬럼 배선(22)을 서로 연결시킬 수 있다.
입력 노드(210)는 신호, 예컨대 특정 데이터에 해당하는 신호를 생성하여 로우 배선(21)으로 보내는 역할을 수행하고, 뉴런 회로(220)는 시냅스 회로(230)를 거친 시냅틱 신호를 컬럼 배선(22)을 통하여 수신하고 처리하는 역할을 수행할 수 있다. 입력 노드(210)는 액손(axon)에 대응하고, 뉴런 회로(220)는 뉴런(neuron)에 대응할 수 있다. 그러나, 프리 시냅틱 뉴런인지 포스트 시냅틱 뉴런인지 여부는 다른 뉴런과의 상대적인 관계에 의해 결정될 수 있다. 예컨대, 입력 노드(210)가 다른 뉴런과의 관계에서 시냅틱 신호를 수신하는 경우 포스트 시냅틱 뉴런으로 기능할 수 있다. 유사하게, 뉴런 회로(220)가 다른 뉴런과의 관계에서 신호를 보내는 경우 프리 시냅틱 뉴런으로 기능할 수 있다.
입력 노드(210)와 뉴런 회로(220) 사이의 연결은 시냅스 회로(230)를 통하여 이루어질 수 있다. 여기서, 시냅스 회로(230)는 양단에 인가되는 전기적 펄스 예컨대, 전압 또는 전류에 따라 전기적 전도도(electrical conductance) 혹은 가중치(weight)가 변하는 소자이다.
시냅스 회로(230)는 예컨대, 가변 저항 소자를 포함할 수 있다. 가변 저항 소자는 양단에 인가되는 전압 또는 전류에 따라 서로 다른 저항 상태 사이에서 스위칭할 수 있는 소자로서, 복수의 저항 상태를 가질 수 있는 다양한 물질 예컨대, 전이 금속 산화물, 페로브스카이트(perovskite)계 물질 등과 같은 금속 산화물, 칼코게나이드(chalcogenide)계 물질 등과 같은 상변화 물질, 강유전 물질, 강자성 물질 등을 포함하는 단일막 구조 또는 다중막 구조를 가질 수 있다. 가변 저항 소자 및/또는 시냅스 회로(230)가 고저항 상태에서 저저항 상태로 변하는 동작을 셋(set) 동작이라 하고, 저저항 상태에서 고저항 상태로 변하는 동작을 리셋(reset) 동작이라 할 수 있다.
뉴로모픽 장치의 동작을 도 2b를 참조하여 설명하면 아래와 같다. 설명의 편의를 위하여 로우 배선(21)을 위쪽에서부터 순서대로 제1 로우 배선(21A), 제2 로우 배선(21B), 제3 로우 배선(21C), 및 제4 로우 배선(21D)이라 칭하고, 컬럼 배선(22)을 좌측에서부터 순서대로 제1 컬럼 배선(22A), 제2 컬럼 배선(22B), 제3 컬럼 배선(22C), 및 제4 컬럼 배선(22D)이라 칭한다.
도 2b를 참조하면, 최초 상태에서, 시냅스 회로(230) 전부는 전도도가 상대적으로 낮은 상태 즉, 고저항 상태에 있을 수 있다. 일부 시냅스 회로(230)가 저저항 상태인 경우, 이들을 고저항 상태로 만드는 초기화 동작이 추가로 필요할 수 있다. 시냅스 회로(230) 각각은 저항 및/또는 전도도 변화에 요구되는 소정의 임계값을 가질 수 있다. 보다 구체적으로, 각 시냅스 회로(230)의 양단에 소정 임계값보다 작은 크기의 전압 또는 전류가 인가되면 시냅스 회로(230)의 전도도는 변하지 않고, 시냅스 회로(230)에 소정 임계값보다 큰 전압 또는 전류가 인가되면 시냅스 회로(230)의 전도도는 변화할 수 있다.
이 상태에서, 특정 데이터를 특정 컬럼 배선(22)의 결과로 출력하는 동작을 수행하기 위하여, 입력 노드(210)의 출력에 대응하여 특정 데이터에 해당하는 입력 신호가 로우 배선(21)으로 들어올 수 있다. 이때, 입력 신호는 로우 배선(21) 각각에 대한 전기적 펄스의 인가로 나타날 수 있다. 예컨대, 로우 배선(21)으로 '0011'의 데이터에 해당하는 입력 신호가 들어오는 경우, '0'에 대응하는 로우 배선(21) 예컨대, 제1 및 제2 로우 배선(21A, 21B)에는 전기적 펄스가 인가되지 않고, '1'에 대응하는 로우 배선(21) 예컨대, 제3 및 제4 로우 배선(21C, 21D)에만 전기적 펄스가 인가될 수 있다. 이때, 컬럼 배선(22)은 출력을 위하여 적절한 전압 또는 전류로 구동될 수 있다.
일례로서, 특정 데이터를 출력할 컬럼 배선(22)이 이미 정하여진 경우, 이 컬럼 배선(22)은 '1'에 대응하는 로우 배선(21)과의 교차점에 위치하는 시냅스 회로(230)가 셋 동작시 요구되는 전압(이하, 셋 전압) 이상의 크기를 갖는 전압을 인가받도록 구동되고, 나머지 컬럼 배선(22)은 나머지 시냅스 회로(230)가 셋 전압보다 작은 크기의 전압을 인가받도록 구동될 수 있다. 예컨대, 셋 전압의 크기가 Vset이고, '0011'의 데이터를 출력할 컬럼 배선(22)이 제3 컬럼 배선(22C)으로 정하여진 경우, 제3 컬럼 배선(22C)과 제3 및 제4 로우 배선(21C, 21D)과의 교차점에 위치하는 제1 및 제2 시냅스 회로(230A, 230B)가 Vset 이상의 전압을 인가받도록, 제3 및 제4 로우 배선(21C, 21D)에 인가되는 전기적 펄스의 크기는 Vset 이상일 수 있고 제3 컬럼 배선(22C)에 인가되는 전압은 0V일 수 있다. 그에 따라 제1 및 제2 시냅스 회로(230A, 230B)는 저저항 상태가 될 수 있다. 저저항 상태의 제1 및 제2 시냅스 회로(230A, 230B)의 전도도는 전기적 펄스의 개수가 증가할수록 점진적으로 증가할 수 있다. 인가되는 전기적 펄스의 크기 및 폭은 실질적으로 일정할 수 있다. 제1 및 제2 시냅스 회로(230A, 230B)를 제외한 나머지 시냅스 회로(230)는 Vset 보다 작은 전압을 인가받도록, 나머지 컬럼 배선 즉, 제1, 제2, 및 제4 컬럼 배선(22A, 22B, 22D)에 인가되는 전압은 0V와 Vset 사이의 값 예컨대, 1/2Vset의 값을 가질 수 있다. 그에 따라, 제1 및 제2 시냅스 회로(230A, 230B)를 제외한 나머지 시냅스 회로(230)의 저항 상태는 변화하지 않을 수 있다.
다른 일례로서, 특정 데이터를 출력할 컬럼 배선(22)이 정하여져 있지 않을 수도 있다. 이러한 경우, 특정 데이터에 해당하는 전기적 펄스를 로우 배선(21)으로 인가하면서 컬럼 배선(22) 각각에 흐르는 전류를 측정하여 가장 먼저 소정 임계 전류에 도달하는 컬럼 배선(22) 예컨대, 제3 컬럼 배선(22C)이 특정 데이터를 출력한 컬럼 배선(22)이 될 수 있다.
이상으로 설명한 방식에 의하여, 서로 다른 데이터가 서로 다른 컬럼 배선(22)에 각각 출력될 수 있다.
도 3a 내지 도 3b는 일 실시예에 따른 벡터-행렬 곱셈과 크로스바 어레이에서 수행되는 연산을 비교하기 위한 도면이다.
먼저 도 3a를 참조하면, 입력 피처맵과 가중치 값 간의 컨벌루션 연산은 벡터-행렬 곱셈(vector-matrix multiplication)을 이용하여 수행될 수 있다. 예를 들어, 입력 피처맵의 픽셀 데이터는 행렬 X(310)로 표현될 수 있고, 가중치 값들은 행렬 W(311)로 표현될 수 있다. 출력 피처맵의 픽셀 데이터는, 행렬 X(310)와 행렬 W(311) 간의 곱셈 연산 결과 값인 행렬 Y(312)로 표현될 수 있다.
도 3b를 참조하면, 크로스바 어레이의 비휘발성 메모리 소자를 이용하여 벡터 곱셈 연산이 수행될 수 있다. 도 3a와 비교하여 설명하면, 입력 피처맵의 픽셀 데이터는 비휘발성 메모리 소자의 입력 값으로 수신될 수 있으며, 입력 값은 전압(320)일 수 있다. 또한, 가중치 값들은 비휘발성 메모리 소자의 시냅스 즉, 메모리 셀에 저장될 수 있으며, 메모리 셀에 저장된 가중치 값들은 컨덕턴스(321)일 수 있다. 따라서, 비휘발성 메모리 소자의 출력 값은, 전압(320) 및 컨덕턴스(321) 간의 곱셈 연산 결과 값인 전류(322)로 표현될 수 있다.
도 4는 일 실시예에 따른 뉴로모픽 장치에서 컨벌루션 연산이 수행되는 예시를 설명하기 위한 도면이다.
뉴로모픽 장치는 입력 피처맵(410)의 픽셀들을 제공받을 수 있고, 뉴로모픽 장치의 크로스바 어레이 회로(400)는 RCA(Resistive Crossbar Memory Arrays)로 구현될 수 있다.
뉴로모픽 장치는 디지털 신호 형태의 입력 피처맵 수신할 수 있으며, DAC(Digital Analog Converter, 420)를 이용하여, 입력 피처맵을 아날로그 신호 형태의 전압으로 변환할 수 있다. 일 실시예에서, 뉴로모픽 장치는 DAC(420)를 이용하여 입력 피처맵의 픽셀 값들을 전압으로 변환한 후, 전압을 크로스바 어레이 회로(400)의 입력 값(401)으로 제공할 수 있다.
또한, 뉴로모픽 장치의 크로스바 어레이 회로(400)에는 학습된 가중치 값들이 저장될 수 있다. 가중치 값들은 크로스바 어레이 회로의 메모리 셀에 저장될 수 있으며 메모리 셀에 저장된 가중치 값들은 컨덕턴스(402)일 수 있다. 이 때, 뉴로모픽 장치는 입력 값(401)과 컨덕턴스(402) 간의 벡터 곱셈 연산을 수행함으로써 출력 값을 산출할 수 있으며, 출력 값은 전류(403)로 표현될 수 있다. 즉, 뉴로모픽 장치는 크로스바 어레이 회로(400)를 이용하여 입력 피처맵과 가중치 값들 간의 컨벌루션 연산 결과와 동일한 결과 값을 출력할 수 있다.
크로스바 어레이 회로(400)에서 출력된 전류(403)는 아날로그 신호이므로, 전류(403)를 다른 크로스바 어레이 회로의 입력 피처맵으로 사용하기 위해 뉴로모픽 장치는 ADC(Analog Digital Converter, 430)를 이용할 수 있다. 뉴로모픽 장치는 ADC(430)를 이용하여, 아날로그 신호인 전류(403)를 디지털 신호로 변환할 수 있다. 일 실시예에서 뉴로모픽 장치는 ADC(430)를 이용하여, 전류(403)를 입력 피처맵(410)의 픽셀들과 동일한 비트 수의 디지털 신호로 변환할 수 있다. 예를 들어, 입력 피처맵(410)이 픽셀들이 4-비트의 데이터인 경우, 뉴로모픽 장치는 ADC(430)를 이용하여 전류(403)를 4-비트의 데이터로 변환할 수 있다.
뉴로모픽 장치는 활성화 유닛(440)을 이용하여, ADC(430)에서 변환된 디지털 신호에 활성화 함수를 적용할 수 있다. 활성화 함수로는 Sigmoid 함수, Tanh 함수, 및 ReLU(Rectified Linear Unit) 함수를 이용할 수 있으나, 디지털 신호에 적용할 수 있는 활성화 함수는 이에 제한되지 않는다.
활성화 함수가 적용된 디지털 신호는 다른 크로스바 어레이 회로(450)의 입력 피처맵으로 이용될 수 있다. 활성화 함수가 적용된 디지털 신호가 다른 크로스바 어레이 회로(450)의 입력 피처맵으로 이용되는 경우, 상술한 과정이 다른 크로스바 어레이 회로(450)에 동일하게 적용될 수 있다.
도 5는 일 실시예에 따른 뉴럴 네트워크에서 수행되는 연산을 설명하기 위한 도면이다.
도 5를 참조하면, 뉴럴 네트워크(500)는 입력 레이어, 히든 레이어들 및 출력 레이어를 포함하는 구조를 가지며, 수신되는 입력 데이터(예를 들어, I1 및 I2)를 기초로 연산을 수행하고, 수행 결과를 기초로 출력 데이터(예를 들어, O1 및 O2)를 생성할 수 있다.
예를 들어, 도 5에 도시된 바와 같이, 뉴럴 네트워크(500)는 입력 레이어(Layer 1), 2개의 히든 레이어들(Layer 2 및 Layer 3) 및 출력 레이어(Layer 4)를 포함할 수 있다. 뉴럴 네트워크(500)는 유효한 정보를 처리할 수 있는 보다 많은 레이어들을 포함하므로, 뉴럴 네트워크(500)는 싱글 레이어를 갖는 뉴럴 네트워크보다 복잡한 데이터 집합들을 처리할 수 있다. 한편, 뉴럴 네트워크(500)는 4개의 레이어들을 포함하는 것으로 도시되어 있으나, 이는 예시에 불과할 뿐 뉴럴 네트워크(500)는 더 적거나 많은 레이어들을 포함하거나, 더 적거나 많은 채널들을 포함할 수 있다. 즉, 뉴럴 네트워크(500)는 도 5에 도시된 것과는 다른, 다양한 구조의 레이어들을 포함할 수 있다.
뉴럴 네트워크(500)에 포함된 레이어들 각각은 복수의 채널들을 포함할 수 있다. 채널은 뉴런(neuron), 프로세싱 엘리먼트(Processing element, PE), 유닛(unit) 또는 이와 유사한 용어들로 알려진, 복수의 인공 노드(artificial node)들에 해당될 수 있다. 예를 들어, 도 5에 도시된 바와 같이, Layer 1은 2개의 채널들(노드들), Layer 2 및 Layer 3 각각은 3개의 채널들을 포함할 수 있다. 다만, 이는 예시에 불과할 뿐 뉴럴 네트워크(500)에 포함된 레이어들 각각은 다양한 개수의 채널들(노드들)을 포함할 수 있다.
뉴럴 네트워크(500)의 레이어들 각각에 포함된 채널들은 서로 연결되어 데이터를 처리할 수 있다. 예를 들어, 하나의 채널은 다른 채널들로부터 데이터를 수신하여 연산할 수 있고, 연산 결과를 또 다른 채널들로 출력할 수 있다.
채널들 각각의 입력 및 출력 각각은 입력 피처맵 및 출력 피처맵으로 지칭될 수 있다. 입력 피처맵은 복수의 입력 액티베이션들을 포함하고, 출력 피처맵은 복수의 출력 액티베이션들을 포함할 수 있다. 즉, 피처맵 또는 액티베이션은 한 채널의 출력임과 동시에, 다음 레이어에 포함된 채널들의 입력에 해당되는 파라미터일 수 있다.
한편, 채널들 각각은 이전 레이어에 포함된 채널들로부터 수신된 액티베이션들 및 가중치 값들에 기초하여 자신의 액티베이션을 결정할 수 있다. 가중치 값은 각 채널에서의 출력 액티베이션을 계산하기 위해 이용되는 파라미터로서, 채널들 간의 연결관계에 할당되는 값일 수 있다.
채널들 각각은 입력을 수신하여 출력 액티베이션을 출력하는 연산 유닛(computational unit) 또는 프로세싱 엘리먼트(processing element)에 의해 처리될 수 있고, 채널들 각각의 입력-출력은 매핑될 수 있다. 예를 들어, 는 액티베이션 함수(activation function)이고, 는 (i-1)번째 레이어에 포함된 k번째 채널로부터 i번째 레이어에 포함된 j번째 채널로의 가중치 값이며, 는 i번째 레이어에 포함된 j번째 채널의 바이어스(bias)고, 는 i번째 레이어의 j번째 채널의 액티베이션이라고 할 때, 액티베이션 는 다음과 같은 수학식 1을 이용하여 계산될 수 있다.
도 5에 도시된 바와 같이, 2번째 레이어(Layer 2)의 첫 번째 채널(CH 1)의 액티베이션은 로 표현될 수 있다. 또한, 는 수학식 1에 따라 의 값을 가질 수 있다. 다만, 앞서 설명한 수학식 1은 뉴럴 네트워크(500)에서 데이터를 처리하기 위해 이용되는 액티베이션 및 가중치 값을 설명하기 위한 예시일 뿐, 이에 제한되지 않는다. 액티베이션은 이전 레이어로부터 수신된 액티베이션들의 합(sum)에 배치 정규화(batch normalization) 및 활성화 함수(activation function)를 적용함으로써 획득된 값일 수 있다.
도 6a 내지 도 6c는 일 실시예에 따른 초기 가중치 값들을 바이너리 가중치 값들로 변환하는 예시를 설명하기 위한 도면이다.
도 6a를 참조하면, 입력 레이어(601)와 출력 레이어(602) 그리고 초기 가중치 값들(W11, W12, ..., W32, W33)이 도시된다. 입력 레이어(601)의 세 개의 뉴런들 각각에는 세 개의 입력 액티베이션(I1, I2, I3)이 대응되고, 출력 레이어(602)의 세 개의 뉴런들 각각에는 세 개의 출력 액티베이션(O1, O2, O3)이 대응될 수 있다. 또한, 제n 번째 입력 액티베이션(In)과 제m 번째 출력 액티베이션(Om)은 초기 가중치 값 Wnm이 적용될 수 있다.
도 6b의 초기 가중치 값들(610)은 도 6a에 따른 초기 가중치 값들(W11, W12, ..., W32, W33)을 행렬로 표현한 것이다.
뉴럴 네트워크의 학습 과정에서 초기 가중치 값들(610)이 결정될 수 있다. 일 실시예에서 초기 가중치 값들(610)은 32비트의 부동 소수점(floating point)으로 표현될 수 있다.
초기 가중치 값들(610)은 바이너리 가중치 값들(620)로 변환될 수 있다. 바이너리 가중치 값들(620)은 1비트의 크기를 가질 수 있다. 본 발명에서는 뉴럴 네트워크의 추론 과정에서 초기 가중치 값들(610) 대신 바이너리 가중치 값들(620)을 이용함으로써, 모델 사이즈 및 연산량을 줄일 수 있다. 예를 들어, 32비트의 초기 가중치 값들(610)을 1비트의 바이너리 가중치 값들(620)로 변환할 경우 모델 사이즈를 1/32만큼 압축할 수 있다.
일 실시예에서, 초기 가중치 값들(610)의 최대값과 최소값에 기초하여, 초기 가중치 값들(610)은 바이너리 가중치 값들(620)로 변환될 수 있다. 다른 실시예에서, 뉴럴 네트워크에 입력 가능한 초기 가중치 값들의 최대값과 최소값에 기초하여, 초기 가중치 값들(610)은 바이너리 가중치 값들(620)로 변환될 수 있다.
예를 들어, 뉴럴 네트워크에 입력 가능한 초기 가중치 값들의 최대값이 1.00이고 최소값이 -1.00일 수 있다. 초기 가중치 값이 0.00 이상인 경우 바이너리 가중치 값 1로 변환되고, 초기 가중치 값이 0.00 미만인 경우 바이너리 가중치 값 -1로 변환될 수 있다.
또한, 바이너리 가중치 값들(620)에는 초기 가중치 값들(610)의 절대 값의 평균 값(630)이 곱해질 수 있다. 바이너리 가중치 값들(620)에 초기 가중치 값들(610)의 절대 값의 평균 값(630)이 곱해짐으로써, 바이너리 가중치 값들(620)을 이용하는 경우에도 초기 가중치 값들(610)을 이용하는 경우와 유사한 결과 값을 얻을 수 있다.
예를 들어, 이전 레이어에 1024개의 뉴런이 존재하고 현재 레이어에 512개의 뉴런이 존재한다고 가정하면, 현재 레이어에 속한 512개의 뉴런은 각각 1024개의 초기 가중치 값들(610)을 갖게 되는데, 각 뉴런별로 1024개의 32비트 부동소수점의 초기 가중치 값들(610)의 절대값의 평균값이 계산된 후, 계산 결과는 바이너리 가중치 값들(620)에 곱해질 수 있다.
구체적으로 소정의 출력 액티베이션(O1, O2, O3)을 산출하는데 이용되는 초기 가중치 값들(610)의 절대 값의 평균 값이, 소정의 출력 액티베이션(O1, O2, O3)을 산출하는데 이용되는 초기 가중치 값들(610)에 곱해질 수 있다.
예를 들어, 도 6a를 참조하면, 제1 출력 액티베이션(O1)이 산출되는 과정에서는 초기 가중치 값 W11, W21 및 W31이 이용될 수 있다. 초기 가중치 값 W11, W21 및 W31 각각은 바이너리 가중치 값 W11', W21' 및 W31'으로 변환되고, 바이너리 가중치 값 W11', W21' 및 W31'에는 초기 가중치 값 W11, W21 및 W31의 절대 값의 평균 값 이 곱해질 수 있다.
마찬가지 방식으로, 바이너리 가중치 값 W12', W22' 및 W32'에는 초기 가중치 값 W12, W22 및 W32의 절대 값의 평균 값 이 곱해질 수 있다. 또한, 바이너리 가중치 값 W13', W23' 및 W33'에는 초기 가중치 값 W13, W23 및 W33의 절대 값의 평균 값 이 곱해질 수 있다.
도 6c를 참조하면, 초기 가중치 값들(610), 바이너리 가중치 값들(620) 및 초기 가중치 값들(610)의 절대 값의 평균 값(630)이 구체적인 수치로 도시된다. 도 6c에서는 설명의 편의를 위해 초기 가중치 값들(610)을 10진수로 표현하였으나, 초기 가중치 값들(610)은 32비트의 부동 소수점인 것을 전제로 한다.
도 6c에서는 초기 가중치 값이 0.00 이상인 경우 바이너리 가중치 값 1로 변환되고, 초기 가중치 값이 0.00 미만인 경우 바이너리 가중치 값 -1로 변환되는 것이 도시된다.
또한, 초기 가중치 값 W11, W21 및 W31의 절대 값의 평균 값은 '0.28', 초기 가중치 값 W12, W22 및 W32의 절대 값의 평균 값은 '0.37', 초기 가중치 값 W13, W23 및 W33의 절대 값의 평균 값은 '0.29'인 것이 도시된다.
도 7a 내지 도 7b는 일 실시예에 따른 입력 피처맵을 시간 도메인 바이너리 벡터들로 변환하는 예시를 설명하기 위한 도면이다.
입력 피처맵은 복수의 시간 도메인 바이너리 벡터들로 변환될 수 있다. 입력 피처맵은 복수의 입력 액티베이션들을 포함할 수 있고, 복수의 입력 액티베이션들 각각은, 시간 도메인 바이너리 벡터로 변환될 수 있다.
입력 피처맵은 양자화 레벨에 기초하여 복수의 시간 도메인 바이너리 벡터들로 변환될 수 있다. 일 실시예에서, 뉴럴 네트워크에 입력 가능한 입력 액티베이션의 최대값과 최소값 사이의 범위가 N개(N은 자연수)의 양자화 레벨로 구분될 수 있다. 예를 들어, 양자화 레벨의 구분을 위해서는 sigmoid 함수 또는 tanh 함수 등이 이용될 수 있으나, 이에 제한되지 않는다.
예를 들어, 도 7a를 참조하면, 양자화 레벨이 9개로 설정되고, 뉴럴 네트워크에 입력 가능한 입력 액티베이션의 최대값과 최소값이 각각 1.0, -1.0인 경우, 양자화 레벨은 '1.0, 0.75, 0.5, 0.25, 0, -0.25, -0.5, -0.75, -1.0'으로 구분될 수 있다.
한편, 도 7a에서는 양자화 레벨 간의 간격이 동일하게 설정되는 것으로 도시되었으나, 양자화 레벨 간의 간격은 비선형으로 설정될 수도 있다.
양자화 레벨이 N개로 설정된 경우, 시간 도메인 바이너리 벡터는 N-1개의 엘리먼트를 가질 수 있다. 예를 들어, 도 7a를 참조하면, 양자화 레벨이 9개로 설정된 경우, 시간 도메인 바이너리 벡터는 8개의 엘리먼트(t1, t2, ..., t7, t8)를 가질 수 있다.
입력 액티베이션이 N개의 양자화 레벨 중 어느 양자화 레벨에 속하는지에 기초하여, 입력 액티베이션은 시간 도메인 바이너리 벡터로 변환될 수 있다. 예를 들어, 소정의 입력 액티베이션이 0.75 이상의 값을 갖는 경우, 소정의 입력 액티베이션은 시간 도메인 바이너리 벡터 '+1, +1, +1, +1, +1, +1, +1, +1'로 변환될 수 있다. 또한, 예를 들어, 소정의 입력 액티베이션이 -0.25 미만 및 -0.5 이상의 값을 갖는 경우, 소정의 입력 액티베이션은 시간 도메인 바이너리 벡터 '+1, +1, +1, -1, -1, -1, -1, -1'로 변환될 수 있다.
도 7b를 참조하면, 입력 피처맵(710)에 포함된 복수의 입력 액티베이션들 각각이 시간 바이너리 벡터로 변환되는 예시가 도시된다. 제1 액티베이션은 0 미만 및 -0.25 이상의 값을 가지므로 시간 도메인 바이너리 벡터 '-1, -1, -1, -1, +1, +1, +1, +1'로 변환될 수 있고, 제2 액티베이션은 0.5 미만 및 0.25 이상의 값을 가지므로 시간 도메인 바이너리 벡터 '-1, -1, +1, +1, +1, +1, +1, +1'로 변환될 수 있다. 또한, 제3 액티베이션은 -0.75 미만 및 -1.0 이상의 값을 가지므로 시간 도메인 바이너리 벡터 '-1, -1, -1, -1, -1, -1, -1, +1'로 변환될 수 있고, 제4 액티베이션은 0.75 이상의 값을 가지므로 시간 도메인 바이너리 벡터 '+1, +1, +1, +1, +1, +1, +1, +1'로 변환될 수 있다.
한편, 종래의 방식으로 뉴럴 네트워크의 각 레이어의 입력 액티베이션들 각각을 바이너리 값으로 변환시킬 경우, 입력 액티베이션들이 지니는 정보가 상실되어, 레이어 간의 정보 전달이 정상적으로 이루어지지 않을 수 있다.
반면, 본 개시에서와 같이, 뉴럴 네트워크의 각 레이어의 입력 액티베이션들 각각을 시간 도메인 바이너리 벡터로 변환할 경우, 복수개의 바이너리 값들을 기반으로 본래의 입력 액티베이션들을 근사해낼 수 있다.
도 8은 일 실시예에 따른 바이너리 가중치 값들과 시간 도메인 바이너리 벡터들을 배치 정규화 과정에 적용하는 것을 설명하기 위한 도면이다.
일반적으로 뉴럴 네트워크 알고리즘 모델에서는 입력 액티베이션(최초의 입력 값 또는 이전 레이어의 출력 값)과 초기 가중치 값(32비트의 부동 소수점)의 곱과 그 결과의 합산(MAC: multiply and accumulate)을 수행한 후, 각 뉴런 별로 별도의 바이어스 값을 추가로 더해준다. 그리고 그 결과 값에 대하여 뉴런 별로 배치 정규화(batch normalization)을 수행한다. 그리고 그 결과를 활성화 함수에 입력한 후, 활성화 함수 출력 값을 다음 레이어의 입력 값으로 전달한다.
이는 수학식 2와 같이 표현할 수 있다. 수학식 2에서 In은 입력 액티베이션, Wnm은 초기 가중치 값, Bm은 바이어스 값, αm 은 배치 정규화의 초기 스케일 값, βm은 배치 정규화의 바이어스 값, f는 활성화 함수, Om은 출력 액티베이션을 의미한다.
도 8을 참조하면, 입력 액티베이션 In(810)은 시간 도메인 바이너리 벡터 Ib n(t)(820)로 변환될 수 있다. 시간 도메인 바이너리 벡터 생성부(Temporal binary vector generator)는 입력 액티베이션 In(810)을 시간 도메인 바이너리 벡터 Ib n(t)(820)로 변환할 수 있다.
도 7a 내지 도 7b에서 상술한 바와 같이, 기설정된 양자화 레벨에 따라 입력 액티베이션 In(810)은 시간 도메인 바이너리 벡터 Ib n(t)(820)로 변환될 수 있다. 한편, 시간 도메인 바이너리 벡터 Ib n(t)(820) 각각에 포함되는 엘리먼트의 개수는 양자화 레벨의 개수에 따라 결정될 수 있다. 예를 들어, 양자화 레벨의 개수가 N개인 경우 시간 도메인 바이너리 벡터 Ib n(t)(820) 각각에 포함되는 엘리먼트의 개수는 N-1개일 수 있다.
한편, 입력 액티베이션 In(810)이 시간 도메인 바이너리 벡터 Ib n(t)(820)로 변환될 경우, 시간 도메인 바이너리 벡터 Ib n(t)(820)를 이용한 연산 결과는 시간 도메인 바이너리 벡터 Ib n(t)(820)에 포함된 엘리먼트들의 개수 T(850)만큼 증폭될 수 있다. 이에 따라, 시간 도메인 바이너리 벡터 Ib n(t)(820)를 이용하는 경우, 연산 결과를 엘리먼트들의 개수 T(850)만큼 나눠야 본래의 MAC 연산 결과와 동일한 결과를 얻을 수 있다. 이에 대한 구체적인 설명은 수학식 5 및 수학식 6을 이용하여 설명하기로 한다.
도 6a 내지 도 6c에서 상술한 바와 같이, 초기 가중치 값 Wnm은 바이너리 가중치 값 Wb nm(830)으로 변환될 수 있다. 예를 들어, sign 함수를 통해 초기 가중치 값 Wnm은 바이너리 가중치 값 Wb nm(830)으로 변환될 수 있다.
시간 도메인 바이너리 벡터 Ib n(t)(820)와 바이너리 가중치 값 Wb nm(830) 간의 컨벌루션 연산이 수행될 수 있다. 일 실시예에서, 시간 도메인 바이너리 벡터 Ib n(t)(820)와 바이너리 가중치 값 Wb nm(830) 간의 XNOR 연산 및 가산(adding) 연산이 수행될 수 있다.
시간 도메인 바이너리 벡터 Ib n(t)(820)와 바이너리 가중치 값 Wb nm(830) 간의 XNOR 연산을 수행한 후, 그 결과를 모두 합하면, 본래의 멀티 비트 입력 액티베이션 In(810)과 바이너리 초기 가중치 값 Wnm 간의 컨벌루션 연산을 수행한 결과와 동일한 증감 양상을 보이게 된다.
시간 도메인 바이너리 벡터 Ib n(t)(820)와 바이너리 가중치 값 Wb nm(830) 간의 연산은 아래의 수학식 3과 같이 표현할 수 있다.
컨벌루션 연산 결과로서 중간 액티베이션 Xm(840)이 산출될 수 있다. 중간 액티베이션 Xm(840)은 아래 수학식 4와 같이 나타낼 수 있다.
중간 액티베이션 Xm(840)에는 초기 가중치 값들의 절대 값의 평균 값 Sm(860)이 곱해질 수 있다
또한, 중간 액티베이션 Xm(840)에는 시간 도메인 바이너리 벡터 Ib n(t)(820) 각각에 포함된 엘리먼트들의 개수 T(850)로 나누어질 수 있다. 시간 도메인 바이너리 벡터 Ib n(t)(820) 각각에 포함된 엘리먼트들의 개수는 양자화 레벨의 개수에 따라 결정될 수 있다. 시간 도메인 바이너리 벡터 Ib n(t)(820)를 이용한 연산 결과는 엘리먼트들의 개수 T(850)만큼 증폭되므로, 중간 액티베이션 Xm(840)을 엘리먼트들의 개수 T(850)로 나눔으로써 본래의 MAC 연산 결과와 동일한 결과를 얻을 수 있다.
중간 액티베이션 Xm(840)에 초기 가중치 값들의 절대 값의 평균 값 Sm(860)이 곱해지고, 시간 도메인 바이너리 벡터 Ib n(t)(820) 각각에 포함된 엘리먼트들의 개수 T(860)로 나누어짐으로써, 출력 액티베이션 Om(870)이 산출될 수 있다. 출력 액티베이션 Om(870)은 아래 수학식 5와 같이 나타낼 수 있다.
일 실시예에서 배치 정규화가 수행되는 경우, 배치 정규화의 초기 스케일 값에 대해 초기 가중치 값들의 절대 값의 평균 값 Sm(860)이 곱해지고, 시간 도메인 바이너리 벡터 Ib n(t)(820)에 포함된 엘리먼트들의 개수 T(850)가 나누어짐으로써 수정 스케일 값 α"m(modified scale value)이 산출될 수 있다.
수학식 2에 따른 뉴럴 네트워크 알고리즘 모델에, 바이너리 가중치 값 Wb nm, 시간 도메인 바이너리 벡터 Ib nt, 및 수정 스케일 값 α"m을 적용할 경우, 수학식 2는 아래의 수학식 6과 같이 표현될 수 있다.
본 개시에서는 멀티 비트의 부동 소수점으로 표현되는 초기 가중치 값 Wnm을, +1 또는 -1을 갖는 바이너리 가중치 값 Wb nm(830)으로 변환함으로써, 모델 사이즈 및 연산량을 줄일 수 있다.
본 개시에서는 바이너리 가중치 값 Wb nm(830)에 초기 가중치 값들의 절대 값의 평균 값 Sm(860)을 곱함으로써, 바이너리 가중치 값 Wb nm(830)을 이용하는 경우에도 초기 가중치 값 Wnm을 이용하는 경우와 유사한 결과 값을 얻을 수 있다.
한편, 초기 가중치 값들의 절대 값의 평균 값 Sm(860)은 상기 수학식 6과 같이 배치 정규화 연산에 포함시킬 수 있으므로 (Mm X αm), 모델 파라미터가 추가적으로 발생되어 모델 사이즈 절감에 손실이 발행하지 않고, 또한 연산량 절감에도 손실이 발생하지 않게 된다. 즉, 수학식 2와 비교했을 때, 수학식 6에서는 별도의 파라미터 및 별도의 절차가 추가되지 않고 연산이 수행될 수 있음을 확인할 수 있다.
본 개시에서는 멀티 비트의 입력 액티베이션 In(810)을 2비트 내지 3비트의 낮은 비트 수로 양자화한 후, 이를 복수의 엘리먼트를 갖는 시간 도메인 바이너리 벡터 Ib n(t)(820)로 변환할 수 있다. 또한, 본 개시에서는 바이너리 가중치 값 Wb nm(830)과 시간 도메인 바이너리 벡터 Ib n(t)(820) 간의 시간 축 XNOR 연산을 수행함으로써, 바이너리 MAC 연산을 기반으로 한 32비트 부동 소수점 뉴럴 네트워크와 유사한 수준의 학습 성능 및 최종 분류/인식 정확도를 확보할 수 있다.
한편, 엘리먼트들의 개수 T(860)는 상기 수학식 6과 같이 배치 정규화 연산에 포함시킬 수 있으므로 (αm X 1/T), 모델 파라미터가 추가적으로 발생되어 모델 사이즈 절감에 손실이 발행하지 않고, 또한 연산량 절감에도 손실이 발생하지 않게 된다. 즉, 수학식 2와 비교했을 때, 수학식 6에서는 별도의 파라미터 및 별도의 절차가 추가되지 않고 연산이 수행될 수 있음을 확인할 수 있다.
예를 들어, 32비트의 입력 액티베이션 In(810)을 T개의 엘리먼트를 갖는 시간 도메인 바이너리 벡터 Ib n(t)(820)로 변환할 경우 모델 사이즈를 T/32만큼 압축할 수 있다.
도 9는 일 실시예에 따른 폰노이만 구조를 이용하는 뉴럴 네트워크 장치의 블록도를 도시한 도면이다.
도 9를 참조하면, 뉴럴 네트워크 장치(900)는 외부 입력 수신부(910), 메모리(920), 시간 도메인 바이너리 벡터 생성부(930), 컨벌루션 연산부(940) 및 뉴럴 연산부(950)를 포함할 수 있다.
도 9에 도시된 뉴럴 네트워크 장치(900)에는 본 실시예들과 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴럴 네트워크 장치(900)에는 도 9에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당해 기술분야의 통상의 기술자에게 자명하다.
외부 입력 수신부(910)는 외부로부터 뉴럴 네트워크 모델 관련 정보, 입력 이미지(또는 오디오) 데이터 등을 수신할 수 있다. 외부 입력 수신부(910)로부터 수신된 각종 정보 및 데이터는 메모리(920)에 저장될 수 있다.
일 실시예에서 메모리(920)는 입력 피처맵을 저장하는 제1 메모리와 바이너리 가중치 값들, 실수 기타 파라미터, 모델 구조 정의 변수 등을 저장하는 제2 메모리로 구분될 수 있다. 한편, 메모리(920)에 저장된 바이너리 가중치 값들은, 뉴럴 네트워크의 학습이 완료된 초기 가중치 값들(예를 들어, 32비트의 부동 소수점)이 변환된 값들일 수 있다.
시간 도메인 바이너리 벡터 생성부(930)는 메모리(920)로부터 입력 피처맵을 수신할 수 있다. 시간 도메인 바이너리 벡터 생성부(930)는 입력 피처맵을 시간 도메인 바이너리 벡터들로 변환할 수 있다. 입력 피처맵은 복수의 입력 액티베이션들을 포함할 수 있고, 시간 도메인 바이너리 벡터 생성부(930)는 복수의 입력 액티베이션들 각각을 시간 도메인 바이너리 벡터로 변환할 수 있다.
구체적으로, 시간 도메인 바이너리 벡터 생성부(930)는 양자화 레벨에 기초하여 입력 피처맵을 복수의 시간 도메인 바이너리 벡터들로 변환할 수 있다. 일 실시예에서 뉴럴 네트워크에 입력 가능한 입력 액티베이션의 최대값과 최소값 사이의 범위가 N개(N은 자연수)의 양자화 레벨로 구분되는 경우, 시간 도메인 바이너리 벡터 생성부(930)는 입력 액티베이션을 N-1개의 엘리먼트를 갖는 시간 도메인 바이너리 벡터로 변환할 수 있다.
컨벌루션 연산부(940)는 메모리(920)로부터 바이너리 가중치 값들을 수신할 수 있다. 또한, 컨벌루션 연산부(940)는 시간 도메인 바이너리 벡터 생성부(930)로부터 복수의 시간 도메인 바이너리 벡터들을 수신할 수 있다.
컨벌루션 연산부(940)는 가산기(adder)를 포함할 수 있고, 컨벌루션 연산부(940)는 바이너리 가중치 값들과 복수의 시간 도메인 바이너리 벡터들 간의 컨벌루션 연산을 수행할 수 있다.
뉴럴 연산부(950)는, 컨벌루션 연산부(940)로부터 바이너리 가중치 값들과 복수의 시간 도메인 바이너리 벡터들 간의 컨번루션 연산 결과를 수신할 수 있다. 또한, 뉴럴 연산부(950)는 메모리(920)로부터 배치 정규화의 수정 스케일 값, 배치 정규화의 바이어스 값 및 활성화 함수 등을 수신할 수 있다.
뉴럴 연산부(950)에서는 배치 정규화, 풀링(pooling)이 수행되고, 활성화 함수가 적용될 수 있으나, 뉴럴 연산부(950)에서 수행 및 적용될 수 있는 연산은 이에 제한되지 않는다.
한편, 배치 정규화의 수정 스케일 값은, 초기 스케일 값에 대해 초기 가중치 값들의 절대 값의 평균 값이 곱해지고, 시간 도메인 바이너리 벡터에 포함된 엘리먼트들의 개수 T로 나눔으로써 눠 짐으로써 수정 스케일 값이 산출될 수 있다.
뉴럴 연산부(950)에서 배치 정규화가 수행되고, 활성화 함수가 적용됨으로써 출력 피처맵이 출력될 수 있다. 출력 피처맵은 복수의 출력 액티베이션들을 포함할 수 있다.
도 10은 일 실시예에 따른 인메모리 구조를 이용하는 뉴로모픽 장치의 블록도를 도시한 도면이다.
도 10을 참조하면, 뉴로모픽 장치(1000)는 외부 입력 수신부(1010), 메모리(1020), 시간 도메인 바이너리 벡터 생성부(1030), 온-칩 메모리(1040) 및 뉴럴 연산부(1050)를 포함할 수 있다.
도 10에 도시된 뉴로모픽 장치(1000)에는 본 실시예들과 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴로모픽 장치(1000)에는 도 10에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당해 기술분야의 통상의 기술자에게 자명하다.
외부 입력 수신부(1010)는 외부로부터 뉴럴 네트워크 모델 관련 정보, 입력 이미지(또는 오디오) 데이터 등을 수신할 수 있다. 외부 입력 수신부(1010)로부터 수신된 각종 정보 및 데이터는 메모리(1020)에 저장될 수 있다.
메모리(1020)는 입력 피처맵, 실수 기타 파라미터, 모델 구조 정의 변수 등을 저장할 수 있다. 도 9의 뉴럴 네트워크 장치(900)와는 달리, 바이너리 가중치 값들은 메모리(1020)가 아닌 온-칩 메모리(1040)에 저장될 수 있으며, 자세한 내용은 후술 하기로 한다.
시간 도메인 바이너리 벡터 생성부(1030)는 메모리(1020)로부터 입력 피처맵을 수신할 수 있다. 시간 도메인 바이너리 벡터 생성부(1030)는 입력 피처맵을 시간 도메인 바이너리 벡터들로 변환할 수 있다. 입력 피처맵은 복수의 입력 액티베이션들을 포함할 수 있고, 시간 도메인 바이너리 벡터 생성부(1030)는 복수의 입력 액티베이션들 각각을 시간 도메인 바이너리 벡터로 변환할 수 있다.
구체적으로, 시간 도메인 바이너리 벡터 생성부(1030)는 양자화 레벨에 기초하여 입력 피처맵을 복수의 시간 도메인 바이너리 벡터들로 변환할 수 있다. 일 실시예에서 뉴럴 네트워크에 입력 가능한 입력 액티베이션의 최대값과 최소값 사이의 범위가 N개(N은 자연수)의 양자화 레벨로 구분되는 경우, 시간 도메인 바이너리 벡터 생성부(1030)는 입력 액티베이션을 N-1개의 엘리먼트를 갖는 시간 도메인 바이너리 벡터로 변환할 수 있다.
온-칩 메모리(1040)는 입력부(1041), 크로스바 어레이 회로(1042) 및 출력부(1043)를 포함할 수 있다.
크로스바 어레이 회로(1042)에는 복수의 시냅스 회로들(예를 들어, 가변 저항)을 포함할 수 있다. 바이너리 가중치 값들은 복수의 시냅스 회로들에 저장될 수 있다. 복수의 시냅스 회로들에 저장된 바이너리 가중치 값들은, 뉴럴 네트워크의 학습이 완료된 초기 가중치 값들(예를 들어, 32비트의 부동 소수점)이 변환된 값들일 수 있다.
입력부(1041)는 시간 도메인 바이너리 벡터 생성부(1030)로부터 복수의 시간 도메인 바이너리 벡터들을 수신할 수 있다.
입력부(1041)에 복수의 시간 도메인 바이너리 벡터들이 수신되면, 크로스바 어레이 회로(1042)에서는 바이너리 가중치 값들과 복수의 시간 도메인 바이너리 벡터들 간의 컨벌루션 연산을 수행할 수 있다.
출력부(1043)는 컨벌루션 연산 결과를 뉴럴 연산부(1050)에 전달할 수 있다.
뉴럴 연산부(1050)는 출력부(1043)로부터 바이너리 가중치 값들과 복수의 시간 도메인 바이너리 벡터들 간의 컨번루션 연산 결과를 수신할 수 있다. 또한, 뉴럴 연산부(1050)는 메모리(1020)로부터 배치 정규화의 수정 스케일 값, 배치 정규화의 바이어스 값 및 활성화 함수 등을 수신할 수 있다.
뉴럴 연산부(1050)에서는 배치 정규화, 풀링이 수행되고, 활성화 함수가 적용될 수 있으나, 뉴럴 연산부(1050)에서 수행 및 적용될 수 있는 연산은 이에 제한되지 않는다.
한편, 배치 정규화의 수정 스케일 값은, 초기 스케일 값에 대해 초기 가중치 값들의 절대 값의 평균 값이 곱해지고, 시간 도메인 바이너리 벡터에 포함된 엘리먼트들의 개수 T로 나눔으로써 눠 짐으로써 수정 스케일 값이 산출될 수 있다.
뉴럴 연산부(1050)에서 배치 정규화가 수행되고, 활성화 함수가 적용됨으로써 출력 피처맵이 출력될 수 있다. 출력 피처맵은 복수의 출력 액티베이션들을 포함할 수 있다.
도 11은 일 실시예에 따른 뉴럴 네트워크 장치에서 뉴럴 네트워크를 구현하는 방법을 설명하기 위한 흐름도이다.
도 11을 참조하면, 단계 1110에서 뉴럴 네트워크 장치는 바이너리 가중치 값들 및 입력 피처맵을 메모리로부터 획득할 수 있다.
단계 1120에서 뉴럴 네트워크 장치는 입력 피처맵을 시간 도메인 바이너리 벡터들로 변환할 수 있다.
일 실시예에서, 뉴럴 네트워크 장치는 입력 피처맵에 대한 양자화 레벨에 기초하여, 입력 피처맵을 시간 도메인 바이너리 벡터들로 변환할 수 있다.
구체적으로, 뉴럴 네트워크 장치는 뉴럴 네트워크에 입력 가능한 최대값과 최소값 사이의 범위를 N개(N은 자연수)의 양자화 레벨로 구분하고, 입력 피처맵의 액티베이션들 각각이 N개의 양자화 레벨 중 어느 양자화 레벨에 속하는지에 기초하여, 액티베이션들 각각을 시간 도메인 바이너리 벡터로 변환할 수 있다.
한편, 뉴럴 네트워크 장치는 뉴럴 네트워크에 입력 가능한 최대값과 최소값 사이의 범위를 선형적인 양자화 레벨 또는 비선형적인 양자화 레벨로 구분할 수 있다.
단계 1130에서 뉴럴 네트워크 장치는 바이너리 가중치 값들과 시간 도메인 바이너리 벡터들 간의 컨벌루션 연산을 수행함으로써 출력 피처맵을 출력할 수 있다.
뉴럴 네트워크 장치는 컨벌루션 연산 결과에 대해 배치 정규화를 수행함으로써 출력 피처맵을 출력할 수 있다.
일 실시예에서 뉴럴 네트워크 장치는 배치 정규화의 초기 스케일 값에 대해, 초기 가중치 값들의 절대 값의 평균 값을 곱하고, 시간 도메인 바이너리 벡터들 각각에 포함된 엘리먼트들의 개수로 나눔으로써, 수정 스케일 값을 산출할 수 있다. 뉴럴 네트워크 장치는 수정 스케일 값에 기초하여 배치 정규화를 수행할 수 있다.
뉴럴 네트워크 장치는 뉴럴 네트워크에 적용되는 바이어스 값들 각각에 초기 스케일 값을 곱하는 곱셈 연산을 수행하고, 곱셈 연산 결과를 상기 출력 피처맵에 반영할 수 있다.
또한, 뉴럴 네트워크 장치는 컨벌루션 연산 결과에 대해 배치 정규화를 수행하고, 배치 정규화 수행 결과에 대해 활성화 함수를 적용함으로써 출력 피처맵을 출력할 수 있다.
도 12는 일 실시예에 따른 뉴로모픽 장치에서 뉴럴 네트워크를 구현하는 방법을 설명하기 위한 흐름도이다.
도 12를 참조하면, 단계 1210에서 뉴로모픽 장치는 바이너리 가중치 값들을 크로스바 어레이 회로에 포함되는 시냅스 회로들에 저장할 수 있다.
단계 1220에서 뉴로모픽 장치는 메모리로부터 입력 피처맵을 획득할 수 있다.
단계 1230에서 뉴로모픽 장치는 입력 피처맵을 시간 도메인 바이너리 벡터들로 변환할 수 있다.
일 실시예에서, 뉴로모픽 장치는 입력 피처맵에 대한 양자화 레벨에 기초하여, 입력 피처맵을 시간 도메인 바이너리 벡터들로 변환할 수 있다.
구체적으로, 뉴로모픽 장치는 뉴럴 네트워크에 입력 가능한 최대값과 최소값 사이의 범위를 N개(N은 자연수)의 양자화 레벨로 구분하고, 입력 피처맵의 액티베이션들 각각이 N개의 양자화 레벨 중 어느 양자화 레벨에 속하는지에 기초하여, 액티베이션들 각각을 시간 도메인 바이너리 벡터로 변환할 수 있다.
한편, 뉴로모픽 장치는 뉴럴 네트워크에 입력 가능한 최대값과 최소값 사이의 범위를 선형적인 양자화 레벨 또는 비선형적인 양자화 레벨로 구분할 수 있다.
단계 1240에서 뉴로모픽 장치는 시간 도메인 바이너리 벡터들을 크로스바 어레이 회로의 입력 값들로 제공할 수 있다.
단계 1250에서 뉴로모픽 장치는 바이너리 가중치 값들과 시간 도메인 바이너리 벡터들 간의 컨벌루션 연산을 수행함으로써 출력 피처맵을 출력할 수 있다.
뉴로모픽 장치는 컨벌루션 연산 결과에 대해 배치 정규화를 수행함으로써 출력 피처맵을 출력할 수 있다.
일 실시예에서 뉴로모픽 장치는 배치 정규화의 초기 스케일 값에 대해, 초기 가중치 값들의 절대 값의 평균 값을 곱하고, 시간 도메인 바이너리 벡터들 각각에 포함된 엘리먼트들의 개수로 나눔으로써, 수정 스케일 값을 산출할 수 있다. 뉴로모픽 장치는 수정 스케일 값에 기초하여 배치 정규화를 수행할 수 있다.
뉴로모픽 장치는 뉴럴 네트워크에 적용되는 바이어스 값들 각각에 초기 스케일 값을 곱하는 곱셈 연산을 수행하고, 곱셈 연산 결과를 상기 출력 피처맵에 반영할 수 있다.
또한, 뉴로모픽 장치는 컨벌루션 연산 결과에 대해 배치 정규화를 수행하고, 배치 정규화 수행 결과에 대해 활성화 함수를 적용함으로써 출력 피처맵을 출력할 수 있다.
도 13은 일 실시예에 따른 뉴럴 네트워크 장치의 하드웨어 구성을 도시한 블록도이다.
뉴럴 네트워크 장치(1300)는 PC(personal computer), 서버 디바이스, 모바일 디바이스, 임베디드 디바이스 등의 다양한 종류의 디바이스들로 구현될 수 있고, 구체적인 예로서 뉴럴 네트워크를 이용한 음성 인식, 영상 인식, 영상 분류 등을 수행하는 스마트폰, 태블릿 디바이스, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스, 자율주행 자동차, 로보틱스, 의료기기 등에 해당될 수 있으나, 이에 제한되지 않는다. 나아가서, 뉴럴 네트워크 장치(1300)는 위와 같은 디바이스에 탑재되는 전용 하드웨어 가속기(HW accelerator)에 해당될 수 있고, 뉴럴 네트워크 장치(1300)는 뉴럴 네트워크 구동을 위한 전용 모듈인 NPU(neural processing unit), TPU(Tensor Processing Unit), Neural Engine 등과 같은 하드웨어 가속기일 수 있으나, 이에 제한되지 않는다.
도 13을 참조하면, 뉴럴 네트워크 장치(1300)는 프로세서(1310) 및 메모리(1320)를 포함한다. 도 9에 도시된 뉴럴 네트워크 장치(1300)에는 본 실시예들와 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴럴 네트워크 장치(1300)에는 도 13에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당해 기술분야의 통상의 기술자에게 자명하다.
프로세서(1310)는 뉴럴 네트워크 장치(1300)를 실행하기 위한 전반적인 기능들을 제어하는 역할을 한다. 예를 들어, 프로세서(1310)는 뉴럴 네트워크 장치(1300) 내의 메모리(1320)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(1300)를 전반적으로 제어한다. 프로세서(1310)는 뉴럴 네트워크 장치(1300) 내에 구비된 CPU(central processing unit), GPU(graphics processing unit), AP(application processor) 등으로 구현될 수 있으나, 이에 제한되지 않는다.
메모리(1320)는 뉴럴 네트워크 장치(1300) 내에서 처리되는 각종 데이터들을 저장하는 하드웨어로서, 예를 들어, 메모리(1320)는 뉴럴 네트워크 장치(1300)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 메모리(1320)는 뉴럴 네트워크 장치(1300)에 의해 구동될 애플리케이션들, 드라이버들 등을 저장할 수 있다. 메모리(1320)는 DRAM(dynamic random access memory), SRAM(static random access memory) 등과 같은 RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), CD-ROM, 블루레이 또는 다른 광학 디스크 스토리지, HDD(hard disk drive), SSD(solid state drive), 또는 플래시 메모리를 포함할 수 있다.
프로세서(1310)는 메모리(1320)로부터 뉴럴 네트워크 데이터, 예를 들어 이미지 데이터, 피처맵 데이터, 가중치 값 데이터 등을 리드/라이트(read/write)하고, 리드/라이트된 데이터를 이용하여 뉴럴 네트워크를 실행한다. 뉴럴 네트워크가 실행될 때, 프로세서(1310)는 출력 피처맵에 관한 데이터를 생성하기 위하여, 입력 피처맵과 가중치 값 간의 컨벌루션 연산을 반복적으로 수행한다. 이때, 입력 피처맵의 채널 수, 가중치 값 의 채널 수, 입력 피처맵의 크기, 가중치 값 의 크기, 값의 정밀도(precision) 등의 다양한 팩터들에 의존하여 컨벌루션 연산의 연산량이 결정될 수 있다.
뉴럴 네트워크 장치(1300)에서 구동되는 실제 뉴럴 네트워크는 보다 복잡한 아키텍처로 구현될 수 있다. 이에 따라 프로세서(1310)는 수억에서 수백억에 다다를 정도로 매우 많은 연산량(operation count)의 연산들을 수행하게 되고, 프로세서(1310)가 연산을 위해 메모리(1320)에 액세스하는 빈도가 함께 비약적으로 증가될 수 밖에 없다. 이와 같은 연산량 부담으로 인하여 비교적 처리 성능이 낮은 스마트폰, 태블릿, 웨어러블 디바이스 등과 같은 모바일 디바이스, 임베디드(embedded) 디바이스 등에서는 뉴럴 네트워크의 처리가 원활하지 않을 수 있다.
프로세서(1310)는 컨벌루션 연산, 배치 정규화 연산, 풀링 연산, 활성화 함수 연산 등을 수행할 수 있다. 일 실시예에서 프로세서(1310)는 멀티헤드 셀프 어텐션을 구하기 위해 행렬 곱셈 연산, 변형 연산 및 전치 연산을 수행할 수 있다. 멀티헤드 셀프 어텐션을 구하는 과정에서, 변형 연산 및 전치 연산은 행렬 곱셈 연산 이후 또는 이전에 수행될 수 있다.
프로세서(1310)는 바이너리 가중치 값들 및 입력 피처맵을 메모리(920)로부터 획득하고, 입력 피처맵을 시간 도메인 바이너리 벡터들로 변환할 수 있다. 또한, 프로세서(1310)는 바이너리 가중치 값들과 시간 도메인 바이너리 벡터들 간의 컨벌루션 연산을 수행함으로써 출력 피처맵을 출력할 수 있다.
도 14는 일 실시예에 따른 뉴로모픽 장치의 하드웨어 구성을 도시한 블록도이다.
도 14를 참조하면, 뉴로모픽 장치(1400)는 프로세서(1410) 및 온-칩 메모리(on-chip memory, 1420)를 포함할 수 있다. 도 14에 도시된 뉴로모픽 장치(1400)에는 본 실시예들과 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴로모픽 장치(1400)에는 도 14에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당해 기술분야의 통상의 기술자에게 자명하다.
뉴로모픽 장치(1400)는 스마트폰, 드론, 태블릿 디바이스, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스, 자율주행 자동차, 로보틱스, 의료기기 등 저전력 뉴럴네트워크 구동이 필요한 디지털 시스템에 탑재될 수 있으나, 이에 제한되지 않는다.
뉴로모픽 장치(1400)는 복수의 온-칩 메모리(1420)를 포함할 수 있으며, 온-칩 메모리(1420) 각각은 복수의 크로스바 어레이 회로들로 구성될 수 있다. 크로스바 어레이 회로는 복수의 프리 시냅틱 뉴런(presynaptic neuron), 복수의 포스트 시냅틱 뉴런(postsynaptic neuron), 및 복수의 프리 시냅틱 뉴런과 복수의 포스트 시냅틱 뉴런 사이의 각각의 연결을 제공하는 시냅스 회로 즉, 메모리 셀을 포함할 수 있다. 일 실시예에서 크로스바 어레이 회로는 RCA(Resistive Crossbar Memory Arrays)로 구현될 수 있다.
외부 메모리(1430)는 뉴로모픽 장치(1400)에서 처리되는 각종 데이터들을 저장하는 하드웨어로서, 외부 메모리(1430)는 뉴로모픽 장치(1400)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 외부 메모리(1430)는 뉴로모픽 장치(1400)에 의해 구동될 애플리케이션들, 드라이버들 등을 저장할 수 있다. 외부 메모리(1430)는 DRAM(dynamic random access memory), SRAM(static random access memory) 등과 같은 RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), CD-ROM, 블루레이 또는 다른 광학 디스크 스토리지, HDD(hard disk drive), SSD(solid state drive), 또는 플래시 메모리를 포함할 수 있다.
프로세서(1410)는 뉴로모픽 장치(1400)를 구동하기 위한 전반적인 기능들을 제어하는 역할을 한다. 예를 들어, 프로세서(1410)는 뉴로모픽 장치(1400) 내의 온-칩 메모리(1420)에 저장된 프로그램들을 실행함으로써, 뉴로모픽 장치(1400)를 전반적으로 제어한다. 프로세서(1410)는 뉴로모픽 장치(1400) 내에 구비된 CPU(central processing unit), GPU(graphics processing unit), AP(application processor) 등으로 구현될 수 있으나, 이에 제한되지 않는다. 프로세서(1410)는 외부 메모리(1430)로부터 각종 데이터들을 리드/라이트(read/write)하고, 리드/라이트된 데이터를 이용하여 뉴로모픽 장치(1400)를 실행한다.
프로세서(1410)는 복수의 한계값들에 기초하여 입력 피처맵의 픽셀 값들을 이진화함으로써 복수의 바이너리 피처맵들을 생성할 수 있다. 프로세서(1410)는 복수의 바이너리 피처맵들의 픽셀 값들을 크로스바 어레이 회로 유닛의 입력 값들로 제공할 수 있다. 프로세서(1410)는 DAC(Digital Analog Converter)를 이용하여 픽셀 값들을 아날로그 신호(전압)로 변환할 수 있다.
프로세서(1410)는 크로스바 어레이 회로 유닛에 적용될 가중치 값들을 크로스바 어레이 회로 유닛에 포함되는 시냅스 회로들에 저장할 수 있다. 시냅스 회로들에 저장된 가중치 값들은 컨덕턴스일 수 있다. 또한, 프로세서(1410)는 입력 값과, 시냅스 회로들에 저장된 커널 값들 간의 곱셈 연산을 수행함으로써 크로스바 어레이 회로 유닛의 출력 값들을 산출할 수 있다.
프로세서(1410)는 크로스바 어레이 회로 유닛에서 산출된 출력 값들을 합성(merge)함으로써 출력 피처맵의 픽셀 값들을 생성할 수 있다. 한편, 크로스바 어레이 회로 유닛에서 산출된 출력 값들(또는 산출된 출력 값에 웨이트 값이 곱해진 결과 값들)은 아날로그 신호 형태(전류)이므로, 프로세서(1410)는 ADC(Analog Digital Converter)를 이용하여 출력 값들을 디지털 신호로 변환할 수 있다. 또한, 프로세서(1410)는 ADC에서 디지털 신호로 변환된 출력 값들에 활성화 함수를 적용할 수 있다.
프로세서(1410)는 바이너리 가중치 값들을 크로스바 어레이 회로에 포함되는 시냅스 회로들에 저장하고, 외부 메모리(1630)로부터 입력 피처맵을 획득할 수 있다. 또한, 프로세서(1410)는 입력 피처맵을 시간 도메인 바이너리 벡터들로 변환하고, 시간 도메인 바이너리 벡터들을 크로스바 어레이 회로의 입력 값들로 제공할 수 있다. 또한, 프로세서(1410)는 바이너리 가중치 값들과 시간 도메인 바이너리 벡터들 간의 컨벌루션 연산을 수행함으로써 출력 피처맵을 출력할 수 있다.
본 실시예들은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈과 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
또한, 본 명세서에서, "부"는 프로세서 또는 회로와 같은 하드웨어 구성(hardware component), 및/또는 프로세서와 같은 하드웨어 구성에 의해 실행되는 소프트웨어 구성(software component)일 수 있다.
전술한 본 명세서의 설명은 예시를 위한 것이며, 본 명세서의 내용이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 실시예의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 포함되는 것으로 해석되어야 한다.
Claims (20)
- 뉴럴 네트워크를 구현하는 뉴로모픽 장치에 있어서,
적어도 하나의 프로그램이 저장된 메모리;
크로스바 어레이 회로를 포함하는 온-칩 메모리(on-chip memory); 및
상기 적어도 하나의 프로그램을 실행함으로써 뉴럴 네트워크를 구동하는 적어도 하나의 프로세서를 포함하고,
상기 적어도 하나의 프로세서는,
바이너리 가중치 값들을 상기 크로스바 어레이 회로에 포함되는 시냅스 회로들에 저장하고,
상기 메모리로부터 입력 피처맵(input feature map)을 획득하고,
상기 입력 피처맵을 시간 도메인 바이너리 벡터들(temporal domain binary vectors)로 변환하고,
상기 시간 도메인 바이너리 벡터들을 상기 크로스바 어레이 회로의 입력 값들로 제공하고,
상기 바이너리 가중치 값들과 상기 시간 도메인 바이너리 벡터들 간의 컨벌루션 연산을 수행함으로써 출력 피처맵(output feature map)을 출력하는 것인, 뉴로모픽 장치. - 제 1 항에 있어서,
상기 적어도 하나의 프로세서는,
상기 컨벌루션 연산 결과에 대해 배치 정규화(batch normalization)를 수행함으로써 출력 피처맵을 출력하는, 뉴로모픽 장치. - 제 2 항에 있어서,
상기 적어도 하나의 프로세서는,
상기 배치 정규화의 초기 스케일 값에 대해, 초기 가중치 값들의 절대 값의 평균 값을 곱하고, 상기 시간 도메인 바이너리 벡터들 각각에 포함된 엘리먼트들의 개수로 나눔으로써, 수정 스케일 값(modified scale value)을 산출하고,
상기 수정 스케일 값에 기초하여 상기 배치 정규화를 수행하는 것인, 뉴로모픽 장치. - 제 3 항에 있어서,
상기 적어도 하나의 프로세서는,
상기 입력 피처맵에 대한 양자화 레벨에 기초하여, 상기 입력 피처맵을 상기 시간 도메인 바이너리 벡터들로 변환하는 것인, 뉴로모픽 장치. - 제 4 항에 있어서,
상기 적어도 하나의 프로세서는,
상기 뉴럴 네트워크에 입력 가능한 최대값과 최소값 사이의 범위를 N개(N은 자연수)의 양자화 레벨로 구분하고,
상기 입력 피처맵의 액티베이션들 각각이 상기 N개의 양자화 레벨 중 어느 양자화 레벨에 속하는지에 기초하여, 상기 액티베이션들 각각을 시간 도메인 바이너리 벡터로 변환하는 것인, 뉴로모픽 장치. - 제 5 항에 있어서,
상기 적어도 하나의 프로세서는,
상기 뉴럴 네트워크에 입력 가능한 최대값과 최소값 사이의 범위를 비선형적인 양자화 레벨로 구분하는 것인, 뉴로모픽 장치. - 제 3 항에 있어서,
상기 적어도 하나의 프로세서는,
상기 뉴럴 네트워크에 적용되는 바이어스 값들 각각에 상기 초기 스케일 값을 곱하는 곱셈 연산을 수행하고,
상기 곱셈 연산 결과를 상기 출력 피처맵에 반영하는 것인, 뉴로모픽 장치. - 제 3 항에 있어서,
상기 적어도 하나의 프로세서는,
상기 컨벌루션 연산 결과에 대해 상기 배치 정규화를 수행하고, 상기 배치 정규화 수행 결과에 대해 활성화 함수(activation function)를 적용함으로써 출력 피처맵을 출력하는 것인, 뉴로모픽 장치. - 뉴럴 네트워크를 구현하는 뉴럴 네트워크 장치에 있어서,
적어도 하나의 프로그램이 저장된 메모리; 및
상기 적어도 하나의 프로그램을 실행함으로써 뉴럴 네트워크를 구동하는 적어도 하나의 프로세서를 포함하고,
상기 적어도 하나의 프로세서는,
바이너리 가중치 값들 및 입력 피처맵을 상기 메모리로부터 획득하고,
상기 입력 피처맵을 시간 도메인 바이너리 벡터들로 변환하고,
상기 바이너리 가중치 값들과 상기 시간 도메인 바이너리 벡터들 간의 컨벌루션 연산을 수행함으로써 출력 피처맵을 출력하는 것인, 뉴럴 네트워크 장치. - 제 9 항에 있어서,
상기 적어도 하나의 프로세서는,
상기 컨벌루션 연산 결과에 대해 배치 정규화를 수행함으로써 출력 피처맵을 출력하는 것인, 뉴럴 네트워크 장치. - 제 10 항에 있어서,
상기 적어도 하나의 프로세서는,
상기 배치 정규화의 초기 스케일 값에 대해, 초기 가중치 값들의 절대 값의 평균 값을 곱하고, 상기 시간 도메인 바이너리 벡터들 각각에 포함된 엘리먼트들의 개수로 나눔으로써, 수정 스케일 값을 산출하고,
상기 수정 스케일 값에 기초하여 상기 배치 정규화를 수행하는 것인, 뉴럴 네트워크 장치. - 제 11 항에 있어서,
상기 적어도 하나의 프로세서는,
상기 입력 피처맵에 대한 양자화 레벨에 기초하여, 상기 입력 피처맵을 상기 시간 도메인 바이너리 벡터들로 변환하는 것인, 뉴럴 네트워크 장치. - 제 12 항에 있어서,
상기 적어도 하나의 프로세서는,
상기 뉴럴 네트워크에 입력 가능한 최대값과 최소값 사이의 범위를 N개(N은 자연수)의 양자화 레벨로 구분하고,
상기 입력 피처맵의 액티베이션들 각각이 상기 N개의 양자화 레벨 중 어느 양자화 레벨에 속하는지에 기초하여, 상기 액티베이션들 각각을 시간 도메인 바이너리 벡터로 변환하는 것인, 뉴럴 네트워크 장치. - 제 13 항에 있어서,
상기 적어도 하나의 프로세서는,
상기 뉴럴 네트워크에 입력 가능한 최대값과 최소값 사이의 범위를 비선형적인 양자화 레벨로 구분하는 것인, 뉴럴 네트워크 장치. - 제 11 항에 있어서,
상기 적어도 하나의 프로세서는,
상기 뉴럴 네트워크에 적용되는 바이어스 값들 각각에 상기 초기 스케일 값을 곱하는 곱셈 연산을 수행하고,
상기 곱셈 연산 결과를 상기 출력 피처맵에 반영하는 것인, 뉴럴 네트워크 장치. - 제 11 항에 있어서,
상기 적어도 하나의 프로세서는,
상기 컨벌루션 연산 결과에 대해 상기 배치 정규화를 수행하고, 상기 배치 정규화 수행 결과에 대해 활성화 함수를 적용함으로써 출력 피처맵을 출력하는 것인, 뉴럴 네트워크 장치. - 뉴로모픽 장치에서 뉴럴 네트워크를 구현하는 방법에 있어서,
바이너리 가중치 값들을 크로스바 어레이 회로에 포함되는 시냅스 회로들에 저장하는 단계;
메모리로부터 입력 피처맵을 획득하는 단계;
상기 입력 피처맵을 시간 도메인 바이너리 벡터들로 변환하는 단계;
상기 시간 도메인 바이너리 벡터들을 상기 크로스바 어레이 회로의 입력 값들로 제공하는 단계; 및
상기 바이너리 가중치 값들과 상기 시간 도메인 바이너리 벡터들 간의 컨벌루션 연산을 수행함으로써 출력 피처맵을 출력하는 단계;
를 포함하는, 방법. - 뉴럴 네트워크 장치에서 뉴럴 네트워크를 구현하는 방법에 있어서,
바이너리 가중치 값들 및 입력 피처맵을 메모리로부터 획득하는 단계;
상기 입력 피처맵을 시간 도메인 바이너리 벡터들로 변환하는 단계; 및
상기 바이너리 가중치 값들과 상기 시간 도메인 바이너리 벡터들 간의 컨벌루션 연산을 수행함으로써 출력 피처맵을 출력하는 단계;
를 포함하는, 방법. - 제 17 항의 방법을 컴퓨터에서 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
- 제 18 항의 방법을 컴퓨터에서 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200069100A KR20210152244A (ko) | 2020-06-08 | 2020-06-08 | 뉴럴 네트워크를 구현하는 장치 및 그 동작 방법 |
US17/085,300 US20210383203A1 (en) | 2020-06-08 | 2020-10-30 | Apparatus and method with neural network |
CN202011409845.8A CN113837371A (zh) | 2020-06-08 | 2020-12-04 | 用于实现神经网络的神经形态装置和方法 |
EP21153747.7A EP3923201A1 (en) | 2020-06-08 | 2021-01-27 | Apparatus and method with neural network |
JP2021094973A JP2021193565A (ja) | 2020-06-08 | 2021-06-07 | ニューラルネットワークを具現化する装置及びその動作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200069100A KR20210152244A (ko) | 2020-06-08 | 2020-06-08 | 뉴럴 네트워크를 구현하는 장치 및 그 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210152244A true KR20210152244A (ko) | 2021-12-15 |
Family
ID=74285407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200069100A KR20210152244A (ko) | 2020-06-08 | 2020-06-08 | 뉴럴 네트워크를 구현하는 장치 및 그 동작 방법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20210383203A1 (ko) |
EP (1) | EP3923201A1 (ko) |
JP (1) | JP2021193565A (ko) |
KR (1) | KR20210152244A (ko) |
CN (1) | CN113837371A (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102021118734A1 (de) * | 2020-07-22 | 2022-01-27 | Honda Motor Co., Ltd. | Bild-Identifikationsvorrichtung, Verfahren zum Durchführen einer semantischen Segregation und Programm |
TWI783854B (zh) * | 2021-03-17 | 2022-11-11 | 神盾股份有限公司 | 乘積和運算裝置 |
CN114925018B (zh) * | 2022-07-22 | 2022-10-21 | 中科声龙科技发展(北京)有限公司 | 片上交叉开关系统及芯片 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10311342B1 (en) * | 2016-04-14 | 2019-06-04 | XNOR.ai, Inc. | System and methods for efficiently implementing a convolutional neural network incorporating binarized filter and convolution operation for performing image classification |
US10678508B2 (en) * | 2018-03-23 | 2020-06-09 | Amazon Technologies, Inc. | Accelerated quantized multiply-and-add operations |
US11948074B2 (en) * | 2018-05-14 | 2024-04-02 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network parameter quantization |
US12111878B2 (en) * | 2018-10-12 | 2024-10-08 | International Business Machines Corporation | Efficient processing of convolutional neural network layers using analog-memory-based hardware |
CN110842915B (zh) * | 2019-10-18 | 2021-11-23 | 南京大学 | 一种基于忆阻交叉阵列的机器人控制系统及方法 |
US11714999B2 (en) * | 2019-11-15 | 2023-08-01 | International Business Machines Corporation | Neuromorphic device with crossbar array structure storing both weights and neuronal states of neural networks |
CN115398447A (zh) * | 2020-04-13 | 2022-11-25 | 利普麦德株式会社 | 神经网络电路的控制方法 |
US11038520B1 (en) * | 2020-04-15 | 2021-06-15 | International Business Machines Corporation | Analog-to-digital conversion with reconfigurable function mapping for neural networks activation function acceleration |
-
2020
- 2020-06-08 KR KR1020200069100A patent/KR20210152244A/ko unknown
- 2020-10-30 US US17/085,300 patent/US20210383203A1/en active Pending
- 2020-12-04 CN CN202011409845.8A patent/CN113837371A/zh active Pending
-
2021
- 2021-01-27 EP EP21153747.7A patent/EP3923201A1/en active Pending
- 2021-06-07 JP JP2021094973A patent/JP2021193565A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
CN113837371A (zh) | 2021-12-24 |
JP2021193565A (ja) | 2021-12-23 |
US20210383203A1 (en) | 2021-12-09 |
EP3923201A1 (en) | 2021-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108009640B (zh) | 基于忆阻器的神经网络的训练装置及其训练方法 | |
US11954588B2 (en) | Analog neuromorphic circuits for dot-product operation implementing resistive memories | |
US20200012924A1 (en) | Pipelining to improve neural network inference accuracy | |
CN109460817B (zh) | 一种基于非易失存储器的卷积神经网络片上学习系统 | |
CN111656368B (zh) | 硬件加速的离散式神经网络 | |
CN109754066B (zh) | 用于生成定点型神经网络的方法和装置 | |
US10740671B2 (en) | Convolutional neural networks using resistive processing unit array | |
US11087204B2 (en) | Resistive processing unit with multiple weight readers | |
US11620505B2 (en) | Neuromorphic package devices and neuromorphic computing systems | |
JP2021500646A (ja) | 人工ニューラル・ネットワークを訓練する方法および人工ニューラル・ネットワークを実施する装置(人工ニューラル・ネットワークの訓練) | |
KR20210152244A (ko) | 뉴럴 네트워크를 구현하는 장치 및 그 동작 방법 | |
CN108268938B (zh) | 神经网络及其信息处理方法、信息处理系统 | |
JP6293963B1 (ja) | ニューロモルフィック素子を含むアレイの制御装置、離散化ステップサイズの演算方法およびプログラム | |
CA3137231A1 (en) | Training of artificial neural networks | |
AU2021281628B2 (en) | Efficient tile mapping for row-by-row convolutional neural network mapping for analog artificial intelligence network inference | |
KR20210143614A (ko) | 뉴럴 네트워크를 구현하는 뉴로모픽 장치 및 그 동작 방법 | |
Sun et al. | A memristor-based convolutional neural network with full parallelization architecture | |
JP2022008236A (ja) | ニューロモルフィック装置及びニューラルネットワークを具現する方法 | |
CN111461308B (zh) | 忆阻神经网络及权值训练方法 | |
JP7507549B2 (ja) | ニューロモーフィック装置、及びニューロモーフィック装置でマルチビットニューロモーフィック演算を処理する方法 | |
Lu et al. | NVMLearn: a simulation platform for non-volatile-memory-based deep learning hardware | |
KR20240115128A (ko) | 교사 모델 없이 영상을 분류하는 뉴럴 모델을 학습시키는 뉴럴 모델 학습 장치 및 이의 제어 방법 |