KR20150016089A - 신경망 컴퓨팅 장치 및 시스템과 그 방법 - Google Patents

신경망 컴퓨팅 장치 및 시스템과 그 방법 Download PDF

Info

Publication number
KR20150016089A
KR20150016089A KR1020140083688A KR20140083688A KR20150016089A KR 20150016089 A KR20150016089 A KR 20150016089A KR 1020140083688 A KR1020140083688 A KR 1020140083688A KR 20140083688 A KR20140083688 A KR 20140083688A KR 20150016089 A KR20150016089 A KR 20150016089A
Authority
KR
South Korea
Prior art keywords
memory
output
neuron
input
value
Prior art date
Application number
KR1020140083688A
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 PCT/KR2014/007065 priority Critical patent/WO2015016640A1/ko
Priority to US14/909,338 priority patent/US20160196488A1/en
Publication of KR20150016089A publication Critical patent/KR20150016089A/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/04Architecture, e.g. interconnection topology
    • G06N3/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs

Landscapes

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

Abstract

본 기술은 신경망 컴퓨팅 장치 및 시스템과 그 방법에 관한 것으로, 전체 구성 요소가 하나의 시스템 클록에 동기화되는 동기화 회로로 동작하고, 인공 신경망 데이터를 저장하는 분산형 메모리 구조와 모든 뉴런을 파이프라인 회로에서 시분할로 처리하는 계산 구조를 포함함으로써, 다양한 신경망 모델과 대규모 신경망의 적용이 가능하면서 동시에 고속 처리가 가능한 신경망 컴퓨팅 장치 및 시스템과 그 방법을 제공한다. 이러한 신경망 컴퓨팅 장치는, 상기 신경망 컴퓨팅 장치를 제어하기 위한 제어 유닛; 듀얼 포트 메모리를 이용하여 각각 연결선 전단 뉴런의 출력값을 출력하기 위한 복수 개의 메모리 유닛; 및 상기 복수 개의 메모리 유닛으로부터 각각 입력되는 연결선 전단 뉴런의 출력값을 이용하여 새로운 연결선 후단 뉴런의 출력값을 계산하여 상기 복수 개의 메모리 유닛 각각으로 피드백시키기 위한 하나의 계산 서브시스템을 포함할 수 있다.

Description

신경망 컴퓨팅 장치 및 시스템과 그 방법{Neural network computing apparatus and system, and method thereof}
본 발명의 몇몇 실시예들은 디지털 신경망 컴퓨팅 기술 분야에 관한 것으로, 더욱 상세하게는 전체 구성 요소가 하나의 시스템 클록에 동기화되는 동기화 회로(synchronized circuit)로 동작하고, 인공 신경망 데이터를 저장하는 분산형 메모리 구조와 모든 뉴런을 파이프라인 회로에서 시분할로 처리하는 계산 구조를 포함하는, 신경망 컴퓨팅 장치 및 시스템과 그 방법에 관한 것이다.
디지털 신경망 컴퓨터는 생물학적 신경망을 시뮬레이션하여 두뇌의 역할과 유사한 기능을 구현하려는 목적으로 구현된 전자 회로이다.
생물학적 신경망을 인공적으로 구현하기 위해 연산 방법들이 다양한 형태로 제시되고 있는데, 이러한 인공 신경망의 구성 방법론을 신경망 모델이라고 한다. 대부분의 신경망 모델에서는 인공 뉴런이 방향성이 있는 연결선(시냅스)으로 연결되어 네트워크를 형성하고, 연결선에 연결된 연결선 전단(pre-synaptic) 뉴런의 출력에서 연결선으로 인입되는 신호는 덴드라이트에서 합산되어 뉴런의 본체(소마)에서 처리된다. 각 뉴런은 고유의 상태(state)값과 속성(attribute)값을 가지며, 소마에서는 덴드라이트로부터의 입력을 바탕으로 연결선 후단(post-synaptic neuron) 뉴런의 상태값을 갱신하고 새로운 출력값을 계산하며, 그 출력값은 복수 개의 다른 뉴런의 입력 연결선을 통해 전달되어 인접한 뉴런에 영향을 미친다. 뉴런과 뉴런 사이의 연결선 역시 각각이 고유의 복수 개의 상태값과 속성값을 가질 수 있으며, 기본적으로 연결선이 전달하는 신호의 세기를 조절하는 역할을 한다. 대부분의 신경망 모델에서 가장 일반적으로 사용하는 연결선의 상태값은 연결선의 연결 강도를 나타내는 가중치(weight)값이다.
상태값이라 함은 그 값이 초기에 지정된 후 계산을 진행하면서 변화하는 값을 의미하며, 속성값은 그 값이 한 번 지정되면 변하지 않는 값을 의미한다. 편의상 연결선의 상태값과 속성값을 통칭하여 연결선 특정(connection-specific)값, 뉴런의 상태값과 속성값을 통칭하여 뉴런 특정(neuron-specific)값이라 하기로 한다.
생물학적 신경망과는 다르게 디지털 신경망 컴퓨터에서는 뉴런의 값을 선형적으로 변화시킬 수 없기 때문에 전체의 뉴런에 대해 한 번씩 계산한 후 그 결과값을 다음 계산 시에 반영하는 방식으로 계산을 진행한다. 전체 뉴런을 한 번씩 계산하는 주기를 신경망 갱신 주기(update cycle)라 한다. 디지털 인공 신경망의 실행은 신경망 갱신 주기를 반복적으로 실행하는 방법으로 진행된다. 뉴런의 계산 결과를 반영하는 방법은 전체 뉴런의 계산이 완료된 후에 그 결과를 다음 주기에 반영하는 비 오버래핑 갱신 방법(non-overlapping updating)과 모든 뉴런에 특정 갱신 주기 내에서 임의의 시간에 순차적으로 계산 결과가 반영되는 오버래핑 갱신 방법(overlapping updating)으로 구분된다.
대부분의 신경망 모델에서 새로운 뉴런의 출력값의 계산은 하기의 [수학식 1]과 같이 일반화된 수식으로 표현될 수 있다.
Figure pat00001
여기서, yj(T)는 T번째 신경망 갱신 주기에서 계산된 뉴런 j의 출력값, fN은 뉴런의 복수의 상태값을 갱신하고 하나의 새로운 출력값을 계산하는 뉴런 함수, fS는 연결선의 복수의 상태값을 갱신하고 하나의 출력값을 계산하는 시냅스 함수, SNj는 임의의 복수의 뉴런 j의 상태값과 속성값의 집합, SSij는 뉴런 j의 i번째 연결선의 임의의 복수의 상태값과 속성값의 집합, pj는 뉴런 j의 입력 연결선의 수, Mij는 뉴런 j의 i번째 입력 연결선에 연결된 뉴런의 참조번호이다.
그러나 대부분의 전통적인 신경망 모델에서 뉴런의 값은 하나의 실수 또는 정수로 표현되고, 하기의 [수학식 2]와 같이 계산된다.
Figure pat00002
여기서, wij는 뉴런 j의 i번째 입력 연결선의 가중치값이다. 상기 [수학식 2]는 상기 [수학식 1]의 여러 케이스 중 하나이며, 상기 [수학식 1]의 SSij는 하나의 연결선의 가중치이고, 시냅스 함수 fS는 가중치값(Wij)과 입력값(yMij)을 곱하는 계산식이다.
한편, 생물학적인 두뇌의 신경망과 유사하게 작동하는 스파이킹 신경망 모델(spiking neural networks)에서는 뉴런이 순간적인 스파이크 신호를 송출하고, 이 스파이크 신호는 시냅스에 전달되기 전에 연결선 고유의 속성값에 따라 일정 시간 동안 지연되며, 지연된 스파이크 신호를 전달받은 연결선(시냅스)은 다양한 패턴으로 신호를 생성하고, 덴드라이트는 이 신호들을 합산하여 소마의 입력으로 전달한다. 소마는 이 입력 신호와 복수의 뉴런의 상태값을 인자로 상태값을 갱신하며, 특정 조건을 만족하면 하나의 스파이크 신호를 출력으로 방출한다. 이와 같은 스파이킹 신경망 모델에서는 연결선이 연결선의 가중치 외에도 여러 개의 상태값과 속성값을 가질 수 있고 신경망 모델에 따라 임의의 계산식을 포함할 수 있으며, 뉴런도 한 개 또는 복수 개의 상태값과 속성값을 가지고 신경망 모델에 따라 임의의 계산식으로 계산될 수 있다. 일 예로 "Izhikevich" 모델에서는 하나의 뉴런이 두 개의 상태값과 네 개의 속성값을 가지며, 속성값에 따라 생물학적 뉴런과 유사하게 다양한 스파이킹 패턴을 재현할 수 있다.
이와 같은 스파이킹 신경망 모델 중 생물학적으로 정확한(biology-realistic) 호지킨-헉슬리(HH : Hodgkin-Huxley) 모델과 같은 모델은 하나의 뉴런을 계산하는데 240개가 넘는 연산자를 계산하여야 하며, 신경망 갱신 주기도 생물학적인 뉴런의 0.05 밀리 초에 해당하는 주기마다 계산하여야 함으로 계산 양이 방대해지는 단점이 있다.
인공 신경망 내의 뉴런들은 외부로부터 입력값을 받아들이는 입력 뉴런들과 처리한 결과를 외부로 전달하는 역할을 하는 출력 뉴런들, 그리고 나머지 은닉 뉴런들로 구분할 수 있다.
복수의 계층으로 구성되는 복수 계층 네트워크(multi-layer network)에서는 입력 뉴런으로 구성된 입력 계층, 한 개 또는 복수 개의 은닉 계층, 그리고 출력 뉴런으로 구성된 출력 계층이 연속해서 연결되며, 한 계층의 뉴런들은 바로 다음 계층의 뉴런들로만 연결된다.
일반적으로 인공 신경망이 바람직한 결과값을 도출하기 위하여 신경망 내부에서는 연결선 가중치값의 형태로 지식 정보를 저장한다. 인공 신경망의 연결선 가중치값을 조정하여 지식을 축적하는 단계를 학습 모드라 하고, 입력 데이터를 제시하여 저장된 지식을 찾는 단계를 회상 모드라 한다.
학습 모드에서는 하나의 신경망 갱신 주기에 뉴런의 상태값과 출력값뿐만 아니라 연결선의 가중치값이 함께 갱신된다.
가장 일반적으로 사용하는 학습 방법은 헤브(Hebbian)의 이론에서 파생된 방법들이다. 간단히 표현하여, 헤브의 이론은 신경망의 연결선의 강도는 연결선에 입력으로 연결된 연결선 전단(pre-synaptic) 뉴런의 출력값과 연결선을 통해 입력을 받아들이는 연결선 후단(post-synaptic) 뉴런의 값이 둘 다 강할 때 강화되고 그렇지 않을 때 점진적으로 약화된다는 이론이다. 이 학습 방법을 일반화하면, 하기의 [수학식 3]과 같이 표현할 수 있다.
Figure pat00003
여기서, Lj는 뉴런 j의 상태값과 출력값의 계산식으로 계산되는 값으로서, 편의상 학습 상태값이라 부르기로 한다. 학습 상태값은 연결선 특정값이 배제되고 뉴런 특정값만으로 구성되는 특징을 갖는다. 일 예로 전형적인 헤비안 학습 룰(hebbian learning rule)은 하기의 [수학식 4]와 같이 정의된다.
Figure pat00004
여기서, η는 학습 속도를 조절하는 상수값이다. 상기 [수학식 4]에서 학습 상태값 Lj는 η * yj이다. 상기 헤비안 학습 룰 외에도 델타 학습법(delta learning rule)이나 하기의 스파이킹 신경망에서 주로 사용하는 STDP(Spike Timing Dependant Plasticity) 등이 헤브(Hebbian)의 이론에서 파생된 방법의 범주에 속한다.
복수 계층 네트워크의 신경망 모델에서 학습에 많이 사용되는 방법은 역전파(back-propagation) 알고리즘이다. 역전파 알고리즘은 학습 모드에 시스템 외부의 지도자(supervisor)가 특정 입력값에 상응하는 가장 바람직한 출력값, 즉, 학습값을 지정하는 지도 학습(supervised learning) 방법으로서, 하나의 신경망 갱신 주기(update cycle) 내에서 하기의 1 내지 5와 같은 서브 주기(sub-cycle)를 포함한다.
1. 입력 계층의 각각의 입력 뉴런에 입력값을 지정하는 제 1 서브 주기
2. 입력 계층과 연결된 은닉 계층부터 출력 계층까지 순방향으로 뉴런의 새로운 출력값을 계산하는 제 2 서브 주기
3. 출력 계층의 모든 뉴런 각각에 대하여 외부에서 제공된 학습값과 새로 계산된 뉴런의 출력값을 바탕으로 출력 뉴런의 오차값을 구하는 제 3 서브 주기
4. 출력 계층과 연결된 은닉 계층부터 입력 계층에 연결된 은닉 계층까지 역방향으로 제 3 서브 주기에서 구한 오차값을 전파하여 모든 은닉 뉴런이 오차값을 갖도록 하는 제 4 서브 주기. 이때, 은닉 뉴런의 오차값은 역방향으로 연결된 뉴런의 오차값의 합으로 계산된다.
5. 모든 은닉 뉴런과 출력 뉴런 각각의 모든 연결선 각각에 대해 그 연결선에 연결되어 값을 제공하는 연결선 전단(pre-synaptic) 뉴런의 출력값과, 연결선 후단(post-synaptic) 뉴런의 오차값이 반영된 학습 상태값(Lj)을 바탕으로 연결선의 가중치값을 조정하는 제 5 서브 주기. 여기에서 학습 상태값(Lj)을 계산하는 계산식은 역전파 알고리즘 내에서도 다양한 방법에 따라 다를 수 있다.
역전파 알고리즘은 데이터가 신경망의 네트워크의 순방향으로 흐르고 또한 역방향으로 흐르며, 이때 순방향과 역방향 사이에서 연결선의 가중치값이 공유되는 특징을 갖는다.
그런데, 역전파 알고리즘은 계층의 수를 늘려도 성능을 높이는 데에 한계가 있으며, 이를 극복하여 최근에 각광받고 있는 신경망 모델로서 심도신뢰망(deep belief network)이 있다. 심도신뢰망은 복수 개의 RBM(Restricted Boltzmann Machine)이 연속으로 연결된 네트워크를 가진다. 이때, 각각의 RBM이 임의의 수 n, m에 대하여 n개의 가시 계층(visible layer) 뉴런과 m개의 은닉 계층(hidden layer) 뉴런으로 구성되어 각 계층의 모든 뉴런은 같은 계층의 뉴런과는 전혀 연결되지 않고 다른 계층의 모든 뉴런과 연결된 망 구조를 갖는다. 심도신뢰망의 학습 계산은 맨 앞쪽 RBM의 가시 계층의 뉴런의 값을 학습 데이터의 값으로 지정하고 RBM 학습 절차를 실행하여 연결선의 값을 조정하고 은닉 계층의 새로운 값을 도출하며, 앞 단 RBM의 은닉 계층의 뉴런의 값이 그 다음 단 RBM의 가시 계층의 입력 값이 되어 순차적으로 모든 RBM의 계산을 진행한다. 심도신뢰망의 학습 계산은 여러 개의 학습 데이터를 반복적으로 적용하여 연결선의 가중치를 조정하는 방법으로 진행되고, 하나의 학습 데이터를 학습하는 계산 절차는 다음과 같다.
1. 가장 앞쪽 RBM의 가시 계층 뉴런의 값으로 학습 데이터를 지정한다. 그리고 가장 앞쪽 RBM부터 순차적으로 하기의 2 내지 5의 과정을 반복한다.
2. 가시 계층 뉴런의 값의 벡터를 vpos라 하면 vpos를 입력으로 은닉 계층의 모든 뉴런의 값을 계산하고 은닉 뉴런의 모든 뉴런의 값의 벡터를 hpos라 칭한다. 벡터 hpos는 이 RBM의 출력이 된다.(RBM 제 1단계)
3. 역전파 네트워크를 적용하여 벡터 hpos를 입력으로 가시 계층의 모든 뉴런의 값을 계산하여 이 벡터를 vneg라 한다.(RBM 제 2단계)
4. 벡터 vneg를 입력으로 은닉 계층의 뉴런의 값을 다시 계산하고 이 벡터를 hneg라 칭한다.(RBM 제 3단계)
5. 모든 연결선 각각에 대하여 그 연결선에 연결된 가시 계층 뉴런의 vpos의 원소를 vposi, vneg의 원소를 vnegi라 하고, 그 연결선에 연결된 은닉 뉴런의 hpos의 원소를 hposj, hneg의 원소를 hnegj라 할 때 연결선을
Figure pat00005
에 비례한 만큼 더한다.
이와 같은 심도신뢰망은 많은 계산량을 요구하며 계산 과정이 많고 복잡하여 하드웨어로 구현하기 어려우며, 따라서 소프트웨어로 처리하여야 함으로 계산 속도가 느리고 저전력 및 실시간 처리가 용이하지 않은 단점이 있다.
신경망 컴퓨터는 주어진 입력에 가장 적절한 패턴을 찾아내는 패턴 인식이나 선험적 지식을 바탕으로 미래를 예측하는 용도로 활용되어 로봇 제어, 군사용 장비, 의학, 게임, 기상 정보 처리, 및 인간-기계 인터페이스 등과 같은 다양한 분야에 사용될 수 있다.
기존의 신경망 컴퓨터는 크게 직접적(direct) 구현 방법과 가상형(virtual) 구현 방법으로 구분된다. 직접적 구현 방법은 인공 신경망의 논리적 뉴런을 물리적 뉴런에 1대 1로 매핑시켜 구현하는 방식으로, 대부분의 아날로그 신경망칩이 이 범주에 속한다. 이와 같은 직접적 구현 방법은 빠른 처리 속도를 낼 수는 있으나 신경망 모델을 다양하게 적용하기 어렵고 대규모 신경망에 적용이 어려운 단점이 있다.
가상형 구현 방법은 대부분 기존의 폰노이만(von Neumann)형 컴퓨터를 이용하거나 이와 같은 컴퓨터가 병렬로 연결된 다중 프로세서 시스템을 사용하는 방식으로, 다양한 신경망 모델과 대규모 신경망을 실행할 수 있으나 높은 속도를 얻기 어려운 단점이 있다.
전술한 바와 같이, 종래의 직접적 구현 방법은 빠른 처리 속도를 낼 수는 있으나 신경망 모델을 다양하게 적용할 수 없고 대규모 신경망에 적용이 어려운 문제점이 있으며, 종래의 가상형 구현 방법은 다양한 신경망 모델과 대규모 신경망을 실행할 수 있으나 높은 속도를 얻기 어려운 문제점이 있으며, 이러한 문제점을 해결하고자 하는 것이 본 발명의 과제 중 하나이다.
본 발명의 실시예는 전체 구성 요소가 하나의 시스템 클록에 동기화되는 동기화 회로(synchronized circuit)로 동작하고, 인공 신경망 데이터를 저장하는 분산형 메모리 구조와 모든 뉴런을 파이프라인 회로에서 시분할로 처리하는 계산 구조를 포함함으로써, 다양한 신경망 모델과 대규모 신경망의 적용이 가능하면서 동시에 고속 처리가 가능한 신경망 컴퓨팅 장치 및 시스템과 그 방법을 제공한다.
본 발명의 일 실시예에 따른 신경망 컴퓨팅 장치는, 상기 신경망 컴퓨팅 장치를 제어하기 위한 제어 유닛; 듀얼 포트 메모리를 이용하여 각각 연결선 전단(pre-synaptic) 뉴런의 출력값을 출력하기 위한 복수 개의 메모리 유닛; 및 상기 복수 개의 메모리 유닛으로부터 각각 입력되는 연결선 전단 뉴런의 출력값을 이용하여 새로운 연결선 후단(post-synaptic) 뉴런의 출력값을 계산하여 상기 복수 개의 메모리 유닛 각각으로 피드백시키기 위한 하나의 계산 서브시스템을 포함할 수 있다.
본 발명의 일 실시예에 따른 신경망 컴퓨팅 시스템은, 상기 신경망 컴퓨팅 시스템을 제어하기 위한 제어 유닛; 듀얼 포트 메모리를 이용하여 각각 연결선 전단(pre-synaptic) 뉴런의 출력값을 출력하는 복수 개의 메모리 유닛으로 각각 이루어진 복수 개의 네트워크 서브시스템; 및 각각이 상기 복수 개의 네트워크 서브시스템 중 하나에 포함된 상기 복수 개의 메모리 유닛으로부터 입력되는 연결선 전단 뉴런의 출력값을 이용하여 새로운 연결선 후단(post-synaptic) 뉴런의 출력값을 계산하여 상기 복수 개의 네트워크 서브시스템 각각으로 피드백시키기 위한 복수 개의 계산 서브시스템을 포함할 수 있다.
본 발명의 일 실시예에 따른 다중 프로세서 컴퓨팅 시스템은, 상기 다중 프로세서 컴퓨팅 시스템을 제어하기 위한 제어 유닛; 및 각각이 전체 계산량의 일부를 계산하고 타 프로세서와 공유하기 위하여 계산 결과의 일부를 출력하는 복수 개의 프로세서 서브시스템을 포함하되, 상기 복수 개의 프로세서 서브시스템 각각은, 전체 계산량의 일부를 계산하고 상기 타 프로세서와 공유하기 위하여 계산 결과의 일부를 출력하는 하나의 프로세서; 및 상기 프로세서와 타 프로세서 사이의 통신 기능을 수행하는 하나의 메모리 그룹을 포함할 수 있다.
본 발명의 일 실시예에 따른 메모리 장치는, 연결선 전단 뉴런의 참조번호를 저장하기 위한 제 1 메모리; 및 읽기 포트와 쓰기 포트를 구비한 듀얼 포트 메모리로 이루어져, 뉴런의 출력값을 저장하기 위한 제 2 메모리를 포함할 수 있다.
본 발명의 일 실시예에 따른 신경망 컴퓨팅 방법은, 제어 유닛의 제어에 따라, 복수 개의 메모리 유닛 각각이 듀얼 포트 메모리를 이용하여 연결선 전단(pre-synaptic) 뉴런의 출력값을 출력하는 단계; 및 상기 제어 유닛의 제어에 따라, 하나의 계산 서브시스템이 상기 복수 개의 메모리 유닛으로부터 각각 입력되는 연결선 전단 뉴런의 출력값을 이용하여 새로운 연결선 후단(post-synaptic) 뉴런의 출력값을 계산하여 상기 복수 개의 메모리 유닛 각각으로 피드백시키는 단계를 포함하되, 상기 복수 개의 메모리 유닛과 상기 하나의 계산 서브시스템이, 상기 제어 유닛의 제어에 따라 하나의 시스템 클록에 동기화되어 파이프라인 방식으로 동작한다.
본 발명의 실시예에 따르면, 신경망의 네트워크 토폴로지, 뉴런의 수, 연결선의 수에 제약이 없고, 임의의 시냅스 함수와 뉴런 함수가 포함된 다양한 신경망 모델을 실행할 수 있는 효과가 있다.
또한, 본 발명의 실시예에 따르면, 신경망 컴퓨팅 시스템이 동시에 처리할 수 있는 연결선의 수 p를 임의로 정하여 설계할 수 있으며, 매 클록 주기마다 최고 p개의 연결선을 동시에 회상(recall)하거나 학습(train)할 수 있어서 고속 실행이 가능한 장점이 있다.
또한, 본 발명의 실시예에 따르면, 구현 가능한 최고 속도를 떨어뜨리지 않고 연산의 정밀도(precision)를 임의로 높일 수 있는 장점이 있다.
또한, 본 발명의 실시예에 따르면, 시스템당 평균 속도를 저하시키지 않으면서 임의의 복수 개의 시스템을 결합하여 고속의 멀티 시스템을 구축할 수 있는 효과가 있다.
또한, 본 발명의 실시예를 적용하면 대용량 범용 신경망 컴퓨터의 구현이 가능할 뿐만 아니라 소형 반도체에도 집적이 가능하여 다양한 인공 신경망 응용 분야에 적용할 수 있는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 신경망 컴퓨팅 장치의 구성도,
도 2는 본 발명의 일 실시예에 따른 제어 유닛의 상세 구성도,
도 3은 본 발명의 일 실시예에 따른 뉴런과 데이터 흐름을 나타내는 신경망의 예시도,
도 4a 및 도 4b는 본 발명의 일 실시예에 따른 M 메모리에 연결선 전단 뉴런의 참조번호를 분산 저장하는 방법을 설명하기 위한 도면,
도 5는 본 발명의 일 실시예에 따른 제어 신호에 의하여 진행되는 데이터의 흐름을 나타내는 도면,
도 6은 본 발명의 일 실시예에 따른 이중 메모리 교체(SWAP) 회로를 나타내는 도면,
도 7은 본 발명의 일 실시예에 따른 계산 서브시스템의 구성도,
도 8은 본 발명의 일 실시예에 따른 스파이킹 신경망 모델을 지원하는 시냅스 유닛의 구성도,
도 9는 본 발명의 일 실시예에 따른 덴드라이트 유닛의 구성도,
도 10은 본 발명의 일 실시예에 따른 하나의 속성값 메모리의 구성도,
도 11은 본 발명의 일 실시예에 따른 다중시간척도 방식을 사용하는 시스템의 구조를 도시한 도면,
도 12는 본 발명의 일 실시예에 따른 [수학식 3]에서 설명한 바와 같은 학습 방법을 사용하는 신경망을 계산하는 구조를 도시한 도면,
도 13은 본 발명의 다른 실시예에 따른 학습 방법을 사용하는 신경망을 계산하는 구조를 도시한 도면,
도 14는 본 발명의 일 실시예에 따른 메모리 유닛의 일 예시도,
도 15는 본 발명의 일 실시예에 따른 메모리 유닛의 다른 예시도,
도 16은 본 발명의 일 실시예에 따른 메모리 유닛의 또 다른 예시도,
도 17은 본 발명의 일 실시예에 따른 신경망 컴퓨팅 시스템의 일 예시도,
도 18은 본 발명의 일 실시예에 따른 제어 유닛에서의 메모리 제어 신호 생성 방식을 설명하기 위한 도면,
도 19는 본 발명의 다른 실시예에 따른 다중 프로세서 컴퓨팅 시스템의 구성도이다.
도 20a 내지 도 20c는 본 발명의 일 실시예에 따른 시냅스 함수를 어셈블리 코드로 표현하고 어셈블리 코드를 설계 절차에 따라 설계하여 최적화한 결과를 설명하기 위한 도면이다.
본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다. 이하, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다.
그리고 명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때 이는 "직접적으로 연결"되어 있는 경우뿐만 아니라 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한, 어떤 부분이 어떤 구성요소를 "포함" 또는 "구비"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함하거나 구비할 수 있는 것을 의미한다. 또한, 명세서 전체의 기재에 있어서 일부 구성요소들을 단수형으로 기재하였다고 해서, 본 발명이 그에 국한되는 것은 아니며, 해당 구성요소가 복수 개로 이루어질 수 있음을 알 것이다.
도 1은 본 발명의 일 실시예에 따른 신경망 컴퓨팅 장치의 구성도로서, 그 기본적인 상세 구조를 나타내고 있다.
도 1에 도시된 바와 같이, 본 발명의 일 실시예에 따른 신경망 컴퓨팅 장치는, 신경망 컴퓨팅 장치를 제어하기 위한 제어 유닛(100), 각각 연결선의 전단(pre-synaptic) 뉴런의 출력값을 출력(101)하기 위한 복수 개의 메모리 유닛(102), 및 상기 복수 개의 메모리 유닛(102)으로부터 각각 입력(103)되는 연결선 전단(pre-synaptic) 뉴런의 출력값을 이용하여 새로운 연결선 후단(post-synaptic) 뉴런의 출력값을 계산하여 출력(104)을 통해 상기 복수 개의 메모리 유닛(102) 각각의 입력(105)으로 피드백시키기 위한 하나의 계산 서브시스템(106)을 포함한다.
여기서, 각각 제어 유닛(100)과 연결되는 InSel 입력(연결선 묶음 번호, 107)과 OutSel 입력(새로 계산된 뉴런 출력값이 저장될 주소와 쓰기 허용 신호, 108)은 각각 상기 복수 개의 모든 메모리 유닛(102)에 공통으로 연결된다. 상기 복수 개의 메모리 유닛(102)의 출력(101)은 상기 계산 서브시스템(106)의 입력으로 연결된다. 그리고 상기 계산 서브시스템(106)의 출력(시냅스 후단 뉴런의 출력값)은 "HILLOCK" 버스(bus)(109)를 통해 상기 복수 개의 모든 메모리 유닛(102)의 입력에 공통으로 연결된다.
상기 계산 서브시스템(106)의 출력(104)과 상기 복수 개의 모든 메모리 유닛(102)의 입력(105) 사이에는, 제어 유닛(100)의 제어에 따라 제어 유닛(100)으로부터 입력 뉴런의 값이 인입되는 라인(110)과 계산 서브시스템(106)에서 새로 계산된 연결선 후단 뉴런의 출력값이 출력되는 "HILLOCK" 버스(109) 중 하나를 선택하여 각 메모리 유닛(102)으로 연결하는 디지털 스위치(예를 들어 멀티플렉서, 111)를 더 포함할 수 있다. 그리고 계산 서브시스템(106)의 출력(104)은 제어 유닛(100)과 연결되어 뉴런의 출력값을 외부로 전달한다.
각각의 메모리 유닛(102)은, 연결선 전단 뉴런의 참조번호(뉴런의 출력값이 저장되어 있는 하기 Y 메모리의 주소값)를 저장하기 위한 M 메모리(제 1 메모리, 112), 및 뉴런의 출력값을 저장하기 위한 Y 메모리(제 2 메모리, 113)를 포함한다. 상기 Y 메모리(113)는 읽기 포트(114, 115)와 쓰기 포트(116, 117)의 두 개의 포트를 가진 듀얼 포트 메모리로 이루어지며, 상기 제 1 메모리의 데이터 출력(DO : Data Output, 118)이 상기 읽기 포트의 주소 입력(AD : Address Input, 114)으로 연결되고, 읽기 포트의 데이터 출력(115)이 메모리 유닛(102)의 출력(101)으로 연결되며, 쓰기 포트의 데이터 입력(DI : Data Input, 117)이 메모리 유닛(102)의 입력(105)으로 연결되어 다른 메모리 유닛들의 입력과 공통으로 연결된다. 또한, 모든 메모리 유닛(102)의 M 메모리(112)의 주소 입력(AD : Address Input, 119)은 공통으로 묶여 InSel 입력(107)과 연결되고, Y 메모리(113)의 쓰기 포트의 주소 입력(116)과 쓰기 허용(WE : Write Enable, 116)은 상기 OutSel 입력(108)과 공통으로 연결되어 뉴런의 출력 값을 저장하기 위해 사용된다. 따라서 모든 메모리 유닛(102)의 Y 메모리(113)는 모든 뉴런의 출력값을 동일한 내용으로 갖는다.
상기 메모리 유닛(102)의 M 메모리(112)의 데이터 출력(118)과 Y 메모리(113)의 읽기 포트의 주소 입력(114) 사이에는 제 1 레지스터(M 메모리에서 출력되는 시냅스 전단 뉴런(연결선 전단 뉴런)의 참조번호를 임시 저장함, 120)가 더 포함될 수 있다. 상기 모든 제 1 레지스터(120)는 하나의 시스템 클록에 동기화되어 상기 M 메모리(112) 및 Y 메모리(113)의 읽기 포트(114, 115)가 제어 유닛(100)의 제어에 따라 파이프라인 방식으로 동작하도록 한다.
그리고 상기 복수 개의 모든 메모리 유닛(102)의 출력(115)과 상기 계산 서브시스템(106)의 입력(103) 사이에 복수의 제 2 레지스터(Y 메모리로부터의 시냅스 전단 뉴런의 출력값을 임시 저장함, 121)가 더 포함될 수 있다. 또한, 상기 계산 서브시스템(106)의 출력단(104)에 제 3 레지스터(계산 서브시스템에서 출력되는 새로운 뉴런의 출력값을 임시 저장함, 122)가 더 포함될 수 있다. 상기 제 2 및 제 3 레지스터(121, 122)는 하나의 시스템 클록에 의해 동기화되어 상기 복수 개의 메모리 유닛(102)과 상기 하나의 계산 서브시스템(106)이 제어 유닛(100)의 제어에 따라 파이프라인 방식으로 동작하도록 한다.
일반적인 인공 신경망을 계산하기 위하여 상기 신경망 컴퓨팅 장치를 운용하기 위한 방법으로서, 상기 신경망 컴퓨팅 장치는, 복수 개의 메모리 유닛(102)의 M 메모리(112)에 인공 신경망 내의 모든 뉴런의 입력 연결선에 연결된 시냅스 전단 뉴런의 참조번호를 분산 저장하고, 하기의 a 단계 내지 d 단계에 따라 계산 기능을 수행한다.
a. 상기 InSel 입력(107)의 값을 순차적으로 변화시켜, 상기 복수 개의 메모리 유닛(102) 각각의 M 메모리(112)의 주소 입력(119)에 전달하고, 상기 M 메모리(112)의 데이터 출력(118)에 뉴런의 입력 연결선에 연결된 시냅스 전단 뉴런의 참조번호를 순차적으로 출력하는 단계
b. 상기 복수 개의 메모리 유닛(102) 각각의 Y 메모리(113)의 읽기 포트의 데이터 출력(115)에 뉴런의 입력 연결선에 연결된 시냅스 전단 뉴런의 출력값을 순차적으로 출력시켜 상기 메모리 유닛(102)의 출력(101)을 통해 상기 계산 서브시스템(106)의 복수 입력(103)에 입력하는 단계
c. 상기 계산 서브시스템(106)에서 시냅스 후단(post-synaptic) 뉴런의 상태값을 갱신하고 출력값을 순차적으로 계산하는 단계
d. 상기 계산 서브시스템(106)에서 계산한 시냅스 후단(post-synaptic) 뉴런의 출력값을 출력(104)을 통해 출력한 후 상기 복수 개의 메모리 유닛(102) 각각의 입력(105)과 Y 메모리(113)의 쓰기 포트(117)를 통해 순차적으로 저장하는 단계
이때, 상기 신경망 컴퓨팅 장치가 상기 복수 개의 메모리 유닛(102)의 M 메모리(112)에 인공 신경망 내의 모든 뉴런의 입력 연결선에 연결된 시냅스 전단 뉴런의 참조번호를 분산 저장하는 방법은, 하기의 a 과정 내지 f 과정에 따라 수행될 수 있다.
a. 신경망 내에서 가장 많은 수의 입력 연결선을 가진 뉴런의 입력 연결선의 수(Pmax)를 찾는 과정
b. 상기 메모리 유닛(102)의 수를 p라 할 때, 신경망 내의 모든 뉴런이
Figure pat00006
개의 연결선을 갖도록 각각의 뉴런에 어떤 뉴런이 연결되어도 인접 뉴런에 영향을 미치지 않는 가상의 연결선을 추가하는 과정
c. 신경망 내 모든 뉴런을 임의의 순서로 정렬하고 일련번호를 부여하는 과정
d. 모든 뉴런 각각의 연결선을 p개씩 나누어
Figure pat00007
개의 묶음으로 분류하고 묶음들을 임의의 순서로 정렬하는 과정
e. 첫 번째 뉴런의 첫 번째 연결선 묶음부터 마지막 번째 뉴런의 마지막 연결선 묶음까지 순서대로 일련 번호 k를 부여하는 과정
f. 상기 메모리 유닛(102) 중 i번째 메모리 유닛의 M 메모리(112)의 k번째 주소에는 k번째 연결선 묶음의 i번째 연결선에 연결된 시냅스 전단(pre-synaptic) 뉴런의 참조번호 값을 저장하는 과정
상기 복수 개의 메모리 유닛(102)의 Y 메모리(113)는 상기 쓰기 포트(116, 117)가 모든 다른 메모리 유닛의 Y 메모리의 쓰기 포트와 공통으로 연결되기 때문에, 모든 Y 메모리(113)에는 동일한 내용이 저장되며, i번째 주소에 i번째 뉴런의 출력값이 저장된다.
상기와 같이 메모리에 초기값을 저장한 후, 더욱 상세한 시스템의 운용 방법은 다음과 같다. 신경망 갱신 주기를 시작하면 상기 제어 유닛(100)은 상기 InSel 입력(107)에 1부터 시작해서 매 시스템 클록 주기마다 1씩 증가하는 연결선 묶음의 번호값을 공급하고, 신경망 갱신 주기가 시작되고 나서 일정 시스템 클록 주기가 지난 후부터 복수 개의 메모리 유닛(102)의 출력(115)에는 매 시스템 클록 주기마다 특정 연결선 묶음에 포함된 모든 연결선 각각의 시냅스 전단 뉴런의 출력값이 순차적으로 출력된다. 이와 같이 순차적으로 출력되는 연결선 묶음의 순서는 1번 뉴런의 첫 번째 연결선 묶음부터 마지막 연결선 묶음까지, 그리고 그 다음 뉴런의 첫 번째 연결선 묶음부터 마지막 연결선 묶음까지의 순서로 반복되고, 마지막 뉴런의 마지막 연결선 묶음이 출력될 때까지 반복된다.
그리고 계산 서브시스템(106)은 각 메모리 유닛(102)의 출력(101)을 입력으로 받아 뉴런의 새로운 상태값과 출력값을 계산한다. 모든 뉴런이 각각 n개의 연결선 묶음을 가진 경우 신경망 갱신 주기가 시작되고 나서 일정 시스템 클록 주기가 지난 후부터 계산 서브시스템(106)의 입력(103)으로는 각 뉴런의 연결선 묶음의 데이터가 순차적으로 입력되고, 계산 서브시스템(106)의 출력(104)에는 매 n번의 시스템 클록 주기마다 새로운 뉴런의 출력값이 계산되어 출력된다.
도 2는 본 발명의 일 실시예에 따른 제어 유닛의 상세 구성도이다.
도 2에 도시된 바와 같이, 본 발명의 일 실시예에 따른 제어 유닛(200)은, 도 1에서 전술한 바와 같은 신경망 컴퓨팅 장치(201)에 각종 제어 신호를 제공하고 시스템 내 각 메모리의 초기화(202), 실시간 또는 비 실시간 입력 데이터 로딩(203), 실시간 또는 비 실시간 출력 데이터 인출(204) 등의 역할을 수행한다. 그리고 제어 유닛(200)은 호스트 컴퓨터(208)에 연결되어 사용자로부터의 제어를 받을 수 있다.
이때, 제어 회로(205)는 신경망 갱신 주기 내에서 각각의 연결선 묶음과 각각의 뉴런을 순차적으로 처리하기 위해 필요한 모든 제어 신호(206)와 클록 신호(207)를 신경망 컴퓨팅 장치(201)에 제공한다.
그리고 상기 호스트 컴퓨터(208)에 대한 대안으로서, 본 발명의 실시예는 마이크로프로세서 등에 의해 단독(stand-alone)으로 미리 프로그램되어 실시간 입출력을 처리하는 응용 분야에 활용될 수도 있다.
도 3은 본 발명의 일 실시예에 따른 뉴런과 데이터 흐름을 나타내는 신경망의 예시도이다.
도 3에 도시된 일 예는 2개의 입력 뉴런(뉴런 6(300)과 7)과 3개의 은닉 뉴런(뉴런 1(301) 내지 3), 및 2개의 출력 뉴런(뉴런 4(302)와 5)을 포함하여 이루어져 있다. 각각의 뉴런은 고유의 출력값(303)을 가지며, 뉴런과 뉴런을 연결하는 연결선은 고유의 가중치값(304)을 갖는다.
일 예로서 w14(304)는 뉴런 1(301)에서 뉴런 4(302)로 연결된 연결선의 가중치값을 표시하며, 이 연결선의 연결선 전단(pre-synaptic) 뉴런은 뉴런 1(301)이고 연결선 후단(post-synaptic) 뉴런은 뉴런 4(302)이다.
도 4a 및 도 4b는 본 발명의 일 실시예에 따른 M 메모리에 연결선 전단 뉴런의 참조번호를 분산 저장하는 방법을 설명하기 위한 도면으로, 도 3에서 예시한 신경망에 대해, 전술한 메모리 설정 방법에 따라 상기 복수 개의 메모리 유닛(102)의 M 메모리(112)에 인공 신경망 내의 모든 뉴런의 입력 연결선에 연결된 시냅스 전단 뉴런의 참조번호를 분산 저장하는 방법을 예시한 것이다.
전술한 도 3의 신경망에서 가장 많은 입력 연결선을 가진 뉴런은 뉴런 4(302)이고, 입력 연결선의 수는 3 개이다(Pmax = 3). 신경망 내 메모리 유닛의 수를 2개라고 가정하면(p = 2), 모든 은닉 뉴런과 출력 뉴런은 각각이 [3/2]*2 = 4개의 연결선을 갖도록 가상의 연결선을 추가한다(도 4a 참조). 일 예로 뉴런 5는 2 개의 연결선(400)에 2개의 가상 뉴런(401)이 추가된다. 뉴런 각각의 4개씩의 연결선은 2개씩의 묶음으로 일렬로 정렬된다(도 4a 참조). 정렬된 연결선 묶음의 집합에서 첫 번째 열(402)은 첫 번째 메모리 유닛(406)의 M 메모리(403)의 내용으로 저장되고, 두 번째 열(404)은 두 번째 메모리 유닛의 M 메모리(405)의 내용으로 저장된다.
도 4b는 두 개의 메모리 유닛 각각의 내부의 메모리의 내용을 도시한 도면이다. 첫 번째 메모리 유닛(406)의 Y 메모리(407)에는 뉴런의 출력값이 저장된다. 도 4b의 실시 예에서 가상의 연결선은 출력값이 항상 0인 가상의 뉴런 8(408)을 추가하고 모든 가상의 연결선(409)은 상기 가상의 뉴런 8(408)에 연결되는 방법을 사용하였다.
도 5는 본 발명의 일 실시예에 따른 제어 신호에 의하여 진행되는 데이터의 흐름을 나타내는 도면이다.
하나의 신경망 갱신 주기가 시작되면, 제어 유닛(100)에 의해 InSel 입력(410, 500)을 통해 연결선 묶음의 고유 번호가 순차적으로 입력된다. 특정 클록 주기에 InSel 입력(500)에 특정 연결선 묶음의 번호인 k값이 제공되면, 다음 클록 주기에 제 1 레지스터(411, 501)에는 k번째 연결선 묶음의 i번째 연결선에 입력으로 연결된 뉴런의 참조번호가 저장된다.
그 다음 클록 주기가 되면, 상기 메모리 유닛(406)의 출력(407)과 연결된 제 2 레지스터(121, 502)에 k번째 연결선 묶음의 i번째 연결선에 입력으로 연결된 뉴런의 출력값이 저장되고 상기 계산 서브시스템(106)으로 전달된다.
상기 계산 서브시스템(106)에서는 입력된 데이터를 사용하여 계산을 수행하여 새로운 뉴런의 출력값을 순차적으로 계산하여 출력하고, 상기 뉴런의 새로운 출력값은 상기 제 3 레지스터(122)에 임시 저장되며, 상기 "HILLOCK" 버스(109)를 통과하여 상기 각 메모리 유닛(102)의 입력(105, 503)을 통해 상기 Y 메모리(113)에 저장된다.
도 5에서 굵은 선으로 표시된 칸(504)은 뉴런 1의 데이터의 흐름을 구분하여 나타낸 것이다. 신경망 내 모든 뉴런이 모두 계산되고 나면, 하나의 신경망 갱신 주기가 종료되고 다음 차례의 신경망 갱신 주기가 시작될 수 있다.
전술한 본 발명의 일 실시예에서 설명하는 신경망 컴퓨팅 장치는, 계산의 대상이 되는 신경망이 복수 계층 네트워크일 때 추가적인 방법으로서 하기와 같은 방법을 사용할 수 있다.
상기 신경망 컴퓨팅 장치는 하나 또는 복수 개의 은닉 계층과 출력 계층 각각에 대해, 해당 계층 내에 포함되는 뉴런 각각의 입력 연결선에 연결된 뉴런의 참조번호를 상기 복수 개의 메모리 유닛(102)의 M 메모리(제 1 메모리, 112)의 특정 주소 범위에 분산 누적 저장하고, 하기의 a 단계 및 b 단계에 따라 계산 기능을 수행한다.
a. 입력 데이터를 상기 복수 개의 메모리 유닛(102)의 Y 메모리(제 2 메모리, 113)에 쓰기 포트의 데이터 입력(117)을 통해 입력 계층의 뉴런의 값으로 저장하는 단계
b. 상기 은닉 계층과 출력 계층 각각에 대해, 입력 계층에 연결된 계층부터 출력 계층까지 순차적으로 하기의 b1 과정 내지 b4 과정에 따라 계산하는 단계
b1. 상기 복수 개의 메모리 유닛(102)의 M 메모리(제 1 메모리, 112)의 주소 입력(119)의 값을 해당 계층의 주소 범위 내에서 순차적으로 변화시켜, 상기 M 메모리(112)의 데이터 출력(118)에 해당 계층 내의 뉴런의 입력 연결선에 연결된 뉴런의 참조번호를 순차적으로 출력하는 과정
b2. 상기 복수 개의 메모리 유닛(102)의 Y 메모리(113)의 읽기 포트의 데이터 출력(115)에 해당 계층 내의 뉴런의 입력 연결선에 연결된 뉴런의 출력값을 순차적으로 출력하는 과정
b3. 상기 계산 서브시스템(106)에서 해당 계층 내의 모든 뉴런 각각의 새로운 출력값을 순차적으로 계산하는 과정
b4. 상기 계산 서브시스템(106)에서 계산한 뉴런의 출력값을 상기 계산 서브시스템(106)의 출력(104)과 "HILLOCK" 버스(109)를 거쳐 상기 복수 개의 메모리 유닛(102)의 Y 메모리(113)의 쓰기 포트(117)를 통해 순차적으로 저장하는 과정
이때, 상기 신경망 컴퓨팅 장치가 상기 복수 계층 네트워크로 이루어진 신경망을 계산하기 위하여 상기 복수 개의 메모리 유닛(102)의 M 메모리(112)의 특정 주소 범위에 뉴런의 참조번호를 분산 누적 저장하는 보다 구체적인 방법은, 복수 계층 네트워크 내의 하나 또는 복수 개의 은닉 계층과 출력 계층 각각에 대해, 하기의 a 과정 내지 f 과정을 반복적으로 수행하는 방식을 사용할 수 있다.
a. 해당 계층 내에서 가장 많은 수의 입력 연결선을 가진 뉴런의 입력 연결선의 수(Pmax)를 찾는 과정
b. 상기 메모리 유닛의 수를 p라 할 때, 해당 계층 내의 모든 뉴런이
Figure pat00008
개의 연결선을 갖도록 각각의 뉴런에 어떤 뉴런이 연결되어도 인접 뉴런에 영향을 미치지 않는 가상의 연결선을 추가하는 과정
c. 해당 계층 내의 뉴런을 임의의 순서로 정렬하고 일련번호를 부여하는 과정
d. 해당 계층 내의 뉴런 각각의 연결선을 p개씩 나누어
Figure pat00009
개의 묶음으로 분류하고 묶음들을 임의의 순서로 정렬하는 과정
e. 해당 계층 내의 첫 번째 뉴런의 첫 번째 연결선 묶음부터 마지막 번째 뉴런의 마지막 연결선 묶음까지 순서대로 일련 번호 k를 부여하는 과정
f. 상기 메모리 유닛 중 i번째 메모리 유닛의 제 1 메모리의 해당 계층을 위한 특정 주소 영역 범위 내에서 k번째 주소에는 k번째 연결선 묶음의 i번째 연결선에 연결된 뉴런의 참조번호 값을 저장하는 과정
이 경우에는 입력 계층부터 출력 계층까지 단계적으로 이전 계층의 계산 결과(뉴런의 출력값)를 입력으로 하여 계산 기능을 수행하며, 이와 같은 방법으로 하나의 신경망 갱신 주기로 입력에 대응되는 출력 뉴런의 값을 계산할 수 있는 장점이 있다.
한편, 상기 메모리 유닛(102)의 Y 메모리(113)로 사용되며 읽기 포트와 쓰기 포트를 제공하는 듀얼 포트 메모리는, 하나의 메모리를 같은 클록 주기에 동시에 접근할 수 있는 논리회로를 장착한 물리적 듀얼 포트 메모리를 포함할 수 있다.
상기 물리적 듀얼 포트 메모리에 대한 대안으로서, 상기 메모리 유닛(102)의 Y 메모리(113)로 사용되는 듀얼 포트 메모리는, 하나의 물리적 메모리를 서로 다른 클록 주기에 시분할로 접근하는 두 개의 입출력 포트를 포함할 수 있다.
이러한 두 가지 듀얼 포트 메모리에 대한 대안으로서, 상기 메모리 유닛(102)의 Y 메모리(113)로 사용되는 듀얼 포트 메모리는, 도 6에 도시된 바와 같이, 내부에 두 개의 동일한 물리적인 메모리(600, 601)를 구비하고, 상기 제어 유닛(100)으로부터의 제어 신호에 의해 제어되는 복수 개의 디지털 스위치(602 내지 606)를 이용하여 두 개의 동일한 물리적인 메모리(600, 601)의 모든 입출력을 서로 바꾸어 연결하는 이중 메모리 교체(SWAP) 회로로 구현할 수 있다.
도 6의 일 예에서 상기 제어 유닛(100)에 의한 SWAP 신호(607)에 의해 모든 스위치(602 내지 606)가 왼쪽 단자로 연결되면 읽기 포트를 구성하는 R_AD 입력(608)과 R_DO 출력(609)은 제 1 물리적 메모리(600)로 연결되고, 쓰기 포트를 구성하는 W_AD 입력(610)과 W_WE 입력(612), 및 W_DI 입력(611)은 제 2 물리적 메모리(601)로 연결된다. 상기 제어 유닛(100)에 의해 SWAP 신호(607)가 바뀌면 두 개의 메모리(600, 601)는 서로 자리 바꿈을 하게 되고, 논리적으로 두 메모리의 내용이 바뀐 것과 동일한 효과를 내게 된다.
이와 같은 이중 메모리 교체 회로는, 신경망 컴퓨팅 장치가 전체 뉴런의 계산을 완료한 후에 그 결과를 다음 주기에 반영하는 비 오버래핑 갱신 방법(non-overlapping updating)을 사용할 때 효과적으로 이용될 수 있다. 즉, 이중 메모리 교체 회로가 상기 메모리 유닛(102)의 Y 메모리(113)로 사용되는 경우, 한 신경망 갱신 주기가 끝나고 제어 유닛(100)이 SWAP 신호를 변경하면 이전 신경망 갱신 주기에서 Y 메모리(113)의 쓰기 포트(116, 117)를 통해 저장한 내용이 읽기 포트(114, 115)를 통해 접근하는 메모리의 내용으로 순간적으로 바뀌게 된다.
도 7은 본 발명의 일 실시예에 따른 계산 서브시스템의 구성도이다.
도 7에 도시된 바와 같이, 상기 복수 개의 메모리 유닛(102)으로부터 각각 입력(103)되는 연결선 전단(pre-synaptic) 뉴런의 출력값을 이용하여 새로운 연결선 후단(post-synaptic) 뉴런의 출력값을 계산하여 출력(104)을 통해 상기 복수 개의 메모리 유닛(102) 각각의 입력(105)으로 피드백시키기 위한 계산 서브시스템(106, 700)은, 상응하는 상기 복수 개의 메모리 유닛(701)의 출력을 입력받아 시냅스 특정 계산(fS)을 수행하는 복수 개의 시냅스 유닛(702), 상기 복수 개의 시냅스 유닛(702)의 출력을 입력받아 뉴런의 모든 연결선에서 전달되는 입력의 총 합산을 계산하는 하나의 덴드라이트 유닛(703), 상기 덴드라이트 유닛(703)의 출력을 입력받아 뉴런의 상태값을 갱신하고 새로운 출력값을 계산하여 상기 계산 서브시스템(700)의 출력(708)으로 출력하는 소마 유닛(704)을 포함할 수 있다.
상기 시냅스 유닛(702)과 덴드라이트 유닛(703), 및 소마 유닛(704)의 내부 구조는 상기 계산 서브시스템(700)이 계산하는 신경망 모델에 따라 다를 수 있다.
신경망 모델에 따라 다르게 구현될 수 있는 시냅스 유닛(702)의 일 예로서 스파이킹 신경망 모델의 경우를 들 수 있다. 전술한 바와 같이 스파이킹 신경망 모델에서는 1비트의 뉴런의 출력(스파이크)이 시냅스 유닛으로 전달되고, 시냅스 유닛(702)이 시냅스 특정 계산을 수행한다. 이때, 시냅스 특정 계산은 각 시냅스에 특정한 속성값(액손 지연 값)에 따라 특정 신경망 갱신 주기만큼 신호를 지연시키는 액손 지연 기능과 연결선의 가중치를 포함한 연결선의 상태값에 따라 시냅스를 통과하는 신호의 세기를 조절하는 계산 기능으로 이루어진다.
도 8은 본 발명의 일 실시예에 따른 스파이킹 신경망 모델을 지원하는 시냅스 유닛의 구성도이다.
도 8에 도시된 바와 같이, 상기 시냅스 유닛은 각 시냅스에 특정한 속성값(액손 지연 값)에 따라 특정 신경망 갱신 주기만큼 신호를 지연시키는 액손 지연부(800)와 연결선의 가중치를 포함한 연결선의 상태값에 따라 시냅스를 통과하는 신호의 세기를 조절하는 시냅스 포텐셜부(801)로 이루어진다.
여기서, 액손 지연부(800)는 지연 가능한 최대 시간(갱신 주기의 수)을 n이라 할 때, 연결선의 액손 지연 상태값을 저장하는 데이터 폭이 n-1 비트인, 듀얼 포트 메모리로 구현되는, 액손 지연 상태값 메모리(808), 하나의 n비트 시프트 레지스터(802), 하나의 n-to-1 선택기(selector, 803), 및 시냅스의 액손 지연 속성값을 저장하는 액손 지연 속성값 메모리(804)를 포함할 수 있다.
이때, 시냅스 유닛의 입력(707, 805)으로부터의 1-비트 입력과 상기 액손 지연 상태값 메모리(808)의 읽기 포트의 데이터 출력은 각각 상기 시프트 레지스터(802)의 비트 0와 비트 1 내지 비트 (n-1)의 입력으로 연결되고, 상기 시프트 레지스터(802)의 출력 중 하위 n비트는 상기 액손 지연 상태값 메모리(808)의 쓰기 포트의 데이터 입력(807)으로 연결된다. 상기 시프트 레지스터(802)의 n비트 출력은 또한 상기 n-to-1 선택기(803)의 입력으로 연결되며, 상기 액손 지연 속성값 메모리(804)의 출력값에 따라 하나의 비트가 선택되어 상기 n-to-1 선택기(803)의 출력으로 출력된다.
여기서, 상기 액손 지연부(800)의 입력에 1비트의 값(스파이크 발생)이 입력되면, 상기 시프트 레지스터(802)의 0번째 비트에 저장된 후, 상기 액손 지연 상태값 메모리(808)의 쓰기 포트의 데이터 입력(807)을 통해 메모리에 저장된다. 다음 신경망 갱신 주기가 되면, 이 1비트 신호는 상기 액손 지연 상태값 메모리(808)의 읽기 포트의 데이터 출력(806)의 비트 1으로 나타나고 신경망 갱신 주기가 반복될 때마다 한 비트씩 상향되며, 결과적으로 최근 N개의 신경망 갱신 주기의 스파이크 값이 상기 시프트 레지스터(802)의 n비트 출력으로 저장되고 최근 i번 이전의 스파이크는 i번째 비트에 나타나므로, 상기 액손 지연 속성값 메모리(804)가 i의 값을 가지면 상기 n-to-1 선택기(803)의 출력에 i번 이전의 스파이크 값이 출력된다. 이와 같은 액손 지연부(800)의 회로를 사용하면 스파이크가 아무리 빈번하게 발생하더라도 모든 스파이크를 지연시킬 수 있는 장점이 있다.
한편, 일반적으로 시냅스의 신호를 제어하는 시냅스 포텐셜부(801)의 계산은 스파이킹 신경망 모델 내에서도 다양한 계산식이 제안되고 있다. 임의의 시냅스 특정 함수를 파이프라인 회로로 설계할 수 있는 설계 방법론은 후술하기로 한다.
도 9는 본 발명의 일 실시예에 따른 덴드라이트 유닛의 구성도이다.
도 9에 도시된 바와 같이, 대부분의 신경망 모델을 위한 덴드라이트 유닛(703)의 구조는, 복수의 입력값에 대해 하나 이상의 단계로 덧셈 연산을 수행하기 위한 트리 구조의 덧셈 연산부(900)와 상기 덧셈 연산부(900)로부터의 출력값을 누적 연산하기 위한 누산기(901)를 포함할 수 있다.
각 덧셈기 계층 사이와 마지막 덧셈기와 누산기(901) 사이에는 시스템 클록에 의해 동기화되는 레지스터(902 내지 904)를 더 구비하여, 상기 구성요소들이 시스템 클록에 동기화되어 동작하는 파이프라인 회로로 작동할 수 있도록 한다.
소마 유닛(704)의 기능은 덴드라이트 유닛(703)에서 인입되는 뉴런의 순입력(net-input)값과 소마 유닛(704) 내부의 상태값을 인자로 상태값을 갱신하면서 새로운 출력값을 계산하여 출력(708)으로 출력하는 기능을 한다. 뉴런 특정(neuron-specific) 계산은 신경망 모델에 따라 많은 차이가 있을 수 있으므로, 소마 유닛(704)의 구조는 정형화되지 않는다.
상기 시냅스 유닛(702)의 시냅스 특정 계산이나 소마 유닛(704)의 뉴런 특정 계산은 다양한 신경망 모델에서 정형화되지 않을 뿐만 아니라 매우 복잡한 함수를 포함할 수 있다. 이와 같은 경우, 본 발명의 일 실시예에서는 임의의 계산 함수에 대하여 하기와 같은 방법을 사용함으로써, 매 클록 주기마다 하나씩의 입출력을 처리할 수 있는 고속의 파이프라인 회로로 시냅스 유닛(702)이나 소마 유닛(704)을 설계할 수 있다.
(1) 계산 함수를 함수의 하나 또는 복수 개의 입력값, 하나 또는 복수 개의 출력값, 임의의 수의 상태값, 임의의 수의 속성값, 상태값의 초기값, 그리고 계산식으로 정의하는 단계
(2) 상기 계산식을 의사 어셈블리(pseudo-assembly) 코드로 표현하는 단계. 상기 단계 (1)에서 정의한 입력값은 의사 어셈블리 코드의 입력값이 되고, 출력값은 반환값이 된다. 각각의 상태값과 속성값은 대응되는 메모리가 있다고 전제하고 코드의 첫 부분에서는 해당 메모리에서 속성값 및 상태값을 읽고, 코드의 마지막에서는 변경된 상태값을 메모리에 저장한다.
(3) 빈 회로에, 각각이 상기 입력값과 상태값과 속성값에 대응되는 복수 개의 시프트 레지스터로 구성된 시프트 레지스터 그룹을 상기 단계 (2)에서 설계된 어셈블리 코드의 명령어의 수만큼 일렬로 나열하고 연결하는 단계. 이를 레지스터 파일이라 하기로 한다.
(4) 상기 단계 (3)의 회로에 상기 단계 (1)에서 정의한 상태값과 속성값 각각에 대응되는 복수 개의 듀얼 포트 메모리를 상기 레지스터 파일과 나란히 배치하여 추가하고, 각 메모리의 읽기 포트의 데이터 출력을 레지스터 파일의 첫 번째 레지스터 그룹의 대응되는 레지스터의 입력에 연결하고, 레지스터 파일의 마지막 레지스터 그룹의 상태값에 대응되는 레지스터의 출력을 각 상태값 메모리의 쓰기 포트의 데이터 입력으로 각각 연결하는 단계. 외부 입력은 레지스터 파일의 첫 번째 레지스터 그룹의 대응되는 레지스터의 입력에 연결한다.
(5) 레지스터 파일 내에서, 상기 어셈블리 코드 내에서 연산 기능을 수행하는 명령어의 위치에 대응되는 레지스터 그룹과 그 앞의 레지스터 그룹의 사이에 해당 연산 기능에 해당하는 연산기를 추가하는 단계. 필요한 경우 연산기 사이에 임시 레지스터를 더 추가할 수 있다. 추가된 연산기로 인하여 불필요해진 레지스터 사이의 연결은 제거한다.
(6) 불필요한 레지스터를 제거하여 회로를 최적화한다.
상기 설계 절차에 대한 일 예로서 시냅스의 특정 함수가 하기의 [수학식 5]인 경우를 살펴보면 다음과 같다.
Figure pat00010
상기 함수에서는 시간이 지남에 따라 상태값 x가 상태값 x의 크기와 상수 a에 따라 점진적으로 감소한다. 여기에 입력으로 스파이크가 인입되면 상태값 x는 상수 b만큼 순간적으로 증가한다. 상기 시냅스 특정 함수에서 입력값은 1비트의 스파이크(I)이고, 상태값은 x, 속성값은 a와 b이고, 상태값의 초기값은 x = 0이다. 상기 함수를 어셈블리 코드로 표현하면 도 20a에 도시된 바와 같다. 이 어셈블리 코드에는 각각 하나씩의 조건문(2000), 뺄셈(2001), 나눗셈(2002) 및 덧셈(2003)이 포함된다. 이 어셈블리 코드를 상기 설계 절차와 같이 설계한 결과는 도 20b에 도시된 바와 같고, 최적화한 후의 결과는 도 20c에 도시된 바와 같다. 상기 설계된 회로에서 조건문(2000), 뺄셈(2001), 나눗셈(2002) 및 덧셈(2003)은 각각 하나씩의 멀티플렉서(2004), 뺄셈기(2005), 나눗셈기(2006) 및 덧셈기(2007)로 구현되고, 속성값(a, b) 및 상태값(x)을 위한 속성값 메모리(2008)와 상태값 메모리(2009)를 포함한다. 또한, 각각의 시프트 레지스터는 클록에 동기화되어 동작하는 파이프라인 회로로 작동하고, 따라서 모든 단계는 병렬로 실행되며, 클록 주기당 하나의 입력과 출력을 처리하는 계산속도(throughput)를 갖는다.
따라서 상기 시냅스 유닛(702), 소마 유닛(704), 또는 (특수한 경우의) 덴드라이트 유닛(703)의 회로는 상기와 같이 설계한 회로의 조합으로 구현할 수 있다. 이와 같은 회로의 특징은, 임의의 개수의 각각이 듀얼 포트 메모리로 구현된 상태값 메모리, 임의의 개수의 속성값 메모리, 상기 상태값 메모리와 속성값 메모리의 읽기 포트에서 순차적으로 읽은 데이터를 입력의 전부 또는 일부로 취하여 새로운 상태값과 출력값을 순차적으로 계산하고 계산 결과의 전부 또는 일부를 상기 상태값 저장 메모리에 순차적으로 저장하는 파이프라인 회로(계산 회로)로 구현된다는 점이다.
상기 계산 서브시스템(700) 내부의 각 유닛(702, 703, 704)들 사이에는 시스템 클록에 의해 동기화되어 동작하는 레지스터(705, 706)를 더 구비하여, 상기 각 유닛들이 파이프라인 방식으로 작동할 수 있도록 한다.
또한, 상기 계산 서브시스템(700)에 구비된 전체 또는 일부의 유닛 각각의 내부를 구성하는 전체 또는 일부의 구성 요소 사이에 시스템 클록에 의해 동기화되어 동작하는 레지스터를 더 구비하여, 상기 유닛들을 시스템 클록에 동기화되어 동작하는 파이프라인 회로로 구현할 수 있다.
또한, 상기 계산 서브시스템(700)에 구비된 전체 또는 일부의 유닛의 전체 또는 일부의 구성 요소 각각에 대해, 구성 요소 내부 구조를 시스템 클록에 동기화되어 동작하는 파이프라인 회로로 구현할 수 있다.
따라서 계산 서브시스템 전체를 시스템 클록에 동기화되어 동작하는 파이프라인 회로로 설계할 수 있다.
계산 서브시스템에 포함되는 속성값 메모리는 계산이 진행되는 동안에는 읽기만하는 특징을 가진 메모리이다. 일반적으로 시냅스 또는 뉴런의 속성의 변화 범위는 무한하지 않고 유한한 수의 속성 중 하나의 값을 갖는 경우가 많으므로, 계산 서브시스템에 포함되는 속성값 메모리는 도 10에 도시된 방식으로 소요되는 메모리의 총 량을 절감할 수 있다. 이때, 하나의 속성값 메모리는, 복수 개(유한한 수)의 속성값을 저장하고 출력이 계산 회로에 연결되어 속성값을 제공하는 룩업(look-up) 메모리(1000)와 복수 개의 속성값 참조번호를 저장하고 출력이 상기 룩업 메모리(1000)의 주소 입력으로 연결되는 속성값 참조번호 메모리(1001)를 포함하여 구현할 수 있다. 일 예로서 시냅스의 모든 속성의 수는 100이고 속성값의 비트 수는 128비트이면, 1000개의 시냅스 속성을 저장할 때, 전술한 도 10의 방식을 사용하지 않을 때는 128 Kb의 메모리(128*1000)가 소요되나, 전술한 도 10의 방식을 사용하면 총 20 Kb의 메모리(7*1000+100*128)가 소요되어, 메모리의 총 량을 크게 절감할 수 있다.
전술한 바와 같이 HH 신경망 모델과 같은 스파이킹 모델의 경우 뉴런 계산에 많은 계산을 필요하고 생물학적인 뉴런의 시간과 비교하여 짧은 주기마다 갱신하여야 하므로 계산량이 많아지게 된다. 반면에, 시냅스 특정 계산은 짧은 주기의 계산이 불필요하지만 전체 시스템의 갱신 주기를 뉴런 특정 계산에 맞출 경우 시냅스 특정 계산도 많은 계산을 수행하여야 하는 단점이 있다. 이를 해결하기 위한 방식으로 시냅스의 계산 주기와 뉴런의 계산 주기를 다르게 설정하는 다중시간척도(MTS : Multi-Time Scale) 방식을 사용할 수 있다. 이 방식은 시냅스 특정 계산은 뉴런 특정 계산보다 긴 갱신 주기를 가지고, 시냅스 특정 계산을 한번 수행하는 동안 뉴런 특정 계산을 여러 번 수행하는 방식이다.
도 11은 본 발명의 일 실시예에 따른 다중시간척도 방식을 사용하는 시스템의 구조를 도시한 도면이다.
도 11에 도시된 바와 같이, 계산 서브시스템(1100)의 덴드라이트 유닛(1102)과 소마 유닛(1104) 사이에, 서로 다른 신경망 갱신 주기 간에 완충 기능을 수행하는 듀얼포트 메모리(1103)를 추가로 포함하고, 각 메모리 유닛(1106)의 각 Y 메모리는 두 개의 독립적인 메모리(1107, 1108)를 사용하여 전술한 바와 같은 이중교체 메모리로 구현할 수 있다. 한번의 시냅스 특정 계산 주기가 진행되어 뉴런의 순입력 값이 듀얼포트 메모리(1103)에 저장되는 동안 소마 유닛(1104)은 이 듀얼포트 메모리(1103)에서 해당 뉴런의 순입력 값을 여러 번 읽어서 뉴런 특정 계산을 반복적으로 수행한다. 즉, 계산 서브시스템(1100)은 시냅스 유닛(1101) 및 덴드라이트 유닛(1102)에서 계산하는 시냅스 특정 계산의 신경망 갱신 주기와 소마 유닛(1104)에서 계산하는 뉴런 특정 계산의 신경망 주기를 다르게 설정하여 시냅스 특정 계산을 수행하는 신경망 갱신 주기가 1회 진행되는 동안 뉴런 특정 계산을 수행하는 신경망 갱신 주기를 1회 이상 반복적으로 수행한다. 따라서 한번 계산된 순입력 값은 같은 값이 뉴런 특정 계산이 여러 번 진행되는 동안 지속적으로 사용되는 효과가 있다. 또한, 소마 유닛(1104)의 출력, 즉 뉴런의 스파이크는 시냅스 특정 계산이 지속되는 동안 Y 메모리 중 하나의 메모리(1108)에 누적으로 저장되고 시냅스 특정 계산의 계산 주기가 끝나면 Y 메모리의 두 메모리(1107, 1108)는 멀티플렉서 회로에 의해 역할을 자리바꿈하여 누적된 스파이크를 바탕으로 시냅스 특정 계산을 속개할 수 있다.
이와 같은 다중시간척도 방법을 사용하면 시냅스 유닛의 수를 줄일 수 있으며 소마 유닛을 보다 효율적으로 사용함으로써 같은 하드웨어 자원으로 높은 성능을 얻을 수 있는 장점이 있다.
도 12는 본 발명의 일 실시예에 따른 [수학식 3]에서 설명한 바와 같은 학습 방법을 사용하는 신경망을 계산하는 구조를 도시한 도면이다.
도 12에 도시된 바와 같이, 시냅스 유닛(1200)은 연결선의 가중치값을 저장하는 연결선 가중치 메모리를 상태값 메모리의 하나로 구비하고, 학습 상태값을 입력받는 타 입력(1211)을 더 구비한다. 소마 유닛(1201)은 학습 상태값을 출력하는 타 출력(1210)을 더 구비하고, 상기 소마 유닛(1201)의 타 출력(1210)은 모든 시냅스 유닛(1200)의 타 입력(1211)으로 공통으로 연결된다.
상기 신경망 컴퓨팅 장치는 상기 복수 개의 메모리 유닛(102, 1202)의 M 메모리(112)에 신경망 내의 모든 뉴런 각각의 입력 연결선에 연결된 뉴런의 참조번호를 분산 저장하고, 상기 복수 개의 시냅스 유닛(1200)의 연결선 가중치 메모리에 모든 뉴런 각각의 입력 연결선의 연결선 가중치의 초기값으로 저장하고, 하기의 a 단계 내지 f 단계에 따라 학습 계산 기능을 수행할 수 있다.
a. 상기 복수 개의 메모리 유닛(1202)에서 모든 뉴런 각각의 입력 연결선에 연결된 뉴런의 값을 순차적으로 출력하는 단계
b. 상기 시냅스 유닛(1200)은 일 입력(1203)을 통해 메모리 유닛(1202)에서 순차적으로 전달된 입력 뉴런의 출력값과 상기 연결선 가중치 메모리의 출력에서 순차적으로 전달된 연결선 가중치값을 입력으로 새로운 연결선 출력값을 순차적으로 계산하여 상기 시냅스 유닛의 출력(1204)으로 출력하는 단계
c. 상기 덴드라이트 유닛(1205)은 상기 복수 개의 입력으로 이루어진 입력(1206)을 통해 상기 복수 개의 시냅스 유닛의 출력(1204)에서 순차적으로 입력을 받고 뉴런의 모든 연결선에서 전달되는 입력의 총 합산을 순차적으로 계산하여 출력(1207)을 통해 출력하는 단계
d. 상기 소마 유닛(1201)은 입력(1208)을 통해 상기 덴드라이트 유닛의 출력(1207)에서 뉴런의 입력값을 순차적으로 입력받고 뉴런의 상태값을 갱신하고 새로운 출력값을 순차적으로 계산하여 일 출력(1209)을 통해 출력값을 순차적으로 출력하고, 동시에 상기 입력값과 상기 상태값을 바탕으로 새로운 학습 상태값(Lj)을 순차적으로 계산하여 타 출력(1210)으로 순차적으로 출력하는 단계
e. 상기 복수 개의 시냅스 유닛(1200) 각각은 타 입력(1211)을 통해 순차적으로 전달되는 학습 상태값(Lj)과 일 입력(1203)을 통해 순차적으로 전달되는 입력 뉴런의 출력값과 상기 연결선 가중치 메모리의 출력에서 순차적으로 전달된 연결선 가중치값을 입력으로 하여 새로운 연결선 가중치값을 순차적으로 계산하여 연결선 가중치 메모리에 저장하는 단계
f. 상기 소마 유닛(1201)의 일 출력(1209)으로 출력되는 값을 상기 복수 개의 메모리 유닛(1202)의 Y 메모리의 쓰기 포트를 통해 순차적으로 저장하는 단계
이때, 상기 학습 계산 방법에서는 입력 뉴런의 출력값 및 연결선 가중치값과 상기 소마 유닛(1201)의 타 출력(1210)사이에 시간 차가 발생하며, 이를 해결하기 위해 상기 복수 개의 시냅스 유닛(1200)의 타 입력(1211)이 공통으로 연결된 입력 사이에서, 학습 상태값을 임시로 저장하여 타이밍을 조절하는 역할을 하는, 듀얼 포트 메모리로 구현된, 학습 상태값 메모리(1212)를 더 포함할 수 있다. 이 경우, 시냅스 유닛(1200)의 일 입력(1203)을 통해 순차적으로 전달되는 입력 뉴런의 출력값과 상기 연결선 가중치 메모리의 출력에서 순차적으로 전달된 연결선 가중치값이 발생한 시점에 학습 계산이 이루어지며, 타 입력(1211)을 통해 순차적으로 전달되는 학습 상태값(Lj)은 이전 신경망 갱신 주기에 소마 유닛(1201)에서 계산되어 학습 상태값 메모리(1212)에 저장된 값이 사용된다.
이에 대한 대안으로서 도 13에 도시된 바와 같이, 하기의 a 단계 내지 f 단계에 따라 학습 계산 기능을 수행할 수 있다.
a. 복수 개의 메모리 유닛(1303)에서 모든 뉴런 각각의 입력 연결선에 연결된 뉴런의 값을 순차적으로 출력하는 단계
b. 시냅스 유닛(1300)은 일 입력을 통해 메모리 유닛(1303)에서 순차적으로 전달된 입력 뉴런의 출력값과 연결선 가중치 메모리(1304)의 출력에서 순차적으로 전달된 연결선 가중치값을 입력으로 새로운 연결선 출력값을 순차적으로 계산하여 상기 시냅스 유닛(1300)의 출력으로 출력하고, 동시에 상기 입력 뉴런의 출력값과 상기 연결선 가중치 메모리(1304)의 출력에서 순차적으로 전달된 연결선 가중치값을 두 개의 선입선출 큐(1305, 1306)에 각각 입력하는 단계
c. 덴드라이트 유닛(1301)은 복수 개의 입력으로 이루어진 입력을 통해 상기 복수 개의 시냅스 유닛(1300)의 출력에서 순차적으로 입력을 받고, 뉴런의 모든 연결선에서 전달되는 입력의 총 합산을 순차적으로 계산하여 출력을 통해 출력하는 단계
d. 소마 유닛(1302)은 입력을 통해 상기 덴드라이트 유닛(1301)의 출력에서 뉴런의 입력값을 순차적으로 입력받고 뉴런의 상태값을 갱신하고 새로운 출력값을 순차적으로 계산하여 일 출력을 통해 출력값을 순차적으로 출력하고, 동시에 상기 입력값과 상기 상태값을 바탕으로 새로운 학습 상태값(Lj)을 순차적으로 계산하여 타 출력(1308)으로 순차적으로 출력하는 단계
e. 상기 복수 개의 시냅스 유닛(1300) 각각은 타 입력(1308)을 통해 순차적으로 전달되는 학습 상태값(Lj)과 두 개의 큐(1305, 1306)의 출력에서 각각 큐에 의해서 지연된 입력 뉴런의 출력값과 연결선 가중치값을 입력으로 하여 새로운 연결선 가중치값을 순차적으로 계산(1307)하여 연결선 가중치 메모리(1304)에 저장하는 단계
f. 상기 소마 유닛(1302)의 일 출력으로 출력되는 값을 상기 복수 개의 메모리 유닛(1202)의 Y 메모리의 쓰기 포트를 통해 순차적으로 저장하는 단계
이 방법을 사용하면 학습에 사용되는 모든 데이터가 현재 갱신 주기에 발생된 데이터를 사용하여 계산을 할 수 있다.
상기 역전파(back-propagation) 알고리즘과 같이, 같은 연결선에 대하여 순방향 계산과 역방향 계산이 동시에 적용되는 양방향 연결선(bidirectional connection)을 포함하는 신경망을 계산하기 위한 방법으로서, 상기 신경망 컴퓨팅 장치가 상기 복수 개의 메모리 유닛(102) 내의 M 메모리(112)와, 상기 복수 개의 시냅스 유닛의 상태값 메모리 및 속성값 메모리에 데이터를 저장하는 과정은, 하기의 a 과정 내지 d 과정에 따라 실행될 수 있다.
a. 모든 양방향 연결선 각각에 대해, 순방향의 입력을 제공하는 뉴런을 A, 순방향의 입력을 제공받는 뉴런을 B라 할 때, 뉴런 B에서 뉴런 A로 연결되는 새로운 역방향 연결선을 순방향 네트워크에 추가하여 펼친 네트워크를 구성하는 과정
b. 상기 복수 개의 메모리 유닛과 상기 복수 개의 시냅스 유닛에 상기 펼친 네트워크 내의 모든 뉴런 각각의 입력 연결선 정보를 분산 저장하는 방법으로서, 연결선 배치 알고리즘을 사용하여 각각의 양방향 연결선의 순방향 연결선과 역방향 연결선을 같은 메모리 유닛과 시냅스 유닛에 배치하는 과정
c. 상기 복수 개의 시냅스 유닛 각각에 포함되는 임의의 상태값 메모리와 속성값 메모리 각각의 k번째 주소에는, 해당 연결선이 순방향 연결선일 때, 해당 연결선의 연결선 상태값과 연결선 속성값을 각각 저장하는 과정
d. 상기 복수 개의 시냅스 유닛의 상태값 메모리와 속성값 메모리에 저장된 연결선의 상태값 및 속성값에 접근할 때, k번째 연결선이 순방향 연결선이면 해당 상태값 메모리와 속성값 메모리에 저장된 k번째 주소에 접근하고, 역방향 연결선이면 해당 역방향 연결선에 대응되는 순방향 연결선의 상태값과 속성값에 접근하여 순방향 연결선과 역방향 연결선이 같은 상태값과 속성값을 공유하는 과정
도 14는 본 발명의 일 실시예에 따른 메모리 유닛의 일 예시도이다.
복수 개의 메모리 유닛(102, 1400) 각각이 상기 시냅스 유닛(1401)의 상태값 메모리(1402)와 속성값 메모리(1403)에 접근할 때, 해당 연결선이 역방향 연결선인 경우에는 해당 역방향 연결선에 대응되는 순방향 연결선의 상태값과 속성값에 접근하게 하기 위한 방법을 살펴보면, 도 14에 도시된 바와 같이, 복수 개의 메모리 유닛(1400) 각각은, 역방향 연결선에 대응되는 순방향 연결선의 참조번호를 저장하는 역방향 연결선 참조번호 메모리(1404), 및 상기 제어 유닛(100)에 의해 제어되고, 상기 제어 유닛(100)의 제어신호와 상기 역방향 연결선 참조번호 메모리(1404)의 데이터 출력 중 하나를 선택하여 상기 메모리 유닛(1400)의 출력(1405)을 통해 상기 시냅스 유닛(1401)으로 연결하며, 연결선의 상태값과 속성값을 순차적으로 선택하기 위해 사용되는 디지털 스위치(1406)를 더 포함할 수 있다. 이 경우 연결선이 순방향 연결선일 때는 역방향 연결선 참조번호 메모리를 경유하지 않고 제어 유닛에서 직접 제어신호가 제공된다.
위의 b과정에서, 신경망 내 포함되는 각각의 양방향 연결선에 대해, 순방향 연결선의 데이터가 저장되는 메모리 유닛의 위치와 역방향 연결선의 데이터가 저장되는 메모리 유닛의 위치가 같도록 연결선을 배치시키기 위한 연결선 배치 알고리즘은, 그래프에서 호의 색칠 알고리즘(edge coloring algorithm)을 사용하여, 신경망에서 모든 양방향 연결선을 그래프에서 호(edge)로 표현하고, 신경망에서 모든 뉴런을 그래프에서 노드(node)로 표현하며, 신경망에서 연결선이 저장되는 메모리 유닛의 번호를 그래프에서 색(color)으로 표현하여, 순방향과 역방향 연결선을 같은 메모리 유닛의 번호에 배치하는 방법을 사용할 수 있다. 이 경우 호의 양쪽에 같은 색을 지정하고 해당 호와 연결되는 양쪽의 뉴런의 다른 호들은 같은 색깔이 지정되지 않도록 하는 호의 색칠 알고리즘은, 특정 연결선의 순방향 연결선과 역방향 연결선이 같은 메모리 유닛 번호가 지정되도록 하는 문제와 본질적으로 같게 된다. 따라서 호의 색칠 알고리즘을 연결선 배치 알고리즘으로 사용할 수 있다.
상기와 같은 목적으로서, 계산의 대상이 되는 신경망의 구조는, 모든 양방향 연결선이 두 계층 사이에서 완전한 이분 그래프(Complete Bipartite Graph)에 포함될 때, 즉, 순방향과 역방향 연결선이 공유되는 연결선이 두 뉴런 그룹 사이를 연결하고 한 그룹의 모든 뉴런이 다른 그룹의 모든 뉴런과 각각 연결되는 경우에 각각의 양방향 연결선이 한 그룹의 i번째 뉴런에서 다른 그룹의 j번째 뉴런과 연결될 때, 상기 호의 색칠 알고리즘을 사용하는 대신에, 해당 순방향 연결선과 역방향 연결선을 각각 (i+j) mod p 번째 메모리 유닛의 번호에 배치하는 보다 간단한 방법을 사용할 수 있다. (i+j) mod p는 순방향과 역방향 각각이 동일한 값을 가지므로 같은 메모리 유닛의 번호가 지정된다.
도 15는 본 발명의 일 실시예에 따른 메모리 유닛의 다른 예시도이다.
도 15에 도시된 바와 같이, 복수 개의 메모리 유닛(102, 1500) 각각은, 연결선에 연결된 뉴런의 참조번호를 저장하기 위한 M 메모리(1501), 읽기 포트와 쓰기 포트의 두 개의 포트를 가진 듀얼 포트 메모리로 이루어진 Y1 메모리(1502), 읽기 포트와 쓰기 포트의 두 개의 포트를 가진 듀얼 포트 메모리로 이루어진 Y2 메모리(1503), 상기 제어 유닛(100)으로부터의 제어 신호에 의해 제어되고 상기 Y1 메모리(1502)와 Y2 메모리(1503)의 모든 입출력을 서로 바꾸어 연결하는 복수 개의 디지털 스위치로 이루어진 이중 메모리 교체(SWAP) 회로(1504)를 포함할 수 있다.
상기 이중 메모리 교체 회로(1504)가 형성하는 첫 번째 논리적 듀얼 포트(1505)는 읽기 포트의 주소 입력(1506)이 상기 M 메모리(1501)의 출력과 연결되고 읽기 포트의 데이터 출력(1507)이 메모리 유닛(1500)의 출력이 되며, 쓰기 포트의 데이터 입력(1508)이 다른 메모리 유닛들의 첫 번째 논리적 듀얼 포트의 쓰기 포트의 데이터 입력과 공통으로 연결되어 새롭게 계산한 뉴런 출력을 저장하기 위한 용도로 사용되고, 상기 이중 메모리 교체 회로(1504)가 형성하는 두 번째 논리적 듀얼 포트(1509)는 쓰기 포트의 데이터 입력(1510)이 다른 메모리 유닛들의 두 번째 논리적 듀얼 포트의 쓰기 포트의 데이터 입력과 공통으로 연결되어 다음 신경망 갱신 주기에 사용될 입력 뉴런의 값을 저장하기 위해 사용될 수 있다.
이와 같은 구조를 사용하면 전체 신경망 갱신 주기 동안에 계산과 입력 데이터의 저장을 병렬로 수행할 수 있는 장점이 있다. 이 방법은 통상 다중 계층 신경망의 일반적인 특징이라 할 수 있는 입력 뉴런의 수가 많은 경우에 효과적으로 사용할 수 있다.
도 16은 본 발명의 일 실시예에 따른 메모리 유닛의 또 다른 예시도이다.
도 16에 도시된 바와 같이, 복수 개의 메모리 유닛(102, 1600) 각각은, 연결선에 연결된 뉴런의 참조번호를 저장하기 위한 M 메모리(1601), 읽기 포트와 쓰기 포트의 두 개의 포트를 가진 듀얼 포트 메모리로 이루어진 Y1 메모리(1602), 읽기 포트와 쓰기 포트의 두 개의 포트를 가진 듀얼 포트 메모리로 이루어진 Y2 메모리(1603), 상기 제어 유닛(100)으로부터의 제어 신호에 의해 제어되고 상기 Y1 메모리(1602)와 Y2 메모리(1603)의 모든 입출력을 서로 바꾸어 연결하는 복수 개의 디지털 스위치로 이루어진 이중 메모리 교체(SWAP) 회로(1604)를 포함하되, 상기 이중 메모리 교체 회로(1604)가 형성하는 첫 번째 논리적 듀얼 포트(1605)는 읽기 포트의 주소 입력(1606)이 상기 M 메모리(1601)의 출력과 연결되고 읽기 포트의 데이터 출력(1607)이 메모리 유닛(1600)의 일 출력이 되며, 쓰기 포트의 데이터 입력(1608)이 다른 메모리 유닛들의 첫 번째 논리적 듀얼 포트의 쓰기 포트의 데이터 입력과 공통으로 연결되어 새롭게 계산한 뉴런 출력을 저장하기 위한 용도로 사용되고, 상기 이중 메모리 교체 회로가 형성하는 두 번째 논리적 듀얼 포트(1609)는 읽기 포트의 주소 입력(1610)이 상기 M 메모리(1601)의 출력과 연결되고, 읽기 포트의 데이터 출력(1611)이 메모리 유닛(1600)의 타 출력으로 연결되어 이전 신경망 갱신 주기의 뉴런의 출력값을 출력할 수 있다.
따라서 이 구조는 이전 신경망 주기의 뉴런 출력값과 현재 신경망 주기의 뉴런 출력값을 동시에 출력할 수 있으며, 신경망 계산 모델이 신경망 갱신 주기 T의 뉴런 출력과 신경망 갱신 주기 T-1의 뉴런 출력이 동시에 필요한 경우에 효과적으로 사용할 수 있다.
전술한 도 15의 방법과 도 16의 방법을 함께 사용할 수도 있다(도면에 도시되지 않음). 이때, 복수 개의 메모리 유닛 각각은, 연결선에 연결된 뉴런의 참조번호를 저장하기 위한 M 메모리, 읽기 포트와 쓰기 포트의 두 개의 포트를 가진 듀얼 포트 메모리로 이루어진 Y1 메모리, 읽기 포트와 쓰기 포트의 두 개의 포트를 가진 듀얼 포트 메모리로 이루어진 Y2 메모리, 읽기 포트와 쓰기 포트의 두 개의 포트를 가진 듀얼 포트 메모리로 이루어진 Y3 메모리, 상기 제어 유닛으로부터의 제어 신호에 의해 제어되고 상기 Y1 메모리 내지 Y3 메모리의 모든 입출력을 순차적으로 바꾸어 연결하는 복수 개의 디지털 스위치로 이루어진 삼중 메모리 교체(SWAP) 회로를 포함할 수 있다.
상기 삼중 메모리 교체 회로가 형성하는 첫 번째 논리적 듀얼 포트는 쓰기 포트의 데이터 입력이 다른 메모리 유닛들의 첫 번째 논리적 듀얼 포트의 쓰기 포트의 데이터 입력과 공통으로 연결되어 다음 신경망 갱신 주기에 사용될 입력 뉴런의 값을 저장하기 위해 사용되고, 상기 삼중 메모리 교체 회로가 형성하는 두 번째 논리적 듀얼 포트는 읽기 포트의 주소 입력이 상기 M 메모리의 출력과 연결되고 읽기 포트의 데이터 출력이 메모리 유닛의 일 출력이 되며, 쓰기 포트의 데이터 입력이 다른 메모리 유닛들의 두 번째 논리적 듀얼 포트의 쓰기 포트의 데이터 입력과 공통으로 연결되어 새롭게 계산한 뉴런 출력을 저장하기 위한 용도로 사용되고, 상기 삼중 메모리 교체 회로가 형성하는 세 번째 논리적 듀얼 포트는 읽기 포트의 주소 입력이 상기 M 메모리의 출력과 연결되고, 읽기 포트의 데이터 출력이 메모리 유닛의 타 출력으로 연결되어 이전 신경망 갱신 주기의 뉴런의 출력값을 출력한다.
이 방식은 전술한 도 15와 도 16에 도시한 방법을 혼합한 것으로, 입력 데이터의 입력과, 계산의 수행, 그리고 이전 뉴런의 값을 통한 학습 과정이 동시에 발생하는 경우에 사용할 수 있다.
본 발명의 일 실시예에서 역전파 신경망 알고리즘을 계산하는 방법은, 상기 시냅스 유닛은 연결선의 가중치값을 저장하는 연결선 가중치 메모리를 상태값 메모리의 하나로 구비하고, 학습 상태값을 입력받는 타 입력을 더 구비하며, 상기 소마 유닛은 내부에 학습 임시값을 임시로 저장하기 위한 학습 임시값 메모리와, 학습 데이터를 입력받기 위한 타 입력과, 학습 상태값을 출력하는 타 출력을 더 구비하고, 상기 계산 서브시스템은 학습 상태값을 임시로 저장하여 타이밍을 조절하는 역할을 하고, 상기 소마 유닛의 타 출력에서 입력부로 연결되고, 상기 시냅스 유닛의 타 입력이 공통으로 연결되어 출력부로 연결되는 학습 상태값 메모리를 더 포함한다.
역전파 신경망 학습 알고리즘을 계산하는 방법으로서, 상기 신경망 컴퓨팅 장치는 순방향 네트워크의 하나 또는 복수 개의 은닉 계층과 출력 계층 각각과 역방향 네트워크의 하나 또는 복수 개의 은닉 계층 각각에 대해, 해당 계층 내에 포함되는 뉴런 각각의 입력 연결선에 연결된 뉴런의 참조번호를 상기 복수 개의 메모리 유닛의 제 1 메모리의 특정 주소 범위에 분산 저장하고, 상기 복수 개의 시냅스 유닛의 연결선 가중치 메모리에 모든 뉴런 각각의 입력 연결선의 연결선 가중치의 초기값을 저장하고, 하기의 a 단계 내지 e 단계에 따라 계산 기능을 수행할 수 있다.
a. 입력 데이터를 상기 복수 개의 메모리 유닛의 Y 메모리에 입력 계층의 뉴런의 값으로 저장하는 단계
b. 복수 계층 순방향 계산을 입력 계층에 연결된 계층부터 출력 계층까지 순차적으로 진행하는 단계
c. 출력 계층의 각 뉴런에 대해 상기 소마 유닛에서 타 입력을 통해 입력된 학습 데이터와 새로 계산된 뉴런의 출력값의 차이, 즉, 에러 값을 계산하는 단계
d. 상기 한 개 또는 복수 개의 은닉 계층의 역방향 네트워크의 각각의 계층에 대해, 출력 계층에 연결된 계층부터 입력 계층에 연결된 계층까지의 순차적으로 에러 값의 전파를 수행하는 단계
e. 상기 한 개 또는 복수 개의 은닉 계층과 하나의 출력 계층 각각에 대해, 입력 계층에 연결된 계층부터 출력 계층까지 각 뉴런에 연결된 연결선의 가중치값을 조정하는 단계
이때, 상기 복수 개의 메모리 유닛의 제 2 메모리는, 도 15를 참조하여 전술한 바와 같이, 두 개의 듀얼 포트 메모리와 이중 메모리 교체 회로에 의한 두 개의 논리적 듀얼 포트 메모리를 구비하고, 다음 신경망 갱신 주기에 사용할 입력 데이터를 두 번째 논리적 듀얼 포트 메모리에 미리 저장하여, 위의 a 단계와 b-e 단계를 병렬로 수행할 수 있다.
상기 계산 서브시스템(106) 내 소마 유닛(704)은, 위의 b 단계 수행 시 학습 임시값을 계산하고 향후 학습 상태값(Lj) 계산 시점까지 임시 보관을 위하여 상기 학습 임시값 메모리에 저장한다.
상기 계산 서브시스템(106) 내 소마 유닛(704)은, 위의 c 단계의 출력 뉴런의 에러 값을 계산하는 단계를 위의 b 단계의 순방향 전파 단계에서 함께 수행하여 계산 시간을 단축할 수 있다.
상기 계산 서브시스템(106) 내 소마 유닛(704)은, 위의 c 단계와 d 단계에서 각각 뉴런의 에러 값을 계산한 후에 학습 상태값(Lj)을 계산하여 타 출력을 통해 출력하여 상기 학습 상태값 메모리에 저장하고, 상기 학습 상태값 메모리에 저장된 학습 상태값(Lj)은 위의 e 단계에서 연결선의 가중치값(Wij)을 계산하기 위해 사용할 수 있다.
상기 복수 개의 메모리 유닛(102)의 Y 메모리는, 도 16을 참조하여 전술한 바와 같이, 두 개의 듀얼 포트 메모리와 이중 메모리 교체 회로에 의한 두 개의 논리적 듀얼 포트 메모리를 구비하고, 두 번째 논리적 듀얼 포트 메모리는 이전 신경망 갱신 주기의 뉴런의 출력값을 상기 메모리 유닛의 타 출력으로 출력하여, 위의 e 단계와 다음 신경망 갱신 주기의 상기 b 단계를 동시에 수행하여 계산 시간을 단축할 수 있다.
본 발명의 일 실시예에서 심도신뢰망의 학습 계산을 수행하는 방법은, RBM 각각의 상기 RBM 제 1, 2, 3 단계 각각에 대해, 해당 단계 내에 포함되는 뉴런 각각의 입력 연결선에 연결된 뉴런의 참조번호를 복수 개의 메모리 유닛의 제 1 메모리의 특정 주소 범위에 분산 누적 저장하고, 제 2단계의 역방향 연결선 정보를 역방향 연결선 참조번호 메모리에 누적 저장하고, 복수 개의 시냅스 유닛의 연결선 가중치 메모리에 모든 뉴런 각각의 입력 연결선의 연결선 가중치의 초기값을 누적 저장하고, 제 2 메모리의 영역을 3등분하여 영역 Y(1), Y(2), Y(3)라 칭하고, 하나의 학습 데이터를 학습하는 계산 절차는 하기의 a 단계 내지 c 단계에 따라 계산 기능을 수행할 수 있다.
a. Y(1)에 학습 데이터를 저장하는 단계. 학습 데이터는 전술한 심도신뢰망 설명에서 vpos가 된다.
b. 변수 S=1, D=2로 설정하는 단계
c. 신경망 내 RBM 각각에 대하여 하기의 c1 과정 내지 c6 과정을 수행하는 단계
c1. 계산 서브시스템은 메모리 유닛의 제 2 메모리의 Y(S)영역을 입력으로 하고 상기 RBM 제 1 단계의 계산을 수행하여 계산 결과(hpos)를 메모리 유닛의 제 2 메모리의 Y(D) 영역에 저장하는 과정
c2. 메모리 유닛의 제 2 메모리의 Y(D) 영역을 입력으로 하고 상기 RBM 제 2 단계의 계산을 수행하여 계산 결과를 Y(3)에 저장하는 과정
c3. 메모리 유닛의 제 2 메모리의 Y(3) 영역을 입력으로 하고 상기 RBM 제 2 단계의 계산을 수행하는 과정. 이때, 계산 결과는 메모리 유닛의 제 2 메모리에 저장되지 않는다.
c4. 모든 연결선의 값을 조정하는 과정
c5. 변수 S와 D의 값을 서로 바꾸는 과정
c6. 현재 RBM이 마지막 RBM이면 Y(1)에 다음 학습 데이터를 저장하는 과정
상기 c3 과정 내지 c6 과정은 하나의 과정에서 동시에 수행될 수 있다.
이러한 방법을 사용하면 하나의 RBM에서 hpos 벡터는 다음 RBM에서 가시 계층의 입력 값이 되며, 3개의 Y 메모리 영역으로 RBM의 수에 관계없이 계산을 수행할 수 있어서 사용하는 메모리 용량을 절약할 수 있는 장점이 있다.
상기 심도신뢰망과 같이 복잡한 계산 절차에서는 메모리 유닛의 각 메모리나 시냅스 유닛의 상태값 메모리에 여러 단계의 데이터가 누적되어 계층을 이루며 저장되고, 각 계산 단계에서는 그 계층 중 하나의 영역만을 사용하므로 하드웨어에 의한 제어가 극도로 어려워지는 문제가 있다. 이를 해결하기 위한 방법으로서 이들 메모리의 주소 입력에 오프셋을 계산하는 회로를 추가하여 메모리의 접근 범위가 오프셋의 설정에 따라 달라지도록 하는 방법이 있다. 제어 유닛은 매 단계가 시작될 때마다 각 메모리의 오프셋 값을 변화시킴으로써 접근하는 메모리 영역을 바꿀 수 있다. 즉, 신경망 컴퓨팅 장치는, 메모리 유닛 또는 계산 서브시스템 내의 하나 또는 복수 개의 메모리 각각의 주소 입력단에, 접근하는 주소값에 지정된 오프셋 값만큼 더한 값이 메모리의 주소로 지정되도록 하여 상기 제어 유닛이 메모리의 접근 범위를 쉽게 변경할 수 있게 하는 오프셋 회로를 더 포함한다.
상기 심도신뢰망과 같이 신경망 모델의 계산 절차가 복잡해짐에 따라 시스템의 제어가 여러 단계의 복잡한 계산 절차를 수반할 때, 제어 유닛은 제어를 용이하게 하기 위하여 제어 단계 각각의 제어신호 생성에 필요한 정보를 포함하는 절차운용표(SOT : Stage Operation Table)를 구비하고, 각 제어 단계마다 절차운용표의 레코드를 하나씩 읽어 시스템 운용에 활용할 수 있다. 절차운용표는 복수 개의 레코드로 구성되고, 각 레코드는 각 메모리의 오프셋, 네트워크의 크기 등 하나의 계산 절차의 수행에 필요한 다양한 시스템 파라미터를 포함한다. 이들 레코드 중 일부는 다른 레코드의 식별자가 포함되어 GO TO문의 역할을 할 수 있다. 시스템은 각 단계를 시작할 때 절차운용표의 현재 레코드에서 시스템 파라미터를 읽어서 시스템을 설정하고 현재 레코드 포인터를 순차적으로 다음 레코드로 이동한다. 현재 레코드가 GO TO문이면 순차적인 레코드로 이동하지 않고 레코드에 포함된 레코드 식별자로 이동한다.
다음으로, 복수 개의 신경망 컴퓨팅 장치를 결합하여 더 높은 성능의 계산을 수행하기 위한 신경망 컴퓨팅 시스템에 대하여 살펴보면 다음과 같다.
도 17은 본 발명의 일 실시예에 따른 신경망 컴퓨팅 시스템의 일 예시도이다.
도 17에 도시된 바와 같이, 신경망 컴퓨팅 시스템은, 상기 신경망 컴퓨팅 시스템을 제어하기 위한 제어 유닛(1700), 각각이 복수 개의 메모리 유닛(1701)으로 이루어진 복수 개의 네트워크 서브시스템(1702), 각각이 상기 복수 개의 네트워크 서브시스템(1702) 중 하나에 포함된 복수 개의 메모리 유닛(1701)으로부터 입력되는 연결선 전단 뉴런의 출력값을 이용하여 새로운 연결선 후단(post-synaptic) 뉴런의 출력값을 계산하여 출력하는 복수 개의 계산 서브시스템(1703), 및 복수 개의 계산 서브시스템(1703)의 출력(1704)과 상기 모든 메모리 유닛(1701)의 피드백 입력이 공통으로 연결된 입력 신호(1705) 사이에서, 상기 복수 개의 계산 서브시스템의 출력(1704)을 다중화하는 다중화기(multiplexer, 1706)를 포함한다.
상기 네트워크 서브시스템(1702) 내의 복수 개의 메모리 유닛(1701) 각각은, 전술한 단일 시스템에서의 메모리 유닛(102)의 구조와 같으며, 각각 연결선 전단(pre-synaptic) 뉴런의 출력값을 출력하기 위한 출력(1707)과 새로운 연결선 후단(post-synaptic) 뉴런의 출력값을 입력받기 위한 입력(1708)을 포함한다.
뉴런 당 연결선 묶음의 수가 n개이면, 상기 복수의 계산 서브시스템(1703) 각각의 출력(1704)에서 출력되는 데이터의 발생 빈도는 n개의 클록 주기당 하나이다. 따라서 상기 다중화기(1706)에서 계산 서브시스템(1703)의 출력을 다중화할 때 최대 n개의 계산 서브시스템(1703)을 오버플로우없이 다중화할 수 있으며, 다중화된 데이터는 모든 네트워크 서브시스템(1702) 내의 모든 메모리 유닛(1701)의 Y 메모리에 저장될 수 있다.
상기 구현 방법에서 보인 바와 같이, 본 발명의 일 실시예에서 설명하는 시스템들에 있어서, 많은 수의 제어 신호가 메모리의 주소를 제어하기 위해 사용된다. 각 유닛 내의 메모리들의 주소 신호는 기본적으로 동일한 순서로 복수 개의 시냅스 묶음에 순차적으로 접근하기 위하여 시간의 차이를 갖지만 동일한 신호의 시퀀스를 가진다. 이 점을 활용하기 위하여, 도 18에 도시된 바와 같이, 제어 유닛(100)은 일 열로 연결된 복수 개의 시프트 레지스터(1800)를 포함하고, 맨 첫 레지스터(1801)의 신호만 순차적으로 변화시키면 시간 차를 갖는 다른 메모리 제어 신호들이 순차적으로 생성되도록 하여, 제어 회로의 구성을 단순화시킬 수 있다.
본 발명의 일 실시예에서 설명한 복수 개의 신경망 컴퓨팅 장치를 결합하는 메모리 구조는 모든 신경망 컴퓨팅 시스템뿐만 아니라 일반적인 복수 개의 프로세서로 이루어진 다중 프로세서 컴퓨팅 시스템에서도 활용할 수 있다.
도 19는 본 발명의 다른 실시예에 따른 다중 프로세서 컴퓨팅 시스템의 구성도이다.
도 19에 도시된 바와 같이, 다중 프로세서 컴퓨팅 시스템은, 상기 다중 프로세서 컴퓨팅 시스템을 제어하기 위한 제어 유닛(1900), 및 각각이 전체 계산량의 일부를 계산하고 다른 프로세서들과 공유하기 위하여 계산 결과의 일부를 출력하는 복수 개의 프로세서 서브시스템(1901)을 포함한다.
여기서, 상기 프로세서 서브시스템은 각각이 전체 계산량의 일부를 계산하고 다른 프로세서들과 공유하기 위하여 계산 결과의 일부를 출력하는 하나의 프로세서 장치(Processing Element, 1902)와, 하나의 프로세서 장치(1902)와 다른 프로세서들 사이의 통신 기능을 수행하는 하나의 메모리 그룹(1903)으로 이루어지고, 상기 메모리 그룹(1903)은 각각이 읽기 포트와 쓰기 포트를 가진 N개의 듀얼 포트 메모리(1904)와, 상기 N개의 듀얼 포트 메모리(1904)의 읽기 포트를 통합하여 각각의 메모리가 전체 용량의 일부를 차지하는 N배 용량의 통합 메모리(1905)의 기능을 수행하도록 하는 디코더 회로(도면에 도시되지 않음)를 구비하고, 상기 메모리 그룹의 디코더 회로에 의해 통합되는 통합 메모리(1905)는 주소 입력과 데이터 출력의 묶음(1906)이 상기 프로세서 장치(1902)로 연결되어 상기 프로세서 장치(1902)에 의해 상시 접근되고, 상기 N개의 듀얼 포트 메모리의 쓰기 포트(1907)는 각각 상기 N개의 프로세서 서브시스템(1901)의 출력(1908)과 연결된다.
모든 프로세서 서브시스템(1901) 내의 프로세서 장치(1902)는 타 프로세서 장치와 공유가 필요한 데이터를 획득하면, 상기 출력(1908)으로 출력하고 이 출력된 데이터는 모든 프로세서 서브시스템(1901) 내의 메모리 그룹(1903) 내의 듀얼포트 메모리(1904) 중 하나의 쓰기 포트(1907)를 통하여 저장되고, 저장 즉시 모든 다른 프로세서 서브시스템에서 메모리 그룹의 읽기 포트를 통해 접근할 수 있다.
일반적으로 다중 프로세서 컴퓨팅 시스템에서 프로세서 사이에 통신이 발생할 때, 데이터의 전송에 걸리는 시간이나 데이터를 기다리는 시간 등에 따라 지연이 발생하여 계산 속도의 지연을 발생함으로써 결합한 장치의 수만큼의 계산 속도를 내기 어려우나, 전술한 도 19의 방식을 사용하면 한 장치에서 다른 장치로의 데이터의 이동이 없이 메모리에 접근하는 것만으로 통신이 이루어져서, 결합된 장치의 수가 늘어남에 따라 선형적인 속도 증가를 기대할 수 있는 장점이 있다.
또한, 프로세서 서브시스템(1901) 내에 프로세서 장치가 독립적으로 사용하는 지역 메모리(Local Memory, 1909)를 더 포함할 때, 상기 메모리 그룹의 읽기 포트(1906)를 통해 접근 가능한 메모리의 공간과 상기 지역 메모리(1909)의 읽기 공간을 하나의 메모리 공간으로 통합하면, 상기 프로세서 장치(1902)들은 지역 메모리(1909)와 타 시스템이 저장한 공유 메모리(메모리 그룹)의 내용을 구분없이 프로그램에서 바로 접근할 수 있어서, 즉 지역 메모리(1909)와 상기 메모리 그룹의 디코더 회로에 의해 통합되는 통합 메모리를 하나의 메모리 맵에 매핑하여 프로세서 장치(1902)의 프로그램이 지역 메모리의 데이터와 통합 메모리의 데이터를 구분없이 접근할 수 있어서 매트릭스 연산이나 영상 처리 등을 용이하게 수행할 수 있는 추가적인 장점이 있다.
일 예로서 이차원 화면의 다수의 픽셀의 조합으로 표현되는 영상을 처리하는 영상처리 시스템을 복수 개의 프로세서 서브시스템이 처리하는 경우를 생각해 보자. 각각의 프로세서 서브시스템은 이차원 화면의 일부분을 계산한다. 일반적으로 영상처리 알고리즘은 원시 영상에 일련의 필터 함수를 적용하여 n번째 필터 처리된 화면의 각 픽셀 값이 n+1번째 필터 처리된 화면을 계산하기 위하여 사용되는 절차를 거친다. 특정 픽셀의 계산은 이전의 필터 처리된 화면에서 해당 픽셀 위치의 인근 픽셀들의 입력으로 계산되므로 상기 프로세서 서브시스템은 처리를 담당하는 화면 영역의 가장자리 픽셀 계산을 위해서 다른 프로세서 서브시스템이 계산한 픽셀 값을 참조하여야 한다. 이 경우 상기와 같은 방법을 사용하여 각 프로세서 서브시스템이 계산한 결과를 다른 프로세서 서브시스템과 공유하면 각각의 프로세서 서브시스템은 별도의 커뮤니케이션을 위한 하드웨어 장치 없이, 그리고 커뮤니케이션에 소요되는 지연시간 없이 계산을 수행할 수 있다.
이러한 다중 프로세서 컴퓨팅 시스템은 모든 프로세서 서브시스템에 모든 다른 프로세서 서브시스템이 전송하는 데이터를 보관하기 위하여 메모리 공간과 각각을 위한 입력(쓰기) 인터페이스를 확보하여야 하고, 프로세서 서브시스템이 방대하게 증가하는 경우 메모리 용량과 입력 인터페이스의 핀의 수가 과다하게 소요될 수 있다. 이를 해결하기 위한 방안으로, 상기 메모리 그룹 각각에 포함된 복수 개의 듀얼 포트 메모리 중 일부를 물리적 메모리가 할당되지 않는 가상의 메모리로 구현하는 방법을 사용할 수 있다. 예를 들어, 대규모의 상기 프로세서 서브시스템(1902)이 2차원 매트릭스를 형성하여 연결될 때, 모든 프로세서 서브시스템(1902)은 상기 메모리 그룹의 듀얼 포트 메모리 중 자신 주변의 프로세서 서브시스템에 해당하는 듀얼 포트 메모리만 구비하고, 나머지 듀얼 포트 메모리는 물리적 메모리와 입력 포트를 연결하지 않는 방법이다. 이와 같이 내부적으로는 모든 프로세서 서브시스템의 메모리 공간을 유지하되 커뮤니케이션이 필요한 인근 메모리 공간 이외에는 물리적 메모리를 할당하지 않는 방법을 사용함으로써, 소요되는 메모리 용량과 입력 핀 수를 최소화할 수 있다.
이상과 같이 본 발명은 비록 한정된 실시 예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시 예에 한정되는 것은 아니며, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 치환, 변형 및 변경이 가능하다. 그러므로 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100 : 제어 유닛 102 : 메모리 유닛
106 : 계산 서브시스템

Claims (56)

  1. 신경망 컴퓨팅 장치에 있어서,
    상기 신경망 컴퓨팅 장치를 제어하기 위한 제어 유닛;
    듀얼 포트 메모리를 이용하여 각각 연결선 전단(pre-synaptic) 뉴런의 출력값을 출력하기 위한 복수 개의 메모리 유닛; 및
    상기 복수 개의 메모리 유닛으로부터 각각 입력되는 연결선 전단 뉴런의 출력값을 이용하여 새로운 연결선 후단(post-synaptic) 뉴런의 출력값을 계산하여 상기 복수 개의 메모리 유닛 각각으로 피드백시키기 위한 하나의 계산 서브시스템
    을 포함하는 신경망 컴퓨팅 장치.
  2. 제 1 항에 있어서,
    상기 복수 개의 메모리 유닛 각각은,
    연결선 전단 뉴런의 참조번호를 저장하기 위한 제 1 메모리; 및
    읽기 포트와 쓰기 포트를 구비한 상기 듀얼 포트 메모리로 이루어져, 뉴런의 출력값을 저장하기 위한 제 2 메모리
    를 포함하는 신경망 컴퓨팅 장치.
  3. 제 2 항에 있어서,
    상기 신경망 컴퓨팅 장치는,
    상기 복수 개의 메모리 유닛의 상기 제 1 메모리에 신경망 내의 모든 뉴런의 입력 연결선에 연결된 뉴런의 참조번호를 분산 저장하고, 하기의 a 단계 내지 d 단계에 따라 계산 기능을 수행하는, 신경망 컴퓨팅 장치.
    a. 상기 복수 개의 메모리 유닛 각각의 상기 제 1 메모리의 주소 입력의 값을 순차적으로 변화시켜, 상기 제 1 메모리의 데이터 출력에 뉴런의 입력 연결선에 연결된 뉴런의 참조번호를 순차적으로 출력하는 단계
    b. 상기 복수 개의 메모리 유닛 각각의 상기 제 2 메모리의 읽기 포트의 데이터 출력에 뉴런의 입력 연결선에 연결된 뉴런의 출력값을 순차적으로 출력시켜 상기 복수 개의 메모리 유닛 각각의 출력을 통해 상기 계산 서브시스템의 복수 입력에 입력하는 단계
    c. 상기 계산 서브시스템에서 새로운 연결선 후단 뉴런의 출력값을 순차적으로 계산하는 단계
    d. 상기 계산 서브시스템에서 계산한 연결선 후단 뉴런의 출력값을 상기 복수 개의 메모리 유닛 각각의 상기 제 2 메모리의 쓰기 포트를 통해 순차적으로 저장하는 단계
  4. 제 3 항에 있어서,
    상기 신경망 컴퓨팅 장치는,
    하기의 a 과정 내지 f 과정에 따라 상기 복수 개의 메모리 유닛의 상기 제 1 메모리에 신경망 내의 모든 뉴런의 입력 연결선에 연결된 뉴런의 참조번호를 분산 저장하는, 신경망 컴퓨팅 장치.
    a. 신경망 내에서 가장 많은 수의 입력 연결선을 가진 뉴런의 입력 연결선의 수(Pmax)를 찾는 과정
    b. 상기 메모리 유닛의 수를 p라 할 때, 신경망 내의 모든 뉴런이
    Figure pat00011
    개의 연결선을 갖도록 각각의 뉴런에 어떤 뉴런이 연결되어도 인접 뉴런에 영향을 미치지 않는 가상의 연결선을 추가하는 과정
    c. 신경망 내 모든 뉴런을 임의의 순서로 정렬하고 일련번호를 부여하는 과정
    d. 모든 뉴런 각각의 연결선을 p개씩 나누어
    Figure pat00012
    개의 묶음으로 분류하고 묶음들을 임의의 순서로 정렬하는 과정
    e. 첫 번째 뉴런의 첫 번째 연결선 묶음부터 마지막 번째 뉴런의 마지막 연결선 묶음까지 순서대로 일련 번호 k를 부여하는 과정
    f. 상기 복수 개의 메모리 유닛 중 i번째 메모리 유닛의 제 1 메모리의 k번째 주소에는 k번째 연결선 묶음의 i번째 연결선에 연결된 연결선 전단 뉴런의 참조번호 값을 저장하는 과정
  5. 제 2 항에 있어서,
    상기 신경망 컴퓨팅 장치는,
    하나 또는 복수 개의 은닉 계층과 출력 계층 각각에 대해, 해당 계층 내에 포함되는 뉴런 각각의 입력 연결선에 연결된 뉴런의 참조번호를 상기 복수 개의 메모리 유닛의 상기 제 1 메모리의 특정 주소 범위에 분산 누적 저장하고, 하기의 a 단계 및 b 단계에 따라 복수 계층 네트워크로 구성된 신경망을 계산하는, 신경망 컴퓨팅 장치.
    a. 입력 데이터를 상기 복수 개의 메모리 유닛의 상기 제 2 메모리에 입력 계층의 뉴런의 값으로 저장하는 단계
    b. 은닉 계층과 출력 계층 각각에 대해, 입력 계층에 연결된 계층부터 출력 계층까지 순차적으로 하기의 b1 과정 내지 b4 과정에 따라 계산하는 단계
    b1. 상기 복수 개의 메모리 유닛의 상기 제 1 메모리의 주소 입력의 값을 해당 계층의 주소 범위 내에서 순차적으로 변화시켜, 상기 제 1 메모리의 데이터 출력에 해당 계층 내의 뉴런의 입력 연결선에 연결된 뉴런의 참조번호를 순차적으로 출력하는 과정
    b2. 상기 복수 개의 메모리 유닛의 상기 제 2 메모리의 읽기 포트의 데이터 출력에 해당 계층 내의 뉴런의 입력 연결선에 연결된 뉴런의 출력값을 순차적으로 출력하는 과정
    b3. 상기 계산 서브시스템에서 해당 계층 내의 모든 뉴런 각각의 새로운 출력값을 순차적으로 계산하는 과정
    b4. 상기 계산 서브시스템에서 계산한 뉴런의 출력값을 상기 복수 개의 메모리 유닛의 상기 제 2 메모리의 쓰기 포트를 통해 순차적으로 저장하는 과정
  6. 제 5 항에 있어서,
    상기 신경망 컴퓨팅 장치는,
    상기 복수 계층 네트워크로 구성된 신경망을 계산하기 위하여 상기 복수 계층 네트워크 내의 하나 또는 복수 개의 은닉 계층과 출력 계층 각각에 대해, 하기의 a 과정 내지 f 과정을 반복적으로 수행하여 상기 복수 개의 메모리 유닛의 상기 제 1 메모리의 특정 주소 범위에 뉴런의 참조번호를 분산 누적 저장하는, 신경망 컴퓨팅 장치.
    a. 해당 계층 내에서 가장 많은 수의 입력 연결선을 가진 뉴런의 입력 연결선의 수(Pmax)를 찾는 과정
    b. 상기 메모리 유닛의 수를 p라 할 때, 해당 계층 내의 모든 뉴런이
    Figure pat00013
    개의 연결선을 갖도록 각각의 뉴런에 어떤 뉴런이 연결되어도 인접 뉴런에 영향을 미치지 않는 가상의 연결선을 추가하는 과정
    c. 해당 계층 내의 뉴런을 임의의 순서로 정렬하고 일련번호를 부여하는 과정
    d. 해당 계층 내의 뉴런 각각의 연결선을 p개씩 나누어
    Figure pat00014
    개의 묶음으로 분류하고 묶음들을 임의의 순서로 정렬하는 과정
    e. 해당 계층 내의 첫 번째 뉴런의 첫 번째 연결선 묶음부터 마지막 번째 뉴런의 마지막 연결선 묶음까지 순서대로 일련 번호 k를 부여하는 과정
    f. 상기 복수 개의 메모리 유닛 중 i번째 메모리 유닛의 제 1 메모리의 해당 계층을 위한 특정 주소 영역 범위 내에서 k번째 주소에는 k번째 연결선 묶음의 i번째 연결선에 연결된 뉴런의 참조번호 값을 저장하는 과정
  7. 제 1 항에 있어서,
    상기 듀얼 포트 메모리는,
    하나의 메모리를 같은 클록 주기에 동시에 접근할 수 있는 논리회로를 구비한 물리적 듀얼 포트 메모리를 포함하는, 신경망 컴퓨팅 장치.
  8. 제 1 항에 있어서,
    상기 듀얼 포트 메모리는,
    하나의 메모리를 서로 다른 클록 주기에 시분할로 접근하는 두 개의 입출력 포트를 포함하는, 신경망 컴퓨팅 장치.
  9. 제 1 항에 있어서,
    상기 듀얼 포트 메모리는,
    내부에 두 개의 동일한 물리적인 메모리를 구비하고, 상기 제어 유닛으로부터의 제어 신호에 의해 제어되는 복수 개의 스위치를 이용하여 상기 두 개의 동일한 물리적인 메모리의 모든 입출력을 서로 바꾸어 연결하는 이중 메모리 교체(SWAP) 회로를 포함하는, 신경망 컴퓨팅 장치.
  10. 제 1 항에 있어서,
    상기 계산 서브시스템은,
    상응하는 상기 복수 개의 메모리 유닛의 출력을 입력받아 시냅스 특정 계산을 수행하기 위한 복수 개의 시냅스 유닛;
    상기 복수 개의 시냅스 유닛의 출력을 입력받아 뉴런의 모든 연결선에서 전달되는 입력의 총 합산을 계산하기 위한 덴드라이트 유닛; 및
    상기 덴드라이트 유닛의 출력을 입력받아 뉴런의 상태값을 갱신하고 새로운 출력값을 계산하기 위한 소마 유닛 중에서,
    상기 복수 개의 시냅스 유닛과 상기 소마 유닛을 포함하거나, 상기 복수 개의 시냅스 유닛과 상기 덴드라이트 유닛과 상기 소마 유닛을 포함하는, 신경망 컴퓨팅 장치.
  11. 제 10 항에 있어서,
    상기 복수 개의 시냅스 유닛 각각은,
    연결선의 입력으로 전달되는 신호를 연결선의 속성값에 따라 지연시키기 위한 액손 지연부; 및
    연결선의 가중치를 포함한 연결선의 상태값에 따라 연결선을 통과하는 신호의 세기를 조절하기 위한 시냅스 포텐셜부
    를 포함하는, 신경망 컴퓨팅 장치.
  12. 제 11 항에 있어서,
    상기 액손 지연부는,
    연결선의 액손 지연 상태값을 저장하는 액손 지연 상태값 메모리;
    1-비트 입력과 상기 액손 지연 상태값 메모리의 n비트 출력을 n+1 비트 데이터 폭으로 입력받고, n+1비트의 출력 중 상기 1-비트 입력에 대응되는 출력을 포함하는 n비트 출력을 상기 액손 지연 상태값 메모리로 출력하는 시프트 레지스터;
    연결선의 액손 지연 속성값을 저장하는 액손 지연 속성값 메모리; 및
    상기 액손 지연 속성값 메모리의 출력에 따라 상기 시프트 레지스터로부터의 n비트 중 하나를 선택하는 비트 선택기
    를 포함하는, 신경망 컴퓨팅 장치.
  13. 제 1 항에 있어서,
    상기 계산 서브시스템은,
    상태값을 저장하는 상태값 메모리; 및
    상기 상태값 메모리의 출력에서 순차적으로 읽은 데이터를 입력의 전부 또는 일부로 취하여 새로운 상태값을 순차적으로 계산하고 계산 결과의 전부 또는 일부를 상기 상태값 메모리에 순차적으로 저장하는 계산 회로
    를 하나 이상 포함하는, 신경망 컴퓨팅 장치.
  14. 제 13 항에 있어서,
    상기 상태값 메모리는,
    하나의 메모리를 같은 클록 주기에 동시에 접근할 수 있는 논리회로를 구비한 물리적 듀얼 포트 메모리를 포함하는, 신경망 컴퓨팅 장치.
  15. 제 1 항에 있어서,
    상기 계산 서브시스템은,
    복수 개의 속성값을 저장하고 계산 회로에 속성값을 제공하는 룩업 메모리; 및
    복수 개의 속성값 참조번호를 저장하고 상기 룩업 메모리에 속성값 참조번호를 제공하는 속성값 참조번호 메모리
    를 하나 이상 포함하는, 신경망 컴퓨팅 장치.
  16. 제 10 항에 있어서,
    상기 계산 서브시스템은,
    상기 시냅스 유닛 및 상기 덴드라이트 유닛에서 계산하는 시냅스 특정 계산의 신경망 갱신 주기와 상기 소마 유닛에서 계산하는 뉴런 특정 계산의 신경망 주기를 다르게 설정하여 시냅스 특정 계산을 수행하는 신경망 갱신 주기가 1회 진행되는 동안 뉴런 특정 계산을 수행하는 신경망 갱신 주기를 1회 이상 반복적으로 수행하는, 신경망 컴퓨팅 장치.
  17. 제 16 항에 있어서,
    상기 계산 서브시스템은,
    상기 덴드라이트 유닛과 상기 소마 유닛 사이에, 서로 다른 신경망 갱신 주기 간에 완충 기능을 수행하는 듀얼포트 메모리를 더 포함하는, 신경망 컴퓨팅 장치.
  18. 제 16 항에 있어서,
    상기 복수 개의 메모리 유닛 각각은,
    내부에 두 개의 동일한 물리적인 메모리를 구비하고, 상기 제어 유닛으로부터의 제어 신호에 의해 제어되는 복수 개의 스위치를 이용하여 상기 두 개의 동일한 물리적인 메모리의 모든 입출력을 서로 바꾸어 연결하는 이중 메모리 교체(SWAP) 회로를 포함하는, 신경망 컴퓨팅 장치.
  19. 제 10 항에 있어서,
    상기 복수 개의 시냅스 유닛 각각은, 연결선의 가중치값을 저장하는 연결선 가중치 메모리를 상태값 메모리의 하나로 구비하고, 학습 상태값을 입력받는 입력단을 더 구비하며,
    상기 소마 유닛은, 학습 상태값을 출력하는 출력단을 더 구비하고,
    상기 계산 서브시스템은, 상기 소마 유닛의 상기 출력단에서 상기 복수 개의 시냅스 유닛 각각의 상기 입력단 각각으로 공통으로 연결되는 연결선을 더 구비하는, 신경망 컴퓨팅 장치.
  20. 제 19 항에 있어서,
    상기 신경망 컴퓨팅 장치는,
    상기 복수 개의 메모리 유닛의 제 1 메모리에 신경망 내의 모든 뉴런 각각의 입력 연결선에 연결된 뉴런의 참조번호를 분산 저장하고, 상기 복수 개의 시냅스 유닛의 상기 연결선 가중치 메모리에 모든 뉴런 각각의 입력 연결선의 연결선 가중치의 초기값으로 저장하고, 하기의 a 과정 내지 f 과정에 따라 학습 계산을 수행하는, 신경망 컴퓨팅 장치.
    a. 상기 복수 개의 메모리 유닛에서 모든 뉴런 각각의 입력 연결선에 연결된 뉴런의 값을 순차적으로 출력하는 단계
    b. 상기 복수 개의 시냅스 유닛 각각은 일 입력을 통해 상응하는 상기 메모리 유닛에서 순차적으로 전달된 입력 뉴런의 출력값과 상기 연결선 가중치 메모리에서 순차적으로 전달된 연결선 가중치값을 입력으로 새로운 연결선 출력값을 순차적으로 계산하여 출력하는 단계
    c. 상기 덴드라이트 유닛은 상기 복수 개의 시냅스 유닛으로부터의 연결선 출력을 순차적으로 입력받아 뉴런의 모든 연결선에서 전달되는 입력의 총 합을 순차적으로 계산하여 출력하는 단계
    d. 상기 소마 유닛은 상기 덴드라이트 유닛으로부터의 뉴런의 입력값을 순차적으로 입력받아 뉴런의 상태값을 갱신하고 새로운 출력값을 순차적으로 계산하여 출력하고, 상기 입력값과 상기 상태값을 바탕으로 새로운 학습 상태값을 순차적으로 계산하여 출력하는 단계
    e. 상기 복수 개의 시냅스 유닛 각각은 타 입력을 통해 순차적으로 전달되는 학습 상태값과 일 입력을 통해 순차적으로 전달되는 입력 뉴런의 출력값과 상기 연결선 가중치 메모리로부터 순차적으로 전달된 연결선 가중치값을 입력으로 새로운 연결선 가중치값을 순차적으로 계산하여 상기 연결선 가중치 메모리에 저장하는 단계
    f. 상기 소마 유닛으로부터 출력되는 값을 상기 복수 개의 메모리 유닛의 제 2 메모리의 쓰기 포트를 통해 순차적으로 저장하는 단계
  21. 제 19 항에 있어서,
    상기 계산 서브시스템은,
    상기 소마 유닛의 상기 출력단과 상기 복수 개의 시냅스 유닛 각각의 상기 입력단 각각 사이에 구비되어, 학습 상태값을 임시로 저장하여 타이밍을 조절하는 학습 상태값 메모리
    를 더 포함하는 신경망 컴퓨팅 장치.
  22. 제 21 항에 있어서,
    상기 학습 상태값 메모리는,
    읽기 포트와 쓰기 포트를 구비한 물리적 듀얼 포트 메모리를 포함하되,
    상기 쓰기 포트는 상기 소마 유닛의 상기 출력단과 연결되고, 상기 읽기 포트는 상기 복수 개의 시냅스 유닛 각각의 상기 입력단 각각과 공통으로 연결되는, 신경망 컴퓨팅 장치.
  23. 제 19 항에 있어서,
    상기 복수 개의 시냅스 유닛 각각은,
    상응하는 상기 복수 개의 메모리 유닛에서 순차적으로 전달된 입력 뉴런의 출력값과 상기 연결선 가중치 메모리에서 순차적으로 전달된 연결선 가중치값을 각각 지연시켜 상기 소마 유닛의 학습 상태값의 출력과 타이밍을 맞추기 위한 두 개의 선입선출 큐를 포함하는, 신경망 컴퓨팅 장치.
  24. 제 10 항에 있어서,
    상기 신경망 컴퓨팅 장치는,
    같은 연결선에 대하여 순방향 계산과 역방향 계산이 동시에 적용되는 양방향 연결선(bidirectional connection)을 한 개 이상 포함하는 신경망을 계산하기 위하여, 하기의 a 과정 내지 d 과정에 따라 상기 복수 개의 메모리 유닛 내의 제 1 메모리와, 상기 복수 개의 시냅스 유닛의 상태값 메모리 및 속성값 메모리에 데이터를 저장하는, 신경망 컴퓨팅 장치.
    a. 모든 양방향 연결선 각각에 대해, 순방향의 입력을 제공하는 뉴런을 A, 순방향의 입력을 제공받는 뉴런을 B라 할 때, 뉴런 B에서 뉴런 A로 연결되는 새로운 역방향 연결선을 순방향 네트워크에 추가하여 펼친 네트워크를 구성하는 과정
    b. 상기 복수 개의 메모리 유닛과 상기 복수 개의 시냅스 유닛에 상기 펼친 네트워크 내의 모든 뉴런 각각의 입력 연결선 정보를 분산 저장하는 방법으로서, 연결선 배치 알고리즘을 사용하여 각각의 양방향 연결선의 순방향 연결선과 역방향 연결선을 같은 메모리 유닛과 시냅스 유닛에 배치하는 과정
    c. 상기 복수 개의 시냅스 유닛 각각에 포함되는 임의의 상태값 메모리와 속성값 메모리 각각의 k번째 주소에는, 해당 연결선이 순방향 연결선일 때, 해당 연결선의 연결선 상태값과 연결선 속성값을 각각 저장하는 과정
    d. 상기 복수 개의 시냅스 유닛의 상기 상태값 메모리와 상기 속성값 메모리에 저장된 연결선의 상태값 및 속성값에 접근할 때, k번째 연결선이 순방향 연결선이면 해당 상태값 메모리와 속성값 메모리에 저장된 k번째 주소에 접근하고, 역방향 연결선이면 해당 역방향 연결선에 대응되는 순방향 연결선의 상태값과 속성값에 접근하여 순방향 연결선과 역방향 연결선이 같은 상태값과 속성값을 공유하는 과정
  25. 제 24 항에 있어서,
    상기 복수 개의 메모리 유닛 각각은,
    역방향 연결선에 대응되는 순방향 연결선의 참조번호를 저장하는 역방향 연결선 참조번호 메모리; 및
    상기 제어 유닛에 의해 제어되고, 상기 제어 유닛의 제어신호와 상기 역방향 연결선 참조번호 메모리의 데이터 출력 중 하나를 선택하여 상응하는 시냅스 유닛으로 출력하며, 연결선의 상태값과 속성값을 순차적으로 선택하기 위해 사용되는 스위치
    를 더 포함하는, 신경망 컴퓨팅 장치.
  26. 제 24 항에 있어서,
    상기 연결선 배치 알고리즘은,
    그래프에서 호의 색칠 알고리즘(edge coloring algorithm)을 사용하여, 신경망에서 모든 양방향 연결선을 그래프에서 호(edge)로 표현하고, 신경망에서 모든 뉴런을 그래프에서 노드(node)로 표현하며, 신경망에서 연결선이 저장되는 메모리 유닛의 번호를 그래프에서 색(color)으로 표현하여, 순방향과 역방향 연결선을 같은 메모리 유닛의 번호에 배치하는, 신경망 컴퓨팅 장치.
  27. 제 24 항에 있어서,
    상기 연결선 배치 알고리즘은,
    모든 양방향 연결선이 완전한 이분 그래프(Complete Bipartite Graph)에 포함되는 경우, 각각의 양방향 연결선이 한 그룹의 i번째 뉴런에서 다른 그룹의 j번째 뉴런과 연결될 때, 해당 순방향 연결선과 역방향 연결선을 각각 (i+j) mod p 번째 메모리 유닛의 번호에 배치하는, 신경망 컴퓨팅 장치.
  28. 제 1 항에 있어서,
    상기 복수 개의 메모리 유닛 각각은,
    연결선에 연결된 뉴런의 참조번호를 저장하기 위한 제 1 메모리;
    읽기 포트와 쓰기 포트를 구비한 상기 듀얼 포트 메모리로 이루어진 제 2 메모리;
    읽기 포트와 쓰기 포트를 구비한 상기 듀얼 포트 메모리로 이루어진 제 3 메모리; 및
    상기 제어 유닛으로부터의 제어 신호에 의해 제어되고 상기 제 2 메모리와 상기 제 3 메모리의 모든 입출력을 서로 바꾸어 연결하는 복수 개의 스위치로 이루어진 이중 메모리 교체(SWAP) 회로
    를 포함하는 신경망 컴퓨팅 장치.
  29. 제 28 항에 있어서,
    상기 이중 메모리 교체 회로가 형성하는 첫 번째 논리적 듀얼 포트는 읽기 포트의 주소 입력이 상기 제 1 메모리의 출력과 연결되고 읽기 포트의 데이터 출력이 해당 메모리 유닛의 출력이 되며, 쓰기 포트의 데이터 입력이 다른 메모리 유닛들의 첫 번째 논리적 듀얼 포트의 쓰기 포트의 데이터 입력과 공통으로 연결되어 새롭게 계산한 뉴런 출력을 저장하고,
    상기 이중 메모리 교체 회로가 형성하는 두 번째 논리적 듀얼 포트는 쓰기 포트의 데이터 입력이 상기 다른 메모리 유닛들의 두 번째 논리적 듀얼 포트의 쓰기 포트의 데이터 입력과 공통으로 연결되어 다음 신경망 갱신 주기에 사용될 입력 뉴런의 값을 저장하는, 신경망 컴퓨팅 장치.
  30. 제 28 항에 있어서,
    상기 이중 메모리 교체 회로가 형성하는 첫 번째 논리적 듀얼 포트는 읽기 포트의 주소 입력이 상기 제 1 메모리의 출력과 연결되고 읽기 포트의 데이터 출력이 해당 메모리 유닛의 일 출력이 되며, 쓰기 포트의 데이터 입력이 다른 메모리 유닛들의 첫 번째 논리적 듀얼 포트의 쓰기 포트의 데이터 입력과 공통으로 연결되어 새롭게 계산한 뉴런 출력을 저장하고,
    상기 이중 메모리 교체 회로가 형성하는 두 번째 논리적 듀얼 포트는 읽기 포트의 주소 입력이 상기 제 1 메모리의 출력과 연결되고, 읽기 포트의 데이터 출력이 상기 해당 메모리 유닛의 타 출력으로 연결되어 이전 신경망 갱신 주기의 뉴런의 출력값을 출력하는, 신경망 컴퓨팅 장치.
  31. 제 1 항에 있어서,
    상기 복수 개의 메모리 유닛 각각은,
    연결선에 연결된 뉴런의 참조번호를 저장하기 위한 제 1 메모리;
    읽기 포트와 쓰기 포트를 구비한 상기 듀얼 포트 메모리로 이루어진 제 2 메모리;
    읽기 포트와 쓰기 포트를 구비한 상기 듀얼 포트 메모리로 이루어진 제 3 메모리;
    읽기 포트와 쓰기 포트를 구비한 상기 듀얼 포트 메모리로 이루어진 제 4 메모리; 및
    상기 제어 유닛으로부터의 제어 신호에 의해 제어되고 상기 제 2 메모리 내지 상기 제 4 메모리의 모든 입출력을 순차적으로 바꾸어 연결하는 복수 개의 스위치로 이루어진 삼중 메모리 교체(SWAP) 회로
    를 포함하는 신경망 컴퓨팅 장치.
  32. 제 31 항에 있어서,
    상기 삼중 메모리 교체 회로가 형성하는 첫 번째 논리적 듀얼 포트는 쓰기 포트의 데이터 입력이 다른 메모리 유닛들의 첫 번째 논리적 듀얼 포트의 쓰기 포트의 데이터 입력과 공통으로 연결되어 다음 신경망 갱신 주기에 사용될 입력 뉴런의 값을 저장하고,
    상기 삼중 메모리 교체 회로가 형성하는 두 번째 논리적 듀얼 포트는 읽기 포트의 주소 입력이 상기 제 1 메모리의 출력과 연결되고 읽기 포트의 데이터 출력이 해당 메모리 유닛의 일 출력이 되며, 쓰기 포트의 데이터 입력이 상기 다른 메모리 유닛들의 두 번째 논리적 듀얼 포트의 쓰기 포트의 데이터 입력과 공통으로 연결되어 새롭게 계산한 뉴런 출력을 저장하며,
    상기 삼중 메모리 교체 회로가 형성하는 세 번째 논리적 듀얼 포트는 읽기 포트의 주소 입력이 상기 제 1 메모리의 출력과 연결되고, 읽기 포트의 데이터 출력이 상기 해당 메모리 유닛의 타 출력으로 연결되어 이전 신경망 갱신 주기의 뉴런의 출력값을 출력하는, 신경망 컴퓨팅 장치.
  33. 제 10 항에 있어서,
    상기 복수 개의 시냅스 유닛 각각은, 연결선의 가중치값을 저장하는 연결선 가중치 메모리를 상태값 메모리의 하나로 구비하고, 학습 상태값을 입력받는 입력단을 더 구비하며,
    상기 소마 유닛은, 학습 임시값을 임시로 저장하기 위한 학습 임시값 메모리와 학습 데이터를 입력받기 위한 입력단과 학습 상태값을 출력하는 출력단을 더 구비하고,
    상기 계산 서브시스템은, 상기 소마 유닛의 상기 출력단과 상기 복수 개의 시냅스 유닛 각각의 상기 입력단 각각 사이에 구비되어, 학습 상태값을 임시로 저장하여 타이밍을 조절하는 학습 상태값 메모리를 더 포함하는, 신경망 컴퓨팅 장치.
  34. 제 33 항에 있어서,
    상기 신경망 컴퓨팅 장치는,
    순방향 네트워크의 하나 또는 복수 개의 은닉 계층과 출력 계층 각각과 역방향 네트워크의 하나 또는 복수 개의 은닉 계층 각각에 대해, 해당 계층 내에 포함되는 뉴런 각각의 입력 연결선에 연결된 뉴런의 참조번호를 상기 복수 개의 메모리 유닛의 제 1 메모리의 특정 주소 범위에 분산 저장하고, 상기 복수 개의 시냅스 유닛의 상기 연결선 가중치 메모리에 모든 뉴런 각각의 입력 연결선의 연결선 가중치의 초기값을 저장하고, 하기의 a 과정 내지 e 과정에 따라 역전파 신경망 학습 알고리즘을 계산하는, 신경망 컴퓨팅 장치.
    a. 입력 데이터를 상기 복수 개의 메모리 유닛의 제 2 메모리에 입력 계층의 뉴런의 값으로 저장하는 단계
    b. 복수 계층 순방향 계산을 입력 계층에 연결된 계층부터 출력 계층까지 순차적으로 진행하는 단계
    c. 출력 계층의 각 뉴런에 대해 상기 소마 유닛에서 상기 소마 유닛의 입력단을 통해 입력된 학습 데이터와 새로 계산된 뉴런의 출력값의 차이, 즉, 에러 값을 계산하는 단계
    d. 한 개 또는 복수 개의 은닉 계층의 역방향 네트워크의 각각의 계층에 대해, 출력 계층에 연결된 계층부터 입력 계층에 연결된 계층까지의 순차적으로 상기 에러 값의 전파를 수행하는 단계
    e. 한 개 또는 복수 개의 은닉 계층과 하나의 출력 계층 각각에 대해, 입력 계층에 연결된 계층부터 출력 계층까지 각 뉴런에 연결된 연결선의 가중치값을 조정하는 단계
  35. 제 34 항에 있어서,
    상기 복수 개의 메모리 유닛 각각은, 제 2 메모리가 두 개의 듀얼 포트 메모리와 이중 메모리 교체 회로에 의한 두 개의 논리적 듀얼 포트 메모리를 구비하고,
    상기 신경망 컴퓨팅 장치는,
    다음 신경망 갱신 주기에 사용할 입력 데이터를 두 번째 논리적 듀얼 포트 메모리에 미리 저장하여, 상기 a 단계와 상기 b 내지 e 단계를 병렬로 수행하는, 신경망 컴퓨팅 장치.
  36. 제 34 항에 있어서,
    상기 소마 유닛은,
    상기 b 단계 수행 시 학습 임시값을 계산하고 향후 학습 상태값 계산 시점까지 임시 보관을 위하여 상기 학습 임시값 메모리에 저장하는, 신경망 컴퓨팅 장치.
  37. 제 34 항에 있어서,
    상기 소마 유닛은,
    상기 c 단계의 출력 뉴런의 에러 값을 계산하는 단계를 상기 b 단계의 순방향 전파 단계에서 함께 수행하여 계산시간을 단축하는, 신경망 컴퓨팅 장치.
  38. 제 34 항에 있어서,
    상기 소마 유닛은,
    상기 c 단계와 상기 d 단계에서 각각 뉴런의 에러 값을 계산한 후에 학습 상태값을 계산하여 상기 출력단을 통해 출력하여 상기 학습 상태값 메모리에 저장하고,
    상기 학습 상태값 메모리에 저장된 학습 상태값은, 상기 e 단계에서 연결선의 가중치값을 계산하기 위해 사용하는, 신경망 컴퓨팅 장치.
  39. 제 34 항에 있어서,
    상기 제어 유닛은,
    상기 복수 개의 메모리 유닛 각각은, 제 2 메모리가 두 개의 듀얼 포트 메모리와 이중 메모리 교체 회로에 의한 두 개의 논리적 듀얼 포트 메모리를 구비하고,
    상기 두 개의 논리적 듀얼 포트 메모리 중 두 번째 논리적 듀얼 포트 메모리는 이전 신경망 갱신 주기의 뉴런의 출력값을 해당 메모리 유닛의 출력단으로 출력하여, 상기 e 단계와 다음 신경망 갱신 주기의 상기 b 단계를 동시에 수행하여 계산 시간을 단축하는, 신경망 컴퓨팅 장치.
  40. 제 10 항에 있어서,
    RBM(Restricted Boltzmann Machine) 각각의 RBM 제 1, 2, 3 단계 각각에 대해, 해당 단계 내에 포함되는 뉴런 각각의 입력 연결선에 연결된 뉴런의 참조번호를 상기 복수 개의 메모리 유닛의 제 1 메모리의 특정 주소 범위에 분산 누적 저장하고, 상기 RBM 제 2단계의 역방향 연결선 정보를 역방향 연결선 참조번호 메모리에 누적 저장하고, 상기 복수 개의 시냅스 유닛의 연결선 가중치 메모리에 모든 뉴런 각각의 입력 연결선의 연결선 가중치의 초기값을 누적 저장하고, 제 2 메모리의 영역을 3등분하여 Y(1), Y(2), Y(3) 영역이라 하고, 하나의 학습 데이터를 학습하는 계산 절차를 하기의 a 단계 내지 c 단계에 따라 수행하는, 신경망 컴퓨팅 장치.
    a. 상기 Y(1) 영역에 학습 데이터를 저장하는 단계
    b. 변수 S=1, D=2로 설정하는 단계
    c. 신경망 내 RBM 각각에 대하여 하기의 c1 과정 내지 c6 과정을 수행하는 단계
    c1. 상기 계산 서브시스템은 상기 메모리 유닛의 제 2 메모리의 Y(S) 영역을 입력으로 하고 상기 RBM 제 1 단계의 계산을 수행하여 계산 결과(hpos)를 상기 제 2 메모리의 Y(D) 영역에 저장하는 과정
    c2. 상기 Y(D) 영역을 입력으로 하고 상기 RBM 제 2 단계의 계산을 수행하여 계산 결과를 상기 Y(3) 영역에 저장하는 과정
    c3. 상기 Y(3) 영역을 입력으로 하고 상기 RBM 제 2 단계의 계산을 수행하는 과정
    c4. 모든 연결선의 값을 조정하는 과정
    c5. 상기 변수 S와 D의 값을 서로 바꾸는 과정
    c6. 현재 RBM이 마지막 RBM이면 상기 Y(1) 영역에 다음 학습 데이터를 저장하는 과정
  41. 제 1 항에 있어서,
    상기 메모리 유닛 또는 상기 계산 서브시스템 내의 하나 또는 복수 개의 메모리 각각의 주소 입력단에, 접근하는 주소값에 지정된 오프셋 값만큼 더한 값이 메모리의 주소로 지정되도록 하여 상기 제어 유닛이 메모리의 접근 범위를 쉽게 변경할 수 있게 하는 오프셋 회로
    를 더 포함하는 신경망 컴퓨팅 장치.
  42. 제 1 항에 있어서,
    상기 제어 유닛은,
    각 제어 단계의 제어신호 생성에 필요한 정보를 포함하는 절차운용표(SOT)를 구비하고, 상기 각 제어 단계마다 상기 절차운용표의 레코드를 하나씩 읽어 시스템 운용에 사용하는, 신경망 컴퓨팅 장치.
  43. 제 42 항에 있어서,
    상기 절차운용표는,
    순차적인 레코드로 이동하지 않고 레코드에 포함된 레코드 식별자로 이동하도록 지시하는 "GO TO" 레코드를 포함하는, 신경망 컴퓨팅 장치.
  44. 신경망 컴퓨팅 시스템에 있어서,
    상기 신경망 컴퓨팅 시스템을 제어하기 위한 제어 유닛;
    듀얼 포트 메모리를 이용하여 각각 연결선 전단(pre-synaptic) 뉴런의 출력값을 출력하는 복수 개의 메모리 유닛으로 각각 이루어진 복수 개의 네트워크 서브시스템; 및
    각각이 상기 복수 개의 네트워크 서브시스템 중 하나에 포함된 상기 복수 개의 메모리 유닛으로부터 입력되는 연결선 전단 뉴런의 출력값을 이용하여 새로운 연결선 후단(post-synaptic) 뉴런의 출력값을 계산하여 상기 복수 개의 네트워크 서브시스템 각각으로 피드백시키기 위한 복수 개의 계산 서브시스템
    을 포함하는 신경망 컴퓨팅 시스템.
  45. 제 44 항에 있어서,
    상기 복수 개의 계산 서브시스템의 출력단과 상기 복수 개의 네트워크 서브시스템의 상기 복수 개의 메모리 유닛의 피드백 입력이 공통으로 연결된 입력단 사이에 구비되어, 상기 복수 개의 계산 서브시스템의 출력을 다중화하는 다중화기
    를 더 포함하는 신경망 컴퓨팅 시스템.
  46. 제 44 항에 있어서,
    상기 제어 유닛은,
    일 열로 연결된 복수 개의 시프트 레지스터를 이용하여 시간의 차이를 가지면서 동일한 순서로 변화하는 제어 신호를 생성하여 상기 신경망 컴퓨팅 시스템 내의 각 메모리의 주소 입력에 공급하는, 신경망 컴퓨팅 시스템.
  47. 다중 프로세서 컴퓨팅 시스템에 있어서,
    상기 다중 프로세서 컴퓨팅 시스템을 제어하기 위한 제어 유닛; 및
    각각이 전체 계산량의 일부를 계산하고 타 프로세서와 공유하기 위하여 계산 결과의 일부를 출력하는 복수 개의 프로세서 서브시스템
    을 포함하되,
    상기 복수 개의 프로세서 서브시스템 각각은,
    전체 계산량의 일부를 계산하고 상기 타 프로세서와 공유하기 위하여 계산 결과의 일부를 출력하는 하나의 프로세서; 및
    상기 프로세서와 타 프로세서 사이의 통신 기능을 수행하는 하나의 메모리 그룹
    을 포함하는 다중 프로세서 컴퓨팅 시스템.
  48. 제 47 항에 있어서,
    상기 메모리 그룹은,
    각각이 읽기 포트와 쓰기 포트를 구비한 복수 개(N개)의 듀얼 포트 메모리; 및
    상기 복수 개의 듀얼 포트 메모리의 읽기 포트를 통합하여 각각의 듀얼 포트 메모리가 전체 용량의 일부를 차지하는 N배 용량의 통합 메모리의 기능을 수행하도록 하는 디코더 회로
    를 포함하는 다중 프로세서 컴퓨팅 시스템.
  49. 제 48 항에 있어서,
    상기 디코더 회로에 의해 통합되는 상기 통합 메모리는 주소 입력과 데이터 출력이 대응되는 프로세서로 연결되어 해당 프로세서에 의해 상시 접근되고,
    상기 복수 개의 듀얼 포트 메모리의 쓰기 포트는 각각 복수 개의 상기 프로세서의 출력과 연결되는, 다중 프로세서 컴퓨팅 시스템.
  50. 제 48 항에 있어서,
    상기 복수 개의 듀얼 포트 메모리 중 일부는,
    물리적 메모리가 할당되지 않는 가상의 메모리로 구현된, 다중 프로세서 컴퓨팅 시스템.
  51. 제 47 항 내지 제 50 항 중 어느 한 항에 있어서,
    상기 복수 개의 프로세서 서브시스템 각각은,
    상기 프로세서가 독립적으로 사용하는 지역 메모리를 더 포함하고,
    상기 메모리 그룹의 읽기 포트를 통해 접근 가능한 메모리의 공간과 상기 지역 메모리의 읽기 공간을 하나의 메모리 공간으로 통합하여, 상기 프로세서의 프로그램이 상기 지역 메모리와 상기 메모리 그룹의 데이터를 구분없이 접근하는, 다중 프로세서 컴퓨팅 시스템.
  52. 메모리 장치에 있어서,
    연결선 전단 뉴런의 참조번호를 저장하기 위한 제 1 메모리; 및
    읽기 포트와 쓰기 포트를 구비한 듀얼 포트 메모리로 이루어져, 뉴런의 출력값을 저장하기 위한 제 2 메모리
    를 포함하는 메모리 장치.
  53. 제 52 항에 있어서,
    상기 듀얼 포트 메모리는,
    하나의 메모리를 같은 클록 주기에 동시에 접근할 수 있는 논리회로를 구비한 물리적 듀얼 포트 메모리를 포함하는, 메모리 장치.
  54. 제 52 항에 있어서,
    상기 듀얼 포트 메모리는,
    하나의 메모리를 서로 다른 클록 주기에 시분할로 접근하는 두 개의 입출력 포트를 포함하는, 메모리 장치.
  55. 제 52 항에 있어서,
    상기 듀얼 포트 메모리는,
    내부에 두 개의 동일한 물리적인 메모리를 구비하고, 제어 유닛으로부터의 제어 신호에 의해 제어되는 복수 개의 스위치를 이용하여 상기 두 개의 동일한 물리적인 메모리의 모든 입출력을 서로 바꾸어 연결하는 이중 메모리 교체(SWAP) 회로를 포함하는, 메모리 장치.
  56. 신경망 컴퓨팅 방법에 있어서,
    제어 유닛의 제어에 따라, 복수 개의 메모리 유닛 각각이 듀얼 포트 메모리를 이용하여 연결선 전단(pre-synaptic) 뉴런의 출력값을 출력하는 단계; 및
    상기 제어 유닛의 제어에 따라, 하나의 계산 서브시스템이 상기 복수 개의 메모리 유닛으로부터 각각 입력되는 연결선 전단 뉴런의 출력값을 이용하여 새로운 연결선 후단(post-synaptic) 뉴런의 출력값을 계산하여 상기 복수 개의 메모리 유닛 각각으로 피드백시키는 단계를 포함하되,
    상기 복수 개의 메모리 유닛과 상기 하나의 계산 서브시스템이, 상기 제어 유닛의 제어에 따라 하나의 시스템 클록에 동기화되어 파이프라인 방식으로 동작하는, 신경망 컴퓨팅 방법.
KR1020140083688A 2013-08-02 2014-07-04 신경망 컴퓨팅 장치 및 시스템과 그 방법 KR20150016089A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/KR2014/007065 WO2015016640A1 (ko) 2013-08-02 2014-07-31 신경망 컴퓨팅 장치 및 시스템과 그 방법
US14/909,338 US20160196488A1 (en) 2013-08-02 2014-07-31 Neural network computing device, system and method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20130091855 2013-08-02
KR1020130091855 2013-08-02

Publications (1)

Publication Number Publication Date
KR20150016089A true KR20150016089A (ko) 2015-02-11

Family

ID=52573186

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140083688A KR20150016089A (ko) 2013-08-02 2014-07-04 신경망 컴퓨팅 장치 및 시스템과 그 방법

Country Status (2)

Country Link
US (1) US20160196488A1 (ko)
KR (1) KR20150016089A (ko)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018124707A1 (ko) * 2016-12-27 2018-07-05 삼성전자 주식회사 신경망 연산을 이용한 입력 처리 방법 및 이를 위한 장치
KR20180093969A (ko) * 2016-01-20 2018-08-22 캠브리콘 테크놀로지스 코퍼레이션 리미티드 스파스 연결용 인공 신경망 계산 장치와 방법
KR20180125734A (ko) * 2017-05-16 2018-11-26 한국전자통신연구원 파라미터 공유 장치 및 방법
WO2019107612A1 (ko) * 2017-11-30 2019-06-06 주식회사 시스트란인터내셔널 변환 수행 방법 및 이를 위한 장치
KR20190139837A (ko) * 2017-04-19 2019-12-18 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 처리 장치 및 처리 방법
CN110825311A (zh) * 2018-08-10 2020-02-21 北京百度网讯科技有限公司 用于存储数据的方法和装置
KR20200020117A (ko) * 2018-08-16 2020-02-26 주식회사 딥엑스 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치
KR20200023029A (ko) * 2018-08-24 2020-03-04 연세대학교 산학협력단 진단 보조 시스템 및 그 제어 방법
KR20200023660A (ko) * 2018-08-13 2020-03-06 인천대학교 산학협력단 딥러닝 모델을 통한 추론 서비스를 제공할 때, 적어도 하나의 프로세서의 성능을 제어하는 전자 장치 및 그의 동작 방법
KR20200045017A (ko) * 2015-05-21 2020-04-29 구글 엘엘씨 신경망 프로세서에서의 배치 프로세싱
KR20210022455A (ko) * 2019-08-20 2021-03-03 한국과학기술원 심층 신경망 학습 장치 및 그 방법
US11276497B2 (en) 2017-08-25 2022-03-15 Medi Whale Inc. Diagnosis assistance system and control method thereof
KR20220041962A (ko) * 2015-05-21 2022-04-01 구글 엘엘씨 신경망 프로세서의 벡터 컴퓨테이션 유닛
US11521085B2 (en) 2020-04-07 2022-12-06 International Business Machines Corporation Neural network weight distribution from a grid of memory elements

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10013652B2 (en) * 2015-04-29 2018-07-03 Nuance Communications, Inc. Fast deep neural network feature transformation via optimized memory bandwidth utilization
US11126913B2 (en) * 2015-07-23 2021-09-21 Applied Brain Research Inc Methods and systems for implementing deep spiking neural networks
US10275394B2 (en) * 2015-10-08 2019-04-30 Via Alliance Semiconductor Co., Ltd. Processor with architectural neural network execution unit
US10839289B2 (en) * 2016-04-28 2020-11-17 International Business Machines Corporation Neural network processing with von-Neumann cores
KR20180003123A (ko) * 2016-06-30 2018-01-09 삼성전자주식회사 메모리 셀 유닛 및 메모리 셀 유닛들을 포함하는 순환 신경망
US10387769B2 (en) * 2016-06-30 2019-08-20 Samsung Electronics Co., Ltd. Hybrid memory cell unit and recurrent neural network including hybrid memory cell units
WO2018058427A1 (zh) * 2016-09-29 2018-04-05 北京中科寒武纪科技有限公司 神经网络运算装置及方法
US10248906B2 (en) * 2016-12-28 2019-04-02 Intel Corporation Neuromorphic circuits for storing and generating connectivity information
EP3564863B1 (en) * 2016-12-30 2024-03-13 Shanghai Cambricon Information Technology Co., Ltd Apparatus for executing lstm neural network operation, and operational method
CN108304922B (zh) * 2017-01-13 2020-12-15 华为技术有限公司 用于神经网络计算的计算设备和计算方法
KR20180116637A (ko) * 2017-04-17 2018-10-25 에스케이하이닉스 주식회사 듀얼 멤리스터들을 가진 시냅스 및 상기 시냅스를 포함하는 뉴로모픽 소자의 시냅스 어레이
US11429848B2 (en) * 2017-10-17 2022-08-30 Xilinx, Inc. Host-directed multi-layer neural network processing via per-layer work requests
US10452540B2 (en) * 2017-10-20 2019-10-22 International Business Machines Corporation Memory-mapped interface for message passing computing systems
KR102586173B1 (ko) 2017-10-31 2023-10-10 삼성전자주식회사 프로세서 및 그 제어 방법
US11030414B2 (en) * 2017-12-26 2021-06-08 The Allen Institute For Artificial Intelligence System and methods for performing NLP related tasks using contextualized word representations
CN109445688B (zh) * 2018-09-29 2022-04-15 上海百功半导体有限公司 一种存储控制方法、存储控制器、存储设备及存储***
US11610095B2 (en) * 2018-10-03 2023-03-21 Maxim Integrated Products, Inc. Systems and methods for energy-efficient data processing
CN111191775B (zh) * 2018-11-15 2023-10-27 南京博芯电子技术有限公司 一种“三明治”结构的加速卷积神经网络的存储器
KR102301041B1 (ko) * 2019-07-04 2021-09-14 한국과학기술연구원 뉴로모픽 장치
US10915248B1 (en) * 2019-08-07 2021-02-09 Macronix International Co., Ltd. Memory device
US11620487B2 (en) * 2019-12-31 2023-04-04 X Development Llc Neural architecture search based on synaptic connectivity graphs
US11593617B2 (en) 2019-12-31 2023-02-28 X Development Llc Reservoir computing neural networks based on synaptic connectivity graphs
US11625611B2 (en) 2019-12-31 2023-04-11 X Development Llc Training artificial neural networks based on synaptic connectivity graphs
US11593627B2 (en) 2019-12-31 2023-02-28 X Development Llc Artificial neural network architectures based on synaptic connectivity graphs
US11631000B2 (en) 2019-12-31 2023-04-18 X Development Llc Training artificial neural networks based on synaptic connectivity graphs
US11568201B2 (en) 2019-12-31 2023-01-31 X Development Llc Predicting neuron types based on synaptic connectivity graphs
US11449752B2 (en) * 2020-03-31 2022-09-20 Microsoft Technology Licensing, Llc System and method for gradient accumulation with free momentum
CN112099943B (zh) * 2020-08-13 2024-05-03 深圳云天励飞技术股份有限公司 内存分配方法及相关设备
CN112506057B (zh) * 2020-12-02 2021-09-17 郑州轻工业大学 不确定奇异摄动***在线多时间尺度快速自适应控制方法
US20230222368A1 (en) * 2022-01-12 2023-07-13 International Business Machines Corporation Neural network architecture for concurrent learning with antidromic spikes
CN114781633B (zh) * 2022-06-17 2022-10-14 电子科技大学 一种融合人工神经网络与脉冲神经网络的处理器

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020143720A1 (en) * 2001-04-03 2002-10-03 Anderson Robert Lee Data structure for improved software implementation of a neural network
US7426501B2 (en) * 2003-07-18 2008-09-16 Knowntech, Llc Nanotechnology neural network methods and systems
US8103606B2 (en) * 2006-12-08 2012-01-24 Medhat Moussa Architecture, system and method for artificial neural network implementation
US8751556B2 (en) * 2010-06-11 2014-06-10 Massachusetts Institute Of Technology Processor for large graph algorithm computations and matrix operations
KR20120028146A (ko) * 2010-09-14 2012-03-22 삼성전자주식회사 입출력 경로 스왑을 지원하는 메모리 시스템
US8892487B2 (en) * 2010-12-30 2014-11-18 International Business Machines Corporation Electronic synapses for reinforcement learning
US9449257B2 (en) * 2012-12-04 2016-09-20 Institute Of Semiconductors, Chinese Academy Of Sciences Dynamically reconstructable multistage parallel single instruction multiple data array processing system

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220041962A (ko) * 2015-05-21 2022-04-01 구글 엘엘씨 신경망 프로세서의 벡터 컴퓨테이션 유닛
US11227216B2 (en) 2015-05-21 2022-01-18 Google Llc Batch processing in a neural network processor
KR20200045017A (ko) * 2015-05-21 2020-04-29 구글 엘엘씨 신경망 프로세서에서의 배치 프로세싱
US11216726B2 (en) 2015-05-21 2022-01-04 Google Llc Batch processing in a neural network processor
US12014272B2 (en) 2015-05-21 2024-06-18 Google Llc Vector computation unit in a neural network processor
KR20230080510A (ko) * 2015-05-21 2023-06-07 구글 엘엘씨 신경망 프로세서에서의 배치 프로세싱
KR20220025158A (ko) * 2015-05-21 2022-03-03 구글 엘엘씨 신경망 프로세서에서의 배치 프로세싱
US11620508B2 (en) 2015-05-21 2023-04-04 Google Llc Vector computation unit in a neural network processor
KR20230016716A (ko) * 2015-05-21 2023-02-02 구글 엘엘씨 신경망 프로세서에서의 배치 프로세싱
KR20180101334A (ko) * 2016-01-20 2018-09-12 캠브리콘 테크놀로지스 코퍼레이션 리미티드 스파스 연결용 인공 신경망 계산 장치와 방법
KR20180093970A (ko) * 2016-01-20 2018-08-22 캠브리콘 테크놀로지스 코퍼레이션 리미티드 스파스 연결용 인공 신경망 계산 장치와 방법
KR20180093969A (ko) * 2016-01-20 2018-08-22 캠브리콘 테크놀로지스 코퍼레이션 리미티드 스파스 연결용 인공 신경망 계산 장치와 방법
WO2018124707A1 (ko) * 2016-12-27 2018-07-05 삼성전자 주식회사 신경망 연산을 이용한 입력 처리 방법 및 이를 위한 장치
KR20190139837A (ko) * 2017-04-19 2019-12-18 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 처리 장치 및 처리 방법
KR20180125734A (ko) * 2017-05-16 2018-11-26 한국전자통신연구원 파라미터 공유 장치 및 방법
US11276497B2 (en) 2017-08-25 2022-03-15 Medi Whale Inc. Diagnosis assistance system and control method thereof
WO2019107612A1 (ko) * 2017-11-30 2019-06-06 주식회사 시스트란인터내셔널 변환 수행 방법 및 이를 위한 장치
CN110825311A (zh) * 2018-08-10 2020-02-21 北京百度网讯科技有限公司 用于存储数据的方法和装置
CN110825311B (zh) * 2018-08-10 2023-04-18 昆仑芯(北京)科技有限公司 用于存储数据的方法和装置
KR20200023660A (ko) * 2018-08-13 2020-03-06 인천대학교 산학협력단 딥러닝 모델을 통한 추론 서비스를 제공할 때, 적어도 하나의 프로세서의 성능을 제어하는 전자 장치 및 그의 동작 방법
KR20210070262A (ko) * 2018-08-16 2021-06-14 주식회사 딥엑스 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치
KR20200020117A (ko) * 2018-08-16 2020-02-26 주식회사 딥엑스 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치
KR20200023029A (ko) * 2018-08-24 2020-03-04 연세대학교 산학협력단 진단 보조 시스템 및 그 제어 방법
KR20210022455A (ko) * 2019-08-20 2021-03-03 한국과학기술원 심층 신경망 학습 장치 및 그 방법
US11915141B2 (en) 2019-08-20 2024-02-27 Korea Advanced Institute Of Science And Technology Apparatus and method for training deep neural network using error propagation, weight gradient updating, and feed-forward processing
US11521085B2 (en) 2020-04-07 2022-12-06 International Business Machines Corporation Neural network weight distribution from a grid of memory elements

Also Published As

Publication number Publication date
US20160196488A1 (en) 2016-07-07

Similar Documents

Publication Publication Date Title
KR20150016089A (ko) 신경망 컴퓨팅 장치 및 시스템과 그 방법
US5617512A (en) Triangular scalable neural array processor
US5506998A (en) Parallel data processing system using a plurality of processing elements to process data and a plurality of trays connected to some of the processing elements to store and transfer data
US5544336A (en) Parallel data processing system which efficiently performs matrix and neurocomputer operations, in a negligible data transmission time
CN106875013B (zh) 用于多核优化循环神经网络的***和方法
CN109034373B (zh) 卷积神经网络的并行处理器及处理方法
US20190377997A1 (en) Synaptic, dendritic, somatic, and axonal plasticity in a network of neural cores using a plastic multi-stage crossbar switching
US20200034687A1 (en) Multi-compartment neurons with neural cores
US8996430B2 (en) Hierarchical scalable neuromorphic synaptronic system for synaptic and structural plasticity
KR20130090147A (ko) 신경망 컴퓨팅 장치 및 시스템과 그 방법
JP6912491B2 (ja) 省エネルギな多重ニューラル・コア回路、方法及びニューロシナプティック・システム
CN111667051A (zh) 适用边缘设备的神经网络加速器及神经网络加速计算方法
CN110728364A (zh) 一种运算装置和运算方法
CN112084038B (zh) 神经网络的内存分配方法及装置
US5146543A (en) Scalable neural array processor
CN110580519B (zh) 一种卷积运算装置及其方法
KR102610842B1 (ko) 뉴럴 네트워크에서의 프로세싱 엘리먼트 및 그 동작 방법
US5065339A (en) Orthogonal row-column neural processor
CN113159285B (zh) 神经网络加速器
US5148515A (en) Scalable neural array processor and method
JPH0258157A (ja) 人工ニユーロン回路網アーキテクチユア
CN114519425A (zh) 一种规模可扩展的卷积神经网络加速***
CN112712457A (zh) 数据处理方法以及人工智能处理器
US5146420A (en) Communicating adder tree system for neural array processor
US20220129769A1 (en) Modular neural network computing apparatus with distributed neural network storage

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid