KR20190044878A - 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치 - Google Patents
뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치 Download PDFInfo
- Publication number
- KR20190044878A KR20190044878A KR1020170137374A KR20170137374A KR20190044878A KR 20190044878 A KR20190044878 A KR 20190044878A KR 1020170137374 A KR1020170137374 A KR 1020170137374A KR 20170137374 A KR20170137374 A KR 20170137374A KR 20190044878 A KR20190044878 A KR 20190044878A
- Authority
- KR
- South Korea
- Prior art keywords
- value
- cumulative
- update
- weight
- update value
- Prior art date
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 201
- 238000000034 method Methods 0.000 title claims abstract description 72
- 238000009825 accumulation Methods 0.000 claims abstract description 14
- 230000001186 cumulative effect Effects 0.000 claims description 238
- 238000007667 floating Methods 0.000 claims description 20
- 238000012544 monitoring process Methods 0.000 claims description 20
- 230000015654 memory Effects 0.000 claims description 19
- 230000003247 decreasing effect Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 20
- 230000004913 activation Effects 0.000 description 16
- 230000006870 function Effects 0.000 description 10
- 230000003287 optical effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 239000007787 solid Substances 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/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/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Molecular Biology (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Nonlinear Science (AREA)
- Image Analysis (AREA)
- Feedback Control In General (AREA)
Abstract
뉴럴 네트워크에 포함되는 노드들 간의 연결관계에 할당되는 웨이트를 위한 개별 업데이트 값을 계산하고, 개별 업데이트 값을 누적 버퍼에 누적하며, 누적 버퍼의 누적 업데이트 값이 임계값 이상인 경우, 누적 업데이트 값을 이용하여 웨이트를 업데이트함으로써 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치를 제공할 수 있다.
Description
본 개시는 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치에 관한 것이다.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 최근 뉴럴 네트워크 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크 장치를 사용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다.
뉴럴 네트워크 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 뉴럴 네트워크 장치가 입력을 실시간으로 분석하고, 정보를 추출하기 위해서 뉴럴 네트워크 연산을 효율적으로 처리할 수 있는 기술이 요구된다. 예를 들어, 뉴럴 네트워크 장치의 복잡한 입력 데이터를 처리하는데 필요한 연산량을 감소시키면서도 정확도 손실을 최소화할 수 있는 기술이 요구된다.
다양한 실시예들은 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치를 제공하는데 있다. 본 개시가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
상술한 기술적 과제를 해결하기 위한 수단으로서, 일 측면에 따른 로우-프리시전 넘버 시스템(low-precision number system)을 이용하는 뉴럴 네트워크에서 파라미터를 처리하는 방법은, 상기 뉴럴 네트워크에 포함되는 노드들 간의 연결관계에 할당되는 웨이트를 위한 개별 업데이트 값을 계산하는 단계; 상기 개별 업데이트 값을 누적 버퍼에 누적하는 단계; 및 상기 누적 버퍼의 누적 업데이트 값이 임계값 이상인 경우, 상기 누적 업데이트 값을 이용하여 상기 웨이트를 업데이트하는 단계를 포함할 수 있다.
또한, 다른 측면에 따른 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법을 실행하는 명령어들을 포함하는 하나 이상의 프로그램이 기록된 기록매체를 포함할 수 있다.
또한, 또 다른 측면에 따른 로우-프리시전 넘버 시스템을 이용하는 뉴럴 네트워크를 실시하는 장치는, 적어도 하나의 프로그램이 저장된 메모리; 및 상기 적어도 하나의 프로그램을 실행함으로써 상기 뉴럴 네트워크에서 파라미터를 처리하는 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 상기 뉴럴 네트워크에 포함되는 노드들 간의 연결관계에 할당되는 웨이트를 위한 개별 업데이트 값을 계산하고, 상기 개별 업데이트 값을 누적 버퍼에 누적하며, 상기 누적 버퍼의 누적 업데이트 값이 임계값 이상인 경우, 상기 누적 업데이트 값을 이용하여 상기 웨이트를 업데이트할 수 있다.
도 1은 일부 실시예에 따른 뉴럴 네트워크의 예시를 나타내는 도면이다.
도 2는 일부 실시예에 따른 뉴럴 네트워크에서 파라미터를 처리하는 방법의 일 예를 나타내는 흐름도이다.
도 3a는 일부 실시예에 따른 부동 소수점 값의 예시를 도시한 도면이고, 도 3b는 일부 실시예에 따른 고정 소수점 값의 일 예를 도시한 도면이며, 도 3c는 일부 실시예에 따른 고정 소수점 값의 다른 예를 도시한 도면이다.
도 4는 일부 실시예에 따른 뉴럴 네트워크에서 파라미터를 처리하는 방법의 다른 예를 나타내는 흐름도이다.
도 5는 일부 실시예에 따른 고정 소수점 파라미터를 이용하는 뉴럴 네트워크의 예시를 나타내는 도면이다.
도 6은 일부 실시예에 따른 웨이트에 유효 업데이트 값을 가산하는 과정의 예시를 나타내는 도면이다.
도 7은 일부 실시예에 따른 고정 소수점 파라미터를 이용하는 뉴럴 네트워크에서 파라미터를 처리하는 방법의 예시를 나타내는 흐름도이다.
도 8a는 일부 실시예에 따른 누적 업데이트 값의 소수점의 위치를 조정하는 과정의 일 예를 나타내는 도면이고, 도 8b는 일부 실시예에 따른 누적 업데이트 값의 소수점의 위치를 조정하는 과정의 다른 예를 나타내는 도면이다.
도 9는 일부 실시예에 따른 부동 소수점 파라미터를 이용하는 뉴럴 네트워크의 예시를 나타내는 도면이다.
도 10은 일부 실시예에 따른 부동 소수점 파라미터를 이용하는 뉴럴 네트워크에서 파라미터를 처리하는 방법의 예시를 나타내는 흐름도이다.
도 11은 일부 실시예에 따른 뉴럴 네트워크 장치의 구성을 나타내는 블록도이다.
도 2는 일부 실시예에 따른 뉴럴 네트워크에서 파라미터를 처리하는 방법의 일 예를 나타내는 흐름도이다.
도 3a는 일부 실시예에 따른 부동 소수점 값의 예시를 도시한 도면이고, 도 3b는 일부 실시예에 따른 고정 소수점 값의 일 예를 도시한 도면이며, 도 3c는 일부 실시예에 따른 고정 소수점 값의 다른 예를 도시한 도면이다.
도 4는 일부 실시예에 따른 뉴럴 네트워크에서 파라미터를 처리하는 방법의 다른 예를 나타내는 흐름도이다.
도 5는 일부 실시예에 따른 고정 소수점 파라미터를 이용하는 뉴럴 네트워크의 예시를 나타내는 도면이다.
도 6은 일부 실시예에 따른 웨이트에 유효 업데이트 값을 가산하는 과정의 예시를 나타내는 도면이다.
도 7은 일부 실시예에 따른 고정 소수점 파라미터를 이용하는 뉴럴 네트워크에서 파라미터를 처리하는 방법의 예시를 나타내는 흐름도이다.
도 8a는 일부 실시예에 따른 누적 업데이트 값의 소수점의 위치를 조정하는 과정의 일 예를 나타내는 도면이고, 도 8b는 일부 실시예에 따른 누적 업데이트 값의 소수점의 위치를 조정하는 과정의 다른 예를 나타내는 도면이다.
도 9는 일부 실시예에 따른 부동 소수점 파라미터를 이용하는 뉴럴 네트워크의 예시를 나타내는 도면이다.
도 10은 일부 실시예에 따른 부동 소수점 파라미터를 이용하는 뉴럴 네트워크에서 파라미터를 처리하는 방법의 예시를 나타내는 흐름도이다.
도 11은 일부 실시예에 따른 뉴럴 네트워크 장치의 구성을 나타내는 블록도이다.
이하 첨부된 도면을 참조하면서 오로지 예시를 위한 실시예들을 상세히 설명하기로 한다. 하기 설명은 실시예들을 구체화하기 위한 것일 뿐 발명의 권리 범위를 제한하거나 한정하는 것이 아님은 물론이다. 상세한 설명 및 실시예로부터 당해 기술분야의 전문가가 용이하게 유추할 수 있는 것은 권리범위에 속하는 것으로 해석된다.
본 명세서에서 사용되는 '구성된다' 또는 '포함한다' 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 명세서에서 사용되는 '제 1' 또는 '제 2' 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용할 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다.
본 실시예들은 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치에 관한 것으로서 이하의 실시예들이 속하는 기술 분야에서 통상의 지식을 가진 자에게 널리 알려져 있는 사항들에 관해서는 자세한 설명을 생략한다.
도 1은 일부 실시예에 따른 뉴럴 네트워크의 예시를 나타내는 도면이다.
도 1을 참조하면, 일부 실시예에 따른 뉴럴 네트워크(10)가 도시되어 있다. 뉴럴 네트워크(10)는 입력 레이어, 히든 레이어들 및 출력 레이어를 포함하는 구조를 가지며, 수신되는 입력 데이터(예를 들어, 및 )를 기초로 연산을 수행하고, 수행 결과를 기초로 출력 데이터(예를 들어, 및 )를 생성할 수 있다.
뉴럴 네트워크(10)는 2개 이상의 히든 레이어들을 포함하는 딥 뉴럴 네트워크(Deep Neural Network: DNN) 또는 n-계층 뉴럴 네트워크(n-layers neural networks)일 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 뉴럴 네트워크(10)는 입력 레이어(Layer 1), 2개의 히든 레이어들(Layer 2 및 Layer 3) 및 출력 레이어(Layer 4)를 포함하는 DNN일 수 있다. DNN은 Convolutional Neural Networks(CNN), Recurrent Neural Networks(RNN), Deep Belief Networks, Restricted Boltzman Machines 등을 포함할 수 있으나, 이에 제한되지 않는다.
뉴럴 네트워크(10)가 DNN 구조를 갖는 경우 유효한 정보를 추출할 수 있는 보다 많은 레이어들을 포함하므로, 뉴럴 네트워크(10)는 종래의 뉴럴 네트워크보다 복잡한 데이터 집합들을 처리할 수 있다. 한편, 뉴럴 네트워크(10)는 4개의 레이어들을 포함하는 것으로 도시되어 있으나, 이는 예시에 불과할 뿐 뉴럴 네트워크(10)는 더 적거나 많은 레이어들을 포함할 수 있다. 또한, 뉴럴 네트워크(10)는 도 1에 도시된 것과는 다른 다양한 구조의 레이어들을 포함할 수 있다.
뉴럴 네트워크(10)에 포함된 레이어들 각각은 "뉴런(neuron)", "프로세싱 엘리먼트(Processing element: PE)", "유닛(unit)" 또는 이와 유사한 용어들로 알려진, 복수의 인공 노드(artificial node)들을 포함할 수 있다. 예를 들어, 도 1에 도시된 바와 같이, Layer 1은 2개의 노드들, Layer 2는 3개의 노드들을 포함할 수 있다. 다만, 이는 예시에 불과할 뿐 뉴럴 네트워크(10)에 포함된 레이어들 각각은 다양한 개수의 노드들을 포함할 수 있다.
뉴럴 네트워크(10)에 포함된 레이어들 각각에 포함된 노드들은 서로 연결되어 데이터를 교환할 수 있다. 예를 들어, 하나의 노드는 다른 노드들로부터 데이터를 수신하여 연산할 수 있고, 연산 결과를 또 다른 노드들로 출력할 수 있다.
노드들 각각의 출력 값은 액티베이션(activation) 값이라고 불릴 수 있다. 액티베이션 값은 한 노드의 출력 값이면서, 다음 레이어에 포함된 노드들의 입력 값일 수 있다. 한편, 노드들 각각은 이전 레이어에 포함된 노드들로부터 수신된 액티베이션 값들 및 웨이트(weight)들에 기초하여 자신의 액티베이션 값을 결정할 수 있다. 웨이트는 각 노드에서의 액티베이션 값을 계산하기 위해 이용되는 파라미터로서, 노드들 간의 연결관계에 할당되는 값일 수 있다.
노드들 각각은 입력을 받아 액티베이션 값을 출력하는 연산 유닛(computational unit)일 수 있고, 입력-출력을 매핑할 수 있다. 예를 들어, 는 활성화 함수(activation function)이고, 는 (i-1) 번째 레이어에 포함된 k 번째 노드로부터 i 번째 레이어에 포함된 j번째 노드로의 웨이트이며, 는 i 번째 레이어에 포함된 j 번째 노드의 바이어스(bias) 값이고, 는 i 번째 레이어의 j 번째 노드의 액티베이션 값이라고 할 때, 액티베이션 값 는 다음과 같은 수학식 1을 따를 수 있다.
도 1에 도시된 바와 같이, 2번째 레이어(Layer 2)의 첫 번째 노드의 액티베이션 값은 로 표현될 수 있다. 또한, 은 수학식 1에 따라 값을 가질 수 있다. 다만, 앞서 설명한 수학식 1은 뉴럴 네트워크에서 데이터를 처리하기 위해 이용되는 액티베이션 및 웨이트를 설명하기 위한 예시일 뿐, 이에 제한되지 않는다. 액티베이션 값은 이전 레이어로부터 수신된 액티베이션 값들의 가중 합계(weighted sum)에 활성화 함수를 적용한 값을 Rectified Linear Unit (ReLU)을 통과시킴으로써 획득된 값일 수도 있다.
한편, 뉴럴 네트워크(10)는 로우-프리시전 넘버 시스템(low-precision number system)을 이용할 수 있다. 로우-프리시전 넘버 시스템은 종래의 뉴럴 네트워크보다 상대적으로 적은 비트 개수를 갖는 데이터를 파라미터로 이용함으로써 정밀도(precision)를 낮추면서 연산량을 감소시키는 시스템을 의미할 수 있다. 예를 들어, 32 비트 또는 64비트의 부동 소수점 또는 고정 소수점 데이터를 이용하는 종래의 뉴럴 네트워크와는 달리, 로우-프리시전 넘버 시스템을 이용하는 뉴럴 네트워크(10)는 8 비트 또는 16 비트의 부동 소수점 또는 고정 소수점 데이터를 파라미터로 이용할 수 있다.
뉴럴 네트워크(10)가 8 비트 또는 16 비트의 부동 소수점 또는 고정 소수점 데이터를 이용한다는 것은 뉴럴 네트워크(10)의 액티베이션 값, 웨이트 및 노드의 바이어스 값 등의 파라미터가 8 비트 또는 16 비트의 부동 소수점 또는 고정 소수점 데이터 형식을 가지는 것을 의미할 수 있다. 다만, 로우-프리시전 넘버 시스템을 이용하는 뉴럴 네트워크(10)는 더 작은 비트 개수를 갖는 부동 소수점 또는 고정 소수점 데이터를 파라미터로 이용할 수도 있으며, 앞선 예시에 제한되지 않는다.
뉴럴 네트워크(10)에서는 수많은 데이터 집합들이 상호 연결된 복수의 노드들 간에 교환되고, 레이어를 지나면서 수많은 연산과정을 거친다. 로우-프리시전 넘버 시스템을 이용하는 뉴럴 네트워크(10)는 수많은 연산과정에서 종래의 뉴럴 네트워크보다 적은 비트 개수를 갖는 데이터를 이용하므로, 종래의 뉴럴 네트워크와 비교하여 연산량이 감소될 수 있다. 다만, 로우-프리시전 넘버 시스템을 이용하는 뉴럴 네트워크(10)는 연산량을 감소시킨다 할지라도, 정확도 손실을 최소화시키기 위한 기술을 적용한다. 이하 도 2 내지 도 11을 참조하여 로우-프리시전 넘버 시스템을 이용하는 뉴럴 네트워크(10)에서 정확도 손실을 최소화시키기 위한 방법에 대해 상세히 설명한다.
도 2는 일부 실시예에 따른 뉴럴 네트워크에서 파라미터를 처리하는 방법의 일 예를 나타내는 흐름도이다. 뉴럴 네트워크는 로우-프리시전 넘버 시스템을 이용하는 뉴럴 네트워크일 수 있다. 파라미터는 뉴럴 네트워크에 포함되는 노드들 간의 연결관계에 할당되는 웨이트일 수 있다. 이하에서 뉴럴 네트워크에서 처리되는 파라미터를 웨이트로 설명할 것이나, 파라미터가 반드시 웨이트에 한정되는 것은 아니다. 파라미터는 뉴럴 네트워크에서 처리되는 임의의 데이터를 의미할 수 있다.
도 2를 참조하면, 단계 210에서, 뉴럴 네트워크 장치는 뉴럴 네트워크에 포함되는 노드들 간의 연결관계에 할당되는 웨이트를 위한 개별 업데이트(individual update) 값을 계산할 수 있다. 웨이트는 부동 소수점 값 또는 고정 소수점 값일 수 있다. 이하 도 3a 내지 도 3c를 참조하여 부동 소수점 값 및 고정 소수점 값에 대해 설명한다.
도 3a는 일부 실시예에 따른 부동 소수점 값의 예시를 도시한 도면이고, 도 3b는 일부 실시예에 따른 고정 소수점 값의 일 예를 도시한 도면이며, 도 3c는 일부 실시예에 따른 고정 소수점 값의 다른 예를 도시한 도면이다.
도 3a를 참조하면, 부동 소수점 값(30)은 부호비트(310), 지수부(320), 가수부(330) 및 바이어스(340)로 구성될 수 있다. 부동 소수점은 하나의 수를 소수점 부분을 나타내는 부분과 소수점 위치를 나타내는 부분으로 나누어 표현하는 표기법을 의미한다.
가수부(330)는 소수점 부분을 나타내는 부분에 대응되고, 지수부(320)는 소수점 위치를 나타내는 부분에 대응될 수 있다. 부호비트(310)는 부동 소수점 값(30)의 부호를 결정할 수 있다. 바이어스(340)는 지수부(320)에 더하거나 빼지는 값으로서, 음의 지수를 표현하기 위해 결정되는 값일 수 있다. 부동 소수점 값(30)은 부호비트(310), 지수부(320)에 대응되는 비트들 및 가수부(330)에 대응되는 비트들을 포함할 수 있다. 바이어스(340)는 부동 소수점 값(30)에 대해 미리 결정되어 별도로 저장될 수 있다.
한편, 부동 소수점 값(30)은 부호비트(310)를 sign, 지수부(320)를 exponent, 가수부(330)를 mantissa, 바이어스(340)를 bias라고 할 때, 다음과 같은 수학식 2를 따르는 값을 가질 수 있다.
도 3b를 참조하면, 고정 소수점 값(35)은 부호비트(315), 정수부(325), 소수부(335) 및 소수점(345)으로 구성될 수 있다. 고정 소수점은 소수점을 사용하여 고정된 자리수의 소수를 나타내는 표기법을 의미한다.
부호비트(315)는 고정 소수점 값(35)의 부호를 결정하고, 정수부(325)는 고정 소수점 값(35)의 정수를 나타내는 부분에 대응되며, 소수부(335)는 고정 소수점 값(35)의 소수를 나타내는 부분에 대응될 수 있다. 소수점(345)은 고정 소수점 값(35)의 정수부(325) 및 소수부(335)를 구분하는 기준이 되는 점을 의미할 수 있다.
한편, 고정 소수점 값(35)이 나타내는 값은 도 3c를 참조하여 설명될 수 있다. 도 3c를 참조하면, 고정 소수점 값(35)은 8 비트 고정 소수점 값일 수 있다. 또한, 고정 소수점 값(35)은 정수부(325), 소수부(335) 및 소수점(345)으로 구성될 수 있다.
정수부(325) 및 소수부(335)를 나타내는 비트들 각각은 1 또는 0의 값을 가질 수 있다. 또한, 도 3c에 도시된 바와 같이, 정수부(325) 및 소수부(335)를 나타내는 비트들은 순서대로 -8, +4, +2, +1, +0.5, +0.25, +0.125 및 +0.0625의 값을 나타낼 수 있다. 정수부(325)의 최상위 비트가 1일 경우, 정수부(325)의 최상위 비트가 나타내는 값은 -8이므로, 정수부(325) 및 소수부(335)에 포함되는 다른 비트들이 어떤 값을 갖더라도 고정 소수점 값(35)이 나타내는 값은 음수이다. 정수부(325)의 최상위 비트는 고정 소수점 값(35)의 부호를 결정하는 부호비트(315)에 대응될 수 있다.
다만, 도 3c는 예시에 불과하며, 고정 소수점 값(35)은 16비트 고정 소수점 값일 수 있고, 임의의 적절한 수의 비트 개수를 갖는 고정 소수점 값일 수 있다. 또한, 고정 소수점 값(35)은 부호화 표현법, 1의 보수법 및 2의 보수법 중 어느 하나의 표현법에 의해 음수를 나타낼 수 있다.
다시 도 2로 돌아와서, 개별 업데이트 값은 웨이트를 업데이트하기 위해 계산되는 값일 수 있다. 뉴럴 네트워크에서 학습을 하는 대상은 웨이트이고, 뉴럴 네트워크가 점점 더 좋은 결과를 출력하기 위해서는 웨이트가 학습 과정에서 반복적으로 업데이트될 필요가 있다. 웨이트를 업데이트하기 위한 방법 중 하나로서 예를 들어 경사하강법(gradient descent algorithm)이 이용될 수 있다. 경사하강법은 손실함수 또는 오차 함수의 최저점을 찾기 위해 손실 함수 또는 오차 함수의 기울기 방향으로 파라미터를 조정함으로써 오차를 최소화시키는 알고리즘을 의미할 수 있다. 예를 들어, 손실함수가 이고, 파라미터가 이며, 학습 속도(learning rate)가 라고 할 때, 파라미터는 다음과 같은 수학식 3에 따라서 조정될 수 있다.
파라미터를 업데이트하기 위해 계산되는 은 손실 함수의 기울기 방향으로 파라미터를 조정하기 위한 그래디언트(gradient)를 의미할 수 있다. 예를 들어, 파라미터가 웨이트일 때, 은 웨이트를 업데이트하기 위해 계산되는 개별 업데이트 값일 수 있다.
한편, 일반적인 뉴럴 네트워크에서 개별 업데이트 값 은 웨이트보다 훨씬 작은 값을 가진다. 뉴럴 네트워크가 로우-프리시전 넘버 시스템(예를 들어, 8 비트 또는 16 비트)를 이용하는 경우, 개별 업데이트 값 은 웨이트가 나타낼 수 있는 값의 범위에 포함되지 않을 수 있다. 이에 따라, 웨이트가 수학식 3에 따라 업데이트될 때, 개별 업데이트 값 은 웨이트가 나타낼 수 있는 값의 범위에 포함되지 않을 수 있다. 이에 따라, 웨이트가 수학식 3에 따라 업데이트될 때, 개별 업데이트 값 의 크기로 인하여 웨이트가 업데이트되지 않을 수 있다.
본 개시에 따른 뉴럴 네트워크 장치는 단계 220, 단계 230 및 단계 240을 수행함으로써 개별 업데이트 값들이 무시되지 않고, 웨이트를 업데이트하는 과정에서 반영되도록 할 수 있다. 단계 220에서, 뉴럴 네트워크 장치는 개별 업데이트 값을 누적 버퍼(accumulation buffer)에 누적할 수 있다. 누적 버퍼는 개별 업데이트 값을 누적하기 위한 전용 하드웨어일 수 있고, 개별 업데이트 값을 누적하기 위해 할당된 메모리일 수도 있다. 개별 업데이트 값은 누적 버퍼에 누적되어 누적 업데이트(accumulated update) 값이 될 수 있다. 누적 버퍼는 누적 업데이트 값을 저장할 수 있다.
로우-프리시전 넘버 시스템을 이용하는 뉴럴 네트워크에서 개별 업데이트 값이 웨이트를 업데이트하는 과정에서 무시되지 않도록, 뉴럴 네트워크 장치는 개별 업데이트 값들을 웨이트에 영향을 줄 수 있는 크기까지 누적할 수 있다.
단계 230에서, 뉴럴 네트워크 장치는 누적 버퍼의 누적 업데이트 값이 임계값 이상인 경우, 누적 업데이트 값을 이용하여 웨이트를 업데이트할 수 있다. 뉴럴 네트워크 장치는 누적 버퍼의 누적 업데이트 값이 임계값 이상인지 여부를 판단할 수 있다. 임계값은 누적 업데이트 값이 웨이트에 영향을 줄 수 있는 크기까지 누적되었는지를 결정하기 위한 값일 수 있다. 예를 들어, 임계값은 웨이트의 최하위 유효자리에 대응되는 값일 수 있다.
웨이트가 고정 소수점 값인 경우, 웨이트의 최하위 유효자리는 웨이트를 나타내는 비트들 중 최하위 비트에 대응되는 자리일 수 있다. 예를 들어, 웨이트의 최하위 비트가 자리를 나타내는 경우, 웨이트의 최하위 유효자리는 자리일 수 있고, 임계값은 이 최하위 유효자리 자리에 대응되는 값인 일 수 있다.
웨이트가 부동 소수점 값인 경우, 웨이트의 최하위 유효자리는 웨이트의 지수부를 나타내는 비트들 중 최하위 비트에 대응되는 자리일 수 있다. 다만, 웨이트가 부동 소수점 값인 경우에는 최하위 유효자리가 결정되기 위해 바이어스가 고려될 수 있다. 예를 들어, 웨이트의 지수부를 나타내는 비트들 중 최하위 비트가 자리를 나타내더라도 바이어스가 8인 경우, 웨이트의 최하위 유효자리는 자리가 아니라 자리이고, 임계값은 이 최하위 유효자리 자리에 대응되는 값인 일 수 있다.
다만, 이는 예시에 불과할 뿐, 임계값은 웨이트의 최하위 유효자리에 대응되는 값 및 누적 업데이트 값의 최상위 유효자리에 대응되는 값 사이의 임의의 적절한 값일 수도 있다.
누적 업데이트 값이 임계값 이상인 경우 누적 업데이트 값은 웨이트에 영향을 줄 수 있는 크기를 가지므로, 뉴럴 네트워크 장치는 누적 업데이트 값을 이용하여 웨이트를 업데이트할 수 있다.
구체적으로, 뉴럴 네트워크 장치는 누적 업데이트 값 중 웨이트의 유효자리에 합산 가능한 부분을 유효 업데이트(effective update) 값으로 결정할 수 있다. 유효 업데이트 값이란 누적 업데이트 값에서 웨이트를 업데이트하기 위해 실제로 이용되는 값을 의미할 수 있다. 웨이트가 나타낼 수 있는 값의 범위는 웨이트에 할당된 비트 개수에 따라 한계가 존재한다. 따라서, 웨이트의 최하위 유효자리 이상의 값들 중 웨이트의 유효자리에 대응되는 값들만이 웨이트에 합산될 수 있다.
예를 들어, 웨이트가 1 비트의 부호비트, 3 비트의 정수부 및 4 비트의 소수부를 포함하는 8비트 고정 소수점 값이라고 할 때, 웨이트의 유효자리는 및 자리일 수 있다. 웨이트가 나타낼 수 있는 값의 범위의 한계로 인해, 웨이트에 어떤 값이 합산되기 위해서는 그 값이 중 어느 하나의 자리에 대응되는 값을 적어도 하나 포함해야 한다. 예를 들어, 웨이트에 1.265625(십진수)이라는 값이 합산되어야 한다고 가정해보자. 1.265625은 이므로, 웨이트의 유효자리에 대응되는 및 은 웨이트에 합산될 수 있으나, 는 웨이트가 나타낼 수 있는 값의 범위의 한계로 인해 웨이트에 합산될 수 없다.
한편, 웨이트의 유효자리에 합산 가능한 부분은 웨이트의 최하위 유효자리가 나타내는 값의 배수들을 포함할 수 있다. 앞선 예시에서, 웨이트의 최하위 유효자리에 대응되는 값은 이고, 누적 업데이트 값 중 웨이트의 유효자리에 합산 가능한 부분은 및 자리에 대응되는 값들인 및 이다. 및 는 모두 최하위 유효자리에 대응되는 값인 의 배수들이다.
임계값은 웨이트의 최하위 유효자리에 대응되는 값일 수 있으므로, 유효 업데이트 값은 임계값의 배수들로 구성될 수 있다. 예를 들어, 누적 업데이트 값을 Accumulated update, 임계값을 threshold라고 할 때, 유효 업데이트 값은 다음과 같은 수학식 4를 따를 수 있다.
수학식 4에서 는 Accumulated update를 threshold로 나눈 몫을 의미할 수 있다. 유효 업데이트 값은 누적 업데이트 값을 임계값으로 나눈 몫에 임계값을 곱한 값을 의미할 수 있다. 또한, 유효 업데이트 값은 누적 업데이트 값보다 작은 값을 갖는, 임계값의 배수들 중에서 가장 큰 값일 수 있다. 예를 들어, Accumulated update가 2.2(십진수)이고, threshold가 1(십진수)인 경우, 유효 업데이트 값은 누적 업데이트 값 2.2보다 작은 값을 갖는, 임계값 1의 배수들인 1, 2 중에서 가장 큰 값인 2일 수 있다.
뉴럴 네트워크 장치는 웨이트에 유효 업데이트 값을 가산할 수 있다. 유효 업데이트 값은 웨이트를 업데이트하기 위해 실제로 이용되는 값이므로, 뉴럴 네트워크 장치는 웨이트에 유효 업데이트 값을 가산함으로써 웨이트를 업데이트할 수 있다.
또한, 뉴럴 네트워크 장치는 누적 버퍼의 누적 업데이트 값에서 유효 업데이트 값을 감산할 수 있다. 누적 버퍼의 누적 업데이트 값 중 유효 업데이트 값이 웨이트에 반영되었으므로, 뉴럴 네트워크 장치는 누적 버퍼의 누적 업데이트 값에서 유효 업데이트 값을 감산할 수 있다. 예를 들어, 웨이트가 업데이트됨에 따라 누적 업데이트 값은 다음과 같은 수학식 5을 따라 감산될 수 있다.
뉴럴 네트워크 장치는 웨이트를 업데이트한 이후 누적 버퍼의 누적 업데이트 값에 개별 업데이트 값들을 계속해서 누적할 수 있고, 앞서 설명한 과정들을 반복할 수 있다. 본 개시에 따른 뉴럴 네트워크에서 파라미터를 처리하는 방법은 일반적으로 웨이트보다 훨씬 작은 값을 갖는 개별 업데이트 값들을 무시하거나 버리는 대신에 웨이트에 영향을 줄 수 있는 크기까지 누적하여 웨이트에 적용함으로써 로우 프리시전 넘버 시스템을 이용하는 뉴럴 네트워크에서의 반올림 오차(rounding error)를 최소화시킬 수 있다. 또한, 본 개시에 따른 뉴럴 네트워크에서 파라미터를 처리하는 방법은 누적 업데이트 값 중 웨이트에 업데이트되고 남은 부분도 계속해서 누적 버퍼에 유지함으로써 정확도 손실을 최소화할 수 있다.
한편, 뉴럴 네트워크 장치는 누적 업데이트 값이 임계값 이상인지 여부를 기 설정된 업데이트 주기마다 판단할 수 있다. 업데이트 주기는 사용자에 의해 미리 결정될 수 있고, 뉴럴 네트워크 장치에 의해 결정될 수도 있다. 또한, 업데이트 주기는 누적 업데이트 값이 임계값 이상인지 여부를 판단하기 위해 적절한 임의의 주기로 설정될 수 있다.
개별 업데이트 값들이 상대적으로 작은 경우 업데이트 주기는 상대적으로 길게 결정될 수 있고, 개별 업데이트 값들이 상대적으로 큰 경우에는 업데이트 주기는 상대적으로 짧게 결정될 수 있다. 예를 들어, 업데이트 주기는 개별 업데이트 값이 계산될 때마다 반복되는 것으로 설정될 수 있고, 개별 업데이트 값들이 10번 계산될 때마다 반복되는 것으로 설정될 수도 있다. 다만, 이에 제한되지 않는다. 예를 들어, 업데이트 주기는 뉴럴 네트워크의 n 회 학습에 대응되는 주기로 설정될 수도 있다.
뉴럴 네트워크 장치는 누적 업데이트 값이 임계값보다 작은 경우, 다음 업데이트 주기까지 계산된 개별 업데이트 값들을 누적 버퍼에 계속해서 누적할 수 있다. 뉴럴 네트워크 장치는 다음 업데이트 주기에 누적 업데이트 값이 임계값 이상인지 여부를 다시 판단할 수 있고, 누적 업데이트 값이 임계값 이상인 경우, 누적 업데이트 값을 이용하여 웨이트를 업데이트할 수 있다.
누적 업데이트 값이 임계값 이상인지 여부가 일정한 주기에 따라 판단되고, 뉴럴 네트워크 장치에서 이용되는 파라미터가 주기적으로 업데이트됨에 따라 뉴럴 네트워크의 오버헤드가 감소될 수 있다. 이하 도 4를 참조하여 누적 업데이트 값이 임계값 이상인지 여부를 주기적으로 판단하여 웨이트를 업데이트는 방법의 예시를 설명한다.
도 4는 일부 실시예에 따른 뉴럴 네트워크에서 파라미터를 처리하는 방법의 다른 예를 나타내는 흐름도이다.
도 4를 참조하면, 단계 410에서, 시간 t는 0으로 초기화되고, 업데이트 주기(update_period) 및 임계값(threshold)이 미리 결정될 수 있다. 시간 t는 개별 업데이트 값 하나가 계산되는 시간을 기본단위로 가질 수 있다. 예를 들어, t=4는 개별 업데이트 값 4개가 계산되는 시간을 의미할 수 있다. 다만, 이에 제한되지 않는다. 업데이트 주기는 1일 수도 있고, 4일 수도 있으며, 1 이상의 임의의 적절한 값을 가질 수 있다. 임계값은 누적 업데이트 값이 웨이트에 영향을 줄 수 있는 크기까지 누적되었는지를 결정하기 위한 값일 수 있다.
단계 420에서, 뉴럴 네트워크 장치는 뉴럴 네트워크에 포함되는 노드들 간의 연결관계에 할당되는 웨이트를 위한 개별 업데이트 값을 계산할 수 있다. 개별 업데이트 값은 경사하강법을 이용하여 웨이트를 업데이트하기 위한 그래디언트 값일 수 있다.
단계 430에서, 뉴럴 네트워크 장치는 개별 업데이트 값을 누적 버퍼에 누적하고, 시간 t에 1을 더할 수 있다. 단계 440에서, 뉴럴 네크워크 장치는 시간 t가 업데이트 주기에 대응되는지를 판단할 수 있다. 시간 t가 업데이트 주기에 대응되지 않는 경우 뉴럴 네트워크 장치는 단계 420으로 돌아가 다시 개별 업데이트 값을 계산할 수 있다.
시간 t가 업데이트 주기에 대응되는 경우 뉴럴 네트워크 장치는 단계 450을 수행할 수 있다. 단계 450에서, 뉴럴 네트워크 장치는 누적 버퍼의 누적 업데이트 값이 임계값 이상인지 여부를 판단할 수 있다. 누적 업데이트 값이 임계값보다 작은 경우 뉴럴 네트워크 장치는 단계 420으로 돌아가 다시 개별 업데이트 값을 계산할 수 있다. 이 때, 시간 t는 0으로 초기화될 수 있고, 앞서 설명한 단계들이 다음 업데이트 주기 동안 반복될 수 있다.
누적 업데이트 값이 임계값 이상인 경우, 뉴럴 네트워크 장치는 단계 460을 수행할 수 있다. 단계 460에서, 뉴럴 네트워크 장치는 누적 업데이트 값을 이용하여 웨이트를 업데이트할 수 있다. 예를 들어, 뉴럴 네트워크 장치는 웨이트에 앞의 수학식 4에 따른 유효 업데이트 값을 가산함으로써 웨이트를 업데이트할 수 있다. 또한, 뉴럴 네트워크 장치는 웨이트가 업데이트됨에 따라 누적 버퍼의 누적 업데이트 값에서 유효 업데이트 값을 감산할 수 있다.
도 5는 일부 실시예에 따른 고정 소수점 파라미터를 이용하는 뉴럴 네트워크의 예시를 나타내는 도면이다.
도 5를 참조하면, 고정 소수점 파라미터를 이용하는 뉴럴 네트워크에서 웨이트(50)는 제 1 부호비트(510), 제 1 정수부(520), 제 1 소수부(530) 및 제 1 소수점(540)으로 구성된 고정 소수점 값이고, 누적 업데이트 값(55)은 제 2 부호비트(515), 제 2 소수부(535) 및 제 2 소수점(미도시)으로 구성된 고정 소수점 값일 수 있다. 일부 실시예에 따르면, 웨이트(50)는 제 1 소수점(540)이 이동 가능한 동적 고정 소수점(dynamic fixed point) 값일 수도 있다. 제 1 소수점(540)이 이동됨에 따라 제 1 소수부(530)의 비트 개수(길이)가 조정될 수 있다.
누적 업데이트 값(55)은 정수부를 포함하지 않을 수 있다. 예를 들어, 제 1 소수점(540) 및 제 2 소수점이 동일한 경우 누적 업데이트 값(55)은 웨이트(50)에 비해 상당히 작은 값들만을 나타낼 수 있으므로, 정수부를 포함하지 않고, 소수부(즉, 제 2 소수부(535))만을 포함할 수 있다. 한편, 제 2 소수점은 제 1 소수점(540)과 동일할 수 있으나, 상이할 수도 있다. 제 2 소수점은 상황에 따라 조정될 수도 있다. 이하 도 8a 및 도 8b를 참조하여 제 2 소수점의 위치를 조정하는 과정에 대해 상세히 설명할 것이다.
웨이트(50)는 m 비트(m은 임의의 자연수)의 고정 소수점 값일 수 있고, 누적 업데이트 값(55)은 n 비트(n은 임의의 자연수)의 고정 소수점 값일 수 있다. m 및 n은 동일한 값일 수도 있고, 상이한 값일 수도 있다. 로우-프리시전 넘버 시스템을 이용하는 뉴럴 네트워크에서 m 및 n 각각은 8 또는 16의 값을 가질 수 있으나, 이에 제한되지 않는다.
누적 업데이트 값은(55)은 웨이트(50)와 비교하여 상대적으로 작은 값을 가질 수 있다. 따라서, 웨이트(50)를 나타내는 비트들 각각에 대응되는 값은 누적 업데이트 값(55)을 나타내는 비트들 각각에 대응되는 값보다 대체로 클 수 있다. 다만, 웨이트(50)를 나타내는 비트들 중 어느 하나의 비트에 대응되는 값은 누적 업데이트 값(55)을 나타내는 비트들 중 어느 하나의 비트에 대응되는 값과 동일할 수 있다. 웨이트(50)가 업데이트되기 위해서는 누적 업데이트 값(55)의 일부가 웨이트(50)에 합산되어야 하므로, 웨이트(50)의 하위 비트들 중 일부는 누적 업데이트 값(55)의 상위 비트들 중 일부와 오버랩될 수 있다.
웨이트(50) 및 누적 업데이트 값(55) 간에 오버랩되는 비트들(550)이 k 비트(k는 임의의 자연수)라고 할 때, 뉴럴 네트워크는 실질적으로 (m+n-2-k) 비트의 고정 소수점 데이터를 이용하는 것과 동일한 효과를 얻을 수 있다.
웨이트(50) 및 누적 업데이트 값(55) 간에 오버랩되는 비트들(550)은 임계값(560)을 기준으로 결정될 수 있다. 임계값(560)은 누적 업데이트 값(55)이 웨이트(50)에 영향을 줄 수 있는 크기까지 누적되었는지를 결정하기 위한 값일 수 있다. 예를 들어, 임계값(560)은 웨이트(50)의 최하위 유효자리에 대응되는 값일 수 있다. 오버랩되는 비트들(550)은 누적 업데이트 값(55)을 나타내는 비트들 중 임계값(560) 이상의 값을 나타내는 비트들일 수 있다. 오버랩되는 비트들(550)은 웨이트(50)의 하위 비트들 중 일부와 오버랩되므로, 웨이트(50)와 합산될 수 있다. 한편, 웨이트(50)의 하위 비트들은 제 1 소수부(530)를 나타낼 수 있다.
개별 업데이트 값이 누적되어 누적 업데이트 값(55)이 웨이트(50)에 영향을 줄 수 있는 크기까지 커지면, 뉴럴 네트워크 장치는 누적 업데이트 값(55)을 이용하여 웨이트(50)를 업데이트할 수 있다. 예를 들어, 뉴럴 네트워크 장치는 누적 업데이트 값(55)의 제 2 소수부(535)를 나타내는 비트들 중 웨이트(50)의 제 1 소수부(530)와 오버랩되는 적어도 하나의 비트(550)가 나타내는 값을 웨이트(50)에 가산할 수 있다. 오버랩되는 적어도 하나의 비트(550)가 나타내는 값은 유효 업데이트 값에 대응될 수 있다.
한편, 누적 업데이트 값(55)의 제 2 소수부(535)를 나타내는 비트들 중 웨이트(50)의 제 1 소수부(530)와 오버랩되는 적어도 하나의 비트(550)가 나타내는 값을 웨이트(50)에 가산하는 과정에서 패딩(padding) 방식이 적용될 수 있다. 이하 도 6을 참조하여, 웨이트에 유효 업데이트 값을 가산하는 과정을 상세히 설명한다.
도 6은 일부 실시예에 따른 웨이트에 유효 업데이트 값을 가산하는 과정의 예시를 나타내는 도면이다.
도 6을 참조하면, 누적 업데이트 값(610)이 도시되어 있다. 누적 업데이트 값(610)은 개별 업데이트 값들이 누적된 값일 수 있다. 또한, 누적 업데이트 값(610)은 n 비트 고정 소수점 값일 수 있다. 누적 업데이트 값(610)을 나타내는 비트들 중 일부가 유효 업데이트 값(614)으로 결정될 수 있다. 유효 업데이트 값(614)은 임계값을 기준으로 상위 방향에 위치하는 비트들 중 부호비트(612)를 제외한 비트들에 대응될 수 있다.
한편, 유효 업데이트 값(614)은 m 비트 고정 소수점 값인 웨이트(630)에 가산되기 위해 패딩될 수 있다. 패딩된 유효 업데이트 값(620)은 도 6에 도시된 바와 같이, 부호비트(612), 패딩부(616) 및 유효 업데이트 값(614)을 포함할 수 있다. 패딩부(616)는 부호비트(612)와 동일한 값들을 나타내는 비트들로 채워질 수 있다. 패딩된 유효 업데이트 값(620)은 웨이트(630)와 동일하게 m 비트 고정 소수점 값이 되므로, 웨이트(630)와 합산될 수 있다. 예를 들어, 패딩된 유효 업데이트 값(620)은 부호비트(612)에 따라 웨이트(630)에 더해지거나 빼질 수 있다.
다시 도 5로 돌아와서, 뉴럴 네트워크 장치는 오버랩되는 적어도 하나의 비트(550)가 나타내는 값을 웨이트(50)에 가산한 후, 오버랩되는 적어도 하나의 비트(550)의 값을 제 2 부호비트(515)와 동일한 값으로 초기화할 수 있다. 오버랩되는 적어도 하나의 비트(550)가 나타내는 값이 웨이트(50)에 가산되었으므로, 누적 업데이트 값(55)은 그 값만큼 감산되어야 한다. 오버랩되는 적어도 하나의 비트(550)의 값이 제 2 부호비트(515)와 동일한 값으로 초기화됨에 따라 누적 업데이트 값(55)은 오버랩되는 적어도 하나의 비트(550)가 나타내는 값만큼 감산될 수 있다.
예를 들어, 양수인 누적 업데이트 값(55)이 0100011(부호비트 제외)이고, 웨이트(50)의 제 1 소수부(530)와 오버랩되는 적어도 하나의 비트(550)가 누적 업데이트 값(55)의 상위 2개 비트인 01이라고 가정해보자. 또한, 누적 업데이트 값(55)의 최상위 비트가 자리를 나타낸다고 가정해보자. 웨이트(50)의 제 1 소수부(530)와 오버랩되는 적어도 하나의 비트(550) 01이 나타내는 값인 자리를 나타낸다고 가정해보자. 웨이트(50)의 제 1 소수부(530)와 오버랩되는 적어도 하나의 비트(550) 01이 나타내는 값인 가 감산되어야 한다. 누적 업데이트 값(55)에서 가 감산되면, 누적 업데이트 값(55)은 0000011이 된다. 누적 업데이트 값(55)의 제 2 부호비트(515)가 0이므로(즉, 누적 업데이트 값(55)이 양수이므로), 오버랩되는 적어도 하나의 비트(550)는 0으로 초기화되는 것이다. 앞선 예시와 달리, 누적 업데이트 값(55)이 음수인 경우 오버랩되는 적어도 하나의 비트(550)의 값은 부호비트와 동일한 값인 1로 초기화될 수 있다.
도 7은 일부 실시예에 따른 고정 소수점 파라미터를 이용하는 뉴럴 네트워크에서 파라미터를 처리하는 방법의 예시를 나타내는 흐름도이다. 뉴럴 네트워크는 도 5에서 설명한 바와 같은 고정 소수점 파라미터를 이용하는 뉴럴 네트워크일 수 있다.
도 7을 참조하면, 단계 710에서, 시간 t는 0으로 초기화되고, 모니터링 주기, 업데이트 주기 및 임계값이 미리 결정될 수 있다. 단계 720에서, 뉴럴 네트워크 장치는 뉴럴 네트워크에 포함되는 노드들 간의 연결관계에 할당되는 웨이트를 위한 개별 업데이트 값을 계산할 수 있다.
단계 730에서, 뉴럴 네트워크 장치는 개별 업데이트 값을 누적 버퍼에 누적하고, 시간 t에 1을 더할 수 있다. 단계 740에서, 뉴럴 네트워크 장치는 시간 t가 모니터링 주기에 대응되는지를 판단할 수 있다. 시간 t가 모니터링 주기에 대응되는 경우 뉴럴 네트워크 장치는 단계 745를 수행할 수 있다.
단계 745에서, 뉴럴 네트워크 장치는 누적 업데이트 값 또는 상기 개별 업데이트 값을 모니터링하고, 모니터링의 결과에 기초하여 누적 업데이트 값의 제 2 소수점의 위치를 조정할 수 있다. 누적 업데이트 값의 제 2 소수점의 위치가 조정됨에 따라 웨이트 및 누적 업데이트 값 간에 오버랩되는 비트들의 개수가 조정될 수 있고, 누적 업데이트 값의 소수부의 비트 개수(길이)가 조정될 수 있다.
뉴럴 네트워크 장치는 개별 업데이트 값 및 웨이트의 상대적인 크기에 기초하여 정확도 손실을 최소화시키거나 오버헤드를 줄이기 위해 제 2 소수점의 위치를 조정할 수 있다.
예를 들어, 뉴럴 네트워크 장치는 개별 업데이트 값들의 평균값이 임계값의 1/a 배(a은 임의의 자연수)보다 작은 경우, 제 2 소수점의 위치를 누적 업데이트 값의 하위 비트 방향으로 이동시킬 수 있다.
개별 업데이트 값들의 평균값이 임계값의 1/a 배 보다 작다는 것은 개별 업데이트 값들이 상당히 작은 값들을 가지고 있음을 의미한다. 누적 업데이트 값의 제 2 소수점의 위치가 하위 비트 방향으로 이동됨에 따라 누적 업데이트 값은 보다 작은 값을 표현할 수 있게 되고, 개별 업데이트 값들이 누적 업데이트 값에 보다 정확하게 반영될 수 있다. 개별 업데이트 값들이 정확하게 반영된 누적 업데이트 값에 기초하여 웨이트가 업데이트됨에 따라 뉴럴 네트워크의 정확도 손실은 최소화될 수 있다.
또한, 뉴럴 네트워크 장치는 개별 업데이트 값들의 평균값이 임계값의 1/a 배보다 큰 경우, 제 2 소수점의 위치를 누적 업데이트 값의 상위 비트 방향으로 이동시킬 수 있다.
개별 업데이트 값들의 평균값이 임계값의 1/a 배보다 크다는 것은 개별 업데이트 값들이 상대적으로 큰 값들을 가지고 있음을 의미한다. 누적 업데이트 값의 제 2 소수점의 위치가 상위 비트 방향으로 이동됨에 따라 누적 업데이트 값을 나타내는 비트들 중 무시해도 될만한 크기를 갖는 비트들이 생략될 수 있다. 이에 따라, 뉴럴 네트워크의 오버헤드가 감소될 수 있다. 다만, 앞서 설명한 내용은 예시에 불과할 뿐, 뉴럴 네트워크는 다양한 기준에 기초하여 제 2 소수점의 위치 또는 제 2 소수부의 비트 개수(길이)를 조정할 수 있다. 이하 도 8a 및 도 8b를 참조하여, 누적 업데이트 값의 소수점 위치를 조정하는 과정에 대해 상세히 설명한다.
도 8a는 일부 실시예에 따른 누적 업데이트 값의 소수점의 위치를 조정하는 과정의 일 예를 나타내는 도면이고, 도 8b는 일부 실시예에 따른 누적 업데이트 값의 소수점의 위치를 조정하는 과정의 다른 예를 나타내는 도면이다.
도 8a를 참조하면, 모니터링된 누적 업데이트 값(82)이 도시되어 있는데, 모니터링된 누적 업데이트 값(82)의 현재 누적된 값(830) 및 개별 업데이트 값(820)은 임계값(810)에 비해 상당히 작은 크기를 가짐을 알 수 있다. 모니터링된 누적 업데이트 값(82)이 나타낼 수 있는 값의 범위에 한계가 있으므로, 개별 업데이트 값(820)이 누적 업데이트 값(82)에 정확히 반영되지 못할 수 있다. 이에 따라, 뉴럴 네트워크는 누적 업데이트 값의 소수점의 위치를 누적 업데이트 값의 하위 비트 방향으로 이동시킬 수 있다.
소수점이 이동된 누적 업데이트 값(83)은 현재 누적된 값(830) 및 개별 업데이트 값(820)을 보다 정확하게 반영할 수 있다. 한편, 소수점이 이동됨에 따라 누적 업데이트 값(83)이 추가적으로 표현 가능한 값에 대응되는 비트들은 0 또는 임의의 수로 채워질 수 있다.
도 8b를 참조하면, 모니터링된 누적 업데이트 값(84)이 도시되어 있는데, 모니터링된 누적 업데이트 값(84)의 개별 업데이트 값(840)이 임계값(810)보다는 작더라도 상대적으로 큰 값을 가지며, 현재 누적된 값(850)이 임계값(810)보다 큰 값을 가짐을 알 수 있다. 뉴럴 네트워크 장치는 누적 업데이트 값을 나타내는 비트들 중 무시해도 될만한 크기를 갖는 비트들을 생략시키기 위해 누적 업데이트 값의 소수점의 위치를 누적 업데이트 값의 상위 비트 방향으로 이동시킬 수 있다. 이에 따라, 업데이트 주기 동안 누적 업데이트 값이 m 비트로 표현할 수 있는 값을 초과하는 것이 방지될 수 있다.
다시 도 7로 돌아오면, 단계 745에서 뉴럴 네트워크 장치는 누적 업데이트 값의 제 2 소수점의 위치를 조정한 후 단계 720 단계로 돌아가서 다시 개별 업데이트 값들을 계산할 수 있다.
한편, 단계 740에서 시간 t가 모니터링 주기에 대응되지 않는다고 판단되는 경우 뉴럴 네트워크 장치는 단계 750을 수행할 수 있다. 단계 750에서, 뉴럴 네크워크 장치는 시간 t가 업데이트 주기에 대응되는지를 판단할 수 있다. 시간 t가 업데이트 주기에 대응되지 않는 경우 뉴럴 네트워크 장치는 단계 720으로 돌아가 다시 개별 업데이트 값들을 계산할 수 있다. 이 때, 시간 t는 0으로 초기화될 수 있고, 앞서 설명한 단계들이 다음 업데이트 주기 동안 반복될 수 있다.
시간 t가 업데이트 주기에 대응되는 경우 뉴럴 네트워크 장치는 단계 760을 수행할 수 있다. 단계 760에서, 뉴럴 네트워크 장치는 누적 버퍼의 누적 업데이트 값이 임계값 이상인지 여부를 판단할 수 있다. 누적 업데이트 값이 임계값보다 작은 경우 뉴럴 네트워크 장치는 단계 720으로 돌아가 다시 개별 업데이트 값들을 계산할 수 있다.
누적 업데이트 값이 임계값 이상인 경우, 뉴럴 네트워크 장치는 단계 770을 수행할 수 있다. 단계 770에서, 뉴럴 네트워크 장치는 누적 업데이트 값을 이용하여 웨이트를 업데이트할 수 있다. 예를 들어, 뉴럴 네트워크 장치는 웨이트에 앞의 수학식 4에 따른 유효 업데이트 값을 가산함으로써 웨이트를 업데이트할 수 있다. 또한, 뉴럴 네트워크 장치는 웨이트가 업데이트됨에 따라 누적 버퍼의 누적 업데이트 값에서 유효 업데이트 값을 감산할 수 있다. 뉴럴 네트워크 장치는 상황에 따라 웨이트의 소수점의 위치 또는 소수부의 비트 개수(길이)를 조정할 수도 있다.
도 9는 일부 실시예에 따른 부동 소수점 파라미터를 이용하는 뉴럴 네트워크의 예시를 나타내는 도면이다.
도 9를 참조하면, 부동 소수점 파라미터를 이용하는 뉴럴 네트워크에서 웨이트(90)는 제 1 부호비트(910), 제 1 지수부(920), 제 1 가수부(930) 및 제 1 바이어스(940)로 구성된 부동 소수점 값이고, 누적 업데이트 값(95)은 제 2 부호비트(915), 제 2 지수부(925), 제 2 가수부(935) 및 제 2 바이어스(945)로 구성된 부동 소수점 값일 수 있다.
웨이트(90)는 m 비트(m은 임의의 자연수)의 부동 소수점 값일 수 있고, 누적 업데이트 값(95)은 n 비트(n은 임의의 자연수)의 부동 소수점 값일 수 있다. m 및 n은 동일한 값일 수도 있고, 상이한 값일 수도 있다. 로우-프리시전 넘버 시스템을 이용하는 뉴럴 네트워크에서 m 및 n 각각은 8 또는 16의 값을 가질 수 있으나, 이에 제한되지 않는다.
누적 업데이트 값(95)은 웨이트(90)를 위한 개별 업데이트 값들이 누적된 값일 수 있다. 다만, 누적 업데이트 값(95)은 제한된 비트 개수를 갖는 부동 소수점 값의 한계로 인해, 누적 업데이트 값(95)의 유효 숫자 범위에 포함되는, 개별 업데이트 값들 각각의 실효값(effective value)만이 누적된 값일 수 있다.
또한, 제한된 비트 개수를 갖는 부동 소수점 값의 한계로 인해, 웨이트(90)의 유효 숫자 범위에 포함되는, 누적 업데이트 값(95)의 실효값만이 웨이트(90)에 더해질 수 있다. 누적 업데이트 값(95)의 실효값은 누적 업데이트 값(95) 중 웨이트(90)의 유효자리에 합산 가능한 부분을 의미할 수 있다.
웨이트(90)가 누적 업데이트 값(95)의 실효값에 의해 업데이트됨에 따라 누적 업데이트 값(95)은 업데이트된 부분만큼 감산될 수 있다. 제한된 비트 개수를 갖는 부동 소수점 값의 한계로 인해, 누적 업데이트 값(95)은 업데이트된 웨이트에서 웨이트(90)를 감산한 값과 다를 수도 있다.
한편, 부동 소수점 값은 바이어스가 변경됨에 따라 동적으로 변경될 수 있다. 따라서, 부동 소수점 값의 지수부가 동일하더라도 바이어스에 따라서 상대적으로 작은 값이 표현될 수 있다. 웨이트(90)의 제 1 바이어스(940) 및 누적 업데이트 값(95)의 제 2 바이어스(945) 간의 상대적인 차이는 상황에 따라 적절하게 조정될 수 있다.
도 10은 일부 실시예에 따른 부동 소수점 파라미터를 이용하는 뉴럴 네트워크에서 파라미터를 처리하는 방법의 예시를 나타내는 흐름도이다. 뉴럴 네트워크는 도 9에서 설명한 바와 같은 부동 소수점 파라미터를 이용하는 뉴럴 네트워크일 수 있다.
도 10을 참조하면, 단계 1010에서, 시간 t는 0으로 초기화되고, 모니터링 주기, 업데이트 주기 및 임계값이 미리 결정될 수 있다. 단계 1020에서, 뉴럴 네트워크 장치는 뉴럴 네트워크에 포함되는 노드들 간의 연결관계에 할당되는 웨이트를 위한 개별 업데이트 값을 계산할 수 있다.
단계 1030에서, 뉴럴 네트워크 장치는 개별 업데이트 값을 누적 버퍼에 누적하고, 시간 t에 1을 더할 수 있다. 단계 1040에서, 뉴럴 네트워크 장치는 시간 t가 모니터링 주기에 대응되는지를 판단할 수 있다. 시간 t가 모니터링 주기에 대응되는 경우 뉴럴 네트워크 장치는 단계 1045를 수행할 수 있다.
단계 1045에서, 뉴럴 네트워크 장치는 누적 업데이트 값 또는 개별 업데이트 값들을 모니터링하고, 모니터링의 결과에 기초하여 누적 업데이트 값의 제 2 바이어스를 조정할 수 있다. 누적 업데이트 값의 제 2 바이어스가 조정됨에 따라 누적 업데이트 값이 나타낼 수 있는 값의 범위가 조정될 수 있다.
뉴럴 네트워크 장치는 누적 업데이트 값 및 임계값의 상대적인 크기에 기초하여 정확도 손실을 최소화시키거나 오버헤드를 줄이기 위해 누적 업데이트 값의 제 2 바이어스를 조정할 수 있다.
예를 들어, 뉴럴 네트워크 장치는 누적 업데이트 값의 제 2 지수부가 임계값을 초과하는 경우 제 2 바이어스를 증가시킬 수 있다. 누적 업데이트 값의 제 2 지수부가 임계값을 초과한다는 것은 누적 업데이트 값이 상대적으로 큰 값을 가지고 있음을 의미할 수 있다. 누적 업데이트 값의 제 2 바이어스가 증가됨에 따라 누적 업데이트 값을 나타내는 비트들 중 무시해도 될만한 크기를 갖는 비트들이 생략될 수 있다. 이에 따라, 뉴럴 네트워크의 오버헤드가 감소될 수 있다.
또한, 뉴럴 네트워크 장치는 누적 업데이트 값이 임계값의 1/k배(k는 임의의 자연수)보다 작은 경우 제 2 바이어스를 감소시킬 수 있다. 누적 업데이트 값이 임계값의 1/k배보다 작다는 것은 개별 업데이트 값들이 상당히 작은 값들을 가지고 있음을 의미한다. 누적 업데이트 값의 제 2 바이어스가 감소됨에 따라 누적 업데이트 값은 보다 작은 값을 표현할 수 있게 되고, 개별 업데이트 값들이 누적 업데이트 값에 보다 정확하게 반영될 수 있다. 개별 업데이트 값들이 정확하게 반영된 누적 업데이트 값에 의해 웨이트가 업데이트됨에 따라 뉴럴 네트워크의 정확도 손실은 최소화될 수 있다.
뉴럴 네트워크 장치는 단계 1045에서 누적 업데이트 값의 제 2 바이어스의 위치를 조정한 후 단계 1020 단계로 돌아가서 다시 개별 업데이트 값을 계산할 수 있다.
한편, 단계 1040에서 시간 t가 모니터링 주기에 대응되지 않는다고 판단되는 경우 뉴럴 네트워크 장치는 단계 1050을 수행할 수 있다. 단계 1050에서, 뉴럴 네크워크 장치는 시간 t가 업데이트 주기에 대응되는지를 판단할 수 있다. 시간 t가 업데이트 주기에 대응되지 않는 경우 뉴럴 네트워크 장치는 단계 1020으로 돌아가 다시 개별 업데이트 값을 계산할 수 있다. 이 때, 시간 t는 0으로 초기화될 수 있고, 앞서 설명한 단계들이 다음 업데이트 주기 동안 반복될 수 있다.
시간 t가 업데이트 주기에 대응되는 경우 뉴럴 네트워크 장치는 단계 1060을 수행할 수 있다. 단계 1060에서, 뉴럴 네트워크 장치는 누적 버퍼의 누적 업데이트 값이 임계값 이상인지 여부를 판단할 수 있다. 누적 업데이트 값이 임계값보다 작은 경우 뉴럴 네트워크 장치는 단계 1020으로 돌아가 다시 개별 업데이트 값을 계산할 수 있다.
누적 업데이트 값이 임계값 이상인 경우, 뉴럴 네트워크 장치는 단계 1070을 수행할 수 있다. 단계 1070에서, 뉴럴 네트워크 장치는 누적 업데이트 값을 이용하여 웨이트를 업데이트할 수 있다. 예를 들어, 뉴럴 네트워크 장치는 웨이트에 앞의 수학식 4에 따른 유효 업데이트 값을 가산함으로써 웨이트를 업데이트할 수 있다. 또한, 뉴럴 네트워크 장치는 웨이트가 업데이트됨에 따라 누적 버퍼의 누적 업데이트 값에서 유효 업데이트 값을 감산할 수 있다. 뉴럴 네트워크 장치는 상황에 따라 웨이트의 소수점의 위치 또는 소수부의 비트 개수(길이)를 조정할 수도 있다.
한편, 도 2, 4, 7 및 10에 도시된 뉴럴 네트워크에서 파라미터를 처리하는 방법은 그 방법을 실행하는 명령어들을 포함하는 하나 이상의 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체에 기록될 수 있다. 컴퓨터로 읽을 수 있는 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
도 11은 일부 실시예에 따른 뉴럴 네트워크 장치의 구성을 나타내는 블록도이다.
도 11을 참조하면, 뉴럴 네트워크 장치(11)는 적어도 하나의 프로세서(1110) 및 메모리(1120)을 포함할 수 있다. 도 11에 도시된 뉴럴 네트워크 장치(11)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴럴 네트워크 장치(11)에 도 11에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당업자에게 자명하다. 예를 들어, 뉴럴 네트워크 장치(11)는 센서 모듈(미도시) 및 통신 모듈(미도시) 등을 더 포함할 수 있다.
한편, 뉴럴 네트워크 장치(11)는 도 2 내지 도 10의 뉴럴 네트워크 장치에 대응될 수 있다. 또한, 뉴럴 네트워크 장치(11)는 도 2, 4, 7 및 10에 도시된 방법을 시계열적으로 처리할 수 있다. 따라서, 이하에서 생략된 내용이라고 하더라도 도 2, 4, 7 및 10의 방법에 관하여 이상에서 기술된 내용은 도 11의 뉴럴 네트워크 장치(11)에 의해 수행될 수 있음을 알 수 있다.
뉴럴 네트워크 장치(11)는 가전 제품, 모바일 컴퓨팅 디바이스 및 서버 중 적어도 하나에 포함되거나, 가전 제품, 모바일 컴퓨팅 디바이스 및 서버 중 적어도 하나에 유, 무선으로 연결되도록 구현될 수 있다. 또한, 뉴럴 네트워크 장치(11)는 디바이스와 서버의 결합으로 구현될 수도 있다. 사용자의 입력을 수신하는 디바이스와 뉴럴 네트워크를 학습시키는 서버가 별도로 존재하여, 디바이스와 서버 간의 통신을 통해 추론이 수행될 수 있다. 물론 단일의 디바이스에서 추론이 수행될 수도 있으며, 상기 예시에 제한되지 않는다.
적어도 하나의 프로세서(1110)는 하나 또는 복수 개의 프로세서에 의하여 구현될 수 있다. 예를 들어, 적어도 하나의 프로세서(1110)는 다수의 논리 게이트들의 어레이로 구현될 수 있고, 범용적인 마이크로 프로세서와 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다. 예를 들어, 적어도 하나의 프로세서(1110)는 CPU(Central processing unit), GPU(Graphic processing unit), 하드웨어 가속기 등일 수 있다.
적어도 하나의 프로세서(1110)는 뉴럴 네트워크 장치(11)를 제어하기 위한 전반적인 역할을 할 수 있다. 예를 들어, 적어도 하나의 프로세서(1110)는 뉴럴 네트워크 장치(11) 내의 메모리(1120)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(11)를 전반적으로 제어할 수 있다. 또한, 적어도 하나의 프로세서(1110)는 메모리(1120)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(11)의 기능을 병렬적으로 수행할 수 있다.
적어도 하나의 프로세서(1110)는 뉴럴 네트워크의 레이어들에 포함된 노드들 각각의 기능을 수행할 수 있다. 예를 들어, 적어도 하나의 프로세서(1110) 는 액티베이션 값들 및 웨이트들을 이용하여 뉴럴 네트워크 연산 또는 매트릭스 연산을 수행할 수 있다. 또한, 적어도 하나의 프로세서(1110)는 도 2 내지 도 10에 기재된 뉴럴 네트워크 장치(11)의 기능을 수행할 수 있다.
구체적으로, 적어도 하나의 프로세서(1110)는 뉴럴 네트워크에 포함되는 노드들 간의 연결관계에 할당되는 웨이트를 위한 개별 업데이트 값을 계산할 수 있다. 웨이트는 부동 소수점 값 또는 고정 소수점 값일 수 있다.
또한, 적어도 하나의 프로세서(1110)는 개별 업데이트 값을 누적 버퍼(미도시)에 누적할 수 있다. 누적 버퍼는 개별 업데이트 값을 누적하기 위한 전용 하드웨어일 수 있고, 개별 업데이트 값을 누적하기 위해 할당된 메모리(1120)의 일부분일 수도 있다. 개별 업데이트 값은 누적 버퍼에 누적되어 누적 업데이트 값이 될 수 있다. 누적 버퍼는 누적 업데이트 값을 저장할 수 있다.
적어도 하나의 프로세서(1110)는 누적 버퍼의 누적 업데이트 값이 임계값 이상인지 여부를 판단할 수 있다. 임계값은 누적 업데이트 값이 웨이트에 영향을 줄 수 있는 크기까지 누적되었는지를 결정하기 위한 값일 수 있다. 예를 들어, 임계값은 웨이트의 최하위 유효자리에 대응되는 값일 수 있다.
적어도 하나의 프로세서(1110)는 누적 업데이트 값이 임계값 이상인 경우, 누적 업데이트 값을 이용하여 웨이트를 업데이트할 수 있다. 누적 업데이트 값이 임계값 이상인 경우 누적 업데이트 값은 웨이트에 영향을 줄 수 있는 크기를 가지므로, 적어도 하나의 프로세서(1110)는 누적 업데이트 값을 이용하여 웨이트를 업데이트할 수 있다.
적어도 하나의 프로세서(1110)는 누적 업데이트 값 중 웨이트의 유효자리에 합산 가능한 부분을 유효 업데이트 값으로 결정할 수 있다. 적어도 하나의 프로세서(1110)는 웨이트에 유효 업데이트 값을 가산할 수 있고, 누적 버퍼의 누적 업데이트 값에서 유효 업데이트 값을 감산할 수 있다.
적어도 하나의 프로세서(1110)는 일반적으로 웨이트보다 훨씬 작은 값을 갖는 개별 업데이트 값들을 무시하거나 버리는 대신에 웨이트에 영향을 줄 수 있는 크기까지 누적하여 웨이트에 적용함으로써 로우 프리시전 넘버 시스템을 이용하는 뉴럴 네트워크에서의 반올림 오차를 최소화시킬 수 있다.
한편, 적어도 하나의 프로세서(1110)는 누적 업데이트 값이 임계값 이상인지 여부를 기 설정된 업데이트 주기마다 판단할 수 있다. 업데이트 주기는 사용자에 의해 미리 결정될 수 있고, 적어도 하나의 프로세서(1110)에 의해 결정될 수도 있다. 적어도 하나의 프로세서(1110)는 누적 업데이트 값이 임계값보다 작은 경우, 다음 업데이트 주기까지 계산된 개별 업데이트 값들을 누적 버퍼에 계속해서 누적할 수 있다.
적어도 하나의 프로세서(1110)는 다음 업데이트 주기에 누적 업데이트 값이 임계값 이상인지 여부를 다시 판단할 수 있고, 누적 업데이트 값이 임계값 이상인 경우, 누적 업데이트 값을 이용하여 웨이트를 업데이트할 수 있다.
누적 업데이트 값이 임계값 이상인지 여부가 일정한 주기에 따라 판단되고, 뉴럴 네트워크 장치(11)에서 이용되는 파라미터가 주기적으로 업데이트됨에 따라 뉴럴 네트워크의 오버헤드가 감소될 수 있다.
웨이트가 제 1 부호비트, 제 1 정수부, 제 1 소수부 및 제 1 소수점으로 구성된 고정 소수점 값이고, 누적 업데이트 값이 제 2 부호비트, 제 2 소수부 및 제 2 소수점으로 구성된 고정 소수점 값인 경우, 적어도 하나의 프로세서(1110)는 누적 업데이트 값의 제 2 소수부를 나타내는 비트들 중 웨이트의 제 1 소수부와 오버랩되는 적어도 하나의 비트가 나타내는 값을 웨이트에 가산하고, 오버랩되는 적어도 하나의 비트의 값을 제 2 부호비트와 동일한 값으로 초기화할 수 있다.
또한, 적어도 하나의 프로세서(1110)는 누적 업데이트 값 및 개별 업데이트 값들을 모니터링하고, 모니터링의 결과에 기초하여 누적 업데이트 값의 제 2 소수점의 위치를 조정할 수 있다. 예를 들어, 적어도 하나의 프로세서(1110)는 개별 업데이트 값들의 평균값이 임계값의 1/a 배보다 작은 경우, 제 2 소수점의 위치를 누적 업데이트 값의 하위 비트 방향으로 이동시키고, 개별 업데이트 값들의 평균값이 임계값의 1/a 배보다 큰 경우, 제 2 소수점의 위치를 누적 업데이트 값의 상위 비트 방향으로 이동시킬 수 있다.
한편, 웨이트가 제 1 부호비트, 제 1 지수부, 제 1 가수부 및 제 1 바이어스로 구성된 부동 소수점 값이고, 누적 업데이트 값이 제 2 부호비트, 제 2 지수부, 제 2 가수부 및 제 2 바이어스로 구성된 부동 소수점 값인 경우, 적어도 하나의 프로세서(1110)는 웨이트의 유효 숫자 범위에 포함되는, 누적 업데이트 값의 실효값을 웨이트에 가산할 수 있다.
또한, 적어도 하나의 프로세서(1110)는 누적 업데이트 값을 모니터링하고, 모니터링의 결과에 기초하여 누적 업데이트 값의 제 2 바이어스를 조정할 수 있다. 예를 들어, 적어도 하나의 프로세서(1110)는 누적 업데이트 값의 제 2 지수부가 임계값을 초과하는 경우 제 2 바이어스를 증가시키고, 누적 업데이트 값이 임계값의 1/b 배보다 작은 경우 제 2 바이어스를 감소시킬 수 있다.
메모리(1120)는 뉴럴 네트워크 장치(11) 내에서 처리되는 각종 데이터들을 저장하는 하드웨어로서, 예를 들어, 메모리(1120)는 뉴럴 네트워크 장치(11)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 메모리(1120)는 뉴럴 네트워크 장치(11)에 의해 구동될 애플리케이션들, 드라이버들 등을 저장할 수 있다. 메모리(1120)는 DRAM(dynamic random access memory), SRAM(static random access memory) 등과 같은 RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), CD-ROM, 블루레이 또는 다른 광학 디스크 스토리지, HDD(hard disk drive), SSD(solid state drive), 또는 플래시 메모리를 포함할 수 있다.
또한, 메모리(1120)는 뉴럴 네트워크 장치(11)에 포함된 적어도 하나의 프로세서(1110)가 공유하는 내장 메모리 또는 적어도 하나의 프로세서(1110)를 지원하는 복수의 내장 메모리를 더 포함할 수 있다.
이상에서 실시예들에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속한다.
Claims (20)
- 로우-프리시전 넘버 시스템(low-precision number system)을 이용하는 뉴럴 네트워크에서 파라미터를 처리하는 방법에 있어서,
상기 뉴럴 네트워크에 포함되는 노드들 간의 연결관계에 할당되는 웨이트를 위한 개별 업데이트 값을 계산하는 단계;
상기 개별 업데이트 값을 누적 버퍼에 누적하는 단계; 및
상기 누적 버퍼의 누적 업데이트 값이 임계값 이상인 경우, 상기 누적 업데이트 값을 이용하여 상기 웨이트를 업데이트하는 단계를 포함하는, 방법. - 제 1항에 있어서,
상기 임계값은 상기 웨이트의 최하위 유효자리에 대응되는 값이고,
상기 업데이트하는 단계는,
상기 누적 업데이트 값 중 상기 웨이트의 유효자리에 합산 가능한 부분을 유효 업데이트 값으로 결정하는 단계;
상기 웨이트에 상기 유효 업데이트 값을 가산하는 단계; 및
상기 누적 버퍼의 상기 누적 업데이트 값에서 상기 유효 업데이트 값을 감산하는 단계를 포함하는, 방법. - 제 1항에 있어서,
상기 방법은,
상기 누적 업데이트 값이 상기 임계값 이상인지 여부를 기 설정된 업데이트 주기마다 판단하는 단계를 더 포함하는, 방법. - 제 3항에 있어서,
상기 방법은,
상기 누적 업데이트 값이 상기 임계값보다 작은 경우, 다음 업데이트 주기까지 상기 계산된 개별 업데이트 값들을 상기 누적 버퍼에 계속해서 누적하는 단계를 더 포함하는, 방법. - 제 1항에 있어서,
상기 웨이트가 제 1 부호비트, 제 1 정수부 및 제 1 소수부로 구성된 고정 소수점(fixed point) 값이고, 상기 누적 업데이트 값이 제 2 부호비트 및 제 2 소수부로 구성된 고정 소수점 값인 경우,
상기 업데이트하는 단계는,
상기 누적 업데이트 값의 상기 제 2 소수부를 나타내는 비트들 중 상기 웨이트의 상기 제 1 소수부와 오버랩되는 적어도 하나의 비트가 나타내는 값을 상기 웨이트에 가산하는 단계; 및
상기 오버랩되는 적어도 하나의 비트의 값을 상기 제 2 부호비트와 동일한 값으로 초기화하는 단계를 포함하는, 방법. - 제 5항에 있어서,
상기 방법은,
상기 계산된 개별 업데이트 값들을 모니터링하는 단계; 및
상기 모니터링의 결과에 기초하여 상기 누적 업데이트 값의 소수점의 위치를 조정하는 단계를 더 포함하는, 방법. - 제 6항에 있어서,
상기 모니터링하는 단계는,
상기 개별 업데이트 값들의 평균값을 모니터링하는 단계를 포함하고,
상기 조정하는 단계는,
상기 개별 업데이트 값들의 평균값이 상기 임계값의 1/a 배(a은 임의의 자연수)보다 작은 경우, 상기 누적 업데이트 값의 소수점의 위치를 상기 누적 업데이트 값의 하위 비트 방향으로 이동시키는 단계; 및
상기 개별 업데이트 값들의 평균값이 상기 임계값의 1/a 배보다 큰 경우, 상기 누적 업데이트 값의 소수점의 위치를 상기 누적 업데이트 값의 상위 비트 방향으로 이동시키는 단계를 포함하는, 방법. - 제 5항에 있어서,
상기 웨이트는 상기 제 1 소수부의 비트 개수를 조정 가능한 동적 고정 소수점(dynamic fixed point) 값인, 방법. - 제 1항에 있어서,
상기 웨이트가 제 1 부호비트, 제 1 지수부, 제 1 가수부 및 제 1 바이어스(bias)로 구성된 부동 소수점(floating point) 값이고, 상기 누적 업데이트 값이 제 2 부호비트, 제 2 지수부, 제 2 가수부 및 제 2 바이어스로 구성된 부동 소수점 값인 경우,
상기 업데이트하는 단계는,
상기 웨이트의 유효 숫자 범위에 포함되는, 상기 누적 업데이트 값의 실효값을 상기 웨이트에 가산하는 단계를 포함하는, 방법. - 제 9항에 있어서,
상기 방법은,
상기 누적 업데이트 값을 모니터링하는 단계; 및
상기 모니터링의 결과에 기초하여 상기 누적 업데이트 값의 상기 제 2 바이어스를 조정하는 단계를 더 포함하는, 방법. - 제 10항에 있어서,
상기 조정하는 단계는,
상기 누적 업데이트 값의 상기 제 2 지수부가 상기 임계값을 초과하는 경우 상기 제 2 바이어스를 증가시키는 단계; 및
상기 누적 업데이트 값이 상기 임계값의 1/b배(b는 임의의 자연수)보다 작은 경우 상기 제 2 바이어스를 감소시키는 단계를 포함하는, 방법. - 제 1항 내지 제 11항 중 어느 한 항의 방법을 실행하는 명령어들을 포함하는 하나 이상의 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체.
- 로우-프리시전 넘버 시스템을 이용하는 뉴럴 네트워크를 실시(implement)하는 장치에 있어서,
적어도 하나의 프로그램이 저장된 메모리; 및
상기 적어도 하나의 프로그램을 실행함으로써 상기 뉴럴 네트워크에서 파라미터를 처리하는 적어도 하나의 프로세서를 포함하고,
상기 적어도 하나의 프로세서는,
상기 뉴럴 네트워크에 포함되는 노드들 간의 연결관계에 할당되는 웨이트를 위한 개별 업데이트 값을 계산하고, 상기 개별 업데이트 값을 누적 버퍼에 누적하며, 상기 누적 버퍼의 누적 업데이트 값이 임계값 이상인 경우, 상기 누적 업데이트 값을 이용하여 상기 웨이트를 업데이트하는, 장치. - 제 13항에 있어서,
상기 임계값은 상기 웨이트의 최하위 유효자리에 대응되는 값이고,
상기 적어도 하나의 프로세서는,
상기 누적 업데이트 값 중 상기 웨이트의 유효자리에 합산 가능한 부분을 유효 업데이트 값으로 결정하고, 상기 웨이트에 상기 유효 업데이트 값을 가산하며, 상기 누적 버퍼의 상기 누적 업데이트 값을 상기 유효 업데이트 값만큼 감산하는, 장치. - 제 13항에 있어서,
상기 적어도 하나의 프로세서는,
상기 누적 업데이트 값이 상기 임계값 이상인지 여부를 기 설정된 업데이트 주기마다 판단하는, 장치. - 제 15항에 있어서,
상기 적어도 하나의 프로세서는,
상기 누적 업데이트 값이 상기 임계값보다 작은 경우, 다음 업데이트 주기까지 상기 계산된 개별 업데이트 값들을 상기 누적 버퍼에 계속해서 누적하는, 장치. - 제 13항에 있어서,
상기 웨이트가 제 1 부호비트, 제 1 정수부 및 제 1 소수부로 구성된 고정 소수점 값이고, 상기 누적 업데이트 값이 제 2 부호비트 및 제 2 소수부로 구성된 고정 소수점 값인 경우,
상기 적어도 하나의 프로세서는,
상기 누적 업데이트 값의 상기 제 2 소수부를 나타내는 비트들 중 상기 웨이트의 상기 제 1 소수부와 오버랩되는 적어도 하나의 비트가 나타내는 값을 상기 웨이트에 가산하고, 상기 오버랩되는 적어도 하나의 비트의 값을 상기 제 2 부호비트와 동일한 값으로 초기화하는, 장치. - 제 17항에 있어서,
상기 적어도 하나의 프로세서는,
상기 계산된 개별 업데이트 값들을 모니터링하고, 상기 모니터링의 결과에 기초하여 상기 누적 업데이트 값의 소수점의 위치를 조정하는, 장치. - 제 18항에 있어서,
상기 적어도 하나의 프로세서는,
상기 계산된 개별 업데이트 값들의 평균값을 모니터링하고, 상기 개별 업데이트 값의 평균값이 상기 임계값의 1/a 배보다 작은 경우, 상기 누적 업데이트 값의 소수점의 위치를 상기 누적 업데이트 값의 하위 비트 방향으로 이동시키며, 상기 개별 업데이트 값의 평균값이 상기 임계값의 1/a 배보다 큰 경우, 상기 누적 업데이트 값의 소수점의 위치를 상기 누적 업데이트 값의 상위 비트 방향으로 이동시키는, 장치. - 제 13항에 있어서,
상기 웨이트가 제 1 부호비트, 제 1 지수부, 제 1 가수부 및 제 1 바이어스로 구성된 부동 소수점 값이고, 상기 누적 업데이트 값이 제 2 부호비트, 제 2 지수부, 제 2 가수부 및 제 2 바이어스로 구성된 부동 소수점 값인 경우,
상기 적어도 하나의 프로세서는,
상기 웨이트의 유효 숫자 범위에 포함되는, 상기 누적 업데이트 값의 실효값을 상기 웨이트에 가산하는, 장치.
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170137374A KR20190044878A (ko) | 2017-10-23 | 2017-10-23 | 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치 |
US16/106,703 US11544549B2 (en) | 2017-10-23 | 2018-08-21 | Method and apparatus with neural network |
EP18199332.0A EP3474195A1 (en) | 2017-10-23 | 2018-10-09 | Method and apparatus with neural network |
CN201811199602.9A CN109697510B (zh) | 2017-10-23 | 2018-10-15 | 具有神经网络的方法和装置 |
JP2018198683A JP7072484B2 (ja) | 2017-10-23 | 2018-10-22 | パラメータ処理方法及び装置 |
US17/993,740 US20230102087A1 (en) | 2017-10-23 | 2022-11-23 | Method and apparatus with neural network |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170137374A KR20190044878A (ko) | 2017-10-23 | 2017-10-23 | 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20190044878A true KR20190044878A (ko) | 2019-05-02 |
Family
ID=63832196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170137374A KR20190044878A (ko) | 2017-10-23 | 2017-10-23 | 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11544549B2 (ko) |
EP (1) | EP3474195A1 (ko) |
JP (1) | JP7072484B2 (ko) |
KR (1) | KR20190044878A (ko) |
CN (1) | CN109697510B (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113933652A (zh) * | 2021-10-15 | 2022-01-14 | 南方电网科学研究院有限责任公司 | 一种配电网高阻接地识别装置算法升级方法和*** |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6540725B2 (ja) * | 2017-01-30 | 2019-07-10 | 富士通株式会社 | 演算処理装置、方法、およびプログラム |
US11037330B2 (en) * | 2017-04-08 | 2021-06-15 | Intel Corporation | Low rank matrix compression |
CN108427671B (zh) * | 2018-01-25 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 信息转换方法和装置、存储介质及电子装置 |
US10592208B2 (en) * | 2018-05-07 | 2020-03-17 | International Business Machines Corporation | Very low precision floating point representation for deep learning acceleration |
US11568207B2 (en) | 2018-09-27 | 2023-01-31 | Deepmind Technologies Limited | Learning observation representations by predicting the future in latent space |
JP6852141B2 (ja) * | 2018-11-29 | 2021-03-31 | キヤノン株式会社 | 情報処理装置、撮像装置、情報処理装置の制御方法、および、プログラム |
US11995854B2 (en) * | 2018-12-19 | 2024-05-28 | Nvidia Corporation | Mesh reconstruction using data-driven priors |
WO2020213344A1 (ja) | 2019-04-18 | 2020-10-22 | 学校法人慶應義塾 | 大腸癌の発癌リスクを検出する方法及びキット |
US11556615B2 (en) * | 2019-05-03 | 2023-01-17 | Tesla, Inc. | Data path for scalable matrix node engine with mixed data formats |
JP7272121B2 (ja) * | 2019-06-07 | 2023-05-12 | 富士通株式会社 | 演算処理装置、制御方法、及び制御プログラム |
CN112446460A (zh) * | 2019-08-28 | 2021-03-05 | 上海寒武纪信息科技有限公司 | 用于处理数据的方法、装置以及相关产品 |
JP7342544B2 (ja) | 2019-09-09 | 2023-09-12 | 富士通株式会社 | 学習プログラムおよび学習方法 |
JP7322620B2 (ja) | 2019-09-13 | 2023-08-08 | 富士通株式会社 | 情報処理装置、情報処理方法および情報処理プログラム |
JP2021124849A (ja) * | 2020-02-04 | 2021-08-30 | 富士通株式会社 | 演算処理装置、演算処理装置の制御方法及び演算処理プログラム |
US10970619B1 (en) * | 2020-08-21 | 2021-04-06 | Moffett Technologies Co., Limited | Method and system for hierarchical weight-sparse convolution processing |
US20220199078A1 (en) * | 2020-12-22 | 2022-06-23 | Samsung Electronics Co., Ltd. | Electronic apparatus, system comprising electronic apparatus and server and controlling method thereof |
CN113984135A (zh) * | 2021-10-11 | 2022-01-28 | 青岛海尔空调电子有限公司 | 流量统计方法、装置、计算机可读存储介质及*** |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4918618A (en) * | 1988-04-11 | 1990-04-17 | Analog Intelligence Corporation | Discrete weight neural network |
JPH0730373A (ja) * | 1993-07-07 | 1995-01-31 | Nippondenso Co Ltd | デジタルフィルタ |
JPH0784975A (ja) * | 1993-09-10 | 1995-03-31 | Hitachi Ltd | 情報処理装置および学習演算処理方法 |
US7290024B2 (en) * | 2003-12-18 | 2007-10-30 | Intel Corporation | Methods and apparatus for performing mathematical operations using scaled integers |
DK3114540T3 (da) | 2014-03-06 | 2021-04-19 | Progress Inc | Neuralt netværk og fremgangsmåder til træning af neuralt netværk |
US20150324690A1 (en) * | 2014-05-08 | 2015-11-12 | Microsoft Corporation | Deep Learning Training System |
US20170061279A1 (en) * | 2015-01-14 | 2017-03-02 | Intel Corporation | Updating an artificial neural network using flexible fixed point representation |
US10223635B2 (en) * | 2015-01-22 | 2019-03-05 | Qualcomm Incorporated | Model compression and fine-tuning |
CN106796668B (zh) * | 2016-03-16 | 2019-06-14 | 香港应用科技研究院有限公司 | 用于人工神经网络中比特深度减少的方法和*** |
US10831444B2 (en) | 2016-04-04 | 2020-11-10 | Technion Research & Development Foundation Limited | Quantized neural network training and inference |
CN106650931A (zh) | 2016-12-09 | 2017-05-10 | 曙光信息产业(北京)有限公司 | 混合精度深度学习算法 |
CN107239826A (zh) * | 2017-06-06 | 2017-10-10 | 上海兆芯集成电路有限公司 | 在卷积神经网络中的计算方法及装置 |
KR102601604B1 (ko) | 2017-08-04 | 2023-11-13 | 삼성전자주식회사 | 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치 |
-
2017
- 2017-10-23 KR KR1020170137374A patent/KR20190044878A/ko not_active Application Discontinuation
-
2018
- 2018-08-21 US US16/106,703 patent/US11544549B2/en active Active
- 2018-10-09 EP EP18199332.0A patent/EP3474195A1/en active Pending
- 2018-10-15 CN CN201811199602.9A patent/CN109697510B/zh active Active
- 2018-10-22 JP JP2018198683A patent/JP7072484B2/ja active Active
-
2022
- 2022-11-23 US US17/993,740 patent/US20230102087A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113933652A (zh) * | 2021-10-15 | 2022-01-14 | 南方电网科学研究院有限责任公司 | 一种配电网高阻接地识别装置算法升级方法和*** |
Also Published As
Publication number | Publication date |
---|---|
US20190122106A1 (en) | 2019-04-25 |
US11544549B2 (en) | 2023-01-03 |
JP2019079535A (ja) | 2019-05-23 |
US20230102087A1 (en) | 2023-03-30 |
JP7072484B2 (ja) | 2022-05-20 |
CN109697510A (zh) | 2019-04-30 |
CN109697510B (zh) | 2024-03-08 |
EP3474195A1 (en) | 2019-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20190044878A (ko) | 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치 | |
KR20200004700A (ko) | 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치 | |
CN112074806B (zh) | 用于块浮点计算的***、方法和计算机存储介质 | |
EP3474194B1 (en) | Method and apparatus with neural network parameter quantization | |
JP2019164793A5 (ko) | ||
CN112955907B (zh) | 用于量化训练的长短期记忆神经网络的方法和*** | |
KR102625762B1 (ko) | 다중-태스크 순환 신경망 | |
US20200117981A1 (en) | Data representation for dynamic precision in neural network cores | |
JP6293963B1 (ja) | ニューロモルフィック素子を含むアレイの制御装置、離散化ステップサイズの演算方法およびプログラム | |
WO2019232163A1 (en) | Computer system prediction machine learning models | |
US9412074B2 (en) | Optimized trotterization via multi-resolution analysis | |
US11657285B2 (en) | Methods, systems, and media for random semi-structured row-wise pruning in neural networks | |
US11663451B2 (en) | Two-dimensional array-based neuromorphic processor and implementing method | |
EP3893104A1 (en) | Methods and apparatus for low precision training of a machine learning model | |
CN109214502A (zh) | 神经网络权重离散化方法和*** | |
GB2580153A (en) | Converting floating point numbers to reduce the precision | |
US20230037498A1 (en) | Method and system for generating a predictive model | |
US11023240B1 (en) | Systems and methods for efficient scaling of quantized integers | |
WO2022040963A1 (en) | Methods and apparatus to dynamically normalize data in neural networks | |
CN112508166A (zh) | 信息处理装置和方法以及存储信息处理程序的记录介质 | |
JP2020042399A (ja) | 積和演算装置、積和演算方法、及びシステム | |
CN116090511A (zh) | 卷积神经网络的预处理方法和加速方法、加速***和介质 | |
US20210110213A1 (en) | Deep learning model embodiments and training embodiments for faster training | |
KR20210116182A (ko) | 소프트맥스 연산 근사화 방법 및 장치 | |
EP4191476A1 (en) | Machine learning accelerator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal |