KR102526650B1 - 뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치 - Google Patents

뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치 Download PDF

Info

Publication number
KR102526650B1
KR102526650B1 KR1020170064884A KR20170064884A KR102526650B1 KR 102526650 B1 KR102526650 B1 KR 102526650B1 KR 1020170064884 A KR1020170064884 A KR 1020170064884A KR 20170064884 A KR20170064884 A KR 20170064884A KR 102526650 B1 KR102526650 B1 KR 102526650B1
Authority
KR
South Korea
Prior art keywords
values
data
neural network
quantization levels
activation
Prior art date
Application number
KR1020170064884A
Other languages
English (en)
Other versions
KR20180129211A (ko
Inventor
이준행
박은혁
유승주
Original Assignee
삼성전자주식회사
서울대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사, 서울대학교산학협력단 filed Critical 삼성전자주식회사
Priority to KR1020170064884A priority Critical patent/KR102526650B1/ko
Priority to US15/880,690 priority patent/US11250320B2/en
Publication of KR20180129211A publication Critical patent/KR20180129211A/ko
Priority to US17/551,572 priority patent/US20220108178A1/en
Application granted granted Critical
Publication of KR102526650B1 publication Critical patent/KR102526650B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Image Analysis (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Facsimile Image Signal Circuits (AREA)

Abstract

뉴럴 네트워크에 포함된 레이어에서 처리되는 데이터의 집합을 획득하고, 데이터의 집합에 포함된 데이터 값들에 기초한 엔트로피에 기초하여 데이터 값들에 할당된 양자화 레벨들을 조정하고, 조정된 양자화 레벨들에 따라 데이터의 집합에 포함된 데이터 값들을 양자화함으로써 뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치를 제공할 수 있다.

Description

뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치{Method and apparatus for quantizing data in a neural network}
본 개시는 뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치에 관한 것이다.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 최근 뉴럴 네트워크 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크 장치를 사용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다.
뉴럴 네트워크 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 뉴럴 네트워크 장치가 입력을 실시간으로 분석하고, 정보를 추출하기 위해서 뉴럴 네트워크 연산을 효율적으로 처리할 수 있는 기술이 요구된다. 특히, 스마트폰과 같은, 저전력 고성능 임베디드 시스템은 제한된 리소스를 가지므로, 복잡한 입력 데이터를 처리하는데 필요한 연산량을 감소시키면서도 정확도 손실을 최소화할 수 있는 기술이 요구된다.
다양한 실시예들은 뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치를 제공하는데 있다. 본 개시가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
상술한 기술적 과제를 해결하기 위한 수단으로서, 일 측면에 따른 뉴럴 네트워크에서 데이터를 양자화하는 방법은, 상기 뉴럴 네트워크에 포함된 레이어에서 처리되는 부동 소수점 데이터의 집합을 획득하는 단계; 상기 부동 소수점 데이터의 집합에 포함된 데이터 값들에 기초한 가중 엔트로피(weighted entropy)를 결정하는 단계; 상기 가중 엔트로피에 기초하여 상기 데이터 값들에 할당된 양자화 레벨들을 조정하는 단계; 및 상기 조정된 양자화 레벨들에 따라 상기 부동 소수점 데이터의 집합에 포함된 상기 데이터 값들을 양자화하는 단계를 포함할 수 있다.
또한, 다른 측면에 따른 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법을 실행하는 명령어들을 포함하는 하나 이상의 프로그램이 기록된 기록매체를 포함할 수 있다.
또한, 또 다른 측면에 따른 뉴럴 네트워크를 실시하는 장치는, 적어도 하나의 프로그램이 저장된 메모리; 및 상기 적어도 하나의 프로그램을 실행함으로써 상기 뉴럴 네트워크에서 데이터를 양자화하는 프로세서를 포함하고, 상기 프로세서는, 상기 뉴럴 네트워크에 포함된 레이어에서 처리되는 부동 소수점 데이터의 집합을 획득하고, 상기 부동 소수점 데이터의 집합에 포함된 데이터 값들에 기초한 가중 엔트로피를 결정하며, 상기 가중 엔트로피에 기초하여 상기 데이터 값들에 할당된 양자화 레벨들을 조정하고, 상기 조정된 양자화 레벨들에 따라 상기 부동 소수점 데이터의 집합에 포함된 상기 데이터 값들을 양자화할 수 있다.
도 1은 일부 실시예에 따른 뉴럴 네트워크의 예시를 나타내는 도면이다.
도 2는 일부 실시예에 따른 뉴럴 네트워크에 포함된 레이어에서 처리되는 웨이트 값들의 예시적인 분포 및 웨이트 값들에 다양한 양자화 방식이 적용된 결과를 나타내는 도면이다.
도 3은 일부 실시예에 따른 뉴럴 네트워크에서 데이터를 양자화 하는 방법의 흐름도이다.
도 4는 일부 실시예에 따른 가중 엔트로피를 증가시키기 위해 클러스터의 경계값을 조정하는 프로세스의 예시이다.
도 5는 일부 실시예에 따른 웨이트 값들을 양자화하는 알고리즘의 예시를 나타내는 도면이다.
도 6은 일부 실시예에 따른 액티베이션 값들을 양자화하는 알고리즘의 예시를 나타내는 도면이다.
도 7은 일부 실시예에 따른 웨이트 값들 및 액티베이션 값들에 대해 가중 엔트로피 기반 양자화를 수행한 결과의 예시를 나타내는 도면이다.
도 8은 일부 실시예에 따른 뉴럴 네트워크 장치의 동작 방법을 나타내는 흐름도이다.
도 9는 일부 실시예에 따른 가중 엔트로피 기반 양자화가 적용된 뉴럴 네트워크의 시뮬레이션 결과를 나타내는 도면이다.
도 10은 일부 실시예에 따른 전자 시스템의 구성을 나타내는 블록도이다.
도 11은 일부 실시예에 따른 뉴럴 네트워크 장치의 구성을 나타내는 블록도이다.
이하 첨부된 도면을 참조하면서 오로지 예시를 위한 실시예들을 상세히 설명하기로 한다. 하기 설명은 실시예들을 구체화하기 위한 것일 뿐 발명의 권리 범위를 제한하거나 한정하는 것이 아님은 물론이다. 상세한 설명 및 실시예로부터 당해 기술분야의 전문가가 용이하게 유추할 수 있는 것은 권리범위에 속하는 것으로 해석된다.
본 명세서에서 사용되는 '구성된다' 또는 '포함한다' 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
본 실시예들은 뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치에 관한 것으로서 이하의 실시예들이 속하는 기술 분야에서 통상의 지식을 가진 자에게 널리 알려져 있는 사항들에 관해서는 자세한 설명을 생략한다.
도 1은 일부 실시예에 따른 뉴럴 네트워크의 예시를 나타내는 도면이다.
도 1을 참조하면, 일부 실시예에 따른 뉴럴 네트워크(10)가 도시되어 있다. 뉴럴 네트워크(10)는 입력 레이어, 히든 레이어들 및 출력 레이어를 포함하는 구조를 가지며, 수신되는 입력 데이터(예를 들어,
Figure 112017050141823-pat00001
Figure 112017050141823-pat00002
)를 기초로 연산을 수행하고, 수행 결과를 기초로 출력 데이터(예를 들어,
Figure 112017050141823-pat00003
Figure 112017050141823-pat00004
)를 생성할 수 있다.
뉴럴 네트워크(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)일 수 있고, 입력-출력을 매핑할 수 있다. 예를 들어,
Figure 112017050141823-pat00005
는 활성화 함수(activation function)이고,
Figure 112017050141823-pat00006
는 (i-1) 번째 레이어에 포함된 k 번째 노드로부터 i 번째 레이어에 포함된 j번째 노드로의 웨이트 값이며,
Figure 112017050141823-pat00007
는 i 번째 레이어에 포함된 j 번째 노드의 바이어스(bias) 값이고,
Figure 112017050141823-pat00008
는 i 번째 레이어의 j 번째 노드의 액티베이션 값이라고 할 때, 액티베이션 값
Figure 112017050141823-pat00009
는 다음과 같은 수학식 1을 따를 수 있다.
Figure 112017050141823-pat00010
도 1에 도시된 바와 같이, 2번째 레이어(Layer 2)의 첫 번째 노드의 액티베이션 값은
Figure 112017050141823-pat00011
로 표현될 수 있다. 또한,
Figure 112017050141823-pat00012
은 수학식 1에 따라
Figure 112017050141823-pat00013
의 값을 가질 수 있다. 다만, 앞서 설명한 수학식 1은 뉴럴 네트워크에서 데이터를 처리하기 위해 이용되는 액티베이션 및 웨이트를 설명하기 위한 예시일 뿐, 이에 제한되지 않는다. 액티베이션 값은 이전 레이어로부터 수신된 액티베이션 값들의 가중 합계(weighted sum)에 활성화 함수를 적용한 값을 Rectified Linear Unit (ReLU)을 통과시킴으로써 획득된 값일 수도 있다.
앞서 설명한 것과 같이, 뉴럴 네트워크(10)에서는 수많은 데이터 집합들이 상호 연결된 복수의 노드들 간에 교환되고, 레이어를 지나면서 수많은 연산과정을 거친다. 따라서, 복잡한 입력 데이터를 처리하는데 필요한 연산량을 감소시키면서도 정확도 손실을 최소화할 수 있는 기술이 요구된다.
도 2는 일부 실시예에 따른 뉴럴 네트워크에 포함된 레이어에서 처리되는 웨이트 값들의 예시적인 분포 및 웨이트 값들에 다양한 양자화 방식이 적용된 결과를 나타내는 도면이다.
도 2를 참조하면, 일부 실시예에 따른 뉴럴 네트워크에 포함된 레이어에서 처리되는 웨이트 값들의 분포(210)가 도시되어 있다. 분포(210)를 살펴보면, 웨이트 값들은 0 근처에 많은 값들이 분포되어 있는 종형 분포(bell-shaped distribution)를 갖는다. 웨이트 값들의 분포는 각 레이어의 형태 및 위치마다 다르게 나타날 수 있으나, 컨벌루션 또는 완전 연결 레이어들(convolutional or fully-connected layers)을 포함하는 뉴럴 네트워크에서의 웨이트 값들은 일반적으로 0 근처에 많은 값들이 집중되어 있고, 값이 커질수록 급격히 분포가 감소하는 경향을 가진다.
한편, 뉴럴 네트워크에서 웨이트 값들을 처리하는 과정에서 발생되는 많은 연산량을 줄이기 위해 다양한 양자화 방식에 대한 연구가 진행되었다. 그 중 멀티-비트 양자화(multi-bit quantization)는 웨이트 값들을 웨이트 값들의 원래의 비트길이 보다 작은 길이의 멀티-비트로 양자화함으로써, 정확도가 다소 감소되더라도 웨이트 값들의 처리에 필요한 연산량을 줄이는 양자화 방식이다. 종래의 멀티-비트 양자화 방식으로는 선형 양자화(linear quantization) 방식, 로그 양자화(log quantization) 방식 등이 있다.
예를 들어, 도 2에서 선형 양자화 방식이 적용된 결과(220)를 살펴보면, 선형 양자화 방식은 웨이트 값들에 일정한 간격의 양자화 레벨들을 할당하는 양자화 방식이다. 다만, 선형 양자화 방식은 웨이트 값들의 분포를 고려하지 않으므로, 빈도가 아주 낮은 큰 값들에도 일정한 간격으로 양자화 레벨들이 할당된다. 따라서, 허용 가능한 정확도 손실 범위에서 연산량을 충분히 감소시키기 위해서는 웨이트 값들에 할당되는 양자화 레벨들이 제한됨에도 불구하고, 선형 양자화 방식은 제한된 양자화 레벨들로 웨이트 값들의 분포를 효과적으로 표현하지 못한다.
또한, 도 2에서 로그 양자화 방식이 적용된 결과(230)를 살펴보면, 로그 양자화 방식은 로그 데이터 표현(logarithm data representation) 기반으로 양자화 레벨들을 할당하므로, 큰 값들 근처의 웨이트 값들에 상대적으로 적은 양자화 레벨을 할당하고, 0 근처의 웨이트 값들에 상대적으로 많은 양자화 레벨들을 할당한다. 다만, 0 근처의 웨이트 값들은 빈도는 높지만 그 값이 작으므로 최종 출력에 미치는 영향이 적다. 그럼에도 불구하고, 로그 양자화 방식은 최종 출력에 미치는 영향이 작은 0 근처의 값들에 상대적으로 많은 양자화 레벨들이 할당하므로, 제한된 양자화 레벨들로 주어진 웨이트 값들의 분포를 효과적으로 표현하지 못한다.
결국, 웨이트 값들의 분포뿐만 아니라 웨이트 값들 각각의 영향(impact)도 양자화 과정에서 고려되어야 한다. 예를 들어, 빈도는 높지만 중요도가 아주 낮은, 0 근처의 값들에는 적은 양자화 레벨들이 할당되어야 하고, 중요도는 크지만 빈도가 아주 낮은, 큰 값들에도 적은 양자화 레벨들이 할당되어야 한다. 양 극단 사이의, 빈도 및 중요성이 적당히 큰 구간에 많은 양자화 레벨들이 할당될 때, 양자화에 의한 정확도 손실이 최소화되면서도 웨이트 값들의 처리에 필요한 연산량이 감소될 수 있다. 다르게 말하면, 제한된 양자화 레벨들로 웨이트 값들의 분포가 효과적으로 표현될 수 있다.
본 개시는 웨이트 값들의 크기(중요도) 및 분포(빈도)를 모두 고려하는 가중 엔트로피(weighted entropy) 기반 양자화 방식을 제안한다. 도 2에서 가중 엔트로피 기반 양자화 방식이 적용된 예시적인 결과(240)를 살펴보면, 0 근처의 값들 및 상대적으로 큰 값들에는 적은 양자화 레벨들이 할당되고, 양 극단 사이의 값들에 많은 양자화 레벨들이 할당되어 있음을 알 수 있다. 가중 엔트로피 기반 양자화 방식에 따른 구체적인 양자화 방법은 이하에서 도 3 내지 도 9를 참조하여 상세히 설명될 것이다.
한편, 뉴럴 네트워크에 포함된 레이어에서 처리되는 액티베이션 값들도 ReLU 레이어에 의해 음수가 아닌(non-negative) 값을 갖는다는 점을 제외하면, 웨이트 값들과 유사한 분포를 갖는다. 따라서, 본 개시의 일부 실시예에 따르면, 액티베이션 값들에 대해서도 액티베이션 값들의 크기(중요도) 및 분포(빈도)를 모두 고려하는 가중 엔트로피 기반 양자화 방식이 적용될 수 있다.
도 3은 일부 실시예에 따른 뉴럴 네트워크에서 데이터를 양자화 하는 방법의 흐름도이다.
도 3을 참조하면, 단계 310에서, 뉴럴 네트워크 장치는 뉴럴 네트워크에 포함된 레이어에서 처리되는 부동 소수점(floating point) 데이터의 집합을 획득할 수 있다. 부동 소수점 데이터의 집합은 레이어에서 처리되는 액티베이션 값들의 집합 및 레이어에서 처리되는 웨이트 값들의 집합 중 적어도 하나를 포함할 수 있다.
예를 들어, 뉴럴 네트워크 장치는 레이어에 포함된 노드들과 해당 레이어의 이전 레이어 또는 다음 레이어에 포함된 노드들과의 연결 관계에 할당된 웨이트 값들의 집합을 획득할 수 있다. 또한, 뉴럴 네트워크 장치는 이전 레이어로부터 액티베이션 값들의 집합을 획득할 수 있으며, 웨이트 값들의 집합 및 이전 레이어로부터 획득된 액티베이션 값들의 집합에 기초하여 해당 레이어에 대응되는 액티베이션 값들의 집합을 획득할 수 있다.
단계 320에서, 뉴럴 네트워크 장치는 부동 소수점 데이터의 집합에 포함된 데이터 값들에 기초한 가중 엔트로피를 결정할 수 있다. 가중 엔트로피는 부동 소수점 데이터의 집합에 포함된 데이터 값들의 분포에 데이터 값들의 크기에 기초한 가중 인자(weighting factor)를 적용함으로써 결정될 수 있다. 예를 들어, 가중 엔트로피는 양자화된 값들의 빈도 및 크기에 기초하여 양자화된 결과의 정보량을 측정하는 지표일 수 있다. 뉴럴 네트워크 장치는 부동 소수점 데이터의 집합에 포함된 데이터 값들이 출력 데이터에 영향을 미치는 정도에 따라 가중 엔트로피를 결정할 수 있다.
하기에서는 부동 소수점 데이터의 집합이 웨이트 값들의 집합인 경우 및 부동 소수점 데이터의 집합이 액티베이션 값들의 집합인 경우 각각에 대해 가중 엔트로피를 결정하는 방법을 보다 구체적으로 설명하도록 하겠다.
부동 소수점 데이터의 집합이 웨이트 값들의 집합인 경우, 뉴럴 네트워크 장치는 웨이트 값들의 집합을 복수의 클러스터들로 그루핑할 수 있다. 웨이트 값들을 N 개의 양자화 레벨들로 분류해야 하는 경우 뉴럴 네트워크 장치는 웨이트 값들 각각을 크기에 따라 분류하여 N 개 중에 하나의 클러스터로 매핑할 수 있다. 예를 들어, 뉴럴 네트워크 장치는 웨이트 값들의 집합을 N 개의 클러스터들인
Figure 112017050141823-pat00014
로 그루핑할 수 있다.
복수의 클러스터들의 개수는 제한된 양자화 레벨들에 대응될 수 있다. 예를 들어, 정확도 손실을 허용 가능한 범위로 유지하기 위해 최소 4 비트로 양자화될 필요가 있을 때, 뉴럴 네트워크 장치는 웨이트 값들을
Figure 112017050141823-pat00015
개의 클러스터들로 그루핑할 수 있다. 앞선 예시에서
Figure 112017050141823-pat00016
개는 예시에 불과할 뿐, 클러스터들의 개수는 허용 가능한 정확도 손실 범위에서 연산량을 충분히 감소시킬 수 있도록 적절하게 결정될 수 있다. 한편, 클러스터들의 개수는 뉴럴 네트워크 장치에 의해 결정될 수 있고, 사용자 입력에 의해 결정될 수도 있다.
뉴럴 네트워크 장치는 그루핑된 클러스터들 각각에 포함되는 웨이트 값들의 개수를 웨이트 값들의 집합에 포함되는 웨이트 값들의 총 개수로 나눔으로써, 그루핑된 클러스터들 각각의 상대 빈도(relative frequency)를 결정할 수 있다. 예를 들어, 뉴럴 네트워크 장치가 웨이트 값들의 집합을 N 개의 클러스터들인
Figure 112017050141823-pat00017
로 그루핑한 경우, n 번째 클러스터의 상대 빈도
Figure 112017050141823-pat00018
은 다음의 수학식 2를 따른다.
Figure 112017050141823-pat00019
수학식 2에서
Figure 112017050141823-pat00020
은 n번째 클러스터에 포함되는 웨이트 값들의 개수를 의미하고,
Figure 112017050141823-pat00021
는 모든 클러스터들에 포함되는 웨이트 값들의 총 개수를 의미할 수 있다.
또한, 뉴럴 네트워크 장치는 그루핑된 클러스터들 각각에 포함되는 웨이트 값들의 크기에 기초하여 그루핑된 클러스터들 각각의 대표 중요도(representative importance)를 결정할 수 있다. 중요도란 데이터 값들의 크기에 기초한 가중 인자(weighting factor)로서, 최종 출력에 웨이트 값들 각각이 미치는 영향을 수학적으로 표현한 것일 수 있다. 예를 들어, n 번째 클러스터에 포함되는 m 번째 웨이트 값의 중요도
Figure 112017050141823-pat00022
는 다음의 수학식 3을 따를 수 있다.
Figure 112017050141823-pat00023
수학식 3에서
Figure 112017050141823-pat00024
는 웨이트 값과 중요도 간의 관계를 나타내는 함수일 수 있고,
Figure 112017050141823-pat00025
는 n 번째 클러스터에 포함되는 m 번째 웨이트 값의 크기일 수 있다. 수학식 3에서와 같이, 중요도는 웨이트 값의 크기에 제곱 비례(quadratically proportional)할 수 있다. 다만, 수학식 3에 따른 중요도 및 웨이트 값의 크기간의 관계는 예시에 불과할 뿐, 이에 제한되지 않는다.
한편, 뉴럴 네트워크 장치는 그루핑된 클러스터들 각각에 포함되는 웨이트 값들에 대응되는 중요도들에 기초하여 그루핑된 클러스터들 각각의 대표 중요도를 결정할 수 있다. 예를 들어, n 번째 클러스터의 대표 중요도
Figure 112017050141823-pat00026
은 다음의 수학식 4를 따른다.
Figure 112017050141823-pat00027
수학식 4에서
Figure 112017050141823-pat00028
은 n번째 클러스터에 포함되는 웨이트 값들 각각에 대응되는 중요도들을 모두 더한 값을 의미하고,
Figure 112017050141823-pat00029
은 n번째 클러스터에 포함되는 웨이트 값들의 개수를 의미할 수 있다. 수학식 4에서와 같이, 대표 중요도는 클러스터에 포함되는 웨이트 값들에 대응되는 중요도들의 평균값일 수 있다.
한편, 뉴럴 네트워크 장치는 그루핑된 클러스터들 각각의 대표 중요도에 대응되는 웨이트 값을 그루핑된 클러스터들 각각의 대표 웨이트 값으로 결정할 수 있고, 그루핑된 클러스터들 각각에 포함되는 웨이트 값들을 그루핑된 클러스터들 각각의 대표 웨이트 값으로 양자화할 수 있다. 예를 들어, 뉴럴 네트워크 장치는 n 번째 클러스터의 대표 중요도
Figure 112017050141823-pat00030
에 대응되는 웨이트 값인
Figure 112017050141823-pat00031
를 n 번째 클러스터의 대표 웨이트 값으로 양자화할 수 있다.
뉴럴 네트워크 장치는 상대 빈도 및 대표 중요도에 기초하여 가중 엔트로피를 결정할 수 있다. 뉴럴 네트워크 장치는 그루핑된 클러스터들 각각의 상대 빈도 및 대표 중요도에 기초하여 그루핑된 클러스터들의 가중 엔트로피를 결정할 수 있다. 예를 들어, N 개로 그루핑된 클러스터들의 가중 엔트로피 S는 다음의 수학식 5를 따를 수 있다.
Figure 112017050141823-pat00032
수학식 5에서
Figure 112017050141823-pat00033
은 n 번째 클러스터의 대표 중요도를 의미하고,
Figure 112017050141823-pat00034
Figure 112017050141823-pat00035
은 n 번째 클러스터의 상대 빈도를 의미할 수 있다. 수학식 5에서와 같이, 가중 엔트로피는 웨이트 값들의 분포에 웨이트 값들의 크기에 기초한 가중 인자를 적용함으로써 결정된 것일 수 있다.
앞서 설명한 바와 같이, 뉴럴 네트워크 장치는 클러스터링 기반 양자화 방식에 기초하여 웨이트 값들의 집합의 가중 엔트로피를 결정할 수 있다. 그러나, 웨이트 값들이 학습(training) 후에 고정되는 것과는 달리, 액티베이션 값들은 추론(inference) 과정에서 입력 데이터에 따라 그 값이 유동적으로 변하므로, 클러스터링 기반 양자화 방식에 기초하여 가중 엔트로피를 결정하기 어렵다. 따라서, 액티베이션 값들에는 클러스터링 기반 양자화 방식이 아닌 로그 양자화 방식이 적용될 수 있다.
로그 양자화 방식이란 데이터 값을 로그 도메인으로 양자화하는 방식을 의미할 수 있다. 예를 들어, 액티베이션 값 x가 로그 양자화되는 경우 다음의 수학식 6을 따를 수 있다.
Figure 112017050141823-pat00036
수학식 6에서 LogQuant 는 로그 양자화(logarithmic quantization)를 의미하고, bitwidth는 양자화된 값을 나타내기 위해 요구되는 비트길이를 의미하며, FSR(Full Scale Range)은 액티베이션 값들의 범위의 변화를 조절하기 위한 오프셋 파라미터를 의미할 수 있다.
한편,
Figure 112017050141823-pat00037
는 다음의 수학식 7을 따를 수 있다.
Figure 112017050141823-pat00038
Figure 112017050141823-pat00039
수학식 7에서 Clip(x, min, max)는
Figure 112017050141823-pat00040
일 때 0을,
Figure 112017050141823-pat00041
일 때 max-1을,
Figure 112017050141823-pat00042
일 때 x를 출력하는 함수를 의미하고, Round 는 반올림을 수행하는 함수를 의미할 수 있다. 따라서, 수학식 7에 따르면,
Figure 112017050141823-pat00043
Figure 112017050141823-pat00044
일 때 0의 값을 갖고,
Figure 112017050141823-pat00045
일 때 FSR-1의 값을 가지며,
Figure 112017050141823-pat00046
의 값을 갖는다.
결국, 0이 아닌 x는
Figure 112017050141823-pat00047
일 때 1의 값으로 양자화되고,
Figure 112017050141823-pat00048
일 때
Figure 112017050141823-pat00049
의 값으로 양자화되며,
Figure 112017050141823-pat00050
일 때
Figure 112017050141823-pat00051
의 값으로 양자화될 수 있다. FSR은 5이고, bitwidth는 3인 경우를 예로 들면, 웨이트 값들은 0,
Figure 112017050141823-pat00052
로 양자화될 수 있다.
로그 양자화 방식은 액티베이션 값이 입력 데이터에 따라 유동적으로 변하더라도 양자화 레벨들 중 최초의 양자화 레벨에 대응되는 값 및 양자화 레벨들 간의 간격의 크기를 조정함으로써, 다양한 액티베이션 값들의 집합을 표현할 수 있다.
한편, 뉴럴 네트워크 장치는 로그 양자화 레벨들 각각에 포함되는 액티베이션 값들의 개수를 액티베이션 값들의 집합에 포함되는 액티베이션 값들의 총 개수로 나눔으로써 로그 양자화 레벨들 각각의 상대 빈도를 결정할 수 있다. 예를 들어, 뉴럴 네트워크 장치는 앞선 예에서
Figure 112017050141823-pat00053
로 양자화된 액티베이션 값들의 개수를 액티베이션 값들의 집합에 포함되는 액티베이션 값들의 총 개수로 나눔으로써, 양자화 레벨
Figure 112017050141823-pat00054
의 상대 빈도를 결정할 수 있다.
또한, 뉴럴 네트워크 장치는 로그 양자화 레벨들 각각에 대응되는 데이터 값을 로그 양자화 레벨들 각각의 대표 중요도로 결정할 수 있다. 예를 들어, 뉴럴 네트워크 장치는 앞선 예에서 로그 양자화 레벨
Figure 112017050141823-pat00055
의 대표 중요도를
Figure 112017050141823-pat00056
로 결정할 수 있다.
뉴럴 네트워크 장치는 로그 양자화 레벨들 각각의 상대 빈도 및 대표 중요도에 기초하여 가중 엔트로피를 결정할 수 있다. N 개의 로그 양자화 레벨들로 양자화된 액티베이션 값들의 집합의 가중 엔트로피는 앞서 설명된 수학식 5를 따를 수 있다.
단계 330에서, 뉴럴 네트워크 장치는 가중 엔트로피에 기초하여 데이터 값들에 할당된 양자화 레벨들을 조정할 수 있다. 부동 소수점 데이터 집합의 가중 엔트로피가 최대화되도록 부동 소수점 데이터 집합에 포함되는 데이터 값들이 양자화되는 경우, 부동 소수점 데이터 집합에 포함되는 데이터 값들 중 빈도는 높지만 중요도가 아주 낮은, 0 근처의 값들에는 적은 양자화 레벨들이 할당되고, 중요도는 크지만 빈도가 아주 낮은, 큰 값들에 적은 양자화 레벨들이 할당될 수 있다.
다시 말하면, 부동 소수점 데이터 집합의 가중 엔트로피가 최대화되도록 부동 소수점 데이터 집합에 포함되는 데이터 값들이 양자화되는 경우, 양 극단 사이의, 빈도 및 중요성이 적당히 큰 구간에 많은 양자화 레벨들이 할당되므로, 양자화에 의한 정확도 손실이 최소화되면서도 데이터 값들의 처리에 필요한 연산량이 감소될 수 있다. 따라서, 뉴럴 네트워크 장치는 가중 엔트로피가 최대화되도록 데이터 값들에 할당된 양자화 레벨들을 조정할 수 있다.
예를 들어, 부동 소수점 데이터의 집합이 웨이트 값들의 집합인 경우 뉴럴 네트워크 장치는 가중 엔트로피를 증가시키는 방향으로 클러스터들 각각의 경계값들을 조정함으로써, 데이터 값들에 할당된 양자화 레벨들을 조정할 수 있다. 클러스터들 각각의 경계값들이 조정됨에 따라 가중 엔트로피가 변화될 수 있음은 이하 도 4를 참조하여 설명될 것이다.
도 4는 일부 실시예에 따른 가중 엔트로피를 증가시키기 위해 클러스터의 경계값을 조정하는 프로세스의 예시이다.
도 4를 참조하면, 웨이트 값들의 분포와 함께 4개의 클러스터 경계값(310, 320, 330 및 340)이 도시되어 있다. 클러스터 경계값(310, 320, 330 및 340)에 의해 웨이트 값들의 집합은 총 5개의 클러스터들로 나누어질 수 있다. 도 4에 도시된 바와 같이, 나머지 경계값들(310, 320 및 330)이 고정된 상태에서 경계값(340)이 이동하면, 4번째 및 5번째 클러스터들에 포함되는 웨이트 값들이 변한다. 따라서, 4번째 및 5번째 클러스터들 각각의 상대 빈도 및 대표 중요도 또한 변하게 되고, 이에 따라 전체 클러스터들의 가중 엔트로피가 변화될 수 있다.
뉴럴 네트워크 장치는 나머지 경계값들(310, 320 및 330)을 고정시킨 상태에서 경계값(340)을 이동시킴으로써 가중 엔트로피가 최대화되는 경계값(340)의 위치를 찾을 수 있다. 또한, 뉴럴 네트워크 장치는 다른 경계값들에 대해서도 동일한 과정을 반복하여 수행함으로써, 가중 엔트로피를 최대화시키는 클러스터들의 경계값들을 찾을 수 있다.
다시 도 3으로 돌아오면, 부동 소수점 데이터의 집합이 액티베이션 값들의 집합인 경우, 뉴럴 네트워크 장치는 가중 엔트로피를 증가시키는 방향으로 양자화 레벨들 중 최초의 양자화 레벨에 대응되는 값 및 양자화 레벨들 간의 간격의 크기를 조정함으로써, 데이터 값들에 할당된 양자화 레벨들을 조정할 수 있다. 양자화 레벨들 중 최초의 양자화 레벨에 대응되는 값 및 양자화 레벨들 간의 간격의 크기가 조정됨에 따라 가중 엔트로피가 변화될 수 있음은 도 4의 설명으로부터 당업자에게 자명하므로 자세한 설명은 생략한다.
단계 340에서, 뉴럴 네트워크 장치는 조정된 양자화 레벨들에 따라 부동 소수점 데이터의 집합에 포함된 데이터 값들을 양자화할 수 있다. 앞서 설명한 바와 같이, 뉴럴 네트워크 장치가 가중 엔트로피가 최대화되도록 데이터 값들에 할당된 양자화 레벨들을 조정하므로, 양자화에 의한 정확도 손실이 최소화되면서도 데이터 값들의 처리에 필요한 연산량이 감소되도록 데이터 값들이 양자화될 수 있다.
한편, 뉴럴 네트워크 장치는 앞서 설명한 방법을 뉴럴 네트워크에 포함된 복수의 레이어들 각각에 대해 반복하여 수행함으로써, 복수의 레이어들 각각에 최적화된 양자화 레벨들을 할당할 수 있다. 앞서 설명한 방법이 뉴럴 네트워크에 포함된 복수의 레이어들 각각에 대해 반복하여 수행된 경우, 조정된 양자화 레벨들은 복수의 레이어들 각각에 최적화되도록 할당된 것일 수 있다. 웨이트 값들 또는 액티베이션 값들의 분포는 각 레이어의 형태 및 위치마다 다르게 나타날 수 있으므로, 뉴럴 네트워크 장치는 뉴럴 네트워크에 포함된 복수의 레이어들 각각에 대해 최적화된 양자화 레벨들을 할당할 수 있다.
또한, 뉴럴 네트워크 장치는 양자화된 데이터 값들에 기초하여 뉴럴 네트워크를 학습(train)시키고, 학습된 뉴럴 네트워크를 이용하여 입력 데이터로부터 출력 데이터를 추론(inference)할 수 있다. 다만, 뉴럴 네트워크 장치는 양자화된 데이터 값들에 기초하여 뉴럴 네트워크를 학습시키는 과정만을 수행할 수도 있고, 학습된 뉴럴 네트워크를 수신하여 양자화된 입력 데이터로부터 출력 데이터를 추론하는 과정만을 수행할 수도 있다.
일부 실시예에서, 뉴럴 네트워크 장치는 가중 엔트로피 기반 양자화 방식을 통해 원래 16비트 또는 32비트의 부동 소수점 값을 갖는 웨이트 값들 또는 액티베이션 값들을 제한된 양자화 레벨들(예를 들어, 4비트로 표현 가능한 양자화 레벨들) 중 가장 효율적인 양자화 레벨들로 표현할 수 있다.
본 개시에 따른 가중 엔트로피 기반 양자화 방식은 최소한의 정확도 손실로 연산량 및 모델 사이즈의 상당한 감소 효과를 가지며, 멀티-비트 양자화를 통한 정확도-성능 간의 트레이드 오프(trade-off)를 적절하게 활용할 수 있다. 또한, 본 개시에 따른 가중 엔트로피 기반 양자화 방식에 따르면, 네트워크의 수정(modification) 없이 전체 뉴럴 네트워크의 양자화가 가능하다.
도 5는 일부 실시예에 따른 웨이트 값들을 양자화하는 알고리즘의 예시를 나타내는 도면이다.
도 5를 참조하면, 음수가 아닌 웨이트 값들에 대해서 가중 엔트로피 기반 양자화를 수행하는 알고리즘 1(50)의 예시가 도시되어 있다. 가중 엔트로피 기반 양자화는 음수가 아닌 웨이트 값들 및 음수인 웨이트 값들에 대해서 별도로 수행될 수 있으나, 이에 제한되지 않는다. 뉴럴 네트워크 장치는 도 5에 도시된 알고리즘 1(50)을 이용하여 웨이트 값들에 대한 가중 엔트로피 기반 양자화를 수행할 수 있다.
단계 510에서, 뉴럴 네트워크 장치는 웨이트 값들 각각의 중요도를 계산할 수 있다. 중요도 계산은 웨이트로부터 중요도를 계산하는 중요도 매핑 함수에 의해 수행될 수 있다.
뉴럴 네트워크 장치가 모든 웨이트 값들의 중요도 값들을 획득 한 후, 단계 520에서, 뉴럴 네트워크 장치는 중요도 값들을 크기에 따라 오름차순으로 정렬할 수 있다. 뉴럴 네트워크 장치는 중요도 값들을 크기에 따라 오름차순으로 정렬함으로써, 어레이 s를 획득할 수 있다.
단계 530에서, 뉴럴 네트워크 장치는 정렬된 중요도 값들에 기초하여 클러스터 경계값 인덱스들인
Figure 112017050141823-pat00057
을 초기화할 수 있다. 클러스터 경계값 인덱스는 어떤 클러스터들에 어떤 웨이트 값들이 포함되는지 결정하기 위한 인덱스일 수 있다. 구체적으로, 클러스터
Figure 112017050141823-pat00058
는 어레이 s의
Figure 112017050141823-pat00059
는 어레이 s의
Figure 112017050141823-pat00060
번째 웨이트까지를 포함하는 것으로 정의될 수 있다.
일부 실시예에서, 뉴럴 네트워크 장치는 정렬된 중요도 값들에 기초하여 1) 각각의 클러스터가 동일한 수의 웨이트 값들을 포함하고, 2)
Figure 112017050141823-pat00061
에 포함된 웨이트 값들보다
Figure 112017050141823-pat00062
에 포함된 웨이트 값들이 더 큰 중요도를 갖도록, 클러스터 경계값 인덱스들인
Figure 112017050141823-pat00063
을 초기화할 수 있다. 클러스터 경계값 인덱스의 초기화는 정렬된 어레이 s를 N 개의 조각들로 분할(partitioning)함으로써 수행될 수 있다. 예를 들어, s=[1,2,3,4]이고, N=2인 경우 클러스터 경계값 인덱스가
Figure 112017050141823-pat00064
=0 및
Figure 112017050141823-pat00065
=4로 설정되는 경우
Figure 112017050141823-pat00066
Figure 112017050141823-pat00067
로 클러스터들이 분할될 수 있다.
단계 540에서, 뉴럴 네트워크 장치는 초기 클러스터 경계값들부터 시작해서 새로운 클러스터 경계값들에 대한 점진적인 탐색(incremental search)을 수행할 수 있다. 뉴럴 네트워크 장치는 각각의 클러스터
Figure 112017050141823-pat00068
및 해당 클러스터의 경계값들인
Figure 112017050141823-pat00069
Figure 112017050141823-pat00070
에 대해,
Figure 112017050141823-pat00071
Figure 112017050141823-pat00072
부터
Figure 112017050141823-pat00073
까지 변화시키면서 클러스터들이 더 높은 가중 엔트로피를 갖도록 하는 경계값인
Figure 112017050141823-pat00074
를 탐색할 수 있다.
단계 550에서, 뉴럴 네트워크 장치는 새로운 클러스터 경계값을 획득한 후, 각 클러스터
Figure 112017050141823-pat00075
의 대표 중요도
Figure 112017050141823-pat00076
를 계산할 수 있다. 또한, 단계 560에서, 뉴럴 네트워크 장치는 클러스터
Figure 112017050141823-pat00077
의 대표 웨이트 값인
Figure 112017050141823-pat00078
를 획득할 수 있다.
단계 570에서, 뉴럴 네트워크 장치는 어떤 클러스터에 어떤 웨이트 값들이 포함되는지를 식별하기 위해, 클러스터 경계들의 웨이트 값인
Figure 112017050141823-pat00079
를 식별할 수 있다. 예를 들어, 클러스터
Figure 112017050141823-pat00080
을 만족하는 웨이트 값들을 포함할 수 있다.
단계 580에서, 뉴럴 네트워크 장치는
Figure 112017050141823-pat00081
을 만족시키는 웨이트 값
Figure 112017050141823-pat00082
을 만족시키는 웨이트 값
Figure 112017050141823-pat00083
로 양자화할 수 있다. 앞서 설명한 바와 같이, 데이터의 중요성을 고려하면서 엔트로피를 최대화시키는 가중 엔트로피 기반 양자화 방식에 의해 양자화 결과는 최적화될 수 있다. 예를 들어, 0 근처의 값들은 중요성이 낮으므로 큰 하나의 클러스터로 그루핑될 수 있고, 상대적으로 큰 값들은 빈도가 매우 낮으므로 넓은 범위의 웨이트 값들을 포함하는 클러스터로 그루핑될 수 있다.
앞서 설명된 단계들은 순서와 상관 없이 나열된 것으로서, 웨이트 값들에 대한 가중 엔트로피 기반 양자화를 수행하기 위해 앞선 단계들이 적절한 순서에 따라 이용될 수 있음은 당업자에게 자명하다.
도 6은 일부 실시예에 따른 액티베이션 값들을 양자화하는 알고리즘의 예시를 나타내는 도면이다.
도 6을 참조하면, 액티베이션 값들에 대해서 가중 엔트로피 기반 양자화를 수행하는 알고리즘 2(60)의 예시가 도시되어 있다. 뉴럴 네트워크 장치는 도 6에 도시된 알고리즘 2(60)를 이용하여 액티베이션 값들에 대한 가중 엔트로피 기반 양자화를 수행할 수 있다.
단계 610에서, 뉴럴 네트워크 장치는 2진수(binary) 데이터 값을 로그 스케일 인덱스 값으로 변경할 수 있다. 로그 레벨로 양자화하는 과정에서 전체적인 정확도 및 안정성(stability)을 개선하기 위해, 작은 값을 갖는 로그 밑(log base) 및 작은 값을 갖는 오프셋이 선택될 수 있다. 예를 들어, 로그 밑은
Figure 112017050141823-pat00084
또는 그의 배수들로 선택될 수 있고, 오프셋은
Figure 112017050141823-pat00085
또는 그의 배수들로 선택될 수 있다. 로그 밑 및 오프셋 각각은 알고리즘 2(60)의 'step' 및 'fsr'에 대응될 수 있다. 로그 밑 또는 'step'은 로그 레벨 사이의 간격의 크기를 정하는 파라미티를 의미하고, 오프셋 또는 'fsr'은 첫 로그 레벨이 시작되는 지점을 정하는 파라미터를 의미할 수 있다.
단계 620에서, 뉴럴 네트워크 장치는 로그 스케일 인덱스 값에 대해 양자화 레벨들을 할당할 수 있다. 뉴럴 네트워크 장치는 제 1 양자화 레벨에 대해 0 값을 할당하고, 다른 레벨들에 대해 대응되는 값을 할당할 수 있다. 예를 들어, 액티베이션 값들의 3-비트 양자화가 수행되면, 제 1 양자화 레벨에는 0 값이 할당되고, 제 2 양자화 레벨에는
Figure 112017050141823-pat00086
이 할당되며, 제 3 양자화 레벨에는
Figure 112017050141823-pat00087
이 할당될 수 있다. 계속해서 같은 방식으로 제 8 양자화 레벨까지 대응되는 값이 할당될 수 있다.
단계 630에서, 뉴럴 네트워크 장치는 로그 스케일 인덱스 값을 ReLU 활성화 함수에 통과시킬 수 있다. ReLU 활성화 함수는 음수인 액티베이션 값들 및 0 이하의 로그 스케일 인덱스 값에 대응되는 액티베이션 값들에 대해 0의 값을 갖는 양자화 레벨을 할당하는 기능을 수행할 수 있다. ReLU 활성화 함수에 의해 양자화 결과가 보다 단순해질 수 있다.
단계 640에서, 뉴럴 네트워크 장치는 로그 양자화 레벨들 각각에 대응되는 액티베이션 값을 로그 양자화 레벨들 각각의 대표 중요도로 결정할 수 있다. 뉴럴 네트워크 장치는 로그 스케일 인덱스 값들 각각에 대응되는 액티베이션 값을 로그 스케일 인덱스 값들 각각에 대응되는 로그 양자화 레벨들 각각의 대표 중요도로 결정할 수 있다.
단계 650에서, 뉴럴 네트워크 장치는 로그 양자화 레벨들 각각에 포함되는 액티베이션 값들의 개수에 기초하여 로그 양자화 레벨들 각각의 상대 빈도를 결정할 수 있다. 예를 들어, 뉴럴 네트워크 장치는 로그 양자화 레벨들 각각에 포함되는 액티베이션 값들의 개수를 액티베이션 값들의 집합에 포함되는 액티베이션 값들의 총 개수로 나눔으로써 로그 양자화 레벨들 각각의 상대 빈도를 결정할 수 있다.
뉴럴 네트워크 장치는 단계 640 및 단계 650에서 결정된 대표 중요도 및 상대 빈도에 기초하여 가중 엔트로피를 결정할 수 있다. 대표 중요도 및 상대 빈도에 기초하여 가중 엔트로피를 결정하는 것은 앞서 설명된 수학식 5를 따를 수 있다. 뉴럴 네트워크 장치는 가중 엔트로피를 최대화시키는 'fsr' 및 'step'을 탐색함으로써, 양자화 결과를 최적화시킬 수 있다.
앞서 설명된 단계들은 순서와 상관 없이 나열된 것으로서, 액티베이션 값들에 대한 가중 엔트로피 기반 양자화를 수행하기 위해 앞선 단계들이 적절한 순서에 따라 이용될 수 있음은 당업자에게 자명하다.
도 7은 일부 실시예에 따른 웨이트 값들 및 액티베이션 값들에 대해 가중 엔트로피 기반 양자화를 수행한 결과의 예시를 나타내는 도면이다.
도 7을 참조하면, 웨이트 값들(710)은 가중 엔트로피 기반 양자화 방식에 의해 양자화될 수 있다. 웨이트 값들(710)은 벡터 또는 매트릭스 구조를 가질 수 있다. 예를 들어, 도 7에 도시된 바와 같이 웨이트 값들(710)은
Figure 112017050141823-pat00088
행렬 구조를 가질 수 있다.
양자화된 결과(720)를 살펴보면, 0.01, 0.02 및 0.03의 값을 갖는 웨이트 값들이 모두 0으로 양자화되었음을 알 수 있다. 일반적으로 0 근처의 값들에 많은 웨이트 값들이 분포되지만, 0 근처의 값들 각각이 최종 출력에 미치는 영향이 작으므로, 0 근처의 값들에는 적은 수의 양자화 레벨이 할당될 수 있다. 그 결과, 0.01, 0.02 및 0.03의 값을 갖는 웨이트 값들이 모두 동일한 값으로 양자화될 수 있다.
또한, 양자화된 결과(720)을 살펴보면, 0.28, 0.3 및 0.35의 값을 갖는 웨이트 값들이 모두 0.3으로 양자화되었음을 알 수 있다. 일반적인 웨이트 값들의 분포를 고려할 때, 0.28, 0.3 및 0.35의 값을 갖는 웨이트 값들은 전체 웨이트 값들 중 상대적으로 큰 값들에 해당된다. 상대적으로 큰 값들은 최종 출력에 미치는 영향이 크지만 그 빈도가 매우 작으므로, 상대적으로 큰 값들에는 적은 수의 양자화 레벨이 할당될 수 있다. 그 결과, 0.28, 0.3 및 0.35의 값을 갖는 웨이트 값들이 모두 동일한 값으로 양자화될 수 있다.
한편, 양자화된 결과(720)를 살펴보면, 0.08, 0.1 및 0.12의 값을 갖는 웨이트 값들은 각각 0.08, 0.1 및 0.12로 양자화되었다. 일반적인 웨이트 값들의 분포를 고려할 때, 0.08, 0.1 및 0.12의 값을 갖는 웨이트 값들은 양 극단 사이의, 빈도 및 중요성이 적당히 큰 구간에 해당될 수 있다. 빈도 및 중요성이 적당히 큰 구간에 많은 양자화 레벨들이 할당될 때, 양자화에 의한 정확도 손실이 최소화되면서도 웨이트 값들의 처리에 필요한 연산량이 감소될 수 있다. 0.08, 0.1 및 0.12의 값을 갖는 웨이트 값들은 빈도 및 중요성이 적당히 커서 많은 수의 양자화 레벨들이 할당되는 구간에 포함되므로, 각각 0.08, 0.1 및 0.12로 양자화될 수 있다.
또한, 액티베이션 값들(730)은 가중 엔트로피 기반 양자화 방식에 의해 양자화될 수 있다. 액티베이션 값들(730)은 벡터 또는 매트릭스 구조를 가질 수 있다. 예를 들어, 도 7에 도시된 바와 같이 액티베이션 값들(730)은
Figure 112017050141823-pat00089
행렬 구조를 가질 수 있다.
양자화된 결과(740)를 살펴보면, 액티베이션 값들(730)은 0,
Figure 112017050141823-pat00090
,
Figure 112017050141823-pat00091
Figure 112017050141823-pat00092
과 같이 로그 스케일로 양자화될 수 있다. 양자화된 결과(740)는 액티베이션 값들(730)의 분포 및 크기에 기초하여 가중 엔트로피가 최대화되도록 양자화된 것일 수 있다. 뉴럴 네트워크 장치는 양자화된 웨이트 값들 및 양자화된 액티베이션 값들을 이용하여 연산을 수행하므로, full-precision 값들에 대한 연산을 수행하는 경우보다 연산량을 상당히 감소시킬 수 있다.
도 8은 일부 실시예에 따른 뉴럴 네트워크 장치의 동작 방법을 나타내는 흐름도이다.
도 8을 참조하면, 뉴럴 네트워크 장치가 포워드 패스(forward pass) 및 백워드 패스(backward pass)로 동작하는 방법의 예시가 도시되어 있다. 뉴럴 네트워크 장치가 포워드 패스로 동작하는 경우는 실선 화살표로 표시되고, 백워드 패스로 동작하는 경우는 점선 화살표로 표시된다.
한편, 뉴럴 네트워크 장치의 동작은 크게 학습 과정 및 추론 과정으로 나눌 수 있다. 뉴럴 네트워크 장치의 학습 과정은 포워드 패스 및 백워드 패스를 모두 포함하고, 추론 과정은 포워드 패스만을 포함할 수 있다. 뉴럴 네트워크 장치가 학습을 수행할 때, 웨이트 값들 및 액티베이션 값들은 full-precision으로 저장되어 있을 수 있다. 예를 들어, 본래의 웨이트 값들이 32비트 부동 소수점 값을 가질 때, 웨이트 값들은 32비트 부동 소수점 값으로 저장되어 있을 수 있다.
뉴럴 네트워크 장치가 포워드 패스로 동작하는 경우, 뉴럴 네트워크 장치는 Layer i로부터 액티베이션 값들을 획득할 수 있다. Layer i는 뉴럴 네트워크 장치에 포함되는 임의의 레이어일 수 있다. 또한, 뉴럴 네트워크 장치는 이전의 학습 결과에 기초하여 저장된 웨이트 값들을 획득할 수 있다.
단계 810에서, 뉴럴 네트워크 장치는 부동 소수점 값을 갖는 액티베이션 값을 가중 엔트로피 기반 양자화 방식을 이용하여 n-비트 값으로 양자화할 수 있다. 가중 엔트로피 기반 양자화 방식은 앞에서 도 2 내지 도 7을 참조하여 설명하였으므로 자세한 설명은 생략한다. 뉴럴 네트워크 장치는 액티베이션 값을 최적으로 양자화하기 위한 로그 밑과 오프셋을 결정할 수 있고, 결정된 로그 밑과 오프셋을 이용하여 액티베이션 값들을 양자화할 수 있다.
단계 820에서, 뉴럴 네트워크 장치는 부동 소수점 값을 갖는 웨이트 값을 가중 엔트로피 기반 양자화 방식을 이용하여 n-비트 값으로 양자화할 수 있다. 예를 들어, 뉴럴 네트워크 장치는 웨이트 값을 최적으로 양자화하기 위한 클러스터 경계값들을 결정할 수 있고, 결정된 클러스터 경계값들을 이용하여 웨이트 값들을 양자화할 수 있다.
단계 830에서, 뉴럴 네트워크 장치는 양자화된 액티베이션 값 및 웨이트 값에 기초하여 뉴럴 네트워크 연산을 수행할 수 있다. 뉴럴 네트워크 연산은 액티베이션 값들 및 웨이트 값들에 기초한 가중 합계에 활성화 함수를 적용하는 것을 의미할 수 있다. 또한, 뉴럴 네트워크 연산은 활성화 함수의 출력 값을 ReLU에 통과시키는 것을 포함할 수 있다. 뉴럴 네트워크 장치는 양자화된 데이터 값들을 이용하여 연산을 수행하므로, 연산량을 감소시킬 수 있다.
단계 840에서, 뉴럴 네트워크 장치는 뉴럴 네트워크 연산에 의해 획득된 액티베이션 값을 가중 엔트로피 방식을 이용하여 n 비트 값으로 양자화할 수 있다. 양자화된 액티베이션 값은 다음 레이어인 Layer j에 입력될 수 있다.
앞서 설명된 단계들은 뉴럴 네트워크에 포함된 레이어들마다 반복적으로 수행될 수 있다. 입력 데이터가 뉴럴 네트워크에 포함된 복수의 레이어들을 거치면서 앞서 설명된 단계들에 따라 연산되고, 그 연산 결과에 기초하여 입력 데이터로부터 유용한 정보가 추출될 수 있다. 뉴럴 네트워크 장치는 데이터 집합들에 대해 양자화를 수행하고, 양자화된 데이터 집합들을 포워드시킴으로써, 뉴럴 네트워크를 학습시킬 수 있다.
한편, 뉴럴 네트워크 장치가 백워드 패스로 동작하는 경우는 학습 과정에 포함되는 역전파(backpropagation)를 의미할 수 있다. 역전파는 뉴럴 네트워크의 학습 과정에서 발생된 오류를 감소시키기 위해 기존의 웨이트 값들 및 액티베이션 값들을 업데이트하는 과정을 의미할 수 있다. 액티베이션 값들에 대한 역전파가 수행되는 경우, 액티베이션 값들의 양자화된 결과가 업데이트될 수 있다. 따라서, 역전파 과정에서 발생되는 연산량 또한 감소될 수 있다.
다만, 웨이트 값들은 액티베이션 값들보다 변화량이 상대적으로 작으므로, 양자화된 결과를 업데이트시키는 경우 학습 과정에서 발생된 오류가 감소되지 않을 수 있다. 따라서, 웨이트 값들에 대한 역전파가 수행되는 경우에는 양자화된 결과가 아닌 full precision으로 저장되어 있는 웨이트 값들의 원본이 직접 업데이트 될 수 있다.
뉴럴 네트워크 장치는 학습된 뉴럴 네트워크에 양자화된 데이터 집합들을 포워드시킴으로써, 추론을 수행할 수 있다. 한편, 추론을 수행하는 경우 웨이트 값들의 분포가 변하지 않으므로, 웨이트 값들은 마지막 학습 단계(phase)에서 결정된 최적의 클러스터들을 바탕으로 양자화될 수 있다. 액티베이션 값들의 경우에도 입력 데이터에 따라 분포가 계속 변화되기는 하나, 매 추론시마다 새롭게 최적점을 찾는 것은 비용이 너무 높을 수 있다. 따라서, 액티베이션 값들 또한 마지막 학습 단계에서 결정된 최적의 로그 밑 및 오프셋을 이용하여 양자화될 수 있다. 다만, 이는 예시에 불과할 뿐, 매 추론시마다 새롭게 최적점을 찾을 수도 있다.
도 9는 일부 실시예에 따른 가중 엔트로피 기반 양자화가 적용된 뉴럴 네트워크의 시뮬레이션 결과를 나타내는 도면이다.
도 9를 참조하면, 가중 엔트로피 기반 양자화 방식에 의해 양자화된 CNN들의 시뮬레이션 결과가 도시되어 있다. CNN들은 AlexNet, GoogLeNet, ResNet50 및 ResNet101를 포함할 수 있다. 도 9에 도시된 시뮬레이션 결과에서 (x,y)의 표기(notation)는 양자화 결과에 따른 웨이트 x의 비트길이 및 액티베이션 y의 비트길이를 나타낼 수 있다.
가중 엔트로피 기반 양자화 방식에 의해 양자화된 AlexNet의 시뮬레이션 결과(910)을 살펴보면, 1%의 top-5 정확도 손실 제한을 만족하면서도 가장 적은 수의 비트들을 이용하는 최선의 양자화 구조들은 (3,6), (4,4), (4,5) 및 (4,6)임을 알 수 있다. 예를 들어, (4,4)는 top-5 정확도에 대해 1% 보다 적은 손실을 가지면서 웨이트 값들 및 액티베이션 값들의 비트길이를 모두 4 비트로 감소시킨 것을 의미한다. 본 개시의 가중 엔트로피 양자화 방식에 따르면, 웨이트 값들 및 액티베이션 값들의 비트길이가 모두 4 비트로 감소됨에 따라 연산량이 상당히 감소되면서도 정확도 손실이 크지 않을 수 있다.
한편, 가중 엔트로피 기반 양자화 방식에 의해 양자화된 GoogLeNet의 시뮬레이션 결과(920)를 살펴보면, 1% 정확도 손실 제한 하에서, 웨이트 값들 및 액티베이션 값들이 단지 4-5 비트들만으로 양자화되었음을 알 수 있다. 또한, 가중 엔트로피 기반 양자화 방식에 의해 양자화된 ResNet50 및 ResNet101의 시뮬레이션 결과(930)를 살펴보면, 50 및 101 개의 레이어들을 갖는 뉴럴 네트워크에서 웨이트 값들이 약 3비트로, 액티베이션 값들이 약 6비트로 양자화되더라도 1% 정확도 손실 제한이 만족될 수 있음을 알 수 있다.
결론적으로, 도 9에 도시된 시뮬레이션 결과를 살펴보면, 본 개시에 따른 가중 엔트로피 양자화 방식은 full-precision 데이터를 그대로 이용하는 방식과 비교하여 정확도 손실이 크지 않으면서도 모델 크기 및 연산량의 상당한 감소를 달성할 수 있음을 알 수 있다.
도 10은 일부 실시예에 따른 전자 시스템의 구성을 나타내는 블록도이다.
본 개시의 실시예에 따른 전자 시스템(100)은 뉴럴 네트워크를 기초로 입력 데이터를 실시간으로 분석하여 유효한 정보를 추출하고, 추출된 정보를 기초로 상황 판단을 하거나 또는 전자 시스템(100)이 탑재되는 전자 장치의 구성들을 제어할 수 있다. 예컨대 전자 시스템(100)은 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 등과 같은 로봇 장치, 스마트 TV, 스마트 폰, 의료 장치, 모바일 장치, 영상 표시 장치, 계측 장치, IoT(Internet of Things) 장치 등에 적용될 수 있으며, 이 외에도 다양한 종류의 전자 장치 중 하나에 탑재될 수 있다.
도 10을 참조하면, 전자 시스템(100)은 CPU(Central Processing Unit)(1010), RAM(Random Access memory)(1020), 뉴럴 네트워크 장치(1030), 메모리(1040), 센서 모듈(1050) 및 통신 모듈(1060)을 포함할 수 있다. 전자 시스템(100)은 입출력 모듈, 보안 모듈, 전력 제어 장치 등을 더 포함할 수 있다. 일부 실시예에 있어서, 전자 시스템(100)의 구성들(CPU(1010), RAM(1020), 뉴럴 네트워크 장치(1030), 메모리(1040), 센서 모듈(1050) 및 통신 모듈(1060)) 중 일부는 하나의 반도체 칩에 탑재될 수 있다.
CPU(1010)는 전자 시스템(100)의 전반적인 동작을 제어한다. CPU(1010)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. CPU(1010)는 메모리(1040)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 일 실시예에 있어서, CPU(1010)는 메모리(1040)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(1030)의 기능을 제어할 수 있다.
RAM(1020)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대 메모리(1040)에 저장된 프로그램들 및/또는 데이터는 CPU(1010)의 제어 또는 부팅 코드에 따라 RAM(1020)에 일시적으로 저장될 수 있다. RAM(1020)은 DRAM(Dynamic RAM) 또는 SRAM(Static RAM) 등의 메모리로 구현될 수 있다.
뉴럴 네트워크 장치(1030)는 수신되는 입력 데이터를 기초로 뉴럴 네트워크 의 연산을 수행하고, 수행 결과를 기초로 정보 신호를 생성할 수 있다. 뉴럴 네트워크는 CNN, RNN, Deep Belief Networks, Restricted Boltzman Machines 등을 포함할 수 있으나 이에 제한되지 않는다.
정보 신호는 음성 인식 신호, 사물 인식 신호, 영상 인식 신호, 생체 정보 인식 신호 등과 같은 다양한 종류의 인식 신호 중 하나를 포함할 수 있다. 예를 들어, 뉴럴 네트워크 장치(1030)는 비디오 스트림에 포함되는 프레임 데이터를 입력 데이터로서 수신하고, 프레임 데이터로부터 프레임 데이터가 나타내는 이미지에 포함된 사물에 대한 인식 신호를 생성할 수 있다. 그러나, 이에 제한되는 것은 아니며, 전자 시스템(100)이 탑재된 전자 장치의 종류 또는 기능에 따라 뉴럴 네트워크 장치(1030)는 다양한 종류의 입력 데이터를 수신할 수 있고, 입력 데이터에 따른 인식 신호를 생성할 수 있다. 도 11을 참조하여 뉴럴 네트워크 장치(1030)를 보다 상세히 설명하기로 한다.
메모리(1040)는 데이터를 저장하기 위한 저장 장소로서, OS(Operating System), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다. 실시예에 있어서, 메모리(1040)는 뉴럴 네트워크 장치(1030)의 연산 수행 과정에서 생성되는 중간 결과들을 저장할 수 있다. 또한, 메모리(1040)는 뉴럴 네트워크 장치(1030)에서 이용되는 각종 파라미터들을 저장할 수 있다.
메모리(1040)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리(1040)는 휘발성 메모리(volatile memory) 또는 불휘발성 메모리(nonvolatile memory) 중 적어도 하나를 포함할 수 있다. 불휘발성 메모리는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등을 포함한다. 휘발성 메모리는 DRAM (Dynamic RAM), SRAM (Static RAM), SDRAM (Synchronous DRAM), PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FeRAM (Ferroelectric RAM) 등을 포함한다. 실시예에 있어서, 메모리(1040)는 HDD(Hard Disk Drive), SSD(Solid State Drive), CF(compact flash), SD(secure digital), Micro-SD(micro secure digital), Mini-SD(mini secure digital), xD(extreme digital) 또는 Memory Stick 중 적어도 하나를 포함할 수 있다.
센서 모듈(1050)은 전자 시스템(100)이 탑재되는 전자 장치 주변의 정보를 수집할 수 있다. 센서 모듈(1050)은 전자 장치의 외부로부터 신호(예컨대 영상 신호, 음성 신호, 자기 신호, 생체 신호, 터치 신호 등)를 센싱 또는 수신하고, 센싱 또는 수신된 신호를 데이터로 변환할 수 있다. 이를 위해, 센서 모듈(1050)은 센싱 장치, 예컨대 마이크, 촬상 장치, 이미지 센서, 라이더(LIDAR; light detection and ranging) 센서, 초음파 센서, 적외선 센서, 바이오 센서, 및 터치 센서 등 다양한 종류의 센싱 장치 중 적어도 하나를 포함할 수 있다.
센서 모듈(1050)은 변환된 데이터를 뉴럴 네트워크 장치(1030)에 입력 데이터로서 제공할 수 있다. 예를 들어, 센서 모듈(1050)은 이미지 센서를 포함할 수 있으며, 전자 장치의 외부 환경을 촬영하여 비디오 스트림을 생성하고, 비디오 스트림의 연속하는 데이터 프레임을 뉴럴 네트워크 장치(1030)에 입력 데이터로서 순서대로 제공할 수 있다. 그러나 이에 제한되는 것은 아니며 센서 모듈(1050)은 다양한 종류의 데이터를 뉴럴 네트워크 장치(1030)에 제공할 수 있다.
통신 모듈(1060)은 외부 장치와 통신할 수 있는 다양한 유선 또는 무선 인터페이스를 구비할 수 있다. 예컨대 통신 모듈(1060)은 유선 근거리통신망(Local Area Network; LAN), Wi-fi(Wireless Fidelity)와 같은 무선 근거리 통신망 (Wireless Local Area Network; WLAN), 블루투스(Bluetooth)와 같은 무선 개인 통신망(Wireless Personal Area Network; WPAN), 무선 USB (Wireless Universal Serial Bus), Zigbee, NFC (Near Field Communication), RFID (Radio-frequency identification), PLC(Power Line communication), 또는 3G (3rd Generation), 4G (4th Generation), LTE (Long Term Evolution) 등 이동 통신망(mobile cellular network)에 접속 가능한 통신 인터페이스 등을 포함할 수 있다.
실시 예에 있어서, 통신 모듈(1060)은 외부 서버로부터 데이터를 수신할 수 있다. 외부 서버는 방대한 양의 학습 데이터를 기초로 트레이닝을 수행하고, 트레이닝된 웨이트 값들을 포함하는 웨이트 맵 또는 웨이트 리스트를 전자 시스템(100)에 제공할 수 있다. 수신된 웨이트 맵 또는 웨이트 리스트는 메모리(1040)에 저장될 수 있다.
도 11은 일부 실시예에 따른 뉴럴 네트워크 장치의 구성을 나타내는 블록도이다.
도 11에 도시된 바와 같이, 뉴럴 네트워크를 실시하는 뉴럴 네트워크 장치(1030)는 프로세싱 엘리먼트들(1032) 및 메모리(1034)를 포함할 수 있다. 도 11에 도시된 뉴럴 네트워크 장치(1030)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴럴 네트워크 장치(1030)에 도 11에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당업자에게 자명하다.
한편, 뉴럴 네트워크 장치(1030)는 도 3 내지 도 8의 뉴럴 네트워크 장치에 대응될 수 있다. 따라서, 가중 엔트로피 기반 양자화 방식을 이용하여 최적의 양자화를 수행하기 위한 도 3 내지 도 8의 방법들은 뉴럴 네트워크 장치(1030)에도 적용될 수 있다.
뉴럴 네트워크 장치(1030)는 가전 제품, 모바일 컴퓨팅 디바이스 및 서버 중 적어도 하나에 포함되거나, 가전 제품, 모바일 컴퓨팅 디바이스 및 서버 중 적어도 하나에 유, 무선으로 연결되도록 구현될 수 있다. 또한, 뉴럴 네트워크 장치(1030)는 디바이스와 서버의 결합으로 구현될 수도 있다. 사용자의 입력을 수신하는 디바이스와 뉴럴 네트워크를 학습시키는 서버가 별도로 존재하여, 디바이스와 서버 간의 통신을 통해 추론이 수행될 수 있다. 물론 단일의 디바이스에서 추론이 수행될 수도 있으며, 상기 예시에 제한되지 않는다.
프로세싱 엘리먼트들(1032) 각각은 하나 또는 복수 개의 프로세서에 의하여 구현될 수 있다. 예를 들어, 프로세싱 엘리먼트들(1032) 각각은 다수의 논리 게이트들의 어레이로 구현될 수 있고, 범용적인 마이크로 프로세서와 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다. 예를 들어, 프로세싱 엘리먼트들(1032) 각각은 CPU, GPU(Graphic processing unit), 하드웨어 가속기 등일 수 있다. 프로세싱 엘리먼트들(1032) 각각은 웨이트 값들의 집합 및 액티베이션 값들의 집합을 저장하는 전용 메모리를 포함할 수 있다.
프로세싱 엘리먼트들(1032)은 뉴럴 네트워크 장치(1030)를 제어하기 위한 전반적인 역할을 할 수 있다. 예를 들어, 프로세싱 엘리먼트들(1032)은 뉴럴 네트워크 장치(1030) 내의 메모리(1034)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(1030)를 전반적으로 제어할 수 있다. 또한, 프로세싱 엘리먼트들(1032) 각각은 메모리(1034)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(1030)의 기능을 병렬적으로 수행할 수 있다.
프로세싱 엘리먼트들(1032) 각각은 뉴럴 네트워크의 레이어들에 포함된 노드들 각각의 기능을 수행할 수 있다. 예를 들어, 프로세싱 엘리먼트들(1032) 각각은 액티베이션 값들 및 웨이트 값들을 이용하여 뉴럴 네트워크 연산 또는 매트릭스 연산을 수행할 수 있다. 또한, 프로세싱 엘리먼트들(1032) 각각은 도 3 내지 도 8에 기재된 뉴럴 네트워크 장치(1030)의 기능을 수행할 수 있다.
구체적으로, 프로세싱 엘리먼트들(1032)은 뉴럴 네트워크에 포함된 레이어에서 처리되는 부동 소수점 데이터의 집합을 획득할 수 있다. 부동 소수점 데이터의 집합은 레이어에서 처리되는 액티베이션 값들의 집합 및 레이어에서 처리되는 웨이트 값들의 집합 중 적어도 하나를 포함할 수 있다.
프로세싱 엘리먼트들(1032)은 부동 소수점 데이터의 집합에 포함된 데이터 값들에 기초한 가중 엔트로피를 결정할 수 있다. 가중 엔트로피는 부동 소수점 데이터의 집합에 포함된 데이터 값들의 분포에 데이터 값들의 크기에 기초한 가중 인자를 적용함으로써 결정될 수 있다.
부동 소수점 데이터의 집합이 웨이트 값들의 집합인 경우, 프로세싱 엘리먼트들(1032)은 웨이트 값들의 집합을 복수의 클러스터들로 그루핑할 수 있다. 웨이트 값들을 N 개의 양자화 레벨들로 분류해야 하는 경우 프로세싱 엘리먼트들(1032)은 웨이트 값들 각각을 크기에 따라 분류하여 N 개 중에 하나의 클러스터로 매핑할 수 있다.
프로세싱 엘리먼트들(1032)은 그루핑된 클러스터들 각각에 포함되는 웨이트 값들의 개수를 웨이트 값들의 집합에 포함되는 웨이트 값들의 총 개수로 나눔으로써, 그루핑된 클러스터들 각각의 상대 빈도를 결정할 수 있다.
또한, 프로세싱 엘리먼트들(1032)은 그루핑된 클러스터들 각각에 포함되는 웨이트 값들의 크기에 기초하여 그루핑된 클러스터들 각각의 대표 중요도를 결정할 수 있다. 예를 들어, 프로세싱 엘리먼트들(1032)은 그루핑된 클러스터들 각각에 포함되는 웨이트 값들의 크기에 기초하여 웨이트 값들에 대응되는 중요도들을 결정할 수 있고, 결정된 중요도들에 기초하여 그루핑된 클러스터들 각각의 대표 중요도를 결정할 수 있다.
한편, 프로세싱 엘리먼트들(1032)은 그루핑된 클러스터들 각각의 대표 중요도에 대응되는 웨이트 값을 그루핑된 클러스터들 각각의 대표 웨이트 값으로 결정할 수 있고, 그루핑된 클러스터들 각각에 포함되는 웨이트 값들을 그루핑된 클러스터들 각각의 대표 웨이트 값으로 양자화할 수 있다.
프로세싱 엘리먼트들(1032)은 상대 빈도 및 대표 중요도에 기초하여 가중 엔트로피를 결정할 수 있다. 프로세싱 엘리먼트들(1032)은 그루핑된 클러스터들 각각의 상대 빈도 및 대표 중요도에 기초하여 그루핑된 클러스터들을 포함하는 웨이트 값들의 집합의 가중 엔트로피를 결정할 수 있다.
앞서 설명한 바와 같이, 프로세싱 엘리먼트들(1032)은 클러스터링 기반 양자화 방식에 기초하여 웨이트 값들의 집합의 가중 엔트로피를 결정할 수 있다. 그러나, 웨이트 값들이 학습 후에 고정되는 것과는 달리, 액티베이션 값들은 추론 과정에서 입력 데이터에 따라 그 값이 유동적으로 변하므로, 클러스터링 기반 양자화 방식에 기초하여 가중 엔트로피를 결정하기 어렵다. 따라서, 액티베이션 값들은 클러스터링 기반 양자화 방식이 아닌 로그 양자화 방식이 적용되어야 하고, 부동 소수점 데이터의 집합이 액티베이션 값들의 집합인 경우, 양자화 레벨들은 로그 데이터 표현 기반 양자화 방식에 의해 할당된 것일 수 있다.
프로세싱 엘리먼트들(1032)은 양자화 레벨들 각각에 포함되는 액티베이션 값들의 개수를 액티베이션 값들의 집합에 포함되는 액티베이션 값들의 총 개수로 나눔으로써 양자화 레벨들 각각의 상대 빈도를 결정할 수 있다. 또한, 프로세싱 엘리먼트들(1032)은 양자화 레벨들 각각에 대응되는 데이터 값을 양자화 레벨들 각각의 대표 중요도로 결정할 수 있다. 프로세싱 엘리먼트들(1032)은 상대 빈도 및 대표 중요도에 기초하여 가중 엔트로피를 결정할 수 있다.
프로세싱 엘리먼트들(1032)은 가중 엔트로피에 기초하여 데이터 값들에 할당된 양자화 레벨들을 조정할 수 있다. 부동 소수점 데이터 집합의 가중 엔트로피가 최대화되도록 부동 소수점 데이터 집합에 포함되는 데이터 값들이 양자화되는 경우, 양 극단 사이의, 빈도 및 중요성이 적당히 큰 구간에 많은 양자화 레벨들이 할당되므로, 양자화에 의한 정확도 손실이 최소화되면서도 데이터 값들의 처리에 필요한 연산량이 감소될 수 있다. 따라서, 프로세싱 엘리먼트들(1032)은 가중 엔트로피가 최대화되도록 데이터 값들에 할당된 양자화 레벨들을 조정할 수 있다.
예를 들어, 부동 소수점 데이터의 집합이 웨이트 값들의 집합인 경우, 프로세싱 엘리먼트들(1032)은 가중 엔트로피를 증가시키는 방향으로 클러스터들 각각의 경계값들을 조정함으로써, 데이터 값들에 할당된 양자화 레벨들을 조정할 수 있다.
부동 소수점 데이터의 집합이 액티베이션 값들의 집합인 경우, 프로세싱 엘리먼트들(1032)은 가중 엔트로피를 증가시키는 방향으로 양자화 레벨들 중 최초의 양자화 레벨에 대응되는 값 및 양자화 레벨들 간의 간격의 크기를 조정함으로써, 데이터 값들에 할당된 양자화 레벨들을 조정할 수 있다.
프로세싱 엘리먼트들(1032)은 조정된 양자화 레벨들에 따라 부동 소수점 데이터의 집합에 포함된 데이터 값들을 양자화할 수 있다. 앞서 설명한 바와 같이, 프로세싱 엘리먼트들(1032)은 가중 엔트로피가 최대화되도록 데이터 값들에 할당된 양자화 레벨들을 조정하므로, 조정된 양자화 레벨들에 따라 부동 소수점 데이터의 집합에 포함된 데이터 값들을 양자화되는 경우 정확도 손실이 최소화되면서도 데이터 값들의 처리에 필요한 연산량이 감소될 수 있다.
한편, 프로세싱 엘리먼트들(1032)은 앞서 설명한 단계들을 뉴럴 네트워크에 포함된 복수의 레이어들 각각에 대해 반복하여 수행함으로써, 복수의 레이어들 각각에 최적화된 양자화 레벨들을 할당할 수 있다. 앞서 설명한 단계들이 뉴럴 네트워크에 포함된 복수의 레이어들 각각에 대해 반복하여 수행된 경우, 조정된 양자화 레벨들은 복수의 레이어들 각각에 최적화되도록 할당된 것일 수 있다.
또한, 프로세싱 엘리먼트들(1032)은 양자화된 데이터 값들에 기초하여 뉴럴 네트워크를 학습시키고, 학습된 뉴럴 네트워크를 이용하여 입력 데이터로부터 출력 데이터를 추론할 수 있다. 다만, 프로세싱 엘리먼트들(1032)은 양자화된 데이터 값들에 기초하여 뉴럴 네트워크를 학습시키는 과정만을 수행할 수도 있고, 학습된 뉴럴 네트워크를 수신하여 양자화된 입력 데이터로부터 출력 데이터를 추론하는 과정만을 수행할 수도 있다.
메모리(1034)는 뉴럴 네트워크 장치(1030) 내에서 처리되는 각종 데이터들을 저장하는 하드웨어로서, 예를 들어, 메모리(1034)는 뉴럴 네트워크 장치(1030)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 메모리(1034)는 뉴럴 네트워크 장치(1030)에 의해 구동될 애플리케이션들, 드라이버들 등을 저장할 수 있다. 메모리(1034)는 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), 또는 플래시 메모리를 포함할 수 있다.
또한, 메모리(1034)는 뉴럴 네트워크 장치(1030)에 포함된 프로세싱 엘리먼트들(1032)이 공유하는 내장 메모리 또는 프로세싱 엘리먼트들(1032) 각각을 지원하는 복수의 내장 메모리를 더 포함할 수 있다.
한편, 뉴럴 네트워크 장치(1030)의 동작 방법은 그 방법을 실행하는 명령어들을 포함하는 하나 이상의 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체에 기록될 수 있다. 컴퓨터로 읽을 수 있는 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상에서 실시예들에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속한다.

Claims (20)

  1. 뉴럴 네트워크에서 데이터를 양자화하는 방법에 있어서,
    상기 뉴럴 네트워크에 포함된 레이어에서 처리되는 부동 소수점 데이터의 집합을 획득하는 단계;
    상기 부동 소수점 데이터의 집합에 포함된 데이터 값들에 기초한 가중 엔트로피(weighted entropy)를 결정하는 단계;
    상기 가중 엔트로피에 기초하여 상기 데이터 값들에 할당된 양자화 레벨들을 조정하는 단계; 및
    상기 조정된 양자화 레벨들에 따라 상기 부동 소수점 데이터의 집합에 포함된 상기 데이터 값들을 양자화하는 단계를 포함하고,
    상기 부동 소수점 데이터의 집합이 액티베이션(activation) 값들의 집합인 경우, 엔트로피 기반의 로그 데이터 표현(logarithm data representation) 기반 양자화 방식을 이용하여 상기 액티베이션 값들에 대응되는 데이터 값들에 할당된 액티베이션 양자화 레벨들은 액티베이션 가중 엔트로피에 의해 조정되고,
    상기 액티베이션 값들의 집합에 대응되는 상기 데이터 값들은 상기 조정된 양자화 레벨들에 따라 양자화되는 것인, 방법.
  2. 제 1항에 있어서,
    상기 가중 엔트로피는 상기 부동 소수점 데이터의 집합에 포함된 상기 데이터 값들의 분포에 상기 데이터 값들의 크기에 기초한 가중 인자(weighting factor)를 적용함으로써 결정되는 것인, 방법.
  3. 제 1항에 있어서,
    상기 부동 소수점 데이터의 집합은 상기 레이어에서 처리되는 상기 액티베이션 값들의 집합 및 상기 레이어에서 처리되는 웨이트(weight) 값들의 집합 중 적어도 하나를 포함하는 것인, 방법.
  4. 제 1항에 있어서,
    상기 부동 소수점 데이터의 집합이 웨이트 값들의 집합인 경우 상기 가중 엔트로피를 결정하는 단계는,
    상기 웨이트 값들의 집합을 복수의 클러스터들로 그루핑하는 단계;
    상기 그루핑된 클러스터들 각각에 포함되는 웨이트 값들의 개수를 상기 웨이트 값들의 집합에 포함되는 웨이트 값들의 총 개수로 나눔으로써, 상기 그루핑된 클러스터들 각각의 상대 빈도(relative frequency)를 결정하는 단계;
    상기 그루핑된 클러스터들 각각에 포함되는 상기 웨이트 값들의 크기에 기초하여 상기 그루핑된 클러스터들 각각의 대표 중요도(representative importance)를 결정하는 단계; 및
    상기 상대 빈도 및 상기 대표 중요도에 기초하여 웨이트 가중 엔트로피를 결정하는 단계를 포함하는 것인, 방법.
  5. 제 4항에 있어서,
    상기 양자화하는 단계는,
    상기 그루핑된 클러스터들 각각의 상기 대표 중요도에 대응되는 웨이트 값을 상기 그루핑된 클러스터들 각각의 대표 웨이트 값으로 결정하는 단계; 및
    상기 그루핑된 클러스터들 각각에 포함되는 상기 웨이트 값들을 상기 그루핑된 클러스터들 각각의 상기 대표 웨이트 값으로 양자화하는 단계를 포함하는 것인, 방법.
  6. 제 4항에 있어서,
    상기 조정하는 단계는,
    상기 가중 엔트로피를 증가시키는 방향으로 상기 클러스터들 각각의 경계값들을 조정함으로써, 상기 데이터 값들에 할당된 양자화 레벨들을 조정하는 단계를 포함하는 것인, 방법.
  7. 제 1항에 있어서,
    상기 부동 소수점 데이터의 집합이 상기 액티베이션 값들의 집합인 경우 상기 가중 엔트로피를 결정하는 단계는,
    상기 양자화 레벨들 각각에 포함되는 액티베이션 값들의 개수를 상기 액티베이션 값들의 집합에 포함되는 액티베이션 값들의 총 개수로 나눔으로써 상기 양자화 레벨들 각각의 상대 빈도를 결정하는 단계;
    상기 양자화 레벨들 각각에 대응되는 데이터 값을 상기 양자화 레벨들 각각의 대표 중요도로 결정하는 단계; 및
    상기 상대 빈도 및 상기 대표 중요도에 기초하여 상기 액티베이션 가중 엔트로피를 결정하는 단계를 포함하는 것인, 방법.
  8. 제 7항에 있어서,
    상기 조정하는 단계는,
    상기 가중 엔트로피를 증가시키는 방향으로 상기 양자화 레벨들 중 최초의 양자화 레벨에 대응되는 값 및 상기 양자화 레벨들 간의 간격의 크기를 조정함으로써, 상기 데이터 값들에 할당된 양자화 레벨들을 조정하는 단계를 포함하는 것인, 방법.
  9. 제 1항에 있어서,
    상기 방법이 상기 뉴럴 네트워크에 포함된 복수의 레이어들 각각에 대해 반복하여 수행된 경우, 상기 조정된 양자화 레벨들은 상기 복수의 레이어들 각각에 최적화되도록 할당된 것인, 방법.
  10. 제 1항에 있어서,
    상기 양자화된 데이터 값들에 기초하여 상기 뉴럴 네트워크를 학습(train)시키는 단계; 및
    상기 학습된 뉴럴 네트워크를 이용하여 입력 데이터로부터 출력 데이터를 추론(inference)하는 단계를 더 포함하는 것인, 방법.
  11. 제 1항 내지 제 10항 중 어느 한 항의 방법을 실행하는 명령어들을 포함하는 하나 이상의 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체.
  12. 뉴럴 네트워크를 실시(implement)하는 장치에 있어서,
    적어도 하나의 프로그램이 저장된 메모리; 및
    상기 적어도 하나의 프로그램을 실행함으로써 상기 뉴럴 네트워크에서 데이터를 양자화하는 프로세서를 포함하고,
    상기 프로세서는,
    상기 뉴럴 네트워크에 포함된 레이어에서 처리되는 부동 소수점 데이터의 집합을 획득하고,
    상기 부동 소수점 데이터의 집합에 포함된 데이터 값들에 기초한 가중 엔트로피를 결정하며,
    상기 가중 엔트로피에 기초하여 상기 데이터 값들에 할당된 양자화 레벨들을 조정하고,
    상기 조정된 양자화 레벨들에 따라 상기 부동 소수점 데이터의 집합에 포함된 상기 데이터 값들을 양자화하고,
    상기 부동 소수점 데이터의 집합이 액티베이션(activation) 값들의 집합인 경우, 엔트로피 기반의 로그 데이터 표현(logarithm data representation) 기반 양자화 방식을 이용하여 상기 액티베이션 값들에 대응되는 데이터 값들에 할당된 액티베이션 양자화 레벨들은 액티베이션 가중 엔트로피에 의해 조정되고,
    상기 액티베이션 값들의 집합에 대응되는 상기 데이터 값들은 상기 조정된 양자화 레벨들에 따라 양자화되는, 장치.
  13. 제 12항에 있어서,
    상기 가중 엔트로피는 상기 부동 소수점 데이터의 집합에 포함된 상기 데이터 값들의 분포에 상기 데이터 값들의 크기에 기초한 가중 인자를 적용함으로써 결정되는 것인, 장치.
  14. 제 12항에 있어서,
    상기 부동 소수점 데이터의 집합은 상기 레이어에서 처리되는 상기 액티베이션 값들의 집합 및 상기 레이어에서 처리되는 웨이트 값들의 집합 중 적어도 하나를 포함하는 것인, 장치.
  15. 제 12항에 있어서,
    상기 부동 소수점 데이터의 집합이 웨이트 값들의 집합인 경우 상기 프로세서는,
    상기 웨이트 값들의 집합을 복수의 클러스터들로 그루핑하고,
    상기 그루핑된 클러스터들 각각에 포함되는 웨이트 값들의 개수를 상기 웨이트 값들의 집합에 포함되는 웨이트 값들의 총 개수로 나눔으로써, 상기 그루핑된 클러스터들 각각의 상대 빈도를 결정하며,
    상기 그루핑된 클러스터들 각각에 포함되는 상기 웨이트 값들의 크기에 기초하여 상기 그루핑된 클러스터들 각각의 대표 중요도를 결정하고,
    상기 상대 빈도 및 상기 대표 중요도에 기초하여 웨이트 가중 엔트로피를 결정하는 것인, 장치.
  16. 제 15항에 있어서,
    상기 프로세서는,
    상기 그루핑된 클러스터들 각각의 상기 대표 중요도에 대응되는 웨이트 값을 상기 그루핑된 클러스터들 각각의 대표 웨이트 값으로 결정하고,
    상기 그루핑된 클러스터들 각각에 포함되는 상기 웨이트 값들을 상기 그루핑된 클러스터들 각각의 상기 대표 웨이트 값으로 양자화하는 것인, 장치.
  17. 제 15항에 있어서,
    상기 프로세서는,
    상기 가중 엔트로피를 증가시키는 방향으로 상기 클러스터들 각각의 경계값들을 조정함으로써, 상기 데이터 값들에 할당된 양자화 레벨들을 조정하는 것인, 장치.
  18. 제 12항에 있어서,
    상기 부동 소수점 데이터의 집합이 상기 액티베이션 값들의 집합인 경우 상기 프로세서는,
    상기 양자화 레벨들 각각에 포함되는 액티베이션 값들의 개수를 상기 액티베이션 값들의 집합에 포함되는 액티베이션 값들의 총 개수로 나눔으로써 상기 양자화 레벨들 각각의 상대 빈도를 결정하고,
    상기 양자화 레벨들 각각에 대응되는 데이터 값을 상기 양자화 레벨들 각각의 대표 중요도로 결정하며,
    상기 상대 빈도 및 상기 대표 중요도에 기초하여 상기 액티베이션 가중 엔트로피를 결정하는 것인, 장치.
  19. 제 18항에 있어서,
    상기 프로세서는,
    상기 가중 엔트로피를 증가시키는 방향으로 상기 양자화 레벨들 중 최초의 양자화 레벨에 대응되는 값 및 상기 양자화 레벨들 간의 간격의 크기를 조정함으로써, 상기 데이터 값들에 할당된 양자화 레벨들을 조정하는 것인, 장치.
  20. 제 12항에 있어서,
    상기 프로세서의 동작들이 상기 뉴럴 네트워크에 포함된 복수의 레이어들 각각에 대해 반복하여 수행된 경우, 상기 조정된 양자화 레벨들은 상기 복수의 레이어들 각각에 최적화되도록 할당된 것인, 장치.
KR1020170064884A 2017-05-25 2017-05-25 뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치 KR102526650B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170064884A KR102526650B1 (ko) 2017-05-25 2017-05-25 뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치
US15/880,690 US11250320B2 (en) 2017-05-25 2018-01-26 Neural network method and apparatus
US17/551,572 US20220108178A1 (en) 2017-05-25 2021-12-15 Neural network method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170064884A KR102526650B1 (ko) 2017-05-25 2017-05-25 뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20180129211A KR20180129211A (ko) 2018-12-05
KR102526650B1 true KR102526650B1 (ko) 2023-04-27

Family

ID=64400806

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170064884A KR102526650B1 (ko) 2017-05-25 2017-05-25 뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치

Country Status (2)

Country Link
US (2) US11250320B2 (ko)
KR (1) KR102526650B1 (ko)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
US11195096B2 (en) * 2017-10-24 2021-12-07 International Business Machines Corporation Facilitating neural network efficiency
CN108256644B (zh) * 2018-01-05 2021-06-22 上海兆芯集成电路有限公司 微处理器电路以及执行神经网络运算的方法
US10769261B2 (en) * 2018-05-09 2020-09-08 Futurewei Technologies, Inc. User image verification
US11551077B2 (en) * 2018-06-13 2023-01-10 International Business Machines Corporation Statistics-aware weight quantization
JP7045947B2 (ja) * 2018-07-05 2022-04-01 株式会社日立製作所 ニューラルネットワークの学習装置および学習方法
US10922139B2 (en) * 2018-10-11 2021-02-16 Visa International Service Association System, method, and computer program product for processing large data sets by balancing entropy between distributed data segments
US10963332B2 (en) * 2018-12-17 2021-03-30 Western Digital Technologies, Inc. Data storage systems and methods for autonomously adapting data storage system performance, capacity and/or operational requirements
US20200210840A1 (en) * 2018-12-31 2020-07-02 Microsoft Technology Licensing, Llc Adjusting precision and topology parameters for neural network training based on a performance metric
CN109856544B (zh) * 2019-01-24 2022-04-19 努比亚技术有限公司 终端电量使用时间分析方法、终端和计算机可读存储介质
US11625583B2 (en) * 2019-02-13 2023-04-11 Mipsology SAS Quality monitoring and hidden quantization in artificial neural network computations
US20200264876A1 (en) * 2019-02-14 2020-08-20 Microsoft Technology Licensing, Llc Adjusting activation compression for neural network training
KR102152374B1 (ko) * 2019-02-25 2020-09-07 주식회사 딥엑스 인공신경망의 비트 양자화 방법 및 시스템
US11263513B2 (en) 2019-02-25 2022-03-01 Deepx Co., Ltd. Method and system for bit quantization of artificial neural network
WO2020211783A1 (zh) * 2019-04-16 2020-10-22 上海寒武纪信息科技有限公司 运算数据的量化频率调整方法及相关产品
WO2020240687A1 (ja) * 2019-05-28 2020-12-03 株式会社ソシオネクスト 演算処理方法、演算処理装置及びプログラム
KR20200139909A (ko) 2019-06-05 2020-12-15 삼성전자주식회사 전자 장치 및 그의 연산 수행 방법
CN112400176A (zh) * 2019-06-12 2021-02-23 上海寒武纪信息科技有限公司 一种神经网络的量化参数确定方法及相关产品
KR102356126B1 (ko) * 2019-09-02 2022-01-27 한국과학기술원 뉴럴 네트워크를 이용한 플래시 메모리의 읽기 기준 전압 추정 방법 및 그 장치
US11995555B1 (en) 2019-12-17 2024-05-28 Perceive Corporation Training a neural network with quantized weights
US11861467B2 (en) * 2020-03-05 2024-01-02 Qualcomm Incorporated Adaptive quantization for execution of machine learning models
US11645538B2 (en) * 2020-04-17 2023-05-09 Applied Engineering Concepts, Inc. Physical layer authentication of electronic communication networks
KR102657904B1 (ko) * 2020-05-12 2024-04-17 한국전자통신연구원 뉴럴 네트워크에서의 다중 레벨 단계적 양자화 방법 및 장치
CN113762452B (zh) * 2020-06-04 2024-01-02 合肥君正科技有限公司 一种量化prelu激活函数的方法
KR102539876B1 (ko) 2020-11-30 2023-06-02 경희대학교 산학협력단 인공지능 기술을 이용한 적층형 저항 변화 메모리 소자의 계층 최적화 시스템 및 그 방법
KR102622420B1 (ko) * 2022-12-28 2024-01-08 리벨리온 주식회사 뉴럴 프로세싱 장치 및 그의 다이나믹 프리퀀시 스케일링 방법

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10105531A (ja) * 1996-09-25 1998-04-24 Mamoru Tanaka ニューラルネットによるダイナミック量子化器
JPH10224620A (ja) * 1996-12-04 1998-08-21 Canon Inc 画像処理方法および装置
KR100298942B1 (ko) * 1998-10-19 2001-10-27 문성룡 양자화퍼지삼각함수의퍼지결정신경망구현방법
US7925602B2 (en) 2007-12-07 2011-04-12 Microsoft Corporation Maximum entropy model classfier that uses gaussian mean values
US8583896B2 (en) 2009-11-13 2013-11-12 Nec Laboratories America, Inc. Massively parallel processing core with plural chains of processing elements and respective smart memory storing select data received from each chain
US9129220B2 (en) 2010-07-07 2015-09-08 Qualcomm Incorporated Methods and systems for digital neural processing with discrete-level synapes and probabilistic STDP
US10417525B2 (en) 2014-09-22 2019-09-17 Samsung Electronics Co., Ltd. Object recognition with reduced neural network weight precision

Also Published As

Publication number Publication date
US20220108178A1 (en) 2022-04-07
US20180341857A1 (en) 2018-11-29
KR20180129211A (ko) 2018-12-05
US11250320B2 (en) 2022-02-15

Similar Documents

Publication Publication Date Title
KR102526650B1 (ko) 뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치
KR102589303B1 (ko) 고정 소수점 타입의 뉴럴 네트워크를 생성하는 방법 및 장치
KR102601604B1 (ko) 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
JP7329455B2 (ja) ニューラルネットワーク量子化のための方法及び装置
CN110689109B (zh) 神经网络方法和装置
KR102410820B1 (ko) 뉴럴 네트워크를 이용한 인식 방법 및 장치 및 상기 뉴럴 네트워크를 트레이닝하는 방법 및 장치
US20200026986A1 (en) Neural network method and appartus with parameter quantization
JP2020064635A (ja) ニューラルネットワークのパラメータを量子化する方法及びその装置
US11531893B2 (en) Method and apparatus with neural network parameter quantization
US11501166B2 (en) Method and apparatus with neural network operation
KR20210083935A (ko) 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
US20240046082A1 (en) Method and device with neural network implementation
US20240086694A1 (en) Neuromorphic method and apparatus with multi-bit neuromorphic operation
JP7329352B2 (ja) 分類のためのニューラルネットワークにおいて、パラメータを処理する方法及び装置
CN114358274A (zh) 训练用于图像识别的神经网络的方法和设备
US20210303972A1 (en) Method and apparatus with neural network quantization
KR102581471B1 (ko) 분류를 위한 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치
KR20210053791A (ko) 뉴럴 네트워크의 데이터를 처리하는 방법 및 장치
KR20200094534A (ko) 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치에서 멀티-비트 연산을 처리하는 방법
KR20200139071A (ko) 뉴럴 네트워크에서 파라미터를 양자화하는 방법 및 장치
KR20240035013A (ko) 뉴럴 네트워크의 파라미터 양자화 방법 및 장치

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