KR20180083030A - 이진 파라미터를 갖는 컨볼루션 신경망 시스템 및 그것의 동작 방법 - Google Patents
이진 파라미터를 갖는 컨볼루션 신경망 시스템 및 그것의 동작 방법 Download PDFInfo
- Publication number
- KR20180083030A KR20180083030A KR1020170004379A KR20170004379A KR20180083030A KR 20180083030 A KR20180083030 A KR 20180083030A KR 1020170004379 A KR1020170004379 A KR 1020170004379A KR 20170004379 A KR20170004379 A KR 20170004379A KR 20180083030 A KR20180083030 A KR 20180083030A
- Authority
- KR
- South Korea
- Prior art keywords
- binary
- learning
- parameter
- input
- logic
- Prior art date
Links
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 46
- 238000000034 method Methods 0.000 title claims description 47
- 239000000872 buffer Substances 0.000 claims abstract description 48
- 238000006243 chemical reaction Methods 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 15
- 238000013528 artificial neural network Methods 0.000 claims description 13
- 230000000295 complement effect Effects 0.000 claims description 11
- 238000010606 normalization Methods 0.000 claims description 7
- 239000000654 additive Substances 0.000 claims description 6
- 230000000996 additive effect Effects 0.000 claims description 6
- 230000009466 transformation Effects 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 13
- 241001442055 Vipera berus Species 0.000 description 11
- 238000011176 pooling Methods 0.000 description 10
- 230000004913 activation Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000005070 sampling Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 101100115156 Caenorhabditis elegans ctr-9 gene Proteins 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 239000012464 large buffer Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- 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
-
- 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
- G06N3/045—Combinations of networks
-
- 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
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- 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
-
- 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/08—Learning methods
-
- G06N99/005—
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Neurology (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Image Analysis (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Control Of Transmission Device (AREA)
Abstract
본 발명의 실시 예에 따른 컨볼루션 신경망 시스템은, 입력 피처를 저장하는 입력 버퍼, 학습 파라미터를 저장하는 파라미터 버퍼, 상기 입력 버퍼로부터의 상기 입력 피처와 상기 파라미터 버퍼로부터 제공되는 상기 학습 파라미터를 사용하여 컨볼루션 레이어 연산 또는 풀리 커넥티드 레이어 연산을 수행하는 연산기, 그리고 상기 연산기로부터 출력되는 출력 피처를 저장하고 외부로 출력하는 출력 버퍼를 포함하되, 상기 파라미터 버퍼는 상기 컨볼루션 레이어 연산 시에는 실수 학습 파라미터를 상기 연산기에 제공하고, 상기 풀리 커넥티드 레이어 연산 시에는 이진 학습 파라미터를 상기 연산기에 제공한다.
Description
본 발명은 신경망 시스템에 관한 것으로, 더 상세하게는 이진 파라미터를 갖는 컨볼루션 신경망 시스템 및 그것의 동작 방법에 관한 것이다.
최근 영상 인식을 위한 기술로 심층 신경망(Deep Neural Network) 기법의 하나인 컨볼루션 신경망(Convolutional Neural Network: 이하, CNN)이 활발하게 연구되고 있다. 신경망 구조는 사물 인식이나 필기체 인식 등 다양한 객체 인식 분야에서 뛰어난 성능을 보이고 있다. 특히, 컨볼루션 신경망(CNN)은 객체 인식에 매우 효과적인 성능을 제공하고 있다.
컨볼루션 신경망(CNN) 모델은 패턴을 생성하는 컨볼루션 레이어(Convolution layer)와, 생성된 패턴을 학습된 객체 후보들로 분류하는 풀리 커넥티드 레이어(Fully Connected layer: 이하, FC layer)를 포함한다. 컨볼루션 신경망(CNN) 모델은 학습 과정에서 생성된 학습 파라미터(또는, 가중치)를 각각의 레이어에 적용하여 추정(Estimation) 동작을 수행한다. 이때, 컨볼루션 신경망(CNN)의 각 계층에서는 입력되는 데이터와 가중치를 곱하여 더하고, 그 결과를 활성화(ReLU 또는 Sigmod 연산)하여 다음 계층으로 전달한다.
컨볼루션 레이어에서는 커널(Kernel)에 의한 파라미터의 학습이나 합성곱 연산을 수행하므로 연산량이 상대적으로 많다. 반면, 풀리 커넥티드(FC) 레이어는 컨볼루션 레이어에서 생성된 데이터를 객체 종류로 분류하는 작업을 수행한다. 풀리 커넥티드(FC) 레이어의 학습 파라미터 량은 컨볼루션 신경망의 전체 학습 파라미터 중에서 90% 이상을 차지한다. 따라서, 컨볼루션 신경망(CNN)의 동작 효율을 높이기 위해서는 풀리 커넥티드(FC) 레이어의 학습 파라미터의 사이즈를 줄이는 것이 필요하다.
본 발명의 목적은 컨볼루션 신경망 모델에서 풀리 커넥티드 레이어(FC layer)에 필요한 학습 파라미터의 양을 줄일 수 있는 방법 및 장치를 제공하는 데 있다. 본 발명의 다른 목적은 풀리 커넥티드 레이어에서 학습 파라미터를 이진 변수(‘-1’ 또는 ‘1’)로 변환하여 인식 작업을 수행하기 위한 방법을 제공하는 데 있다. 본 발명의 다른 목적은, 풀리 커넥티드 레이어의 학습 파라미터를 이진 형태로 변경하여, 학습 파라미터를 관리하는데 소요되는 비용을 줄일 수 있는 방법 및 장치를 제공하는 데 있다.
본 발명의 실시 예에 따른 컨볼루션 신경망 시스템은, 입력 피처를 저장하는 입력 버퍼, 학습 파라미터를 저장하는 파라미터 버퍼, 상기 입력 버퍼로부터의 상기 입력 피처와 상기 파라미터 버퍼로부터 제공되는 상기 학습 파라미터를 사용하여 컨볼루션 레이어 연산 또는 풀리 커넥티드 레이어 연산을 수행하는 연산기, 그리고 상기 연산기로부터 출력되는 출력 피처를 저장하고 외부로 출력하는 출력 버퍼를 포함하되, 상기 파라미터 버퍼는 상기 컨볼루션 레이어 연산 시에는 실수 학습 파라미터를 상기 연산기에 제공하고, 상기 풀리 커넥티드 레이어 연산 시에는 이진 학습 파라미터를 상기 연산기에 제공한다.
본 발명의 실시 예에 따른 컨볼루션 신경망 시스템의 동작 방법은, 상기 컨볼루션 신경망 시스템의 학습을 통해서 실수 학습 파라미터를 결정하는 단계, 상기 실수 학습 파라미터 중에서 상기 컨볼루션 신경망 시스템의 풀리 커넥티드 레이어의 가중치를 이진 학습 파라미터로 변환하는 단계, 입력 피처를 상기 실수 학습 파라미터를 적용하는 컨볼루션 레이어 연산으로 처리하는 단계, 그리고 상기 컨볼루션 레이어 연산의 결과를 상기 이진 학습 파라미터를 적용하는 풀리 커넥티드 레이어 연산을 통해서 처리하는 단계를 포함한다.
본 발명의 실시 예들에 따르면, 본 발명은 기존의 컨볼루션 신경망(CNN)의 풀리 커넥티드 레이어에서의 학습 파라미터의 사이즈를 획기적으로 줄일 수 있다. 본 발명과 같이 풀리 커넥티드 레이어의 가중치 크기를 줄이고, 그에 따른 컨볼루션 신경망(CNN)의 하드웨어 플랫폼을 구현하는 경우, 컨볼루션 신경망의 간소화 및 소모 전력의 획기적 절감이 가능하다.
도 1은 본 발명의 실시 예에 따른 컨볼루션 신경망 시스템을 간략히 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 컨볼루션 신경망의 레이어들을 예시적으로 보여주는 도면이다.
도 3은 본 발명의 학습 파라미터를 적용하는 방법을 간략히 보여주는 블록도이다.
도 4는 도 3의 컨볼루션 레이어의 노드 구조를 보여주는 도면이다.
도 5는 도 3의 풀리 커넥티드 레이어의 노드 구조를 보여주는 도면이다.
도 6은 본 발명의 실시 예에 따른 풀리 커넥티드 레이어를 구성하는 노드의 연산 구조를 보여주는 블록도이다.
도 7은 앞서 설명된 도 6의 논리 구조를 실행하기 위한 하드웨어 구조를 보여주는 블록도이다.
도 8은 본 발명의 실시 예에 따른 이진 학습 파라미터를 적용하는 컨볼루션 신경망 시스템의 동작 방법을 보여주는 순서도이다.
도 2는 본 발명의 실시 예에 따른 컨볼루션 신경망의 레이어들을 예시적으로 보여주는 도면이다.
도 3은 본 발명의 학습 파라미터를 적용하는 방법을 간략히 보여주는 블록도이다.
도 4는 도 3의 컨볼루션 레이어의 노드 구조를 보여주는 도면이다.
도 5는 도 3의 풀리 커넥티드 레이어의 노드 구조를 보여주는 도면이다.
도 6은 본 발명의 실시 예에 따른 풀리 커넥티드 레이어를 구성하는 노드의 연산 구조를 보여주는 블록도이다.
도 7은 앞서 설명된 도 6의 논리 구조를 실행하기 위한 하드웨어 구조를 보여주는 블록도이다.
도 8은 본 발명의 실시 예에 따른 이진 학습 파라미터를 적용하는 컨볼루션 신경망 시스템의 동작 방법을 보여주는 순서도이다.
일반적으로, 컨볼루션(Convolution) 연산은 두 함수 간의 상관관계를 검출하기 위한 연산이다. '컨볼루션 신경망(Convolutional Neural Network: CNN)'라는 용어는 특정 피처(Feature)를 지시하는 커널(Kernel)과의 컨볼루션 연산을 수행하고, 연산의 결과를 반복하여 이미지의 패턴을 결정하는 과정 또는 시스템을 통칭할 수 있다.
아래에서는, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재된다.
도 1은 본 발명의 실시 예에 따른 컨볼루션 신경망 시스템을 간략히 보여주는 블록도이다. 도 1을 참조하면, 본 발명의 실시 예에 따른 신경망 시스템은 GPU(Graphic Processing Unit)나 FPGA(Field Programmable Gate Array) 플랫폼, 또는 모바일 디바이스 등의 하드웨어로 구현하기 위한 필수 구성들이 제공된다. 본 발명의 컨볼루션 신경망 시스템(100)은 입력 버퍼(110), 연산기(130), 파라미터 버퍼(150), 그리고 출력 버퍼(170)를 포함한다.
입력 버퍼(110)에는 입력 피처의 데이터 값들이 로드된다. 입력 버퍼(110)의 사이즈는 컨볼루션 연산을 위한 가중치(Weight)의 사이즈에 따라 가변될 수 있을 것이다. 예를 들면, 입력 버퍼(110)는 입력 피처(Input feature)를 저장하기 위한 버퍼 사이즈를 가질 수 있다. 입력 버퍼(110)는 입력 피처를 제공받기 위해 외부 메모리(미도시)에 접근할 수 있다.
연산기(130)는 입력 버퍼(110), 파라미터 버퍼(150), 그리고 출력 버퍼(170)를 사용하여 컨볼루션 연산을 수행할 수 있다. 연산기(130)는, 예를 들면, 입력 피처와 커널(Kernel) 파라미터들과의 곱셈(Multiplication) 및 누산(Accumulation)을 처리한다. 연산기(130)는 파라미터 버퍼(150)로부터 제공되는 실수 학습 파라미터(TPr)를 사용하여 복수의 컨볼루션 레이어 연산을 처리할 수 있다. 연산기(130)는 파라미터 버퍼(150)로부터 제공되는 이진 학습 파라미터(TPb)를 사용하여 복수의 풀리 커넥티드 레이어 연산을 처리할 수 있다.
연산기(130)는 실수 학습 파라미터(TPr)를 포함하는 커널을 사용하는 컨볼루션 레이어의 연산들을 통해서 입력 피처(또는 입력 이미지)의 패턴을 생성한다. 이때, 각각의 컨볼루션 레이어를 구성하는 노드들에 대한 연결 강도에 대응하는 가중치들은 실수 학습 파라미터(TPr)로 제공될 것이다. 그리고 연산기(130)는 이진 학습 파라미터(TPb)를 사용하는 풀리 커넥티드 레이어의 연산들을 수행한다. 풀리 커넥티드 레이어의 연산들을 통해서, 입력된 패턴들은 학습된 객체 후보들로 분류될 것이다. 풀리 커넥티드 레이어는 용어의 의미와 마찬가지로 하나의 레이어에 포함되는 노드들은 다른 레이어의 노드들과 완전하게 연결되는 것을 의미한다. 이때, 본 발명의 이진 학습 파라미터(TPb)를 사용하는 경우, 실질적으로 풀리 커넥티드 레이어의 연산에 소모되는 파라미터의 사이즈, 계산의 복잡도, 그리고 요구되는 시스템의 자원은 획기적으로 감축될 수 있다.
연산기(130)는 컨볼루션 레이어 연산이나 풀리 커넥티드 레이어 연산을 병렬로 처리하기 위한 복수의 MAC 코어들(131, 132, …, 134)을 포함할 수 있다. 연산기(130)는 파라미터 버퍼(150)에서 제공되는 커널(Kernel)과 입력 버퍼(110)에 저장되는 입력 피처 조각과의 컨볼루션 연산을 병렬로 처리할 수 있다. 특히, 본 발명의 이진 학습 파라미터(TPb)를 사용하는 경우에, 이진 데이터를 처리하기 위한 별도의 기법이 필요하게 된다. 이러한 연산기(130)의 추가적인 구성은 후술하는 도면들을 통해서 상세히 설명하기로 한다.
파라미터 버퍼(150)에는 연산기(130)에서 수행되는 컨볼루션 연산, 바이어스(Bias) 가산, 활성화(ReLU), 풀링(Pooling) 등에 필요한 파라미터들이 제공된다. 파라미터 버퍼(150)는 컨볼루션 레이어에 해당하는 연산 시에 외부 메모리(미도시)에서 제공되는 실수 학습 파라미터(TPr)를 연산기(130)에 제공할 수 있다. 특히, 파라미터 버퍼(150)는 풀리 커넥티드 레이어에 대응하는 연산시에 외부 메모리(미도시)에서 제공되는 이진 학습 파라미터(TPb)를 연산기(130)에 제공할 수 있다.
실수 학습 파라미터(TPr)는 컨볼루션 레이어의 학습된 노드들 간의 가중치일 수 있다. 이진 학습 파라미터(TPb)는 풀리 커넥티드 레이어의 노드들 간에 학습된 가중치들일 수 있다. 이진 학습 파라미터(TPb)는 학습을 통해 획득된 풀리 커넥티드 레이어의 실수 가중치들을 이진(Binary) 값으로 변환한 값으로 제공될 수 있다. 예를 들면, 학습된 풀리 커넥티드 레이어의 실수 가중치가 0보다 큰 값인 경우에는 이진 학습 파라미터(TPb) '1'로 맵핑될 수 있다. 또는, 학습된 풀리 커넥티드 레이어의 실수 가중치가 0보다 작은 값인 경우에는 이진 학습 파라미터(TPb) '-1'로 맵핑될 수 있다. 이진 학습 파라미터(TPb)로의 변환을 통해서 큰 사이즈의 버퍼 용량을 요구하는 풀리 커넥티드 레이어의 학습 파라미터 사이즈는 획기적으로 줄어들 수 있다.
출력 버퍼(170)에는 연산기(130)에 의해서 실행되는 컨볼루션 레이어 연산이나 풀리 커넥티드 레이어 연산의 결과값이 로드된다. 출력 버퍼(170)는 연산기(130)의 출력 피처를 저장하기 위한 버퍼 사이즈를 가질 수 있다. 이진 학습 파라미터(TPb)의 적용에 따라 출력 버퍼(170)의 요구 사이즈도 감소될 수 있다. 그리고 이진 학습 파라미터(TPb)의 적용에 따라 출력 버퍼(170)와 외부 메모리와의 채널 대역폭 요구량도 줄어들 수 있을 것이다.
이상에서는 풀리 커넥티드 레이어의 가중치로 이진 학습 파라미터(TPb)를 사용하는 기술이 설명되었다. 그리고 컨볼루션 레이어의 가중치로는 실수 학습 파라미터(TPr)가 사용되는 것으로 설명되었다. 하지만, 본 발명은 여기의 설명에 국한되지 않는다. 컨볼루션 레이어의 가중치가 이진 학습 파라미터(TPb)로 제공될 수도 있음은 이 분야에서 기술을 습득한 자들에게는 잘 이해될 것이다.
도 2는 본 발명의 실시 예에 따른 컨볼루션 신경망의 레이어들을 예시적으로 보여주는 도면이다. 도 2를 참조하면, 입력 피처(210)를 처리하기 위한 컨볼루션 신경망의 레이어(Layer)들이 예시적으로 도시되어 있다.
학습이나 객체 인식과 같은 동작에서 수행되는 컨볼루션 연산이나 풀링 연산, 그리고 활성화 연산, 풀리 커넥티드 레이어 연산 등에서는 엄청나게 많은 수의 파라미터들이 입력되고, 업데이트 되어야 한다. 입력 피처(210)는 제 1 컨볼루션 계층(conv1)과 그 결과를 다운-샘플링하기 위한 제 1 풀링 계층(pool1)에 의해서 처리된다. 입력 피처(210)가 제공되면, 먼저 커널(215)과의 컨볼루션 연산을 수행하는 제 1 컨볼루션 계층(conv1)이 적용된다. 즉, 커널(215)과 중첩되는 입력 피처(210)의 데이터가 커널(215)에 정의된 데이터와 곱해진다. 그리고 곱해진 모든 값은 합산되어 하나의 피처값으로 생성되고, 제 1 피처 맵(220)의 한 포인트를 구성하게 될 것이다. 이러한 컨볼루션 연산은 커널(215)이 순차적으로 쉬프트되면서 반복적으로 수행될 것이다.
하나의 입력 피처(210)에 대한 컨볼루션 연산은 복수의 커널들에 대해서 수행된다. 그리고 제 1 컨볼루션 계층(conv1)의 적용에 따라 복수의 채널들 각각에 대응하는 어레이 형태의 제 1 피처 맵(220)이 생성될 수 있을 것이다. 예를 들면, 4개의 커널들을 사용하면, 4개의 채널로 구성된 제 1 피처 맵(220)이 생성될 수 있을 것이다.
이어서, 제 1 컨볼루션 계층(conv1)의 실행이 완료되면, 제 1 피처 맵(220)의 사이즈를 줄이기 위한 다운-샘플링(Down-sampling)이 수행된다. 제 1 피처 맵(220)의 데이터는 커널의 수나 입력 피처(210)의 사이즈에 따라 처리의 부담이 되는 사이즈일 수 있다. 따라서, 제 1 풀링 계층(pool1)에서는 연산 결과에 크게 영향을 주지 않는 범위에서 제 1 피처 맵(220)의 사이즈를 줄이기 위한 다운-샘플링(또는, 서브-샘플링)이 수행된다. 다운 샘플링의 대표적인 연산 방식이 풀링(Pooling)이다. 다운 샘플링을 위한 필터를 제 1 피처 맵(220)에 미리 결정된 스트라이드(Stride)로 슬라이딩시키면서, 해당 영역에서의 최대값 또는 평균값이 선택될 수 있다. 최대값을 선택하는 경우를 최대값 풀링(Max Pooling)이라 하고, 평균값을 출력하는 방식을 평균값 풀링(Average Pooling)이라 한다. 풀링 계층(pool1)에 의해서 제 1 피처 맵(220)은 감소된 사이즈의 제 2 피처 맵(230)으로 생성된다.
컨볼루션 연산이 수행되는 컨볼루션 계층과 다운 샘플링 연산이 수행되는 풀링 계층은 필요에 따라 반복될 수 있다. 즉, 도시된 바와 같이 제 2 컨볼루션 계층(conv2) 및 제 2 풀링 계층(pool2)이 수행될 수 있다. 각각 제 2 컨볼루션 계층(conv2)을 통해서 제 3 피처 맵(240)이 생성되고, 제 2 풀링 계층(pool2)에 의해서 제 4 피처 맵(250)이 생성될 수 있을 것이다. 그리고 제 4 피처 맵(250)은 풀리 커넥티드 레이어 처리(ip1, ip2)와 활성화 계층(Relu)의 처리를 통해서 각각 풀리 커넥티드 레이어들(260, 270) 및 출력 레이어(280)가 생성된다. 물론, 도시되지는 않았지만, 컨볼루션 계층과 풀링 계층 사이에 바이어스 가산이나 활성화 연산이 추가될 수 있을 것이다.
상술한 컨볼루션 신경망에서의 입력 피처(210)의 처리를 통해서 출력 피처(280)가 생성된다. 컨볼루션 신경망의 학습 시에는 이러한 동작의 결과값과 기대치의 차이값을 최소화하는 방향으로 가중치의 에러를 역전파시키는 오류 역전파(Error Backpropagation) 알고리즘이 사용될 수 있을 것이다. 학습 연산시에 경사 하강(Gradient Descent) 기법을 통해 컨볼루션 신경망(CNN)에 속한 각 계층의 학습 파라미터를 오류가 최소화되는 방향으로 최적해를 찾는 연산이 반복된다. 이러한 방식으로 가중치들은 학습 과정을 통해서 실수 학습 파라미터로 수렴하게 된다. 이러한 학습 파라미터의 획득은 도시된 컨볼루션 신경망의 제반 레이어들에 적용된다. 컨볼루션 레이어들(conv1, conv2)이나 풀리 커넥티드 레이어들(ip1, ip2)의 가중치들도 이러한 학습 과정을 통해서 실수 값으로 획득될 수 있다.
본 발명에서는 풀리 커넥티드 레이어들(ip1, ip2)에서의 학습 파라미터들이 획득되면, 이후 실수값(Real value)의 학습 파라미터들에 대한 이진 값(Binary value)으로의 변환이 수행된다. 즉, 풀리 커넥티드 레이어들(ip1, ip2)에 적용되는 노드들 간의 가중치들은 이진 가중치 '-1' 또는 '1' 중 어느 하나로 맵핑된다. 이때, 이진 가중치로의 변환은, 예시적으로 '0'보다 크거나 같은 실수 가중치는 이진 가중치 '1'로, '0'보다 작은 실수 가중치는 이진 가중치 '-1'로 맵핑하는 방식으로 수행될 수 있다. 예를 들면, 풀리 커넥티드 레이어의 어느 하나의 가중치가 실수값 '-3.5'인 경우, 이 값은 이진 가중치 '-1'로 맵핑될 수 있다. 하지만, 실수 가중치의 이진 가중치로의 맵핑 방법은 여기의 설명에 국한되지 않음은 잘 이해될 것이다.
도 3은 본 발명의 학습 파라미터를 적용하는 방법을 간략히 보여주는 블록도이다. 도 3을 참조하면, 입력 데이터(310)는 본 발명의 컨볼루션 레이어들(320)과 풀리 커넥티드 레이어들(340)에 의해서 처리되어 출력 데이터(350)로 출력된다.
입력 데이터(310)는 객체 인식을 위해서 제공되는 입력 이미지 또는 입력 피처일 수 있다. 입력 데이터(310)는 각각 실수 학습 파라미터(TPr_1~TPr_m)를 특징으로 하는 복수의 컨볼루션 레이어들(321, 322, 323)에 의해서 처리된다. 실수 학습 파라미터(TPr_1)는 외부 메모리(미도시)로부터 파라미터 버퍼(150, 도 1 참조)로 제공될 것이다. 그리고 제 1 컨볼루션 레이어(321) 연산을 위해서 연산기(130, 도 1 참조)에 전달된다. 연산기(130)에 의한 제 1 컨볼루션 레이어(321) 연산에서 실수 학습 파라미터(TPr_1)는 커널 가중치일 수 있다. 제 1 컨볼루션 레이어(321) 연산 루프의 실행에 따라 생성되는 피처 맵은 후속되는 컨볼루션 레이어 연산의 입력 피처로 제공될 것이다. 복수의 컨볼루션 레이어(321, 322, 323) 연산들 각각에 제공되는 실수 학습 파라미터(TPr_1~TPr_m)에 의해서 입력 데이터(310)는 특성을 지시하는 패턴으로 출력된다.
복수의 컨볼루션 레이어(321, 322, 323) 연산들의 실행 결과로 생성되는 피처 맵은 복수의 풀리 커넥티드 레이어(341, 342, 343)에 의해서 특성이 분류된다. 복수의 풀리 커넥티드 레이어(341, 342, 343)에서는 이진 학습 파라미터들(TPb_1,…, TPb_n-1, TPb_n)이 사용된다. 이진 학습 파라미터들(TPb_1,…, TPb_n-1, TPb_n) 각각은 학습 연산을 통해서 실수값으로 획득된 후에, 이진 값으로 변환되어야 한다. 그리고 변환된 이진 학습 파라미터들(TPb_1,…, TPb_n-1, TPb_n)는 메모리에 저장된 후, 풀리 커넥티드 레이어(341, 342, 343) 연산이 수행되는 시점에 파라미터 버퍼(150)로 제공될 것이다.
제 1 풀리 커넥티드 레이어(341) 연산의 실행에 따라 생성되는 피처 맵은 후속되는 풀리 커넥티드 레이어의 입력 피처로 제공될 것이다. 복수의 풀리 커넥티드 레이어(341, 342, 343) 연산들 각각에서 이진 학습 파라미터(TPb_1~TPb_n)가 사용되며, 출력 데이터(350)가 생성된다.
복수의 풀리 커넥티드 레이어(341, 342, 343) 각각의 레이어들 사이의 노드 연결은 완전 연결 구조를 갖는다. 따라서, 복수의 풀리 커넥티드 레이어(341, 342, 343)들 사이의 가중치에 대응하는 학습 파라미터는 실수로 제공되는 경우 매우 큰 사이즈를 갖는다. 반면, 본 발명의 이진 학습 파라미터(TPb_1~TPb_n)로 제공되는 경우, 가중치의 크기가 큰 비율로 축소될 수 있다. 따라서, 복수의 풀리 커넥티드 레이어(341, 342, 343)들을 구현하기 위한 하드웨어를 구현할 때, 요구되는 연산기(130), 파라미터 버퍼(150), 출력 버퍼(170)의 사이즈도 감소할 것이다. 더불어, 이진 학습 파라미터(TPb_1~TPb_n)를 저장하고 공급하기 위한 외부 메모리의 대역폭이나 사이즈도 감소될 수 있다. 더불어, 이진 학습 파라미터(TPb_1~TPb_n)를 사용하는 경우, 하드웨어에서 소모되는 전력도 획기적으로 감소될 것으로 기대된다.
도 4는 도 3의 컨볼루션 레이어(320)의 노드 구조를 간략히 보여주는 도면이다. 도 4를 참조하면, 컨볼루션 레이어(320)를 구성하는 노드들 사이의 가중치를 정의하는 학습 파라미터는 실수 값으로 제공된다.
입력 피쳐들(I1, I2, …, Ii, i는 자연수)이 컨볼루션 레이어(320)에 제공되면, 입력 피쳐들(I1, I2, …, Ii) 각각은 실수 학습 파라미터(TPr_1)에 의해서 정의된 가중치로 노드들(A1, A2, …, Aj, j는 자연수)에 연결된다. 그리고 컨볼루션 레이어를 구성하는 노드들(A1, A2, …, Aj)은 후속하는 컨볼루션 레이어를 구성하는 노드들(B1, B2, …, Bk, k는 자연수)와 실수 학습 파라미터(TPr_2)의 연결 강도로 연결된다. 컨볼루션 레이어를 구성하는 노드들(B1, B2, …, Bj)은 후속하는 컨볼루션 레이어를 구성하는 노드들(C1, C2, …, Cl, l은 자연수)과 실수 학습 파라미터(TPr_3)의 가중치로 연결된다.
각 컨볼루션 레이어들을 구성하는 노드들은 입력 피처와 실수 학습 파라미터로 제공되는 가중치를 곱하고, 그 결과를 합산하여 출력한다. 이러한 노드들의 컨볼루션 레이어 연산은 앞서 설명된 도 1의 연산부를 구성하는 MAC 코어들에 의해서 병렬로 처리될 것이다.
도 5는 도 3의 풀리 커넥티드 레이어의 노드 구조를 간략히 보여주는 도면이다. 도 5를 참조하면, 풀리 커넥티드 레이어(340)를 구성하는 노드들 사이의 가중치를 정의하는 학습 파라미터는 이진 데이터로 제공된다.
제 1 풀리 커넥티드 레이어를 구성하는 노드들(X1, X2, …, Xα, α는 자연수) 각각은 이진 학습 파라미터(TPb_1)에 의해서 정의된 가중치로 제 2 풀리 커넥티드 레이어를 구성하는 노드들(Y1, Y2, …, Yβ, β는 자연수)에 연결된다. 노드들(X1, X2, …, Xα, α는 자연수) 각각은 앞서 수행된 컨볼루션 레이어(320)의 출력 피처들일 수도 있다. 이진 학습 파라미터(TPb_1)는 램(RAM)과 같은 외부 메모리에 저장된 후에 제공될 수 있다. 예를 들면, 제 1 풀리 커넥티드 레이어를 구성하는 노드(X1)와 제 2 풀리 커넥티드 레이어를 구성하는 노드(Y1)는 이진 학습 파라미터로 제공되는 가중치(W1 11)로 연결될 수 있다. 제 1 풀리 커넥티드 레이어를 구성하는 노드(X2)와 제 2 풀리 커넥티드 레이어를 구성하는 노드(Y1)는 이진 학습 파라미터로 제공되는 가중치(W1 21)로 연결될 수 있다. 더불어, 제 1 풀리 커넥티드 레이어를 구성하는 노드(Xα)와 제 2 풀리 커넥티드 레이어를 구성하는 노드(Y1)는 이진 학습 파라미터로 제공되는 가중치(W1 α1)로 연결될 수 있다. 이들 가중치들(W1 11, W1 21, …, W1 α1)은 모두 '-1'이나 '1'값을 갖는 이진 학습 파라미터들이다.
제 2 풀리 커넥티드 레이어를 구성하는 노드들(Y1, Y2, …, Yβ) 각각은 이진 학습 파라미터(TPb_2)에 의해서 정의된 가중치로 제 3 풀리 커넥티드 레이어를 구성하는 노드들(Z1, Z2, …, Zδ, δ는 자연수)에 연결된다. 노드(Y1)와 노드(Z1)는 이진 학습 파라미터로 제공되는 가중치(W2 11)로 연결될 수 있다. 노드(Y2)와 제 (Z1)는 이진 학습 파라미터로 제공되는 가중치(W2 21)로 연결될 수 있다. 더불어, 노드(Yβ)와 노드(Z1)는 이진 학습 파라미터로 제공되는 가중치(W2 β1)로 연결될 수 있다. 이들 가중치들(W2 11, W2 21, …, W2 β1)은 모두 '-1'이나 '1'값을 갖는 이진 학습 파라미터들이다.
제 1 풀리 커넥티드 레이어를 구성하는 노드들(X1, X2, …, Xα)과 제 2 풀리 커넥티드 레이어를 구성하는 노드들(Y1, Y2, …, Yβ)은 노드들 각각이 빠짐없이 가중치를 가지고 상호 연결되어야 한다. 즉, 노드들(X1, X2, …, Xα) 각각은 노드들(Y1, Y2, …, Yβ) 각각과 학습된 가중치를 갖도록 연결된다. 따라서, 실수 학습 파라미터로 풀리 커넥티드 레이어의 가중치가 제공되기 위해서는 엄청나게 많은 메모리 자원이 소요될 수밖에 없다. 하지만, 본 발명의 이진 학습 파라미터를 적용하는 경우, 요구되는 메모리 자원과 연산기(130), 파라미터 버퍼(150), 출력 버퍼(170) 등의 사이즈, 그리고 연산에 소모되는 전력도 대폭 감소하게 된다.
더불어, 이진 학습 파라미터를 사용하는 경우, 각 노드들의 하드웨어적인 구조도 이진 파라미터를 처리하기 위한 구조로 변경될 수 있다. 이러한 풀리 커넥티드 레이어를 구성하는 하나의 노드(Y1)의 하드웨어 구조를 설명하는 도 6에서 설명될 것이다.
도 6은 본 발명의 실시 예에 따른 풀리 커넥티드 레이어의 노드 구조를 보여주는 블록도이다. 도 6을 참조하면, 하나의 노드는 입력 피처들(X1, X2, …, Xα)을 이진 학습 파라미터들과 곱하는 비트 변환 로직들(411, 412, 413, 414, 415, 416)에 의해서 처리되어 덧셈 트리(420)에 제공된다.
비트 변환 로직들(411, 412, 413, 414, 415, 416)은 실수값을 갖는 입력 피처들(X1, X2, …, Xα) 각각에 할당된 이진 학습 파라미터를 곱하여 덧셈 트리(420)로 전달한다. 이진 연산의 간소화를 위해, '-1'과 '1'의 값을 갖는 이진 학습 파라미터는 논리 '0'과 논리 '1'의 값으로 변환될 수 있다. 즉, 이진 학습 파라미터 '-1'은 논리 '0'으로, 이진 학습 파라미터 '1'은 논리 '1'로 제공될 것이다. 이러한 기능은 별도로 제공되는 가중치 디코더(미도시)에 의해서 수행될 수 있다.
좀 더 구체적으로 풀리 커넥티드 레이어의 논리 구조를 설명하면, 입력 피처(X1)는 비트 변환 로직(411)에 의해서 이진 학습 파라미터(W1 11)와 곱해진다. 이때의 이진 학습 파라미터(W1 11)는 논리 '0'과 논리 '1'로 변환된 값이다. 이진 학습 파라미터(W1 11)가 논리 '1'인 경우, 실수 값인 입력 피처(X1)는 이진 값으로 변환되어 덧셈 트리로 전달된다. 반면, 이진 학습 파라미터(W1 11)가 논리 '0'인 경우, 실질적으로는 '-1'을 곱하는 효과가 제공되어야 한다. 따라서, 이진 학습 파라미터(W1 11)가 논리 '0'인 경우, 비트 변환 로직(411)은 실수 값인 입력 피처(X1)를 이진 값으로 변환하고, 변환된 이진 값의 2의 보수를 덧셈 트리(420)로 전달할 수 있다. 하지만, 덧셈 연산의 효율화를 위해, 비트 변환 로직(411)은 입력 피처(X1)를 이진 값으로 변환시킨 후에 1의 보수로 변환(또는, 비트값 반전)하여 덧셈 트리(420)로 넘겨 주기고, 2의 보수 효과는 덧셈 트리(420) 내의 '-1' 가중치 카운트(427)에서 수행될 수 있다. 즉, 2의 보수 효과는 '-1'의 숫자를 모두 합산하여 덧셈 트리(420)의 종단에서 '-1'의 숫자만큼 논리 '1'을 가산하는 식으로 제공될 수 있다.
상술한 비트 변환 로직(411)의 기능은 나머지 비트 변환 로직들(412, 413, 414, 415, 416)에도 동일하게 적용된다. 실수 값의 입력 피처들(X1, X2, …, Xα) 각각은 비트 변환 로직들(411, 412, 413, 414, 415, 416)에 의해서이진 값으로 변환되어 덧셈 트리(420)에 제공될 수 있다. 이때, 이진 학습 파라미터들(W1 11~W1 α1)이 이진 데이터로 변환된 입력 피처들(X1, X2, …, Xα)에 적용되어 덧셈 트리(420)에 전달될 것이다. 덧셈 트리(420)에서는 복수의 덧셈기들(421, 422, 423, 425, 426)에 의해서 전달된 피처들의 이진 값들이 가산된다. 그리고 덧셈기(427)에 의해서 2의 보수 효과가 제공될 수 있다. 이진 학습 파라미터들(W1 11~W1 α1) 중에서 '-1'의 수만큼 논리 '1'이 더해질 수 있다.
도 7은 앞서 설명된 도 6의 논리 구조를 실행하기 위한 하드웨어 구조를 예시적으로 보여주는 블록도이다. 도 7을 참조하면, 풀리 커넥티드 레이어의 하나의 노드(Y1)는 복수의 노드 연산 소자들(510, 520, 530, 540), 가산기들(550, 552, 554), 그리고 정규화 블록(560)을 통해서 압축된 형태의 하드웨어로 구현될 수 있다.
앞서 설명된 도 6의 논리 구조에 따르면, 입력되는 모든 입력 피처들 각각의 비트 변환 및 가중치 곱셈이 수행되어야 한다. 이어서 비트 변환 및 가중치가 적용된 결과값들 각각에 대한 가산이 수행되어야 한다. 결국, 입력되는 모든 피처들에 대응하는 비트 변환 로직들(411, 412, 413, 414, 415, 416)이 구성되어야 하고, 비트 변환 로직들 각각의 출력값을 가산하기 위해서는 많은 수의 가산기들이 필요함을 알 수 있다. 더불어, 비트 변환 로직들(411, 412, 413, 414, 415, 416)과 가산기들은 병렬적으로 동시에 동작해야 오류없는 출력값을 얻을 수 있다.
상술한 문제를 해결하기 위해 본 발명의 노드의 하드웨어 구조는 복수의 노드 연산 소자들(510, 520, 530, 540)을 사용하여 입력 피처들을 시리얼하게 처리하도록 제어될 수 있다. 즉, 입력 피처들(X1, X2, …, Xα)은 입력 단위(4개 단위)로 배열될 수 있다. 그리고 입력 단위로 배열된 입력 피처들(X1, X2, …, Xα)은 4개의 입력 단위(D_1, D_2, D_3, D_4)로 순차적으로 입력될 수 있다. 즉, 입력 피처들(X1, X5, X9, X13, …)은 입력단(D_1)을 경유하여 제 1 노드 연산 소자(510)에 순차적으로 입력될 수 있다. 입력 피처들(X2, X6, X10, X14, …)은 입력단(D_2)을 경유하여 제 2 노드 연산 소자(520)에 순차적으로 입력될 수 있다. 입력 피처들(X3, X7, X11, X15, …)은 입력단(D_3)을 경유하여 제 3 노드 연산 소자(530)에 순차적으로 입력될 수 있다. 입력 피처들(X4, X8, X12, X16, …)은 입력단(D_4)을 경유하여 제 4 노드 연산 소자(540)에 순차적으로 입력될 수 있다.
더불어, 가중치 디코더(505)는 메모리에서 제공되는 이진 학습 파라미터('-1', '1')를 논리 학습 파라미터('0', '1')로 변환하여 복수의 노드 연산 소자들(510, 520, 530, 540)에 제공한다. 이때, 논리 학습 파라미터('0', '1')는 4개의 입력 피처들 각각에 동기하여 4개씩 순차적으로 비트 변환 로직(511, 512, 513, 514)에 제공될 것이다.
비트 변환 로직들(511, 512, 513, 514) 각각은, 순차적으로 입력되는 4개 단위의 실수 입력 피처들을 이진 피처값으로 변환할 것이다. 만일, 제공되는 논리 가중치가 논리 '0'인 경우, 비트 변환 로직들(511, 512, 513, 514) 각각은 입력되는 실수 피처를 이진 논리값으로 변환하고, 변환된 이진 논리값의 1의 보수로 변환하여 출력한다. 반면, 제공되는 논리 가중치가 논리 '1'인 경우, 비트 변환 로직들(511, 512, 513, 514) 각각은 입력되는 실수 피처를 이진 논리값으로 변환하여 출력할 것이다.
비트 변환 로직들(511, 512, 513, 514)에 의해서 출력되는 데이터는 가산기들(512, 522, 532, 542) 및 레지스터들(513, 523, 533, 543)에 의해서 누적될 것이다. 만일, 하나의 레이어에 대응하는 모든 입력 피처들이 처리되면, 레지스터들(513, 523, 533, 543)은 합산된 결과값들을 출력하고, 가산기들(550, 552, 554)에 의해서 가산된다. 가산기(554)의 출력은 정규화 블록(560)에 의해서 처리된다. 정규화 블록(560)은 예를 들면, 입력되는 파라미터의 배치(Batch) 단위의 평균과 분산을 참조하여 가산기(554) 출력을 정규화하는 식으로 앞서 설명된 '-1'의 가중치 카운트를 더하는 연산과 유사한 효과를 제공할 수 있다. 즉, 비트 변환 로직들(511, 512, 513, 514)에 의해서 1의 보수(1's complement)를 취하여 발생하는 가산기(554) 출력의 평균 이동은 학습시 획득된 배치 단위의 평균(Mean) 및 분산(Variance)을 참조하여 정규화할 수 있다. 즉, 정규화 블록(560)은 출력 데이터의 평균값이 '0'이 되도록 정규화 연산을 수행할 것이다.
이상의 본 발명의 컨볼루션 신경망을 하드웨어로 구현하기 위한 하나의 노드 구조가 간략히 설명되었다. 여기서, 입력 피처를 4개 단위로 처리하는 것을 예시로 본 발명의 이점이 설명되었으나, 본 발명은 여기에 국한되지 않는다. 입력 피처의 처리 단위는 본 발명의 이진 학습 파라미터를 적용하는 풀리 커넥티드 레이어의 특성에 따라 또는 구현하기 위한 하드웨어 플랫폼에 따라 다양하게 변경될 수 있을 것이다.
도 8은 본 발명의 실시 예에 따른 이진 학습 파라미터를 적용하는 컨볼루션 신경망 시스템의 동작 방법을 간략히 보여주는 순서도이다. 도 8을 참조하면, 본 발명의 이진 학습 파라미터를 사용하는 컨볼루션 신경망 시스템의 동작 방법이 설명될 것이다.
S110 단계에서, 컨볼루션 신경망 시스템의 학습(Training)을 통해서 학습 파라미터가 획득된다. 이때, 학습 파라미터들은 컨볼루션 레이어의 노드들간 연결 강도를 정의하는 파라미터들(이하, 컨볼루션 학습 파라미터)과 풀리 커넥티드 레이어의 가중치들을 정의하는 파라미터들(이하, FC 학습 파라미터)을 포함할 것이다. 컨볼루션 학습 파라미터와 FC 학습 파라미터는 모두 실수 값들로 획득될 것이다.
S120 단계에서, 풀리 커넥티드 레이어의 가중치들에 대응하는 FC 학습 파라미터들의 이진화 처리가 수행된다. 실수 값으로 제공되는 FC 학습 파라미터들 각각은 '-1'과 '1' 중 어느 하나의 값으로 맵핑되는 이진화 처리를 거쳐서 압축된다. 이진화 처리는 예를 들면, FC 학습 파라미터들 중에서 '0' 이상의 크기를 갖는 가중치들은 양수 '1'로 맵핑될 수 있다. 그리고 FC 학습 파라미터들 중에서 '0'보다 작은 값을 갖는 가중치들은 음수 '-1'로 맵핑될 수 있다. 이러한 방식으로 이진화 처리의 결과로 FC 학습 파라미터들은 이진 학습 파라미터로 압축될 수 있다. 압축된 이진 학습 파라미터는 컨볼루션 신경망 시스템을 지원하기 위한 메모리(또는, 외부 메모리)에 저장될 것이다.
S130 단계에서, 컨볼루션 신경망 시스템의 식별 동작이 수행된다. 먼저, 입력 피처(입력 이미지)에 대한 컨볼루션 레이어 연산이 수행된다. 컨볼루션 레이어 연산에서는 실수 학습 파라미터가 사용될 것이다. 컨볼루션 레이어 연산에서는 실질적으로 파라미터의 양보다는 컨볼루션 레이어 연산에 사용되는 계산량의 비중이 크다. 따라서, 실수 학습 파라미터를 그대로 적용해도 시스템의 동작에는 크게 영향을 미치지 않을 것이다.
S140 단계에서, 컨볼루션 레이어 연산의 결과로 제공되는 데이터를 풀리 커넥티드 레이어 연산으로 처리한다. 풀리 커넥티드 레이어 연산에는 앞서 저장된 이진 학습 파라미터가 적용된다. 컨볼루션 신경망 시스템의 학습 파라미터는 대부분 풀리 커넥티드 레이어에 집중되어 있다. 따라서, 풀리 커넥티드 레이어의 가중치들이 이진 학습 파라미터로 변환되면, 풀리 커넥티드 레이어의 연산 부담과 버퍼나 메모리의 자원을 획기적으로 줄일 수 있다.
S150 단계에서, 풀리 커넥티드 레이어 연산의 결과에 따라 최종 데이터가 컨볼루션 신경망 시스템의 외부로 출력될 수 있다.
이상에서는 이진 학습 파라미터를 사용하는 컨볼루션 신경망 시스템의 동작 방법이 간략히 설명되었다. 실수로 제공되는 학습 파라미터들 중에서 풀리 커넥티드 레이어의 가중치에 대응하는 학습 파라미터들은 이진 데이터('-1' 또는 '1')로 변환하여 처리된다. 물론, 이러한 이진 학습 파라미터를 적용하기 위한 하드웨어 플랫폼의 구조도 일부 변경되어야 할 것이다. 이러한 하드웨어 구조는 도 7에서 간략히 설명되었다.
위에서 설명한 내용은 본 발명을 실시하기 위한 구체적인 예들이다. 본 발명에는 위에서 설명한 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 용이하게 변경할 수 있는 실시 예들도 포함될 것이다. 또한, 본 발명에는 상술한 실시 예들을 이용하여 앞으로 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다.
Claims (15)
- 입력 피처를 저장하는 입력 버퍼;
학습 파라미터를 저장하는 파라미터 버퍼;
상기 입력 버퍼로부터의 상기 입력 피처와 상기 파라미터 버퍼로부터 제공되는 상기 학습 파라미터를 사용하여 컨볼루션 레이어 연산 또는 풀리 커넥티드 레이어 연산을 수행하는 연산기; 그리고
상기 연산기로부터 출력되는 출력 피처를 저장하고 외부로 출력하는 출력 버퍼를 포함하되,
상기 파라미터 버퍼는 상기 컨볼루션 레이어 연산 시에는 실수 학습 파라미터를 상기 연산기에 제공하고, 상기 풀리 커넥티드 레이어 연산 시에는 이진 학습 파라미터를 상기 연산기에 제공하는 컨볼루션 신경망 시스템. - 제 1 항에 있어서,
상기 이진 학습 파라미터는 '-1' 또는 '1' 중 어느 하나의 데이터 값을 갖는 컨볼루션 신경망 시스템. - 제 2 항에 있어서,
상기 이진 학습 파라미터는, 학습을 통해서 결정된 상기 풀리 커넥티드 레이어의 실수 가중치들 중에서 '0' 이상인 값은 '1'로 맵핑하고, '0'보다 작은 가중치들은 '-1'로 맵핑하여 생성되는 컨볼루션 신경망 시스템. - 제 1 항에 있어서,
상기 연산기는:
상기 풀리 커넥티드 레이어 연산 시에 복수의 상기 입력 피처들 각각을 대응하는 상기 이진 학습 파라미터와 곱하여 논리값으로 출력하는 복수의 비트 변환 로직; 및
상기 복수의 비트 변환 로직의 출력들을 더하는 덧셈 트리를 포함하는 컨볼루션 신경망 시스템. - 제 4 항에 있어서,
상기 복수의 비트 변환 로직 각각은, 상기 입력 피처들 각각을 이진 데이터로 변환하고, 상기 이진 학습 파라미터를 상기 변환된 이진 데이터와 곱하여 상기 덧셈 트리에 전달하는 컨볼루션 신경망 시스템. - 제 5 항에 있어서,
상기 이진 학습 파라미터가 논리 '-1'인 경우, 대응하는 입력 피처의 2의 보수 형태로 변환하여 상기 덧셈 트리에 전달하는 컨볼루션 신경망 시스템. - 제 6 항에 있어서,
상기 이진 학습 파라미터가 논리 '-1'인 경우, 상기 복수의 비트 변환 로직들 각각은 상기 입력 피처들 각각을 1의 보수로 변환하여 상기 덧셈 트리에 전달하고, 상기 덧셈 트리에서 상기 이진 학습 파라미터들 중에서 논리 '-1'의 카운트값을 가산하는 컨볼루션 신경망 시스템. - 제 1 항에 있어서,
상기 연산기는:
상기 풀리 커넥티드 레이어 연산 시에 동일 레이어의 입력 피처들 중 적어도 2개의 입력 피처를 대응하는 이진 학습 파라미터에 따라 순차적으로 처리하기 위한 복수의 노드 연산 소자들;
상기 노드 연산 소자들의 출력값을 더하는 덧셈 로직; 그리고
상기 덧셈 로직의 출력을 배치 단위(Batch unit)의 평균 및 분산을 참조하여 정규화하는 정규화 블록을 포함하는 컨볼루션 신경망 시스템. - 제 8 항에 있어서,
상기 복수의 노드 연산 소자들 각각은:
상기 적어도 2개의 입력 피처를 각각 이진 데이터로 변환하고, 변환된 각각의 이진 데이터에 대응하는 상기 이진 학습 파라미터를 곱하여 순차적으로 출력하는 비트 변환 로직;
상기 비트 변환 로직으로부터 순차적으로 출력되는 적어도 2개의 이진 데이터를 누산하는 가산기-레지스터 유닛을 포함하는 컨볼루션 신경망 시스템. - 제 9 항에 있어서,
상기 연산기는 상기 이진 학습 파라미터를 상기 복수의 노드 연산 소자들 각각에 공급하기 전에 논리 '0' 또는 논리 '1'로 변환하는 가중치 디코더를 더 포함하는 컨볼루션 신경망 시스템. - 컨볼루션 신경망 시스템의 동작 방법에 있어서:
상기 컨볼루션 신경망 시스템의 학습을 통해서 실수 학습 파라미터를 결정하는 단계;
상기 실수 학습 파라미터 중에서 상기 컨볼루션 신경망 시스템의 풀리 커넥티드 레이어의 가중치를 이진 학습 파라미터로 변환하는 단계;
입력 피처를 상기 실수 학습 파라미터를 적용하는 컨볼루션 레이어 연산으로 처리하는 단계; 그리고
상기 컨볼루션 레이어 연산의 결과를 상기 이진 학습 파라미터를 적용하는 풀리 커넥티드 레이어 연산을 통해서 처리하는 단계를 포함하는 동작 방법. - 제 11 항에 있어서,
상기 이진 학습 파라미터는 '-1' 또는 '1' 중 어느 하나의 데이터 값을 갖도록 변환되는 동작 방법. - 제 12 항에 있어서,
상기 풀리 커넥티드 레이어 연산을 통해서 처리하는 단계는, 입력되는 실수 데이터를 이진 데이터로 변환하고, 변환된 상기 이진 데이터에 상기 이진 학습 파라미터를 곱하여 출력하는 단계를 포함하는 동작 방법. - 제 13 항에 있어서,
상기 이진 데이터에 상기 이진 학습 파라미터 '-1'을 곱하는 연산은, 상기 이진 데이터의 2의 보수로 변환하는 연산을 포함하는 동작 방법. - 제 14 항에 있어서,
상기 이진 데이터에 상기 이진 학습 파라미터 '-1'을 곱하는 연산은, 상기 이진 데이터를 1의 보수로 변환하고, 상기 이진 학습 파라미터 '-1'의 수만큼 상기 1의 보수에 더하는 연산을 포함하는 동작 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170004379A KR102592721B1 (ko) | 2017-01-11 | 2017-01-11 | 이진 파라미터를 갖는 컨볼루션 신경망 시스템 및 그것의 동작 방법 |
US15/866,351 US20180197084A1 (en) | 2017-01-11 | 2018-01-09 | Convolutional neural network system having binary parameter and operation method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170004379A KR102592721B1 (ko) | 2017-01-11 | 2017-01-11 | 이진 파라미터를 갖는 컨볼루션 신경망 시스템 및 그것의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180083030A true KR20180083030A (ko) | 2018-07-20 |
KR102592721B1 KR102592721B1 (ko) | 2023-10-25 |
Family
ID=62783147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170004379A KR102592721B1 (ko) | 2017-01-11 | 2017-01-11 | 이진 파라미터를 갖는 컨볼루션 신경망 시스템 및 그것의 동작 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20180197084A1 (ko) |
KR (1) | KR102592721B1 (ko) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190118365A (ko) * | 2018-04-10 | 2019-10-18 | 한국항공대학교산학협력단 | 컨벌루션 신경망의 첫번째 레이어의 개선된 이진화 장치 및 방법 |
CN110766131A (zh) * | 2019-05-14 | 2020-02-07 | 北京嘀嘀无限科技发展有限公司 | 数据处理装置、方法和电子设备 |
KR20200072666A (ko) * | 2018-12-13 | 2020-06-23 | 서울대학교산학협력단 | 합성곱 계층의 선택적 데이터 처리 방법 및 이를 이용한 뉴럴 프로세서 |
CN112639726A (zh) * | 2018-08-29 | 2021-04-09 | 阿里巴巴集团控股有限公司 | 用于执行并行计算的方法和系统 |
US11050965B1 (en) | 2020-03-18 | 2021-06-29 | Gwangju Institute Of Science And Technology | Image sensor and image recognition apparatus using the same |
WO2022114669A3 (ko) * | 2020-11-25 | 2022-07-21 | 경북대학교 산학협력단 | 신경망을 이용한 영상 부호화 |
US11625577B2 (en) | 2019-01-09 | 2023-04-11 | Samsung Electronics Co., Ltd. | Method and apparatus for neural network quantization |
KR20230080303A (ko) * | 2021-11-29 | 2023-06-07 | 주식회사 딥엑스 | 이진화 신경망(bnn)을 위한 신경 프로세싱 유닛 |
US11995148B2 (en) | 2020-02-11 | 2024-05-28 | Samsung Electronics Co., Ltd | Electronic apparatus for performing deconvolution calculation and controlling method thereof |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10366302B2 (en) * | 2016-10-10 | 2019-07-30 | Gyrfalcon Technology Inc. | Hierarchical category classification scheme using multiple sets of fully-connected networks with a CNN based integrated circuit as feature extractor |
CN108073550A (zh) * | 2016-11-14 | 2018-05-25 | 耐能股份有限公司 | 缓冲装置及卷积运算装置与方法 |
US20180189229A1 (en) | 2017-01-04 | 2018-07-05 | Stmicroelectronics S.R.L. | Deep convolutional network heterogeneous architecture |
CN207517054U (zh) | 2017-01-04 | 2018-06-19 | 意法半导体股份有限公司 | 串流开关 |
CN107169563B (zh) * | 2017-05-08 | 2018-11-30 | 中国科学院计算技术研究所 | 应用于二值权重卷积网络的处理系统及方法 |
CN108256644B (zh) * | 2018-01-05 | 2021-06-22 | 上海兆芯集成电路有限公司 | 微处理器电路以及执行神经网络运算的方法 |
CN112789627B (zh) * | 2018-09-30 | 2023-08-22 | 华为技术有限公司 | 一种神经网络处理器、数据处理方法及相关设备 |
US20200117981A1 (en) * | 2018-10-11 | 2020-04-16 | International Business Machines Corporation | Data representation for dynamic precision in neural network cores |
KR102592585B1 (ko) | 2019-02-01 | 2023-10-23 | 한국전자통신연구원 | 번역 모델 구축 방법 및 장치 |
KR20210020387A (ko) | 2019-08-14 | 2021-02-24 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
US11593609B2 (en) | 2020-02-18 | 2023-02-28 | Stmicroelectronics S.R.L. | Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks |
US11531873B2 (en) | 2020-06-23 | 2022-12-20 | Stmicroelectronics S.R.L. | Convolution acceleration with embedded vector decompression |
-
2017
- 2017-01-11 KR KR1020170004379A patent/KR102592721B1/ko active IP Right Grant
-
2018
- 2018-01-09 US US15/866,351 patent/US20180197084A1/en not_active Abandoned
Non-Patent Citations (2)
Title |
---|
Chao Wang et al., DLAU: A Scalable Deep Learning Accelerator Unit on FPGA, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems ( Volume: 36, Issue: 3, 513-517pages (2016. 7.* * |
Martina Melinscak et al., Retinal Vessel Segmentation Using Deep Neural Networks, VISAPP (1), 1-6pages (2015.)* * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190118365A (ko) * | 2018-04-10 | 2019-10-18 | 한국항공대학교산학협력단 | 컨벌루션 신경망의 첫번째 레이어의 개선된 이진화 장치 및 방법 |
CN112639726A (zh) * | 2018-08-29 | 2021-04-09 | 阿里巴巴集团控股有限公司 | 用于执行并行计算的方法和系统 |
KR20200072666A (ko) * | 2018-12-13 | 2020-06-23 | 서울대학교산학협력단 | 합성곱 계층의 선택적 데이터 처리 방법 및 이를 이용한 뉴럴 프로세서 |
US11625577B2 (en) | 2019-01-09 | 2023-04-11 | Samsung Electronics Co., Ltd. | Method and apparatus for neural network quantization |
US11934939B2 (en) | 2019-01-09 | 2024-03-19 | Samsung Electronics Co., Ltd. | Method and apparatus for neural network quantization |
CN110766131A (zh) * | 2019-05-14 | 2020-02-07 | 北京嘀嘀无限科技发展有限公司 | 数据处理装置、方法和电子设备 |
US11995148B2 (en) | 2020-02-11 | 2024-05-28 | Samsung Electronics Co., Ltd | Electronic apparatus for performing deconvolution calculation and controlling method thereof |
US11050965B1 (en) | 2020-03-18 | 2021-06-29 | Gwangju Institute Of Science And Technology | Image sensor and image recognition apparatus using the same |
WO2022114669A3 (ko) * | 2020-11-25 | 2022-07-21 | 경북대학교 산학협력단 | 신경망을 이용한 영상 부호화 |
KR20230080303A (ko) * | 2021-11-29 | 2023-06-07 | 주식회사 딥엑스 | 이진화 신경망(bnn)을 위한 신경 프로세싱 유닛 |
Also Published As
Publication number | Publication date |
---|---|
KR102592721B1 (ko) | 2023-10-25 |
US20180197084A1 (en) | 2018-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20180083030A (ko) | 이진 파라미터를 갖는 컨볼루션 신경망 시스템 및 그것의 동작 방법 | |
Wang et al. | Efficient hardware architectures for deep convolutional neural network | |
CN109543140B (zh) | 一种卷积神经网络加速器 | |
CN107657316B (zh) | 通用处理器与神经网络处理器的协同系统设计 | |
US20180129935A1 (en) | Convolutional neural network system and operation method thereof | |
KR20180052063A (ko) | 컨볼루션 신경망 시스템 및 그것의 동작 방법 | |
CN111931917A (zh) | 前向计算的实现方法及装置、存储介质、电子装置 | |
CN113850389B (zh) | 一种量子线路的构建方法及装置 | |
US20220253742A1 (en) | Quantum error correction decoding system and method, fault-tolerant quantum error correction system, and chip | |
CN110705703A (zh) | 基于脉动阵列的稀疏神经网络处理器 | |
CN113033794B (zh) | 基于深度可分离卷积的轻量级神经网络硬件加速器 | |
CN110764885A (zh) | 一种多移动设备的dnn任务的拆分和卸载方法 | |
CN110109646A (zh) | 数据处理方法、装置和乘加器及存储介质 | |
CN112698811A (zh) | 神经网络随机数发生器共享电路、共享方法、处理器芯片 | |
Bao et al. | LSFQ: A low precision full integer quantization for high-performance FPGA-based CNN acceleration | |
CN114698395A (zh) | 神经网络模型的量化方法和装置、数据处理的方法和装置 | |
CN110110852B (zh) | 一种深度学习网络移植到fpag平台的方法 | |
CN110716751A (zh) | 高并行度计算平台、系统及计算实现方法 | |
CN110659014B (zh) | 乘法器及神经网络计算平台 | |
CN114372539B (zh) | 基于机器学习框架的分类方法及相关设备 | |
US20210004701A1 (en) | Inference device, convolution computation method and program | |
CN115222028A (zh) | 基于fpga的一维cnn-lstm加速平台及实现方法 | |
Solovyev et al. | Real-Time Recognition of Handwritten Digits in FPGA Based on Neural Network with Fixed Point Calculations | |
CN110765413B (zh) | 矩阵求和结构及神经网络计算平台 | |
Wang et al. | The inference operation optimization of an improved LeNet-5 convolutional neural network and its FPGA hardware implementation |
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 | ||
GRNT | Written decision to grant |