KR20210143614A - 뉴럴 네트워크를 구현하는 뉴로모픽 장치 및 그 동작 방법 - Google Patents

뉴럴 네트워크를 구현하는 뉴로모픽 장치 및 그 동작 방법 Download PDF

Info

Publication number
KR20210143614A
KR20210143614A KR1020200060625A KR20200060625A KR20210143614A KR 20210143614 A KR20210143614 A KR 20210143614A KR 1020200060625 A KR1020200060625 A KR 1020200060625A KR 20200060625 A KR20200060625 A KR 20200060625A KR 20210143614 A KR20210143614 A KR 20210143614A
Authority
KR
South Korea
Prior art keywords
feature map
values
input
output
binary
Prior art date
Application number
KR1020200060625A
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 KR1020200060625A priority Critical patent/KR20210143614A/ko
Priority to US17/083,827 priority patent/US20210365765A1/en
Publication of KR20210143614A publication Critical patent/KR20210143614A/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/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Abstract

복수의 한계값들에 기초하여 입력 피처맵의 픽셀 값들을 이진화함으로써 복수의 바이너리 피처맵들을 생성하고, 크로스바 어레이 회로 유닛을 이용하여 복수의 바이너리 피처맵들과 복수의 커널들 간의 곱셈 연산을 수행함으로써, 출력 피처맵의 픽셀 값들을 생성한다.

Description

뉴럴 네트워크를 구현하는 뉴로모픽 장치 및 그 동작 방법 {NEUROMORPHIC DEVICE FOR IMPLEMENTING NEURAL NETWORK AND METHOD FOR THEREOF}
뉴럴 네트워크를 구현하는 뉴로모픽 장치 및 그 동작 방법에 관한다.
메모리 중심의 뉴럴 네트워크 장치는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 메모리 중심의 뉴럴 네트워크 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 메모리 중심의 뉴럴 네트워크를 활용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다.
따라서, 메모리 중심의 뉴럴 네트워크를 이용하여 대량의 입력 데이터를 실시간으로 분석하여, 원하는 정보를 추출하기 위해서는 연산을 효율적으로 처리할 수 있는 기술이 요구된다.
뉴럴 네트워크를 구현하는 뉴로모픽 장치 및 그 동작 방법을 제공하는데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는 데 있다. 해결하려는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
일 측면에 따른 뉴로모픽 장치를 이용하여 뉴럴 네트워크를 구현하는 방법은, 복수의 한계값들에 기초하여 입력 피처맵의 픽셀 값들을 이진화함으로써 복수의 바이너리 피처맵들을 생성하는 단계; 상기 복수의 바이너리 피처맵들의 픽셀 값들을 크로스바 어레이 회로 유닛의 입력 값들로 제공하는 단계; 상기 크로스바 어레이 회로 유닛에 적용될 가중치 값들을 상기 크로스바 어레이 회로 유닛에 포함되는 시냅스 회로들에 저장하는 단계; 상기 입력 값들과 상기 가중치 값들 간의 곱셈 연산을 수행함으로써 상기 크로스바 어레이 회로 유닛의 출력 값들을 산출하는 단계; 및 상기 크로스바 어레이 회로 유닛에서 산출된 출력 값들을 합성(merge)함으로써 출력 피처맵의 픽셀 값들을 생성하는 단계를 포함한다.
다른 측면에 따른 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법을 실행하는 명령어들을 포함하는 하나 이상의 프로그램이 기록된 기록매체를 포함할 수 있다.
또 다른 측면에 따른 장치는, 크로스바 어레이 회로 유닛을 포함하는 온-칩 메모리(on-chip memory); 및 적어도 하나의 프로그램을 실행함으로써 뉴럴 네트워크를 구동하는 프로세서를 포함하고, 상기 프로세서는, 복수의 한계값들에 기초하여 입력 피처맵의 픽셀 값들을 이진화함으로써 복수의 바이너리 피처맵들을 생성하고, 상기 복수의 바이너리 피처맵들의 픽셀 값들을 크로스바 어레이 회로 유닛의 입력 값들로 제공하고, 상기 크로스바 어레이 회로 유닛에 적용될 가중치 값들을 상기 크로스바 어레이 회로 유닛에 포함되는 시냅스 회로들에 저장하고, 상기 입력 값들과 상기 가중치 값들 간의 곱셈 연산을 수행함으로써 상기 크로스바 어레이 회로 유닛의 출력 값들을 산출하고, 상기 크로스바 어레이 회로 유닛에서 산출된 출력 값들을 합성(merge)함으로써 출력 피처맵의 픽셀 값들을 생성한다.
또 다른 측면에 따른 복수의 레이어들로 구성되는 뉴럴 네트워크를 학습시키는 방법은, 첫 번째 레이어부터 n-1번째 레이어까지 순전파를 수행함으로써, n번째 레이어의 입력 피처맵을 생성하는 단계; 복수의 한계값들에 기초하여 상기 n번째 레이어의 입력 피처맵의 픽셀 값들을 이진화함으로써, 복수의 바이너리 피처맵들을 생성하는 단계; 및 마지막 레이어부터 상기 n번째 레이어까지 역전파를 수행함으로써, 상기 n번째 레이어의 상기 복수의 바이너리 피처맵들에 대응하는 복수의 커널들을 학습시키는 단계를 포함한다.
도 1은 생물학적 뉴런과, 생물학적 뉴런의 동작을 모사한 수학적 모델을 설명하기 위한 도면이다.
도 2a 내지 도 2b는 일 실시예에 따른 뉴로모픽 장치의 동작 방법을 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 뉴럴 네트워크의 아키텍처를 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 뉴럴 네트워크에서 입력 피처맵 및 출력 피처맵의 관계를 설명하기 위한 도면이다.
도 5a 내지 도 5b는 일 실시예에 따른 뉴로모픽 장치에서 수행되는 곱셈 연산을 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 뉴로모픽 장치에서 컨벌루션 연산이 수행되는 예시를 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 뉴로모픽 장치에서 뉴럴 네트워크를 구현하는 방법을 설명하기 위한 도면이다.
도 8a 내지 도 8b는 일 실시예에 따른 뉴로모픽 장치에서 바이너리 피처맵을 생성하는 방법을 설명하기 위한 도면이다.
도 9는 일 실시예에 따른 뉴로모픽 장치에서 복수의 바이너리 피처맵들을 크로스바 어레이 회로 유닛에 제공하는 방법을 설명하기 위한 도면이다.
도 10은 일 실시예에 따른 뉴로모픽 장치에서 크로스바 어레이 회로 유닛의 출력 값들을 합성하는 방법을 설명하기 위한 도면이다.
도 11은 일 실시예에 따른 뉴로모픽 장치에서 뉴럴 네트워크를 구현하는 방법을 설명하기 위한 도면이다.
도 12는 일 실시예에 따른 뉴로모픽 장치에서 뉴럴 네트워크를 구현하는 방법을 나타내는 순서도이다.
도 13은 순전파 및 역전파의 일 예를 설명하기 위한 도면이다.
도 14는 일 실시예에 따른 뉴럴 네트워크 학습기에서 뉴럴 네트워크를 학습시키는 방법을 설명하기 위한 도면이다.
도 15는 일 실시예에 따른 뉴럴 네트워크 학습기에서 뉴럴 네트워크를 학습시키는 방법을 나타내는 순서도이다.
도 16은 일 실시예에 따른 뉴로모픽 장치 및 메모리를 도시한 블록도이다.
본 개시의 일부 실시예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들의 일부 또는 전부는, 특정 기능들을 실행하는 다양한 개수의 하드웨어 및/또는 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 본 개시의 기능 블록들은 하나 이상의 마이크로프로세서들에 의해 구현되거나, 소정의 기능을 위한 회로 구성들에 의해 구현될 수 있다. 또한, 예를 들어, 본 개시의 기능 블록들은 다양한 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능 블록들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 개시는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. “매커니즘”, “요소”, “수단” 및 “구성”등과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다.
또한, 도면에 도시된 구성 요소들 간의 연결 선 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것일 뿐이다. 실제 장치에서는 대체 가능하거나 추가된 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들에 의해 구성 요소들 간의 연결이 나타내어질 수 있다.
도 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)에 각각 출력될 수 있다.
도 3은 일 실시예에 따른 뉴럴 네트워크의 아키텍처를 설명하기 위한 도면이다.
도 3을 참고하면, 뉴럴 네트워크(3)는 딥 뉴럴 네트워크(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 등에 해당될 수 있다. 예를 들어, 뉴럴 네트워크(3)는 컨벌루션 뉴럴 네트워크(CNN)로 구현될 수 있으나, 이에 제한되지 않는다. 도 3에서는 뉴럴 네트워크(3)의 예시에 해당하는 컨벌루션 뉴럴 네트워크에서 일부의 컨벌루션 레이어가 도시되었지만, 컨벌루션 뉴럴 네트워크는 도시된 컨벌루션 레이어 외에도, 풀링 레이어(pooling layer), 풀리 커넥티드(fully connected) 레이어 등을 더 포함할 수 있다.
뉴럴 네트워크(3)는 복수 레이어들을 갖는 아키텍처로 구현될 수 있다. 뉴럴 네트워크(3)에서 입력 피쳐맵은 커널(kernel)이라 불리는 필터와의 컨벌루션 연산이 수행되고, 그 결과 출력 피처맵이 출력된다. 이때 생성된 출력 피처맵은 다음 레이어의 입력 피처맵으로서 새로운 커널과의 컨벌루션 연산이 수행되고, 새로운 출력 피처맵들이 출력된다. 이와 같은 컨벌루션 연산이 반복적으로 수행된 결과, 최종적으로는 뉴럴 네트워크(3)를 통한 입력 데이터의 특징들에 대한 인식 결과가 출력될 수 있다.
예를 들어, 도 3의 뉴럴 네트워크(3)에 24x24 픽셀 크기의 이미지가 입력된 경우, 입력 이미지는 커널과의 컨벌루션 연산을 통해 20x20 크기를 갖는 4채널의 피처맵들로 출력될 수 있다. 이후에도, 20x20 피처맵들은 커널과의 반복적인 컨벌루션 연산을 통해 크기가 줄어들면서, 최종적으로는 1x1 크기의 특징들이 출력될 수 있다. 뉴럴 네트워크(3)는 여러 레이어들에서 컨벌루션 연산 및 서브샘플링(또는 풀링) 연산을 반복적으로 수행함으로써 입력 이미지로부터 이미지 전체를 대표할 수 있는 강인한 특징들을 필터링하여 출력하고, 출력된 최종 특징들을 통해 입력 이미지의 인식 결과를 도출할 수 있다.
도 4는 일 실시예에 따른 뉴럴 네트워크에서 입력 피처맵 및 출력 피처맵의 관계를 설명하기 위한 도면이다.
도 4를 참조하면, 뉴럴 네트워크의 어느 레이어(4)에서, 제1 피처맵(FM1)은 입력 피처맵에 해당될 수 있고, 제2 피처맵(FM2)는 출력 피처맵에 해당될 수 있다. 피처맵은 입력 데이터의 다양한 특징들이 표현된 데이터 세트를 의미할 수 있다. 피처맵들(FM1, FM2)은 2차원 매트릭스의 픽셀들을 갖거나 또는 3차원 매트릭스의 픽셀들을 가질 수 있다. 피처맵들(FM1, FM2)은 너비(W)(또는 칼럼이라고 함), 높이(H)(또는 로우라고 함), 및 깊이(D)를 가진다. 이때, 깊이(D)는 채널들의 개수에 해당될 수 있다.
제1 피처맵(FM1) 및 커널(Kernel)에 대한 컨벌루션 연산이 수행될 수 있고, 그 결과 제2 피처맵(FM2)이 생성될 수 있다. 커널(Kernel)은 각 엘리먼트에 정의된 가중치로 제1 피처맵(FM1)과 컨벌루션 연산을 수행함으로써 제1 피처맵(FM1)의 특징들을 필터링한다. 커널(Kernel)은 제1 피처맵(FM1)을 슬라이딩 윈도우 방식으로 시프트하면서 제1 피처맵(FM1)의 윈도우들(또는 타일이라고도 함)과 컨벌루션 연산을 수행한다. 각 시프트 동안, 커널(Kernel)에 포함된 가중치들 각각은 제1 피처맵(FM1) 내 중첩된 윈도우의 픽셀들과 각각과 곱해지고 더해질 수 있다. 제1 피처맵(FM1)과 커널(Kernel)이 컨벌루션됨에 따라, 제2 피처맵(FM2)의 하나의 채널이 생성될 수 있다. 도 4에는 하나의 커널(Kernel)이 도시되었으나, 실제로는 복수의 커널들이 제1 피처맵(FM1)과 각각 컨벌루션되어, 복수의 채널들의 제2 피처맵(FM2)이 생성될 수 있다.
도 3 및 도 4에서는 설명의 편의를 위하여 뉴럴 네트워크(3)의 개략적인 아키텍처에 대해서만 도시되어 있다. 하지만, 뉴럴 네트워크(3)는 도시된 바와 달리, 보다 많거나 적은 개수의 레이어들, 피처맵들, 커널들 등으로 구현될 수 있고, 그 크기들 또한 다양하게 변형될 수 있음을 당해 기술분야의 통상의 기술자라면 이해할 수 있다.
도 5a 내지 도 5b는 일 실시예에 따른 뉴로모픽 장치에서 수행되는 곱셈 연산을 설명하기 위한 도면이다.
먼저 도 5a를 참조하면, 입력 피처맵과 커널 간의 컨벌루션 연산은 벡터-행렬 곱셈(vector-matrix multiplication)을 이용하여 수행될 수 있다. 예를 들어, 입력 피처맵의 픽셀들은 행렬 X(510)로 표현될 수 있고, 커널의 가중치들은 행렬 W(511)로 표현될 수 있다. 출력 피처맵의 픽셀들은, 행렬 X(510)와 행렬 W(511) 간의 곱셈 연산 결과 값인 행렬 Y(512)로 표현될 수 있다.
도 5b를 참조하면, 뉴로모픽 장치의 크로스바 어레이 회로를 이용하여 벡터 곱셈 연산이 수행될 수 있다. 도 5a와 비교하여 설명하면, 입력 피처맵의 픽셀들은 크로스바 어레이 회로의 입력 값으로 수신될 수 있으며, 입력 값은 전압(520)일 수 있다. 또한, 커널의 가중치들은 시냅스 회로 즉, 메모리 셀에 저장될 수 있으며, 메모리 셀에 저장된 가중치들은 컨덕턴스(521)일 수 있다. 따라서, 크로스바 어레이 회로의 출력 값은, 전압(520) 및 컨덕턴스(521) 간의 곱셈 연산 결과 값인 전류(522)로 표현될 수 있다.
도 6은 일 실시예에 따른 뉴로모픽 장치에서 컨벌루션 연산이 수행되는 예시를 설명하기 위한 도면이다.
뉴로모픽 장치는 입력 피처맵(610)의 픽셀들을 제공받을 수 있고, 뉴로모픽 장치의 크로스바 어레이 회로(600)는 RCA(Resistive Crossbar Memory Arrays)로 구현될 수 있다.
뉴로모픽 장치는 디지털 신호 형태의 입력 피처맵 수신할 수 있으며, DAC(Digital Analog Converter, 520)를 이용하여, 입력 피처맵을 아날로그 신호 형태의 전압으로 변환할 수 있다. 일 실시예에서, 뉴로모픽 장치는 DAC(620)를 이용하여 입력 피처맵의 픽셀 값들을 전압으로 변환한 후, 전압을 크로스바 어레이 회로(600)의 입력 값(601)으로 제공할 수 있다.
또한, 뉴로모픽 장치의 크로스바 어레이 회로(600)에는 학습된 커널의 가중치 값들이 저장될 수 있다. 가중치 값들은 크로스바 어레이 회로의 메모리 셀에 저장될 수 있으며 메모리 셀에 저장된 가중치 값들은 컨덕턴스(602)일 수 있다. 이 때, 뉴로모픽 장치는 전압(601)과 컨덕턴스(602) 간의 벡터 곱셈 연산을 수행함으로써 출력 값을 산출할 수 있으며, 출력 값은 전류(603)로 표현될 수 있다. 즉, 뉴로모픽 장치는 크로스바 어레이 회로(600)를 이용하여 입력 피처맵과 커널 간의 컨벌루션 연산 결과와 동일한 결과 값을 출력할 수 있다.
크로스바 어레이 회로(600)에서 출력된 전류(603)는 아날로그 신호이므로, 전류(603)를 다른 크로스바 어레이 회로의 입력 피처맵으로 사용하기 위해 뉴로모픽 장치는 ADC(Analog Digital Converter, 630)를 이용할 수 있다. 뉴로모픽 장치는 ADC(630)를 이용하여, 아날로그 신호인 전류(603)를 디지털 신호로 변환할 수 있다. 일 실시예에서 뉴로모픽 장치는 ADC(630)를 이용하여, 전류(603)를 입력 피처맵(610)의 픽셀들과 동일한 비트 수의 디지털 신호로 변환할 수 있다. 예를 들어, 입력 피처맵(610)이 픽셀들이 4-비트의 데이터인 경우, 뉴로모픽 장치는 ADC(630)를 이용하여 전류(603)를 4-비트의 데이터로 변환할 수 있다.
뉴로모픽 장치는 활성화 유닛(640)을 이용하여, ADC(630)에서 변환된 디지털 신호에 활성화 함수를 적용할 수 있다. 활성화 함수로는 Sigmoid 함수, Tanh 함수, 및 ReLU(Rectified Linear Unit) 함수를 이용할 수 있으나, 디지털 신호에 적용할 수 있는 활성화 함수는 이에 제한되지 않는다.
활성화 함수가 적용된 디지털 신호는 다른 크로스바 어레이 회로(650)의 입력 피처맵으로 이용될 수 있다. 활성화 함수가 적용된 디지털 신호가 다른 크로스바 어레이 회로(650)의 입력 피처맵으로 이용되는 경우, 상술한 과정이 다른 크로스바 어레이 회로(650)에 동일하게 적용될 수 있다.
도 7은 일 실시예에 따른 뉴로모픽 장치에서 뉴럴 네트워크를 구현하는 방법을 설명하기 위한 도면이다.
뉴로모픽 장치는 뉴럴 네트워크의 레이어의 입력 피처맵(IFM)의 픽셀 값들을 복수의 한계값들에 기초하여 이진화할 수 있다. 이를, 멀티-채널 이진화(Multi-channel binarization)라 칭한다. 뉴로모픽 장치는 멀티-채널 이진화를 수행함으로써, 입력 피처맵으로부터 복수의 바이너리 피처맵들을 생성할 수 있다.
뉴로모픽 장치는 크로스바 어레이 회로 유닛을 이용하여 복수의 바이너리 피처맵들과 복수의 커널들의 연산 결과를 출력할 수 있다. 뉴로모픽 장치는 크로스바 어레이 회로 유닛의 출력 값들을 병합함으로써, 출력 피처맵(OFM)을 생성할 수 있다.
뉴로모픽 장치는 뉴럴 네트워크를 구성하는 적어도 하나의 레이어의 입력 피처맵에 대하여 멀티-채널 이진화를 수행할 수 있다. 일 실시예에서 뉴로모픽 장치는 뉴럴 네트워크를 구성하는 모든 레이어들의 입력 피처맵들 각각에 대하여 멀티-채널 이진화를 수행할 수 있다. 다른 실시예에서 뉴로모픽 장치는 뉴럴 네트워크를 구성하는 첫 번째 레이어(First layer)의 입력 피처맵에 대해서만 멀티-채널 이진화를 수행할 수 있다.
뉴로모픽 장치는 뉴럴 네트워크의 입력 데이터를 멀티-채널 이진화 함으로써, 크로스바 어레이 회로 유닛에 이진화된 값들을 입력 값들로 제공할 수 있으므로, 저전력으로 뉴럴 네트워크를 구현할 수 있다.
도 8a 내지 도 8b는 일 실시예에 따른 뉴로모픽 장치에서 바이너리 피처맵을 생성하는 방법을 설명하기 위한 도면이다.
뉴로모픽 장치는 복수의 한계값들(thresholds)에 기초하여 멀티-채널 이진화를 수행함으로써, 입력 피처맵(811)으로부터 복수의 바이너리 피처맵들(812, 813, 814)을 생성할 수 있다.
뉴로모픽 장치는 입력 피처맵(811)의 어느 한 위치의 픽셀 값과 한계치를 비교하고, 바이너리 피처맵의 동일한 위치의 픽셀의 값을 결정할 수 있다. 예를 들어, 뉴로모픽 장치는 입력 피처맵(811)의 (3x4) 위치의 픽셀 값(cd)과 제1 한계치(threshold 1)을 비교하고, 제1 바이너리 피처맵(812)의 (3x4) 위치의 픽셀 값을 결정할 수 있다.
뉴로모픽 장치는 입력 피처맵(811)의 픽셀 값이 한계값보다 크거나 같으면, 대응되는 바이너리 피처맵의 픽셀 값을 1로 결정할 수 있다. 뉴로모픽 장치는 입력 피처맵(811)의 픽셀 값이 한계값보다 작으면, 대응되는 바이너리 피처맵의 픽셀 값을 0 또는 -1로 결정할 수 있다. 또는, 뉴로모픽 장치는 입력 피처맵(811)의 픽셀 값이 한계값과 동일하면, 대응되는 바이너리 피처맵의 픽셀 값을 0 또는 -1로 결정할 수 있다.
예컨대, 입력 피처맵(811)의 픽셀 값들이 [15, 15, 10, 12; 3, 12, 11, 10; 2, 3, 7, 9; 2, 4, 5, 7]이고, 제1 한계치(threshold 1)가 3, 제2 한계치(threshold 2)가 6, 제3 한계치(threshold 3)가 10인 경우를 고려한다. 뉴로모픽 장치가 멀티-채널 이진화를 수행함으로써, 제1 한계치에 대응하여 [1, 1, 1, 1; 1, 1, 1, 1; -1, 1, 1, 1; -1, 1, 1, 1]의 값들을 갖는 제1 바이너리 피처맵(812), 제2 한계치에 대응하여[1, 1, 1, 1; -1, 1, 1, 1; -1, -1, 1, 1; -1, -1, -1, 1]의 값들을 갖는 제2 바이너리 피처맵(813), 및 제3 한계치에 대응하여 [1, 1, 1, 1, -1, 1, 1, 1; -1, -1, -1, -1; -1, -1, -1, -1]의 값들을 갖는 제3 바이너리 피처맵(814)이 생성될 수 있다.
한계값이 Z개인 경우, 하나의 입력 피처맵(821)으로부터 Z개의 바이너리 피처맵들(822)이 생성될 수 있다. 즉, 입력 피처맵(821)이 D개의 채널을 갖고 한계값이 Z개인 경우, 바이너리 피처맵들(822)은 총 DxZ개의 채널을 가질 수 있다.
뉴로모픽 장치는 뉴럴 네트워크의 입력 데이터를 복수의 한계값들에 기초하여 멀티-채널 이진화 함으로써, 입력 데이터를 단순히 이진화하는 종래의 방법과 비교하여, 입력 데이터의 손실을 줄일 수 있다.
복수의 한계값들의 크기 및 개수는 뉴럴 네트워크의 입력 피처맵의 비트 수, 크기 등을 고려하여 결정될 수 있다. 복수의 한계값들의 크기 및 개수는 미리 결정될 수 있다.
한계값의 개수가 늘어나면 바이너리 피처맵의 개수가 늘어나므로, 뉴럴 네트워크를 구동하는 하드웨어의 성능을 고려하여 한계값의 개수가 결정될 수 있다. 한계값의 개수가 늘어나면 입력 피처맵의 손실이 감소될 수 있으므로, 뉴럴 네트워크의 분류 성능을 고려하여 한계값의 개수가 결정될 수 있다. 예컨대, 뉴로모픽 장치는 뉴럴 네트워크의 원하는 분류 성능을 만족하는 최소 개수의 한계값들을 이용할 수 있다.
복수의 한계값들은 서로 다른 값들을 가질 수 있다. 복수의 한계값들의 분포는 입력 데이터의 분포 특성을 고려하여 결정될 수 있다. 예컨대, 입력 데이터의 픽셀 값들의 분포에 기초하여, 복수의 한계값들이 결정될 수 있다. 복수의 한계값들은 균등한 간격을 갖거나 비균등한 간격을 가질 수 있다. 예컨대, 입력 데이터의 픽셀 값들이 집중적으로 분포한 범위를 상대적으로 촘촘하게 나누고, 드물게 분포한 범위를 상대적으로 성기게 나눌 수 있도록, 복수의 한계값들이 결정될 수 있다.
도 9는 일 실시예에 따른 뉴로모픽 장치에서 복수의 바이너리 피처맵들을 크로스바 어레이 회로 유닛에 제공하는 방법을 설명하기 위한 도면이다.
뉴로모픽 장치는 입력 피처맵(910)을 멀티-레벨 이진화 함으로써, 복수의 바이너리 피처맵들(921, 922, 923)을 생성할 수 있다. 뉴로모픽 장치는 DAC를 이용하여 디지털 신호 형태의 복수의 바이너리 피처맵들(921, 922, 923)을 아날로그 신호 형태의 전압으로 변환할 수 있다. 뉴로모픽 장치는 전압을 크로스바 어레이 회로 유닛(930)의 입력 값으로 제공할 수 있다.
일 실시예에서, 뉴로모픽 장치는 제1 바이너리 피처맵(921)을 아날로그 신호 형태로 변환한 전압을 제1 크로스바 어레이 회로(931)의 입력 값으로 제공하고, 제2 바이너리 피처맵(922)을 아날로그 신호 형태로 변환한 전압을 제2 크로스바 어레이 회로(932)의 입력 값으로 제공하고, 제3 바이너리 피처맵(923)을 아날로그 신호 형태로 변환한 전압을 제3 크로스바 어레이 회로(933)의 입력 값으로 제공할 수 있다.
다른 실시예에서, 뉴로모픽 장치는 제1 바이너리 피처맵(921) 및 제2 바이너리 피처맵(922)을 아날로그 신호 형태로 변환한 전압을 제1 크로스바 어레이 회로(931)의 입력 값으로 제공할 수 있다. 즉, 크로스바 어레이 회로의 입력 노드의 개수에 따라, 바이너리 피처맵과 크로스바 어레이 회로가 매칭될 수 있다.
도 10은 일 실시예에 따른 뉴로모픽 장치에서 크로스바 어레이 회로 유닛의 출력 값들을 합성하는 방법을 설명하기 위한 도면이다.
뉴로모픽 장치는 시냅스 회로에 저장된 컨덕턴스 값과 크로스바 어레이 회로 유닛(1010)의 입력 값 간의 곱셈 연산을 수행할 수 있다. 곱셈 연산이 수행된 결과, 각각의 크로스바 어레이 회로에서 출력 값이 산출될 수 있다. 이때, 시냅스 회로에 저장된 커널의 가중치들은 이진 값들(binary values)일 수 있다.
크로스바 어레이 회로 각각은, 복수의 바이너리 피처맵들을 수신하고 있으므로, 뉴로모픽 장치는 크로스바 어레이 회로 각각에서 산출된 출력 값들을 합성(merge)할 수 있다.
일 실시예에서 뉴로모픽 장치는 크로스바 어레이 회로 각각에서 산출된 출력 값들 중에서, 각 크로스바 어레이 회로에서 동일한 순서를 갖는 컬럼 배선의 출력 값들을 합성할 수 있다. 예를 들어, 뉴로모픽 장치는, 제1 크로스바 어레이 회로(1011)의 첫 번째 컬럼 배선의 출력 값 I1, 제2 크로스바 어레이 회로(1012)의 첫 번째 컬럼 배선의 출력 값 I2, 및 제3 크로스바 어레이 회로(1013) 첫 번째 컬럼 배선의 출력 값 I3를 합성할 수 있다. 뉴로모픽 장치는 출력 값 I1 내지 I3를 합성함으로써 출력 피처맵(1020)을 생성할 수 있다.
제1 내지 제3 크로스바 어레이 회로(1011, 1012, 1013)에서 산출된 출력 값들은 아날로그 신호 형태(전류 값)이므로, 뉴로모픽 장치는 ADC를 이용하여 출력 값들을 디지털 신호로 변환할 수 있다. 뉴로모픽 장치는 디지털 신호로 변환된 출력 값들을 합성한 후, 합성된 출력 값들로부터 출력 피처맵(1020)의 픽셀 값들을 생성할 수 있다. 예컨대, 디지털 신호로 변환된 출력 값들을 더함으로써, 출력 피처맵(1020)의 픽셀 값들을 생성할 수 있다.
또는, 뉴로모픽 장치는 ADC에서 디지털 신호로 변환된 출력 값들에 활성화 함수를 적용할 수 있다. 뉴로모픽 장치는 합성된 출력 값들에 활성화 함수를 적용한 후, 활성화 함수의 출력 값들로부터 출력 피처맵(1020)의 픽셀 값들을 생성할 수 있다.
뉴로모픽 장치는 출력 피처맵(1020)을 다시 멀티-채널 이진화 함으로써 새로운 크로스바 어레이 회로 유닛에 이진 값들을 제공할 수 있으므로, 출력 피처맵(1020)의 픽셀 값들은 반드시 이진 값들(binary values)일 필요가 없다. 따라서, 출력 피처맵(1020)의 픽셀 값들은 멀티-비트일 수 있다. 예컨대, 출력 피처맵(1020)의 픽셀의 비트 수는 2 이상이거나, 입력 피처맵의 픽셀의 비트 수와 동일할 수 있다. 따라서, 출력 피처맵의 픽셀 값들이 이진 값들인 종래 방법에 비하여, 뉴럴 네트워크의 높은 분류 정확도를 구현할 수 있다.
도 11은 일 실시예에 따른 뉴로모픽 장치에서 뉴럴 네트워크를 구현하는 방법을 설명하기 위한 도면이다.
뉴로모픽 장치는 입력 피처맵(1110)의 픽셀 값들을 복수의 한계값들에 기초하여 이진화 함으로써(즉, 멀티-채널 이진화 함으로써), 복수의 바이너리 피처맵들(1120)을 생성한다. 복수의 바이너리 피처맵들(1120)의 픽셀 값들은 크로스바 어레이 회로 유닛(1130)의 입력 값들로 제공된다. 뉴로모픽 장치는 크로스바 어레이 회로 유닛(1130)의 시냅스 회로에 저장된 컨덕턴스 값과 입력 값 간의 곱셈 연산을 수행하여 크로스바 어레이 회로 유닛(1130)의 출력 값들을 산출한다. 뉴로모픽 장치는 크로스바 어레이 회로 유닛(1130)의 출력 값들을 합성함으로써 출력 피처맵(1140)을 생성한다.
뉴로모픽 장치는 출력 피처맵(1140)을 새로운 입력 피처맵(1140)으로서 제공한다. 뉴로모픽 장치는 새로운 입력 피처맵(1140)의 픽셀 값들을 새로운 복수의 한계값들에 기초하여 이진화 함으로써, 새로운 복수의 바이너리 피처맵들(1150)을 생성한다. 뉴로모픽 장치는 새로운 크로스바 어레이 회로 유닛(1160)의 시냅스 회로에 저장된 컨덕턴스 값과 새로운 크로스바 어레이 회로 유닛(1160)의 입력 값 간의 곱셈 연산을 수행하여 새로운 크로스바 어레이 회로 유닛(1160)의 출력 값들을 산출한다. 뉴로모픽 장치는 새로운 크로스바 어레이 회로 유닛(1160)의 출력 값들을 합성함으로써 새로운 출력 피처맵(1170)을 생성한다.
복수의 바이너리 피처맵들(1120)을 생성하기 위해 사용된 복수의 한계값들 중 적어도 하나는 새로운 복수의 바이너리 피처맵들(1150)을 생성하기 위해 사용된 새로운 복수의 한계값들 중 적어도 하나와 다른 값을 가질 수 있다. 복수의 한계값들의 개수는 새로운 복수의 한계값들의 개수와 다를 수 있다. 새로운 복수의 한계값들의 크기 및 개수는 새로운 입력 피처맵(1140)의 비트 수, 크기 등을 고려하여 결정될 수 있다. 새로운 복수의 한계값들의 크기 및 개수는 미리 결정될 수 있다.
도 12는 일 실시예에 따른 뉴로모픽 장치에서 뉴럴 네트워크를 구현하는 방법을 나타내는 순서도이다.
도 12에 도시된, 뉴로모픽 장치에서 뉴럴 네트워크를 구현하는 방법은, 앞서 설명된 도면들에서 설명된 실시예들에 관련되므로, 이하 생략된 내용이라 할지라도, 앞서 도면들에서 설명된 내용들은 도 12의 방법에도 적용될 수 있다.
1210 단계에서, 뉴로모픽 장치는 서로 다른 복수의 한계값들에 기초하여 입력 피처맵의 픽셀 값들을 이진화함으로써 복수의 바이너리 피처맵들을 생성할 수 있다. 뉴로모픽 장치는 복수의 한계값들 각각에 대해, 입력 피처맵의 픽셀 값들과 한계값을 비교함으로써 바이너리 피처맵의 픽셀 값들을 결정할 수 있다. 뉴로모픽 장치는 복수의 한계값들 각각에 대해, 입력 피처맵의 픽셀 값이 한계값보다 크면 바이너리 피처맵의 픽셀 값을 1로 설정하고, 입력 피처맵의 픽셀 값이 한계값보다 작으면 바이너리 피처맵의 픽셀 값을 0 또는 -1로 결정할 수 있다.
1220 단계에서, 뉴로모픽 장치는 복수의 바이너리 피처맵들의 픽셀 값들을 크로스바 어레이 회로 유닛의 입력 값들로 제공할 수 있다. 뉴로모픽 장치는 복수의 바이너리 피처맵들의 픽셀 값들을 아날로그 형태로 변환한 뒤, 크로스바 어레이 회로 유닛의 입력 값들로 제공할 수 있다.
1230 단계에서, 뉴로모픽 장치는 크로스바 어레이 회로 유닛에 적용될 가중치 값들을 크로스바 어레이 회로 유닛에 포함되는 시냅스 회로들에 저장할 수 있다. 뉴로모픽 장치는 복수의 바이너리 피처맵들 각각에 대응하는 크로스바 어레이 회로의 시냅스 회로들에 복수의 바이너리 피처맵들 각각에 대응하는 커널의 가중치 값들을 저장할 수 있다.
1240 단계에서, 뉴로모픽 장치는 입력 값들과 가중치 값들 간의 곱셈 연산을 수행함으로써 크로스바 어레이 회로 유닛의 출력 값들을 산출할 수 있다.
1250 단계에서, 뉴로모픽 장치는 크로스바 어레이 회로 유닛에서 산출된 출력 값들을 합성(merge)함으로써 출력 피처맵의 픽셀 값들을 생성할 수 있다. 뉴로모픽 장치는 출력 값들을 디지털 신호로 변환한 뒤, 합성함으로써 출력 피처맵의 픽셀 값들을 생성할 수 있다. 또는, 뉴로모픽 장치는 합성된 출력 값들에 활성화 함수를 적용하고, 활성화 함수의 출력 값들로부터 출력 피처맵의 픽셀 값들을 생성할 수 있다.
표 1은 종래 방법으로 구현된 뉴럴 네트워크와 일 실시예에 따라 제안된 방법으로 구현된 뉴럴 네트워크의 분류 정확도를 비교한 표이다.
종래 방법 비교대상 방법 제안 방법 1 제안 방법 2
Accuracy 88.1% 90.6% 90.2% 91.3%
공통적으로, 뉴럴 네트워크의 입력 데이터는 8-bit RGB 데이터가 사용되었다.종래 방법은 가중치 값들 및 입력 피처맵의 픽셀 값들을 단순히 이진화 함으로써, 뉴럴 네트워크를 구현하였다. 비교대상 방법은 가중치 값들만 단순히 이진화 하였고, 입력 피처맵의 픽셀 값들은 8-bit의 풀 정밀도(full precision)를 갖도록, 뉴럴 네트워크를 구현하였다. 일 실시예에 따른 뉴로모픽 장치는 제안 방법 1에 따라, 가중치 값들을 이진화하고 입력 피처맵의 픽셀 값들을 12개의 한계값들로 멀티-채널 이진화 함으로써, 뉴럴 네트워크를 구현하였다. 일 실시예에 따른 뉴로모픽 장치는 제안 방법 2에 따라, 가중치 값들을 이진화하고 입력 피처맵의 픽셀 값들을 24개의 한계값들로 멀티-채널 이진화 함으로써, 뉴럴 네트워크를 구현하였다.
일 실시예에 따른 뉴로모픽 장치로 제안 방법 1 또는 제안 방법 2를 이용하여 뉴럴 네트워크를 구현하면, 종래 방법 대비 우수한 분류 정확도를 획득할 수 있음을 확인할 수 있다. 또한, 일 실시예에 따른 뉴로모픽 장치로 제안 방법 1 또는 제안 방법 2를 이용하여 뉴럴 네트워크를 구현하면, 입력 피처맵의 픽셀 값들을 풀 정밀도로 유지하는 비교대상 방법과 유사하거나 우수한 분류 정확도로 뉴럴 네트워크를 구현할 수 있음을 확인할 수 있다. 또한, 더 많은 개수의 한계값들을 이용하여 뉴럴 네트워크를 구현하면 더 높은 분류 정확도를 얻을 수 있음을 확인할 수 있다.
도 13은 순전파 및 역전파의 일 예를 설명하기 위한 도면이다.
도 13에는 컨볼루션 레이어(1300)의 일부가 도시되어 있다. 도 13의 컨볼루션 레이어(1300)는 입력 피처맵(X), 커널(F), 및 출력 피처맵(O)을 포함한다.
순전파를 통해 입력 피처맵(X)과 커널(F)의 컨볼루션 연산이 수행되고, 그 결과 출력 피처맵(O)이 생성될 수 있다.
예를 들어, 커널(F)과 입력 피처맵(X)은 슬라이딩 윈도우(sliding window) 방식에 의하여 컨볼루션 연산이 수행될 수 있다. 구체적으로, 입력 피처맵(X)의 제1 윈도우 내의 픽셀 값들과 가중치 값들이 각각 곱해진 후 더해진다. 그리고, 제1 윈도우가 어느 축 방향(예를 들어, x축, y축 또는 z축)으로 이동하여 제2 윈도우를 구성한다. 그리고, 제2 윈도우 내의 픽셀 값들과 가중치 값들이 각각 곱해진 후 더해진다. 이러한 방식으로 컨볼루션 연산이 연속으로 수행됨에 따라, 출력 피처맵(O)이 생성된다.
도 13에는 하나의 입력 피처맵(X) 및 하나의 커널(F)만이 도시되어 있으나, 복수의 입력 피처맵(X)들과 복수의 커널(F)들의 컨볼루션 연산이 수행되어, 출력 피처맵(O)을 생성할 수도 있다.
최총 출력 피처맵이 생성되면, 최총 출력 피처맵이 기대 결과와 비교됨으로써 손실 함수(loss function)가 생성될 수 있다. 뉴럴 네트워크를 학습시키는 과정은 손실 함수의 값(loss)을 최소화시키는 방향으로 이루어질 수 있다.
손실 함수의 값(loss)을 최소화시키기 위해서, 로스 그레디언트(loss gradient,
Figure pat00001
)가 역전파될 수 있다. 이때 로스 그레디언트는 액티베이션의 그레디언트(gradient of activation)를 의미할 수 있다.
역전파된 로스 그레디언트(
Figure pat00002
)와 엘리먼트들이 재배열된 커널의 컨볼루션 연산이 수행되고, 그 결과 다음 레이어로 역전파되기 위한 로스 그레디언트(
Figure pat00003
)가 생성될 수 있다.
로스 그레디언트(
Figure pat00004
)와 입력 피처맵(X)의 컨볼루션 연산이 수행되고, 그 결과 가중치 그레디언트(gradient of weight,
Figure pat00005
)가 생성될 수 있다.
도 14는 일 실시예에 따른 뉴럴 네트워크 학습기에서 뉴럴 네트워크를 학습시키는 방법을 설명하기 위한 도면이다.
뉴럴 네트워크 학습기(neural network learning device)는 뉴럴 네트워크를 생성하거나, 뉴럴 네트워크를 훈련(train)(또는 학습(learn))하거나, 뉴럴 네트워크의 데이터를 양자화하거나, 또는 뉴럴 네트워크를 재훈련(retrain)하는 기능들과 같은 다양한 프로세싱 기능들을 갖는 컴퓨팅 디바이스에 해당된다. 예를 들어, 뉴럴 네트워크 학습기는 PC(personal computer), 서버 디바이스, 모바일 디바이스 등의 다양한 종류의 디바이스들로 구현될 수 있다. 예를 들어, 뉴럴 네트워크 학습기는 뉴로모픽 장치를 포함할 수 있다.
1410 단계에서, 뉴럴 네트워크 학습기는 뉴럴 네트워크의 첫 번째 레이어의 입력 피처맵의 픽셀 값들을 복수의 한계값들에 기초하여 이진화함으로써, 복수의 바이너리 피처맵들을 생성할 수 있다. 뉴럴 네트워크 학습기는 마지막 레이어부터 첫 번째 레이어까지 역전파를 수행함으로써, 복수의 바이너리 피처맵들에 대응하는 복수의 커널들을 학습시킬 수 있다. 첫 번째 레이어의 입력 피처맵의 픽셀 값들은 멀티-비트일 수 이고, 복수의 바이너리 피처맵들의 픽셀 값들은 단일-비트일 수 있다. 마지막 레이어부터 첫 번째 레이어까지 역전파를 수행하는데 사용된 뉴럴 네트워크 모델은 첫 번째 레이어의 입력 피처맵들만 멀티-채널 이진화된 뉴럴 네트워크 모델일 수 있다.
1420 단계에서, 뉴럴 네트워크 학습기는 첫 번째 레이어의 복수의 바이너리 피처맵들과 대응되는 복수의 커널들 간의 연산을 수행함으로써, 첫 번째 레이어의 출력 피처맵을 생성할 수 있다. 뉴럴 네트워크 학습기는 첫 번째 레이어의 출력 피처맵을 두 번째 레이어의 입력 피처맵으로 제공하고, 두 번째 레이어의 입력 피처맵을 복수의 한계값들에 기초하여 이진화 함으로써, 두 번째 레이어의 복수의 바이너리 피처맵들을 생성할 수 있다. 뉴럴 네트워크 학습기는 마지막 레이어부터 두 번째 레이어까지 역전파를 수행함으로써, 두 번째 레이어의 복수의 바이너리 피처맵들에 대응되는 복수의 커널들을 학습시킬 수 있다. 마지막 레이어부터 두 번째 레이어까지 역전파를 수행하는데 사용된 뉴럴 네트워크 모델은 두 번째 레이어의 입력 피처맵들은 멀티-채널 이진화되고, 세 번째 레이어부터 마지막 레이어까지의 입력 피처맵들은 멀티-채널 이진화되지 않은 뉴럴 네트워크 모델일 수 있다.
1430 단계에서, 뉴럴 네트워크 학습기는 첫 번째 레이어의 복수의 바이너리 피처맵들과 대응되는 복수의 커널들 간의 연산을 수행하고, 두 번째 레이어의 복수의 바이너리 피처맵들과 대응되는 복수의 커널들 간의 연산을 수행함으로써, 두 번째 레이어의 출력 피처맵을 생성할 수 있다. 뉴럴 네트워크 학습기는 두 번째 레이어의 출력 피처맵을 세 번째 레이어의 입력 피처맵으로 제공하고, 세 번째 레이어의 입력 피처맵을 복수의 한계값들에 기초하여 이진화 함으로써, 세 번째 레이어의 복수의 바이너리 피처맵들을 생성할 수 있다. 뉴럴 네트워크 학습기는 마지막 레이어부터 세 번째 레이어까지 역전파를 수행함으로써, 세 번째 레이어의 복수의 바이너리 피처맵들에 대응되는 복수의 커널들을 학습시킬 수 있다. 마지막 레이어부터 세 번째 레이어까지 역전파를 수행하는데 사용된 뉴럴 네트워크 모델은 세 번째 레이어의 입력 피처맵들은 멀티-채널 이진화되고, 네 번째 레이어부터 마지막 레이어까지의 입력 피처맵들은 멀티-채널 이진화되지 않은 뉴럴 네트워크 모델일 수 있다.
뉴럴 네트워크 학습기는 같은 방식을 반복하여 수행하고, 최종적으로 1440 단계에서 마지막 레이어의 복수의 바이너리 피처맵들에 대응되는 복수의 커널들을 학습시킬 수 있다.
도 15는 일 실시예에 따른 뉴럴 네트워크 학습기에서 뉴럴 네트워크를 학습시키는 방법을 나타내는 순서도이다.
도 15에 도시된, 뉴럴 네트워크를 학습시키는 방법은, 앞서 설명된 도면들에서 설명된 실시예들에 관련되므로, 이하 생략된 내용이라 할지라도, 앞서 도면들에서 설명된 내용들은 도 15의 방법에도 적용될 수 있다.
1510 단계에서, 뉴럴 네트워크 학습기는 첫 번째 레이어부터 n-1번째 레이어까지 순전파를 수행함으로써, n번째 레이어의 입력 피처맵을 생성할 수 있다. 뉴럴 네트워크 학습기는 첫 번째 레이어부터 n-1번째 레이어까지, 각각의 레이어에 대해 복수의 한계값들에 기초하여 입력 피처맵의 픽셀 값들을 이진화함으로써, 복수의 바이너리 피처맵들을 생성할 수 있다.
1520 단계에서, 뉴럴 네트워크 학습기는 복수의 한계값들에 기초하여 n번째 레이어의 입력 피처맵의 픽셀 값들을 이진화함으로써, 복수의 바이너리 피처맵들을 생성할 수 있다. 뉴럴 네트워크 학습기는 n-1번째 레이어까지 순전파를 수행함으로써 n-1번째 레이어의 출력 피처맵을 생성하고, n-1번째 레이어의 출력 피처맵을 n번째 레이어의 입력 피처맵으로 제공할 수 있다.
1530 단계에서, 뉴럴 네트워크 학습기는 마지막 레이어부터 n번째 레이어까지 역전파를 수행함으로써, n번째 레이어의 복수의 바이너리 피처맵들에 대응하는 복수의 커널들을 학습시킬 수 있다. 뉴럴 네트워크 학습기는 뉴럴 네트워크를 학습시키는 과정에서, 순전파 단계에서만 멀티-채널 이진화를 수행하며, 역전파 단계에서는 멀티-채널 이진화를 수행하지 않을 수 있다.
도 16은 일 실시예에 따른 뉴로모픽 장치 및 메모리를 도시한 블록도이다.
도 16을 참조하면, 뉴로모픽 장치(1600)는 프로세서(1610) 및 온-칩 메모리(on-chip memory, 1620)를 포함할 수 있다. 도 16에 도시된 뉴로모픽 장치(1600)에는 본 실시예들과 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴로모픽 장치(1600)에는 도 16에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당해 기술분야의 통상의 기술자에게 자명하다.
뉴로모픽 장치(1600)는 스마트폰, 드론, 태블릿 디바이스, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스, 자율주행 자동차, 로보틱스, 의료기기 등 저전력 뉴럴네트워크 구동이 필요한 디지털 시스템에 탑재될 수 있으나, 이에 제한되지 않는다.
뉴로모픽 장치(1600)는 복수의 온-칩 메모리(1620)를 포함할 수 있으며, 온-칩 메모리(1620) 각각은 복수의 크로스바 어레이 회로들로 구성될 수 있다. 크로스바 어레이 회로는 복수의 프리 시냅틱 뉴런(presynaptic neuron), 복수의 포스트 시냅틱 뉴런(postsynaptic neuron), 및 복수의 프리 시냅틱 뉴런과 복수의 포스트 시냅틱 뉴런 사이의 각각의 연결을 제공하는 시냅스 회로 즉, 메모리 셀을 포함할 수 있다. 일 실시예에서 크로스바 어레이 회로는 RCA(Resistive Crossbar Memory Arrays)로 구현될 수 있다.
외부 메모리(1630)는 뉴로모픽 장치(1600)에서 처리되는 각종 데이터들을 저장하는 하드웨어로서, 외부 메모리(1630)는 뉴로모픽 장치(1600)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 외부 메모리(1630)는 뉴로모픽 장치(1600)에 의해 구동될 애플리케이션들, 드라이버들 등을 저장할 수 있다. 외부 메모리(1630)는 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), 또는 플래시 메모리를 포함할 수 있다.
프로세서(1610)는 뉴로모픽 장치(1600)를 구동하기 위한 전반적인 기능들을 제어하는 역할을 한다. 예를 들어, 프로세서(1610)는 뉴로모픽 장치(1600) 내의 온-칩 메모리(1620)에 저장된 프로그램들을 실행함으로써, 뉴로모픽 장치(1600)를 전반적으로 제어한다. 프로세서(1610)는 뉴로모픽 장치(1600) 내에 구비된 CPU(central processing unit), GPU(graphics processing unit), AP(application processor) 등으로 구현될 수 있으나, 이에 제한되지 않는다. 프로세서(1610)는 외부 메모리(1630)로부터 각종 데이터들을 리드/라이트(read/write)하고, 리드/라이트된 데이터를 이용하여 뉴로모픽 장치(1600)를 실행한다.
프로세서(1610)는 복수의 한계값들에 기초하여 입력 피처맵의 픽셀 값들을 이진화함으로써 복수의 바이너리 피처맵들을 생성할 수 있다. 프로세서(1610)는 복수의 바이너리 피처맵들의 픽셀 값들을 크로스바 어레이 회로 유닛의 입력 값들로 제공할 수 있다. 프로세서(1610)는 DAC(Digital Analog Converter)를 이용하여 픽셀 값들을 아날로그 신호(전압)로 변환할 수 있다.
프로세서(1610)는 크로스바 어레이 회로 유닛에 적용될 가중치 값들을 크로스바 어레이 회로 유닛에 포함되는 시냅스 회로들에 저장할 수 있다. 시냅스 회로들에 저장된 가중치 값들은 컨덕턴스일 수 있다. 또한, 프로세서(1610)는 입력 값과, 시냅스 회로들에 저장된 커널 값들 간의 곱셈 연산을 수행함으로써 크로스바 어레이 회로 유닛의 출력 값들을 산출할 수 있다.
프로세서(1610)는 크로스바 어레이 회로 유닛에서 산출된 출력 값들을 합성(merge)함으로써 출력 피처맵의 픽셀 값들을 생성할 수 있다. 한편, 크로스바 어레이 회로 유닛에서 산출된 출력 값들(또는 산출된 출력 값에 웨이트 값이 곱해진 결과 값들)은 아날로그 신호 형태(전류)이므로, 프로세서(1610)는 ADC(Analog Digital Converter)를 이용하여 출력 값들을 디지털 신호로 변환할 수 있다. 또한, 프로세서(1610)는 ADC에서 디지털 신호로 변환된 출력 값들에 활성화 함수를 적용할 수 있다.
본 실시예들은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈과 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
또한, 본 명세서에서, "부"는 프로세서 또는 회로와 같은 하드웨어 구성(hardware component), 및/또는 프로세서와 같은 하드웨어 구성에 의해 실행되는 소프트웨어 구성(software component)일 수 있다.
전술한 본 명세서의 설명은 예시를 위한 것이며, 본 명세서의 내용이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 실시예의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 포함되는 것으로 해석되어야 한다.

Claims (19)

  1. 뉴로모픽 장치를 이용하여 뉴럴 네트워크를 구현하는 방법에 있어서,
    복수의 한계값들에 기초하여 입력 피처맵의 픽셀 값들을 이진화함으로써 복수의 바이너리 피처맵들을 생성하는 단계;
    상기 복수의 바이너리 피처맵들의 픽셀 값들을 크로스바 어레이 회로 유닛의 입력 값들로 제공하는 단계;
    상기 크로스바 어레이 회로 유닛에 적용될 가중치 값들을 상기 크로스바 어레이 회로 유닛에 포함되는 시냅스 회로들에 저장하는 단계;
    상기 입력 값들과 상기 가중치 값들 간의 곱셈 연산을 수행함으로써 상기 크로스바 어레이 회로 유닛의 출력 값들을 산출하는 단계; 및
    상기 크로스바 어레이 회로 유닛에서 산출된 출력 값들을 합성(merge)함으로써 출력 피처맵의 픽셀 값들을 생성하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 복수의 바이너리 피처맵들을 생성하는 단계는,
    상기 복수의 한계값들 각각에 대해, 상기 입력 피처맵의 픽셀 값들과 한계값을 비교함으로써 바이너리 피처맵의 픽셀 값들을 결정하는 단계를 포함하는, 방법.
  3. 제1항에 있어서,
    상기 복수의 바이너리 피처맵들을 생성하는 단계는,
    상기 복수의 한계값들 각각에 대해, 상기 입력 피처맵의 픽셀 값이 한계값보다 크면 바이너리 피처맵의 픽셀 값을 1로 결정하고, 상기 입력 피처맵의 픽셀 값이 상기 한계값보다 작으면 상기 바이너리 피처맵의 픽셀 값을 0 또는 -1로 결정하는 단계를 포함하는, 방법.
  4. 제1항에 있어서,
    상기 출력 피처맵의 픽셀 값은 멀티-비트인, 방법.
  5. 제1항에 있어서,
    상기 출력 피처맵의 픽셀 값의 비트 수는 상기 입력 피처맵의 픽셀 값의 비트 수와 동일한, 방법.
  6. 제1항에 있어서,
    상기 출력 피처맵의 픽셀 값들을 생성하는 단계는,
    상기 합성된 출력 값들에 활성화 함수를 적용함으로써, 상기 출력 피처맵의 픽셀 값들을 생성하는 단계를 포함하는, 방법.
  7. 제1항에 있어서,
    상기 출력 피처맵을 새로운 입력 피처맵으로 제공하는 단계;
    새로운 복수의 한계값들에 기초하여 상기 새로운 입력 피처맵의 픽셀 값들을 이진화함으로써 새로운 복수의 바이너리 피처맵들을 생성하는 단계; 및
    상기 새로운 복수의 바이너리 피처맵들의 픽셀 값들을 새로운 크로스바 어레이 회로 유닛의 입력 값들로 제공하는 단계를 더 포함하는, 방법.
  8. 제7항에 있어서,
    상기 복수의 한계값들 중 적어도 하나는 상기 새로운 복수의 한계값들 중 적어도 하나와 다른 값을 갖는, 방법.
  9. 뉴럴 네트워크를 구현하는 뉴로모픽 장치에 있어서,
    크로스바 어레이 회로 유닛을 포함하는 온-칩 메모리(on-chip memory); 및
    적어도 하나의 프로그램을 실행함으로써 뉴럴 네트워크를 구동하는 프로세서를 포함하고,
    상기 프로세서는,
    복수의 한계값들에 기초하여 입력 피처맵의 픽셀 값들을 이진화함으로써 복수의 바이너리 피처맵들을 생성하고,
    상기 복수의 바이너리 피처맵들의 픽셀 값들을 크로스바 어레이 회로 유닛의 입력 값들로 제공하고,
    상기 크로스바 어레이 회로 유닛에 적용될 가중치 값들을 상기 크로스바 어레이 회로 유닛에 포함되는 시냅스 회로들에 저장하고,
    상기 입력 값들과 상기 가중치 값들 간의 곱셈 연산을 수행함으로써 상기 크로스바 어레이 회로 유닛의 출력 값들을 산출하고,
    상기 크로스바 어레이 회로 유닛에서 산출된 출력 값들을 합성(merge)함으로써 출력 피처맵의 픽셀 값들을 생성하는, 뉴로모픽 장치.
  10. 제9항에 있어서,
    상기 프로세서는,
    상기 복수의 한계값들 각각에 대해, 상기 입력 피처맵의 픽셀 값들과 한계값을 비교함으로써 바이너리 피처맵의 픽셀 값들을 결정하는, 뉴로모픽 장치.
  11. 제9항에 있어서,
    상기 프로세서는,
    상기 복수의 한계값들 각각에 대해, 상기 입력 피처맵의 픽셀 값이 한계값보다 크면 바이너리 피처맵의 픽셀 값을 1로 결정하고, 상기 입력 피처맵의 픽셀 값이 상기 한계값보다 작으면 상기 바이너리 피처맵의 픽셀 값을 0 또는 -1로 결정하는, 뉴로모픽 장치.
  12. 제9항에 있어서,
    상기 출력 피처맵의 픽셀 값은 멀티-비트인, 뉴로모픽 장치.
  13. 제9항에 있어서,
    상기 출력 피처맵의 픽셀 값의 비트 수는 상기 입력 피처맵의 픽셀 값의 비트 수와 동일한, 뉴로모픽 장치.
  14. 제9항에 있어서,
    상기 프로세서는,
    상기 합성된 출력 값들에 활성화 함수를 적용함으로써, 상기 출력 피처맵의 픽셀 값들을 생성하는, 뉴로모픽 장치.
  15. 제9항에 있어서,
    상기 프로세서는,
    상기 출력 피처맵을 새로운 입력 피처맵으로 제공하고,
    새로운 복수의 한계값들에 기초하여 상기 새로운 입력 피처맵의 픽셀 값들을 이진화함으로써 새로운 복수의 바이너리 피처맵들을 생성하고,
    상기 새로운 복수의 바이너리 피처맵들의 픽셀 값들을 새로운 크로스바 어레이 회로 유닛의 입력 값들로 제공하, 뉴로모픽 장치.
  16. 제15항에 있어서,
    상기 복수의 한계값들 중 적어도 하나는 상기 새로운 복수의 한계값들 중 적어도 하나와 다른 값을 갖는, 뉴로모픽 장치.
  17. 제1항의 방법을 컴퓨터에서 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  18. 복수의 레이어들로 구성되는 뉴럴 네트워크를 학습시키는 방법에 있어서,
    첫 번째 레이어부터 n-1번째 레이어까지 순전파를 수행함으로써, n번째 레이어의 입력 피처맵을 생성하는 단계;
    복수의 한계값들에 기초하여 상기 n번째 레이어의 입력 피처맵의 픽셀 값들을 이진화함으로써, 복수의 바이너리 피처맵들을 생성하는 단계; 및
    마지막 레이어부터 상기 n번째 레이어까지 역전파를 수행함으로써, 상기 n번째 레이어의 상기 복수의 바이너리 피처맵들에 대응하는 복수의 커널들을 학습시키는 단계를 포함하는, 방법.
  19. 제18항에 있어서,
    상기 n번째 레이어의 입력 피처맵을 생성하는 단계는,
    상기 첫 번째 레이어부터 상기 n-1번째 레이어까지, 각각의 레이어에 대해 복수의 한계값들에 기초하여 입력 피처맵의 픽셀 값들을 이진화함으로써, 복수의 바이너리 피처맵들을 생성하는 단계를 포함하는, 방법.
KR1020200060625A 2020-05-20 2020-05-20 뉴럴 네트워크를 구현하는 뉴로모픽 장치 및 그 동작 방법 KR20210143614A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200060625A KR20210143614A (ko) 2020-05-20 2020-05-20 뉴럴 네트워크를 구현하는 뉴로모픽 장치 및 그 동작 방법
US17/083,827 US20210365765A1 (en) 2020-05-20 2020-10-29 Neuromorphic device and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200060625A KR20210143614A (ko) 2020-05-20 2020-05-20 뉴럴 네트워크를 구현하는 뉴로모픽 장치 및 그 동작 방법

Publications (1)

Publication Number Publication Date
KR20210143614A true KR20210143614A (ko) 2021-11-29

Family

ID=78608088

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200060625A KR20210143614A (ko) 2020-05-20 2020-05-20 뉴럴 네트워크를 구현하는 뉴로모픽 장치 및 그 동작 방법

Country Status (2)

Country Link
US (1) US20210365765A1 (ko)
KR (1) KR20210143614A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6805984B2 (ja) * 2017-07-06 2020-12-23 株式会社デンソー 畳み込みニューラルネットワーク
US11354383B2 (en) * 2019-09-27 2022-06-07 Applied Materials, Inc Successive bit-ordered binary-weighted multiplier-accumulator
US11663458B2 (en) * 2020-04-08 2023-05-30 International Business Machines Corporation Conductance drift corrections in neuromorphic systems based on crossbar array structures

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6733983B2 (ja) * 2017-05-09 2020-08-05 暢 長坂 画像解析装置
US10699160B2 (en) * 2017-08-23 2020-06-30 Samsung Electronics Co., Ltd. Neural network method and apparatus
CN109508580B (zh) * 2017-09-15 2022-02-25 阿波罗智能技术(北京)有限公司 交通信号灯识别方法和装置
US11354562B2 (en) * 2018-01-03 2022-06-07 Silicon Storage Technology, Inc. Programmable neuron for analog non-volatile memory in deep learning artificial neural network
AU2019268404A1 (en) * 2018-05-15 2020-12-03 Monash University Method and system of motion correction for magnetic resonance imaging
GB2574372B (en) * 2018-05-21 2021-08-11 Imagination Tech Ltd Implementing Traditional Computer Vision Algorithms As Neural Networks
US11074318B2 (en) * 2018-12-14 2021-07-27 Western Digital Technologies, Inc. Hardware accelerated discretized neural network
US11121259B2 (en) * 2019-07-17 2021-09-14 International Business Machines Corporation Metal-oxide-based neuromorphic device

Also Published As

Publication number Publication date
US20210365765A1 (en) 2021-11-25

Similar Documents

Publication Publication Date Title
US11954588B2 (en) Analog neuromorphic circuits for dot-product operation implementing resistive memories
US10692570B2 (en) Neural network matrix multiplication in memory cells
CN109460817B (zh) 一种基于非易失存储器的卷积神经网络片上学习系统
US20200012924A1 (en) Pipelining to improve neural network inference accuracy
US11348002B2 (en) Training of artificial neural networks
CN109800870B (zh) 一种基于忆阻器的神经网络在线学习系统
US20180075338A1 (en) Convolutional neural networks using resistive processing unit array
US11531871B2 (en) Stacked neuromorphic devices and neuromorphic computing systems
KR20210143614A (ko) 뉴럴 네트워크를 구현하는 뉴로모픽 장치 및 그 동작 방법
US11087204B2 (en) Resistive processing unit with multiple weight readers
US20200117986A1 (en) Efficient processing of convolutional neural network layers using analog-memory-based hardware
US11620505B2 (en) Neuromorphic package devices and neuromorphic computing systems
CN110852429B (zh) 一种基于1t1r的卷积神经网络电路及其操作方法
US20210374546A1 (en) Row-by-row convolutional neural network mapping for analog artificial intelligence network training
US11681899B2 (en) Dividing neural networks
KR20210152244A (ko) 뉴럴 네트워크를 구현하는 장치 및 그 동작 방법
Sun et al. Low-consumption neuromorphic memristor architecture based on convolutional neural networks
KR20210090722A (ko) 신경망들을 위한 가중된 입력들을 생성하도록 구성된 메모리 셀들
KR102607860B1 (ko) 3차원 적층 시냅스 구조를 갖는 뉴로모픽 장치 및 이를 포함하는 메모리 장치
JP2022008236A (ja) ニューロモルフィック装置及びニューラルネットワークを具現する方法
Sun et al. Quaternary synapses network for memristor-based spiking convolutional neural networks
JP2023526915A (ja) アナログ人工知能ネットワーク推論のための行単位畳み込みニューラル・ネットワーク・マッピングのための効率的なタイル・マッピング
US20240021242A1 (en) Memory-based neuromorphic device and operating method thereof