KR20200069901A - 뉴럴 네트워크를 분할하는 방법 및 뉴로모픽 장치 - Google Patents

뉴럴 네트워크를 분할하는 방법 및 뉴로모픽 장치 Download PDF

Info

Publication number
KR20200069901A
KR20200069901A KR1020180157471A KR20180157471A KR20200069901A KR 20200069901 A KR20200069901 A KR 20200069901A KR 1020180157471 A KR1020180157471 A KR 1020180157471A KR 20180157471 A KR20180157471 A KR 20180157471A KR 20200069901 A KR20200069901 A KR 20200069901A
Authority
KR
South Korea
Prior art keywords
sub
neural network
core
networks
processor
Prior art date
Application number
KR1020180157471A
Other languages
English (en)
Inventor
김성호
김율화
김형준
김재준
김진석
Original Assignee
삼성전자주식회사
포항공과대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사, 포항공과대학교 산학협력단 filed Critical 삼성전자주식회사
Priority to KR1020180157471A priority Critical patent/KR20200069901A/ko
Priority to US16/561,378 priority patent/US11681899B2/en
Publication of KR20200069901A publication Critical patent/KR20200069901A/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/045Combinations of networks
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • G06N3/065Analogue means

Abstract

일 측면에 따른 뉴럴 네트워크를 구현하는 방법은, 상기 뉴럴 네트워크를 구현할 장치에 포함된 메모리의 코어의 사이즈에 기초하여 상기 뉴럴 네트워크를 복수의 서브-네트워크(sub-network)들로 분할하는 단계; 상기 서브-네트워크들에 이용되는 하이퍼-파라미터(hyper-parameter)를 초기화하는 단계; 및 상기 초기화된 하이퍼-파라미터를 이용하여 상기 서브-네트워크들을 학습하는 단계;를 포함한다.

Description

뉴럴 네트워크를 분할하는 방법 및 뉴로모픽 장치 {A method for slicing a neural network and a neuromorphic apparatus}
뉴럴 네트워크를 분할하는 방법 및 뉴로모픽 장치를 개시한다.
메모리 중심의 뉴럴 네트워크 장치(예를 들어, 뉴로모픽 장치)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 메모리 중심의 뉴럴 네트워크 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 메모리 중심의 뉴럴 네트워크를 활용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다.
따라서, 메모리 중심의 뉴럴 네트워크를 이용하여 대량의 입력 데이터를 실시간으로 분석하여, 원하는 정보를 추출하기 위해서는 연산을 효율적으로 처리할 수 있는 기술이 요구된다.
뉴럴 네트워크를 분할하는 방법 및 뉴로모픽 장치를 제공하는 데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는 데 있다. 해결하려는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
일 측면에 따른 뉴럴 네트워크를 구현하는 방법은, 상기 뉴럴 네트워크를 구현할 장치에 포함된 메모리의 코어의 사이즈에 기초하여 상기 뉴럴 네트워크를 복수의 서브-네트워크(sub-network)들로 분할하는 단계; 상기 서브-네트워크들에 이용되는 하이퍼-파라미터(hyper-parameter)를 초기화하는 단계; 및 상기 초기화된 하이퍼-파라미터를 이용하여 상기 서브-네트워크들을 학습하는 단계;를 포함한다.
다른 측면에 따른 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체를 포함한다.
또 다른 측면에 따른 뉴럴 네트워크를 구현하는 장치는, 복수의 코어들을 포함하는 온-칩 메모리(on-chip memory); 및 적어도 하나의 프로그램을 실행함으로써 뉴럴 네트워크를 구동하는 프로세서를 포함하고, 상기 프로세서는, 상기 온-칩 메모리의 코어의 사이즈에 기초하여 상기 뉴럴 네트워크를 복수의 서브-네트워크들로 분할하고, 상기 서브-네트워크들에 이용되는 하이퍼-파라미터(hyper-parameter)를 초기화하고, 상기 초기화된 하이퍼-파라미터를 이용하여 상기 서브-네트워크들을 학습한다.
도 1은 생물학적 뉴런과, 생물학적 뉴런의 동작을 모사한 수학적 모델을 설명하기 위한 도면이다.
도 2는 뉴로모픽 장치에 포함된 온-칩 메모리의 코어의 일 예를 설명하기 위한 도면이다.
도 3은 뉴로모픽 장치가 뉴럴 네트워크를 구현하는 일 예를 도시한 흐름도이다.
도 4는 뉴럴 네트워크의 아키텍처의 일 예를 설명하기 위한 도면이다.
도 5는 뉴럴 네트워크에서 입력 피처맵 및 출력 피처맵의 관계를 설명하기 위한 도면이다.
도 6은 뉴로모픽 장치에서 컨벌루션 연산이 수행되는 일 예를 설명하기 위한 도면이다.
도 7은 프로세서가 뉴럴 네트워크를 분할하는 일 예를 설명하기 위한 도면이다.
도 8은 뉴로모픽 장치가 뉴럴 네트워크를 구현하는 다른 예를 도시한 흐름도이다.
도 9는 프로세서가 서브 네트워크에 대응하는 서브 피처맵을 코어에 매핑하는 일 예를 설명하기 위한 도면이다.
도 10은 프로세서가 복수의 코어들에서 산출된 출력 값들을 합성하는 일 예를 설명하기 위한 도면이다.
도 11은 뉴로모픽 장치 및 이와 연결된 외부 메모리의 일 예를 도시한 구성도이다.
실시예들에서 사용되는 용어는 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 명세서에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 명세서의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 “…부”, “…유닛” 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
또한, 명세서에서 사용되는 '제 1' 또는 '제 2' 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용할 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로 사용될 수 있다.
아래에서는 첨부한 도면을 참고하여 실시예에 대하여 상세히 설명한다. 그러나 실시예들에 대한 설명은 권리범위를 제한하는 것으로 해석되지 말아야 하며, 해당 기술분야의 당업자가 용이하게 유추할 수 있는 것은 실시예들의 권리범위에 속하는 것으로 해석되어야 할 것이다. 이하에서는 도면을 참조하여 실시예들을 상세히 설명한다.
도 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, ... 등의 값들은 시냅틱 웨이트들에 해당한다.
도 2는 뉴로모픽 장치에 포함된 온-칩 메모리의 코어의 일 예를 설명하기 위한 도면이다.
도 2를 참조하면, 코어(20)는 2차원 어레이 회로로 구성될 수 있다. 예를 들어, 코어는 N 개(N은 임의의 자연수)의 액손 회로들(A1 내지 AN)(210), M 개(M은 임의의 자연수)의 뉴런 회로들(N1 내지 NM)(230) 및 N x M 개의 시냅스들(S11 내지 SNM)을 포함하는 시냅스 어레이(220)를 포함한다.
시냅스 어레이(220)의 각 시냅스는 액손 회로들(210)로부터 제 1 방향으로 연장되는 제 1 방향 라인들과 뉴런 회로들(230)로부터 제 2 방향으로 연장되는 제2 방향 라인들의 교차점들에 배치될 수 있다. 여기서, 설명의 편의를 위하여, 제 1 방향은 행 방향이고 제2 방향은 열 방향인 것으로 도시되어 있으나, 이에 제한되지 않고 제 1 방향이 열 방향이고 제 2 방향은 행 방향일 수도 있다.
액손 회로들(210) 각각은 생물학적 뉴런(도 1의 10)의 축색돌기를 모사하는 회로를 의미할 수 있다. 뉴런의 축색돌기는 뉴런으로부터 다른 뉴런으로 신호들을 송신하는 기능을 수행하므로, 뉴런의 축색돌기를 모사하는 액손 회로들(210) 각각은 입력 액티베이션(예를 들어, 액손들 a1, a2, ..., aN)을 제 1 방향 라인들로 전달할 수 있다. 입력 액티베이션은 뉴런을 통해 전달되는 신경 전달 물질에 대응되는 것으로서, 액손 회로들(210) 각각에 입력되는 전기적 신호를 의미할 수 있다. 한편, 액손 회로들(210) 각각은 입력 정보를 저장하는 메모리, 레지스터 또는 버퍼를 포함할 수 있다. 한편, 입력 액티베이션은 바이너리(binary) 값을 갖는 바이너리 액티베이션일 수 있다. 예를 들어, 바이너리 액티베이션은 논리값 0 또는 1에 대응되는 1 비트 정보를 포함할 수 있다. 다만, 반드시 이에 제한되는 것은 아니며, 입력 액티베이션은 터너리(ternary) 값을 가질 수 있고, 멀티-비트 값을 가질 수도 있다.
시냅스 어레이(220)의 시냅스들(S11 내지 SNM) 각각은 뉴런과 뉴런 사이의 시냅스를 모사하는 회로를 의미할 수 있다. 시냅스 어레이(220)는 뉴런과 뉴런 사이의 연결 강도에 대응되는 시냅틱 웨이트(synaptic weight)들을 저장할 수 있다. 도 2에서는 설명의 편의를 위해 시냅스들(S11 내지 SNM)에 저장될 시냅틱 웨이트들의 예로서, w1, w2, ..., wM가 도시되어 있으나, 시냅스들(S11 내지 SNM)에는 이 밖에도 다른 시냅틱 웨이트들이 저장될 수 있다. 시냅스 어레이(220)의 시냅스들(S11 내지 SNM) 각각은 시냅틱 웨이트를 저장하기 위한 메모리 소자를 포함하거나 또는 시냅틱 웨이트를 저장하고 있는 다른 메모리 소자에 연결될 수 있다.
시냅스 어레이(220)는 대응되는 제 1 방향 라인을 통해 액손 회로들(210) 각각으로부터 전달되는 입력 액티베이션을 수신할 수 있고, 저장되어 있던 시냅틱 웨이트와 입력 액티베이션 간의 뉴로모픽 연산의 결과를 출력할 수 있다. 예를 들어, 시냅틱 웨이트와 입력 액티베이션 간의 뉴로모픽 연산은 곱셈 연산일 수 있으나, 이에 제한되는 것은 아니다. 즉, 시냅틱 웨이트와 입력 액티베이션 간의 뉴로모픽 연산의 결과는 뉴런과 뉴런 사이의 연결 강도에 따라 조절되는 입력 액티베이션의 세기 또는 크기를 모사하기 위한 다른 임의의 적절한 연산에 의해 획득되는 값일 수도 있다.
시냅틱 웨이트와 입력 액티베이션 간의 뉴로모픽 연산에 따라 액손 회로들(210)로부터 뉴런 회로들(230)로 전달되는 신호의 크기 또는 세기가 조절될 수 있다. 이와 같이, 시냅스 어레이(220)를 이용하여 뉴런과 뉴런 사이의 연결강도에 따라 다음 뉴런으로 전달되는 신호의 크기 또는 세기가 조절되는 동작이 모사될 수 있다.
뉴런 회로들(230) 각각은 수상돌기를 포함하는 뉴런을 모사하는 회로를 의미할 수 있다. 뉴런의 수상돌기는 다른 뉴런으로부터 신호를 수신하는 기능을 수행하는바, 뉴런 회로들(230) 각각은 대응되는 제 2 방향 라인을 통해 시냅틱 웨이트와 입력 액티베이션 간의 뉴로모픽 연산의 결과를 수신할 수 있다. 뉴런 회로들(230) 각각은 뉴로모픽 연산의 결과에 기초하여 스파이크(spike)를 출력할지 여부를 결정할 수 있다. 예를 들어, 뉴런 회로들(230) 각각은 뉴로모픽 연산의 결과를 누적한 값이 미리 설정된 임계값 이상인 경우 스파이크를 출력할 수 있다. 뉴런 회로들(230)로부터 출력된 스파이크들은 다음 단의 액손 회로들에 입력되는 입력 액티베이션에 대응될 수 있다.
한편, 뉴런 회로들(230)은 시냅스 어레이(220)를 기준으로 후단에 위치하는바, 포스트 시냅틱 뉴런 회로들로 지칭될 수 있고, 액손 회로들(210)은 시냅스 어레이(220)를 기준으로 전단에 위치하는바, 프리 시냅틱 뉴런 회로들로 지칭될 수 있다.
시냅스들(S11 내지 SNM) 각각은 예컨대, 가변 저항 소자를 포함할 수 있다. 가변 저항 소자는 양단에 인가되는 전압 또는 전류에 따라 서로 다른 저항 상태 사이에서 스위칭할 수 있는 소자로서, 복수의 저항 상태를 가질 수 있는 다양한 물질 예컨대, 전이 금속 산화물, 페로브스카이트(perovskite)계 물질 등과 같은 금속 산화물, 칼코게나이드(chalcogenide)계 물질 등과 같은 상변화 물질, 강유전 물질, 강자성 물질 등을 포함하는 단일막 구조 또는 다중막 구조를 가질 수 있다. 가변 저항 소자 및/또는 시냅스(30)가 고저항 상태에서 저저항 상태로 변하는 동작을 셋(set) 동작이라 하고, 저저항 상태에서 고저항 상태로 변하는 동작을 리셋(reset) 동작이라 할 수 있다.
예를 들어, 시냅스들(S11 내지 SNM)은, RRAM, PRAM, FRAM, MRAM 등의 메모리 장치에 이용되는 가변 저항 소자와 달리, 셋 동작과 리셋 동작에서 급격한(abrupt) 저항 변화가 없고, 입력되는 전기적 펄스의 개수에 따라 전도도가 점진적으로 변화하는 아날로그 거동(analog behavior)을 보이는 등, 메모리에서의 가변 저항 소자와 구별되는 여러가지 특성을 갖도록 구현될 수 있다. 이는 메모리에서 가변 저항 소자에 요구되는 특성과 뉴로모픽 장치의 코어(20)에서 시냅스 어레이(220)에 요구되는 특성이 서로 상이하기 때문이다.
일반적으로, 뉴럴 네트워크의 단일 뉴런에 연결된 액손의 수는 수 천 또는 수 만 개에 달한다. 따라서, 뉴럴 네트워크를 단일 코어(20)에 매핑하는 데에 어려움이 따른다. 다시 말해, 단일 코어(20)의 물리적인 사이즈를 고려하면, 단일 코어(20)에 의해서 뉴럴 네트워크를 구현하기는 어렵다.
일 실시예에 따른 뉴로모픽 장치(1100)는 온-칩 메모리(1120)에 포함된 적어도 하나의 코어(20)의 사이즈(예를 들어, 액손 회로들(210)의 총 개수)를 고려하여 뉴럴 네트워크를 복수의 서브-네트워크들로 분할한다. 그리고, 뉴로모픽 장치(1100)는 서브-네트워크들 각각을 학습하고, 학습된 서브-네트워크들을 온-칩 메모리(1120)에 매핑하여 구동한다. 따라서, 뉴로모픽 장치(1100)는 뉴럴 네트워크의 연산 능력(capability)을 보존하면서도, 연산에 필요한 전력의 소모를 감소시킬 수 있다.
이하, 도 3 내지 도 10을 참조하여, 뉴로모픽 장치(1100)가 뉴럴 네트워크를 구현하는 예를 설명한다.
도 3은 뉴로모픽 장치가 뉴럴 네트워크를 구현하는 일 예를 도시한 흐름도이다.
310 단계에서, 프로세서(1110)는 뉴로모픽 장치(1120)에 포함된 메모리의 코어(20)의 사이즈에 기초하여 뉴럴 네트워크를 복수의 서브-네트워크들로 분할한다.
예를 들어, 프로세서(1110)는 코어(20)에 포함된 액손 회로들(210)의 총 개수(즉, 코어(20)에 포함된 시냅스 어레이(220)의 열들의 수)에 따라, 뉴럴 네트워크를 복수의 서브-네트워크들로 분할할 수 있다. 즉, 프로세서(1110)는 코어(20)에 포함된 코어의 열들의 수와 서브-네트워크의 입력 액티베이션들의 수가 동일하도록 뉴럴 네트워크를 분할할 수 있다.
이하, 도 4 내지 도 6을 참조하여, 뉴럴 네트워크의 일 예를 설명한다.
도 4는 뉴럴 네트워크의 아키텍처의 일 예를 설명하기 위한 도면이다.
도 4를 참고하면, 뉴럴 네트워크(400)는 딥 뉴럴 네트워크(Deep Neural Network, DNN) 또는 n-계층 뉴럴 네트워크(n-layers neural networks)의 아키텍처일 수 있다. DNN 또는 n-계층 뉴럴 네트워크는 컨벌루션 뉴럴 네트워크(Convolutional Neural Networks, CNN), 리커런트 뉴럴 네트워크(Recurrent Neural Networks, RNN), Deep Belief Networks, Restricted Boltzman Machines 등에 해당될 수 있다. 예를 들어, 뉴럴 네트워크(400)는 컨벌루션 뉴럴 네트워크(CNN)로 구현될 수 있으나, 이에 제한되지 않는다. 도 4에는 뉴럴 네트워크(400)의 예시에 해당하는 컨벌루션 뉴럴 네트워크에서 일부의 컨벌루션 레이어가 도시되었지만, 컨벌루션 뉴럴 네트워크는 도시된 컨벌루션 레이어 외에도, 풀링 레이어(pooling layer), 풀리 커넥티드(fully connected) 레이어 등을 더 포함할 수 있다.
뉴럴 네트워크(400)는 입력 이미지, 피처맵들(feature maps) 및 출력을 포함하는 복수 레이어들을 갖는 아키텍처로 구현될 수 있다. 뉴럴 네트워크(400)에서 입력 이미지는 커널(kernel)이라 불리는 필터와의 컨벌루션 연산이 수행되고, 그 결과 피처맵들이 출력된다. 이때 생성된 출력 피처맵들은 입력 피처맵들로서 다시 커널과의 컨벌루션 연산이 수행되고, 새로운 피처맵들이 출력된다. 이와 같은 컨벌루션 연산이 반복적으로 수행된 결과, 최종적으로는 뉴럴 네트워크(400)를 통한 입력 이미지의 특징들에 대한 인식 결과가 출력될 수 있다.
예를 들어, 도 4의 뉴럴 네트워크(400)에 24x24 픽셀 크기의 이미지가 입력된 경우, 입력 이미지는 커널과의 컨벌루션 연산을 통해 20x20 크기를 갖는 4채널의 피처맵들로 출력될 수 있다. 이후에도, 20x20 피처맵들은 커널과의 반복적인 컨벌루션 연산을 통해 크기가 줄어들면서, 최종적으로는 1x1 크기의 특징들이 출력될 수 있다. 뉴럴 네트워크(400)는 여러 레이어들에서 컨벌루션 연산 및 서브 샘플링(또는 풀링) 연산을 반복적으로 수행함으로써 입력 이미지로부터 이미지 전체를 대표할 수 있는 강인한 특징들을 필터링하여 출력하고, 출력된 최종 특징들을 통해 입력 이미지의 인식 결과를 도출할 수 있다.
도 5는 뉴럴 네트워크에서 입력 피처맵 및 출력 피처맵의 관계를 설명하기 위한 도면이다.
도 5를 참조하면, 뉴럴 네트워크의 어느 레이어(500)에서, 제 1 피처맵(FM1)은 입력 피처맵에 해당되고, 제 2 피처맵(FM2)는 출력 피처맵에 해당된다. 피처맵은 입력 데이터의 다양한 특징들이 표현된 데이터 세트를 의미한다. 예를 들어, 피처맵들(FM1, FM2)은 2차원 매트릭스의 액티베이션들을 갖거나 또는 3차원 매트릭스의 액티베이션들을 가질 수 있고, 각각의 액티베이션에는 픽셀 값이 정의될 수 있다. 피처맵들(FM1, FM2)은 너비(W)(또는 칼럼이라고 함), 높이(H)(또는 로우라고 함) 및 깊이(D)를 가진다. 이때, 깊이(D)는 채널들의 개수에 해당될 수 있다.
예를 들어, 제 1 피처맵(FM1) 및 커널(WM)에 대한 컨벌루션 연산이 수행됨으로써 제 2 피처맵(FM2)이 생성될 수 있다. 커널(WM)은 각 액티베이션에 정의된 웨이트로서, 제 1 피처맵(FM1)과 컨벌루션 연산이 수행됨에 따라 제 1 피처맵(FM1)의 특징들이 필터링된다. 커널(WM)이 제 1 피처맵(FM1)을 슬라이딩 윈도우 방식에 따라 시프트되면서, 제 1 피처맵(FM1)의 윈도우들(또는 타일이라고도 함)과 컨벌루션 연산이 수행된다. 각 시프트 동안, 커널(WM)에 포함된 웨이트들 각각은 제 1 피처맵(FM1) 내 중첩된 윈도우의 픽셀 값들 각각과 곱해지고 더해질 수 있다. 제 1 피처맵(FM1)과 커널(WM)이 컨벌루션됨에 따라, 제 2 피처맵(FM2)의 하나의 채널이 생성될 수 있다.
도 5에는 하나의 커널(WM)이 도시되었으나, 실제로는 복수의 커널들이 제 1 피처맵(FM1)과 각각 컨벌루션되어, 복수의 채널들의 제 2 피처맵(FM2)이 생성될 수 있다.
한편, 제 2 피처맵(FM2)은 다음 레이어의 입력 피처맵에 해당될 수 있다. 예를 들어, 제 2 피처맵(FM2)은 풀링(또는 서브 샘플링) 레이어의 입력 피처맵이 될 수 있다.
도 4 및 도 5에는 설명의 편의를 위하여 뉴럴 네트워크(400)의 개략적인 아키텍처에 대해서만 도시되어 있다. 하지만, 뉴럴 네트워크(400)는, 도 4 및 도 5에 도시된 바와 달리, 보다 많거나 적은 개수의 레이어들, 피처맵들, 커널들 등으로 구현될 수 있고, 그 크기들 또한 다양하게 변형될 수 있음을 당해 기술분야의 통상의 기술자라면 이해할 수 있다.
도 6은 뉴로모픽 장치에서 컨벌루션 연산이 수행되는 일 예를 설명하기 위한 도면이다.
도 6을 참조하면, 뉴로모픽 장치(1100)는 입력 피처맵(510)의 픽셀 데이터를 수신한다. 예를 들어, 뉴로모픽 장치(1100)의 코어(20)는 RCA(Resistive Crossbar Memory Arrays)로 구현될 수 있다.
예를 들어, 코어(20)가 NxM 크기의 행렬인 경우(N 및 M은 임의의 자연수), 입력 피처맵(510)의 픽셀 데이터 개수(즉, 입력 액티베이션의 개수)는 코어(20)의 열(M)의 개수보다 작거나 같을 수 있다. 입력 피처맵(510)의 픽셀 데이터는 부동 소수점 포맷 또는 고정 소수점 포맷의 파라미터일 수 있다. 한편, 입력 피처맵(510)의 픽셀 데이터 개수는 코어(20)의 열(M)의 수보다 클 수 있으며, 이에 대해서는 도 7 및 도 8을 참조하여 후술한다.
뉴로모픽 장치(1100)는 디지털 신호 형태의 픽셀 데이터를 수신할 수 있으며, DAC(Digital Analog Converter, 520)를 이용하여, 수신된 픽셀 데이터를 아날로그 신호 형태의 전압으로 변환할 수 있다. 예를 들어, 입력 피처맵(510)의 픽셀 데이터는 1비트, 4비트 및 8비트 해상도(resolution) 등 다양한 비트 해상도 값을 가질 수 있다. 일 실시예에서, 뉴로모픽 장치(1100)는 DAC(520)를 이용하여 픽셀 데이터를 전압으로 변환한 후, 전압을 코어(20)의 입력 액티베이션(501)으로 수신할 수 있다.
코어(20)에는 학습된 커널 값들이 저장될 수 있다. 커널 값들은 코어(20)의 메모리 셀에 저장될 수 있으며 메모리 셀에 저장된 커널 값들은 컨덕턴스(502)일 수 있다. 이 때, 뉴로모픽 장치(1100)는 전압(501)과 컨덕턴스(502) 간의 벡터 곱셈 연산을 수행함으로써 출력 값을 산출할 수 있으며, 출력 값은 전류(503)로 표현될 수 있다. 즉, 뉴로모픽 장치(1100)는 코어(20)를 이용하여 입력 피처맵과 커널 간의 컨벌루션 연산 결과와 동일한 결과 값을 출력할 수 있다.
코어(20)에서 출력된 전류(503)는 아날로그 신호이므로, 전류(503)를 다른 코어의 입력 데이터로 사용하기 위해 뉴로모픽 장치(1100)는 ADC(Analog Digital Converter, 530)를 이용할 수 있다. 뉴로모픽 장치(1100)는 ADC(530)를 이용하여, 아날로그 신호인 전류(503)를 디지털 신호로 변환할 수 있다. 예를 들어, 뉴로모픽 장치(1100)는 ADC(530)를 이용하여, 입력 피처맵(510)의 픽셀 데이터와 동일한 비트 해상도를 갖도록 전류(503)를 디지털 신호로 변환할 수 있다. 예를 들어, 입력 피처맵(510)의 픽셀 데이터가 1비트 해상도인 경우, 뉴로모픽 장치(1100)는 ADC(530)를 이용하여 전류(503)를 1비트 해상도의 디지털 신호로 변환할 수 있다.
뉴로모픽 장치(1100)는 활성함수 유닛(540)을 이용하여, ADC(530)에서 변환된 디지털 신호에 활성함수를 적용할 수 있다. 예를 들어, 활성함수로는 Sigmoid 함수, Tanh 함수 및 ReLU(Rectified Linear Unit) 함수가 해당될 수 있으나, 이에 제한되지 않는다.
활성함수가 적용된 디지털 신호는 다른 코어(21)의 입력 액티베이션으로 이용될 수 있다. 활성화 함수가 적용된 디지털 신호가 다른 코어(21)의 입력 액티베이션으로 이용되는 경우, 다른 코어(21)에서 상술한 과정이 동일하게 적용될 수 있다.
한편, 입력 피처맵(510)의 픽셀 데이터 개수가 코어(20)의 열(M)의 수보다 클 경우, 단일 코어(20)에 의하여 입력 피처맵(510)의 모든 픽셀 데이터가 한번에 처리될 수 없다. 따라서, 프로세서(1110)는 뉴럴 네트워크를 복수의 서브-네트워크들로 분할한다. 다시 말해, 프로세서(1110)는 뉴럴 네트워크의 입력 피처맵(510)을 복수의 서브 피처맵들로 분할한다.
이하, 도 7을 참조하여, 프로세서(1110)가 뉴럴 네트워크를 복수의 서브-네트워크들로 분할하는 예를 설명한다.
도 7은 프로세서가 뉴럴 네트워크를 분할하는 일 예를 설명하기 위한 도면이다.
설명의 편의를 위하여, 뉴럴 네트워크(710)는 4개의 입력 액티베이션들(A1, A2, A3, A4)과 1개의 출력 액티베이션(N)을 포함하는 것으로 가정한다. 또한, 뉴로모픽 장치(1100)의 코어(20)의 열의 수(즉, 코어(20)의 액손 회로들(210)의 수)는 2인 것으로 가정한다.
상술한 가정에 의하면, 코어(20)에 의하여 뉴럴 네트워크(710)의 연산이 한번에 수행될 수 없다. 구체적으로, 코어(20)의 열의 수가 2개이고, 뉴럴 네트워크(710)의 입력 액티베이션들(A1, A2, A3, A4)의 수가 4이므로, 뉴럴 네트워크(710)의 모든 입력 액티베이션들(A1, A2, A3, A4)이 코어(20)에 한번에 입력될 수 없다.
프로세서(1110)는 뉴럴 네트워크(710)를 분할하여 3개의 서브-네트워크들(711, 712, 713)를 생성한다. 구체적으로, 프로세서(1110)는 코어(20)의 열의 수와 서브-네트워크(711, 712, 713)의 입력 액티베이션들의 수가 동일하도록 뉴럴 네트워크(710)를 분할한다.
또한, 프로세서(1110)가 뉴럴 네트워크(710)를 분할함에 따라 적어도 하나의 중간 액티베이션(K1, K2)가 생성된다. 구체적으로, 프로세서(1110)는 4개의 입력 액티베이션들(A1, A2, A3, A4)을 2개씩 그룹핑하고, 그룹들 각각에 대한 중간 액티베이션(K1, K2)을 생성한다.
결론적으로, 뉴럴 네트워크(710)는 입력 액티베이션들(A1, A2) 및 출력 액티베이션(K1)을 포함하는 제1 서브-네트워크(711), 입력 액티베이션들(A3, A4) 및 출력 액티베이션(K2)을 포함하는 제2 서브-네트워크(712) 및 입력 액티베이션들(K1, K2) 및 출력 액티베이션(N)을 포함하는 제3 서브-네트워크(713)로 분할된다.
제1 내지 제3 서브-네트워크(711, 712, 713)는 각각 2개의 입력 액티베이션들을 포함하므로, 코어(20)의 열의 수와 동일하다. 따라서, 코어(20)에 의하여 단일 서브-네트워크의 연산이 한번에 수행될 수 있다.
다시 도 3을 참조하면, 320 단계에서, 프로세서(1110)는 서브-네트워크에 이용되는 하이퍼-파라미터(hyper-parameter)를 초기화한다.
하이퍼-파라미터는 뉴럴 네트워크(400)의 출력 값에 영향을 미치는 변수들 중 일부를 지칭하는 용어이다. 예를 들어, 도 6을 참조하면, 코어(20)에 입력되는 입력 액티베이션(501), 코어(20)에 저장된 커널 값 등은 파라미터의 예이고, 활성함수 유닛(540)에 의하여 적용되는 ReLU 함수의 역치, 기울기 등은 하이퍼-파라미터의 예이다. 하이퍼-파라미터는 아래의 330 단계를 참조하여 후술할 서브-네트워크의 학습(training)을 진행하기 전에 설정된다. 반면에, 파라미터는 서브-네트워크의 학습을 통하여 도출(갱신)될 수 있다.
예를 들어, 프로세서(1110)는 코어(20)의 사이즈에 기초하여 선택된 최초 값에 의하여 하이퍼-파라미터를 초기화 할 수 있다. 다시 말해, 프로세서(1110)는 소정의 표준 편차(standard deviation)를 나타내는 값들 중에서 선택된 값에 의하여 하이퍼-파라미터를 초기화 할 수 있다. 여기에서, 표준 편차는 서브-네트워크의 입력 액티베이션들의 개수 및 코어의 사이즈를 조합하여 연산될 수 있다.
프로세서(1110)는 아래의 수학식 1에 따라 표준 편차(σ)를 연산할 수 있다.
Figure pat00001
상술한 수학식 1에서, 'Fan In'은 서브-네트워크의 입력 액티베이션들(즉, 액손 회로들)의 개수를 의미하고, 'n'은 뉴럴 네트워크가 분할된 개수(즉, 서브-네트워크들의 개수)를 의미한다.
프로세서(1110)가 상술한 수학식 1에 따라 표준 편차(σ)를 연산함으로써, 뉴럴 네트워크를 분할하면서 발생되는 뉴런 값들의 분산이 증가되는 것을 방지할 수 있다. 따라서, 뉴럴 네트워크가 서브-네트워크들로 분할되었음에도 불구하고, 뉴로모픽 장치(1100)는 뉴럴 네트워크 연산 능력(capability)을 보존하면서도, 연산에 필요한 전력의 소모를 감소시킬 수 있다.
330 단계에서, 프로세서(1110)는 초기화된 하이퍼-파라미터를 이용하여 서브-네트워크들을 학습한다.
프로세서(1110)는 초기화된 하이퍼-파라미터를 적용하여 서브-네트워크들을 학습한다. 예를 들어, 프로세서(1110)는 일반적인 머신 러닝(machine learning)의 방식을 이용하여 서브-네트워크들을 학습할 수 있다. 여기에서, 머신 러닝은 당해 기술분야에서의 통상의 지식을 가진 자에게 자명하므로, 구체적인 설명은 생략한다.
도 8은 뉴로모픽 장치가 뉴럴 네트워크를 구현하는 다른 예를 도시한 흐름도이다.
도 8의 810 단계 내지 830 단계는 도 3의 310 단계 내지 330 단계에 대응된다. 따라서, 810 단계 내지 830 단계에 대한 구체적인 설명은 생략한다.
840 단계에서, 프로세서(1110)는 학습된 서브-네트워크들을 메모리(1120)에 매핑하여 구동한다.
도 3 내지 도 7을 참조하여 상술한 바와 같이, 프로세서(1110)는 뉴럴 네트워크를 복수의 서브-네트워크들로 분할하고, 서브-네트워크에 이용되는 하이퍼-파라미터를 초기화한다. 그리고, 프로세서(1110)는 초기화된 하이퍼-파라미터를 이용하여 서브-네트워크들을 학습한다. 그 후에, 프로세서(1110)는 학습된 서브-네트워크들 각각을 뉴로모픽 장치(1100)에 포함된 온-칩 메모리(1120)의 코어들 각각에 매핑한다. 따라서, 코어들이 동작함에 따라 출력되는 최종 출력 액티베이션은 뉴럴 네트워크의 최종 출력 액티베이션과 동일할 수 있다.
이하, 도 9 및 도 10을 참조하여, 프로세서(1110)가 서브-네트워크를 코어에 매핑하고, 코어들 각각의 출력 액티베이션을 합성하는 예를 설명한다.
도 9는 프로세서가 서브 네트워크에 대응하는 서브 피처맵을 코어에 매핑하는 일 예를 설명하기 위한 도면이다.
설명의 편의를 위하여, 도 9의 입력 피처맵(910)의 크기는 8x8이고, 코어(900)의 크기는 16x16인 것으로 가정한다. 즉, 입력 피처맵(910)의 픽셀 데이터 개수는 64개(=8x8)인 것으로 가정한다.
상술한 바와 같이, 입력 피처맵(910)은 다양한 크기를 가질 수 있는데 비하여, 코어(900)의 크기는 제한적이다, 따라서, 입력 피처맵(910)의 픽셀 데이터 개수(즉, 뉴럴 네트워크의 입력 액티베이션들의 개수)가 코어(900)에 포함된 액손 회로들의 개수보다 많을 수 있다. 예를 들어, 도 9의 입력 피처맵(910)의 픽셀 데이터 개수는 64개이므로, 코어(900)의 액손 회로들의 개수인 16보다 더 많을 수 있다.
입력 피처맵(910)의 픽셀 데이터 개수가 코어(900)의 액손 회로들의 개수(즉, 열(M)의 개수)보다 큰 경우, 프로세서(1110)는 입력 피처맵(910)을 서브 피처맵들로 분할한다. 다시 말해, 프로세서(1110)는 뉴럴 네트워크를 복수의 서브-네트워크들로 분할한다. 예를 들어, 프로세서(1110)는 코어(900)의 사이즈에 기초하여 입력 피처맵(910)을 서브 피처맵들로 분할할 수 있다.
구체적으로, 입력 피처맵(910)의 사이즈 및 코어(900)의 사이즈를 고려하여, 프로세서(1110)는 서브 피처맵들 각각의 픽셀 데이터 개수가 16개가 되도록 입력 피처맵(910)을 4개의 서브 피처맵들로 분할할 수 있다.
그리고, 프로세서(1110)는 서브 피처맵들 각각을 별개의 코어에 매핑시킬 수 있다. 예를 들어, 프로세서(1110)는 서브 피처맵(911)의 'aa'를 코어(900)의 제1 액손 회로에 입력(V1)할 수 있고, 서브 피처맵(911)의 'ab'를 코어(900)의 제2 액손 회로에 입력(V2)할 수 있으며, 서브 피처맵(911)의 'dd'를 코어(900)의 제16 액손 회로에 입력(V16)할 수 있다.
한편, 도 6을 참조하여 상술한 바와 같이, 서브 피처맵(911)의 픽셀 데이터들은 디지털 신호(예를 들어, 1비트, 4비트 등)일 수 있으며, 뉴로모픽 장치(1100)는 DAC(Digital Analog Converter)를 이용하여 픽셀 데이터들을 아날로그 신호로 변환한 후, 변환된 값(예를 들어, 전압 값)을 코어(900)의 액손 회로에 입력할 수 있다.
도 10은 프로세서가 복수의 코어들에서 산출된 출력 값들을 합성하는 일 예를 설명하기 위한 도면이다.
설명의 편의를 위하여, 도 10의 제1 내지 제5 코어(1010 내지 1050)의 사이즈는 4x4인 것으로 가정한다. 또한, 4x4의 사이즈를 갖는 입력 피처맵이 4개의 서브 피처맵들로 분할된 것으로 가정한다.
제1 서브 피처맵의 픽셀 데이터 'aa, ab, ba, bb'는 제1 코어(1010)의 액손 회로들에 입력될 수 있다. 예를 들어, 뉴로모픽 장치(1110)는 DAC(미도시)를 이용하여 디지털 신호 형태의 픽셀 데이터들인 'aa, ab, ba, bb'를 아날로그 신호 형태의 전압으로 변환한 후, 전압을 제1 코어(1010)의 액손 회로들에 입력할 수 있다. 마찬가지 방식으로, 뉴로모픽 장치(1110)는 제2 내지 제4 서브 피처맵 각각의 픽셀 데이터들을 아날로그 신호로 변환한 후, 제2 내지 제4 코어(1020 내지 1040)의 액손 회로들에 입력할 수 있다.
한편, 도 2를 참조하여 상술한 바와 같이, 제1 내지 제5 코어(1010 내지 1050)의 메모리 셀에는 초기화된 커널 값들이 컨덕턴스 값으로 저장될 수 있다.
예를 들어, 뉴로모픽 장치(1110)는 제1 내지 제4 코어(1010 내지 1040)의 메모리 셀에 저장된 컨덕턴스 값과 입력 전압 값의 벡터 곱셈 연산을 수행한다. 벡터 곱셈 연산이 수행된 결과, 제1 내지 제4 코어(1010 내지 1040)의 출력 값이 산출된다. 제1 내지 제4 코어(1010 내지 1040) 각각은, 제1 내지 제4 서브 피처맵의 픽셀 데이터를 입력으로 수신하고 있으므로, 뉴로모픽 장치(1110)는 제1 내지 제4 코어(1010 내지 1040)의 출력들을 합성(merge)하고, 합성된 출력들을 제5 코어(1050)의 입력으로 전송할 수 있다.
이때, 일 실시예에 따른 뉴로모픽 장치(1110)는, ADC(1011, 1021, 1031, 1041)를 이용하여 제1 내지 제4 코어(1010 내지 1040) 각각의 출력을 디지털 신호로 변환한다. 그리고, 뉴로모픽 장치(1110)는 활성함수 유닛(1012, 1022, 1032, 1042)을 이용하여 디지털 신호에 활성함수를 적용한다. 그리고, 뉴로모픽 장치(1110)는 활성함수가 적용된 결과들을 합성하여 제5 코어(1050)의 입력으로 전송한다.
뉴로모픽 장치(1110)는, 제1 내지 제4 코어(1010 내지 1040), ADC(1011 내지 1041) 및 활성함수 유닛(1012 내지 1042)을 통과한 출력들 중에서, 각 코어에서 동일한 순서를 갖는 컬럼 배선의 출력들을 합성할 수 있다. 예를 들어, 제1 코어(1010)의 출력(I1)이 ADC(1011)와 활성함수 유닛(1012)를 통과한 제1 출력(F1), 제2 코어(1020)의 출력(I2)이 ADC(1021)와 활성함수 유닛(1022)를 통과한 제2 출력(F2), 제3 코어(1030)의 출력(I3)이 ADC(1031)와 활성함수 유닛(1032)를 통과한 제3 출력(F3) 및 제4 코어(1040)의 출력(I4)이 ADC(1041)와 활성함수 유닛(1042)를 통과한 제4 출력(F4)이 합성된다.
그리고, 뉴로모픽 장치(1100)는 제1 내지 제4 출력(F1, F2, F3, F4)를 합성하고, 제5 코어(1050)의 액손 회로에 입력(V1)할 수 있다.
또한, 뉴로모픽 장치는 제1 내지 제4 코어(1010 내지 1040)에서 산출된 출력들(I1 내지 I4) 각각에 웨이트(W1 내지 W4)를 곱한 후, 합성할 수도 있다.
여기서 웨이트(W1 내지 W4)는 커널 값과 다른 값일 수 있으며, 뉴럴 네트워크에서 학습을 통해 결정된 값일 수 있다. 예를 들어, 웨이트(W1 내지 W4)는 '1'일 수 있으나, 이에 제한되지 않는다.
마찬가지 방식으로, 뉴로모픽 장치(1110)는 제1 내지 제4 코어(1010 내지 1040)의 나머지 뉴런 회로들에서 산출된 출력들을 합성한 후, 합성된 출력을 제5 코어(1050)의 나머지 액손 회로들에 입력할 수 있다.
도 11은 뉴로모픽 장치 및 이와 연결된 외부 메모리의 일 예를 도시한 구성도이다.
도 11을 참조하면, 뉴로모픽 장치(1100)는 프로세서(1110) 및 온-칩 메모리(1020)를 포함한다. 도 11에 도시된 뉴로모픽 장치(1100)에는 실시예들과 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴로모픽 장치(1100)에는 도 11에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당해 기술분야의 통상의 기술자에게 자명하다.
뉴로모픽 장치(1100)는 스마트폰, 드론, 태블릿 디바이스, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스, 자율주행 자동차, 로보틱스, 의료기기 등 저전력 뉴럴네트워크 구동이 필요한 디지털 시스템에 탑재될 수 있으나, 이에 제한되지 않는다.
뉴로모픽 장치(1100)는 적어도 하나의 온-칩 메모리(1120)를 포함할 수 있으며, 하나의 온-칩 메모리(1120)는 복수의 코어들로 구성될 수 있다. 코어는 복수의 프리 시냅틱 뉴런(presynaptic neuron), 복수의 포스트 시냅틱 뉴런(postsynaptic neuron), 및 복수의 프리 시냅틱 뉴런과 복수의 포스트 시냅틱 뉴런 사이의 각각의 연결을 제공하는 시냅스 즉, 메모리 셀을 포함할 수 있다. 예를 들어, 코어는 RCA(Resistive Crossbar Memory Arrays)로 구현될 수 있다.
외부 메모리(1130)는 뉴로모픽 장치(1100)에서 처리되는 각종 데이터들을 저장하는 하드웨어로서, 외부 메모리(1130)는 뉴로모픽 장치(1100)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 외부 메모리(1130)는 뉴로모픽 장치(1100)에 의해 구동될 애플리케이션들, 드라이버들 등을 저장할 수 있다. 외부 메모리(1130)는 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), 또는 플래시 메모리를 포함할 수 있다.
프로세서(1110)는 뉴로모픽 장치(1100)를 구동하기 위한 전반적인 기능들을 제어하는 역할을 한다. 예를 들어, 프로세서(1110)는 뉴로모픽 장치(1100) 내의 온-칩 메모리(1120)에 저장된 프로그램들을 실행함으로써, 뉴로모픽 장치(1100)를 전반적으로 제어한다. 프로세서(1110)는 뉴로모픽 장치(1100) 내에 구비된 CPU(central processing unit), GPU(graphics processing unit), AP(application processor) 등으로 구현될 수 있으나, 이에 제한되지 않는다. 프로세서(1110)는 외부 메모리(1130)로부터 각종 데이터들을 독출/기록(read/write)하고, 독출/기록된 데이터를 이용하여 뉴로모픽 장치(1100)를 실행한다.
프로세서(1110)는 온-칩 메모리(1120)의 코어의 사이즈에 기초하여 뉴럴 네트워크를 복수의 서브-네트워크들로 분할한다. 그리고, 프로세서(1110)는 서브-네트워크들에 이용되는 하이퍼-파라미터를 초기화한다. 그리고, 프로세서(1110)는 초기화된 하이퍼-파라미터를 이용하여 서브-네트워크들을 학습한다. 그리고, 프로세서(1110)는 학습된 서브-네트워크들을 온-칩 메모리(1120)에 매핑하여 구동한다.
상술한 바와 같이, 뉴로모픽 장치(1110)는 뉴럴 네트워크의 입력 액티베이션들의 개수가 코어의 액손 회로들의 개수보다 많은 경우, 뉴럴 네트워크를 서브-네트워크들로 분할한 후, 분할된 서브-네트워크들 각각을 별개의 코어들에 매핑시킬 수 있다. 즉, 뉴로모픽 장치(1110)는 뉴럴 네트워크를 분할하여 처리함으로써, 뉴럴 네트워크 연산 능력을 보존하면서도, 연산에 필요한 전력의 소모를 감소시킬 수 있다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
본 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 방법들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 하며, 권리 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점을 포함하는 것으로 해석되어야 할 것이다.

Claims (17)

  1. 뉴럴 네트워크를 구현하는 방법에 있어서,
    상기 뉴럴 네트워크를 구현할 장치에 포함된 메모리의 코어의 사이즈에 기초하여 상기 뉴럴 네트워크를 복수의 서브-네트워크(sub-network)들로 분할하는 단계;
    상기 서브-네트워크들에 이용되는 하이퍼-파라미터(hyper-parameter)를 초기화하는 단계; 및
    상기 초기화된 하이퍼-파라미터를 이용하여 상기 서브-네트워크들을 학습하는 단계;를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 초기화하는 단계는,
    상기 코어의 사이즈에 기초하여 선택된 최초 값에 의하여 상기 하이퍼-파라미터를 초기화하는 방법.
  3. 제 1 항에 있어서,
    상기 초기화하는 단계는,
    소정의 표준 편차(standard deviation)를 나타내는 값들 중에서 선택된 값에 의하여 상기 하이퍼-파라미터를 초기화하는 방법.
  4. 제 3 항에 있어서,
    상기 표준 편차는,
    상기 서브-네트워크의 입력 액티베이션들의 개수 및 상기 서브-네트워크들의 개수를 조합하여 연산되는 방법.
  5. 제 1 항에 있어서,
    상기 분할하는 단계는,
    상기 코어의 열(row)들의 수와 상기 서브-네트워크의 입력 액티베이션들의 수가 동일하도록 상기 뉴럴 네트워크를 분할하는 방법.
  6. 제 1 항에 있어서,
    상기 분할하는 단계는,
    상기 뉴럴 네트워크를 분할함으로써 적어도 하나의 중간 액티베이션들을 생성하는 방법.
  7. 제 1 항에 있어서,
    상기 학습된 서브-네트워크들을 상기 메모리에 매핑하여 구동하는 단계;를 더 포함하는 방법.
  8. 제 1 항에 있어서,
    상기 코어에서 시냅스에 대응하는 엘리먼트는 가변 저항 소자를 포함하는 방법.
  9. 제 1 항 내지 제 8 항 중 어느 한 항의 방법을 컴퓨터에서 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  10. 뉴럴 네트워크를 구현하는 장치에 있어서,
    복수의 코어들을 포함하는 온-칩 메모리(on-chip memory); 및
    적어도 하나의 프로그램을 실행함으로써 뉴럴 네트워크를 구동하는 프로세서를 포함하고,
    상기 프로세서는,
    상기 온-칩 메모리의 코어의 사이즈에 기초하여 상기 뉴럴 네트워크를 복수의 서브-네트워크들로 분할하고,
    상기 서브-네트워크들에 이용되는 하이퍼-파라미터(hyper-parameter)를 초기화하고,
    상기 초기화된 하이퍼-파라미터를 이용하여 상기 서브-네트워크들을 학습하는 장치.
  11. 제 10 항에 있어서,
    상기 프로세서는,
    상기 코어의 사이즈에 기초하여 선택된 최초 값에 의하여 상기 하이퍼-파라미터를 초기화하는 장치.
  12. 제 10 항에 있어서,
    상기 프로세서는,
    소정의 표준 편차(standard deviation)를 나타내는 값들 중에서 선택된 값에 의하여 상기 하이퍼-파라미터를 초기화하는 장치.
  13. 제 12 항에 있어서,
    상기 표준 편차는,
    상기 서브-네트워크의 입력 액티베이션들의 개수 및 상기 서브-네트워크들의 개수를 조합하여 연산되는 장치.
  14. 제 10 항에 있어서,
    상기 프로세서는,
    상기 코어의 열(row)들의 수와 상기 서브-네트워크의 입력 액티베이션들의 수가 동일하도록 상기 뉴럴 네트워크를 분할하는 장치.
  15. 제 10 항에 있어서,
    상기 프로세서는,
    상기 뉴럴 네트워크를 분할함으로써 적어도 하나의 중간 액티베이션들을 생성하는 장치.
  16. 제 10 항에 있어서,
    상기 프로세서는,
    상기 학습된 서브-네트워크들을 상기 온-칩 메모리에 매핑하여 구동하는 장치.
  17. 제 10 항에 있어서,
    상기 코어에서 시냅스에 대응하는 엘리먼트는 가변 저항 소자를 포함하는 장치.
KR1020180157471A 2018-12-07 2018-12-07 뉴럴 네트워크를 분할하는 방법 및 뉴로모픽 장치 KR20200069901A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020180157471A KR20200069901A (ko) 2018-12-07 2018-12-07 뉴럴 네트워크를 분할하는 방법 및 뉴로모픽 장치
US16/561,378 US11681899B2 (en) 2018-12-07 2019-09-05 Dividing neural networks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180157471A KR20200069901A (ko) 2018-12-07 2018-12-07 뉴럴 네트워크를 분할하는 방법 및 뉴로모픽 장치

Publications (1)

Publication Number Publication Date
KR20200069901A true KR20200069901A (ko) 2020-06-17

Family

ID=70971077

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180157471A KR20200069901A (ko) 2018-12-07 2018-12-07 뉴럴 네트워크를 분할하는 방법 및 뉴로모픽 장치

Country Status (2)

Country Link
US (1) US11681899B2 (ko)
KR (1) KR20200069901A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210157049A (ko) * 2020-06-19 2021-12-28 포항공과대학교 산학협력단 저항 변화 메모리 어레이 기반의 가중 시냅스를 이용한 뉴럴 네트워크
KR102353816B1 (ko) * 2021-05-18 2022-01-20 박희천 심층 신경망을 위한 뉴로모픽 컴퓨팅 구조의 최적화 시스템
WO2024076165A1 (ko) * 2022-10-06 2024-04-11 오픈엣지테크놀로지 주식회사 신경망 연산을 위한 명령어 세트 생성방법과 이를 위한 컴퓨팅 장치

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220051093A1 (en) * 2020-08-14 2022-02-17 Nvidia Corporation Techniques for training and inference using multiple processor resources

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11423311B2 (en) 2015-06-04 2022-08-23 Samsung Electronics Co., Ltd. Automatic tuning of artificial neural networks
US10460230B2 (en) 2015-06-04 2019-10-29 Samsung Electronics Co., Ltd. Reducing computations in a neural network
US10387770B2 (en) 2015-06-10 2019-08-20 Samsung Electronics Co., Ltd. Spiking neural network with reduced memory access and reduced in-network bandwidth consumption
US10452995B2 (en) 2015-06-29 2019-10-22 Microsoft Technology Licensing, Llc Machine learning classification on hardware accelerators with stacked memory
JP6287999B2 (ja) 2015-08-07 2018-03-07 トヨタ自動車株式会社 ニューラルネットワーク学習装置
US10360971B1 (en) * 2015-11-02 2019-07-23 Green Mountain Semiconductor, Inc. Artificial neural network functionality within dynamic random-access memory
US10832120B2 (en) 2015-12-11 2020-11-10 Baidu Usa Llc Systems and methods for a multi-core optimized recurrent neural network
US10650309B2 (en) * 2016-08-09 2020-05-12 International Machines Corporation High dynamic range, high class count, high input rate winner-take-all on neuromorphic hardware
US10635969B2 (en) * 2016-10-14 2020-04-28 International Business Machines Corporation Core utilization optimization by dividing computational blocks across cores
CN107103113B (zh) 2017-03-23 2019-01-11 中国科学院计算技术研究所 面向神经网络处理器的自动化设计方法、装置及优化方法
KR102618546B1 (ko) * 2018-09-03 2023-12-27 삼성전자주식회사 2차원 어레이 기반 뉴로모픽 프로세서 및 그 동작 방법
JP2022507721A (ja) * 2018-11-18 2022-01-18 インナテラ・ナノシステムズ・ビー.ブイ. スパイキングニューラルネットワーク
US20210182684A1 (en) * 2019-12-13 2021-06-17 Qualcomm Incorporated Depth-first deep convolutional neural network inference
KR20210126335A (ko) * 2020-04-10 2021-10-20 삼성전자주식회사 뉴로모픽 장치 및 그 동작방법
KR20210158697A (ko) * 2020-06-24 2021-12-31 삼성전자주식회사 뉴로모픽 장치 및 뉴로모픽 장치를 이용하여 뉴럴 네트워크를 구현하는 방법
EP4241207A1 (en) * 2020-11-05 2023-09-13 Umnai Limited Interpretable neural network

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210157049A (ko) * 2020-06-19 2021-12-28 포항공과대학교 산학협력단 저항 변화 메모리 어레이 기반의 가중 시냅스를 이용한 뉴럴 네트워크
KR102353816B1 (ko) * 2021-05-18 2022-01-20 박희천 심층 신경망을 위한 뉴로모픽 컴퓨팅 구조의 최적화 시스템
WO2024076165A1 (ko) * 2022-10-06 2024-04-11 오픈엣지테크놀로지 주식회사 신경망 연산을 위한 명령어 세트 생성방법과 이를 위한 컴퓨팅 장치

Also Published As

Publication number Publication date
US20200184315A1 (en) 2020-06-11
US11681899B2 (en) 2023-06-20

Similar Documents

Publication Publication Date Title
US11521046B2 (en) Time-delayed convolutions for neural network device and method
US11087208B2 (en) Analog neuromorphic circuits for dot-product operation implementing resistive memories
US11861489B2 (en) Convolutional neural network on-chip learning system based on non-volatile memory
US10708522B2 (en) Image sensor with analog sample and hold circuit control for analog neural networks
KR20200069901A (ko) 뉴럴 네트워크를 분할하는 방법 및 뉴로모픽 장치
US9646243B1 (en) Convolutional neural networks using resistive processing unit array
US11087204B2 (en) Resistive processing unit with multiple weight readers
KR102578826B1 (ko) 뉴럴 네트워크 장치 및 그 동작 방법
US20200117986A1 (en) Efficient processing of convolutional neural network layers using analog-memory-based hardware
CN112825153A (zh) 神经网络系统中数据处理的方法、神经网络系统
Zhang et al. Memristive quantized neural networks: A novel approach to accelerate deep learning on-chip
JP2022554371A (ja) メモリスタに基づくニューラルネットワークの並列加速方法およびプロセッサ、装置
US20210374546A1 (en) Row-by-row convolutional neural network mapping for analog artificial intelligence network training
US20210383203A1 (en) Apparatus and method with neural network
KR20210143614A (ko) 뉴럴 네트워크를 구현하는 뉴로모픽 장치 및 그 동작 방법
KR20210126335A (ko) 뉴로모픽 장치 및 그 동작방법
CN114241245A (zh) 一种基于残差胶囊神经网络的图像分类系统
JP2022008236A (ja) ニューロモルフィック装置及びニューラルネットワークを具現する方法
Sun et al. Quaternary synapses network for memristor-based spiking convolutional neural networks
CN114626500A (zh) 一种神经网络计算方法及相关设备
KR102650660B1 (ko) 뉴로모픽 장치 및 뉴로모픽 장치에서 멀티-비트 뉴로모픽 연산을 처리하는 방법
KR20200094534A (ko) 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치에서 멀티-비트 연산을 처리하는 방법
Soures et al. Enabling on-device learning with deep spiking neural networks for speech recognition
Bala et al. High level abstraction of memristor model for neural network simulation
CN117532885B (zh) 3d打印智能辅助系统、方法及存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal