KR20200020117A - 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치 - Google Patents
파이프라인 구조를 가지는 인공신경망용 연산 가속 장치 Download PDFInfo
- Publication number
- KR20200020117A KR20200020117A KR1020180095444A KR20180095444A KR20200020117A KR 20200020117 A KR20200020117 A KR 20200020117A KR 1020180095444 A KR1020180095444 A KR 1020180095444A KR 20180095444 A KR20180095444 A KR 20180095444A KR 20200020117 A KR20200020117 A KR 20200020117A
- Authority
- KR
- South Korea
- Prior art keywords
- input
- value
- logic circuit
- combinational logic
- node
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
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)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Advance Control (AREA)
Abstract
본 발명은 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치에 관한 것으로, 보다 구체적으로 출력값, 보정된 입력 데이터, 보정된 출력값, 가중치 보정, 입력 바이어스 보정 및 출력 바이어스 보정을 파이프라인 구조로 동시에 수행함으로써 학습에 따른 연산 시간을 줄일 수 있으며 사용되는 메모리를 줄일 수 있는 인공신경망용 연산 가속 장치에 관한 것이다.
Description
본 발명은 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치에 관한 것으로, 보다 구체적으로 출력값, 보정된 입력 데이터, 보정된 출력값, 가중치 보정, 입력 바이어스 보정 및 출력 바이어스 보정을 파이프라인 구조로 동시에 수행함으로써 학습에 따른 연산 시간을 줄일 수 있으며 사용되는 메모리를 줄일 수 있는 인공신경망용 연산 가속 장치에 관한 것이다.
인공신경망(Artificial Neural Network, ANN)은 기계학습과 인지과학에서 생물학의 신경망(동물의 중추신경계중 특히 뇌)에서 영감을 얻은 통계학적 학습 알고리즘이다. 인공신경망은 시냅스의 결합으로 네트워크를 형성한 인공 뉴런(노드)이 학습을 통해 시냅스의 결합 세기를 변화시켜, 문제 해결 능력을 가지는 모델 전반을 가리킨다.
이러한 인공신경망 모델 중 RBM(제한된 볼츠만 머신, Restricted Boltzmann machine)은 차원 감소, 분류, 선형 회귀 분석, 협업 필터링(collaborative filtering), 특징값 학습(feature learning) 및 주제 모델링(topic modelling)에 사용할 수 있는 알고리즘으로 Geoff Hinton이 제안한 모델이다.
RBM 모델에서 모든 은닉층(hidden layer)의 은닉 노드(hidden node)는 입력층(visible layer)의 입력 노드(input layer)와 연결되어 있고, 모든 입력층의 입력 노드도 은닉층의 은닉 노드와 연결되어 있다. 그러나 같은 층(layer)에 있는 노드끼리는 전혀 연결되어있지 않다.
다시말해, RBM 모델에서는 같은 층 내부의 연결이 전혀 없으며, 이러한 구조때문에‘제한된’볼츠만 머신이라는 이름을 붙인 것이다. 입력층의 입력 노드는 데이터를 입력받으며 입력받은 데이터를 은닉층에 얼마나 전달할 것인지를 확률에 따라 결정(stochastic decision)한다. 즉, 확률에 따라 입력을 전달할지(1로 표현) 혹은 전달하지 않을지(0으로 표현)를 결정한다.
도 1은 제한된 볼츠만 머신 모델의 개념을 설명하기 위한 도면이다.
도 1에 도시되어 있는 바와 같이, 입력층의 입력 노드(i)로 입력 데이터(v)가 입력되는 경우, 입력 노드의 입력 데이터와 가중치(wij)의 곱셈값은 서로 합해진 후 활성 함수, 예를 들어 시그모이드(Sigmoid) 함수를 거쳐 0 또는 1의 값으로 샘플링되어 은닉 노드(j)에서 출력값(h)으로 출력된다.
제한된 볼츠만 머신 모델은 비지도학습(unsupervised learning)으로 가중치를 조절하여 입력 데이터의 중요한 특징들을 학습하게 되는데, 여기서 가중치는 입력 데이터(v), 은닉 노드의 출력값(h), 재구성(reconstruction) 과정을 통해 계산되는 보정된 입력 데이터(v') 그리고 재생산(Regeneration) 과정을 통해 계산되는 보정된 출력값(h')으로부터 오차값(v'h'-vh)을 계산하여 조절된다.
도 2는 제한된 볼츠만 머신 모델에서 가중치를 조절하는 일 예를 설명하기 위한 도면이다.
도 2를 참고로 살펴보면, 도 2(a)에 도시되어 있는 바와 같이 재구성 과정에서 은닉층의 각 은닉 노드(j)의 출력값(h)과 가중치(wji)의 곱셈값은 모두 합산된 후, 활성 함수를 거쳐 0 또는 1의 값으로 샘플링되어 입력 노드(i)에서 보정된 입력 데이터(v')으로 출력된다.
도 2(b)에 도시되어 있는 바와 같이 재생산 과정에서 입력 노드(i)의 보정된 입력 데이터(v')와 가중치(wij)의 곱셈값은 서로 합해진 후 활성 함수를 거쳐 0 또는 1의 값으로 샘플링되어 은닉 노드(j)에서 다시 보정된 출력값(h')으로 출력된다.
위에서 설명한 출력값(h), 보정된 입력 데이터(v'), 보정된 출력값(h')의 계산은 각각 아래와 같이 수학식(1), 수학식(2) 및 수학식(3)과 같이 표현된다.
[수학식1]
[수학식2]
[수학식3]
여기서 P는 샘플링 함수, hcj는 입력 케이스(c)에 대한 은닉 노드(j)의 출력값, Nv는 입력 노드의 수, vci는 입력 노드(i)로 입력되는 입력 케이스(c)의 입력 데이터, wij는 입력 노드(i)와 은닉 노드(j) 사이의 가중치, 는 은닉 노드(j)의 입력 바이어스값, σ는 활성 함수로 예를 들어 로지스틱 함수(logistic function)인 것을 특징으로 한다.
한편, Nh는 은닉 노드의 수, hcj는 은닉 노드(j)에서 출력되는 입력 케이스(c)의 출력값, wji는 은닉 노드(j)와 입력 노드(i) 사이의 가중치, 는 입력 노드(i)의 출력 바이어스값, h'cj는 입력 케이스(c)에 대한 은닉 노드(j)의 보정된 출력값인 것을 특징으로 한다.
이와 같이 계산된 출력값(h), 보정된 입력 데이터(v') 및 보정된 출력값(h')를 이용하여 가중치(wij), 출력 바이어스(bh) 및 입력 바이어스(bv)는 입력 데이터의 특징을 학습하기 위해 보정되는데, 가중치, 출력 바이어스 및 입력 바이어스의 보정은 아래의 수학식(4), 수학식(5) 및 수학식(6)에 따라 보정된다.
[수학식 4]
[수학식 5]
[수학식 6]
여기서 Nc는 입력 배치를 구성하는 입력케이스의 수, ε학습율(learning rate)을 의미한다.
인공신경망에서 연산 시간과 학습 효율을 높이기 위하여 다수의 입력 데이터로 이루어진 입력 케이스(c)의 집합인 입력 배치(batch)를 기준으로 가중치 보정이 이루어진다.
인공신경망을 구현하는 인공신경망 장치는 크게 두 가지로 나눌 수 있다. 첫 번째는 CPU(Central Processing Unit)와 GPU (Graphic Processing Unit) 과 같은 범용 프로세서 기반의 인공신경망 장치이며, 두 번째는 FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit) 형태로 시냅스, 뉴런 등의 회로를 구성하여 인공신경망 장치를 구현하는 방법이다. 범용 프로세서 기반의 인공신경망 장치는 구현되는 시냅스의 개수에 비해 면적이 적고, 기존의 프로세서를 그대로 사용하기 때문에 설계가 용이하며, 프로그램의 변경만으로 다양한 형태의 인공신경망 장치를 구현할 수 있다는 장점이 있다. 하지만, FPGA 또는 ASIC으로 구현되는 인공신경망 장치에 비해서 인공신경망의 특징인 병렬처리, 분산처리의 효율이 떨어져 연산 속도가 느리고, 단일칩으로 구성하기 어렵고 소비 전력이 많다는 단점을 가진다.
FPGA 또는 ASIC 기술을 이용하여 인공 신경망을 구현하는 경우 사용하고자 하는 목적에 따라서 다양한 형태의 인공신경망 장치를 설계하는 것이 가능하며 이론적 모델에 가까운 형태로 신경망을 구현할 수 있다는 장점이 있다.
그러나 FPGA 또는 ASIC 기술을 이용하여 인공신경망 장치를 구현하더라도, 설계 방식에 따라 인공신경망 알고리즘을 구현하는데 필요한 연산량 또는 메모리가 상이할 수 있으며, 따라서 연산 속도를 높이고 메모리를 줄일 수 있는 최적화된 인공신경망용 연산 장치에 대한 요구가 크다.
본 발명에 위에서 언급한 종래 인공신경망용 연산 장치가 가지는 문제점을 해결하기 위한 것으로, 본 발명이 이루고자 하는 목적은 신경신경망 알고리즘을 구현하는, 파이프라인 구조를 가지는 최적화된 인공신경망 연산 가속 장치를 제공하는 것이다.
본 발명이 이루고자 하는 다른 목적은 최적화된 설계를 통하여 연산효율을 향상시키며 동시에 필요한 메모리를 줄일 수 있는 인공신경망 연산 가속 장치를 제공하는 것이다.
본 발명의 목적을 달성하기 위하여 본 발명의 일 실시예에 따른 인공신경망용 연산 가속 장치는 다수의 입력 데이터로 이루어진 입력 케이스의 집합인 입력 배치(batch)를 저장하는 입력 메모리부와, 조합 논리회로와 래지스터로 이루어진 스테이지가 다수 연결되어 있으며, 각 스테이지에서 입력 배치를 이용하여 입력 노드와 은닉 노드 사이의 가중치를 보정하는 데이터 처리 모듈과, 입력 케이스의 입력 데이터를 데이터 처리 모듈로 입력시키거나 데이터 처리 모듈의 각 스테이지의 동작을 제어하기 위한 제어 신호를 생성하는 제어부를 포함하는 것을 특징으로 한다.
바람직하게, 본 발명에 따른 데이터 처리 모듈은 입력층의 입력 노드(i)로 입력되는 입력 데이터에 가중치(wij)를 적용하여 은닉층의 은닉 노드(j)로 출력값(h)을 출력하는 제1 조합 논리회로와, 출력값(h)에 가중치를 적용하여 보정된 입력 데이터(v')를 출력하는 제2 조합 논리회로와, 보정된 입력 데이터(v')에 가중치를 적용하여 보정된 출력값(h')을 출력하는 제3 조합회로와, 입력 배치의 모든 입력 케이스에 대한 입력 데이터(v), 출력값(h), 보정된 입력 데이터(v'), 보정된 출력값(h')로부터 가중치 오차를 보정하는 제4 조합 논리회로를 포함하는 것을 특징으로 한다.
바람직하게, 본 발명에 따른 데이터 처리 모듈은 입력 배치의 모든 입력 케이스에 대한 입력 데이터(v)와 보정된 입력 데이터(v')로부터 입력 바이어스(bh)를 보정하는 제5 조합 논리회로와, 입력 배치의 모든 입력 케이스에 대한 출력값(h)과 보정된 출력값(h')로부터 출력 바이어스(bv)를 보정하는 제6 조합 논리회로를 더 포함하는 것을 특징으로 한다.
바람직하게, 본 발명에 따른 제2 조합 논리회로는 은닉 노드(j)의 출력값에 가중치(wji)를 곱하여 곱셈값을 계산하는 곱셈기와, 누적기와, 곱셈기에서 곱셈값이 계산될 때마다 곱셈값과 누적기에 저장된 이전 누적값을 합산하여 현재 누적값을 계산하는 합산기를 포함하며, 누적기에 기저장된 이전 누적값은 현재 누적값으로 갱신되는 것을 특징으로 한다.
바람직하게, 본 발명에 따른 제2 조합 논리회로는 곱셈기와 합산기를 통해 계산된 최종 누적값에 출력 바이어스값을 합산한 제1 버퍼링값을 저장하는 제1 버퍼부와, 제1 버퍼부에 저장된 제1 버퍼링값을 순차적으로 입력받아 활성 함수값을 계산하는 활성 함수부와, 할성 함수부에서 출력되는 활성 함수값을 샘플링하여 샘플링값을 계산하는 샘플링부와, 순차적으로 계산되는 샘플링값을 저장하는 제2 버퍼부를 포함하는 것을 특징으로 한다.
바람직하게, 본 발명에 따른 제 4 조합 논리회로는 제3 조합 논리회로로부터 은닉 노드(j)의 보정된 출력값(h'j)이 출력시 보정된 출력값(h'j)으로부터 입력 노드(i)와 은닉 노드(j) 사이의 부분 가중치 보정값을 계산하는 부분 가중치 계산부와, 입력 배치의 모든 입력 케이스에 대한 입력 노드(i)와 은닉 노드(j) 사이의 부분 가중치 보정값이 계산될 때마다 부분 가중치 보정값을 순차적으로 저장하는 부분 가중치 저장부와, 입력 배치의 모든 입력 케이스에 대한 입력 노드(i)와 은닉 노드(j) 사이의 부분 가중치 보정값이 계산 완료되는 경우 계산 완료된 부분 가중치 보정값으로부터 입력 노드(i)와 은닉 노드(j) 사이의 가중치를 보정하는 보정부를 포함하는 것을 특징으로 한다.
여기서 부분 가중치 계산부는 입력 배치의 입력 케이스 시퀀스에 따라 생성되는, 제어부의 제어 신호에 따라 선택되는 계산 경로에 의해 입력 노드(i)와 은닉 노드(j) 사이의 부분 가중치 보정값을 계산하는 것을 특징으로 한다.
바람직하게, 본 발명의 일 실시예에 따른 부분 가중치 계산부는 부분 가중치 저장부에 저장된 이전 부분 가중치 보정값에 모멘텀(momeutum) 계수가 곱해져 입력 노드(i)와 은닉 노드(j) 사이의 부분 가중치 보정값을 계산하는 제1 계산 경로와, 부분 가중치 저장부에 저장된 이전 부분 가중치 보정값에 가중치 오차값을 합산하여 입력 노드(i)의 부분 가중치 보정값을 계산하는 제2 계산 경로와, 부분 가중치 저장부에 저장된 이전 부분 가중치에 가중치 오차값을 합산한 합산값에서 가중치 감쇄 계수에 입력 노드(i)와 은닉 노드(j) 사이의 이전 가중치를 곱한 제1 곱셈값을 차감한 차감값에 학습율(learning rate) 계수를 곱하여 부분 가중치 보정값을 계산하는 제3 계산 경로를 포함하는 것을 특징으로 한다.
여기서 제어부는 입력 배치의 제1 입력 케이스에 대해서는 제1 계산 경로를 통해 부분 가중치 보정값을 계산하도록 제어하며, 입력 배치의 마지막 입력 케이스에 대해서는 제3 계산 경로를 통해 부분 가중치 보정값을 계산하도록 제어하며, 입력 배치의 제1 입력 케이스와 마지막 입력 케이스를 제외한 나머지 입력 케이스에 대해서는 제2 계산 경로를 통해 부분 가중치 보정값을 계산하도록 제어하는 것을 특징으로 한다.
바람직하게, 본 발명에 따른 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치는 제1 조합 논리회로에서 생성된 출력값(h) 또는 제2 조합 논리회로에서 생성된 보정된 입력 데이터(v')을 저장하기 위한 대기 메모리부를 더 포함하는 것을 특징으로 한다.
바람직하게, 본 발명의 일 실시예에 따른 대기 메모리부는 출력값이 생성되는 조합 논리회로와 사용되는 조합 논리회로 사이의 차이만큼 출력값을 저장하는 제1 대기 메모리부와, 보정된 입력 데이터가 생성되는 조합 논리회로와 사용되는 조합 논리회로 사이의 차이만큼 보정된 입력 데이터를 저장하는 제2 대기 메모리부를 더 포함하는 것을 특징으로 한다.
본 발명에 따른 인공신경망용 연산 가속 장치는 다음과 같은 다양한 효과를 가진다.
첫째, 본 발명에 따른 인공신경망용 연산 가속 장치는 출력값, 보정된 입력 데이터, 보정된 출력값, 가중치 보정, 입력 바이어스 보정 및 출력 바이어스 보정을 파이프라인 구조로 동시에 수행함으로써, 학습에 따른 연산 시간을 줄일 수 있다.
둘째, 본 발명에 따른 인공신경망용 연산 가속 장치는 순차적으로 생성되는 출력값(h)과 가중치(wji)의 곱을 적층하여 보정된 입력 데이터(vi)를 계산함으로써, 가중치(wij) 행렬을 트랜스포즈(transpose)하기 위한 연산과 트랜스포즈된 가중치 행렬을 저장하기 위한 메모리가 필요하지 않다.
셋째, 본 발명에 따른 인공신경망용 연산 가속 장치는 제4 조합 논리회로에서 가중치를 보정시 은닉 노드(j)에서 보정된 출력값(h'j)이 생성될 때마다 입력 노드(i)와 은닉 노드(j) 사이의 부분 가중치 보정값을 생성하며 순차적으로 생성되는 모든 입력 케이스에 대해 부분 가중치 보정값을 누적하여 가중치를 보정함으로써, 연산 시간을 줄일 수 있으며 모든 입력 케이스에 대한 보정된 출력값 전체를 저장하기 위한 메모리가 필요하지 않다.
도 1은 제한된 볼츠만 머신 모델의 개념을 설명하기 위한 도면이다.
도 2는 제한된 볼츠만 머신 모델에서 가중치를 조절하는 일 예를 설명하기 위한 도면이다.
도 3은 본 발명에 따른 인공신경망용 연산 가속 장치를 설명하기 위한 도면이다.
도 4는 본 발명에 따른 데이터 처리 모듈을 설명하기 위한 도면이다.
도 5는 본 발명에 따른 생산(generation) 과정을 수행하는 제1 조합 논리회로를 설명하기 위한 기능 블록도이다.
도 6은 본 발명에 따른 재구성(reconstruction) 과정을 수행하는 제2 조합 논리회로(220)를 설명하기 위한 기능 블록도이다.
도 7은 본 발명의 일 실시예에 따른 제4 조합 논리회로를 설명하기 위한 기능 블록도이다.
도 8은 본 발명에 따른 부분 가중치 계산부의 일 예를 설명하기 위한 기능 블록도이다.
도 9는 본 발명에 따른 제1 조합 논리회로의 구현예를 도시하고 있다.
도 10은 본 발명에 따른 제2 조합 논리회로의 구현예를 도시하고 있다.
도 11은 본 발명에 따른 제3 조합 논리회로의 구현예를 도시하고 있다.
도 12는 본 발명에 따른 제4 조합 논리회로의 구현예를 도시하고 있다.
도 13은 본 발명에 따른 제5 조합 논리회로의 구현예를 도시하고 있다.
도 14는 본 발명에 따른 제1 조합 논리회로 내지 제6 조합 논리회로의 타임라인을 설명하기 위한 도면이다.
도 15는 출력값의 생산 스테이지와 사용 스테이지를 설명하기 위한 도면이다.
도 16은 본 발명에 따른 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치의 향상된 성능을 설명하기 위한 도면이다.
도 17은 본원발명의 파이프라인 구조를 가지는 인공신경망 연산 가속 장치의 성능 비교치를 설명하기 위한 도면이다.
도 2는 제한된 볼츠만 머신 모델에서 가중치를 조절하는 일 예를 설명하기 위한 도면이다.
도 3은 본 발명에 따른 인공신경망용 연산 가속 장치를 설명하기 위한 도면이다.
도 4는 본 발명에 따른 데이터 처리 모듈을 설명하기 위한 도면이다.
도 5는 본 발명에 따른 생산(generation) 과정을 수행하는 제1 조합 논리회로를 설명하기 위한 기능 블록도이다.
도 6은 본 발명에 따른 재구성(reconstruction) 과정을 수행하는 제2 조합 논리회로(220)를 설명하기 위한 기능 블록도이다.
도 7은 본 발명의 일 실시예에 따른 제4 조합 논리회로를 설명하기 위한 기능 블록도이다.
도 8은 본 발명에 따른 부분 가중치 계산부의 일 예를 설명하기 위한 기능 블록도이다.
도 9는 본 발명에 따른 제1 조합 논리회로의 구현예를 도시하고 있다.
도 10은 본 발명에 따른 제2 조합 논리회로의 구현예를 도시하고 있다.
도 11은 본 발명에 따른 제3 조합 논리회로의 구현예를 도시하고 있다.
도 12는 본 발명에 따른 제4 조합 논리회로의 구현예를 도시하고 있다.
도 13은 본 발명에 따른 제5 조합 논리회로의 구현예를 도시하고 있다.
도 14는 본 발명에 따른 제1 조합 논리회로 내지 제6 조합 논리회로의 타임라인을 설명하기 위한 도면이다.
도 15는 출력값의 생산 스테이지와 사용 스테이지를 설명하기 위한 도면이다.
도 16은 본 발명에 따른 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치의 향상된 성능을 설명하기 위한 도면이다.
도 17은 본원발명의 파이프라인 구조를 가지는 인공신경망 연산 가속 장치의 성능 비교치를 설명하기 위한 도면이다.
본 발명에서 사용되는 기술적 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 발명에서 사용되는 기술적 용어는 본 발명에서 특별히 다른 의미로 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나, 과도하게 축소된 의미로 해석되지 않아야 한다. 또한, 본 발명에서 사용되는 기술적인 용어가 본 발명의 사상을 정확하게 표현하지 못하는 잘못된 기술적 용어일 때에는, 당업자가 올바르게 이해할 수 있는 기술적 용어로 대체되어 이해되어야 할 것이다.
또한, 본 발명에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함한다. 본 발명에서, "구성된다" 또는 "포함한다" 등의 용어는 발명에 기재된 여러 구성 요소들, 또는 여러 단계를 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 첨부된 도면은 본 발명의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 발명의 사상이 제한되는 것으로 해석되어서는 아니 됨을 유의해야 한다.
이하 첨부한 도면을 참고로 본 발명에 따른 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치에 대해 보다 구체적으로 설명한다.
도 3은 본 발명에 따른 인공신경망용 연산 가속 장치를 설명하기 위한 도면이다.
도 3을 참고로 보다 구체적으로 살펴보면, 입력 메모리부(100)에는 학습하고자 하는 학습 데이터가 저장되어 있다. 여기서 입력 메모리부(100)에 저장되어 있는 학습 데이터는 다수의 입력 데이터로 이루어진 입력 케이스의 집합인 입력 배치(batch)로 구분되어 데이터 처리 모듈(200)로 입력된다.
데이터 처리 모듈(200)는 조합 논리회로와 래지스터로 이루어진 스테이지가 다수 연결되어 있으며, 각 스테이지는 입력된 입력 배치를 이용하여 입력 노드와 은닉 노드 사이의 가중치를 보정한다.
제어부(300)는 클럭 신호에 동기화하여 입력 케이스의 입력 데이터를 데이터 처리 모듈(200)로 입력시키거나 데이터 처리 모듈(200)의 각 스테이지의 동작을 제어하기 위한 제어 신호를 생성한다. 즉, 제어부(300)는 클럭 신호에 동기화하여 입력 메모리부(100)에 저장되어 있는 입력 배치의 각 입력 케이스별로 입력 데이터를 순차적으로 데이터 처리 모듈(200)로 입력하기 위한 제어 신호를 생성하거나, 클럭 신호에 동기화하여 데이터 처리 모듈(200)의 각 스테이지를 구성하는 조합 논리회로의 동작을 제어하기 위한 제어 신호를 생성한다.
데이터 처리 모듈(200)은 제어부(300)의 제어 신호에 따라 생산(generation) 과정을 통해 계산되는 은닉 노드의 출력값(h), 재구성(reconstruction) 과정을 통해 계산되는 보정된 입력 데이터(v') 그리고 재생산(Regeneration) 과정을 통해 계산되는 보정된 출력값(h')으로부터 오차값(v'h'-vh)을 계산하여 입력 데이터의 특징을 추출하기 위한 가중치를 보정한다.
도 4는 본 발명에 따른 데이터 처리 모듈을 설명하기 위한 도면이다.
도 4를 참고로 살펴보면, 본 발명에 따른 데이터 처리 모듈은 입력층의 입력 노드(i)로 입력되는 입력 데이터에 가중치(wij)를 적용하여 은닉층의 은닉 노드(j)로 출력값(h)을 출력하는 제1 조합 논리회로(210)와, 출력값(h)에 가중치를 적용하여 보정된 입력 데이터(v')를 출력하는 제2 조합 논리회로(220)와, 보정된 입력 데이터(v')에 가중치를 적용하여 보정된 출력값(h')을 출력하는 제3 조합회로(230)와, 입력 배치의 모든 입력 케이스에 대한 입력 데이터(v), 출력값(h), 보정된 입력 데이터(v'), 보정된 출력값(h')로부터 가중치를 보정하는 제4 조합 논리회로(240)와, 입력 배치의 모든 입력 케이스에 대한 입력 데이터(v)와 보정된 입력 데이터(v')로부터 입력 바이어스(bh)를 보정하는 제5 조합 논리회로(250)와, 입력 배치의 모든 입력 케이스에 대한 출력값(h)과 보정된 출력값(h')로부터 출력 바이어스(bv)를 보정하는 제6 조합 논리회로(260)를 포함한다.
본 발명에 따른 데이터 처리 모듈(200)은 성능을 높이기 위해 데이터 처리 모듈을 다수의 조합 논리 회로(210, 220, 230, 240, 250, 260)로 분할한 파이프 라인 구조를 사용하는데, 분할된 조합 논리회로(210, 220, 230, 240, 250, 260) 사이에는 설계한 스테이지에 따라 조합 논리회로로 입력과 출력을 저장하기 위한 버퍼부를 구비할 수 있다. 조합 논리회로와 조합 논리회로 사이의 버퍼부는 앞의 조합 논리회로의 출력 레지스터이자 뒤의 조합 논리회로의 입력 레지스터 역할을 수행한다.
본 발명에 따른 데이터 처리 모듈(200)은 도 4와 같이 파이프라인 구조를 사용하는 동기식 디지털 시스템으로, 동시에 생산 과정, 재구성 과정, 재생성 과정, 가중치 보정 과정, 입력 바이어스의 보정 과정 및 출력 바이어스의 보정 과정의 데이터 처리를 수행할 뿐 아니라, 동작 속도(클럭 속도)도 높이는 효과를 가져온다. 이는 도 4과 같이 데이터 처리 모듈을 구성하는 6개로 분할된 각 조합 논리회로(210, 220, 230, 240, 250, 260)에서 연속된 프로세싱이 동시에 수행될 수 있기 때문이다.
도 5는 본 발명에 따른 생산(generation) 과정을 수행하는 제1 조합 논리회로를 설명하기 위한 기능 블록도이다.
도 5를 참고로 보다 구체적으로 살펴보면, 제1 버퍼부(211)에 저장된 입력 케이스(c)의 입력 데이터(v1, v2,....vN)는 각 입력 노드로 입력된다. 연산부(2213)는 각 입력 노드의 입력 데이터를 입력 노드(i)와 은닉 노드(j) 사이의 가중치(wij)에 곱하여 곱셈값을 생성하고 생성한 모든 입력 데이터의 곱셈값을 서로 합산하여 은닉 노드(j)에 대한 합산값을 출력한다. 여기서 가중치(wij)는 입력 케이스별로 그리고 입력 데이터별로 구분되어 행렬 형태로 메모리(w)에 저장되어 있는 것을 특징으로 한다.
제1 합산부(215)는 은닉 노드(j)에 대한 합산값과 은닉 노드(j)에 대한 입력 바이어스(bh)를 합하며, 활성 함수부(217)는 은닉 노드(j)에 대한 합산값과 은닉 노드(j)에 대한 입력 바이어스(bh)를 합한 값을 시그모이드(sigmoid) 패턴의 활성 함수(예를 들어, 로지스틱(logistic) 함수)에 적용하여 0과 1 사이의 값을 가지는 확률값으로 계산한다.
샘플링부(219)는 활성 함수부(217)에서 계산된 확률값과 기준값을 비교하여 0 또는 1 중 어느 하나의 값으로 샘플링하여 은닉 노드(j)에 대한 출력값(h)을 생성한다.
도 6은 본 발명에 따른 재구성(reconstruction) 과정을 수행하는 제2 조합 논리회로(220)를 설명하기 위한 기능 블록도이다.
제1 조합 논리회로(210)에서 출력값(h)이 생성되는 즉시, 제2 조합 논리회로(200)는 출력값(h)으로부터 입력 노드(i)에 대한 보정된 입력 데이터(v')를 생성한다. 재구성 과정에서 입력 노드(i)에 대한 보정된 입력 데이터를 생성하기 위해서는 트랜스포즈된(transposed) 가중치(wji)와 각 은닉 노드(hj)의 출력값이 서로 곱해져야 한다. 따라서 입력 노드(i)에 대한 보정된 입력 데이터를 생성하기 위해 메모리(w)에서 각 은닉 노드(j)와 입력 노드(i) 사이의 가중치를 읽고(read) 트랜스포즈된 가중치를 저장하기 위한 별도의 메모리가 필요한데, 본원발명의 제2 조합 논리회로(220)는 곱셈-누적(multiply-accumulate) 수단(implementation, L)을 통해 별도의 트랜스포즈된 가중치를 저장하기 위한 메모리없이도 보정된 입력 데이터를 생성할 수 있다.
도 6을 참고로 보다 구체적으로 살펴보면, 제1 조합 논리회로에서 출력값(h)가 출력되는 시점에, 곱셈기(221)는 은닉 노드(j)의 출력값을 은닉 노드(j)와 입력 노드(i) 사이의 가중치(wji)에 곱하며, 제2 합산부(122)는 저장부(223)에 기저장된 누적값과 곱셈값을 합산하여 다시 저장부(223)에 저장한다. 이러한 곱셈-누적 과정은 마지막 은닉 노드의 출력값을 마지막 은닉 노드와 입력 노드 사이의 가중치에 곱한 후 저장부(223)에 기저장된 누적값과 합산하여 최종 누적값을 계산할 때까지 수행된다.
제 3 합산부(224)는 최종 누적값에 입력 노드(j)에 대한 출력 바이어스(bv)를 합하여 제2 버퍼부(225)에 저장한다. 제2 버퍼부(225)에 저장된 값은 순차적으로 활성 함수부(226) 및 샘플링부(227)에 입력되어 보정된 입력 데이터(v')를 생성한다. 순차적으로 생성되는 보정된 입력 데이터(v')는 제3 버퍼부(229)에 저장된다.
제3 버퍼부(229)에 저장된 보정된 입력 데이터(v')는 제3 조합 논리회로(230)에서 앞서 제1 조합 논리회로(210)에서 이루어지는 생성 과정을 동일하게 반복하여 각 은닉 노드의 보정된 출력값(h')을 생성한다.
도 7은 본 발명의 일 실시예에 따른 제4 조합 논리회로를 설명하기 위한 기능 블록도이다.
앞서 설명한 수학식(4)와 같이 가중치를 보정하기 위하여, 입력 배치를 구성하는 모든 입력 케이스에 대한 입력 데이터(v), 출력값(h), 보정된 입력 데이터(v') 및 보정된 출력값(h')이 모두 필요하다. 따라서 가중치를 계산하기 위하여 모든 입력 케이스에 대한 입력 데이터(v), 출력값(h), 보정된 입력 데이터(v') 및 보정된 출력값(h')이 계산 완료될 때까지 기다려야 하며, 모든 입력 케이스에 대한 출력값(h), 보정된 입력 데이터(v') 및 보정된 출력값(h')를 저장하기 위한 메모리가 필요하다.
본원발명에서 제4 조합 논리회로(240)는 입력 케이스별로 은닉 노드(j)에서 보정된 출력값(h')이 생성되는 즉시 모든 입력 노드와 은닉 노드 사이의 부분 가중치 보정값(△w)을 입력 케이스별로 순차적으로 계산하며 최종적으로 마지막 입력 케이스의 부분 가중치 보정값까지 합산하여 가중치 보상을 수행함으로써, 가중치 보상을 위한 연산 시간을 줄일 수 있고 출력값(h), 보정된 입력 데이터(v') 및 보정된 출력값(h')을 저장하기 위한 메모리없이 가중치 보정이 가능하다.
도 7을 참고로 본 발명에 따른 제4 조합 논리회로를 보다 구체적으로 살펴보면, 가중치 오차값 계산부(241)는 은닉 노드(j)의 보정된 출력값(h')이 생성되는 경우 입력 케이스의 모든 입력 노드에 대한 가중치 오차값을 계산한다. 여기서 입력 케이스(c)에 대한 가중치 오차값(Ec)은 입력 데이터와 출력값 사이의 곱셈값에서 보정된 입력 데이터와 보정된 출력값 사이의 곱셈값을 차감하여 아래의 수학식(7)과 같이 계산된다.
[수학식 7]
Ec=vci×hcj-v'ci×h'cj을 의미한다.
부분 가중치 계산부(242)는 제어부로부터 제공되는 입력 케이스별 제어신호에 기초하여 가중치 오차값으로부터 입력 노드(i)와 은닉 노드(j) 사이의 부분 가중치 보정값(△w)을 계산한다.
부분 가중치 저장부(243)는 입력 배치의 입력 케이스별로 입력 노드(i)와 은닉 노드(j) 사이의 부분 가중치 보정값이 계산될 때마다 부분 가중치 보정값을 순차적으로 저장한다.
보정부(244)는 입력 배치의 모든 입력 케이스에 대한 입력 노드(i)와 은닉 노드(j) 사이의 부분 가중치 보정값이 계산 완료되는 경우, 계산 완료된 부분 가중치 보정값으로부터 입력 노드(i)와 은닉 노드(j) 사이의 가중치를 보정한다.
도 8은 본 발명에 따른 부분 가중치 계산부의 일 예를 설명하기 위한 기능 블록도이다.
도 8을 참고로 보다 구체적으로 살펴보면, 부분 가중치 계산부에서 입력 케이스의 시퀀스에 따라 부분 가중치 보정값을 계산하는 계산 경로가 상이한데, 부분 가중치 저장부(243)에 저장된 이전 부분 가중치 보정값에 모멘텀(momeutum) 계수(cm)가 곱해져 입력 노드(i)와 은닉 노드(j) 사이의 부분 가중치 보정값을 계산하는 제1 계산 경로(242-1)와, 부분 가중치 저장부에 저장된 이전 부분 가중치 보정값에 가중치 오차값을 합산하여 입력 노드(i)의 부분 가중치 보정값을 계산하는 제2 계산 경로(242-2)와, 부분 가중치 저장부에 저장된 이전 부분 가중치에 가중치 오차값을 합산한 합산값에서 가중치 감쇄 계수(Wd)에 입력 노드(i)와 은닉 노드(j) 사이의 이전 가중치를 곱한 곱셈값을 차감한 차감값에 학습율(learning rate) 계수(ε)를 곱하여 부분 가중치 보정값을 계산하는 제3 계산 경로(242-3)을 구비한다.
부분 가중치 계산부는 입력 배치의 입력 케이스 시퀀스에 따라 생성되는, 제어부의 제어 신호에 따라 선택되는 계산 경로에 의해 입력 노드(i)와 은닉 노드(j) 사이의 부분 가중치 보정값을 계산하는 것을 특징으로 한다.
제어부는 입력 배치의 제1 입력 케이스에 대해서는 제1 계산 경로(242-1)를 통해 부분 가중치 보정값을 계산하도록 제어하며, 입력 배치의 마지막 입력 케이스에 대해서는 제3 계산 경로(242-3)를 통해 부분 가중치 보정값을 계산하도록 제어하며, 입력 배치의 제1 입력 케이스와 마지막 입력 케이스를 제외한 나머지 입력 케이스에 대해서는 제2 계산 경로(242-2)를 통해 부분 가중치 보정값을 계산하도록 제어하는 것을 특징으로 한다.
도 9는 본 발명에 따른 제1 조합 논리회로의 구현예를 도시하고 있으며 도 10은 제2 조합 논리회로의 구현예를 도시하고 있다. 도 9에 도시된 제1 조합 논리회로와 제2 조합 논리회로 2A의 구현예를 통해 출력값을 생성하기 위한 코드는 아래와 같다.
도 10에 도시되어 있는 바와 같이, 제2 조합 논리회로를 2A와 2B로 구분하며 2A와 2B 사이에 제2 버퍼부를 배치하는데, 제2 버퍼부에 저장된 최종 누적값(tem2)에 입력 노드(j)에 대한 출력 바이어스(bv)를 합한 값은 순차적으로 활성 함수부(226) 및 샘플링부(227)에 입력되어 보정된 입력 데이터(v')를 생성한다. 제2 조합 논리회로를 2A와 2B로 구분하며 2A와 2B 사이에 제2 버퍼부를 배치함으로써, 1개의 활성 함수부(226) 및 샘플링부(227)만을 이용하여 모든 보정된 입력 데이터를 생성할 수 있다.
한편, 도 11은 본 발명에 따른 제3 조합 논리회로의 구현예를 도시하고 있으며, 도 12는 본 발명에 따른 제4 조합 논리회로의 구현예를 도시하고 있으며, 도 13은 본 발명에 따른 제5 조합 논리회로의 구현예를 도시하고 있다. 출력 바이어스를 업데이트하기 위한 제6 조합 논리회로의 구현예는 제5 조합 논리회로와 유사하게 구현 가능하다.
도 12에 도시된 제4 조합 논리회로의 구현예를 통해 가중치 보정을 수행하기 위한 코드는 아래와 같다.
도 13에 도시된 제5 조합 논리회로의 구현예를 통해 입력 바이어스의 보정을 수행하기 위한 코드는 아래와 같다.
도 14는 본 발명에 따른 제1 조합 논리회로 내지 제6 조합 논리회로의 타임라인을 설명하기 위한 도면이다.
도 14에 도시되어 있는 바와 같이, 제1 조합 논리회로 내지 제3 조합 논리회로에서는 각각 N×NC의 클락이 소요되며, 제4 조합 논리회로와 제5 조합 논리회로에서는 (N+1)×NC의 클락이 소요되며, 따라서 가중치 보정을 위해 전체적으로 (N+2)×NC의 클락이 소요됨을 알 수 있다. 여기서 N은 입력 노드 또는 출력 노드의 수를 의미하며(입력 노드와 출력 노드의 수는 서로 상이할 수 있는데, 설명의 편의를 위하여 입력 노드와 출력 노드의 수는 N으로 동일하다고 가정함), NC는 입력 배치를 구성하는 입력 케이스의 수를 의미한다.
한편 통상적인 인공신경망 연산 가속 장치의 경우 입력 데이터, 출력값, 보정된 입력 데이터 및 보정된 출력값 전체를 저장하기 위한 메모리가 각각 필요하며 이는 인공신경망 연산 가속 장치를 구현하는데 비용을 증가시키는 문제점을 가진다. 예를 들어, 출력값(h)을 저장하기 위하여 NC×Nh×BWdata -path의 메모리 공간이 필요하다.
본 발명에 따른 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치에서 입력 데이터, 출력값 및 보정된 입력 데이터는 각 데이터가 생성된 스테이지에서 각 데이터가 사용되는 스테이지(stage)까지만 데이터를 저장하기 때문에, 입력 데이터, 출력값 및 보정된 입력 데이터를 저장하는데 소요되는 메모리 공간을 줄일 수 있다. 예를 들어, 도 15에 도시되어 있는 바와 같이 출력값(h)의 경우 제1 조합 논리회로에서 생성되며 생성된 출력값은 제2 조합 논리회로, 제4 조합 논리회로 및 제6 조합 논리회로에서 사용되는데, 제2 조합 논리회로와 제6 조합 논리회로는 출력값이 생성되는 즉시 출력값을 바로 사용하기 때문에 별도의 출력값을 저장하기 위한 별도의 메모리 공간이 필요하지 않다. 한편, 출력값(h)이 생성되는 제1 조합 논리회로와 출력값(h)이 사용되는 제4 조합 논리회로 사이의 스테이지 차이는 2이므로, 전체적으로 출력값(h)의 3개열을 저장하기 위한 메모리 공간만 필요하다.
도 16은 본 발명에 따른 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치의 향상된 성능을 설명하기 위한 도면이다.
X측은 한 번의 가중치 업데이트를 위해 사용하는 입력 케이스 수이며 Y 축은 이에 따르는 성능 향상 수치이다.
입력 케이스가 1인 경우에라도 이미 다른 기술보다 월등한 성능 향상이 있지만 본 기술에서 입력 케이스를 증가시키면 성능 향상치는 급격히 올라가다가 포화(saturation)되기 시작한다. 본원발명에서는 다수의 입력 케이스로 이루어진 입력 배치를 단위로 학습하기 때문에 다수의 입력 케이스를 사용하여 학습하는 경우 더 높은 성능 향상을 가질 수 있다.
이러한 성능 향상은 본원발명이 파이프라인 구조를 가지기 때문인데, 입력 케이스 1을 가정할 때, 첫 번째 입력을 받을 때는 이후의 파이프라인 스테이지는 휴지 상태에 있다. 첫 번째 입력에 대한 연산을 첫 파이프라인 스테이지가 마치면 두 번째 파이프라인 스테이지만 연산하고 다른 스테이지들은 휴지 상태이다. 반면에 입력케이스가 2가 되면, 첫 번째 스테이지 연산 후에 2개 스테이지가 연산하게 된다. 즉 입력케이스가 증가하면, 동시에 동작하는 하드웨어 양이 늘어 전체 연산 성능이 증가한다.
도 17은 본원발명의 파이프라인 구조를 가지는 인공신경망 연산 가속 장치의 성능 비교치를 설명하기 위한 도면이다.
RBM 연산 장치를 인텔 CPU로 구현한 결과를 성능 1로 기준 설정하는 경우, GPU를 사용하여 RBM 연산 장치를 구현한 결과는 CPU 대비 30배의 연산 성능 향상을 제공함을 알 수 있다. 한편, FPGA를 사용하여 RBM 연산 장치를 구현한 종래 결과는 CPU 대비 61배의 연산 성능 향상을 제공하며, 본원발명에 따라 RBM 연산 가속 장치를 같은 FPGA 디바이스로 구현한 결과는 CPU 대비 최대 755배, GPU 대비 최대 25배, 같은 FPGA 디바이스 기반 기술 대비 최대 12배 이상의 성능 향상을 제공함을 알 수 있다.
100: 입력 메모리부
200: 데이터 처리 모듈
300: 제어부
210: 제1 조합 논리회로 220: 제2 조합 논리회로
230: 제3 조합 논리회로 240: 제4 조합 논리회로
250: 제5 조합 논리회로 260: 제6 조합 논리회로
300: 제어부
210: 제1 조합 논리회로 220: 제2 조합 논리회로
230: 제3 조합 논리회로 240: 제4 조합 논리회로
250: 제5 조합 논리회로 260: 제6 조합 논리회로
Claims (11)
- 다수의 입력 데이터로 이루어진 입력 케이스의 집합인 입력 배치(batch)를 저장하는 입력 메모리부;
조합 논리회로와 래지스터로 이루어진 스테이지가 다수 연결되어 있으며, 각 스테이지에서 상기 입력 배치를 이용하여 입력 노드와 은닉 노드 사이의 가중치를 보정하는 데이터 처리 모듈; 및
상기 입력 케이스의 입력 데이터를 상기 데이터 처리 모듈로 입력시키거나 상기 데이터 처리 모듈의 각 스테이지의 동작을 제어하기 위한 제어 신호를 생성하는 제어부를 포함하는 것을 특징으로 하는 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치. - 제 1 항에 있어서, 상기 데이터 처리 모듈은
입력층의 입력 노드(i)로 입력되는 입력 데이터에 가중치(wij)를 적용하여 은닉층의 은닉 노드(j)로 출력값(h)을 출력하는 제1 조합 논리회로;
상기 출력값(h)에 가중치를 적용하여 보정된 입력 데이터(v')를 출력하는 제2 조합 논리회로;
상기 보정된 입력 데이터(v')에 가중치를 적용하여 보정된 출력값(h')을 출력하는 제3 조합회로; 및
상기 입력 배치의 모든 입력 케이스에 대한 상기 입력 데이터(v), 출력값(h), 보정된 입력 데이터(v'), 보정된 출력값(h')로부터 가중치 오차를 보정하는 제4 조합 논리회로를 포함하는 것을 특징으로 하는 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치. - 제 2 항에 있어서, 상기 데이터 처리 모듈은
상기 입력 배치의 모든 입력 케이스에 대한 상기 입력 데이터(v)와 보정된 입력 데이터(v')로부터 입력 바이어스(bh)를 보정하는 제5 조합 논리회로; 및
상기 입력 배치의 모든 입력 케이스에 대한 상기 출력값(h)과 보정된 출력값(h')로부터 출력 바이어스(bv)를 보정하는 제6 조합 논리회로를 더 포함하는 것을 특징으로 하는 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치. - 제 2 항에 있어서, 상기 제2 조합 논리회로는
은닉 노드(j)의 출력값에 가중치(wji)를 곱하여 곱셈값을 계산하는 곱셈기;
누적기; 및
상기 곱셈기에서 곱셈값이 계산될 때마다 상기 곱셈값과 상기 누적기에 저장된 이전 누적값을 합산하여 현재 누적값을 계산하는 합산기를 포함하며,
상기 누적기에 기저장된 상기 이전 누적값은 상기 현재 누적값으로 갱신되는 것을 특징으로 하는 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치. - 제 4 항에 있어서, 상기 제2 조합 논리회로는
상기 곱셈기와 상기 합산기를 통해 계산된 최종 누적값에 출력 바이어스값을 합산한 제1 버퍼링값을 저장하는 제1 버퍼부;
상기 제1 버퍼부에 저장된 제1 버퍼링값을 순차적으로 입력받아 활성 함수값을 계산하는 활성 함수부;
상기 할성 함수부에서 출력되는 활성 함수값을 샘플링하여 샘플링값을 계산하는 샘플링부; 및
순차적으로 계산되는 상기 샘플링값을 저장하는 제2 버퍼부를 포함하는 것을 특징으로 하는 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치. - 제 2 항에 있어서, 상기 제 4 조합 논리회로는
상기 제3 조합 논리회로로부터 은닉 노드(j)의 보정된 출력값(h'j)이 출력시 상기 보정된 출력값(h'j)으로부터 입력 노드(i)와 은닉 노드(j) 사이의 부분 가중치 보정값을 계산하는 부분 가중치 계산부;
상기 입력 배치의 입력 케이스별로 입력 노드(i)와 은닉 노드(j) 사이의 부분 가중치 보정값이 계산될 때마다 상기 부분 가중치 보정값을 순차적으로 저장하는 부분 가중치 저장부; 및
상기 입력 배치의 모든 입력 케이스에 대한 입력 노드(i)와 은닉 노드(j) 사이의 부분 가중치 보정값이 계산 완료되는 경우, 계산 완료된 상기 부분 가중치 보정값으로부터 입력 노드(i)와 은닉 노드(j) 사이의 가중치를 보정하는 보정부를 포함하는 것을 특징으로 하는 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치. - 제 6 항에 있어서, 상기 부분 가중치 계산부는
상기 입력 배치의 입력 케이스 시퀀스에 따라 생성되는, 상기 제어부의 제어 신호에 따라 선택되는 계산 경로에 의해 입력 노드(i)와 은닉 노드(j) 사이의 부분 가중치 보정값을 계산하는 것을 특징으로 하는 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치. - 제 7 항에 있어서, 상기 부분 가중치 계산부는
상기 부분 가중치 저장부에 저장된 이전 부분 가중치 보정값에 모멘텀(momeutum) 계수가 곱해져 입력 노드(i)와 은닉 노드(j) 사이의 부분 가중치 보정값을 계산하는 제1 계산 경로;
상기 부분 가중치 저장부에0 저장된 이전 부분 가중치 보정값에 가중치 오차값을 합산하여 입력 노드(i)의 부분 가중치 보정값을 계산하는 제2 계산 경로; 및
상기 부분 가중치 저장부에 저장된 이전 부분 가중치에 가중치 오차값을 합산한 합산값에서 가중치 감쇄 계수에 입력 노드(i)와 은닉 노드(j) 사이의 이전 가중치를 곱한 제1 곱셈값을 차감한 차감값에 학습율(learning rate) 계수를 곱하여 부분 가중치 보정값을 계산하는 제3 계산 경로를 포함하는 것을 특징으로 하는 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치. - 제 8 항에 있어서, 상기 제어부는
상기 입력 배치의 제1 입력 케이스에 대해서는 상기 제1 계산 경로를 통해 부분 가중치 보정값을 계산하도록 제어하며,
상기 입력 배치의 마지막 입력 케이스에 대해서는 상기 제3 계산 경로를 통해 부분 가중치 보정값을 계산하도록 제어하며,
상기 입력 배치의 상기 제1 입력 케이스와 마지막 입력 케이스를 제외한 나머지 입력 케이스에 대해서는 상기 제2 계산 경로를 통해 부분 가중치 보정값을 계산하도록 제어하는 것을 특징으로 하는 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치. - 제 2 항에 있어서, 상기 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치는
상기 제1 조합 논리회로에서 생성된 출력값(h) 또는 상기 제2 조합 논리회로에서 생성된 보정된 입력 데이터(v')을 저장하기 위한 대기 메모리부를 더 포함하는 것을 특징으로 하는 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치. - 제 10 항에 있어서, 상기 대기 메모리부는
상기 출력값이 생성되는 조합 논리회로와 사용되는 조합 논리회로 사이의 차이만큼 상기 출력값을 저장하는 제1 대기 메모리부;
상기 보정된 입력 데이터가 생성되는 조합 논리회로와 사용되는 조합 논리회로 사이의 차이만큼 상기 보정된 입력 데이터를 저장하는 제2 대기 메모리부를 더 포함하는 것을 특징으로 하는 인공신경망용 연산 가속 장치.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180095444A KR102263598B1 (ko) | 2018-08-16 | 2018-08-16 | 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치 |
KR1020210072762A KR102396447B1 (ko) | 2018-08-16 | 2021-06-04 | 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180095444A KR102263598B1 (ko) | 2018-08-16 | 2018-08-16 | 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210072762A Division KR102396447B1 (ko) | 2018-08-16 | 2021-06-04 | 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200020117A true KR20200020117A (ko) | 2020-02-26 |
KR102263598B1 KR102263598B1 (ko) | 2021-06-10 |
Family
ID=69637998
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180095444A KR102263598B1 (ko) | 2018-08-16 | 2018-08-16 | 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치 |
KR1020210072762A KR102396447B1 (ko) | 2018-08-16 | 2021-06-04 | 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210072762A KR102396447B1 (ko) | 2018-08-16 | 2021-06-04 | 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치 |
Country Status (1)
Country | Link |
---|---|
KR (2) | KR102263598B1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210141240A (ko) * | 2020-05-15 | 2021-11-23 | 한국항공대학교산학협력단 | 멀티 gpu를 이용한 딥러닝 모델 학습 시의 최적 스플릿 크기 결정 장치 및 방법과 이를 이용한 딥러닝 모델 학습 방법 |
US11842220B2 (en) | 2020-10-28 | 2023-12-12 | Samsung Electronics Co., Ltd. | Parallelization method and apparatus with processing of neural network model for manycore system |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11757567B2 (en) | 2021-03-10 | 2023-09-12 | Samsung Electronics Co., Ltd. | Devices and methods for encoding and decoding to implement a maximum transition avoidance coding with minimum overhead |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040040075A (ko) * | 2002-11-06 | 2004-05-12 | 학교법인 인하학원 | 재구성능력 및 확장능력을 가진 신경회로망 하드웨어 |
KR20150016089A (ko) * | 2013-08-02 | 2015-02-11 | 안병익 | 신경망 컴퓨팅 장치 및 시스템과 그 방법 |
-
2018
- 2018-08-16 KR KR1020180095444A patent/KR102263598B1/ko active IP Right Grant
-
2021
- 2021-06-04 KR KR1020210072762A patent/KR102396447B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040040075A (ko) * | 2002-11-06 | 2004-05-12 | 학교법인 인하학원 | 재구성능력 및 확장능력을 가진 신경회로망 하드웨어 |
KR20150016089A (ko) * | 2013-08-02 | 2015-02-11 | 안병익 | 신경망 컴퓨팅 장치 및 시스템과 그 방법 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210141240A (ko) * | 2020-05-15 | 2021-11-23 | 한국항공대학교산학협력단 | 멀티 gpu를 이용한 딥러닝 모델 학습 시의 최적 스플릿 크기 결정 장치 및 방법과 이를 이용한 딥러닝 모델 학습 방법 |
US11842220B2 (en) | 2020-10-28 | 2023-12-12 | Samsung Electronics Co., Ltd. | Parallelization method and apparatus with processing of neural network model for manycore system |
Also Published As
Publication number | Publication date |
---|---|
KR102263598B1 (ko) | 2021-06-10 |
KR20210070262A (ko) | 2021-06-14 |
KR102396447B1 (ko) | 2022-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11544549B2 (en) | Method and apparatus with neural network | |
KR102396447B1 (ko) | 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치 | |
Neil et al. | Minitaur, an event-driven FPGA-based spiking network accelerator | |
Venkataramanaiah et al. | Automatic compiler based FPGA accelerator for CNN training | |
CN107609641A (zh) | 稀疏神经网络架构及其实现方法 | |
Lee et al. | Parallel deep convolutional neural network training by exploiting the overlapping of computation and communication | |
CN108090565A (zh) | 一种卷积神经网络并行化训练加速方法 | |
CN110543939B (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现装置 | |
TWI417797B (zh) | A Parallel Learning Architecture and Its Method for Transferred Neural Network | |
US11983616B2 (en) | Methods and apparatus for constructing digital circuits for performing matrix operations | |
Cai et al. | Training low bitwidth convolutional neural network on RRAM | |
Zhang et al. | Implementation and optimization of the accelerator based on FPGA hardware for LSTM network | |
Mukhopadhyay et al. | Systematic realization of a fully connected deep and convolutional neural network architecture on a field programmable gate array | |
Wu et al. | A 3.89-GOPS/mW scalable recurrent neural network processor with improved efficiency on memory and computation | |
CN114519425A (zh) | 一种规模可扩展的卷积神经网络加速系统 | |
US12020141B2 (en) | Deep learning apparatus for ANN having pipeline architecture | |
Kwedlo et al. | A parallel differential evolution algorithm for neural network training | |
Nevarez et al. | Accelerating spike-by-spike neural networks on fpga with hybrid custom floating-point and logarithmic dot-product approximation | |
EP4168943A1 (en) | System and method for accelerating training of deep learning networks | |
Lee et al. | Communication-efficient parallelization strategy for deep convolutional neural network training | |
Lu et al. | A reconfigurable DNN training accelerator on FPGA | |
Gross et al. | Hardware-aware design for edge intelligence | |
CN111985626A (zh) | 一种加速rnn网络的系统、方法及存储介质 | |
CN112836793B (zh) | 浮点可分离卷积计算加速装置、系统以及图像处理方法 | |
Niknia et al. | Nanoscale design of multi-layer perceptrons using floating-point arithmetic units |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |