[go: up one dir, main page]

KR102728799B1 - 인공 신경망의 양자화 방법 및 장치 - Google Patents

인공 신경망의 양자화 방법 및 장치 Download PDF

Info

Publication number
KR102728799B1
KR102728799B1 KR1020170123658A KR20170123658A KR102728799B1 KR 102728799 B1 KR102728799 B1 KR 102728799B1 KR 1020170123658 A KR1020170123658 A KR 1020170123658A KR 20170123658 A KR20170123658 A KR 20170123658A KR 102728799 B1 KR102728799 B1 KR 102728799B1
Authority
KR
South Korea
Prior art keywords
neural network
quantization
segments
artificial neural
density function
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020170123658A
Other languages
English (en)
Other versions
KR20190034985A (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 KR1020170123658A priority Critical patent/KR102728799B1/ko
Priority to CN201810589961.9A priority patent/CN109558945A/zh
Priority to US16/008,275 priority patent/US11275986B2/en
Priority to DE102018121905.9A priority patent/DE102018121905A1/de
Priority to TW107132005A priority patent/TWI791610B/zh
Publication of KR20190034985A publication Critical patent/KR20190034985A/ko
Application granted granted Critical
Publication of KR102728799B1 publication Critical patent/KR102728799B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/061Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Neurology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Image Processing (AREA)
  • Feedback Control In General (AREA)

Abstract

본 개시의 예시적 실시예에 따른 인공 신경망의 양자화 방법은, 인공 신경망의 입력 분포를 복수의 세그먼트들로 분할하는 단계, 복수의 세그먼트들 각각을 근사화함으로써 근사 밀도 함수를 생성하는 단계, 근사 밀도 함수에 기초하여, 적어도 하나의 스텝 사이즈에 대응하는 적어도 하나의 양자화 오차를 계산하는 단계, 및 적어도 하나의 양자화 오차에 기초하여, 최종 스텝 사이즈를 결정하는 단계를 포함할 수 있다.

Description

인공 신경망의 양자화 방법 및 장치{METHOD AND APPARATUS OF ARTIFICIAL NEURAL NETWORK QUANTIZATION}
본 개시의 기술적 사상은 인공 신경망에 관한 것으로서, 자세하게는 인공 신경망의 양자화 방법 및 장치에 관한 것이다.
인공 신경망(artificial neural network)은, 인공 뉴런(neuron)(또는 뉴런 모델)들의 상호연결된 집합들을 구현하기 위하여 컴퓨팅 기기 또는 컴퓨팅 기기에 의해서 수행되는 방법을 지칭할 수 있다. 인공 뉴런은 입력 데이터에 대한 단순 연산들을 수행함으로써 출력 데이터를 생성할 수 있고, 출력 데이터는 다른 인공 뉴런에 전달될 수 있다. 인공 신경망의 예시로서 심층 신경망(deep neural network) 또는 딥 러닝(deep learning)은 멀티 레이어 구조를 가질 수 있고, 레이어들 각각이 다수의 샘플들에 따라 트레이닝됨으로써 다수의 샘플 분포들이 생성될 수 있다.
본 개시의 기술적 사상은 인공 신경망에서, 높은 정확도 및 낮은 계산 복잡도를 동시에 제공하는 인공 신경망의 양자화를 위한 방법 및 장치를 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 인공 신경망의 양자화 방법은, 인공 신경망의 입력 분포를 복수의 세그먼트들로 분할하는 단계, 복수의 세그먼트들 각각을 근사화함으로써 근사 밀도 함수를 생성하는 단계, 근사 밀도 함수에 기초하여, 적어도 하나의 스텝 사이즈에 대응하는 적어도 하나의 양자화 오차를 계산하는 단계, 및 적어도 하나의 양자화 오차에 기초하여, 최종 스텝 사이즈를 결정하는 단계를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 장치는, 메모리, 및 메모리에 저장된 컴퓨터로 실행가능한 프로시저들을 실행하는 프로세서를 포함할 수 있고, 컴퓨터로 실행가능한 프로시저들은, 인공 신경망의 입력 분포로부터 분할된 복수의 세그먼트들을 각각 근사화함으로써 근사 밀도 함수를 생성하도록 구성된 근사화기, 및 근사 밀도 함수에 기초하여 적어도 하나의 스텝 사이즈에 대응하는 적어도 하나의 양자화 오차를 계산하고 적어도 하나의 양자화 오차에 따라 최종 스텝 사이즈를 결정하도록 구성된 양자화기를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따라 부동 소수점 인공 신경망을 양자화하는 방법은, 부동 소수점 신경망의 입력 분포를 동일한 폭을 가지는 복수의 세그먼트들로 분할하는 단계, 복수의 세그먼트들 각각을 다항식으로 근사화함으로써 근사 밀도 함수를 생성하는 단계, 근사 밀도 함수에 기초하여, 적어도 하나의 소수점 이하 자릿수(fractional length; FL)들에 대응하는 적어도 하나의 양자화 오차를 계산하는 단계, 및 적어도 하나의 양자화 오차에 기초하여, 최종 소수점 이하 자릿수를 결정하는 단계를 포함할 수 있다.
본 개시의 예시적 실시예에 따른 인공 신경망의 양자화 방법 및 장치는 정형화되지 아니한 임의의 샘플 분포에 대한 양자화를 제공할 수 있다.
또한, 본 개시의 예시적 실시예에 따른 인공 신경망의 양자화 방법 및 장치는 향상된 SQNR(Signal to Quantization Noise Ratio)을 가지는 양자화를 제공할 수 있다.
또한, 본 개시의 예시적 실시예에 따른 인공 신경망의 양자화 방법 및 장치에 의하면, 요건에 따른 양자화에 기인하여 주어진 요건에서 높은 정확도를 가지는 고정 소수점 신경망을 얻을 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 양자화 시스템을 나타내는 블록도이다.
도 2는 본 개시의 예시적 실시예에 따른 인공 신경망의 예시를 나타내는 도면이다.
도 3은 본 개시의 예시적 실시예에 따른 인공 신경망의 양자화 방법을 나타내는 순서도이다.
도 4는 본 개시의 예시적 실시예에 따라 입력 분포를 근사화하는 동작을 나타내는 도면이다.
도 5는 본 개시의 예시적 실시예에 따라 도 3의 단계 S400의 예시를 나타내는 순서도이다.
도 6은 본 개시의 예시적 실시예에 따른 인공 신경망의 양자화 방법을 나타내는 순서도이다.
도 7은 본 개시의 예시적 실시예에 따라 도 3의 단계 S600의 예시를 나타내는 순서도이다.
도 8은 본 개시의 예시적 실시예에 따라 양자화 오차를 계산하는 동작의 예시를 나타내는 도면이다.
도 9는 본 개시의 예시적 실시예에 따라 양자화 오차를 계산하는 동작의 예시를 나타내는 도면이다.
도 10 및 도 11은 본 개시의 예시적 실시예들에 따라 도 3의 단계 S600 및 단계 S800의 예시들을 나타내는 순서도들이다.
도 12는 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
도 13은 본 개시의 예시적 실시예에 따른 휴대용 컴퓨팅 장치를 나타내는 블록도이다.
도 1은 본 개시의 예시적 실시예에 따른 양자화 시스템(100)을 나타내는 블록도이다. 인공 신경망(artificial neural network; ANN)은, 동물의 두뇌를 구성하는 생물학적 신경망에 착안된 컴퓨팅 시스템을 지칭할 수 있다. 인공 신경망(ANN)은, 규칙-기반(rule-based) 프로그래밍과 같이 미리 정의된 조건에 따라 작업을 수행하는 고전적인 알고리즘과 달리, 다수의 샘플들(또는 예시들)을 고려함으로써 작업을 수행하는 것을 학습할 수 있다. 인공 신경망(ANN)은 인공 뉴런(neuron)(또는 뉴런)들이 연결된 구조를 가질 수 있고, 뉴런들간 연결은 시냅스(synapse)로 지칭될 수 있다. 뉴런은 수신된 신호를 처리할 수 있고, 처리된 신호를 시냅스를 통해서 다른 뉴런에 전송할 수 있다. 뉴런의 출력은 "액티베이션(activation)"으로 지칭될 수 있다. 뉴런 및/또는 시냅스는 변동할 수 있는 가중치(weight)를 가질 수 있고, 가중치에 따라 뉴런에 의해서 처리된 신호의 영향력이 증가하거나 감소할 수 있다. 특히 개개의 뉴런에 관련된 가중치는 바이어스(bias)로서 지칭될 수 있다.
심층 신경망(deep neural network; DNN) 또는 딥 러닝 구조(deep learning architecture)는 레이어 구조를 가질 수 있고, 특정 레이어의 출력은 후속하는 레이어의 입력이 될 수 있다. 이와 같은 멀티-레이어드(multi-layered) 구조에서, 레이어들 각각은 다수의 샘플들에 따라 훈련될 수 있다. 심층 신경망과 같은 인공 신경망은 인공 뉴런들에 각각 대응하는 다수의 프로세싱 노드들에 의해서 구현될 수 있는데, 양호한 결과들, 예컨대 높은 정확도의 결과들을 획득하기 위해서 높은 계산 복잡도(computational complexity)가 요구될 수 있고, 이에 따라 많은 컴퓨팅 리소스들이 요구될 수 있다.
계산 복잡도를 감소시키기 위하여, 인공 신경망은 양자화(quantization)될 수 있다. 양자화는, 예컨대 반올림을 통해서 실수(real number)를 정수(integer)로 맵핑하는 것과 같이, 입력 값들을 입력 값들의 개수보다 작은 개수의 값들로 맵핑하는 과정을 지칭할 수 있다. 인공 신경망에서 양자화는, 부동 소수점(floating point) 신경망을 고정 소수점(fixed point) 신경망으로 변환하는 과정을 포함할 수 있다. 예를 들면, 인공 신경망에서 양자화는, 레이어의 액티베이션들, 가중치들, 바이어스들 등에 적용될 수 있다. 부동 소수점 숫자들은 부호(sign), 지수(exponent) 및 유효숫자(significant)로 구성될 수 있는 한편, 고정 소수점 숫자들은 정수 부분(integer part) 및 소수점 이하 부분(fraction part)을 포함할 수 있다. 일부 예시들에서, 고정 소수점 숫자들의 정수 부분은 부호 비트를 포함할 수 있다. 부동 소수점 숫자들을 사용하는 인공 신경망, 즉 부동 소수점 신경망은 높은 정확도 및 계산 복잡도를 가질 수 있는 한편, 고정 소수점 숫자들을 사용하는 인공 신경망, 즉 고정 소수점 신경망은 감소된 정확도 및 계산 복잡도를 가질 수 있다.
인공 신경망에서 결과의 정확도 및 계산 복잡도 사이 트레이드-오프 관계에 기인하여, 인공 신경망의 양자화는 정확도의 감소를 초래할 수 있고, 정확도의 감소 특성은 양자화의 방식에 의존할 수 있다. 이하에서 도면들을 참조하여 후술되는 바와 같이, 본 개시의 예시적 실시예에 따른 양자화 시스템(100)은 정확도의 감소를 최소화하면서 요건에 따른 양자화를 제공할 수 있고, 이에 따라 양호한 성능을 가지면서도 감소된 복잡도를 가지는 고정 소수점 신경망이 제공될 수 있다.
양자화 시스템(100)은 본 개시의 예시적 실시예들에 따른 양자화를 수행하는 임의의 시스템일 수 있고, 양자화 장치로서 지칭될 수도 있다. 예를 들면, 양자화 시스템(100)은 적어도 하나의 프로세서 및 메모리를 포함하는 컴퓨팅 시스템일 수 있다. 비제한적인 예시로서, 양자화 시스템(100)은, 데스크탑 컴퓨터, 서버 등과 같은 고정형(stationary) 컴퓨팅 시스템뿐만 아니라, 랩탑 컴퓨터, 스마트 폰 등과 같은 휴대용(mobile) 컴퓨팅 시스템일 수도 있다. 도 1에 도시된 바와 같이, 양자화 시스템(100)은 근사화기(120) 및 양자화기(140)를 포함할 수 있고, 근사화기(120) 및 양자화기(140) 각각은 논리 합성을 통해서 구현되는 로직 블록, 프로세서에 의해서 수행되는 소프트웨어 블록 또는 이들의 조합으로 구현될 수 있다. 일부 실시예들에서, 근사화기(120) 및 양자화기(140) 각각은, 프로세서에 의해서 실행되는 복수의 명령어들의 집합으로서 프로시저일 수 있고, 프로세서에 의해서 엑세스 가능한 메모리에 저장될 수 있다.
도 1을 참조하면, 양자화 시스템(100)은 입력 분포(IN)를 수신할 수 있고, 양자화된 출력(OUT)을 생성할 수 있다. 입력 분포(IN)는 복수의 입력 분포들(IN1, IN2), 예컨대 액티베이션 값들의 분포, 가중치들의 분포 등을 포함할 수 있고, 양자화된 출력(OUT)은 복수의 입력 분포들(IN1, IN2)에 각각 대응하는 양자화된 데이터들(OUT1, OUT2)을 포함할 수 있다. 도 1에 도시된 바와 같이, 입력 분포들(IN1, IN2)은, 예컨대 가우시안(Gaussian) 분포, 라플라시안(Laplacian) 분포, 감마(Gamma) 분포와 같이 잘 알려진 분포와 상이한 형태를 가질 수 있다. 따라서, 비정형의 형태를 가지는 입력 분포들(IN1, IN2)을 상기와 같은 잘알려진 분포들에 기초하여 양자화를 수행하는 것은 제한적일 수 있고, 높은 정확도를 기대하는 것이 용이하지 아니할 수 있다. 후술되는 바와 같이, 본 개시의 예시적 실시예에 따른 양자화 시스템(100)은 입력 분포(IN)의 형태에 제한되지 아니할 수 있고, 임의의 형태를 가지는 입력 분포(IN)에 대하여 향상된 정확도를 가지는 양자화를 제공할 수 있다.
근사화기(120)는 입력 분포(IN)를 수신할 수 있고, 근사 밀도 함수(approximated density function; ADF)를 생성하여 양자화기(140)에 제공할 수 있다. 일부 실시예들에서, 근사화기(120)는 입력 분포(IN)를 복수의 세그먼트들로 분할 할 수 있고, 복수의 세그먼트들 각각을 상호 독립적으로 근사화함으로써 근사 밀도 함수(ADF)를 생성할 수 있다. 예를 들면, 근사화기(120)는 입력 분포(IN)를 동일한 폭을 가지는 복수의 세그먼트들로서 균일하게 분할할 수 있고, 복수의 세그먼트들 각각을 근사화함으로써 복수의 세그먼트들 각각에 대응하는 함수들을 도출할 수 있으며, 도출된 함수들을 결합함으로써 근사 밀도 함수(ADF)를 생성할 수 있다. 이에 따라, 임의의 형태를 가지는 입력 분포(IN)에 대응하는, 낮은 오차를 가지는 근사 밀도 함수(ADF)가 생성될 수 있고, 후술되는 바와 같이 근사 밀도 함수(ADF)에 기초하여 최적의 스텝 사이즈가 도출될 수 있다. 근사화기(120)에 대한 예시는 도 4 등을 참조하여 후술될 것이다.
양자화기(140)는 근사화기(120)로부터 근사 밀도 함수(ADF)를 수신할 수 있고, 근사 밀도 함수(ADF)를 양자화함으로써 양자화된 출력(OUT)을 생성할 수 있다. 양자화기(140)는 근사 밀도 함수(ADF)에 기초하여 스텝 사이즈에 대응하는 양자화 오차를 계산할 수 있고, 양자화 오차에 기초하여 최종 스텝 사이즈를 결정할 수 있다. 일부 실시예들에서, 양자화기(140)는 복수의 상이한 양자화 스텝들에 대응하는 복수의 양자화 오차들을 계산할 수 있고, 복수의 양자화 오차들 중 최소 양자화 오차에 대응하는 양자화 스텝을 최종 양자화 스텝으로서 결정할 수 있다. 추가적으로, 양자화기(140)는 최종 양자화 스텝에 기초하여 입력 분포(IN)를 양자화할 수 있고, 양자화된 출력(OUT)을 생성할 수 있다. 전술된 바와 같이, 양자화된 출력(OUT)은 고정 소수점 신경망의 구현에 사용될 수 있고, 부동 소수점 신경망에 비해 정확도의 열화가 최소화되면서도 인공 신경망을 위한 감소된 계산 복잡도를 제공할 수 있다.
도 2는 본 개시의 예시적 실시예에 따른 인공 신경망의 예시를 나타내는 도면이다. 구체적으로, 도 2는 인공 신경망의 예시로서 심층 신경망(20)의 구조를 개략적으로 나타내는 도면이다.
도 2에 도시된 바와 같이, 심층 신경망(20)은 복수의 레이어들(L_1, L_2, L_3, ..., L_N)을 포함할 수 있고, 레이어의 출력은 적어도 하나의 채널을 통해서 후속하는 레이어에 입력될 수 있다. 예를 들면, 제1 레이어(L_1)는 샘플(SAM)을 처리함으로써 복수의 채널들(CH11...CH1x)을 통해서 제2 레이어(L_2)에 출력을 제공할 수 있고, 제2 레이어(L_2) 역시 복수의 채널들(CH21...CH2y)을 통해서 제3 레이어(L_3)에 출력을 제공할 수 있다. 최종적으로, 제N 레이어(L_N)는 결과(RES)를 출력할 수 있고, 결과(RES)는 샘플(SAM)과 관계된 적어도 하나의 값을 포함할 수 있다. 복수의 레이어들(L_1, L_2, L_3, ..., L_N) 각각의 출력들이 전달되는 채널들의 개수는 동일하거나 상이할 수 있다. 예를 들면, 제2 레이어(L_2)의 채널들(CH21...CH2y)의 개수 및 제3 레이터(L_3)의 채널들(CH31...CH3z)의 개수는 동일할 수도 있고 상이할 수도 있다.
샘플(SAM)은 심층 신경망(20)에 의해서 처리되는 입력 데이터일 수 있다. 예를 들면, 샘플(SAM)은 사람이 펜으로 쓴 글자를 포함하는 이미지일 수 있고, 심층 신경망(20)은 이미지로부터 글자를 인식함으로써 글자를 나타내는 값을 포함하는 결과(RES)를 출력할 수 있다. 결과(RES)는 상이한 글자들에 대응하는 복수의 확률들을 포함할 수 있고, 상이한 글자들 중 가장 유력한 글자는 가장 높은 확률에 대응할 수 있다. 심층 신경망(20)의 복수의 레이어들(L_1, L_2, L_3, ..., L_N) 각각은 글자를 포함하는 다수의 이미지들을 학습함으로써 생성된 값들, 예컨대 가중치들, 바이어스들 등에 기초하여 샘플(SAM) 및 이전 레이어의 출력을 처리함으로써 자신의 출력들을 생성할 수 있다.
본 개시의 예시적 실시예들에 따른 인공 신경망의 양자화 방법 및 장치(예컨대, 도 1의 100)는, 인공 신경망(예컨대, 심층 신경망(20))의 레이어 단위 및/또는 채널 단위로 입력 분포를 획득할 수 있다. 예를 들면, 도 1의 양자화 시스템(100)이 수신하는 입력 분포(IN)는 하나의 레이어가 복수의 채널들을 통해서 생성하는 출력들로부터 획득될 수도 있고, 하나의 채널에 대응하는 출력으로부터 획득될 수도 있다.
도 3은 본 개시의 예시적 실시예에 따른 인공 신경망의 양자화 방법을 나타내는 순서도이다. 예를 들면, 도 3의 양자화 방법은 도 1의 양자화 시스템(100)에 의해서 수행될 수 있다. 이하에서, 도 3은 도 1을 참조하여 설명될 것이다.
도 3을 참조하면, 단계 S200에서 입력 분포(IN)를 복수의 세그먼트들로 분할하는 동작이 수행될 수 있다. 예를 들면, 근사화기(120)는 입력 분포(IN)를 2이상의 세그먼트들로 분할할 수 있다. 근사화기(120)는, 일부 실시예들에서 입력 분포(IN)의 최대값 및 최소값에 기초하여 입력 분포(IN)를 분할할 수도 있고, 일부 실시예들에서 양자화 시스템(100)의 외부로부터 제공되는 입력 파라미터에 기초하여 입력 분포(IN)를 분할할 수도 있다. 단계 S200에 대한 예시는 도 4를 참조하여 후술될 것이다.
단계 S400에서, 근사 밀도 함수(ADF)를 생성하는 동작이 수행될 수 있다. 예를 들면, 근사화기(120)는 분할된 세그먼트들을 상호 독립적으로 근사화할 수 있고, 다양한 방식들에 기초하여 세그먼트들 각각을 근사화할 수 있다. 일부 실시예들에서, 근사화기(120)는 세그먼트들 각각을 주어진 차수의 다항식으로 근사화할 수 있다. 또한, 근사화기(120)는 세그먼트들을 동일한 방식(예컨대, 동일한 차수의 다항식)에 따라 각각 근사화할 수도 있고, 상이한 방식들(예컨대, 상이한 차수의 다항식들)에 따라 각각 근사화할 수도 있다. 단계 S400의 예시는 도 5를 참조하여 후술될 것이다.
단계 S600에서, 양자화 오차를 계산하는 동작이 수행될 수 있다. 예를 들면, 양자화기(140)는 근사 밀도 함수(ADF)에 기초하여 주어진 스텝 사이즈에 대응하는 양자화 오차를 계산할 수 있다. 일부 실시예들에서, 양자화기(140)는 양자화 오차를 스텝 사이즈의 함수로서 나타낼 수 있고, 복수의 상이한 스텝 사이즈들에 각각 대응하는 복수의 양자화 오차들을 계산할 수 있다. 일부 실시예들에서, 양자화 오차는 과부화 왜곡(overload distortion) 및 입상 왜곡(granular distortion)에 기초하여 계산될 수 있다. 단계 S600의 예시들은 도 7 내지 도 11을 참조하여 후술될 것이다.
단계 S800에서, 최종 스텝 사이즈를 결정하는 동작이 수행될 수 있다. 예를 들면, 양자화기(140)는 최소의 양자화 오차에 대응하는 스텝 사이즈를 결정할 수 있다. 일부 실시예들에서, 양자화기(140)는 복수의 스텝 사이즈들에 대응하는 복수의 양자화 오차들 중 하나를 선택할 수 있다. 일부 실시예들에서, 양자화기(140)는 스텝 사이즈의 함수로서 표현된 양자화 오차의 특성에 기초하여 스텝 사이즈를 결정할 수도 있다.
도 4는 본 개시의 예시적 실시예에 따라 입력 분포(IN)를 근사화하는 동작을 나타내는 도면이다. 예를 들면, 도 4는 도 3의 단계 S200 및 단계 S400에서 입력 분포(IN)가 처리되는 동작의 예시를 나타낸다. 비록 도 4에서 입력 분포(IN)가 짝수개의 세그먼트들로서 분할되는 예시가 도시되나, 입력 분포(IN)가 홀수개의 세그먼트들로서 분할될 수도 있는 점은 이해될 것이다.
도 4를 참조하면, 입력 분포(INx)는 최대값(MAX) 및 최소값(MIN)을 가질 수 있고, 최대값(MAX) 및 최소값(MIN) 사이 값들에서 임의의 밀도를 가질 수 있다. 전술된 바와 같이, 입력 분포(INx)를 근사화하기 위하여, 입력 분포(INx)는 M이 1이상의 정수일 때, 2M개의 세그먼트들(SEG-M...SEG(M-1))로서 분할될 수 있다. 도 4에 도시된 바와 같이, 입력 분포(INx)의 최대값(MAX) 및 최소값(MIN)을 포함하는 구간이 동일한 폭(W)을 가지는 2M개의 세그먼트들(SEG-M...SEG(M-1))로서 분할될 수 있다. 예를 들면, 입력 분포(INx)는 최대값(MAX) 및 최소값(MIN)을 포함하는 구간 '[-x(M+1), xM)'에서, 2M개의 세그먼트들(SEG-M ...SEG(M-1))로서 분할될 수 있고, 최대값(MAX)을 포함하는 세그먼트 'SEG(M-1)'은 '[x(M-1), xM)' 구간에 대응할 수 있고, 최소값(MIN)을 포함하는 세그먼트 'SEG-M'은 '[-x(M+1), -xM)' 구간에 대응할 수 있으며, 'XM - X(M-1)'은 '-XM - (-X(M+1))'과 일치할 수 있다.
일부 실시예들에서, 도 4에 도시된 예시와 상이하게, 입력 분포(INx)는 상이한 폭들을 가지는 세그먼트들로서 분할될 수 있다. 예를 들면, 입력 분포(INx)는, 예컨대 입력 분포(INx)의 밀도에 반비례하는 폭을 가지는 세그먼트들로서 분할될 수 있다. 이와 같이, 입력 분포(INx)가 2M개의 세그먼트들(SEG-M...SEG(M-1))로서 분할되고 2M개의 세그먼트들(SEG- M...SEG(M-1)) 각각이 독립적으로 근사화됨으로써, 임의의 형태를 가지는 입력 분포(INx)가 근사 밀도 함수(ADF) 'f(x)'로 근사화될 수 있고, 후술되는 바와 같이 근사 밀도 함수(ADF) 'f(x)'에 기초하여 양자화 오차가 계산될 수 있다. 이하에서 본 개시의 예시적 실시예들은, 설명의 편의를 위하여 도 4의 예시를 참조하여 설명되나, 본 개시의 예시적 실시예들이 이에 제한되지 아니하는 점은 이해될 것이다.
도 5는 본 개시의 예시적 실시예에 따라 도 3의 단계 S400의 예시를 나타내는 순서도이다. 도 3을 참조하여 전술된 바와 같이, 도 5의 단계 S400a에서 근사 밀도 함수를 생성하는 동작이 수행될 수 있다. 이하에서, 도 5는 도 4를 참조하여 설명될 것이다.
도 5를 참조하면 단계 S410에서, 변수를 초기화하는 동작이 수행될 수 있다. 도 5에 도시된 바와 같이, 인덱스 'i'는 도 4에서 최소값(MIN)에 대응하는 세그먼트 'SEG-M'의 인덱스인 '-M'으로 설정될 수 있다.
단계 S430에서, 세그먼트 'SEGi'에서 입력 분포(INx)를 근사화하는 동작이 수행될 수 있다. 즉, 도 4의 2M개의 세그먼트들(SEG- M...SEG(M-1)) 각각은 독립적으로 근사화될 수 있다. 입력 분포(INx)의 세그먼트 'SEGi'는 다양한 방식으로 근사화될 수 있다. 예를 들면, 세그먼트 'SEGi'는, 비제한적인 예시로서, 미리 정해진 차수(예컨대, 0을 포함하는 양의 정수)의 다항식(polynomial)으로 근사화될 수도 있고, 체비쇼프(Chebyshev) 근사화, 르메즈(Remez) 알고리즘 등이 사용될 수도 있다. 도 4의 예시에서, 입력 분포(INx)의 2M개의 세그먼트들(SEG- M...SEG(M-1)) 각각은 1차 다항식으로 근사화되는 것으로 도시되나 본 개시의 예시적 실시예들이 이에 제한되지 아니하는 점이 유의된다. 입력 분포(INx)의 세그먼트 'SEGi'가 근사화됨으로써 함수 'fi(x)'는 생성될 수 있다.
단계 S450에서, 인덱스 'i'가 'M-1'과 일치하는지 여부가 판단될 수 있다. 즉, 최대값(MAX)에 대응하는 세그먼트 'SEGM -1'까지 근사화가 완료되었는지 여부가 판단될 수 있다. 인덱스 'i'가 'M-1'과 일치하지 아니하는 경우, 즉 근사화할 세그먼트들이 남아있는 경우, 단계 S470에서 인덱스 'i'를 1만큼 증가시키는 동작이 수행될 수 있고, 후속하여 단계 S430에서 세그먼트 'SEGi'를 근사화하는 동작이 수행될 수 있다. 다른 한편으로, 인덱스 'i'가 'M-1'과 일치하는 경우, 즉 입력 분포(INx)의 2M개의 세그먼트들(SEG-M...SEG(M-1))이 모두 2M개의 함수들(f- M(x)...fM -1(x))로 각각 근사화된 경우, 단계 S490이 후속하여 수행될 수 있다.
단계 S490에서, 2M개의 근사화된 함수들(f- M(x)...fM -1(x)')을 결합하는 동작이 수행될 수 있고, 근사 밀도 함수(ADF) 'f(x)'가 생성될 수 있다. 예를 들면, 근사 밀도 함수(ADF) 'f(x)'는 아래 [수학식 1]과 같이 정의될 수 있다.
근사 밀도 함수(ADF) 'f(x)'는 세그먼트들의 경계에서 연속적이거나 불연속적일 수 있다. 즉, 단계 S420에서 근사화된 함수 'fi(x)'는, 근사화 방식에 따라, 세그먼트 'SEGi'의 경계값, 즉 'xi' 및 'x(i+1)'에서의 입력 분포(INx)의 밀도와 일치하는 값을 가질 수도 있고, 상이한 값을 가질 수도 있다. 일부 실시예들에서, 근사화된 함수 'fi(x)'가 MSE(Mean Squared Error)를 최소화하는 다항식으로 세그먼트 'SEGi'로부터 근사화된 경우, 'fi(xi)' 및 'fi(x(i+1))'은 입력 분포(INx)와 상이한 값을 가질 수 있고, 근사 밀도 함수(ADF) 'f(x)'는 불연속적일 수 있다. 다른 한편으로, 일부 실시예들에서, 근사화된 함수 'fi(x)'가 세그먼트 'SEGi(x)'의 경계값과 일치하는 값을 가지도록 근사화될 수 있고, 근사 밀도 함수(ADF)는 연속적일 수 있다.
일부 실시예들에서, 근사 밀도 함수(ADF) 'f(x)'를 정규화(normalization)하는 동작이 추가적으로 수행될 수 있다. 예를 들면, 근사 밀도 함수(ADF)는 아래 [수학식 2]를 만족하는 확률 밀도 함수(probability density function; PDF) 'fP(x)'로 정규화될 수 있고, 확률 밀도 함수(PDF) 'fP(x)'가 근사 밀도 함수(ADF)로서 양자화 오차를 계산하는데 사용될 수 있다.
도 6은 본 개시의 예시적 실시예에 따른 인공 신경망의 양자화 방법을 나타내는 순서도이다. 도 3의 양자화 방법과 비교할 때, 도 6의 양자화 방법은 입력 파라미터(D61)를 수신할 수 있다. 예를 들면, 도 6의 양자화 방법은 도 1의 양자화 시스템(100)에 의해서 수행될 수 있고, 도 6에 대한 내용 중 도 3에 관한 내용과 중복되는 내용은 생략될 것이다.
도 6을 참조하면, 단계 S100에서 입력 파라미터(D61)를 획득하는 동작이 수행될 수 있다. 예를 들면, 양자화 시스템(100)은 외부로부터 양자화와 관련된 값을 포함하는 입력 파라미터(D61)를 수신할 수 있다. 도 6에 도시된 바와 같이 입력 파라미터(D61)는 세그먼트들의 개수(nSET), 다항식의 차수(kTH) 중 적어도 하나를 포함할 수 있다. 입력 파라미터(D61)에 포함된 값은, 후속하는 단계들에서 사용될 수 있다. 입력 파라미터(D61)는 세그먼트들의 개수(nSET) 및 다항식의 차수(kTH) 중 하나만을 포함할 수도 있고, 세그먼트들의 개수(nSET) 및 다항식의 차수(kTH) 외 다른 값들을 더 포함할 수도 있는 점이 유의된다.
단계 S200'에서, 입력 분포(IN)를 복수의 세그먼트들로 분할하는 동작이 수행될 수 있다. 예를 들면, 양자화 시스템(100)의 근사화기(120)는 입력 파라미터(D61)에 포함된 세그먼트들의 개수(nSET)에 따라 입력 분포(IN)를 분할할 수 있다.
단계 S400'에서, 근사 밀도 함수(ADF)를 생성하는 동작이 수행될 수 있다. 예를 들면, 양자화 시스템(100)의 근사화기(120)는 입력 파라미터(D61)에 포함된 다항식의 차수(kTH)에 따라 복수의 세그먼트들 각각을 'kTH' 차수의 다항식으로 근사화할 수 있다.
단계 S600'에서 양자화 오차를 계산하는 동작이 수행될 수 있고, 그 다음에 단계 S800'에서 스텝 사이즈를 결정하는 동작이 수행될 수 있다.
도 7은 본 개시의 예시적 실시예에 따라 도 3의 단계 S600의 예시를 나타내는 순서도이다. 도 3을 참조하여 전술된 바와 같이, 도 7의 단계 S600a에서 근사 밀도 함수(ADF)에 기초하여 양자화 오차를 계산하는 동작이 수행될 수 있다. 도 7을 참조하면, 단계 S600a는 복수의 단계들(S60, S640, S660)을 포함할 수 있고, 이하에서 도 7은 도 4의 예시를 참조하여 설명될 것이다.
단계 S620에서, 스텝 사이즈에 대응하는 과부하 왜곡(overload distortion)을 계산하는 동작이 수행될 수 있다. 과부화 왜곡은 입력에 대하여 제한된 영역에서 양자화가 이루어지는 경우, 제한된 영역을 벗어난 입력에 기인하는 오차를 나타낼 수 있다. 도 4의 근사 밀도 함수(ADF) 'f(x)'에 대하여 '[-L, L)' 구간에서 N개의 양자화 레벨 및 스텝 사이즈 'Δ'에 따라 양자화가 수행되는 경우, 'L=NΔ/2'일 수 있다. 또한, 하나의 스텝이 'Si=[xq,i-(Δ/2), xq,i+(Δ/2))'일 때, '[-L, L)=S1∪S2∪...∪SN'일 수 있고, 이 경우, 과부하 왜곡 'Dover(Δ)'는 아래 [수학식 3]와 같이 정의될 수 있다.
단계 S640에서, 스텝 사이즈에 대응하는 입상 왜곡(granular distortion)을 계산하는 동작이 수행될 수 있다. 입력의 제한된 영역 내에서 양자화 결과들 사이 격차(spacing)는 입상(granularity)으로 지칭될 수 있고, 입상 왜곡은 이러한 격차에 기인하는 오차를 나타낼 수 있다. 과부하 왜곡 'Dover(Δ)'이 정의된 조건과 동일한 조건에서, 입상 왜곡 'Dgran(Δ)'은 아래 [수학식 4]와 같이 정의될 수 있다.
단계 S660에서, 과부하 왜곡 및 입상 왜곡을 합산하는 동작이 수행될 수 있다. 즉, 아래 [수학식 5]와 같이 양자화 오차 'D(Δ)'가 계산될 수 있다.
[수학식 3], [수학식 4] 및 [수학식 5]에 따라, 양자화 오차 'D(Δ)'는 스텝 사이즈의 함수로서 나타낼 수 있다.
도 8은 본 개시의 예시적 실시예에 따라 양자화 오차를 계산하는 동작의 예시를 나타내는 도면이다. 구체적으로, 도 8은 입상 왜곡 'Dgran(Δ)'을 계산하는 예시를 나타내는 것으로서, 도 4의 2M개의 세그먼트들(SEG- M...SEG(M-1)) 각각의 폭(W)과 스텝 사이즈(Δ)가 일치하고(즉, N = 2M), 근사 밀도 함수(ADF) 'f(x)'가, 2M개의 세그먼트들(SEG- M...SEG(M-1)) 각각이 1차 다항식으로 근사화된 함수들을 포함하는 경우를 가정한다. 또한, 근사 밀도 함수(ADF) 'f(x)'는 [수학식 2]의 'fP(x)'와 같이 정규화된 것으로 가정된다.
도 8을 참조하면, 2M개의 세그먼트들(SEG-M...SEG(M-1))이 근사화된 2M개의 함수들(f-M(x)...f(M-1)(x))은 아래 [수학식 6]과 같이 2M개의 함수들(g- M(z)...g(M-1)(z))로 변환됨으로써, 근사 밀도 함수(AFD) 'f(x)'는 '[-Δ/2, Δ/2)' 구간에서 유효한 값을 가지는 함수 'g(z)'로 변환될 수 있다.
도 8의 좌측 하단에 도시된 바와 같이, N개의 함수들(g1(z) ...gN(z))은 '[-Δ/2, Δ/2)' 구간에서 유효한 값들을 가질 수 있고, 도 8의 좌측 상단에 도시된 바와 같이, N개의 함수들(g1(z) ...gN(z))을 합산한 함수 'g(z)' 역시 '[-Δ/2, Δ/2)' 구간에서 유효한 값을 가질 수 있다. N개의 함수들(g1(z) ...gN(z)) 각각이 1차 다항식이므로, 함수 'g(z)' 역시 1차 다항식일 수 있고, 이에 따라 함수 'g(z)'는 '[-Δ/2, Δ/2)' 구간에서 일정한 기울기를 가지는 직선으로 나타날 수 있다. 또한, 근사 밀도 함수(ADF) 'f(x)'는 정규화되었으므로, 함수 'g(z)'는 'z=0'에서 ' 1/Δ'의 값을 가질 수 있다(즉, g(0)=1/Δ).
근사 밀도 함수(AFD) 'f(x)'가 '[-Δ/2, Δ/2)' 구간에서 유효한 값을 가지는 함수 'g(z)'로 변환됨으로써, 입상 왜곡 'Dgran(Δ)'은 아래 [수학식 7]과 같이 정의될 수 있다.
도 8의 우측에 도시된 바와 같이 함수 'g(z)'를 '[0, Δ/2)' 구간으로 취합하면, 입상 왜곡 'Dgran(Δ)'은 아래 [수학식 8]과 같이 정의될 수 있고, 입상 왜곡 'Dgran(Δ)'은 스텝 사이즈(Δ)의 단순화된 함수로서 표현될 수 있다.
도 9는 본 개시의 예시적 실시예에 따라 양자화 오차를 계산하는 동작의 예시를 나타내는 도면이다. 구체적으로, 도 9는, 도 8의 예시와 동일한 조건하에서 과부하 왜곡 'Dover(Δ)'을 계산하는 예시를 나타낸다.
고정 소수점 신경망에서, 스텝 사이즈(Δ)는 소수점 이하 자릿수(fractional length; FL)와 관련될 수 있다. 예를 들면, 스텝 사이즈(Δ)가 2의 거듭제곱 값(예컨대, Δ=2-k, k는 양의 정수)인 경우, 소수점 이하 자릿수(FL) 및 스텝 사이즈는 아래 [수학식 9]와 같은 관계를 가질 수 있다.
즉, 스텝 사이즈(Δ)를 결정하는 것은, 소수점 이하 자릿수(FL)를 결정하는 것에 대응할 수 있고, 양자화 오차 'D(Δ)' 역시 소수점 이하 자릿수(FL)의 함수 'D(FL)'로서 표현될 수 있다. 이하에서, 스텝 사이즈(Δ) 및 소수점 이하 자릿수(FL)는 [수학식 9]의 관계를 가지는 것으로 가정된다.
도 9를 참조하면, 과부하 왜곡 'Dover(FL)'은 아래 [수학식 10]과 같이 계산될 수 있다.
[수학식 10]에서 'FLmin'은 최대값(MAX)이 포화(saturation)되지 아니하도록 하는 소수점 이하 자릿수로서, 고정 소수점 신경망의 부호화된 비트 폭(signed bit width)이 'BW'일 때, 아래 [수학식 11]과 같이 정의될 수 있다.
도 10 및 도 11은 본 개시의 예시적 실시예들에 따라 도 3의 단계 S600 및 단계 S800의 예시들을 나타내는 순서도들이다. 도 3을 참조하여 전술된 바와 같이, 도 10 및 도 11의 단계 S600b 및 단계 S600c에서 양자화 오차를 계산하는 동작이 수행될 수 있고, 도 10 및 도 11의 단계 S800a 및 단계 S800b에서 스텝 사이즈를 결정하는 동작이 수행될 수 있다. 도 9를 참조하여 전술된 바와 같이, 스텝 사이즈를 결정하는 것은 소수점 이하 자릿수(FL)를 결정하는 것에 대응하므로, 도 10 및 도 11의 예시들은 소수점 이하 자릿수(FL)에 기초하여 설명될 것이다.
도 10을 참조하면, 일부 실시예들에서 소수점 이하 자릿수(FL)는 복수의 소수점 이하 자릿수들(FL1,.., FLP)을 포함하는 FL 집합(D11)을 사용하여 결정될 수 있다. 일부 실시예들에서, FL 집합(D11)은 고정 소수점 신경망의 비트 폭(BW)에 기초하여 결정된 범위에 의해서 결정될 수 있다. 도 10에 도시된 바와 같이, 양자화 오차를 계산하는 단계 S600b는 복수의 단계들(S620b, S640b, S660b)을 포함할 수 있고, 단계 S600b에 후속하여 단계 S800b가 수행될 수 있다.
단계 S620b에서, FL 집합(D11)에서 제1 소수점 이하 자릿수(FL1)로부터 순차적으로 소수점 이하 자릿수(FLi)를 선택하는 동작이 수행될 수 있다. 즉, FL 집합(D11)에 포함된 복수의 소수점 이하 자릿수들(FL1,.., FLP)에 각각 대응하는 양자화 오차들을 계산하기 위하여, 복수의 소수점 이하 자릿수들(FL1,.., FLP) 각각이 순차적으로 선택될 수 있다.
일부 실시예들에서, FL 집합(D11)은 오름차순으로 정렬된(예컨대, 1씩 증가하는) 복수의 소수점 이하 자릿수들(FL1,.., FLP)을 포함할 수 있고, 이에 따라 높은 인덱스를 가지는 소수점 이하 자릿수가 낮은 인덱스를 가지는 소수점 이하 자릿수보다 클 수 있다. 일부 실시예들에서, FL 집합(D11)은 내림차순으로 정렬된 복수의 소수점 이하 자릿수들(FL1,.., FLP)을 포함할 수 있고, 이에 따라 높은 인덱스를 가지는 소수점 이하 자릿수가 낮은 인덱스를 가지는 소수점 이하 자릿수보다 작을 수 있다. 또한, 일부 실시예들에서, FL 집합(D11)은 임의의 순서로 정렬된 복수의 소수점 이하 자릿수들(FL1,.., FLP)을 포함할 수도 있다.
단계 S640b에서, 양자화 오차 'D(FLi)'를 계산하는 동작이 수행될 수 있다. 예를 들면, 도 10에 도시된 바와 같이, 소수점 이하 자릿수(FLi)에 따른 과부하 왜곡 'Dover(FLi)' 및 입상 왜곡 'Dgran(FLi)'이 각각 계산될 수 있고, 양자화 오차 'D(FLi)'는 과부하 왜곡 'Dover(FLi)' 및 입상 왜곡 'Dgran(FLi)'의 합으로서 계산될 수 있다. 일부 실시예들에서, 전술된 수학식들에 따라, 과부하 왜곡 'Dover(FLi)' 및 입상 왜곡 'Dgran(FLi)'이 계산될 수 있다. 결과적으로, 도 3의 단계 S400에서 생성된 근사 밀도 함수(ADF) 'f(x)'에 기인하여, 소수점 이하 자릿수(FLi)에 따른 양자화 오차가 정확하고 용이하게 계산될 수 있다.
단계 S660b에서, 인덱스 'i'가 FL 집합(D11)의 원소 개수 'P'와 일치하는지 여부를 판단하는 동작이 수행될 수 있다. 즉, FL 집합(D11)의 모든 소수점 이하 자릿수들(FL1,..., FLP)에 각각 대응하는 양자화 오차들, 즉 'D(FL1),..., D(FLP)'의 계산이 완료되었는지 여부를 판단하는 동작이 수행될 수 있다. 인덱스 'i'가 FL 집합(D11)의 원소 개수 'P'와 일치하지 아니하는 경우 단계 S620b에서 변경된 인덱스 'i'에 따른 소수점 이하 자릿수(FLi)가 선택될 수 있는 한편, 그렇지 아니하는 경우 단계 S800b가 후속하여 수행될 수 있다.
단계 S800b에서, 최소 양자화 오차에 대응하는 소수점 이하 자릿수(FL)를 결정하는 동작이 수행될 수 있다. 이에 따라, 결정된 소수점 이하 자릿수(FL)(또는 스텝 사이즈)는 실질적으로 양자화 오차를 최소화하는 소수점 이하 자릿수에 대응할 수 있고, 결과적으로 인공 신경망의 양자화는 높은 정확도를 제공할 수 있다.
도 11을 참조하면, 일부 실시예들에서, 소수점 이하 자릿수(FL)의 함수인 양자화 오차의 특성에 기초하여 결정될 수 있다. 예를 들면, 소수점 이하 자릿수(FL)의 함수인 양자화 오차는 [수학식 11]에 의해서 정의된 소수점 이하 자릿수(FLmin)로부터 증가하는 소수점 이하 자릿수들에에서, 점진적으로 증가하는 형태를 가지거나 아래로 볼록한(convex-downward) 형태를 가질 수 있다. 즉, [수학식 11]의 소수점 이하 자릿수(FLmin)로부터 순차적으로 증가하는 소수점 이하 자릿수들에 대한 양자화 오차들을 계산하는 과정에서, 이전에 계산된 양자화 오차보다 큰 양자화 오차가 발생하는 경우, 추가적인 소수점 이하 자릿수들에 대한 양자화 오차의 계산은 중단될 수 있다. 도 11에 도시된 바와 같이, 양자화 오차를 계산하는 단계 S600c는 복수의 단계들(S610c, S620c, S630c, S640c, S650c, S660c)을 포함할 수 있고, 단계 S600c에 후속하여 단계들(S820c, S840c)을 포함하는 단계 S800c가 수행될 수 있다.
단계 S610c에서, 소수점 이하 자릿수(FLmin)를 계산하는 동작이 수행될 수 있다. 예를 들면, 도 9를 참조하여 전술된 바와 같이, 'FLmin'은 최대값(MAX)이 포화(saturation)되지 아니하도록 하는 소수점 이하 자릿수를 의미할 수 있고, [수학식 11]에 따라 소수점 이하 자릿수(FLmin)가 계산될 수 있다.
단계 S620c에서, 변수들의 초기화 동작이 수행될 수 있다. 예를 들면, 도 11에 도시된 바와 같이, 인덱스 'i'는 1로서 설정될 수 있고, 소수점 이하 자릿수(FLi)는 단계 S610c에서 계산된 'FLmin'으로 설정될 수 있다.
단계 S630c에서, 양자화 오차 'D(FLi)'를 계산하는 동작이 수행될 수 있다. 예를 들면, 도 11에 도시된 바와 같이, 소수점 이하 자릿수(FLi)에 따른 과부하 왜곡 'Dover(FLi)' 및 입상 왜곡 'Dgran(FLi)'이 각각 계산될 수 있고, 양자화 오차 'D(FLi)'는 과부하 왜곡 'Dover(FLi)' 및 입상 왜곡 'Dgran(FLi)'의 합으로서 계산될 수 있다. 일부 실시예들에서, 전술된 수학식들에 따라, 과부하 왜곡 'Dover(FLi)' 및 입상 왜곡 'Dgran(FLi)'이 계산될 수 있다.
단계 S640c에서, 현재 계산된 양자화 오차 'D(FLi)' 및 이전에 계산된 양자화 오차 'D(FL(i-1))'를 비교하는 동작이 수행될 수 있다. 즉, 인덱스 'i'를 가지는 소수점 이하 자릿수(FLi)의 양자화 오차 'D(FLi)' 및 이전 인덱스 'i-1'를 가지는 소수점 이하 자릿수(FL(i-1))의 양자화 오차 'D(FL(i-1))'를 비교하는 동작이 수행될 수 있다. 현재 계산된 양자화 오차 'D(FLi)'가 이전에 계산된 양자화 오차 'D(FL(i-1))'보다 큰 경우 단계 S840c에서 이전의 양자화 오차 'D(FL(i-1))'의 계산에 사용된 소수점 이하 자릿수(F(i-1))가 결정될 수 있는 한편, 그렇지 아니한 경우 단계 S650c가 후속하여 수행될 수 있다.
단계 S650c에서, 인덱스 'i' 및 미리 정해진 숫자 'P'를 비교하는 동작이 수행될 수 있다. P는 임의의 양의 정수일 수 있고, 고정 소수점 신경망의 비트 폭보다 작을 수 있다. 인덱스 'i' 및 미리 정해진 숫자 'P'가 일치하는 경우, 즉 'P'개의 상이한 소수점 이하 자릿수들에 대응하는 양자화 오차들이 연속적으로 감소한 경우, 단계 S820c에서 마지막 소수점 이하 자릿수(FLP)를 결정하는 동작이 수행될 수 있다. 다른 한편으로, 인덱스 'i' 및 미리 정해진 숫자 'P'가 일치하지 아니하는 경우, 단계 S660c에서 소수점 이하 자릿수(FLi) 및 인덱스 'i'는 1만큼씩 증가할 수 있고, 후속하여 단계 S630c가 수행될 수 있다.
도 12는 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템(200)을 나타내는 블록도이다. 일부 실시예들에서, 도 1의 양자화 시스템(100)은 도 12의 컴퓨팅 시스템(200)으로 구현될 수 있다. 도 12에 도시된 바와 같이, 컴퓨팅 시스템(200)은 시스템 메모리(210), 프로세서(230), 스토리지(250), 입출력 장치들(270) 및 통신 접속들(290)을 포함할 수 있다. 컴퓨팅 시스템(200)에 포함된 구성요소들은 상호 통신가능하게, 예컨대 버스를 통해서 연결될 수 있다.
시스템 메모리(210)는 프로그램(212)을 포함할 수 있다. 프로그램(212)은 프로세서(230)로 하여금 본 개시의 예시적 실시예들에 따른 인공 신경망의 양자화를 수행하도록 할 수 있다. 예를 들면, 프로그램(212)은 프로세서(230)에 의해서 실행가능한(executable) 복수의 명령어들을 포함할 수 있고, 프로그램(212)에 포함된 복수의 명령어들이 프로세서(230)에 의해서 실행됨으로써 인공 신경망의 양자화가 수행될 수 있다. 시스템 메모리(210)는, 비제한적인 예시로서, SRAM(Static Random Access Memory), DRAM(Dynamic Random Access Memory)와 같은 휘발성 메모리를 포함할 수도 있고, 플래시 메모리(flash memory) 등과 같은 비휘발성 메모리를 포함할 수도 있다.
프로세서(230)는 임의의 명령어 세트(예컨대, IA-32(Intel Architecture-32), 64 비트 확장 IA-32, x86-64, PowerPC, Sparc, MIPS, ARM, IA-64 등)을 실행할 수 있는 적어도 하나의 코어를 포함할 수 있다. 프로세서(230)는 시스템 메모리(210)에 저장된 명령어들을 실행할 수 있으며, 프로그램(212)을 실행함으로써 인공 신경망의 양자화를 수행할 수 있다.
스토리지(250)는 컴퓨팅 시스템(200)에 공급되는 전력이 차단되더라도 저장된 데이터를 소실하지 아니할 수 있다. 예를 들면, 스토리지(250)는 EEPROM(non-volatile memory such as a Electrically Erasable Programmable Read-Only Memory), 플래시 메모리(flash memory), PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등과 같은 비휘발성 메모리를 포함할 수도 있고, 자기 테이프, 광학 디스크, 자기 디스크와 같은 저장 매체를 포함할 수도 있다. 일부 실시예들에서, 스토리지(250)는 컴퓨팅 시스템(200)으로부터 탈착 가능할 수도 있다.
일부 실시예들에서, 스토리지(250)는 본 개시의 예시적 실시예에 따른 인공 신경망의 양자화를 위한 프로그램(212)을 저장할 수 있고, 프로그램(212)이 프로세서(230)에 의해서 실행되기 이전에 스토리지(250)로부터 프로그램(212) 또는 그것의 적어도 일부가 시스템 메모리(210)로 로딩될 수 있다. 일부 실시예들에서, 스토리지(250)는 프로그램 언어로 작성된 파일을 저장할 수 있고, 파일로부터 컴파일러 등에 의해서 생성된 프로그램(212) 또는 그것의 적어도 일부가 시스템 메모리(210)로 로딩될 수도 있다.
일부 실시예들에서, 스토리지(250)는 프로세서(230)에 의해서 처리될 데이터 및/또는 프로세서(230)에 의해서 처리된 데이터를 저장할 수 있다. 예를 들면, 스토리지(250)는 도 1의 입력 분포(IN)에 대응하는 데이터 및/또는 도 6의 입력 파라미터(D61)를 저장할 수도 있고, 도 1의 양자화된 출력(OUT)에 대응하는 데이터를 저장할 수도 있으며, 양자화 중에 생성된 데이터, 예컨대 스텝 사이즈, 소수점 이하 자릿수 등을 저장할 수도 있다.
입출력 장치들(270)은 키보드, 포인팅 장치 등과 같은 입력 장치를 포함할 수 있고, 디스플레이 장치, 프린터 등과 같은 출력 장치를 포함할 수 있다. 예를 들면, 사용자는 입출력 장치들(270)을 통해서, 프로세서(230)에 의한 프로그램(212)의 실행을 트리거할 수도 있고, 도 6의 입력 파라미터(D61)를 입력할 수도 있고, 도 1의 양자화된 출력(OUT) 및/또는 오류 메시지 등을 확인할 수도 있다.
통신 접속들(290)은 컴퓨팅 시스템(200) 외부의 네트워크에 대한 액세스를 제공할 수 있다. 예를 들면, 네트워크는 다수의 컴퓨팅 시스템들 및 통신 링크들을 포함할 수 있고, 통신 링크들은 유선 링크들, 광학 링크들, 무선 링크들 또는 임의의 다른 형태의 링크들을 포함할 수 있다.
도 13은 본 개시의 예시적 실시예에 따른 휴대용 컴퓨팅 장치(300)를 나타내는 블록도이다. 일부 실시예들에서, 본 개시의 예시적 실시예에 따라 양자화된 고정 소수점 신경망은 휴대용 컴퓨팅 장치(300)에서 구현될 수 있다. 휴대용 컴퓨팅 장치(300)는 비제한적인 예시로서, 모바일 폰, 태블릿 PC, 웨어러블 기기, 사물 인터넷 장치 등과 같이 배터리 또는 자가 발전을 통해서 전력이 공급되는 임의의 휴대용 전자 기기일 수 있다.
도 13에 도시된 바와 같이, 휴대용 컴퓨팅 장치(300)는 메모리 서브시스템(310), 입출력 장치들(330), 프로세싱 유닛(350) 및 네트워크 인터페이스(370)를 포함할 수 있고, 메모리 서브시스템(310), 입출력 장치들(330), 프로세싱 유닛(350) 및 네트워크 인터페이스(370)는 버스(390)를 통해서 상호 통신할 수 있다. 일부 실시예들에서, 메모리 서브시스템(310), 입출력 장치들(330), 프로세싱 유닛(350) 및 네트워크 인터페이스(370) 중 적어도 2개 이상은, 시스템-온-칩(System-on-a-Chip; SoC)으로서 하나의 패키지에 포함될 수 있다.
메모리 서브시스템(310)은 RAM(312) 및 스토리지(314)를 포함할 수 있다. RAM(312) 및/또는 스토리지(314)는 프로세싱 유닛(350)에 의해서 실행되는 명령어들 및 처리되는 데이터를 저장할 수 있다. 예를 들면, RAM(312) 및/또는 스토리지(314)는 인공 신경망의 신호들, 가중치들, 바이어스들과 같은 변수들을 저장할 수 있고, 인공 신경망의 인공 뉴런(또는 계산 노드)의 파라미터들을 저장할 수도 있다. 일부 실시예들에서, 스토리지(314)는 비휘발성 메모리를 포함할 수 있다.
프로세싱 유닛(350)은 CPU(Central Processing Unit)(352), GPU(Graphic Processing Unit)(354), DSP(Digital Signal Processor)(356) 및 NPU(Neural Processing Unit)(358)를 포함할 수 있다. 도 13에 도시된 바와 상이하게, 일부 실시예들에서, 프로세싱 유닛(350)은 CPU(Central Processing Unit)(352), GPU(Graphic Processing Unit)(354), DSP(Digital Signal Processor)(356) 및 NPU(Neural Processing Unit)(358) 중 적어도 일부만을 포함할 수도 있다.
CPU(352)는 휴대용 컴퓨팅 장치(300)의 전체적인 동작, 예컨대 입출력 장치들(330)을 통해서 수신된 외부 입력에 응답하여 특정 작업을 직접 수행하거나, 프로세싱 유닛(350)의 다른 구성요소들에게 수행을 지시할 수 있다. GPU(354)는 입출력 장치들(330)에 포함된 디스플레이 장치를 통해서 출력되는 영상을 위한 데이터를 생성할 수도 있고, 입출력 장치들(330)에 포함된 카메라로부터 수신되는 데이터를 인코딩할 수도 있다. DSP(356)는 디지털 신호, 예컨대 네트워크 인터페이스(370)로부터 제공되는 디지털 신호를 처리함으로써 유용한 데이터를 생성할 수 있다.
NPU(358)는 인공 신경망을 위한 전용의 하드웨어로서, 인공 신경망을 구성하는 적어도 일부의 인공 뉴런에 대응하는 복수의 계산 노드들을 포함할 수 있고, 복수의 계산 노드들 중 적어도 일부는 병렬적으로 신호를 처리할 수 있다. 본 개시의 예시적 실시예에 따라 양자화된 인공 신경망, 예컨대 심층 신경망은 높은 정확도뿐만 아니라 낮은 계산 복잡도를 가지므로, 도 13의 휴대용 컴퓨팅 장치(300)에 용이하게 구현될 수 있고, 빠른 처리 속도를 가질 수 있으며, 예컨대 단순하고 작은 규모의 NPU(358)에 의해서도 구현될 수 있다.
입출력 장치들(330)은 터치 입력 장치, 사운드 입력 장치, 카메라 등과 같은 입력 장치들 및 디스플레이 장치 및 사운드 출력 장치 등과 같은 출력 장치들을 포함할 수 있다. 예를 들면, 사운드 입력 장치를 통해서 사용자의 음성이 입력되는 경우, 모바일 컴퓨팅 장치(300)에 구현된 심층 신경망에 의해서 음성이 인식될 수 있고, 그에 따른 동작이 트리거링될 수 있다. 또한, 카메라를 통해서 이미지가 입력되는 경우, 모바일 컴퓨팅 장치(300)에 구현된 심층 신경망에 의해서 이미지에 포함된 오브젝트가 인식될 수 있고, 가상 현실(virtual reality)과 같은 출력을 사용자에게 제공할 수 있다. 네트워크 인터페이스(370)는 휴대용 컴퓨팅 장치(300)에 LTE(Long Term Evolution), 5G 등과 같은 이동 통신 네트워크에 대한 액세스를 제공할 수도 있고, 와이파이와 같은 로컬 네트워크에 대한 액세스를 제공할 수도 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 인공 신경망의 레이어가 생성하는 출력들의 분포를 포함하는 입력 분포를 복수의 세그먼트들로 분할하는 단계;
    상기 복수의 세그먼트들을 각각 근사화한 복수의 함수들을 결합함으로써 근사 밀도 함수를 생성하는 단계;
    상기 근사 밀도 함수의 양자화에 사용되는 적어도 하나의 스텝 사이즈에 대응하는 적어도 하나의 양자화 오차를 계산하는 단계; 및
    상기 적어도 하나의 양자화 오차에 기초하여, 상기 근사 밀도 함수를 양자화하기 위한 최종 스텝 사이즈를 결정하는 단계를 포함하고,
    상기 근사 밀도 함수를 생성하는 단계는,
    상기 복수의 세그먼트들을 복수의 함수들로 상호 독립적으로 근사화하는 단계; 및
    상기 복수의 함수들을 결합함으로써 상기 근사 밀도 함수를 생성하는 단계를 포함하는 것을 특징으로 하는 인공 신경망의 양자화 방법.
  2. 청구항 1에 있어서,
    상기 분할하는 단계는, 상기 입력 분포의 최대값 및 최소값을 포함하는 구간을 복수의 세그먼트들로 분할하는 것을 특징으로 하는 인공 신경망의 양자화 방법.
  3. 청구항 1에 있어서,
    세그먼트들의 개수를 입력 파라미터로서 획득하는 단계를 더 포함하고,
    상기 분할하는 단계는, 상기 입력 분포를 획득된 상기 개수의 세그먼트들로 분할하는 것을 특징으로 하는 인공 신경망의 양자화 방법.
  4. 청구항 1에 있어서,
    상기 분할하는 단계는, 상기 입력 분포를 동일한 폭을 가지는 상기 복수의 세그먼트들로서 분할하는 것을 특징으로 하는 인공 신경망의 양자화 방법.
  5. 청구항 1에 있어서,
    상기 분할하는 단계는, 상기 복수의 세그먼트들 각각이 확률 밀도에 비례하는 폭을 가지도록 상기 입력 분포를 분할하는 것을 특징으로 하는 인공 신경망의 양자화 방법.
  6. 청구항 1에 있어서,
    상기 복수의 함수들 각각은, 다항식(polynomial)인 것을 특징으로 하는 인공 신경망의 양자화 방법.
  7. 청구항 6에 있어서,
    다항식의 차수를 입력 파라미터로서 획득하는 단계를 더 포함하고,
    상기 근사화하는 단계는, 상기 복수의 세그먼트들을 획득된 상기 차수의 다항식들로 각각 근사화하는 것을 특징으로 하는 인공 신경망의 양자화 방법.
  8. 청구항 6에 있어서,
    상기 근사 밀도 함수를 생성하는 단계는, 결합된 복수의 다항식들을 정규화함으로써 상기 근사 밀도 함수를 확률 밀도 함수로서 생성하는 단계를 더 포함하는 것을 특징으로 하는 인공 신경망의 양자화 방법.
  9. 청구항 1에 있어서,
    상기 적어도 하나의 양자화 오차를 계산하는 단계는, 상기 적어도 하나의 스텝 사이즈에 따른 과부하 왜곡(overload distortion) 및 입상 왜곡(granular distortion)의 합을 계산하는 단계를 포함하는 것을 특징으로 하는 인공 신경망의 양자화 방법.
  10. 청구항 1에 있어서,
    상기 최종 스텝 사이즈에 기초하여 고정 소수점 인공 신경망을 획득하는 단계를 더 포함하는 인공 신경망의 양자화 방법.
  11. 청구항 10에 있어서,
    상기 적어도 하나의 양자화 오차를 계산하는 단계는,
    복수의 소수점 이하 자릿수(fractional length; FL)들을 포함하는 FL 집합에 엑세스하는 단계; 및
    상기 FL 집합으로부터 상기 복수의 소수점 이하 자릿수들 각각에 대응하는 양자화 오차들을 순차적으로 계산하는 단계를 포함하는 것을 특징으로 하는 인공 신경망의 양자화 방법.
  12. 청구항 10에 있어서,
    상기 적어도 하나의 양자화 오차를 계산하는 단계는,
    상기 입력 분포의 최대값이 포화(saturation)되지 아니하도록 하는 최소 소수점 이하 자릿수를 계산하는 단계; 및
    상기 최소 소수점 이하 자릿수부터 점진적으로 증가하는 소수점 이하 자릿수들에 대하여 순차적으로 양자화 오차들을 계산하는 단계를 포함하는 것을 특징으로 하는 인공 신경망의 양자화 방법.
  13. 청구항 12에 있어서,
    상기 순차적으로 상기 양자화 오차들을 계산하는 단계는, 이전에 계산된 양자화 오차보다 높은 양자화 오차가 발생하는 경우, 중단되는 것을 특징으로 하는 인공 신경망의 양자화 방법.
  14. 청구항 1에 있어서,
    상기 인공 신경망의 레이어 단위 또는 채널 단위로 상기 입력 분포를 획득하는 단계를 더 포함하는 양자화 방법.
  15. 메모리; 및
    상기 메모리에 저장된 컴퓨터로 실행가능한 프로시저들을 실행하는 프로세서를 포함하고,
    상기 컴퓨터로 실행가능한 프로시저들은,
    인공 신경망의 레이어가 생성하는 출력들의 분포를 포함하는 입력 분포로부터 분할된 복수의 세그먼트들을 각각 근사화한 복수의 함수들을 결합함으로써 근사 밀도 함수를 생성하도록 구성된 근사화기; 및
    상기 근사 밀도 함수의 양자화에 사용되는 적어도 하나의 스텝 사이즈에 대응하는 적어도 하나의 양자화 오차를 계산하고, 상기 근사 밀도 함수를 양자화하기 위한 상기 적어도 하나의 양자화 오차에 따라 최종 스텝 사이즈를 결정하도록 구성된 양자화기를 포함하고,
    상기 근사화기는, 상기 복수의 세그먼트들을 복수의 함수들로 상호 독립적으로 근사화하고, 상기 복수의 함수들을 결합함으로써 상기 근사 밀도 함수를 생성하도록 더 구성된 것을 특징으로 하는 장치.
  16. 청구항 15에 있어서,
    상기 근사화기는, 세그먼트들의 개수를 입력 파라미터로서 수신하고, 상기 입력 분포를 수신된 상기 개수의 세그먼트들로 분할하도록 더 구성된 것을 특징으로 하는 장치.
  17. 청구항 15에 있어서,
    상기 근사화기는, 다항식의 차수를 입력 파라미터로서 수신하고, 상기 복수의 세그먼트들을 수신된 상기 차수의 다항식들로 각각 근사화하도록 더 구성된 것을 특징으로 하는 장치.
  18. 청구항 15에 있어서,
    상기 양자화기는, 상기 적어도 하나의 스텝 사이즈에 다른 과부하 왜곡(overload distortion) 및 입상 왜곡(granular distortion)의 합을 상기 적어도 하나의 양자화 오차로서 계산하도록 더 구성된 것을 특징으로 하는 장치.
  19. 청구항 15에 있어서,
    상기 양자화기는, 상기 입력 분포의 최대값이 포화되지 아니하도록 하는 최소 소수점 이하 자릿수를 계산하고, 상기 최소 소수점 이하 자릿수부터 점진적으로 증가하는 소수점 이하 자릿수들에 대하여 저점(trough)이 나올 때까지 순차적으로 양자화 오차를 계산하도록 더 구성되는 것을 특징으로 하는 장치.
  20. 부동 소수점 신경망을 양자화하는 방법으로서,
    부동 소수점 신경망의 레이어가 생성하는 출력들의 분포를 포함하는 입력 분포를 동일한 폭을 가지는 복수의 세그먼트들로 분할하는 단계;
    상기 복수의 세그먼트들을 각각 근사화한 다항식들을 결합함으로써 근사 밀도 함수를 생성하는 단계;
    상기 근사 밀도 함수의 양자화에 사용되는 적어도 하나의 소수점 이하 자릿수(fractional length; FL)들에 대응하는 적어도 하나의 양자화 오차를 계산하는 단계; 및
    상기 적어도 하나의 양자화 오차에 기초하여, 상기 근사 밀도 함수를 양자화하기 위한 최종 소수점 이하 자릿수를 결정하는 단계를 포함하고,
    상기 근사 밀도 함수를 생성하는 단계는,
    상기 복수의 세그먼트들을 복수의 함수들로 상호 독립적으로 근사화하는 단계; 및
    상기 복수의 함수들을 결합함으로써 상기 근사 밀도 함수를 생성하는 단계를 포함하는 것을 특징으로 하는 부동 소수점 신경망의 양자화 방법.
KR1020170123658A 2017-09-25 2017-09-25 인공 신경망의 양자화 방법 및 장치 Active KR102728799B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020170123658A KR102728799B1 (ko) 2017-09-25 2017-09-25 인공 신경망의 양자화 방법 및 장치
CN201810589961.9A CN109558945A (zh) 2017-09-25 2018-06-08 对人工神经网络及浮点神经网络进行量化的方法及装置
US16/008,275 US11275986B2 (en) 2017-09-25 2018-06-14 Method and apparatus for quantizing artificial neural network
DE102018121905.9A DE102018121905A1 (de) 2017-09-25 2018-09-07 Verfahren und Vorrichtung zum Quantisieren von künstlichen neuronalen Netzen
TW107132005A TWI791610B (zh) 2017-09-25 2018-09-12 對人工神經網路及浮點神經網路進行量化的方法及裝置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170123658A KR102728799B1 (ko) 2017-09-25 2017-09-25 인공 신경망의 양자화 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20190034985A KR20190034985A (ko) 2019-04-03
KR102728799B1 true KR102728799B1 (ko) 2024-11-11

Family

ID=65638919

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170123658A Active KR102728799B1 (ko) 2017-09-25 2017-09-25 인공 신경망의 양자화 방법 및 장치

Country Status (5)

Country Link
US (1) US11275986B2 (ko)
KR (1) KR102728799B1 (ko)
CN (1) CN109558945A (ko)
DE (1) DE102018121905A1 (ko)
TW (1) TWI791610B (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11195096B2 (en) * 2017-10-24 2021-12-07 International Business Machines Corporation Facilitating neural network efficiency
GB2568084B (en) * 2017-11-03 2022-01-12 Imagination Tech Ltd Error allocation format selection for hardware implementation of deep neural network
JP7056225B2 (ja) * 2018-02-26 2022-04-19 富士通株式会社 演算処理装置、情報処理装置、情報処理方法、およびプログラム
US10325185B1 (en) * 2019-01-23 2019-06-18 StradVision, Inc. Method and device for online batch normalization, on-device learning, and continual learning applicable to mobile devices or IOT devices additionally referring to one or more previous batches to be used for military purpose, drone or robot, and testing method and testing device using the same
US10592799B1 (en) * 2019-01-23 2020-03-17 StradVision, Inc. Determining FL value by using weighted quantization loss values to thereby quantize CNN parameters and feature values to be used for optimizing hardware applicable to mobile devices or compact networks with high precision
US10325352B1 (en) * 2019-01-23 2019-06-18 StradVision, Inc. Method and device for transforming CNN layers to optimize CNN parameter quantization to be used for mobile devices or compact networks with high precision via hardware optimization
US11068784B2 (en) * 2019-01-26 2021-07-20 Mipsology SAS Generic quantization of artificial neural networks
KR102782971B1 (ko) * 2019-05-08 2025-03-18 삼성전자주식회사 인공 신경망 모델을 트레이닝하는 컴퓨팅 장치, 인공 신경망 모델을 트레이닝하는 방법 및 이를 저장하는 메모리 시스템
WO2020248423A1 (zh) * 2019-06-12 2020-12-17 上海寒武纪信息科技有限公司 一种神经网络的量化参数确定方法及相关产品
EP4020329A4 (en) 2019-08-23 2023-07-05 Anhui Cambricon Information Technology Co., Ltd. DATA PROCESSING METHOD AND EQUIPMENT, COMPUTER EQUIPMENT AND STORAGE MEDIA
CN112446460B (zh) * 2019-08-28 2025-12-16 上海寒武纪信息科技有限公司 用于处理数据的方法、装置以及相关产品
WO2021037082A1 (zh) * 2019-08-28 2021-03-04 上海寒武纪信息科技有限公司 用于处理数据的方法、装置以及相关产品
US20220138566A1 (en) * 2019-08-29 2022-05-05 Rakuten Group, Inc. Learning system, learning method and program
CN110717585B (zh) * 2019-09-30 2020-08-25 上海寒武纪信息科技有限公司 神经网络模型的训练方法、数据处理方法和相关产品
US11775611B2 (en) * 2019-11-01 2023-10-03 Samsung Electronics Co., Ltd. Piecewise quantization for neural networks
CN113112009B (zh) * 2020-01-13 2023-04-18 中科寒武纪科技股份有限公司 用于神经网络数据量化的方法、装置和计算机可读存储介质
KR102384255B1 (ko) 2020-01-20 2022-04-06 경희대학교 산학협력단 인공 신경망의 가중치를 처리하는 방법 및 장치
CN113298843B (zh) * 2020-02-24 2024-05-14 中科寒武纪科技股份有限公司 数据量化处理方法、装置、电子设备和存储介质
CN111401518B (zh) * 2020-03-04 2024-06-04 北京硅升科技有限公司 一种神经网络量化方法、装置及计算机可读存储介质
CN111510157B (zh) 2020-04-15 2022-03-04 腾讯科技(深圳)有限公司 基于神经网络的量子纠错解码方法、装置及芯片
KR102455310B1 (ko) 2020-05-08 2022-10-18 한국전자통신연구원 콘볼루션 신경망 양자화 추론 장치 및 방법
KR102520572B1 (ko) * 2020-06-22 2023-04-11 한양대학교 산학협력단 이미지 근사화 및 가중치 양자화를 이용한 객체 검출 가속화 방법 및 이를 이용하는 뉴럴 가속기
DE102021100404A1 (de) 2021-01-12 2022-07-14 Bayerische Motoren Werke Aktiengesellschaft Verfahren zum Bestimmen einer optimierten komprimierten Netzkonfiguration, Assistenzeinrichtung und Kraftfahrzeug
JP7325015B2 (ja) * 2021-03-24 2023-08-14 パナソニックIpマネジメント株式会社 量子化方法、量子化装置、及び、プログラム
US20230008014A1 (en) * 2021-07-07 2023-01-12 Renesas Electronics Corporation Data processing device, data-processing method and recording media
TWI819627B (zh) * 2022-05-26 2023-10-21 緯創資通股份有限公司 用於深度學習網路的優化方法、運算裝置及電腦可讀取媒體
CN115311506B (zh) * 2022-10-11 2023-03-28 之江实验室 基于阻变存储器的量化因子优化的图像分类方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030021440A1 (en) 1993-11-18 2003-01-30 Rhoads Geoffrey B. Digital watermarking employing noise model
US20140310216A1 (en) * 2013-04-15 2014-10-16 Qualcomm Incorporated Method for generating compact representations of spike timing-dependent plasticity curves
US20170270408A1 (en) 2016-03-16 2017-09-21 Hong Kong Applied Science and Technology Research Institute Company, Limited Method and System for Bit-Depth Reduction in Artificial Neural Networks

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6961719B1 (en) 2002-01-07 2005-11-01 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Hybrid neural network and support vector machine method for optimization
US7774143B2 (en) 2002-04-25 2010-08-10 The United States Of America As Represented By The Secretary, Department Of Health And Human Services Methods for analyzing high dimensional data for classifying, diagnosing, prognosticating, and/or predicting diseases and other biological states
CA2642041C (en) 2005-12-23 2014-07-15 Le Tan Thanh Tai Spatio-temporal pattern recognition using a spiking neural network and processing thereof on a portable and/or distributed computer
US9620426B2 (en) 2010-02-18 2017-04-11 Kla-Tencor Corporation Method and system for providing process tool correctables using an optimized sampling scheme with smart interpolation
EP2742467B1 (en) 2011-08-11 2016-07-20 Greenray Industries, Inc. Neural network frequency control
EP2981136B1 (en) 2013-03-28 2018-10-24 Fujitsu Limited Terminal device, position estimation method, position estimation system, and program
US10964409B2 (en) 2013-10-04 2021-03-30 Sequenom, Inc. Methods and processes for non-invasive assessment of genetic variations
KR101924487B1 (ko) * 2013-12-17 2018-12-03 에이에스엠엘 네델란즈 비.브이. 수율 추산 및 제어
US10019990B2 (en) 2014-09-09 2018-07-10 Microsoft Technology Licensing, Llc Variable-component deep neural network for robust speech recognition
US10373050B2 (en) 2015-05-08 2019-08-06 Qualcomm Incorporated Fixed point neural network based on floating point neural network quantization
US10262259B2 (en) 2015-05-08 2019-04-16 Qualcomm Incorporated Bit width selection for fixed point neural networks
US10643124B2 (en) * 2016-08-12 2020-05-05 Beijing Deephi Intelligent Technology Co., Ltd. Method and device for quantizing complex artificial neural network
CN107256422A (zh) * 2017-06-06 2017-10-17 上海兆芯集成电路有限公司 数据量化方法及装置
US9916531B1 (en) * 2017-06-22 2018-03-13 Intel Corporation Accumulator constrained quantization of convolutional neural networks

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030021440A1 (en) 1993-11-18 2003-01-30 Rhoads Geoffrey B. Digital watermarking employing noise model
US20140310216A1 (en) * 2013-04-15 2014-10-16 Qualcomm Incorporated Method for generating compact representations of spike timing-dependent plasticity curves
US20170270408A1 (en) 2016-03-16 2017-09-21 Hong Kong Applied Science and Technology Research Institute Company, Limited Method and System for Bit-Depth Reduction in Artificial Neural Networks

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
K. Hwang 등, 'Fixed-Point Feedforward Deep Neural Network Design Using Weights +1, 0, and -1', 2014 IEEE Workshop on Signal Processing Systems (SiPS), Belfast, UK, 2014, pp. 1-6.
S. Han 등, "DEEP COMPRESSION: COMPRESSING DEEP NEURAL NETWORKS WITH PRUNING, TRAINED QUANTIZATION AND HUFFMAN CODING", arXiv:1510.00149v5 [cs.CV], 2016.02.15. 1부.*
S. Zhou 등, "Balanced Quantization: An Effective and Efficient Approach to Quantized Neural Networks", JOURNAL OF COMPUTER SCIENCE AND TECHNOLOGY 32(4): pp. 667-682, 2017.07. 1부.*
Z. Cai 등, "Deep Learning With Low Precision by Half-Wave Gaussian Quantization", Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pp. 5918-5926, 2017. 1부.*
Z. Qiu 등, 'Deep quantization: Encoding convolutional activations with deep generative model', Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017.

Also Published As

Publication number Publication date
TWI791610B (zh) 2023-02-11
US11275986B2 (en) 2022-03-15
CN109558945A (zh) 2019-04-02
US20190095777A1 (en) 2019-03-28
KR20190034985A (ko) 2019-04-03
DE102018121905A1 (de) 2019-03-28
TW201915839A (zh) 2019-04-16

Similar Documents

Publication Publication Date Title
KR102728799B1 (ko) 인공 신경망의 양자화 방법 및 장치
KR102782965B1 (ko) 인공 신경망의 양자화 방법 및 장치
KR102788531B1 (ko) 고정 소수점 뉴럴 네트워크를 생성하는 방법 및 장치
KR102589303B1 (ko) 고정 소수점 타입의 뉴럴 네트워크를 생성하는 방법 및 장치
CN111652368B (zh) 一种数据处理方法及相关产品
KR102855357B1 (ko) 뉴럴 네트워크 장치 및 뉴럴 네트워크의 파라미터 양자화 방법
CN110880038B (zh) 基于fpga的加速卷积计算的系统、卷积神经网络
EP3474194B1 (en) Method and apparatus with neural network parameter quantization
CN110969251B (zh) 基于无标签数据的神经网络模型量化方法及装置
US20200302283A1 (en) Mixed precision training of an artificial neural network
US11972347B2 (en) System and method for emulating quantization noise for a neural network
KR102368590B1 (ko) 전자 장치 및 그 제어 방법
CN112561050B (zh) 一种神经网络模型训练方法及装置
CN114254746A (zh) 执行神经网络的方法和设备
KR102765759B1 (ko) 딥 뉴럴 네트워크를 양자화하는 방법 및 장치
KR20210035702A (ko) 인공 신경망의 양자화 방법 및 인공 신경망을 이용한 연산 방법
US20220405561A1 (en) Electronic device and controlling method of electronic device
CN115688878A (zh) 量化门限调优方法、装置、设备及存储介质
Mujtaba et al. AuGQ: Augmented quantization granularity to overcome accuracy degradation for sub-byte quantized deep neural networks
US20250068895A1 (en) Quantization method and apparatus for artificial neural network
US20230385600A1 (en) Optimizing method and computing apparatus for deep learning network and computer-readable storage medium
US20240361988A1 (en) Optimizing method and computing system for deep learning network

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20170925

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20200908

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20170925

Comment text: Patent Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20230429

Patent event code: PE09021S01D

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20231130

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20240806

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20241106

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20241107

End annual number: 3

Start annual number: 1

PG1601 Publication of registration