KR102243119B1 - 가변 정밀도 양자화 장치 및 방법 - Google Patents

가변 정밀도 양자화 장치 및 방법 Download PDF

Info

Publication number
KR102243119B1
KR102243119B1 KR1020190086281A KR20190086281A KR102243119B1 KR 102243119 B1 KR102243119 B1 KR 102243119B1 KR 1020190086281 A KR1020190086281 A KR 1020190086281A KR 20190086281 A KR20190086281 A KR 20190086281A KR 102243119 B1 KR102243119 B1 KR 102243119B1
Authority
KR
South Korea
Prior art keywords
data
bit
binary
bits
incremental
Prior art date
Application number
KR1020190086281A
Other languages
English (en)
Other versions
KR20210009584A (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 KR1020190086281A priority Critical patent/KR102243119B1/ko
Publication of KR20210009584A publication Critical patent/KR20210009584A/ko
Application granted granted Critical
Publication of KR102243119B1 publication Critical patent/KR102243119B1/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/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena
    • 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
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B82NANOTECHNOLOGY
    • B82YSPECIFIC USES OR APPLICATIONS OF NANOSTRUCTURES; MEASUREMENT OR ANALYSIS OF NANOSTRUCTURES; MANUFACTURE OR TREATMENT OF NANOSTRUCTURES
    • B82Y10/00Nanotechnology for information processing, storage or transmission, e.g. quantum computing or single electron logic

Landscapes

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

Abstract

본 발명은 입력 데이터를 인가받아 입력 데이터의 범위별로 정밀도가 가변되는 n 비트의 가변 정밀도 데이터로 양자화하기 위해, n 비트의 데이터를 이진 비트 구간 및 증가 비트 구간으로 구분하고, 요구되는 표현 정밀도 및 표현 범위 따라 상기 증가 비트 구간의 비트 수가 조절되도록 n 비트 중 상기 이진 비트 구간의 비트 수를 설정하는 이진 비트 구간 설정부 및 양자화되는 입력 데이터의 양자화 범위를 조절하기 위해 상기 이진 비트 구간에 입력되는 이진 데이터의 최소 증감 단위를 지정하여 증분 데이터를 계산하고, 상기 증분 데이터에 따른 양자화 범위에서 상기 입력 데이터에 대응하는 값을 나타내는 이진 데이터를 계산하며, 계산된 증분 데이터와 이진 데이터를 순차적으로 배치하여 가변 정밀도 데이터로 변환하는 가변 정밀도 변환부를 포함하는 가변 정밀도 양자화 장치 및 방법을 제공할 수 있다.

Description

가변 정밀도 양자화 장치 및 방법{QUANTIZATION APPARATUS AND METHOD USING NUMERICAL REPRESENTATION WITH DYNAMIC PRECISION}
본 발명은 양자화 장치 및 방법에 관한 것으로, 가변되는 정밀도를 가질수 있는 가변 정밀도 양자화 장치 및 방법에 관한 것이다.
최근 인간의 두뇌가 패턴을 인식하는 방법을 모사하여 두뇌와 비슷한 방식으로 여러 정보를 처리하도록 구성되는 인공 신경망(artificial neural network)이 다양한 분야에 적용되어 사용되고 있다. 인공 신경망은 방대한 데이터를 바탕으로 하는 학습을 필요로 하며, 학습 과정에서 대량의 가산 및 곱셈 연산을 필요로 한다.
이러한 대량의 연산을 처리하기 위해, 고정 소수점이나 부동 소수점과 같이 수를 표현하기 위한 포멧이 이용되고 있으며, 연산 효율성을 향상시키기 위해 다양한 양자화(Quantization) 기법이 제안되고 있다. 그러나 일반적으로 양자화 기법을 이용하는 경우, 각 포멧에서 수를 표현하는 방식에 따른 정밀도와 효율성이 서로 반비례하는 특성이 있다. 즉 정밀도를 향상시키고자 하는 경우, 큰 메모리 용량과 대역폭 및 전력 소모를 요구하여 효율성이 낮아지며, 효율성을 향상시키고자 하는 경우 정밀도가 낮아지는 문제가 있다.
한국 공개 특허 제10-2019-0043849호 (2019.04.29 공개)
본 발명의 목적은 발생 빈도에 따른 데이터 분포에 기반하여 범위별로 정밀도를 상이하게 조절하여 양자화 할 수 있는 가변 정밀도 양자화 장치 및 방법을 제공하는데 있다.
본 발명의 다른 목적은 적은 데이터 크기로 수를 표현할 수 있는 가변 정밀도 포멧을 이용하여 연산 효율성을 크게 향상시키면서도 요구되는 정밀도를 유지할 수 있는 가변 정밀도 양자화 장치 및 방법을 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 가변 정밀도 양자화 장치는 입력 데이터를 인가받아 입력 데이터의 범위별로 정밀도가 가변되는 n 비트의 가변 정밀도 데이터로 양자화하기 위해, n 비트의 데이터를 이진 비트 구간 및 증가 비트 구간으로 구분하고, 요구되는 표현 정밀도 및 표현 범위 따라 상기 증가 비트 구간의 비트 수가 조절되도록 n 비트 중 상기 이진 비트 구간의 비트 수를 설정하는 이진 비트 구간 설정부; 및 양자화되는 입력 데이터의 양자화 범위를 조절하기 위해 상기 이진 비트 구간에 입력되는 이진 데이터의 최소 증감 단위를 지정하여 증분 데이터를 계산하고, 상기 증분 데이터에 따른 양자화 범위에서 상기 입력 데이터에 대응하는 값을 나타내는 이진 데이터를 계산하며, 계산된 증분 데이터와 이진 데이터를 순차적으로 배치하여 가변 정밀도 데이터로 변환하는 가변 정밀도 변환부; 를 포함한다.
상기 가변 정밀도 변환부는 이진수로 인가되는 입력 데이터에서 부호 비트를 제외한 최상위 비트의 비트 위치값에서 상기 이진 비트 구간의 비트 수를 차감하여 증분 데이터를 획득하고, 부호 비트와 다음 최상위 비트를 제외한 나머지 최상위 비트 중 최상위 비트로부터 순차적으로 이진 비트 구간의 비트 수만큼의 데이터를 이진 데이터로 추출하며, 이진 데이터로 추출된 비트를 제외한 나머지 비트 중 최상위 1비트를 반올림 비트 값으로 획득하여, 부호 비트를 최상위 비트로 획득된 증분 데이터 및 추출된 이진 데이터를 순차적으로 배열하고, 상기 반올림 비트 값을 가산하여 상기 가변 정밀도 데이터를 획득할 수 있다.
상기 양자화 장치는 상기 입력 데이터가 소수점 이하 자리를 포함하는 데이터이면, 정수형 데이터로 변환하고, 입력 데이터를 정수형 데이터로 변환하기 위한 지수값을 나타내는 스케일링 팩터를 획득하여 저장하는 스테일링 팩터 설정부; 를 더 포함할 수 있다.
상기 이진 비트 구간 설정부는 요구되는 표현 정밀도가 세밀하거나, 표현 범위가 넓을 수록 상기 이진 비트 구간의 비트 수를 감소시킬 수 있다.
상기 이진 비트 구간 설정부는 상기 입력 데이터의 분산에 비례하여 상기 이진 비트 구간의 비트 수를 증가시킬 수 있다.
상기 이진 비트 구간 설정부는 상기 입력 데이터에 부호 비트가 포함되어 있으면, 상기 n 비트의 가변 정밀도 데이터에서 최상위 비트를 부호 비트로 설정할 수 있다.
상기 목적을 달성하기 위한 본 발명의 다른 실시예에 따른 가변 정밀도 양자화 방법은 입력 데이터를 인가받아 입력 데이터의 범위별로 정밀도가 가변되는 n 비트의 가변 정밀도 데이터로 양자화하기 위해, n 비트의 데이터를 이진 비트 구간 및 증가 비트 구간으로 구분하는 단계; 요구되는 표현 정밀도 및 표현 범위 따라 상기 증가 비트 구간의 비트 수가 조절되도록 n 비트 중 상기 이진 비트 구간의 비트 수를 설정하는 단계; 및 양자화되는 입력 데이터의 양자화 범위를 조절하기 위해 상기 이진 비트 구간에 입력되는 이진 데이터의 최소 증감 단위를 지정하여 증분 데이터를 계산하고, 상기 증분 데이터에 따른 양자화 범위에서 상기 입력 데이터에 대응하는 값을 나타내는 이진 데이터를 계산하며, 계산된 증분 데이터와 이진 데이터를 순차적으로 배치하여 가변 정밀도 데이터로 변환하는 단계; 를 포함한다.
따라서, 본 발명의 실시예에 따른 가변 정밀도 양자화 장치 및 방법은 기지정된 길이를 갖는 데이터의 값을 표현하기 위한 포멧으로 이진값을 표현하는 이진 비트 구간과 이진값의 증가분을 조절하는 증가 비트 구간으로 구분하고, 이진값의 증가분을 조절하는 증가 비트 구간의 값에 따라 이진 비트 구간의 이진값의 변화를 서로 다른 크기로 양자화할 수 있다. 특히 데이터 분포에 기반하여 데이터에서 이진 비트 구간의 길이와 증가 비트의 길이를 조절하여, 지정된 길이의 데이터를 이용한 양자화에서 범위별로 정밀도가 상이하게 설정될 수 있도록 함으로써, 연산 효율성을 크게 향상시키면서도 요구되는 특정 범위에서의 정밀도를 유지할 수 있다.
도 1은 인공 신경망의 개략적 구조를 나타낸다.
도 2는 도 1의 인공 신경망에서 신경 노드의 개략적 구조를 나타낸다.
도 3은 도 1의 인공 신경망의 입력 액티베이션과 가중치의 빈도 히스토그램의 일예를 나타낸다.
도 4는 본 발명의 일 실시예에 따른 가변 정밀도 포멧을 설명하기 위한 도면이다.
도 5는 도 4의 가변 정밀도 포멧을 기존의 포멧과 비교한 결과를 나타낸다.
도 6은 본 실시예의 가변 정밀도 포멧으로 변환하는 방법을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 가변 정밀도 양자화 장치가 적용된 인공 신경망의 개략적 구조를 나타낸다.
도 8 및 도 9는 본 실시예에 따른 가변 정밀도 포멧 데이터의 가산 연산 알고리즘을 설명하기 위한 도면이다.
도 10 및 도 11은 본 실시예에 따른 가변 정밀도 포멧 데이터의 곱셈 연산 알고리즘을 설명하기 위한 도면이다.
도 12는 본 발명의 일 실시예에 따른 가변 정밀도 양자화 방법을 나타낸다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 그러나, 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며, 설명하는 실시예에 한정되는 것이 아니다. 그리고, 본 발명을 명확하게 설명하기 위하여 설명과 관계없는 부분은 생략되며, 도면의 동일한 참조부호는 동일한 부재임을 나타낸다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라, 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "...부", "...기", "모듈", "블록" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
도 1은 인공 신경망의 개략적 구조를 나타내고, 도 2는 도 1의 인공 신경망에서 신경 노드의 개략적 구조를 나타낸다.
도 1을 참조하면, 인공 신경망은 각각 다수의 신경 노드를 포함하는 다수의 레이어(layer1 ~ layers)를 포함하여 구성된다. 최초단의 레이어(layer1)는 입력 데이터를 인가받는 입력 레이어이고, 최종단의 레이어(layers)는 입력 데이터에 대해 인공 신경망에서 연산을 수행한 결과인 출력 데이터를 출력하는 출력 레이어로 기능한다. 그리고 입력 레이어(layer1)와 출력 레이어(layers) 사이의 적어도 하나의 레이어(layer2 ~ layers-1)는 은닉 레이어로서 이전단의 레이어의 신경 노드들로부터 데이터를 인가받고, 인가된 데이터 각각에 대해 기지정된 연산을 수행하여 다음 레이어로 전달한다. 여기서 다수의 신경 노드 각각에 입력되는 데이터를 입력 액티베이션이라하고, 다수의 신경 노드 각각에서 출력되는 데이터를 출력 액티베이션이라 할 수 있다.
도 2를 참조하면, 은닉 레이어(layer2 ~ layers-1)의 다수의 신경 노드 각각은 이전 레이어의 신경 노드들에서 전달된 입력 액티베이션(IA)(x1, x2, x3, ... xm) 각각에 대해 가중치(weight)(w1j, w2j, w3j, ... wmj)를 가중하여 각 데이터의 반영 수준을 조절하고, 가중치가 가중된 입력 액티베이션들의 총합에 각 노드에 지정된 바이어스(bias)(bi)를 더하고, 활성화 수준을 조절하기 위한 활성 함수(activation function)(f)를 적용하여 다음 레이어의 다수의 신경 노드로 출력 액티베이션(OA)(yi)을 출력한다.
여기서 다수의 신경 노드 각각은 다수의 입력 액티베이션(x1, x2, x3, ... xm) 각각에 대해 지정된 가중치(w1j, w2j, w3j, ... wmj)를 가중하며, 가중치(w1j, w2j, w3j, ... wmj)는 인공 신경망의 학습을 통해 지정된 값을 가진다.
그리고 인공 신경망은 대량의 학습 데이터에 대해 지정된 연산을 수행하고, 대량의 학습 데이터 각각에 대한 연산 수행 결과가 기지정된 오차 범위 이내가 되도록 반복적으로 학습된다. 학습 데이터를 이용한 학습 과정에서 인공 신경망의 가중치(w1j, w2j, w3j, ... wmj)는 오차 역전파 기법에 따라 업데이트된다.
즉 인공 신경망은 학습 과정 동안, 동일한 연산을 학습 데이터의 양과 반복 횟수에 따라 가중치(w1j, w2j, w3j, ... wmj)를 업데이트하면서 계속적으로 반복하여 수행한다. 이에 입력 및 출력 액티베이션과 가중치를 양자화하여 연산 효율성을 높일 필요가 있다.
그러나 양자화를 수행하는 경우에는 양자화 오차가 발생하며, 이러한 양자화 오차는 양자화 비트수가 적을 수록 증가한다. 특히 인공 신경망의 딥러닝 과정에서는 레이어의 개수가 증가할 수록 연산 오차가 반복적으로 누적되므로, 양자화 오차로 인한 정확도가 반복 누적되어 인공 신경망의 정확도가 크게 낮아지게 되는 문제가 있다.
도 3은 도 1의 인공 신경망의 입력 액티베이션과 가중치의 빈도 히스토그램의 일예를 나타낸다.
도 3은 cifar-10 데이터 셋에 대해 인공 신경망 중 하나인 ResNET-32 모델을 기반으로 학습을 수행하는 경우, 신경 노드에 인가되는 입력 액티베이션과 가중치를 값에 따른 출현 빈도 분포를 히스토그램으로 나타낸 결과를 나타낸다.
도 3에서 (a) 내지 (c)는 ResNET-32 모델에서 서로 다른 레이어의 신경 노드의 입력 액티베이션과 가중치를 나타내고 있다. 일예로 도 3에서 (a)는 도1 의 입력 레이어(layer1)에서의 입력 액티베이션과 가중치의 분포이고, (b)는 은닉 레이어(layer2)에서의 분포이며, (c)는 출력 레이어(layers)에서의 분포일 수 있다.
도 3을 참조하면, 서로 다른 레이어에 대한 신경 노드의 입력 액티베이션과 가중치의 분포를 나타내고 있음에도, 입력 액티베이션과 가중치는 0에 가까운 값을 평균으로 갖는 정규 분포와 유사한 패턴을 가진다는 것을 알 수 있다. 이와 같이 데이터가 정규 분포를 따르는 경우, 발생 빈도가 가장 높은 데이터 구간에서 세밀한 표현이 가능하다면, 상대적으로 더 정확한 연산을 수행할 수 있다. 그리고 발생 빈도가 낮은 데이터의 경우에는 오차가 발생하더라도, 발생 빈도가 높은 데이터의 오차에 비해 인공 신경망 전체에 미치는 영향이 상대적으로 작게 나타나게 된다.
또한 도 3에 도시된 바와 같이, 입력 액티베이션과 가중치의 분포는 인공 신경망 모델 및 레이어별로 상이할 수 있기 때문에, 인공 신경망의 모든 신경 노드에서 고정 소수점이나 부동 소수점 포멧과 같이 동일한 포멧을 이용하는 경우, 정확도 또는 연산 효율성이 저하되는 문제가 있다.
따라서 각 레이어별로 다양하게 변화하는 액티베이션과 가중치의 값 분포에 대응하는 새로운 포멧으로 수를 표현할 수 있다면, 연산 정확도와 효율성을 모두 향상시킬 수 있다.
도 4는 본 발명의 일 실시예에 따른 가변 정밀도 포멧을 설명하기 위한 도면이다.
도 4를 참조하면, 본 실시예에 따른 가변 정밀도 포멧은 n 비트 길이를 갖는 데이터가 부호값을 나타내는 부호 비트와 이진값을 표현하는 이진 비트 구간 및 이진 데이터의 최소 증감 단위를 조절하는 증가 비트 구간으로 구분될 수 있다.
n 비트 길이의 데이터에서 1비트의 부호 비트는 데이터의 부호를 표현하기 위한 비트로서 부호 비트가 0이면 데이터가 양수임을 나타내고, 1이면 데이터가 음수임을 나타낼 수 있다. 도 4에서는 데이터가 음의 값을 나타낼 수 있도록 부호값을 나타내는 부호 비트를 포함하였으나, 데이터가 부호를 표현할 필요가 없는 경우, 부호 비트는 생략될 수 있다.
그리고 n 비트의 데이터에서 k비트의 이진 비트 구간은 기존의 포멧과 같이 데이터의 값을 표현하기 위한 구간이다. 이진 비트 구간은 기존과 같이 이진수로서 데이터(M)의 값을 표현한다. 이진수로 데이터의 값이 표현되므로, 이진 비트 구간의 이진 데이터(M)는 최소 1단위로 증감될 수 있다.
증가 비트 구간은 n 비트의 데이터에서 1비트의 부호 비트와 k 비트의 이진 비트 구간이 제외되어 n-1-k 비트의 길이를 갖는다. 일예로 데이터가 8 비트(n = 8)의 길이를 갖고 이진 비트 구간이 4 비트(k = 4)인 경우, 증가 비트 구간은 3비트의 길이(8 - 1 - 4 = 3)를 갖는다.
그리고 증가 비트 구간의 증분 데이터(N)는 k비트의 이진 비트 구간의 이진 데이터(M)가 증가 또는 감소되는 최소 간격을 조절한다. 증가 비트 구간의 증분 데이터(N)는 증가 또는 감소되는 이진 데이터(M)의 값이 증분 데이터(N)에 대응하는 단위로 증가 또는 감소되는 것으로 해석되도록 한다.
8 비트 길이의 데이터에서 이진 비트 구간이 4(k = 4)인 가변 정밀도 포멧을 예로 들어 설명한다.
증가 비트 구간의 증분 데이터(N)가 "000"인 경우, 이진 데이터(M)의 값이 "0000"에서 "0001"으로 1증가되면, 본 실시예의 가변 정밀도 포멧에서 8비트의 데이터는 십진수 0에서 1로 증가된다. 즉 이진 비트 구간의 이진 데이터(M)의 1 증가 또는 감소는 기존과 동일하게 증가 또는 감소된다.
그러나 증가 비트 구간의 증분 데이터(N)가 "001"인 경우, 이진 데이터(M)의 값이 "0000"에서 "0001"으로 1증가되면, 가변 정밀도 포멧에서 8비트의 데이터는 십진수 2를 나타낸다. 즉 증가 비트 구간의 증분 데이터(N)에 따라 이진 비트 구간의 이진 데이터(M)의 1 증가 또는 감소가 최소 2 단위로 증가 또는 감소되는 것으로 해석될 수 있다.
또한 증가 비트 구간의 증분 데이터(N)가 "010"인 경우, 이진 데이터(M)의 값 "0001"은 십진수 4를 나타내고, 이진 데이터(M)의 값 "0010"은 십진수 8을 나타내게 된다.
이러한 도 4의 가변 정밀도 포멧에 따른 데이터는 수학식 1에 따라 십진수로 변환될 수 있다.
Figure 112019073193232-pat00001
수학식 1에 따르면, 8 비트 길이의 데이터에서 이진 비트 구간이 4인 가변 정밀도 포멧에서 "00101000"은 k = 4이고, N이 2이며, M이 8이므로, 십진수 80(= 24 × (22 - 1) + 22 × 8)을 나타낸다.
이는 가변 정밀도 포멧에서는 증분 데이터(N)에 따라 0에 가까울 수록 세밀한 간격을 갖고, 증분 데이터(N)가 증가될 수록 점차로 넓은 간격의 수를 표현할 수 있음을 의미한다.
그리고 데이터에서 이진 비트 구간의 비트 수(k)는 필요에 따라 조절될 수 있다. 이진 비트 구간의 비트 수(k)가 증가 또는 감소되면, 지정된 비트 길이를 갖는 데이터에서 증가 비트 구간의 길이(여기서는 일예로 n-1-k)는 감소 또는 증가된다. 그리로 증가 비트 구간의 길이의 변화로 인해, 가변 정밀도 포멧이 나타낼 수 있는 값의 범위는 크게 변화된다.
표 1은 본 실시예에 다른 가변 정밀도 포멧에서 이진 비트 구간의 비트 수(k)에 따른 데이터 값의 변화의 일부를 나타낸다.
Figure 112019073193232-pat00002
표 1에서는 부호 비트로 1비트를 제외한 7비트의 데이터를 도 4의 가변 정밀도 포멧에 따라 나타내었으며, 이진 비트 구간의 비트 수(k)의 변화에 따른 데이터 값의 변화를 나타낸다.
표 1을 참조하면, 이진 비트 구간의 비트 수(k)가 3, 4 및 5인 경우에 모두, "0000000" ~ "0001000"은 0 ~ 8의 값을 나타낸다. 그러나 "0001001" ~ "0010000"에서 이진 비트 구간의 비트 수(k)가 4 및 5인 경우에는 값이 여전히 1씩 증가하여 9 ~ 16의 값을 나타내는 반면, 비트 수(k)가 3인 경우에는 값이 2씩 증가되어 10 ~ 24의 값을 나타내게 된다.
그리고 "0010001" ~ "0011000"에서는 비트 수(k)가 5인 경우에만 여전히 1씩 증가하여 17 ~ 24의 값을 나타내고, 비트 수(k)가 4인 경우에는 2씩 증가되어 18 ~ 32의 값을 나타내며, 비트 수(k)가 3인 경우에는 4씩 증가되어 28 ~ 56의 값을 나타내게 된다.
또한 "0011001" ~ "0100000"에서 비트 수(k)가 5인 경우에는 1씩 증가하여 25 ~ 32의 값을 나타내고, 비트 수(k)가 4인 경우에도 여전히 2씩 증가되어 34 ~ 48의 값을 나타내는 반면, 비트 수(k)가 3인 경우에는 8씩 증가되어 64 ~ 120의 값을 나타내게 된다.
즉 표 1에 나타난 바와 같이, 도 4의 가변 정밀도 포멧은 동일한 비트에서 다른 포멧의 수 표현 기법에 비해 더 넓은 범위의 수를 표현할 수 있다. 일예로 8비트의 정수는 -128 ~ 127의 범위를 표현할 수 있는 반면, 가변 정밀도 포멧에서는 이진 비트 구간의 비트 수(k)가 3인 경우에, 동일한 8비트로 양의 정수를 기준으로 최대 491,512( = 23 × (215 - 1) + 215 × 7)의 값을 나타낼 수 있다. 이는 8비트 정수에 비해 대략 3,870배의 범위를 표현할 수 있음을 의미한다. 또한 0의 값으로부터 가까운 "0000000" ~ "0001000"의 범위에서는 기존과 동일하게 증가 또는 감소 간격을 유지하고, 0에서 멀어질수록 증가 또는 감소 간격이 커지게 된다. 이는 0에 인접한 구간에 대해서는 기존의 정밀도를 유지할 수 있음을 의미한다.
즉 본 실시예에 따른 가변 정밀도 포멧은 동일한 비트 수의 데이터로 매우 큰 범위의 값을 표현할 수 있다. 이때 표현해야 하는 수의 범위와 발생 빈도에 따른 분포에 기반하여 이진 비트 구간의 비트 수(k)를 조절함으로써, 제한된 비트 수의 데이터에서 요구되는 형태로 수를 표현할 수 있게 된다. 특히 일부 범위에 높은 발생 빈도를 갖는 수를 표현하고자 하는 경우에 정밀도를 가능한 유지하면서 높은 효율성을 나타낼 수 있다.
이는 반대로 지정된 범위 내의 수를 지정된 비트수의 데이터로 양자화하고자 하는 경우에, 구간별 정밀도를 차등화 할 수 있어 일부 구간에서의 정밀도를 크게 향상 시킬 수 있다. 이는 특정 구간에서 높은 발생 빈도를 갖는 정규 분포 패턴을 양자화 함에 있어, 동일한 비트 수로도 높은 정밀도를 제공할 수 있음을 의미한다. 즉 양자화 시에 정밀도를 향상시키기 위해 비트 수를 높이지 않아도 되므로, 높은 연산 효율성을 유지할 수 있다.
도 5는 도 4의 가변 정밀도 포멧을 기존의 포멧과 비교한 결과를 나타낸다.
도 5는 0 ~ 4로 지정된 범위를 8비트의 데이터로 양자화하는 경우, 가변 정밀도 포멧과 기존의 표현에 따른 표현값과 구간별 표현값의 분포, 즉 표현 가능한 표현값의 개수를 도시하였다. 도 5에서 (a)는 기존의 고정 소수점 포멧과 비교한 결과를 나타내고, (b)는 부동 소수점 포멧과 비교한 결과를 나타낸다. 그리고 (a) 및 (b) 각각에서 이진 비트 구간의 비트 수(k)가 4 및 5인 경우를 함께 도시하였다.
도 5의 (a)를 살펴보면, 기존의 고정 소수점 포멧 균일한 값 분포를 나타내게 되며, 이에 값 분포가 항시 균등하게 나타나게 된다. 이는 균일한 값 분포를 갖는 경우에 적합하지만, 도 3에 도시된 바와 같이, 정규 분포와 유사한 값의 분포 패턴을 갖는 시스템에서의 양자화에서는 세밀한 값 표현이 어렵기 때문에 비효율적이다. 그에 반해, 본 실시예에 따른 가변 정밀도 포멧의 경우, 비록 0에서 멀어질 수록 값의 분포가 크게 낮아지게 되지만, 0에 근접한 구간에서는 표현할 수 있는 표현값이 크게 증가한다. 즉 동일한 비트 수의 데이터로 0에 근접한 구간에서의 값을 세밀하게 표현할 수 있다.
한편 (b)를 살펴보면, 부동 소수점 포멧의 경우, 지수 표현 방식을 이용하므로, 0에 매우 근접한 값에 대해 매우 세밀한 표현이 가능함을 알 수 있다. 그러나 부동 소수점 포멧은 0에 매우 근접한 값에 대해서 세밀한 표현이 가능하지만 0에서 조금만 멀어지더라도 표현 가능한 수의 개수가 기하급수적으로 줄어든다. 이는 매우 작은 분산을 갖는 값들을 표현하기에는 적합하지만, 대부분의 경우, 이러한 조건을 만족할 수 없다. 즉 다양한 분산의 분포를 나타내는 값들을 표현하기에 적합하지 않으며, 필요 이상의 비트 수를 요구하여 비효율적인 경우가 빈번하게 발생한다.
그에 반해, 본 실시예에 따른 가변 정밀도 포멧의 경우, 이진 비트 구간의 비트 수(k)를 적절하게 선택하여 결정함으로써, (b)에 도시된 바와 같이, 다양한 분산 분포를 갖는 수 표현이 가능하다. 즉 피연산자 값의 분산 분포를 고려하여 이진 비트 구간의 비트 수(k)를 결정함으로써, 적은 비트수로 효율적으로 정밀한 수 표현이 가능해진다.
다만 본 실시예에 따른 가변 정밀도 포멧에서는 정수를 표현하도록 구성되므로, 소수점 이하 자리에 대해 표현할 수 없다. 따라서 소수점을 표현하기 위해서는 별도로 소수점 자리를 나타내는 스케일링 팩터(scaling factor)를 가변 정밀도 포멧에 곱해주어야 한다. 이때 스케일링 팩터는 부동 소수점 포멧과 유사하게 2의 음의 지수승 형태(2-e)로 표현될 수 있다.
도 6은 본 실시예의 가변 정밀도 수로 변환하는 방법을 설명하기 위한 도면이다.
여기서는 십진수(A)를 7비트의 가변 정밀도 수로 변환하는 과정을 설명하며, 일예로 십진수 83(A = 83)을 변환하는 과정을 설명한다. 그리고 이진 비트 구간의 비트 수(k)는 4 인 것으로 가정한다.
도 6를 참조하여, 가변 정밀도 수 변환 과정을 살펴보면, 7비트의 양의 정수 83(10)은 이진수 "1010011(2)"로 나타난다. 이진수를 A라고 할 때, 우선 a)와 같이 이진수에 이진 비트 구간의 비트 수(k)에 대응하는 2k 를 더하여 A'을 계산한다.
그리고 b)와 같이, A'에서 최상위 비트(MSB)의 위치에서 k(=4)를 차감하여 증분 데이터(N)의 값(N = 010(2))을 획득한다. 증분 데이터(N)가 획득되면, c)와 같이 최상위 비트(MSB)를 제외한 나머지 6비트에서 다시 최상위 비트로부터 하위 비트 순서로 k개 비트의 데이터(1000(2))를 이진 데이터(M)으로서 추출한다.
k개 비트의 데이터가 추출되면 d)와 같이 2개의 비트가 남게 된다. 여기서 2개의 비트 중 최상위 비트는 반올림 비트(rounding bit)로서, c)에서 획득된 이진 데이터(M)에 더하여 십진수(A = 83)를 가변 정밀도 수(DP(A)) "0101001" 로 변환할 수 있다.
도 7은 본 발명의 일 실시예에 따른 가변 정밀도 양자화 장치가 적용된 인공 신경망의 개략적 구조를 나타낸다.
도 7을 참조하면, 본 실시예에 따른 인공 신경망(100)은 가변 정밀도 변환부(110), 이진 비트 구간 설정부(120), 신경 노드부(130), 노드 설정부(140), 포멧 변환부(150) 및 스케일링 팩터 설정부(160)를 포함할 수 있다.
도 7에서 가변 정밀도 변환부(110), 이진 비트 구간 설정부(120) 및 스케일링 팩터 설정부(160)는 입력 액티베이션(IA)과 가중치(w), 즉 입력 데이터를 가변 정밀도 포멧의 데이터로 양자화하기 위한 구성으로 본 실시예의 가변 양자화 장치로 볼 수 있다.
이하에서는 도 1 및 도 2 를 참조하여, 도 7의 인공 신경망을 설명한다. 도 1에 도시된 바와 같이, 인공 신경망은 다수의 신경 노드를 포함하여 구성된다. 그러나 실제 인공 신경망은 일반적으로 범용 연산기를 하드웨어로 이용하는 소프트웨어 형태로 구현된다. 특히 각 레이어(layer1 ~ layers)에서 다수의 신경 노드를 개별적으로 구현하지 않고, 소프트웨어로 구현된 적어도 하나의 신경 노드의 입력 액티베이션(IA)과 가중치(w) 및 활성화 함수를 가변하면서 병렬 또는 직렬 연산하도록 함으로써 인공 신경망을 구현할 수 있다.
이에 도 7의 인공 신경망은 다수의 신경 노드에서 각각에서 요구되는 연산을 수행하는 연산 장치로서 신경 노드부(130)를 포함하고, 신경 노드부(130)가 인공 신경망의 다수의 신경 노드로 기능할 수 있도록 하는 노드 설정부(140)를 포함한다. 노드 설정부(140)는 다수의 신경 노드가 수행해야 하는 기능에 대한 신경 노드 설정이 미리 저장되고, 저장된 신경 노드 설정을 신경 노드부(130)로 전달하여 신경 노드부(130)가 해당 신경 노드로서 기능을 수행할 수 있도록 한다.
신경 노드부(130)는 도 2에 도시된 신경 노드의 구조에 따라 입력 액티베이션(IA)과 가중치(w)에 대한 곱셈 연산 및 합 연산을 수행하는 연산 장치로서, 노드 설정부(140)의 설정에 따라 각 레이어에서 요구되는 연산을 수행할 수 있도록 가변되는 가변 신경 노드로 구성될 수 있다.
가변 정밀도 변환부(110)는 신경 노드부(130)에 전달할 입력 액티베이션(IA)과 가중치(w)를 인가받아, 도 4와 같이 가변 정밀도 포멧으로 변환한다.
가변 정밀도 변환부(110)는 입력 액티베이션(IA)과 가중치(w)가 기존의 포멧으로 인가되는 경우에, 가변 정밀도 포멧으로 변환하여 신경 노드부(130)로 전달한다. 이때 가변 정밀도 변환부(110)는 이진 비트 구간 설정부(120)에 설정된 이진 비트 구간 비트 수(k)에 따라 기지정된 비트 수(n)의 데이터에서 이진 비트 구간의 비트 수(k)와 증가 비트 구간의 비트 수를 조절하여 가변 정밀도 포멧으로 변환한다. 또한 가변 정밀도 변환부(110)는 부호의 필요 여부를 판별하여, 부호가 필요한 경우, 데이터에서 1비트를 부호 비트로 설정한다.
즉 가변 정밀도 변환부(110)는 입력 액티베이션(IA)과 가중치(w)를 n 비트의 데이터로 변환하는 경우, 이진 비트 구간의 비트 수(k)와 부호 비트를 제외한 나머지 비트(n-1-k)를 증가 비트 구간의 비트 수로 결정하여 가변 정밀도 포멧으로 변환한다.
이때, 가변 정밀도 변환부(110)는 입력 액티베이션(IA)과 가중치(w)가 고정 소수점 포멧이나 부동 소수점 포멧으로 인가되는 경우, 가변 정밀도 변환부(110)는 입력 액티베이션(IA)과 가중치(w)를 정수형으로 변환하고, 정수로의 변환에 따른 스케일링 팩터를 획득하여 스케일링 팩터 설정부(160)로 전달할 수 있다.
이진 비트 구간 설정부(120)는 신경 노드부(130)가 수행해야 하는 신경 노드에서 요구되는 수 표현에 따라 이진 비트 구간의 비트 수(k)를 설정하여, 가변 정밀도 변환부(110)으로 전달한다. 이진 비트 구간 설정부(120)는 피연산자인 입력 액티베이션(IA)과 가중치(w)의 값 분포 패턴에 기반하여 이진 비트 구간의 비트 수(k)를 설정할 수 있다. 그러나 입력 액티베이션(IA)과 가중치(w)의 값 분포를 판별하기 위해서는 또 다른 연산을 요구하게 되므로 비효율적이다.
다만 인공 신경망의 경우, 일반적으로 다수의 레이어 각각에서 각 신경 노드에 인가되는 피연산자들의 값 분포가 경험적으로 또는 시뮬레이션을 통해 개략적으로 유추될 수 있다. 즉 인공 신경망의 다수의 신경 노드 각각에 대한 가변 정밀도 포멧에서 이진 비트 구간의 비트 수(k)는 신경 노드별로 미리 설정될 수 있다. 이에 이진 비트 구간 설정부(120)는 인공 신경망의 다수의 신경 노드 각각 대한 이진 비트 구간의 비트 수(k)를 미리 저장하고, 노드 설정부(140)의 설정에 따라 신경 노드부(130)가 특정 신경 노드에 대한 기능을 수행하는 경우에 대응하는 이진 비트 구간의 비트 수(k)를 선택하여 전달하도록 구성될 수 있다.
그리고 인공 신경망에서 동일 레이어 내의 신경 노드들에 대한 포멧은 동일하게 설정되는 것이 이후 다음 레이어의 신경 노드의 연산에서도 효율적이다. 이에 이진 비트 구간 설정부(120)는 인공 신경망의 레이어 단위로 이진 비트 구간의 비트 수(k)가 미리 설정되어 저장될 수 있다.
신경 노드부(130)는 가변 정밀도 변환부(110)에서 가변 정밀도 포멧으로 변환된 입력 액티베이션(IA)과 가중치(w)를 인가받아 지정된 연산을 수행하여 포멧 변환부(150)로 전달한다.
포멧 변환부(150)는 신경 노드부(130)에서 연산된 결과인 연산 데이터를 인가받아 기지정된 포멧의 데이터로 변환하여 출력 액티베이션(OA)을 출력한다. 포멧 변환부(150)는 가변 정밀도 포멧을 인지하지 못하는 외부 시스템과의 호환성을 위한 것으로 가변 정밀도 변환부(110)에 대응하는 구성이다.
다만 본 실시예에서 포멧 변환부(150)는 가변 정밀도 포멧으로 인가된 연산 데이터를 기지정된 포멧으로 변환할 때, 스케일링 팩터 설정부(160)로부터 스케일링 팩터를 인가받아 스케일 변환을 함께 수행할 수 있다.
상기한 바와 같이, 본 실시예에 따른 가변 정밀도 포멧은 소수점 자리를 표현하지 못한다. 따라서 소수점 자리를 표현하기 위해서는 별도의 스케일링 팩터가 요구된다. 신경 노드부(130)가 가변 정밀도 포멧으로 인가되는 모든 입력 액티베이션(IA)과 가중치(w)에 대해 스케일링 팩터를 곱하여 함께 연산하는 것은 매우 비효율적이다.
이에 스케일링 팩터 설정부(160)는 가변 정밀도 변환부(110)로부터 입력 액티베이션(IA)과 가중치(w)에 대한 스케일링 팩터를 인가받고, 인가된 스케일링 팩터에 대응하는 스케일링 팩터를 포멧 변환부(150)로 전달하여 포멧 변환부(150)가 가변 정밀도 포멧의 데이터를 기지정된 포멧으로 변환할 때, 스케일 변환을 함께 수행하도록 할 수 있다.
이 경우, 신경 노드부(130)는 정수 형태로 표현되는 가변 정밀도 포멧의 입력 액티베이션(IA)과 가중치(w)에 대한 합 연산과 곱 연산을 그대로 수행하고, 소수점 표현을 위한 스케일 값은 포멧 변환부(150)에서 반영함으로써, 신경 노드부(130)의 연산 효율성을 향상시킬 수 있다.
도 4에 도시된 바와 같이, 신경 노드는 입력 액티베이션(IA)과 가중치(w)에 대한 곱 연산과 합 연산을 수행한다. 여기서 각 신경 노드들의 스케일링 팩터는 이진 비트 구간의 비트 수(k)와 마찬가지로 레이어 단위로 동일하게 설정되어야 한다. 합 연산의 경우 스케일의 변화를 유발하지 않지만, 곱 연산의 경우, 스케일링 팩터의 제곱에 해당하는 스케일 변화를 유발하게 된다. 그리고 다수로 수행되는 입력 액티베이션(IA)과 가중치(w)의 곱 연산에 매번 스케일링 팩터를 함께 곱하여 반영하는 것은 비효율적이다.
이에 스케일링 팩터 설정부(160)는 신경 노드부(130)에서 수행되는 입력 액티베이션(IA)과 가중치(w)의 곱셈 연산에 대응하여, 가변 정밀도 변환부(110)에서 인가된 스케일링 팩터의 제곱에 대응하는 연산 스케일링 팩터를 미리 저장하고, 연산 스케일링 팩터를 포멧 변환부(150)로 전달하도록 구성될 수도 있다.
그리고 상기한 바와 같이, 인공 신경망의 다수의 신경 노드 각각에서 피연산자들의 값 분포가 개략적으로 유추될 수 있으므로, 각 신경 노드들에 대한 입력 액티베이션(IA)과 가중치(w)의 스케일링 팩터는 미리 설정되어 스케일링 팩터 설정부(160)에 저장될 수도 있다.
한편 도 1에 도시한 바와 같이, 인공 신경망은 다수의 신경 노드를 포함하는 다수의 레이어가 직렬로 연결되는 구성을 갖는다. 따라서 입력 레이어(layer1)의 경우, 외부로부터 다른 포멧의 입력 액티베이션(IA)을 인가받으므로, 가변 정밀도 포멧으로 변환할 필요가 있다. 그리고 출력 레이어(layers)의 경우, 외부로 다른 포멧의 출력 액티베이션(OA)을 출력해야 하므로, 가변 정밀도 포멧의 데이터를 다른 포멧의 데이터로 변환해야 한다.
그러나 나머지 레이어(layer2 ~ layers)의 경우, 가변 정밀도 포멧의 입력 액티베이션(IA)을 포멧 변환하지 않고 인가받아 출력하는 것이 더욱 효율적이다.
따라서 가변 정밀도 변환부(110)는 신경 노드부(130)가 입력 레이어(layer1)의 신경 노드로 기능하거나, 이진 비트 구간의 비트 수(k)를 변경해야 하는 경우에만 포멧 변환 동작을 수행하도록 구성될 수 있다. 또한 포멧 변환부(150)는 신경 노드부(130)가 출력 레이어(layers)의 신경 노드로 기능하는 경우에만 포멧 변환 동작을 수행하도록 구성될 수 있다.
도 8 및 도 9는 본 실시예에 따른 가변 정밀도 포멧 데이터의 가산 연산 알고리즘을 설명하기 위한 도면으로, 도 8은 피연산자와 연산 데이터의 가변 정밀도 포멧은 나타내고, 도 9는 가변 정밀도 포멧 데이터의 가산 연산 알고리즘을 나타낸다.
도 8에 도시된 바와 같이, n비트의 가변 정밀도 포멧 데이터에서 이진 비트 구간의 비트 수가 k인 2개의 피연산자(X1, X2)를 가산하여 연산 데이터(X3)를 획득하는 경우, 연산 데이터(X3)의 포멧 또한 동일하게 이진 비트 구간의 비트 수가 k인 n비트의 가변 정밀도 포멧으로 획득된다.
그리고 N1, N2, N3는 각각 피연산자(X1, X2)와 연산 데이터(X3)의 증분 데이터를 나타내고, M1, M2, M3는 각각 피연산자(X1, X2)와 연산 데이터(X3)의 이진 데이터를 나타낸다.
도 9를 참조하여 가산 연산 알고리즘을 설명하면, 우선 피연산자(X2)의 증분 데이터(N2)를 연산 데이터(X3)의 증분 데이터(N3)로 대입한다(S12). 그리고 (2k + M1)과 ((N2 - N1) - (2k ≫ N2)) 중 큰 값을 이진 데이터 변화(ΔM)로 선택한다. 여기서 ≫ 는 큰 값을 선택하는 연산자이다.
이후 피연산자(X2)의 이진 데이터(M2)에 선택된 이진 데이터 변화(ΔM)를 가산하여 이진 데이터(M3)를 계산한다(S13). 계산된 연산 데이터(X3)의 이진 데이터(M3)가 k비트를 초과하는 오버플로우가 발생되는지 판별한다(S14). 만일 오버플로우가 발생되면, 증분 데이터(N3)에 1을 가산한다(S15). 그리고 이진 데이터(M3)와 1 중 큰 값을 연산 데이터(X3)의 이진 데이터(M3)로 선택한다.
이후 획득된 증분 데이터(N3)와 이진 데이터(M3)로 연산 데이터(X3 = {N3:M3})를 획득한다(S17). 만일 오버플로우가 발생되지 않으면, 이전 획득된 증분 데이터(N3)와 이진 데이터(M3)로 연산 데이터(X3 = {N3:M3})를 획득한다(S17).
도 10 및 도 11은 본 실시예에 따른 가변 정밀도 포멧 데이터의 곱셈 연산 알고리즘을 설명하기 위한 도면으로, 도 8 및 도 9와 마찬가지로 도 10은 피연산자와 연산 데이터의 가변 정밀도 포멧은 나타내고, 도 11은 가변 정밀도 포멧 데이터의 곱셈 연산 알고리즘을 나타낸다.
도 10에서 X3 는 가산 연산 데이터로서 도 8의 연산 데이터(X3)와 동일하고, X4 는 2개의 피연산자(X1, X2)에 대한 곱셈 연산 데이터이다.
도 11을 참조하면, 곱셈 연산을 수행하기 위해서는 우선 2개의 피연산자(X1, X2)의 증분 데이터(N1, N2)와 k를 모두 더하여 임시 증분 데이터(N4')를 게산한다(S21). 그리고 피연산자(X1, X2)의 이진 데이터(M1, M2)와 이진 데이터(M1, M2)의 곱과 이진 비트 구간 비트 수(k) 중 큰값을 더하여 임시 이진 데이터(M4')를 획득한다(S22). 임시 증분 데이터(N4')와 임시 이진 데이터(M4')가 획득되면, 임시 곱셈 연산 데이터(X4' = {N4':M4'})를 획득한다(S23).
한편, 도 9에서 설명한 가산 알고리즘에 따라 피연산자(X1, X2)에 대한 가산 연산 데이터(X3)를 계산한다. 여기서 add()는 가변 정밀도 포멧 가산 연산을 의미한다.
가산 연산 데이터(X3)가 계산되면, 가산 연산 데이터(X3)의 증분 데이터(N3)에 이진 비트 구간 비트 수(k)를 가산하여 임시 증분 데이터(N3')를 획득하고(S25), 획득된 임시 증분 데이터(N3')를 이용하여 임시 가산 연산 데이터(X3' = {N3':M3})를 획득한다(S26).
그리고 임시 가산 연산 데이터(X3')에서 임시 곱셈 연산 데이터(X4')를 차감하여 감산 데이터(X4")를 획득한다(S27). 여기서 sub()는 가변 정밀도 포멧 감산 연산을 의미한다.
이후 감산 데이터(X4")와 이진 비트 구간 비트 수(k)에 따른 자릿수를 나타내는 22k+1)을 가변 정밀도 포멧 가산하여 곱셈 연산 데이터(X4)를 획득한다.
도 12는 본 발명의 일 실시예에 따른 가변 정밀도 양자화 방법을 나타내며, 기지정된 포멧으로 인가된 데이터를 n 비트의 가변 정밀도 포멧 데이터로 양자화하는 경우를 가정하여 설명한다.
도 12를 참조하여, 가변 정밀도 양자화 방법을 설명하면, 우선 부호 비트를 설정한다(S31). 부호 비트는 가변 정밀도 포멧으로 변환해야 하는 데이터가 음의 값을 가질 수 있는지에 따라 결정된다.
일반적으로 양자화를 요구하는 시스템에서는 입력되는 데이터의 포멧이 미리 지정되어 있으며, 이에 부호 비트는 시스템의 요구 사항에 따라 설정될 수 있다. 부호 비트가 필요한 경우, 부호 비트는 n비트에서 최상위 비트(MSB) 1비트로 설정될 수 있다.
그리고 데이터를 n 비트의 가변 정밀도 포멧 데이터로 양자화하기 위해, 표현해야 하는 값의 정밀도와 범위에 기초하여 n 비트에서 이진값을 표현하는 이진 비트 구간의 비트 수(k)를 설정한다(S32). 양자화를 요구하는 각 시스템에서는 일반적으로 요구하는 정밀도와 범위가 미리 지정되며, 지정된 표현 정밀도와 표현 범위에 따라 이진 비트 구간 비트 수(k)를 결정할 수 있다. 이때, 가변 정밀도 포멧으로 변환해야 하는 데이터의 개략적인 분산 분포가 주어지는 경우, 분산 분포에 기초하여, 이진 비트 구간 비트 수(k)를 결정할 수도 있다.
n 비트에서 부호 비트로 1비트와 이진 비트 구간 비트 수(k)가 설정되면, 나머지 비트(n-1-k)는 증가 비트 구간으로 설정된다. 부호 비트가 설정되지 않은 경우, 증가 비트 구간은 (n-k)의 비트 수를 갖는다.
즉 본 실시예에 따른 가변 정밀도 양자화 방법에서는 n 비트의 데이터를 부호값을 나타내는 부호 비트와 이진값을 표현하는 이진 비트 구간 및 이진 데이터의 최소 증감 단위를 조절하는 증가 비트 구간으로 구분한다. 그리고 부호 비트를 최상위 비트(MSB)로 하여 증가 비트 구간 및 이진 비트 구간이 순차적으로 배치되어 가변 정밀도 포멧을 구성한다.
이후 가변 정밀도 포멧으로 변환되어야 하는 입력 데이터가 인가되면, 인가된 입력 데이터를 이진수의 정수로 변환하고, 이진수의 정수로의 변환 과정에서 스케일링 팩터를 획득한다(S33). 본 실시예에서 가변 정밀도 포멧의 데이터는 기본적으로 정수를 표현하도록 구성된다. 따라서 소수점 이하 자리를 표현하기 위해서는 별도로 소수점 자리를 나타내는 스케일링 팩터를 입력 데이터로부터 획득한다. 여기서 스케일링 팩터는 2의 음의 지수승 형태(2-e)로 획득될 수 있다. 만일 입력 데이터가 부동 소수점 포멧으로 인가되는 경우, 부동 소수점 포멧의 지수부를 스케일링 팩터로 획득할 수도 있다.
그리고 도 6에 도시된 바와 같이, 정수로 변환된 이진수에서 부호 비트를 제외한 최상위 비트의 위치값(position of MSB)에서 이진 비트 구간 비트 수(k)를 차감하여, 증분 데이터(N)를 획득한다(S34).
여기서 증분 데이터(N)는 k비트의 이진 비트 구간의 이진 데이터(M)가 증가 또는 감소되는 최소 간격을 나타내는 데이터로서 증분 데이터(N)는 증가 또는 감소되는 이진 데이터(M)의 값이 증분 데이터(N)에 대응하는 단위로 증가 또는 감소되는 것으로 해석되도록 한다.
증분 데이터(N)가 계산되면, 이진수에서 최상위 2비트를 제외한 나머지 비트 중 최상위 비트로부터 순차적으로 이진 비트 구간 비트 수(k)만큼의 데이터를 이진 데이터(M)로 획득한다(S35). 최상위 2비트와 이진 비트 구간 비트 수(k)만큼의 비트를 제외한 나머지 비트 중 최상위 비트인 반올림 비트의 값을 획득한다(S36).
반올림 비트의 값이 획득되면, 부호 비트를 최상위 비트로 하여 증분 데이터(N) 및 이진 데이터(M)를 순차적으로 배열하고, 배열된 값에 반올림 비트의 값을 가산하여 가변 정밀도 포멧의 데이터로 양자화 한다(S37).
본 발명에 따른 방법은 컴퓨터에서 실행 시키기 위한 매체에 저장된 컴퓨터 프로그램으로 구현될 수 있다. 여기서 컴퓨터 판독가능 매체는 컴퓨터에 의해 액세스 될 수 있는 임의의 가용 매체일 수 있고, 또한 컴퓨터 저장 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함하며, ROM(판독 전용 메모리), RAM(랜덤 액세스 메모리), CD(컴팩트 디스크)-ROM, DVD(디지털 비디오 디스크)-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등을 포함할 수 있다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다.
따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 인공 신경망 110: 가변 정밀도 변환부
120: 이진 비트 구간 설정부 130: 신경 노드부
140: 노드 설정부 150: 포멧 변환부
160: 스케일링 팩터 설정부

Claims (12)

  1. 입력 데이터를 인가받아 입력 데이터의 범위별로 정밀도가 가변되는 n 비트의 가변 정밀도 데이터로 양자화하는 양자화 장치에 있어서,
    n 비트의 데이터를 이진 비트 구간 및 증가 비트 구간으로 구분하고, 요구되는 표현 정밀도 및 표현 범위 따라 상기 증가 비트 구간의 비트 수가 조절되도록 n 비트 중 상기 이진 비트 구간의 비트 수를 설정하는 이진 비트 구간 설정부; 및
    양자화되는 입력 데이터의 양자화 범위를 조절하기 위해 상기 이진 비트 구간에 입력되는 이진 데이터의 최소 증감 단위를 지정하여 증분 데이터를 계산하고, 상기 증분 데이터에 따른 양자화 범위에서 상기 입력 데이터에 대응하는 값을 나타내는 이진 데이터를 계산하며, 계산된 증분 데이터와 이진 데이터를 순차적으로 배치하여 가변 정밀도 데이터로 변환하는 가변 정밀도 변환부; 를 포함하는 양자화 장치.
  2. 제1 항에 있어서, 상기 가변 정밀도 변환부는
    이진수로 인가되는 입력 데이터에서 부호 비트를 제외한 최상위 비트의 비트 위치값에서 상기 이진 비트 구간의 비트 수를 차감하여 증분 데이터를 획득하고,
    부호 비트와 다음 최상위 비트를 제외한 나머지 최상위 비트 중 최상위 비트로부터 순차적으로 이진 비트 구간의 비트 수만큼의 데이터를 이진 데이터로 추출하며,
    이진 데이터로 추출된 비트를 제외한 나머지 비트 중 최상위 1비트를 반올림 비트 값으로 획득하여,
    부호 비트를 최상위 비트로 획득된 증분 데이터 및 추출된 이진 데이터를 순차적으로 배열하고, 상기 반올림 비트 값을 가산하여 상기 가변 정밀도 데이터를 획득하는 양자화 장치.
  3. 제2 항에 있어서, 상기 양자화 장치는
    상기 입력 데이터가 소수점 이하 자리를 포함하는 데이터이면, 정수형 데이터로 변환하고, 입력 데이터를 정수형 데이터로 변환하기 위한 지수값을 나타내는 스케일링 팩터를 획득하여 저장하는 스테일링 팩터 설정부; 를 더 포함하는 양자화 장치.
  4. 제1 항에 있어서, 상기 이진 비트 구간 설정부는
    요구되는 표현 정밀도가 세밀하거나, 표현 범위가 넓을 수록 상기 이진 비트 구간의 비트 수를 감소시키는 양자화 장치.
  5. 제1 항에 있어서, 상기 이진 비트 구간 설정부는
    상기 입력 데이터의 분산에 비례하여 상기 이진 비트 구간의 비트 수를 증가시키는 양자화 장치.
  6. 제1 항에 있어서, 상기 이진 비트 구간 설정부는
    상기 입력 데이터에 부호 비트가 포함되어 있으면, 상기 n 비트의 가변 정밀도 데이터에서 최상위 비트를 부호 비트로 설정하는 양자화 장치.
  7. 입력 데이터를 인가받아 입력 데이터의 범위별로 정밀도가 가변되는 n 비트의 가변 정밀도 데이터로 양자화하는 가변 정밀도 양자화 장치에서 수행되는 양자화 방법으로서,
    n 비트의 데이터를 이진 비트 구간 및 증가 비트 구간으로 구분하는 단계;
    요구되는 표현 정밀도 및 표현 범위 따라 상기 증가 비트 구간의 비트 수가 조절되도록 n 비트 중 상기 이진 비트 구간의 비트 수를 설정하는 단계; 및
    양자화되는 입력 데이터의 양자화 범위를 조절하기 위해 상기 이진 비트 구간에 입력되는 이진 데이터의 최소 증감 단위를 지정하여 증분 데이터를 계산하고, 상기 증분 데이터에 따른 양자화 범위에서 상기 입력 데이터에 대응하는 값을 나타내는 이진 데이터를 계산하며, 계산된 증분 데이터와 이진 데이터를 순차적으로 배치하여 가변 정밀도 데이터로 변환하는 단계; 를 포함하는 양자화 방법.
  8. 제7 항에 있어서, 상기 가변 정밀도 데이터로 변환하는 단계는
    이진수로 인가되는 입력 데이터에서 부호 비트를 제외한 최상위 비트의 비트 위치값에서 상기 이진 비트 구간의 비트 수를 차감하여 증분 데이터를 획득하는 단계;
    부호 비트와 다음 최상위 비트를 제외한 나머지 최상위 비트 중 최상위 비트로부터 순차적으로 이진 비트 구간의 비트 수만큼의 데이터를 이진 데이터로 추출하는 단계;
    이진 데이터로 추출된 비트를 제외한 나머지 비트 중 최상위 1비트를 반올림 비트 값으로 획득하는 단계;
    부호 비트를 최상위 비트로 획득된 증분 데이터 및 추출된 이진 데이터를 순차적으로 배열하는 단계; 및
    상기 반올림 비트 값을 가산하여 상기 가변 정밀도 데이터를 획득하는 단계; 를 포함하는 양자화 방법.
  9. 제8 항에 있어서, 상기 양자화 방법은
    상기 입력 데이터가 소수점 이하 자리를 포함하는 데이터이면, 정수형 데이터로 변환하고, 입력 데이터를 정수형 데이터로 변환하기 위한 지수값을 나타내는 스케일링 팩터를 획득하여 저장하는 단계; 를 더 포함하는 양자화 방법.
  10. 제7 항에 있어서, 상기 이진 비트 구간의 비트 수를 설정하는 단계는
    요구되는 표현 정밀도가 세밀하거나, 표현 범위가 넓을 수록 상기 이진 비트 구간의 비트 수를 감소시키는 양자화 방법.
  11. 제7 항에 있어서, 상기 이진 비트 구간의 비트 수를 설정하는 단계는
    상기 입력 데이터의 분산에 비례하여 상기 이진 비트 구간의 비트 수를 증가시키는 양자화 방법.
  12. 제7 항에 있어서, 상기 양자화 방법은
    상기 입력 데이터에 부호 비트가 포함되어 있으면, 상기 n 비트의 가변 정밀도 데이터에서 최상위 비트를 부호 비트로 설정하는 단계; 를 더 포함하는 양자화 방법.
KR1020190086281A 2019-07-17 2019-07-17 가변 정밀도 양자화 장치 및 방법 KR102243119B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190086281A KR102243119B1 (ko) 2019-07-17 2019-07-17 가변 정밀도 양자화 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190086281A KR102243119B1 (ko) 2019-07-17 2019-07-17 가변 정밀도 양자화 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20210009584A KR20210009584A (ko) 2021-01-27
KR102243119B1 true KR102243119B1 (ko) 2021-04-21

Family

ID=74238471

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190086281A KR102243119B1 (ko) 2019-07-17 2019-07-17 가변 정밀도 양자화 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102243119B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102596769B1 (ko) * 2022-07-12 2023-11-02 오픈엣지테크놀로지 주식회사 신경망 설계방법 및 이를 위한 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998038800A1 (en) 1997-02-25 1998-09-03 British Broadcasting Corporation Digital signal compression encoding with improved quantisation
JP2008519337A (ja) 2004-11-08 2008-06-05 志 中 李 ハイブリッド数字繰上げ方式および繰上げラインのデジタルエンジニアリング方法のコンピュータ技術的解法
US20100002572A1 (en) 2008-07-01 2010-01-07 Broadcom Corporation Dynamic precision for datapath modules
US20190205746A1 (en) 2017-12-29 2019-07-04 Intel Corporation Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5589829A (en) * 1994-10-26 1996-12-31 Intel Corporation Decoding variable-length encoded signals
US5781134A (en) * 1996-10-18 1998-07-14 Samsung Electronics Company, Ltd. System for variable length code data stream position arrangement
KR102564456B1 (ko) 2017-10-19 2023-08-07 삼성전자주식회사 뉴럴 네트워크의 파라미터를 양자화하는 장치 및 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998038800A1 (en) 1997-02-25 1998-09-03 British Broadcasting Corporation Digital signal compression encoding with improved quantisation
JP2008519337A (ja) 2004-11-08 2008-06-05 志 中 李 ハイブリッド数字繰上げ方式および繰上げラインのデジタルエンジニアリング方法のコンピュータ技術的解法
US20100002572A1 (en) 2008-07-01 2010-01-07 Broadcom Corporation Dynamic precision for datapath modules
US20190205746A1 (en) 2017-12-29 2019-07-04 Intel Corporation Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism

Also Published As

Publication number Publication date
KR20210009584A (ko) 2021-01-27

Similar Documents

Publication Publication Date Title
CN108337000B (zh) 用于转换到较低精度数据格式的自动方法
KR102564456B1 (ko) 뉴럴 네트워크의 파라미터를 양자화하는 장치 및 방법
CN110222821B (zh) 基于权重分布的卷积神经网络低位宽量化方法
KR20190034985A (ko) 인공 신경망의 양자화 방법 및 장치
CN110969251B (zh) 基于无标签数据的神经网络模型量化方法及装置
US10491239B1 (en) Large-scale computations using an adaptive numerical format
KR20200004700A (ko) 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치
KR20190051755A (ko) 저 정밀도 뉴럴 네트워크 학습을 위한 방법 및 장치
CN110413255B (zh) 人工神经网络调整方法和装置
CN110555450A (zh) 人脸识别神经网络调整方法和装置
CN110555508A (zh) 人工神经网络调整方法和装置
EP3893104A1 (en) Methods and apparatus for low precision training of a machine learning model
KR102243119B1 (ko) 가변 정밀도 양자화 장치 및 방법
KR102368590B1 (ko) 전자 장치 및 그 제어 방법
EP4128067A1 (en) Method and system for generating a predictive model
CN112183726A (zh) 一种神经网络全量化方法及系统
JP2021056734A (ja) 情報処理装置、情報処理方法、情報処理プログラム
CN105138304A (zh) 数字信号的自适应量化方法及装置
WO2020177863A1 (en) Training of algorithms
KR102409476B1 (ko) 인공 신경망을 위한 양자화기 및 이의 손실 역전파 방법
JP7243498B2 (ja) 演算処理装置、制御プログラム、及び制御方法
CN112508166A (zh) 信息处理装置和方法以及存储信息处理程序的记录介质
JP2020190901A (ja) 演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法
TWI819627B (zh) 用於深度學習網路的優化方法、運算裝置及電腦可讀取媒體
US11995533B1 (en) Executing replicated neural network layers on inference circuit

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant