KR102672586B1 - 인공신경망의 훈련 방법 및 장치 - Google Patents

인공신경망의 훈련 방법 및 장치 Download PDF

Info

Publication number
KR102672586B1
KR102672586B1 KR1020217036993A KR20217036993A KR102672586B1 KR 102672586 B1 KR102672586 B1 KR 102672586B1 KR 1020217036993 A KR1020217036993 A KR 1020217036993A KR 20217036993 A KR20217036993 A KR 20217036993A KR 102672586 B1 KR102672586 B1 KR 102672586B1
Authority
KR
South Korea
Prior art keywords
weights
digital memory
bit
weight
layer
Prior art date
Application number
KR1020217036993A
Other languages
English (en)
Other versions
KR20210154816A (ko
Inventor
마누엘 르 갈로-부르도
리두안 카담-알자메흐
루카스 컬
피에르 안드레아 프란체세
토마스 토이플
아부 세바스챤
에반겔로스 스타브로스 엘레프테리우
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/413,738 external-priority patent/US11531898B2/en
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20210154816A publication Critical patent/KR20210154816A/ko
Application granted granted Critical
Publication of KR102672586B1 publication Critical patent/KR102672586B1/ko

Links

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
    • G06N3/065Analogue means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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/048Activation functions
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Abstract

인공신경망의 훈련
연속의 뉴런 층들을 갖고 이들 사이에 개재된 시냅스 층들 각각이, 신호 전파 및 가중치-갱신 계산 연산들의 반복 사이클을 통해, 인접한 뉴런 층들 사이에 전파되는 신호들을 가중하기 위한 N-비트 고정-소수점 가중치들{w}의 각 세트를 갖는 인공 신경망을 훈련하는 방법과 장치가 제공된다. 그러한 방법은, 각 시냅스 층을 위해, 각 N-비트 가중치 w의 복수 p의 최-하위 비트들을 디지털 메모리에 저장하는 단계, 및 디지털 메모리 엘리멘트들의 어레이를 포함하는 아날로그 곱셈-누산 유닛에 각 가중치 w의 다음 n-비트 부분을 저장하는 단계를 포함한다. 각 디지털 메모리 엘리멘트는 가중치의 상기 n-비트 부분의 각 비트들을 저장하기 위해 n 이진 메모리 셀들을 포함하고, 여기서 n ≥ 1 이고, (p + n + m) = N이며, 여기서 m ≥ 0은 상기 시냅스 층의 가중치들에서 최-상위 0 비트들의 정의된 수에 대응한다.

Description

인공신경망의 훈련 방법 및 장치
[0001] 본 발명은 일반적으로 인공 신경망들의 훈련(training of artificial neural networks)과 관련이 있다.
[0002] 인공신경망들(Artificial neural networks: ANN)은 신경계의 생물학적 아키텍처에 의해서 영감을 받아 계산 작업들을 수행하도록 개발되었다. 이들 인공신경망들은 뉴런들 사이에서 가중된 신호들(weighted signals)을 중개(relay)하는 시냅스들(synapses)을 통해 뉴런들이 상호 연결되는 생물학적 시스템들의 기본 원리에 기초한다. ANN은 개재된 시냅스 층들(interposed synaptic layers) 사이에 있는 연속적인 뉴런 층들(a succession of layers of neurons )을 포함하는 논리적 구조에 기초한다. 시냅스 층들은 인접한 뉴런 층들에서 뉴런들 사이에 전파된 가중 신호들의 가중치들을 저장한다. 주어진 층에서 뉴런 n i 는 다음 층에서 하나 또는 그 이상의 뉴런들 n j 에 연결될 수 있으며, 다른 가중치 w ij n i 에서 n j 로 전달되는 신호들에 대해 가중치를 부여하기 위해 각 뉴런-뉴런 연결 n i -n j 와 연관될 수 있다. 각 뉴런은 누적된 가중 입력들에 따라 출력 신호들을 생성하고, 이들에 의해서 가중 신호들이 인공신경망의 연속 층들을 통해 전파될 수 있다.
[0003] ANN은, 음성 및 이미지 인식과 같은, 다양하고 복잡한 분석 작업들에서, 예를 들어 MNIST(Modified National Institute of Standards and Technology) 데이터 세트에 기초한 손으로 쓴 숫자들의 분류(classification of hand-written digits)에서, 성공적으로 적용되었다. ANN은 시냅스 층들 각각을 위한 가중치들 세트가 결정되는 훈련 단계(a training phase)를 거친다(undergo). 인공신경망은, 훈련 데이터로부터 "학습"하기 때문에, 가중치들이 반복적으로 갱신되는 반복적인 훈련 프로세스(an iterative training process)에서, 손으로 쓴 숫자들의 이미지 데이터와 같은, 한 세트의 훈련 데이터에 노출된다. 훈련은 수렴 조건이 달성될 때까지 신경망 가중치가 계속해서(progressively) 갱신되는, 신호 전파 및 가중치-갱신 계산 연산들의 반복 사이클을 포함한다. 그런 다음, 훈련 연산을 통해 정의된 가중치들을 갖는, 최종 훈련된 신경망이 새로운(보이지 않는) 데이터에 적용될 수 있고, 문제의 애플리케이션에 대한 추론 작업들을 수행할 수 있다.
[0004] 다수의 뉴런 층들과 수백만 개의 시냅스 가중치들을 가질 수 있는, ANN들의 훈련은 계산-및 시간-집약적인 작업(a compute- and time-intensive task)이다. 이러한 문제들을 완화하기 위해, 시냅스 가중치들이, PCM(상변화 메모리) 디바이스들과 같은 멤리스틱 디바이스들의 아날로그 컨덕턴스 값들(the analog conductance values)에 저장되는, 멤리스틱 시냅스들의 어레이들(arrays of memristive synapses)에 기초한 아날로그 곱셈-누산 유닛들(analog multiply-accumulate units)을 사용하는 훈련 방법이 제안되었다. 이들 유닛들은, 각 디바이스가 (가변) 디바이스 컨덕턴스에 대응하는 가중치를 갖는 시냅스를 구현하는, 상기 디바이스들에 신호들을 인가하기 위해 행 및 열 라인들 사이에 연결된 멤리스틱 디바이스들의 크로스바 어레이들을 채용한다. 이러한 곱셈-누산 어레이들의 병렬 계산 기능들(The parallel computational capabilities of these multiply-accumulate arrays)은 O(1) 계산 복잡도를 갖는 아날로그 도메인에서 저렴한 벡터-매트릭스 계산(시냅스 층을 통해 전파되는 누적-가중치 신호들을 생성하는 데 필요한)을 수행하기 위해 이용될 수 있다. 훈련 중 시냅스 가중치에 대한 갱신들이 고-정밀 디지털 누산기(a high-precision digital accumulator)에 누산 되는 그러한 훈련 방법은 이 기술분야에서 알려져 있다. 신경망 추론 계산을 위해 1-비트 가중치들이 이진 SRAM(정적 랜덤 액세스 메모리) 셀들에 디지털로 저장되는 아날로그 곱셈-누산 유닛도 이 기술 분야에서 알려져 있다.
[0005] 훈련 정확도를 유지하면서 복잡성을 줄이는 신경망 훈련 시스템들이 또한여전히 필요하다.
[0006] 본 발명의 적어도 하나의 실시 예에 따라, 연속의 뉴런 층들(a succession of neuron layers)을 갖고 이들 사이에 개재된 시냅스 층들(interposed synaptic layers) 각각이, 신호 전파 및 가중치-갱신 계산 연산들의 반복 사이클(an iterative cycle of signal propagation and weight-update calculation operations)을 통해, 인접한 뉴런 층들 사이에 전파되는 신호들을 가중하기 위한 N-비트 고정-소수점 가중치들{w}의 각 세트(a respective set of N-bit fixed-point weights {w})를 갖는, 인공 신경망을 훈련하는 방법(a method for training an artificial neural network)이 제공된다. 상기 방법은, 각 시냅스 층을 위해, 각 N-비트 가중치 w의 복수 p의 최-하위 비트들(a plurality p of the least-significant bits )을 디지털 메모리에 저장하는 단계, 및 디지털 메모리 엘리멘트들의 어레이를 포함하는 아날로그 곱셈-누산 유닛(an analog multiply-accumulate unit)에 각 가중치 w의 다음 n-비트 부분을 저장하는 단계를 포함한다. 디지털 메모리 엘리멘트들 각각은 가중치의 상기 n-비트 부분의 각 비트들을 저장하기 위해 n 이진 메모리 셀들을 포함하고, 여기서 n ≥1 이고, (p + n + m) = N이며, 여기서 m≥0은 상기 시냅스 층의 가중치들에서 최-상위 0 비트들의 정의된 수(a defined number of most-significant zero bits)에 대응한다. 상기 방법은 또한 상기 가중치들의 저장된 n-비트 부분들에 따라 누적 가중된 신호들(accumulated weighted signals)을 획득하기 위해 상기 시냅스 층에 의해 가중될 신호들을 상기 곱셈-누산 유닛에 공급함에 의해서 상기 신호 전파 연산을 수행하는 단계; 및 상기 뉴런 층들에 의해 전파되는 신호들에 따라 상기 시냅스 층을 위한 갱신된 가중치들을 계산하기 위해, 상기 디지털 메모리 및 곱셈-누산 유닛에 동작 가능하게 결합된, 디지털 처리 유닛에서 상기 가중치-갱신 계산 연산을 수행하는 단계를 포함한다. 상기 방법은 상기 갱신된 가중치들의 상기 비트들을 저장하기 위해 상기 디지털 메모리와 상기 곱셈-누산 유닛을 주기적으로 재-프로그램 하는 단계를 더 포함한다.
[0007] 본 발명을 구현하는 훈련 방법들에서, 가중치들은 상기 훈련 연산을 위해 원하는 정밀도를 갖는 N-비트 고정-소수점 포맷으로 정의된다. 각 N-비트 가중치 w를 이해, (적어도) 상기 가중치의 p 최-하위 비트들만 디지털 메모리에 저장된다. 다음 n-비트 부분(즉, n 다음-최-상위 비트들)은 상기 아날로그 곱셈-누산 유닛의 디지털 메모리 엘리멘트의 n 이진 메모리 셀들에 디지털 방식으로 저장된다. 이 n-비트 부분은 상기 가중치 w를 위한 감소된 정밀도 가중치 값에 대응한다. 곱셈-누산 연산들은 신호 전파 연산들 동안 이들 감소된 정밀도 가중치들을 사용하여 수행된다. 가중치-갱신 연산들에서, 상기 시냅스 층을 위한 갱신된 N-비트 가중치들은 디지털 처리 유닛에서 계산된다. 따라서 상기 가중치-갱신 계산은 디지털 정밀도를 가지고 수행되고, 상기 디지털 메모리와 곱셈-누산 유닛은 상기 갱신된 가중치들의 적절한 비트들(즉, 각각 p 최-하위 비트들 및 n-비트 부분)을 저장하도록 주기적으로 재-프로그램 된다. 곱셈-누산 어레이의 디지털 메모리 및 디지털 엘리멘트들의 조합에 저장되는 N-비트 고정 소수점 가중치들을 사용함으로써, 이 방법은 신호 전파를 위해 상기 가중치-갱신 연산에서 정확도의 장점들을 빠르고 낮은 복잡도 벡터-매트릭스 계산들과 결합한다. 상기 벡터-매트릭스 연산들은 감소된-정밀도 가중치들을 사용하여 수행되며, 복잡성과 그에 따라 곱셈-누산 유닛의 전력 및 온-칩 면적을 감소시킨다. 따라서 본 발명의 실시 예들은 곱셈-누산 어레이들에 기초한 빠르고, 효율적인 ANN 훈련 방법들을 제공한다.
[0008] 상기 파라미터 m은, 임의 주어진 층의 가중치들에서 최-상위 0 비트들의 실제 수와 상관없이, 상기 시냅스 층들을 위해 m = 0으로 정의될 수 있다. 이 것은 (p + n) = N이 되는 간단한 구현을 제공한다. 본 발명의 다른 실시 예들에서, m의 초기 값은 시냅스 층의 가중치들{w}에서 최-상위 0비트들의 수에 따라 상기 시냅스 층을 위해 정의될 수 있고, 그 다음 m의 상기 값은 상기 가중치-세트{w}에서 최-상위 0비트들의 수가 변화함에 따라 훈련 동안 동적으로 조정될 수 있다. 본 발명의 이들 실시 예들에서, 상기 가중치들 w의 적어도 p = (N - n - m) 최-하위 비트들은 디지털 메모리에 저장되고, 상기 곱셈-누산 유닛에 저장된 n-비트 부분들은 m의 상기 값이 훈련 동안 조정됨에 따라 동적으로 재-정의되고 재-프로그램 된다. 이 것은 다양한 네트워크 층들에 상기 감소된-정밀도 가중치들의 더 최적인 정의를 제공하여, 훈련의 정확도를 향상시킨다.
[0009] 본 발명의 일부 실시 예들에서, 각 N-비트 가중치의 오직 상기 p 최-하위 비트들만 상기 디지털 메모리에 저장된다. 상기 디지털 메모리는 각 N-비트 가중치가, 상기 가중치의 p 최-하위 비트들을 저장하는, p-비트들의 디지털 메모리, 및 상기 가중치의 n-비트 부분을 저장하는 상기 디지털 메모리 엘리멘트를 포함하는 유닛 셀에 저장되도록 상기 곱셈-누산 유닛에서 분산될 수 있다. 이 것은 작은-설치면적(small-footprint)을 갖는 유닛 셀들에 기초한 결합된 디지털/아날로그 메모리 유닛을 위한 면적-효율적인 구현(an area-efficient implementation)을 제공한다.
[0010] 본 발명의 다른 실시 예들에서, 각 N-비트 가중치의 모든 N-비트들을 상기 디지털 메모리를 제공하는 디지털 메모리 유닛에 저장될 수 있다. 이 것은 상기 디지털 메모리에서 가중치-갱신들이 수행되는 효율적인 연산을 제공하여 상기 곱셈 누산 유닛에서 감소된-정밀도 가중치들에 대한 갱신들 빈도를 줄일 수 있다. 예를 들어, 상기 감소된-정밀도 가중치들은 다수의 배치들의 훈련 예들이 네트워크에 의해서 처리된 후에만 갱신될 수 있다. 만일 훈련 기간에 상기 디지털 메모리에서 상기 가중치를 위해 갱신들을 수행하는 동안에 (N - p)번째 비트의 비트-오버플로가 발생한다면, 가중치-갱신 연산들의 효율성을 더욱 높이기 위해, 갱신된 가중치의 n-비트 부분은 오직 디지털 메모리로부터 상기 곱셈-누산 유닛으로만 복사될 수 있다.
[0011] 모든 시냅스 층들의 N-비트 가중치들이 디지털 메모리에 저장되는 본 발명의 실시 예들에서, 상기 곱셈-누산 유닛은 네트워크를 통해 신호 전파가 진행됨에 따라 다른 층들의 감소된-정밀도 가중치들에 재사용될 수 있다. 연속된 세트들의 시냅스 층들이 신호 전파를 위해 활성화되면, 이들 층들의 가중치들의 n-비트 부분들은 디지털 메모리 엘리멘트들의 어레이에 동적으로 저장될 수 있다.
[0012] 본 발명의 적어도 하나의 추가적인 실시 예는 신호 전파 및 가중치-갱신 계산 연산들의 반복적인 훈련 사이클에서 인공 신경망을 구현하기 위한 장치를 제공한다. 상기 장치는 각 시냅스 층의 각 N-비트 가중치 w의 복수 p의 최-하위 비트들(a plurality p of the least-significant bits )을 저장하는 디지털 메모리, 및 상기 시냅스 층의 각 가중치 w의 다음 n-비트 부분을 저장하는 아날로그 곱셈-누산 유닛(an analog multiply-accumulate unit)을 포함한다. 상기 아날로그 곱셈-누산 유닛은 디지털 메모리 엘리멘트들의 어레이를 포함하고, 각각은, 전술한 바와 같이, 가중치의 상기 n-비트 부분의 각 비트들을 저장하기 위해 n 이진 메모리 셀들을 포함한다. 상기 장치는 또한 상기 디지털 메모리 및 곱셈-누산 유닛에 동작가능 하게 결합된 디지털 처리 유닛을 포함한다. 상기 디지털 처리 유닛은, 상기 신호 전파 연산에서, 상기 가중치들의 저장된 n-비트 부분들에 따라 누적 가중된 신호들을 획득하기 위해 각 시냅스 층에 의해 가중될 신호들을 상기 곱셈-누산 유닛에 공급하도록 구성된다(adapted). 상기 디지털 처리 유닛은 또한 상기 뉴런 층들에 의해 전파되는 신호들에 따라 각 시냅스 층을 위해 갱신된 가중치들을 계산하기 위해 상기 가중치-갱신 계산 작업 연산을 수행하도록 구성되고, 그리고 상기 갱신된 가중치들의 상기 비트들을 저장하기 위해 상기 디지털 메모리와 상기 곱셈-누산 유닛을 주기적으로 재-프로그램 하는 단계를 컨트롤하도록 구성된다.
[0013] 본 발명의 일 실시 예에 따라, 연속의 뉴런 층들을 갖고 이들 사이에 개재된 시냅스 층들(interposed synaptic layers) 각각이, 신호 전파 및 가중치-갱신 계산 연산들의 반복 사이클(an iterative cycle of signal propagation and weight-update calculation operations)을 통해, 인접한 뉴런 층들 사이에 전파되는 신호들을 가중하기 위한 N-비트 고정-소수점 가중치들{w}의 각 세트(a respective set of N-bit fixed-point weights {w})를 갖는 인공 신경망을 훈련하는 방법이 제공되고, 상기 방법은 각 시냅스 층을 위해: 각 N-비트 가중치 w의 복수 p의 최-하위 비트들(a plurality p of the least-significant bits )을 디지털 메모리에 저장하는 단계; 디지털 메모리 엘리멘트들의 어레이를 포함하는 아날로그 곱셈-누산 유닛(an analog multiply-accumulate unit)에 각 가중치 w의 다음 n-비트 부분을 저장하는 단계-상기 디지털 메모리 엘리멘트들 각각은 가중치의 상기 n-비트 부분의 각 비트들을 저장하기 위해 n 이진 메모리 셀들을 포함하고, 여기서 n ≥1 이고, (p + n + m) = N이며, 여기서 m≥0은 상기 시냅스 층의 가중치들에서 최-상위 0 비트들의 정의된 수(a defined number of most-significant zero bits)에 대응함-; 상기 가중치들의 저장된 n-비트 부분들에 따라 누적 가중된 신호들을 획득하기 위해 상기 시냅스 층에 의해 가중될 신호들을 상기 곱셈-누산 유닛에 공급함에 의해서 상기 신호 전파 연산을 수행하는 단계; 상기 뉴런 층들에 의해 전파되는 신호들에 따라 상기 시냅스 층을 위한 갱신된 가중치들을 계산하기 위해, 상기 디지털 메모리 및 곱셈-누산 유닛에 동작 가능하게 결합된, 디지털 처리 유닛에서 상기 가중치-갱신 계산 연산을 수행하는 단계; 및 상기 갱신된 가중치들의 상기 비트들을 저장하기 위해 상기 디지털 메모리와 상기 곱셈-누산 유닛을 주기적으로 재-프로그램 하는 단계를 포함한다.
[0014] 본 발명의 다른 실시 예에 따라, 연속의 뉴런 층들을 갖고 이들 사이에 개재된 시냅스 층들(interposed synaptic layers) 각각이, 신호 전파 및 가중치-갱신 계산 연산들의 반복 훈련 사이클(an iterative training cycle of signal propagation and weight-update calculation operations)에서, 인접한 뉴런 층들 사이에 전파되는 신호들을 가중하기 위한 N-비트 고정-소수점 가중치들{w}의 각 세트(a respective set of N-bit fixed-point weights {w})를 갖는 인공 신경망을 구현하는 장치가 제공되고, 상기 장치는: 각 시냅스 층의 각 N-비트 가중치 w의 복수 p의 최-하위 비트들(a plurality p of the least-significant bits )을 저장하는 디지털 메모리; 각 시냅스 층의 각 가중치 w의 다음 n-비트 부분을 저장하는 아날로그 곱셈-누산 유닛(an analog multiply-accumulate unit)- 상기 아날로그 곱셈-누산 유닛은 디지털 메모리 엘리멘트들의 어레이를 포함하고, 각각은 가중치의 상기 n-비트 부분의 각 비트들을 저장하기 위해 n 이진 메모리 셀들을 포함하며, 여기서 n≥1 이고, (p + n + m) = N이며, 여기서 m≥0은 상기 시냅스 층의 가중치들에서 최-상위 0 비트들의 정의된 수(a defined number of most-significant zero bits)에 대응함-; 상기 디지털 메모리 및 곱셈-누산 유닛에 동작가능 하게 결합된 디지털 처리 유닛-상기 디지털 처리 유닛은: 상기 신호 전파 연산에서, 상기 가중치들의 저장된 n-비트 부분들에 따라 누적 가중된 신호들을 획득하기 위해 각 시냅스 층에 의해 가중될 신호들을 상기 곱셈-누산 유닛에 공급하도록 구성되고(adapted); 상기 뉴런 층들에 의해 전파되는 신호들에 따라 각 시냅스 층을 위해 갱신된 가중치들을 계산하기 위해 상기 가중치-갱신 계산 작업 연산을 수행하도록 구성되며; 그리고 상기 갱신된 가중치들의 상기 비트들을 저장하기 위해 상기 디지털 메모리와 상기 곱셈-누산 유닛을 주기적으로 재-프로그램 하는 단계를 컨트롤하도록 구성된다.
[0015] 본 발명의 실시 첨부된 도면들을 참조하여 예들은 아래에서 더 상세하게, 예시적이고 제한적이지 않은 예를 통해, 설명될 것이다.
도 1은 예시적인 ANN의 개략적 표현을 도시한다.
도 2는 본 발명의 일 실시 예에 따른 훈련 연산에서 ANN을 구현하기 위한 장치의 계통도를 도시한다.
도 3은 본 발명의 일 실시 예에 따른 ANN 층의 가중치 w의 비트 구조를 도시한다.
도 4는, 본 발명의 일 실시 예에 따라, 도 2 장치의 곱셈-누산 유닛에서 디지털 메모리 엘리멘트들의 어레이 구조를 도시한다.
도 5는, 본 발명의 일 실시 예에 따라, 도 2 장치에 의해 수행되는 훈련 방법의 단계들을 도시한다.
도 6은 도 2 장치의 일 실시 예에서 메모리 장치의 구조를 도시한다.
도 7은, 본 발명의 일 실시 예에 따라, 도 6 장치에서 아날로그 SRAM 곱셈-누산 어레이의 보다 자세한 구조를 도시한다.
도 8은, 본 발명의 일 실시 예에 따라, 도 7 어레이에서 SRAM 단위 셀의 구조를 도시한다.
도 9는, 본 발명의 일 실시 예에 따라, 도 2 장치의 또 다른 실시 예에서의 메모리 장치를 도시한다.
도 10은, 본 발명의 일 실시 예에 따라, 도 9 장치에서 결합된 디지털/아날로그 SRAM 유닛의 보다 자세한 구조를 도시한다.
도 11은 도 2 장치의 다른 실시 예에서 메모리 장치를 나타낸다.
도 12는 상기 장치의 아날로그 SRAM 곱셈-누산 어레이의 또 다른 실시 예를 도시한다.
[0016] 도 1은, 본 발명의 일 실시 예에 따라, 전부-연결된(a fully-connected) ANN의 일 예의 논리적 구조를 도시한다. ANN(1)은 개재된 시냅스 층들을 갖는 일련의 뉴런 층들을 포함한다. 도시된 단순한 예에서, 상기 네트워크는 다음의 세 개의 뉴런 층들을 갖는다: 네트워크 입력 신호들을 수신하는 입력 뉴런들의 제1 층 N1; 네트워크의 출력 신호들을 제공하는 출력 뉴런들의 마지막 층 N3; 입력과 출력 층들 사이의 중간("숨겨진") 층 N2. 층 N1의 뉴런들은 n1i (1 ≤ i ≤ l1)로 표시되고, 층 N2의 뉴런들은 n2j (1 ≤ j ≤ l2)로 표시되며, 층 N3의 뉴런들은 n3k (1 ≤ k ≤ l3)로 표시되고, 여기서 lx는 층 Nx에서 뉴런들의 수이다. 각 층에서 모든 뉴런들은, 도시된 바와 같이, 다음 층의 모든 뉴런들에 연결되고, 이에 의해서 한 층으로부터의 뉴런 활성화 신호들(neuron activation signals)이 다음 층의 뉴런들로 전달된다. 뉴런 층들 사이에 개재된, 시냅스 층들(Synaptic layers) S1과 S2는 그들의 인접한 뉴런 층들 사이에서 전파되는 신호들에 가중치를 부여하기 위해 각 세트들의 가중치들 {wij} 및 {wjk}을 갖는다. 가중치 wij 는 N1 뉴런 n1i 와 N2 뉴런 n2j 사이의 각 연결을 위해 정의되며, 이에 의해서 n1i로부터 n2j까지 전파된 신호는 상기 뉴런 쌍에 대해 대응하는 가중치 wij 에 따라 가중된다. 따라서, 시냅스 층 S1에 대한 가중치 {wij} 세트는 도면에서 표시한바 같이 가중치들 wij의 l2 행들과 l1 열들을 갖는 매트릭스 W에 의해서 표현될 수 있다. N2 뉴런 n2j에 의해서 N3 뉴런 n3k 로 전파되는 신호는 시냅스 층 S2의 대응하는 가중치 wjk에 의해서 유사하게 가중되고, 시냅스 층 S2에 대한 가중치들 {wjk} 세트는 가중치들 wjk의 l3 행들과 l2 열들을 갖는 매트릭스에 의해서 표현될 수 있다.
[0017] 입력 층 뉴런들은 그들의 수신된 입력 데이터 신호들을 층 N1에 대한 활성화 신호들로서 단순히 전송할 수 있다. 후속 층들 N2와 N3의 경우, 각 뉴런 n2j, n3k는 누적된 입력들, 즉 이전 층에서 자신의 연결된 뉴런들로부터 누적 가중된 활성화 신호들에 따라서 활성화 신호를 생성한다. 각 뉴런은 이러한 누적 연산의 결과 A에 비선형 활성화 함수 f를 적용하여 앞으로 전달(onward transmission)을 위한 뉴런 활성화 신호를 생성한다. 예를 들어, 뉴런 n2j에 대한 누적 입력 는 도트 곱 계산 (a dot product computation) 에 의해 주어지며, 여기서 는 뉴런 n1i로부터의 활성화 신호이다. 따라서 뉴런 n2j에 대한 누적 입력들()의 벡터 A를 계산하는 것은 가중치들 wij의 매트릭스 W와 뉴런들 n1i로부터의 활성화 신호들 의 벡터 사이의 매트릭스-벡터 곱셈 W에 의해서 표현될 수 있다. 그런 다음, 각각의 N2 뉴런 n2j는 층 N3으로 전파를 위해 자신의 활성화 신호 f 로 생성한다.
[0018] 전부-연결된 네트워크의 간단한 예가 도 1에 도시되어 있지만, 일반적으로 임의의 주어진 층의 하나의 뉴런은 다음 층의 하나 또는 그 이상의 뉴런들에 연결될 수 있으며, 네트워크들은 하나 또는 그 이상(보통으로 30 또는 그 이상)의 연속적인 층들의 숨겨진 뉴런들(successive layers of hidden neurons)을 포함할 수 있다. 뉴런 층들은 하나 또는 그 이상의 바이어스 뉴런들(도시되지 않음)을 포함할 수 있으며, 이들은 입력 신호들을 수신하지는 않지만 다음 뉴런 층으로 바이어스 신호들을 전송한다. 다른 계산들도 또한 일부 ANN 층들과 연관될 수 있다. 일부 ANN들, 예를 들어 컨볼루련 신경망들(Convolutional Neural Networks: CNNs)에서, 신호 전파 계산들은 여전히 매트릭스 벡터 연산들로 표현될 수 있지만, 뉴런 층들은 시냅스 층들에서 연관된 3-차원 가중치 어레이들을 사용하여 3-차원 볼륨들의 뉴런들을 구성할 수 있다.
[0019] ANN 훈련은 네트워크에 대한 입력들로서 제공되는 한 세트의 훈련 예들에 응답하는 신호 전파 및 가중치-갱신 계산 연산들의 반복 사이클을 포함한다. 예를 들어, 손으로-쓴 숫자들의 감독 학습에서(In supervised learning of hand-written digits) MNIST 데이터 세트(이에 대한 라벨들, 여기서 0부터 9까지의 숫자 클래스는 알려짐)로부터의 훈련 예들은 네트워크에 반복적으로 입력된다. 각 훈련 예에서, 신호 전파 연산은 신호들이 제1 뉴런 층으로부터 마지막 뉴런 계층까지 전진 전파되는 전진 전파 연산(a forward propagation operation)과 오류 신호들 마지막 뉴런 층으로부터 네트워크를 통해 후진 전파되는 후진 전파 연산(a backpropagation operation)을 포함한다. 전진 전파 연산에서, 활성화 신호들 x는 위에서 설명한 바와 같이 네트워크를 통해 층별로(layer-by-layer) 가중되고 전파된다. 출력 층의 각 뉴런에 대해, 전진 전파 후의 출력 신호는 현재 훈련 예의 예상 출력(알려진 라벨에 기초한)과 비교되는데, 이는 상기 뉴런에 대한 오류 신호 ε를 획득하기 위해서이다. 출력 층 뉴런들에 대한 오류 신호들은 입력 계층을 제외한 네트워크의 모든 층들을 통해 후진 전파된다(backpropagated). 인접한 뉴런 층들 사이에서 후진 전파된 오류 신호들은 개재된 시냅스 층의 적절한 가중치들에 의해 가중된다. 따라서 후진 전파는 입력 층을 제외한 각 뉴런 층에 대한 오류 신호들의 계산을 수행한다. 그런 다음, 각 시냅스 층의 가중치들에 대한 갱신들이 신호 전파 연산에서 뉴런 층들에 의해 전파된 신호들에 기초하여 계산된다. 일반적으로, 가중치 갱신들은 일부 또는 모든 가중치들에 대해 주어진 반복으로 계산될 수 있다. 예를 들어, 한 층의 뉴런 i와 다음 층의 뉴런 j 사이의 가중치 에 대한 갱신 는 다음과 같이 계산될 수 있다.
여기서 는 뉴런 i로 부터의 전진 전파된 활성화 신호이고, 는 뉴런 j에 대한 후진 전파된 오류 신호이며, 는 네트워크에 대한 미리 정의된 러닝 파리미터이다. 따라서, 상기 훈련 프로세스는 수렴 조건이 달성될 때까지 네트워크 가중치들을 점진적으로 갱신하며, 이에 따라 훈련된 가중치들을 갖는, 최종 네트워크가 ANN 추론 연산들에 적용될 수 있다.
[0020] 도 2는 바람직한 실시 예에 따른 훈련 연산에서 ANN(1)을 구현하기 위한 장치를 도시한다. 장치(2)는 메모리 장치(3)과, 시스템 버스(5)를 통해 메모리 장치(3)에 동작가능 하게 결합되는, 디지털 처리 유닛(Digital Processing Unit: DPU)(4)를 포함한다. 메모리 장치(3)은 개략적으로 표시된 디지털 메모리(6)와 아날로그 곱셈-누산(Multiply-accumulate: MAC) 유닛(7)을 포함한다. MAC 유닛(7)은, 이진 메모리 셀들에 기초한, 디지털 메모리 엘리멘트들의 적어도 하나의 어레이를 포함하며, 이에 관해서는 후술한다. 메모리 컨트롤러(8)로 표시된, 메모리 컨트롤 장치는 디지털 메모리(6) 및 MAC 유닛(7)의 연산을 컨트롤한다. 디지털 처리 유닛(4)는 중앙 처리 유닛(CPU)(9)와 메모리(10)을 포함한다. 메모리(10)은 CPU(9)에 의해 실행 가능한 프로그램 명령들을 포함하는 하나 또는 그 이상의 프로그램 모듈들(11)을 저장하고, 상기 프로그램 명령들은 연산들의 기능적 단계들을 구현하며, 이에 관해서는 후술한다.
[0021] DPU(4)는 반복적인 훈련 프로세스에서 장치(2)의 연산을 컨트롤한다. 상기 DPU는 전진 및 후진 전파 연산들에서 뉴런 층들에 의해 전파되는 활성화 및 오류 신호들을 생성하고 훈련 연산의 가중치-갱신 계산들을 수행하도록 구성된다(adapted). 네트워크의 각 시냅스 층들에 대한 가중치-세트들{w}은 메모리 장치(3)에 저장된다. 가중치들 w은 N-비트 고정-소숫점 포맷(an N-bit fixed-point format)으로 정의되고, 여기서 N은 특정 훈련 연산을 위해 필요한 정밀도에 따라 선택된다. 본 발명의 이 실시 예에서, N = 32이고, 이는 고-정밀도 32-비트 고정-소숫점 가중치들을 제공한다. 그러나, 본 발명의 다른 실시 예에서 N은 다르게 세트 될 수 있으며, 예를 들어 N = 64가 될 수 있다.
[0022] 장치(2)의 연산에서, 시냅스 층의 N-비트 가중치들 w는 디지털 메모리(6)과 MAC 장치(7)의 디지털 메모리 엘리멘트들의 조합에 저장된다. 특히, 도 3을 참조하면, 각 가중치 w의 적어도 복수 p의 최-하위 비트들(LSBs)은 각 시냅스 층을 위한 디지털 메모리(6)에 저장된다. 각 가중치 w의 다음 n-비트 부분(즉, (p + n)번째 ~ (p + n)번째 비트들)은, 적어도 신호 전파 계산에 필요할 때, MAC 장치(7)에 저장된다. 특히, 각 n-비트 부분은 MAC 장치(7)의 디지털 메모리 엘리멘트들의 어레이에 저장된다. 이들 디지털 메모리 엘리멘트들 각각은 가중치의 n-비트 부분의 각 비트들을 저장하기 위해 n개의 이진 메모리 셀들을 포함한다. n의 값은 시냅스 층들마다 다를 수 있다. 그러나, 일반적으로, n ≥ 1 이고 (p + n + m) = N이며, 여기서 m ≥ 0 이고 시냅스 층의 가중치들에서 최-상위 0 비트들의 정의된 수에 대응한다. 따라서, m의 값은 시냅스 층들 사이에서 변화할 수 있으며, (p + n) = N인 경우 임의의 주어진 층에 대해 m = 0으로 또한 정의될 수 있으며, 이에 관해서는 후술한다. 따라서, 각 가중치 w의 n-비트 부분은 상기 가중치에 대한 감소된-정밀도 가중치 값을 정의하고, 이는 아래에서 W로 표시된다.
[0023] 도 4는, 일 실시 예에 따라, 시냅스 층을 위해 감소된-정밀도 가중치 W를 저장하는 MAC 유닛(7)의 디지털 메모리 엘리멘트들의 어레이의 논리적 구조를 도시한다. 어레이(15)는, 도시된 바와 같이, 행과 열 라인들 사이에서 연결된 디지털 메모리 엘리멘트들(16)의 크로스바 어레이(a crossbar array) (아래에 설명되는 연관된 아날로그 회로와 함께)에 의해 편리하게 구현될 수 있다. 이 예는 도 1 ANN에서 시냅스 층 S1을 위해 감소된-정밀도 가중치들 {Wij}를 저장하는 크로스바 어레이를 도시한다. 상기 어레이의 각 엘리멘트(16)는 도시한 바와 같이 각 감소된-정밀도 가중치 Wij의 n-비트들을 저장한다. 상기 엘리멘트들(16)은 논리적 행들과 열들에 배열되며, 각 디바이스는 특정 행 라인 ri 과 열 라인 cj 사이에 연결되는데, 이는 상기 디바이스에 신호를 인가하기 위해서이다. 상기 행과 열 라인들은 메모리 장치(2)의 컨트롤러(8)에 연결되는데, 디지털과 아날로그 도메인들 사이의 어레이 입/출력 신호들을 변환하는 행 및 열 디지털-아날로그/아날로그-디지털 변환기들(도시되지 않음)을 통해 연결된다.
[0024] 시냅스 층을 위한 신호 전파 연산에서, DPU(4)에 의해 생성된 신호들은 버스(5)를 통해 메모리 장치(2)에 공급되며, 여기서 컨트롤러(8)은 감소된-정밀 가중치들 Wij을 저장하는 어레이(15)에 신호들을 공급한다. 전진 전파 연산에서, 컨트롤러(8)는 어레이(15)의 행 라인들 ri에 활성화 신호 x1i를 제공한다. 열 라인 cj상의 최종 출력 신호들은 컨트롤러(8)에 의해서 DPU(4)로 반환되는 누적 가중 신호 에 대응한다. 시냅스 층을 위한 후진 전파 계산은 행 라인들 상에서 누적 가중 신호 를 획득하기 위해 오류 신호들 을 상기 어레이의 열 라인들에 인가함으로써 유사하게 수행될 수 있다. 따라서, 상기 어레이(15)는 시냅스 층에 걸친 신호 전파에 필요한 매트릭스-벡터 계산을 구현한다.
[0025] 장치(2)의 예시적인 실시 예가 기술되었지만, DPU(4)는 하나 또는 그 이상의 마이크로프로세서들에 의해서 구현될 수 있는 하나 또는 그 이상의 CPU들을 포함할 수 있다. 메모리(10)는 하나 또는 그 이상의 데이터 스토리지 주체들을 포함할 수 있으며, CPU(9)에 로컬 한 캐시 및/또는 기타 메모리뿐만 아니라, 주 메모리, 예를 들어, CPU(9)로부터 물리적으로 분리된 DRAM(Dynamic Random-Access Memory) 및/또는 다른 스토리지를 포함할 수 있다. 일반적으로, DPU(4)는 하나 또는 그 이상의 (일반- 또는 특수 목적) 컴퓨터들/프로그램가능 데이터 처리 장치에 의해 구현될 수 있고, DPU(4)에 의해 수행되는 처리 연산들의 기능적 단계들은 일반적으로 하드웨어 또는 소프트웨어, 또는 이들의 조합에 의해 구현될 수 있다. 컨트롤러(8)는 또한 여기에 설명된 기능들을 수행하기 위해 메모리 장치(2)를 컨트롤하도록 소프트웨어 명령들에 의해 구성될 수 있는 하나 또는 그 이상의 프로세서들을 포함할 수도 있다. 본 발명의 일부 실시 예들에서, DPU(4) 및/또는 컨트롤러(8)는 기술된 기능들을 구현하는 프로그램 명령을 실행하기 위해, 프로그램가능 논리 회로들, 필드-프로그램가능 게이트 어레이들(FPGA) 또는 프로그램가능 논리 어레이들(PLA)과 같은, 전자 회로들을 포함할 수 있다. 본 발명의 실시 예들은 플로차트 예시들을 참조하여 기술되었지만, 플로차트 예시들의 각 블록 및/또는 플로차트 예시들의 블록들의 조합들이 컴퓨터 실행 프로그램 명령들에 의해 구현될 수 있음을 이해해야 한다. 프로그램 명령들/프로그램 모듈들은 특정한 작업들을 수행하거나 또는 특정한 추상적인 데이터 유형들을 구현하는 루틴들, 프로그램들, 객체들, 컴포넌트들, 논리, 데이터 구조들 등을 포함할 수 있다. 플로차트 예시들의 블록들 또는 블록들의 조합들은 또한 명시된 기능들 또는 동작들을 수행하거나 또는 특수 목적 하드웨어 및 컴퓨터 명령들의 조합들을 수행하는 특수-목적 하드웨어-기반 시스템들에 의해서도 구현될 수도 있다.
[0026] 시스템 버스(5)는 여러 유형들의 버스 구조들 중 하나 또는 그 이상을 포함할 수 있고, 이들은 메모리 버스 또는 메모리 컨트롤러, 주변 버스, 가속 그래픽 포트, 다양한 버스 아키텍처들 중 하나를 사용하는 프로세서 또는 로컬 버스를 포함할 수 있다. 예를 들어, 그러한 아키텍처들은 ISA(산업 표준 아키텍처) 버스, MCA(마이크로 채널 아키텍처), EISA(향상된 ISA) 버스, VESA(비디오 전자 표준 협회) 로컬 버스, 및 PCI(주변 장치 구성 요소 상호 연결) 버스를 포함하나, 이에 한정되지는 않는다.
[0027] MAC 유닛의 메모리 엘리멘트들(16)에서 이진 메모리 셀들은 SRAM 셀들, DRAM(동적 RAM) 셀들, MRAM(자기저항 RAM) 셀들, 부동 게이트 셀들, RRAM(저항 RAM) 셀들 또는 감소된 정밀도 가중치들의 각 비트들을 디지털적으로 저장하기 위한 더 일반적인 임의의 이진 셀들을 포함할 수 있다. SRAM 셀들에 기초한 아날로그 MAC 어레이들의 예시적인 구현들이 아래에 자세히 설명된다. 일반적으로, MAC 장치(7)는 하나 또는 그 이상의 아날로그 곱셈-누산 어레이들을 포함할 수 있고, 어레이들 각각은 디지털 메모리 엘리멘트들의 하나 또는 그 이상의 크로스바 어레이들을 포함할 수 있다. MAC 장치(7)는, 언제든지, 하나 또는 그 이상의 시냅스 층들을 위해 감소된-정밀도 가중치들 W의 전부 또는 서브세트를 저장할 수 있다. 본 발명의 일부 실시 예들에서, 각 시냅스 층의 모든 가중치들 W은 MAC 유닛의 각 어레이에 저장될 수 있다. 다른 경우들에서, MAC 유닛은 신호 전파 연산에서 현재 활성화된 (하나 또는 그 이상의) 시냅스 층들의 세트에 대한 가중치들 W만 저장할 수 있다. 그러나, 각 시냅스 층 S에 대해, 장치(2)에 의해 구현된 상기 훈련 방법은 도 5의 플로 다어어그램에 표시된 기본 단계들을 포함한다.
[0028] 도 5의 20단계에서 표시된 바와 같이, 시냅스 층의 각 고-정밀도 가중치 w의 적어도 p LSB들은 디지털 메모리(6)에 미리-저장된다. 상기 층의 가중치들을 위해 후속 n-비트 부분들(즉, 감소된-정밀도 가중치들 W)이 단계(21)에 표시된 바와 같이 MAC 유닛(7)에 저장된다(밀-저장되거나 동적으로 로드 된다). 단계(22)는 시냅스 층을 위한 신호 전파 연산을 나타낸다. 도 4를 참조하여 설명한 바와 같이, 전진 전파를 위해 활성화 신호들 x가 MAC 어레이에 공급되고 감소된-정밀도 가중치들 W에 따른 누적 가중 신호들이 획득된다. 후속 후진 전파 연산에서, 오류 신호들 ε이 상기 어레이에 공급되고 가중치들 W에 따른 누적 가중 신호들이 획득된다. 이들 곱셈-누산 연산들에서 생성된 신호들이 DPU(4)에 반환된다. 단계(23)에서, DPU(4)는 시냅스 층을 위해 갱신된 N-비트 가중치들 w을 계산한다. 여기서, 가중치-갱신들 Δw는 위에서 설명한 바와 같이 뉴런 층들에 의해 전파된 신호들에 기초하여 각 가중치들 w을 위해 계산되고, 각 가중치는 w = w + Δw로 갱신된다. 단계(24)에서, DPU(4)는 훈련 연산에 대해 미리 결정된 수렴 조건이 달성되었는지를 결정한다. (수렴은 알려진 다양한 방법으로 정의될 수 있으며, 특정 수렴 조건은 여기에 설명된 연산에 대해 오소그널(orthogonal) 하다.) 만일 달성되지 않았다면(단계 24에서 "N"), 연산은 단계(25)로 진행하고, 여기서 DPU(4)는 메모리 장치(4)의 가중치들 w의 재프로그래밍을 컨트롤한다. 아래에서 추가로 설명하겠지만, 임의의 주어진 반복에서, 이 단계는, 구현에 따라, 디지털 메모리(6)에, 또는 디지털 메모리(6)과 MAC 유닛(7) 모두에 저장된 가중치들의 비트들을 재-프로그래밍하는 것을 포함할 수 있다. 그러나, 디지털 메모리(6)과 MAC 유닛(7) 모두는 훈련 동안 주기적으로 (동일한 시간 또는 다른 시간에) 재-프로그램 되고 갱신된 가중치들의 적절한 비트들을 저장한다. 그런 다음, 연산은 다음 훈련 샘플을 위해 단계(22)로 돌아간다. 수렴이 감지될 때까지(단계 24에서 "Y") 상기 프로세스는 반복되며, 수렴이 감지되면 훈련 연산은 종료된다.
[0029] 위의 방법을 사용하면, 가중치-갱신들은, DPU(4)에서, 고 정밀도로, 여기서 32-비트로 계산될 수 있고 ANN 훈련의 정확도를 보장할 수 있다. 또한 아날로그 MAC 유닛에 디지털 방식으로 저장된 감소된-정밀도 가중치들 W를 사용하여 신호 전파를 위한 곱셈-누산 계산들이 효율적으로 수행될 수 있다. 여기서 감소된-정밀도 가중치들을 사용하면 복잡성과 전력 소비량 및 MAC 유닛의 온-칩 면적(on-chip area of the MAC unit)을 감소시킬 수 있다. n의 값은 시냅스 층들 사이에서 변화될 수 있으며, 훈련을 최적화하는데 층당 필요한 정밀도의 가중치들 W이 제공될 수 있다. 예를 들어, n은 층별 기준으로(on a layer-by-layer basis)값 1 ≤ n ≤8 로 세트 될 수 있다. 본 발명의 바람직한 실시 예들에 따라, 본 발명의 특징들을 구현하는 방법은, 따라서, 인공 신경망들의 매우 효율적인 훈련을 제공한다.
[0030] 도 6은 제1 실시 예의 도 2의 메모리 장치(3)의 구조를 개념적으로 도시한 것이다. 이 실시 예에서, 파라미터 m은 모든 시냅스 층들에 대해 m = 0으로 정의되며, 이에 의해 (p + n) = N이 되고, 이 예에서는 N = 32이다. 이 실시 예의 메모리 장치(30)에서, 디지털 메모리는 디지털 메모리(여기서 SRAM) 유닛(31)에 의해 제공되고, 이는 시냅스 층의 각 32-비트 가중치 w의 p = (32-n) LSB만 저장한다. 각 가중치들 w의 나머지 n의 최-상위 비트들(MSB들)에 의해 정의되는, 감소된 정밀도 가중치들 W는 MAC 유닛의 SRAM 아날로그 MAC 어레이(33)의 디지털 메모리 엘리멘트(32)에 저장된다. 디지털 메모리 유닛(31)과 MAC 유닛(7)에 공통적으로 사용되는, 글로벌 메모리 컨트롤러(34)는 신호 전파를 위한 메모리 유닛들 및 MAC 어레이(33)을 출/입하는(to/from) 입/출력 신호들 모두에서 가중치들의 프로그래밍에 영향을 준다. 각 가중치-갱신 계산(도 5의 단계 23) 후, 컨트롤러(34)는 디지털 SRAM(31)에서 가중치들의 p LSB들과 MAC 어레이(33)에서 가중치들의 n-비트 부분들을 재-프로그래밍함에 의해서 갱신된 32-비트 가중치들 w + Δw를 저장한다.
[0031] 도 7은 아날로그 MAC 어레이(33)의 실시 예를 보다 상세하게 예시한 것이다. 어레이(33)은 SRAM 유닛 셀들(35)의 행들과 열들을 포함한다. 각 행은 디지털 메모리 엘리멘트(32)를 제공하여 n-비트의 감소된 정밀도 W를 저장한다. 상기 n 비트들의 각각은 상기 엘리멘트의 각 유닛 셀(35)에 저장된다. 각 유닛 셀(35)은 아날로그 MAC 어레이를 구현하기 위한 아날로그 회로와 디지털 메모리 엘리멘트(32)의 이진 SRAM 셀 모두를 포함한다. 이들 유닛 셀들의 구조(이하 "아날로그" SRAM 셀)는 도 8에 도시되어 있다. 각 단위 셀(35)은 이진 SRAM 셀(38), 캐패시터(39), 및 도시된 바와 같은 스위치들(40, 41a, 41b)을 포함한다. 각 유닛 셀에서 캐패시터(39)의 크기는 연결된 이진 셀(38)에 저장된 비트에 대응하는 2의 거듭제곱에 따라 달라진다. 도 7의 유닛 셀들(35)의 제1 열은 각 n-비트 가중치의 LSB를 저장한다. 만일 이들 셀들의 캐패시터(39)가 용량 C를 갖는다면, 유닛 셀들의 제2 열 캐패시터(39)는 용량(21 x C)을 갖고, 제3 열의 캐패시터들은 용량(22 x C)을 가지며, 그리고 n번째 열의 캐패시터(39)는 용량(2 n -1 x C)을 갖는다. 셀들(35)의 행들은 워드라인 컨트롤 회로(42)에 연결되고 셀들(35)의 열들은 비트라인 컨트롤 회로(43)에 연결된다. 이 컨트롤 회로는 입력 전압 발생기들, 라인 드라이버/디코더 회로들, 감지 증폭기들 및 ADC/DAC 회로들과 같은, 표준 SRAM 회로를 포함한다.
[0032] 어레이(33)의 곱셈-누산 연산에서, 엘리멘트들(32)의 SRAM 셀들(38)은 도 4 어레이의 적절한 행 라인 ri에 연결된다. 입력 전압 발생기는 행마다(per row) 서로 다른 아날로그 전압들을 인가하고, 각 전압은 상기 행의 입력 신호 x 값에 대응한다. 아날로그 SRAM 셀들(35)의 모든 캐패시터들은 스위치(41a)를 닫으면 상기 값으로 충전된다. 그 다음, 입력 전압들이 차단되고 스위치(41a)가 열리면, 아날로그 유닛들(35)의 SRAM 셀들(38)은 이들 셀들이 "0"또는 "1"을 저장하는지에 따라 인접한 커패시터들을 방전시킨다. 구체적으로, 만일 셀(38)이 "0"을 저장하고 있다면, 스위치(40)은 닫혀서 상기 캐패시터를 방전시킨다. 만일 셀(38)이 "1"을 저장하고 있다면, 스위치(40)은 도 8에 도시한 바와 같이 열린 상태를 유지한다. 이 단계는 효과적으로 SRAM 셀 값에 입력 전압을 곱한다. 그 후, 동일 열 라인 cj에 연결된 SRAM 유닛 셀들의 스위치들(41b)는 상기 동일 열의 모든 커패시터들을 단락 시키기 위해 닫히는데, 이렇게 하여 상기 커패시터들 상의 전하 재분배를 통해 아날로그 덧셈 및 평균 연산을 수행한다. 다른 비트들의 거듭제곱은 상기 캐패시터들의 지수 크기(the exponential sizing)를 통해 수용된다. 따라서, 열 라인들의 캐패시터들 상의 최종 출력 전압은 곱셈 및 누적 연산의 결과에 대응하고 ADC를 통해 검색된다(retrieved).
[0033] 도 9는 메모리 장치의 또 다른 실시 예를 도시한다. 이 메모리 장치(45)에서, 디지털 메모리는 MAC 유닛 어레이에 분산되어 있다. 시냅스 층의 각 N-비트 가중치 w는 결합된 디지털/아날로그 SRAM MAC 어레이(47)의 유닛 셀(46)에 저장된다. 각 유닛 셀(46)은 상기 가중치의 p LSB들을 저장하는 p = (32 - n) 비트들의 디지털 SRAM과 위에서 설명한 MAC 어레이(33)의 행에 대응하는 n의 아날로그 SRAM 셀들(35)을 포함한다. 이들 n의 아날로그 SRAM 셀들의 이진 SRAM 셀들(38)은 n-비트 감소된-정확도 가중치 W를 저장하는 n-비트 디지털 메모리 엘리멘트(32)를 제공한다. 메모리 컨트롤러(48)는 유닛 셀들(46)의 디지털 SRAM에 대한 액세스뿐만 아니라, 곱셈-누산 연산들에 대해서 위에서 설명한 바와 같이 유닛 셀들(46)의 아날로그 SRAM 셀들(35)에 대한 액세스를 컨트롤한다. 결합된 MAC 어레이(47)의 구조는, 본 발명의 일 실시 예에 따라, 도 10에 상세하게 도시되어 있다. 이 실시 예의 결합된 디지털/아날로그 유닛 셀들은 높은 면적 효율적인 구현을 위해 작은 온-칩 설치면적(풋프린트)를 제공한다.
[0034] 도 11은 메모리 장치의 다른 실시 예의 구조를 도시한다. 도 6의 컴포넌트들에 대응하는 컴포넌트들은 동일 참조들에 의해서 표시된다. 이 메모리 장치(50)은 디지털 메모리(여기서 SRAM) 유닛(51)을 포함하고, 이는 시냅스 층의 각 32-비트 가중치 w의 모든 비트들을 저장한다. n-비트의 감소된 정밀도 가중치들 W는 위에서 설명한 바와 같이 SRAM 아날로그 MAC 어레이(33)의 디지털 메모리 엘리멘트들(32)에 저장된다. 표준 SRAM 컨트롤러(52)는 디지털 SRAM 유닛(51)을 컨트롤하고, MAC 컨트롤러(53)은 앞서 설명한 바와 같이 MAC 어레이(33)을 컨트롤한다. 이 실시 예에서, 각 가중치-갱신 계산(도 5의 단계 23) 후, SRAM 컨트롤러(52)는 디지털 유닛(51)에 저장된 32-비트 가중치들 w을 갱신된 가중치들 w + Δw로 재-프로그램 한다. 따라서, 상기 가중치-갱신들은 디지털 SRAM(51)에 누적된다. 예를 들어, 가중치-갱신 연산들이 훈련 예들의 배치(batch)에 대해 수행된 후 주기적으로, SRAM 컨트롤러(52)는 n-비트 감소된-정밀도 가중치들 W를 유닛(51)로부터 MAC 유닛으로 MAC 컨트롤러(53)를 통해 복사한다. 따라서 갱신된 32-비트 가중치들의 n-비트 부분들은 대응하는 감소된-정밀도 가중치들을 MAC 어레이(33)에 저장하는 디지털 메모리 엘리멘트(32)으로 복사된다. 여기에서 설명된 본 발명의 실시 예들에서, 메모리 컨트롤러(52)는, 가중치-갱신 연산들의 배치에서 상기 가중치에 대해 갱신하는 동안 (N - p)번째 비트의 비트-오버플로가 발생하는 경우에만, 갱신된 가중치 w의 n-비트 부분을 MAC 유닛으로 복사하도록 구성될 수 있다. 이 것은 감소된-정밀도 가중치들을 갱신하기 위한 연산들의 프로그래밍 수를 감소시키고 따라서 SRAM(51)과 MAC 유닛 사이의 데이터 전송을 감소시키다.
[0035] 도 6과 도 9의 메모리 장치에서, 각 시냅스 층을 위한 감소된-정밀도 가중치들 W는 상기 MAC 유닛의 각 어레이에 저장된다. 도 11의 메모리 구조에서, 주어진 MAC 어레이는 신호 전파가 진행됨에 따라 다른 시냅스 층들의 가중치들 W을 위해 재-사용될 수 있다. 특히, DPU(4)의 컨트롤 하에, SRAM 컨트롤러(52)는 신호 전파 연산이 진행되고 다른 층들이 활성화됨에 따라 (하나 또는 그 이상의) 활성 시냅스 층들의 연속적인 세트들을 위한 가중치들 w의 n-비트 부분들을 동적으로 저장할 수 있다. 상기 MAC 어레이는 한 배치의 훈련 예들(a batch of training examples)를 위해 활성 층들을 통해서 전파를 수행하는 데 사용될 수 있으며, 그 다음에 활성 층들의 다음 세트를 위해 감소된 정밀도 가중치들로 재-프로그램 될 수 있다.
[0036] 도 11 실시 예에 대한 수정에서, 만일 시냅스 층을 위한 가중치들 매트릭스가 너무 커서 상기 층을 위한 모든 가중치들 W를 저장할 수 없다면, 신호 전파 연산은, 상기 MAC 어레이에 가중치들 W의 블록들을 연속적으로(서브-매트릭스들 효과적으로) 저장하고, 각 블록에 대한 곱셈 누산 연산들(the multiply accumulate operations)을 수행하며, 그리고 DPU(4)의 모든 블록들을 위해 최종 신호들을 누적함으로써 수행될 수 있다.
[0037] 도 12는 메모리 장치(2)에 사용하기 위한 아날로그 MAC 어레이의 다른 실시 예를 도시한다. 이 어레이(55)의 컴포넌트들은, 어레이(55)의 모든 아날로그 SRAM 셀들(56)이 동일 정전 용량 C를 갖는 커패시터들을 포함하고 있다는 점을 제오하고, 일반적으로 도 7의 컴포넌트들에 대응한다. 이 실시 예의 어레이 컨트롤 회로는 도면번호(57)에 표시된 바와 같이 디지털 시프트-및-더하기 회로(digital shift-and-add circuitry)를 포함한다. 이 회로는 셀들(56)의 다른 열들에 저장된 비트들의 2의 다른 거듭제곱을 수용하기 위해 곱셈-누산 연산으로 상기 열 라인들 상의 출력들에 관한 시프트-및-더하기 연산을 수행한다. 상기 열 라인 출력들을 디지털화 한 후, 회로(57)은: n 번째 열의 디지털 출력 값을 (n - 1) 비트들만큼 시프트하고, (n - 1)번째 열의 디지털 출력 값을 (n - 2)비트들만큼 시프트 한다. 그 다음에, 모든 n 열들로부터의 결과들이 회로(57)에서 더해져서, 도 4의 논리 어레이 구성의 메모리 엘리멘트들 중 하나의 열에서 n-비트 가중치들을 위한 곱셈-누산 연산의 결과가 획득된다. MAC 어레이(55)는 또한 도 10의 어레이에 대응하는 결합된 디지털/아날로그 어레이 구조에 통합될 수 있다.
[0038] 네트워크에 따라, 서로 다른 시냅스 층들에서 가중치들은 서로 다른 범위들을 가질(span) 수 있으며, 감소된 정밀도 가중치들 W을 나타내기 위해 동일 N-비트 가중치들을 사용하는 것이 최적이 아닐 수 있다. 이것은 각 시냅스 층의 가중치들의 최-상위 0 비트들의 수에 따라 상기 층을 위해 파라미터 m(도 3 참조)의 초기 값을 정의함으로써 해결될 수 있다. 더 구체적으로, 만일 층의 모든 가중치들 w이 M (M>0)의 최-상위 0 비트들을 갖는다면, m은 m = M의 초기 값으로 세트 될 수 있다. 디지털 메모리에 저장된 복수 p의 LSB들은 p = (N - n - m)로 정의된다. m 값은, 시냅스 층의 가중치들에서 최-상위 0 비트들의 수의 변화들에 따라, 메모리 컨트롤러(8)의 컨트롤 하에서, 훈련 동안에 조정된다. m 값을 조정하는 것에 응답하여, 시냅스 층을 위한 가중치들의 n-비트 부분들은 m의 조정된 값에 따라 재정의된다. 따라서, m이 가중치들 {w}의 0 MSB들의 수에 따라 변화함에 따라 도 3의 n-비트 부분은 N-비트 가중치 값을 따라 효과적으로 "슬라이드(slide)"된다. 그런 다음, 메모리 컨트롤러(8)은 상기 가중치들의 재-정의된 n-비트 부분들을 저장하기 위해 필요할 때 MAC 유닛을 재-프로그램 한다. 예를 들어, 상기 재-정의된 n-비트 부분들은 상기 메모리 장치의 디지털 SRAM에 저장된 N-비트 가중치들로부터 복사될 수 있다.
[0039] 한 시냅스 층에서 m>0일 때, 상기 MAC 어레이의 n-비트 가중치 값들에 기초한 곱셈-누산 연산의 결과는 DPU(4)로 공급되기 전에 메모리 컨트롤러(8)에서 2- m 에 의해서 스케일 될 수 있다. 메모리 컨트롤러(8)는, (N - m) 번째 비트의 비트-오버플로가 디지털 메모리의 N-비트 가중치들에 대한 가중치를 갱신하는 동안 감지될 때, 층을 위해 m 값을 감소시킬 수 있다. 상기 메모리 컨트롤러는 층을 위해 저장된 현재 n-비트 가중치들을 주기적으로 읽고 모든 n-비트 가중치들의 MSB가 0일 때 m을 증가시킬 수 있다. 이 방식은 곱셈-누산 연산들에 사용되는 가중치들을 더 최적으로 정의할 수 있게 하여, 훈련의 정확도를 향상시킨다.
[0040] 물론 수많은 변경들과 수정들이 기술된 본 발명의 예시적 실시 예들에 대해 이루어질 수 있다. 예를 들어, 곱셈-누산 연산들은 MAC 유닛(7)에서 상기 전진 및 후진 전파 연산들 모두를 위해 수행되지만, 본 발명의 실시 예들에서 MAC 유닛(7)은 전방 및 후방 전파 중 하나를 위해서만 사용되는 것이 예상될 수 있다(be envisaged). 예를 들어, 전진 전파는 MAC 유닛(7)을 사용하여 수행될 수 있고, 후진 전파 게산들은 DPU(4)에서 수행될 수 있다.
[0041] 플로 다이어그램들의 단계들은 도시된 순서와 다르게 구현될 수 있으며 일부 단계들은 적절한 경우 병렬로 수행될 수 있다. 일반적으로, 본 발명의 실시 예들을 구현하는 방법과 관련하여 특징들을 여기에서 기술하는 경우, 대응하는 특징들은 발명의 실시 예들을 구현하는 장치에 제공될 수 있으며, 그 반대의 경우도 마찬가지이다.
[0042] 본 발명의 다양한 실시 예들의 설명은 예시의 목적으로 제공되며, 총망라하거나 개시된 실시 예들에 한정되는 것은 아니다. 기술된 실시예들의 범위 및 정신을 벗어나지 않으면서 많은 수정들 및 변형들이 당업자에게 명백할 것이다. 본 명세서에서 사용된 용어는 실시예들의 원리들, 시장에서 발견되는 기술들에 대한 실질적인 응용 또는 기술적 개선을 가장 잘 설명하거나, 또는 당업자가 본 명세서에 개시된 실시예들을 이해할 수 있게 하기 위해 선택되었다. 
[0043] 본 발명은 시스템, 컴퓨터-구현 방법, 및/또는 컴퓨터 프로그램 제품이 될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 스토리지 매체를 포함할 수 있으며, 이 매체 상에 프로세서가 본 발명의 실시 예들을 수행하도록 하는 컴퓨터 판독 가능 프로그램 명령들을 갖는다.
[0044] 상기 컴퓨터 판독 가능 스토리지 매체는 명령 실행 장치에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 상기 컴퓨터 판독 가능 스토리지 매체는, 예를 들면, 전자 스토리지 디바이스, 자기 스토리지 디바이스, 광 스토리지 디바이스, 전자기 스토리지 디바이스, 반도체 스토리지 디바이스, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 스토리지 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거 및 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 히스토리된 홈에 있는 융기된 구조들 같이 기계적으로 인코드 된 장치, 및 전술한 것들의 모든 적절한 조합. 본 명세서에서 사용될 때, 컴퓨터 판독 가능 스토리지 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[0045] 본 명세서에 기술되는 컴퓨터 판독 가능 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 컴퓨터 판독 가능 스토리지 매체로부터 각각 컴퓨팅/처리 디바이스들로 또는 외부 스토리지 디바이스로부터 외부 컴퓨터로 다운로드 될 수 있다. 상기 통신망은 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 엣지 서버들을 포함할 수 있다. 각 컴퓨팅/처리 장치 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 판독 가능 스토리지 매체에 저장하기 위해 전송한다.
[0046] 본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 집적회로를 위한 구성 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 로직 어레이들(PLA)을 포함한 전자 회로는 본 발명의 실시 예들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.
[0047] 본 명세서에서는 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 플로 차트 예시도들 및/또는 블록도들을 참조하여 본 발명의 실시 예들을 기술한다. 플로 차트 예시도들 및/또는 블록도들의 각 블록과 플로 차트 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[0048] 이들 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 장치의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치의 프로세서를 통해서 실행되어, 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이들 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 스토리지 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 장치 및/또는 기타 디바이스들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 스토리지 매체가 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[0049] 상기 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치, 또는 다른 디바이스에 로드 되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 동작 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 디바이스 상에서 실행되는 명령들이 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[0050] 도면들 내 플로 차트 및 블록도들은 본 발명의 여러 실시 예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능(functionality), 및 연산(operation)을 예시한다. 이와 관련하여, 상기 플로 차트 또는 블록도들 내 각 블록은 상기 명시된 논리적 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행 가능한 명령들을 포함한 모듈, 세그먼트 또는 명령들의 일부분을 나타낼 수 있다. 일부 다른 구현들에서, 상기 블록에 언급되는 기능들은 도면들에 언급된 순서와 다르게 일어날 수도 있다. 예를 들면, 연속으로 도시된 두 개의 블록들은 실제로는 사실상 동시에 실행될 수도 있고, 또는 이 두 블록들은 때때로 관련된 기능에 따라서는 역순으로 실행될 수도 있다. 블록도들 및/또는 순서 예시도의 각 블록, 및 블록도들 및/또는 순서 예시도 내 블록들의 조합들은 특수목적용 하드웨어 및 컴퓨터 명령들의 명시된 기능들 또는 동작들, 또는 이들의 조합들을 수행하는 특수목적용 하드웨어-기반 시스템들에 의해 구현될 수 있다는 것에 또한 주목해야 한다.
[0051] 본 발명의 다양한 실시 예들의 설명은 예시의 목적으로 제공되며, 총망라하거나 개시된 실시 예들에 한정되는 것은 아니다. 기술된 실시예들의 범위 및 정신을 벗어나지 않으면서 많은 수정들 및 변형들이 당업자에게 명백할 것이다. 본 명세서에서 사용된 용어는 실시예들의 원리들, 시장에서 발견되는 기술들에 대한 실질적인 응용 또는 기술적 개선을 가장 잘 설명하거나, 또는 당업자가 본 명세서에 개시된 실시예들을 이해할 수 있게 하기 위해 선택되었다.

Claims (26)

  1. 연속의 뉴런 층들을 갖고 이들 사이에 개재된 시냅스 층들(interposed synaptic layers) 각각이, 신호 전파 및 가중치-갱신 계산 연산들의 반복 사이클(an iterative cycle of signal propagation and weight-update calculation operations)을 통해, 인접한 뉴런 층들 사이에 전파되는 신호들을 가중하기 위한 N-비트 고정-소수점 가중치들{w}의 각 세트(a respective set of N-bit fixed-point weights {w})를 갖는 인공 신경망을 훈련하는 방법에 있어서, 상기 방법은 각 시냅스 층을 위해:
    각 시냅스 층의 각 N-비트 가중치 w의 복수 p의 최-하위 비트들(a plurality p of least-significant bits)을 디지털 메모리에 저장하는 단계;
    디지털 메모리 엘리멘트들의 어레이를 포함하는 아날로그 곱셈-누산 유닛(an analog multiply-accumulate unit)에 상기 시냅스 층의 각 가중치 w의 n-비트 부분을 저장하는 단계-상기 디지털 메모리 엘리멘트들 각각은 각 가중치의 상기 n-비트 부분의 각 비트들을 저장하기 위해 n 이진 메모리 셀들을 포함하고, 여기서 1≤n ≤N 이고, (p + n + m) = N이며, 여기서 m≥0은 상기 시냅스 층의 가중치들에서 최-상위 0 비트들의 정의된 수(a defined number of most-significant zero bits)에 대응함-;
    상기 가중치들의 저장된 n-비트 부분들에 따라 누적 가중된 신호들을 획득하기 위해 상기 시냅스 층에 의해 가중될 신호들을 상기 곱셈-누산 유닛에 공급함에 의해서 신호 전파 연산을 수행하는 단계; 및
    상기 뉴런 층들에 의해 전파되는 신호들에 따라 상기 시냅스 층을 위한 갱신된 가중치들을 계산하기 위해, 상기 디지털 메모리 및 곱셈-누산 유닛에 동작 가능하게 결합된, 디지털 처리 유닛에서 가중치-갱신 계산 연산을 수행하는 단계; 및
    상기 갱신된 가중치들을 저장하기 위해 상기 디지털 메모리와 상기 곱셈-누산 유닛을 주기적으로 재-프로그램 하는 단계를 포함하는
    방법.
  2. 제1항에 있어서, m은 상기 시냅스 층을 위해 m = 0으로 정의되며, 이에 의하여 (p + n) = N이 되는
    방법.
  3. 제2항에 있어서, 각각의 N-비트 가중치의 오직 상기 p 최-하위 비트들만 상기 디지털 메모리에 저장되는
    방법.
  4. 제3항에 있어서, 상기 재-프로그램 하는 단계는 상기 가중치-갱신 계산 연산 후 상기 디지털 메모리에서 가중치들의 p 최-하위 비트들과 상기 곱셈-누산 유닛에서 가중치들의 n-비트 부분들 모두를 재-프로그램 하는 단계에 의해서 수행되는
    방법.
  5. 제4항에 있어서, 상기 디지털 메모리는 디지털 메모리 유닛에 제공되고, 상기 재-프로그램 하는 단계는 상기 디지털 메모리 유닛과 상기 곱셈-누산 유닛에 공통인 메모리 컨트롤러에 의해서 수행되는
    방법.
  6. 제4항에 있어서, 상기 디지털 메모리는 각 N-비트 가중치가, 상기 가중치의 p 최-하위 비트들을 저장하는, p-비트들의 디지털 메모리 및 상기 가중치의 n-비트 부분을 저장하는 상기 디지털 메모리 엘리멘트를 포함하는 유닛 셀에 저장되도록 상기 곱셈-누산 유닛에서 분산되는
    방법.
  7. 제2항에 있어서, 상기 방법은 상기 디지털 메모리를 제공하는 디지털 메모리 유닛에 각 N-비트 가중치의 모든 N-비트들을 저장하는 단계를 포함하는
    방법.
  8. 제7항에 있어서, 상기 재-프로그램 하는 단계는:
    상기 디지털 메모리 유닛의 N-비트 가중치들을 상기 가중치-갱신 계산 연산 후 갱신된 가중치로 재-프로그램 하는 단계; 및
    상기 디지털 메모리 유닛의 갱신된 가중치의 n-비트 부분을 디지털 메모리 엘리멘트에 주기적으로 복사하여 상기 가중치의 n-비트 부분을 상기 곱셈-누산 유닛에 저장하는 단계에 의해서 수행되는
    방법.
  9. 제8항에 있어서, 상기 방법은 한 배치의 가중치-갱신 계산 연산들(a batch of weight-update calculation operations)을 수행한 후 갱신된 가중치의 상기 n-비트 부분을 상기 디지털 메모리 엘리멘트로 복사하는 단계를 포함하는
    방법.
  10. 제9항에 있어서, 상기 방법은, 만일 상기 배치의 가중치-갱신 계산 연산들에서 상기 가중치에 대한 갱신 동안 (N - p)번째 비트의 비트-오버플로가 발생한다면, 갱신된 가중치의 상기 n-비트 부분만을 상기 디지털 메모리 엘리멘트로 복사하는 단계를 포함하는
    방법.
  11. 제7항에 있어서, 상기 방법은:
    상기 디지털 메모리 유닛에 모든 시냅스 층들의 N-비트 가중치들을 저장하는 단계; 및
    상기 신호 전파 연산을 수행하기 위해 디지털 메모리 엘리멘트의 상기 어레이에 상기 시냅스 층의 연속적인 세트들의 가중치들의 n-비트 부분들을 동적으로 저장하는 단계를 더 포함하는
    방법.
  12. 제1항에 있어서, 상기 방법은:
    상기 시냅스 층의 가중치들에서 최-상위 0비트들의 수에 따라 상기 시냅스 층을 위해 m의 초기 값을 정의하는 단계;
    상기 시냅스 층을 위해 상기 복수 p를 p = (N - n - m)로 정의하는 단계;
    상기 시냅스 층의 가중치들에서 최-상위 0비트들의 수의 변화들에 따라 상기 훈련 동안 m 값을 조정하는 단계; 및
    상기 m의 값을 조정하는 것에 응답하여, 상기 m의 조정된 값에 따라 상기 시냅스 층의 가중치들의 상기 n-비트 부분을 재-정의하고, 상기 가중치들의 재-정의된 n-비트 부분들을 저장하기 위해 디지털 메모리 엘리멘트의 상기 어레이를 재-프로그램 하는 단계를 더 포함하는
    방법.
  13. 제1항에 있어서, 상기 신호 전파 연산 각각은, 제1 뉴런 층으로부터 네트워크를 통해 신호들이 전파되는, 전진 전파 연산(a forward propagation operation)과 마지막 뉴런 층으로부터 네트워크를 통해 신호들이 후진 전파되는 후진 전파 연산(backpropagation operation)을 포함하고, 상기 방법은, 각각의 시냅스 층을 위해, 상기 전진 및 후진 전파 연산에서 상기 시냅스 층에 의해 가중될 신호들을 상기 곱셈-누산 유닛에 공급하는 단계를 포함하는
    방법.
  14. 제1항에 있어서, 상기 방법은 각 시냅스 층을 위해 n의 각 값을 정의하는 단계를 포함하는
    방법.
  15. 제1항에 있어서, 각 시냅스 층을 위해 N = 32이고 n ≤ 8인
    방법.
  16. 연속의 뉴런 층들을 갖고 이들 사이에 개재된 시냅스 층들(interposed synaptic layers) 각각이, 신호 전파 및 가중치-갱신 계산 연산들의 반복 훈련 사이클(an iterative training cycle of signal propagation and weight-update calculation operations)에서, 인접한 뉴런 층들 사이에 전파되는 신호들을 가중하기 위한 N-비트 고정-소수점 가중치들{w}의 각 세트(a respective set of N-bit fixed-point weights {w})를 갖는 인공 신경망을 구현하는 장치에 있어서, 상기 장치는:
    각 시냅스 층의 각 N-비트 가중치 w의 복수 p의 최-하위 비트들(a plurality p of least-significant bits )을 저장하는 디지털 메모리;
    각 시냅스 층의 각 가중치 w의 n-비트 부분을 저장하는 아날로그 곱셈-누산 유닛(an analog multiply-accumulate unit)- 상기 아날로그 곱셈-누산 유닛은 디지털 메모리 엘리멘트들의 어레이를 포함하고, 상기 디지털 메모리 엘리멘트들 각각은 각 가중치의 상기 n-비트 부분의 각 비트들을 저장하기 위해 n 이진 메모리 셀들을 포함하며, 여기서 1≤n≤N 이고, (p + n + m) = N이며, 여기서 m≥0은 상기 시냅스 층의 가중치들에서 최-상위 0 비트들의 정의된 수(a defined number of most-significant zero bits)에 대응함-;
    상기 디지털 메모리 및 곱셈-누산 유닛에 동작가능 하게 결합된 디지털 처리 유닛을 포함하고, 상기 디지털 처리 유닛은:
    신호 전파 연산에서, 상기 가중치들의 저장된 n-비트 부분들에 따라 누적 가중된 신호들을 획득하기 위해 각 시냅스 층에 의해 가중될 신호들을 상기 곱셈-누산 유닛에 공급하도록 구성되고(adapted);
    상기 뉴런 층들에 의해 전파되는 신호들에 따라 각 시냅스 층을 위해 갱신된 가중치들을 계산하기 위해 가중치-갱신 계산 작업 연산을 수행하도록 구성되며; 그리고
    상기 갱신된 가중치들을 저장하기 위해 상기 디지털 메모리와 상기 곱셈-누산 유닛을 주기적으로 재-프로그램 하는 단계를 컨트롤하도록 구성되는
    장치.
  17. 제16항에 있어서, m은 상기 시냅스 층을 위해 m = 0으로 정의되며, 이에 의하여 (p + n) = N이 되는
    장치.
  18. 제17항에 있어서, 각 N-비트 가중치의 오직 상기 p 최-하위 비트들만 상기 디지털 메모리에 저장되는
    장치.
  19. 제18항에 있어서, 상기 장치는, 상기 디지털 메모리를 제공하는, 디지털 메모리 유닛을 포함하고 상기 재-프로그램 하는 단계를 수행하기 위해 상기 디지털 메모리 유닛과 상기 곱셈-누산 유닛에 공통인 메모리 컨트롤러를 포함하는
    장치.
  20. 제18항에 있어서, 상기 디지털 메모리는 각 N-비트 가중치가, 상기 가중치의 p 최-하위 비트들을 저장하는, p-비트들의 디지털 메모리 및 상기 가중치의 n-비트 부분을 저장하는 상기 디지털 메모리 엘리멘트를 포함하는 유닛 셀에 저장되도록 상기 곱셈-누산 유닛에서 분산되는
    장치.
  21. 제17항에 있어서, 각 N-비트 가중치의 모든 N 비트들은 상기 디지털 메모리를 제공하는 디지털 메모리 유닛에 저장되는
    장치.
  22. 제21항에 있어서, 모든 시냅스 층들의 N-비트 가중치들은 상기 디지털 메모리 유닛에 저장되고, 그리고 상기 장치는 상기 신호 전파 연산을 수행하기 위해 디지털 메모리 엘리멘트들의 상기 어레이에 상기 시냅스 층들의 연속적인 세트들의 가중치들의 n-비트 부분들을 동적으로 저장하도록 구성되는
    장치.
  23. 제16항에 있어서, 상기 곱셈-누산 유닛은 각 시냅스 층의 가중치들의 상기 n-비트 부분들을 저장하는 상기 디지털 메모리 엘리멘트들의 각 어레이를 포함하는
    장치.
  24. 제16항에 있어서, m의 초기 값은 상기 시냅스 층의 가중치들에서 최-상위 0비트들의 수에 따라 상기 시냅스 층을 위해 정의되고, 그리고 상기 시냅스 층을 위해 상기 복수 p는 p = (N - n - m)로 정의되며, 상기 장치는:
    상기 훈련 동안 상기 시냅스 층의 가중치들에서 최-상위 0비트들의 수의 변화들에 따라 시냅스 층을 위해 m 값을 조정하도록 구성되고; 그리고
    상기 m의 값을 조정하는 것에 응답하여, 상기 m의 조정된 값에 따라 상기 시냅스 층의 가중치들의 상기 n-비트 부분을 재-정의하고, 상기 가중치들의 재-정의된 n-비트 부분들을 저장하기 위해 디지털 메모리 엘리멘트의 상기 어레이를 재-프로그램 하도록 구성되는
    장치.
  25. 제16항에 있어서, 상기 이진 메모리 셀들은 SRAM 셀들을 포함하는
    장치.
  26. 삭제
KR1020217036993A 2019-05-16 2020-05-12 인공신경망의 훈련 방법 및 장치 KR102672586B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/413,738 2019-05-16
US16/413,738 US11531898B2 (en) 2019-05-16 2019-05-16 Training of artificial neural networks
PCT/EP2020/063194 WO2020229468A1 (en) 2019-05-16 2020-05-12 Training of artificial neural networks

Publications (2)

Publication Number Publication Date
KR20210154816A KR20210154816A (ko) 2021-12-21
KR102672586B1 true KR102672586B1 (ko) 2024-06-07

Family

ID=

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160358075A1 (en) 2015-06-08 2016-12-08 The Regents Of The University Of Michigan System for implementing a sparse coding algorithm
US20180113649A1 (en) 2016-03-31 2018-04-26 Hewlett Packard Enterprise Development Lp Data processing using resistive memory arrays
US20190042199A1 (en) 2018-09-28 2019-02-07 Intel Corporation Compute in memory circuits with multi-vdd arrays and/or analog multipliers

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160358075A1 (en) 2015-06-08 2016-12-08 The Regents Of The University Of Michigan System for implementing a sparse coding algorithm
US20180113649A1 (en) 2016-03-31 2018-04-26 Hewlett Packard Enterprise Development Lp Data processing using resistive memory arrays
US20190042199A1 (en) 2018-09-28 2019-02-07 Intel Corporation Compute in memory circuits with multi-vdd arrays and/or analog multipliers

Similar Documents

Publication Publication Date Title
AU2020274862B2 (en) Training of artificial neural networks
US11348002B2 (en) Training of artificial neural networks
US9646243B1 (en) Convolutional neural networks using resistive processing unit array
Nandakumar et al. Mixed-precision architecture based on computational memory for training deep neural networks
US11373092B2 (en) Training of artificial neural networks
US10248907B2 (en) Resistive processing unit
US11386319B2 (en) Training of artificial neural networks
CN111656368A (zh) 硬件加速的离散式神经网络
US20210064974A1 (en) Formation failure resilient neuromorphic device
KR20230029759A (ko) 아날로그 크로스바 어레이들을 업데이트하기 위한 희소 수정가능 비트 길이 결정 펄스 생성
US11556770B2 (en) Auto weight scaling for RPUs
KR102672586B1 (ko) 인공신경망의 훈련 방법 및 장치
AU2021281628B2 (en) Efficient tile mapping for row-by-row convolutional neural network mapping for analog artificial intelligence network inference
García-Redondo et al. Training DNN IoT applications for deployment on analog NVM crossbars
Zhang et al. Xma2: A crossbar-aware multi-task adaption framework via 2-tier masks
US20200394493A1 (en) Resistive crossbar arrays with reduced numbers of elements
CN115796250A (zh) 权重部署方法及装置、电子设备和存储介质
CN116128035A (zh) 训练方法及装置、电子设备和计算机存储介质
WO2024091680A1 (en) Compute in-memory architecture for continuous on-chip learning
CN114761973A (zh) 电容性处理单元