KR20210141252A - 전자 장치 및 그 제어 방법 - Google Patents

전자 장치 및 그 제어 방법 Download PDF

Info

Publication number
KR20210141252A
KR20210141252A KR1020200058669A KR20200058669A KR20210141252A KR 20210141252 A KR20210141252 A KR 20210141252A KR 1020200058669 A KR1020200058669 A KR 1020200058669A KR 20200058669 A KR20200058669 A KR 20200058669A KR 20210141252 A KR20210141252 A KR 20210141252A
Authority
KR
South Korea
Prior art keywords
value
weight
quantization
values
data
Prior art date
Application number
KR1020200058669A
Other languages
English (en)
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 KR1020200058669A priority Critical patent/KR20210141252A/ko
Priority to PCT/KR2021/001766 priority patent/WO2021230470A1/ko
Priority to US17/520,326 priority patent/US20220058487A1/en
Publication of KR20210141252A publication Critical patent/KR20210141252A/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/40Software arrangements specially adapted for pattern recognition, e.g. user interfaces or toolboxes therefor
    • 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/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
    • 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
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/74Image or video pattern matching; Proximity measures in feature spaces
    • G06V10/75Organisation of the matching processes, e.g. simultaneous or sequential comparisons of image or video features; Coarse-fine approaches, e.g. multi-scale approaches; using context analysis; Selection of dictionaries
    • G06V10/751Comparing pixel values or logical combinations thereof, or feature values having positional relevance, e.g. template matching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/774Generating sets of training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • 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
    • 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/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Multimedia (AREA)
  • Neurology (AREA)
  • Human Computer Interaction (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

전자 장치 및 그 제어 방법이 개시된다. 본 전자 장치는 신경망 모델의 연산에 이용되는 가중치 데이터를 저장하는 메모리, 상기 가중치 데이터에 포함된 가중치 값들 중에서 임계 값 이하의 크기를 갖는 적어도 하나의 가중치 값을 판단하고, 상기 가중치 데이터에 포함된 가중치 값들 중에서, 상기 판단된 적어도 하나의 가중치 값을 제외한 나머지 가중치 값들을 양자화하여, 상기 나머지 가중치 값들에 대응되는 양자화 값들을 포함하는 제1 양자화 데이터를 획득하며, 상기 제1 양자화 데이터에 포함된 양자화 값들 중에서 기설정된 값에 가장 근접한 양자화 값을 판단하고, 상기 기설정된 값에 가장 근접한 양자화 값에 기초하여 상기 적어도 하나의 가중치 값에 대응되는 양자화 값을 포함하는 제2 양자화 데이터를 획득하고, 상기 획득한 제1 양자화 데이터 및 제2 양자화 데이터를 상기 메모리에 저장하는 프로세서를 포함한다.

Description

전자 장치 및 그 제어 방법 {ELECTRONIC APPARATUS AND METHOD FOR CONTROLLING THEREOF}
본 개시는 전자 장치 및 그 제어 방법에 관한 것으로, 보다 상세하게는 인공 지능 기술을 기반으로 동작하는 전자 장치 및 그 제어 방법에 관한 것이다.
최근 인간 수준의 지능을 구현하는 인공 지능 시스템이 개발되고 있다. 인공 지능 시스템은, 기존의 룰(rule) 기반 시스템과 달리 신경망 모델에 기반하여 학습 및 추론을 수행하는 시스템으로써, 음성 인식, 이미지 인식 및 미래 예측 등과 같은 다양한 범위에서 활용되고 있다.
특히, 최근에는 딥 러닝(deep learning)에 기반한 딥 뉴럴 네트워크(deep neural network)를 통해 주어진 문제를 해결하는 인공 지능 시스템이 개발되고 있다.
딥 뉴럴 네트워크는 입력 레이어(input layer)와 출력 레이어(output layer) 사이에 다수의 은닉 레이어(hidden layer)을 포함하는 뉴럴 네트워크로써, 각 레이어에 포함된 가중치 값들을 통해 인공 지능 기술을 구현하는 모델을 의미한다.
이와 같은, 딥 뉴럴 네트워크는 정확한 결과 값을 도출해 내기 위해서 다수의 가중치 값들을 포함하는 것이 일반적이다.
그런데, 방대한 양의 가중치 값들이 존재할 경우, 출력 데이터의 정확도가 높아지는 것은 별론, 제한된 메모리를 가진 스마트 폰과 같은 모바일 장치 등에서는 용량 상의 문제로 신경망 모델을 이용하기 어려운 문제가 있다.
본 개시는 상술한 문제점을 해결하기 위해 안출된 것으로, 본 개시의 목적은 신경망 모델의 경량화를 수행하는 전자 장치 및 그 제어 방법을 제공함에 있다.
본 개시의 일 실시 예에 따른 전자 장치는, 신경망 모델의 연산에 이용되는 가중치 데이터를 저장하는 메모리, 상기 가중치 데이터에 포함된 가중치 값들 중에서 임계 값 이하의 크기를 갖는 적어도 하나의 가중치 값을 판단하고, 상기 가중치 데이터에 포함된 가중치 값들 중에서, 상기 판단된 적어도 하나의 가중치 값을 제외한 나머지 가중치 값들을 양자화하여, 상기 나머지 가중치 값들에 대응되는 양자화 값들을 포함하는 제1 양자화 데이터를 획득하며, 상기 제1 양자화 데이터에 포함된 양자화 값들 중에서 기설정된 값에 가장 근접한 양자화 값을 판단하고, 상기 기설정된 값에 가장 근접한 양자화 값에 기초하여 상기 적어도 하나의 가중치 값에 대응되는 양자화 값을 포함하는 제2 양자화 데이터를 획득하고, 상기 획득한 제1 양자화 데이터 및 제2 양자화 데이터를 상기 메모리에 저장하는 프로세서를 포함할 수 있다.
그리고, 상기 프로세서는, 상기 기설정된 값에 가장 근접한 양자화 값을, 상기 적어도 하나의 가중치 값에 대응되는 양자화 값으로 판단할 수 있다.
그리고, 상기 프로세서는, 상기 나머지 가중치 값들의 양자화에 기초하여, 복수의 스케일링 인자(scaling factor) 및, 상기 나머지 가중치 값들에 대응되는 비트 값들을 포함하는 상기 제1 양자화 데이터를 획득하고, 상기 복수의 스케일링 인자를 이용한 연산에 기초하여 획득되는 복수의 연산 값 중에서 상기 기설정된 값에 가장 근접한 연산 값을 판단하며, 상기 판단된 연산 값에 기초하여 상기 적어도 하나의 가중치 값에 대응되는 양자화 값을 포함하는 상기 제2 양자화 데이터를 획득할 수 잇다.
그리고, 상기 프로세서는, 상기 기설정된 값에 가장 근접한 연산 값을, 상기 적어도 하나의 가중치 값에 대응되는 양자화 값으로 판단할 수 있다.
그리고, 상기 프로세서는, 상기 복수의 스케일링 인자 각각에 +1 또는 -1을 곱한 값을 합산함으로써 상기 복수의 연산 값을 획득하고, 상기 복수의 연산 값 중에서 상기 기설정된 값에 가장 근접한 연산 값을 판단할 수 있다.
그리고, 상기 프로세서는, 상기 복수의 스케일링 인자를 이용한 복수의 연산 중에서, 상기 기설정된 값에 가장 근접한 연산 값을 출력하는 복수의 연산을 판단하고, 상기 복수의 연산 중에서 상기 적어도 하나의 가중치 값의 부호와 동일한 부호의 연산 값을 출력하는 연산을 판단하며, 상기 판단된 연산에 기초하여 상기 적어도 하나의 가중치 값에 대응되는 제2 양자화 데이터를 획득할 수 있다.
그리고, 상기 프로세서는, 상기 복수의 스케일링 인자를 이용한 복수의 연산 중에서, 상기 기설정된 값에 가장 근접한 연산 값을 출력하는 연산에 포함된 상기 복수의 스케일링 인자 각각의 부호를 판단하고, 상기 각각의 부호에 기초하여 상기 적어도 하나의 가중치 값에 대응되는 제2 양자화 데이터를 획득할 수 있다.
그리고, 상기 프로세서는, 프루닝 레이트(pruning rate) 설정을 위한 사용자 입력을 수신하고, 상기 가중치 값들의 크기에 기초하여, 상기 가중치 데이터에 포함된 가중치 값들 중에서 상기 프루닝 레이트에 속하는 상기 적어도 하나의 가중치 값을 판단할 수 있다.
그리고, 상기 기설정된 값은 0이 될 수 있다.
한편, 본 개시의 일 실시 예에 따른 전자 장치의 제어 방법은, 가중치 데이터에 포함된 가중치 값들 중에서 임계 값 이하의 크기를 갖는 적어도 하나의 가중치 값을 판단하는 단계, 상기 가중치 데이터에 포함된 가중치 값들 중에서, 상기 판단된 적어도 하나의 가중치 값을 제외한 나머지 가중치 값들을 양자화하여, 상기 나머지 가중치 값들에 대응되는 양자화 값들을 포함하는 제1 양자화 데이터를 획득하는 단계, 상기 제1 양자화 데이터에 포함된 양자화 값들 중에서 기설정된 값에 가장 근접한 양자화 값을 판단하고, 상기 기설정된 값에 가장 근접한 양자화 값에 기초하여 상기 적어도 하나의 가중치 값에 대응되는 양자화 값을 포함하는 제2 양자화 데이터를 획득하는 단계 및 상기 획득한 제1 양자화 데이터 및 제2 양자화 데이터를 저장하는 단계를 포함할 수 있다.
그리고, 상기 제2 양자화 데이터를 획득하는 단계는, 상기 기설정된 값에 가장 근접한 양자화 값을, 상기 적어도 하나의 가중치 값에 대응되는 양자화 값으로 판단하는 단계를 포함할 수 있다.
그리고, 상기 제1 양자화 데이터를 획득하는 단계는, 상기 나머지 가중치 값들의 양자화에 기초하여, 복수의 스케일링 인자(scaling factor) 및, 상기 나머지 가중치 값들에 대응되는 비트 값들을 포함하는 상기 제1 양자화 데이터를 획득하는 단계를 포함하고, 상기 제2 양자화 데이터를 획득하는 단계는, 상기 복수의 스케일링 인자를 이용한 연산에 기초하여 획득되는 복수의 연산 값 중에서 상기 기설정된 값에 가장 근접한 연산 값을 판단하고, 상기 판단된 연산 값에 기초하여 상기 적어도 하나의 가중치 값에 대응되는 양자화 값을 포함하는 상기 제2 양자화 데이터를 획득하는 단계를 포함할 수 있다.
그리고, 상기 제2 양자화 데이터를 획득하는 단계는, 상기 기설정된 값에 가장 근접한 연산 값을, 상기 적어도 하나의 가중치 값에 대응되는 양자화 값으로 판단하는 단계를 포함할 수 있다.
그리고, 상기 연산 값을 판단하는 단계는, 상기 복수의 스케일링 인자 각각에 +1 또는 -1을 곱한 값을 합산함으로써 상기 복수의 연산 값을 획득하고, 상기 복수의 연산 값 중에서 상기 기설정된 값에 가장 근접한 연산 값을 판단할 수 있다.
그리고, 상기 제2 양자화 데이터를 획득하는 단계는, 상기 복수의 스케일링 인자를 이용한 복수의 연산 중에서, 상기 기설정된 값에 가장 근접한 연산 값을 출력하는 복수의 연산을 판단하고, 상기 복수의 연산 중에서 상기 적어도 하나의 가중치 값의 부호와 동일한 부호의 연산 값을 출력하는 연산을 판단하며, 상기 판단된 연산에 기초하여 상기 적어도 하나의 가중치 값에 대응되는 제2 양자화 데이터를 획득할 수 있다.
그리고, 상기 제2 양자화 데이터를 획득하는 단계는, 상기 복수의 스케일링 인자를 이용한 복수의 연산 중에서, 상기 기설정된 값에 가장 근접한 연산 값을 출력하는 연산에 포함된 상기 복수의 스케일링 인자 각각의 부호를 판단하고, 상기 각각의 부호에 기초하여 상기 적어도 하나의 가중치 값에 대응되는 제2 양자화 데이터를 획득할 수 있다.
그리고, 상기 상기 적어도 하나의 가중치 값을 판단하는 단계는, 프루닝 레이트(pruning rate) 설정을 위한 사용자 입력을 수신하고, 상기 가중치 값들의 크기에 기초하여, 상기 가중치 데이터에 포함된 가중치 값들 중에서 상기 프루닝 레이트에 속하는 상기 적어도 하나의 가중치 값을 판단할 수 있다.
그리고, 상기 기설정된 값은 0이 될 수 있다.
이상과 같은 본 개시의 다양한 실시 예에 따르면, 제한된 메모리를 가진 모바일 장치 등에서도 높은 출력 정확도를 가진 인공 지능 기술을 구현할 수 있다.
도 1은 본 개시의 일 실시 예에 따른 전자 장치를 설명하기 위한 블록도이다.
도 2a는 본 개시의 일 실시 예에 따른 양자화 방법을 설명하기 위한 도면이다.
도 2b는 본 개시의 일 실시 예에 따른 양자화 방법을 설명하기 위한 도면이다.
도 3a는 본 개시의 일 실시 예에 따른 중요도에 기초하여 가중치 데이터를 양자화하는 실시 예를 설명하기 위한 도면이다.
도 3b는 본 개시의 일 실시 예에 따른 중요도에 기초하여 가중치 데이터를 양자화하는 실시 예를 설명하기 위한 도면이다.
도 4는 본 개시의 일 실시 예에 따른 전자 장치를 설명하기 위한 상세 블록도이다.
도 5는 본 개시의 일 실시 예에 따른 전자 장치의 제어 방법을 설명하기 위한 흐름도이다.
이하, 본 개시의 다양한 실시 예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 개시에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 개시의 실시 예의 다양한 변경(modifications), 균등물(equivalents), 및/또는 대체물(alternatives)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 개시에서, "가진다," "가질 수 있다," "포함한다," 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 개시에서, "A 또는 B," "A 또는/및 B 중 적어도 하나," 또는 "A 또는/및 B 중 하나 또는 그 이상"등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, "A 또는 B," "A 및 B 중 적어도 하나," 또는 "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.
본 개시에서 사용된 "제1," "제2," "첫째," 또는 "둘째,"등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다.
본 개시에서 사용된 표현 "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한(suitable for)," "~하는 능력을 가지는(having the capacity to)," "~하도록 설계된(designed to)," "~하도록 변경된(adapted to)," "~하도록 만들어진(made to)," 또는 "~를 할 수 있는(capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성된(또는 설정된)"은 하드웨어적으로 "특별히 설계된(specifically designed to)" 것만을 반드시 의미하지 않을 수 있다. 대신, 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성된(또는 설정된) 프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.
이하, 첨부된 도면을 참조하여 본 개시를 상세히 설명한다.
도 1은 본 개시의 일 실시 예에 따른 전자 장치를 설명하기 위한 블록도이다.
도 1을 참조하면, 본 개시의 일 실시 예에 따른 전자 장치(100)는 메모리(110) 및 프로세서(120)를 포함한다.
전자 장치(100)는 신경망 모델(또는, 인공 지능 모델)의 학습, 압축 또는 신경망 모델을 이용하여 입력 데이터에 대한 출력 데이터를 획득하는 장치로써, 예를 들어, 전자 장치(100)는 데스크탑 PC, 노트북, 스마트 폰, 태블릿 PC, 서버 등일 수 있다. 또는, 전자 장치(100)는 클라우딩 컴퓨팅 환경이 구축된 시스템 자체일 수도 있다. 다만, 이에 한정되는 것은 아니며, 전자 장치(100)는 신경망 모델의 압축 또는 연산이 가능한 장치라면 어떠한 장치라도 무방하다.
메모리(110)는 하드 디스크, 비휘발성 메모리 또는 휘발성 메모리 등으로 구현될 수 있다. 여기에서, 비휘발성 메모리는 OTPROM(one time programmable ROM), PROM(programmable ROM), EPROM(erasable and programmable ROM), EEPROM(electrically erasable and programmable ROM), mask ROM, flash ROM 등이 될 수 있고, 휘발성 메모리는 DRAM(dynamic RAM), SRAM(static RAM), 또는 SDRAM(synchronous dynamic RAM) 등이 될 수 있다.
한편, 도 1에서는 메모리(110)를 프로세서(120)와 별개의 구성으로 도시하였으나, 메모리(110)는 프로세서(120)에 포함될 수도 있다. 즉, 메모리(110)는 오프 칩 메모리로 구현될 수 있음은 물론, 온 칩 메모리로 구현될 수도 있다.
또한, 도 1에는 하나의 메모리(110)를 도시하였으나, 실시 예에 따라 메모리(110)는 복수 개로 구현될 수도 있다.
메모리(110)는 신경망 모델의 가중치 데이터를 저장할 수 있다. 여기에서, 가중치 데이터는 신경망 모델의 연산에 이용되는 데이터로써, 메모리(110)는 신경망 모델을 구성하는 복수의 레이어에 대응되는 복수의 가중치 데이터를 저장할 수 있다. 그리고, 가중치 데이터는 가중치 값들을 포함할 수 있다. 여기에서, 가중치 값은 n 비트의 부동 소수점으로 표현된 값으로서, 일 예로 가중치 데이터는 32 비트의 부동 소수점으로 표현된 가중치 값들을 포함할 수 있다.그리고, 가중치 데이터는 벡터, 행렬 또는 텐서 중 적어도 하나로 표현될 수 있다.
또한, 메모리(110)는 양자화 된 가중치 값들을 포함하는 양자화 데이터를 저장할 수 있다. 여기에서, 양자화된 가중치 값은 k 비트의 고정 소수점으로 표현되는 값으로서, 일 예로 양자화 된 가중치 값은 4 비트의 고정 소수점으로 표현될 수 있다. 그리고, k는 1 이상의 정수로서, 상술한 n 보다 작을 수 있다.
또한, 메모리(110)는 이진 코드로 양자화 된 가중치 값들을 포함하는 양자화 데이터를 저장할 수도 있다. 이 경우, 양자화 데이터는 스케일링 인자 및, -1 또는 1의 비트 값들을 포함할 수 있다.
한편, 상술한 비트 값 -1은 0으로 치환되어 메모리(110)에 저장될 수도 있다. 즉, 메모리(110)는 스케일링 인자 및, 0 또는 1의 비트 값들을 포함하는 양자화 데이터를 저장할 수도 있다.
그리고, 양자화 데이터는 가중치 데이터의 포맷에 따라 벡터, 매트릭스 또는 텐서 중 적어도 하나로 표현될 수 있다.
신경망 모델의 양자화는 전자 장치(100)의 프로세서(120)에 수행될 수 있다. 다만, 반드시 이에 한정되는 것은 아니고 신경망 모델의 양자화는 외부 장치(가령, 서버)에 의해 수행될 수도 있다. 외부 장치에 의해 신경망 모델의 양자화가 수행되는 경우, 프로세서(120)는 외부 장치로부터 양자화 된 가중치 값들을 포함하는 양자화 데이터를 수신하고, 이를 메모리(110)에 저장할 수 있다.
이와 같은, 신경망 모델은 뉴럴 네트워크(Neural Network)를 기반으로 하는 모델이 될 수 있다. 일 예로, 신경망 모델은 RNN(Recurrent Neural Network)에 기반한 모델일 수 있다. 여기에서, RNN은 순환 신경망을 의미하며, 시계열 데이터와 같이 시간의 흐름에 따라 변화하는 데이터를 학습하기 위한 딥 러닝 모델의 일종이다.
다만, 이에 한정되는 것은 아니며, 신경망 모델은 CNN(Convolutional Neural Network), DNN (Deep Neural Network), RBM (Restricted Boltzmann Machine), DBN (Deep Belief Network) 또는 BRDNN(Bidirectional Recurrent Deep Neural Network) 등과 같은 다양한 네트워크에 기반한 모델이 될 수 있다. 또는, 메모리(110)는 인공 지능 알고리즘을 통해 학습된 모델이 아닌 룰(rule) 기반으로 생성된 모델을 저장할 수도 있으며, 메모리(110)에 저장된 모델에는 특별한 제한이 없다.
프로세서(120)는 전자 장치(100)의 동작을 전반적으로 제어한다. 이를 위해, 프로세서(120)는 하나 또는 복수의 프로세서로 구성될 수 있다. 여기에서, 하나 또는 복수의 프로세서는 중앙처리장치(central processing unit(CPU)) 등과 같은 범용 프로세서가 될 수 있음은 물론, 그래픽 처리 장치(graphic processing unit, GPU) 등과 같은 그래픽 전용 프로세서 또는 신경망 처리 장치(neural network processing unit, NPU)와 같은 인공 지능 전용 프로세서가 될 수 있다. 또한, 프로세서(120)는 SoC(System on Chip), 온 디바이스 인공 지능 칩(On-device AI Chip), LSI(large scale integration) 또는 FPGA(Field Programmable gate array)가 될 수도 있다.
프로세서(120)는 양자화 알고리즘에 기초하여 신경망 모델의 가중치 값들을 양자화 할 수 있다. 여기에서, 양자화 알고리즘은 신경망 모델에 포함된 가중치 값들의 크기를 경량화(또는, 축소) 하기 위한 알고리즘으로서, 프로세서(120)는 양자화 알고리즘에 기초하여 메모리(110)에 저장된 가중치 값들을 기설정된 비트 수의 크기를 갖는 양자화 값들로 양자화할 수 있다. 일 예로, 가중치 값들이 32 비트의 부동 소수점 포맷인 경우, 프로세서(120)는 가중치 값들을 4 비트의 고정 소수점 포맷으로 양자화 할 수 있다. 또는, 프로세서(120)는 이진 코드에 기반한 양자화 알고리즘에 기초하여 32 비트의 부동 소수점으로 표현된 가중치 값들을 -1 또는 1의 값들로 양자화 할 수도 있다.
한편, 본 개시에 있어서 가중치 값을 양자화하는 방법에 특별한 제한은 없다. 일 예로, 양자화는 유니터리 양자화, 적응적 양자화, 균일 양자화, 관리된 반복 양자화(supervised iterative quantization) 또는 이진 코드 양자화 등의 다양한 알고리즘을 통해 수행될 수 있다.
예를 들어, 이진 코드 방식의 양자화에 대해 설명하면, 프로세서(120)는 k 비트로 가중치 값들을 양자화 하는 경우, 하기 수학식 1을 만족하는 다양한 양자화 알고리즘을 통해 신경망 모델의 가중치 값들을 양자화 할 수 있다.
[수학식 1]
Figure pat00001
(여기에서, w는 양자화 전의 가중치 값이고, a는 스케일링 인자(scaling factor)이며, b는 양자화 된 가중치 값으로써 -1 또는 1이 될 수 있다.)
일 예로, 프로세서(120)는 그리디 알고리즘을 통해 가중치 값들을 양자화 할 수 있다. 이 경우, 프로세서(120)는 상술한 수학식 1에서 k=1인 경우의 스케일링 인자 및 양자화 된 가중치 값을 하기 수학식 2에 기초하여 획득할 수 있다.
[수학식 2]
Figure pat00002
(여기에서, w는 양자화 전의 가중치 값이고, a*는 k=1인 경우의 스케일링 인자이며, b*는 k=1인 경우의 양자화 된 가중치 값으로써 -1 또는 1이고, n은 1이상의 정수가 될 수 있다.)
그리고, 프로세서(120)는 k= i (1 < i ≤ k)인 경우의 스케일링 인자 및 양자화 된 가중치 값을, 하기 수학식 3을 반복적으로 연산함으로써 획득할 수 있다. 즉, 프로세서(120)는 양자화 전의 가중치 값과 k=1인 경우에 양자화된 가중치 값의 차이인 r 을 이용하여, k= 2인 경우의 스케일링 인자 및 양자화 된 가중치 값을 획득할 수 있고, 이와 유사한 방법으로 k= i (1 < i ≤ k)인 경우의 스케일링 인자 및 양자화 된 가중치 값을 획득할 수 있다.
[수학식 3]
Figure pat00003
(여기에서, w는 양자화 전의 가중치 값이고, a는 스케일링 인자이며, b는 양자화 된 가중치 값으로써 -1 또는 1이고, r은 양자화 전의 가중치 값과 양자화된 가중치 값의 차이가 될 수 있다.)
한편, 프로세서(120)는 메모리(110)에 저장된 가중치 값들 중에서 임계 값 이하의 크기를 갖는 적어도 하나의 가중치 값을 제외하고, 나머지 가중치 값들에 기초하여 양자화를 수행할 수도 있다. 이에 대한 상세한 설명은 도 2a 및 도 2b를 참조하여 후술한다.
프로세서(120)는 신경망 모델의 양자화 된 가중치 값들에 기초하여, 입력 데이터에 대한 출력 데이터를 획득할 수 있다. 여기에서, 입력 데이터는 텍스트, 이미지 또는 사용자 음성 등이 될 수 있다. 일 예로, 텍스트는 전자 장치(100)의 키보드 또는 터치패드 등과 같은 입력부(미도시)를 통해 입력된 텍스트가 될 수 있고, 이미지는 전자 장치(100)의 카메라를 통해 촬영된 이미지가 될 수 있다. 또한, 사용자 음성은 전자 장치(100)의 마이크에 입력된 사용자 음성이 될 수 있다.
한편, 출력 데이터는 입력 데이터 및/또는 신경망 모델의 종류에 따라 상이할 수 있다. 즉, 출력 데이터는 어떠한 입력 데이터가 어떠한 신경망 모델에 입력되는지에 따라 상이할 수 있다. 예를 들어, 본 개시의 신경망 모델이 언어 번역을 위한 모델인 경우, 프로세서(120)는 제1 언어로 표현된 입력 데이터에 대해 제2 언어로 표현된 출력 데이터를 획득할 수 있다. 또는, 본 개시의 신경망 모델이 이미지 분석을 위한 모델인 경우, 프로세서(120)는 이미지를 신경망 모델의 입력 데이터로 입력하고, 해당 이미지에서 검출된 오브젝트에 관한 정보를 출력 데이터로 획득할 수 있다. 또한, 본 개시의 신경망 모델이 음성 인식을 위한 모델인 경우, 프로세서(120)는 사용자 음성을 입력 데이터로, 사용자 음성에 대응되는 텍스트를 출력 데이터로 획득할 수도 있다. 한편, 상술한 입력 데이터 및 출력 데이터는 일 실시 예로서, 본 개시의 입력 데이터 및 출력 데이터의 종류가 이에 제한되는 것은 아니라 할 것이다.
이를 위해, 프로세서(120)는 입력 데이터가 입력되면, 입력 데이터를 복수의 입력 값들을 포함하는 벡터로 표현할 수 있다. 물론, 실시 예에 따라 입력 값들은 매트릭스나 텐서로 표현될 수도 있다. 여기에서, 입력 데이터를 벡터로 표현하는 방법은 입력 데이터의 종류, 유형에 따라 상이할 수 있다. 일 예로, 프로세서(120)는 입력 데이터로 텍스트(또는, 사용자 음성을 변환한 텍스트)가 입력되는 경우, 원 핫 인코딩(One hot Encoding)을 통해 텍스트를 벡터로 표현하거나, 워드 임베딩(Word Embedding)을 통해 텍스트를 벡터로 표현할 수 있다. 워드 임베딩 방법으로는 일 예로, Word2Vec, FastText, Glove 등이 이용될 수 있다. 한편, 프로세서(120)는 입력 데이터로 이미지가 입력되는 경우이면, 이미지의 각 픽셀을 매트릭스로 표현할 수 있다. 일 예로, 프로세서(120)는 이미지의 각 픽셀을 RGB 컬러별로 0에서 255의 값으로 표현하거나, 0에서 255로 표현된 값을 기설정된 값(가령, 255)으로 정규화하여 매트릭스로 표현할 수 있다.
이후, 프로세서(120)는 양자화 데이터 및 입력 데이터에 기초하여 신경망 모델의 연산을 수행할 수 있다. 여기에서, 연산은 y=Qw*x(여기에서, Qw는 양자화 데이터, x는 입력 데이터이며, y는 출력 데이터가 될 수 있다.)의 형태의 딥러닝 연산이 될 수 있다. 이를 위해, 프로세서(120)는 데이터의 연산을 수행하는 프로세싱 엘리먼트(processing element, PE)를 더 포함할 수 있다. 인공 신경망의 연산은 공지의 기술인 바 구체적인 설명은 생략하기로 한다.
한편, 프로세서(120)는 메모리(110)에 저장된 가중치 값들 중에서, 높은 중요도를 가진 가중치 값들에 기초하여, 양자화를 수행할 수 있다. 이는, 낮은 중요도를 가진 가중치 값(즉, 작은 크기의 가중치 값)은 출력 데이터에 미치는 영향이 없거나 약함을 고려한 것으로써, 이에 따라 본 개시는 높은 정확도의 출력 데이터를 출력하면서도 가중치 데이터의 용량은 줄일 수 있다. 이하, 가중치의 중요도를 고려하여 양자화를 수행하는 방법에 대해 구체적으로 설명한다.
도 2a 및 도 2b는 본 개시의 일 실시 예에 따른 양자화 방법을 설명하기 위한 도면이다. 이하에서는, 설명의 편의를 위해 벡터 형태의 일 가중치 데이터를 양자화하는 방법에 대해 설명하나, 본 개시의 기술적 사상은 행렬 또는 텐서 형태의 가중치 데이터를 양자화하는데 적용될 수 있음은 물론, 복수의 레이어에 대응되는 복수의 가중치 데이터를 양자화하는데 적용될 수 있다고 볼 것이다.
또한, 이하에서는 설명의 편의를 위해 가중치 데이터 W가 [w1, w2, w3, w4]인 경우를 예로 들어 설명하나, 가중치 데이터 W는 n개(여기에서, n은 1이상의 정수)의 가중치 값들을 포함할 수 있고, n개의 가중치 값들을 포함하는 가중치 데이터의 경우에도 본 개시의 기술적 사상이 적용될 수 있다고 볼 것이다.
프로세서(120)는 메모리(110)에 저장된 가중치 데이터를 양자화할 수 있다. 구체적으로, 프로세서(120)는 양자화 대상이 되는 가중치 데이터를 메모리(110)로부터 로딩하고, 로딩된 가중치 데이터에 포함된 가중치 값들을 양자화 할 수 있다.
예를 들어, 상술한 바와 같이, 메모리(110)에 저장된 가중치 데이터 W가 [w1, w2, w3, w4]이고, 가중치 데이터 W를 k 비트로 양자화 하는 경우, 프로세서(120)는 n 비트의 부동 소수점 포맷인 [w1, w2, w3, w4]을 k 비트의 고정 소수점 포맷인 [w1', w2', w3', w4']로 양자화 할 수 있다.
또는, 가중치 데이터 W를 이진 코드에 기반한 알고리즘에 기초하여 k비트로 양자화 하는 경우, 프로세서(120)는 상술한 수학식 2, 3에 기초하여, 가중치 데이터 W를 a1[b11, b12, b13, b14] + a2[b21, b22, b23, b24] + a3[b31, b32, b33, b34] + a4[b41, b42, b43, b44] + ... +ak[bk1, bk2, bk3, bk4]로 양자화 할 수 있다. 일 예로, 가중치 데이터 W를 4 비트로 양자화 하는 경우이면, 프로세서(120)는 도 2a의 식별 번호 210과 같이, 가중치 데이터 W를 a1[b11, b12, b13, b14] + a2[b21, b22, b23, b24] + a3[b31, b32, b33, b34] + a4[b41, b42, b43, b44]로 양자화 할 수 있다.
한편, 이와 같은 양자화 방법은 양자화 전의 모든 가중치 값의 mean square error를 최소화하기 위한 조건 하에서 이루어지는 양자화 방법이다.
그러나, 실제로 가중치 값들 중 일부의 가중치 값은 출력 데이터의 정확도에 미치는 영향이 적은 것이 사실이다. 예를 들어, 0에 가까운 크기를 가진 가중치 값은 제외(또는, 프루닝) 되더라도 출력 데이터의 정확도에는 영향이 없거나 적다. 이와 같은 점을 고려하여, 본 개시는 출력 데이터의 정확도에 미치는 영향이 없거나 적은 일부의 가중치 값은 제외하고, 나머지 가중치 값들에 기초하여 가중치 데이터의 양자화를 수행할 수 있다. 이에 의하면, 상술한 양자화 방법과 비교하였을 때, 출력 데이터의 정확도를 크게 손실하지 않으면서도, 보다 적은 비트 수로 가중치 데이터를 양자화할 수 있다. 즉, 신경망 모델을 효율적으로 경량화할 수 있다.
이를 위해, 프로세서(120)는 가중치 데이터에 포함된 가중치 값들 중에서 임계 값 이하의 크기를 갖는 적어도 하나의 가중치 값을 판단할 수 있다. 구체적으로, 프로세서(120)는 가중치 데이터를 메모리(110)로부터 로딩하고, 가중치 데이터에 포함된 가중치 값들 각각의 크기를 판단하며, 가중치 값들 중에서 임계 값 이하의 크기를 갖는 적어도 하나의 가중치 값을 판단할 수 있다.
예를 들어, 상술한 바와 같이, 가중치 데이터 W가 [w1, w2, w3, w4]인 경우, 프로세서(120)는 가중치 값들 w1, w2, w3, w4 각각의 크기를 판단하고, 가중치 값들 w1, w2, w3, w4 중에서 임계 값 이하의 크기를 갖는 적어도 하나의 가중치 값을 판단할 수 있다.
한편, 임계 값은, 임계 값 설정을 위한 사용자 입력에 기초하여 설정될 수 있다. 일 예로, 임계 값이 사용자 입력에 따라 0.3으로 설정된 경우, 프로세서(120)는 가중치 데이터에 포함된 가중치 값들 중에서 0.3 보다 작은 크기를 갖는 가중치 값, 가령, 0.2 또는 -0.1 등의 가중치 값을 상술한 적어도 하나의 가중치 값으로 판단할 수 있다.
또한, 상술한 적어도 하나의 가중치 값은 프루닝 레이트 설정을 위한 사용자 입력에 기초하여 판단될 수 있다. 구체적으로, 프로세서(120)는 프루닝 레이트 설정을 위한 사용자 입력이 수신되면, 가중치 값들의 크기에 기초하여 가중치 데이터에 포함된 가중치 값들 중에서 프루닝 레이트에 속하는 가중치 값들을 판단할 수 있다. 일 예로, 프루닝 레이트가 25%로 설정된 경우, 프로세서(120)는 가중치 데이터에 포함된 가중치 값들 중에서, 가중치 값의 크기가 하위 25%인 적어도 하나의 가중치 값을 판단할 수 있다.
또한, 이상에서는 임계 값은, 임계 값 설정을 위한 사용자 입력에 기초하여 설정되는 것으로 설명하였으나, 임계 값은 프루닝 레이트 설정을 위한 사용자 입력에 기초하여 설정될 수도 있다. 구체적으로, 프로세서(120)는 가중치 값들의 크기에 기초하여 가중치 데이터에 포함된 가중치 값들 중에서 프루닝 레이트에 속하는 가중치 값들을 판단하고, 프루닝 레이트에 속하는 가중치 값들 중에서 상대적으로 가장 큰 크기를 갖는 가중치 값의 크기를 임계 값으로 설정할 수도 있다.
한편, 상술한 임계 값은, 실시 예에 따라 Bayesian optimization 등과 같은 AutoML(Automated machine learning) 기법에 기초하여 설정될 수 있다. 여기에서, Bayesian optimization는 신경망 모델의 정확도를 높은 수준으로 구현하기 위해 하이퍼 파라미터(hyperparameter)의 최적 값을 탐색하는 기법으로서, Bayesian optimization는 하이퍼 파라미터를 입력 값으로 신경망 모델의 출력 값의 정확도를 판단하는 다양한 목적 함수를 통해 하이퍼 파라미터의 최적 값을 탐색할 수 있다. 구체적으로, 본 개시는 샘플링을 통해 획득된 복수의 후보 임계 값들을 하이퍼 파라미터로서 Bayesian optimization의 목적 함수에 적용하고, 가장 높은 Bayesian optimization 출력 값이 출력될 때 입력 값으로 입력된 후보 임계 값을 상술한 양자화를 위한 임계 값으로 설정할 수 있다. 이 경우, Bayesian optimization의 목적 함수는 후보 임계 값을 입력 값으로 신경망 모델의 출력 값의 정확도를 판단하는 다양한 함수가 적용될 수 있을 것이다. 이와 같이, 본 개시는 Bayesian optimization과 같은 통계적 기법을 이용하여 임계 값을 설정함으로써, 양자화 후, 양자화 된 가중치 값들에 기초하여 신경망 모델을 재학습 시킬 필요가 없는, 높은 정확도의 경량화된 신경망 모델을 획득할 수 있다. 한편, 이와 같은 임계 값의 설정은 프로세서(120)에 의해 수행될 수 있으나, 반드시 이에 한정되는 것은 아니고, 별개의 외부 장치에 의해 수행될 수도 있다.
프로세서(120)는 임계 값 이하의 크기를 가진 적어도 하나의 가중치 값이 판단되면, 가중치 데이터에 포함된 가중치 값들 중에서, 상술한 적어도 하나의 가중치 값을 제외한 나머지 가중치 값들에 기초하여 양자화를 수행할 수 있다. 즉, 프로세서(120)는 일부의 가중치 값은 프루닝하고, 프루닝 되지 않은 나머지 가중치 값들을 양자화 할 수 있다.
이하에서는, 설명의 편의를 위해, 임계 값 이하의 크기를 가진 적어도 하나의 가중치 값을 제외한, 나머지 가중치 값들의 양자화에 의해 획득되는 양자화 데이터를 제1 양자화 데이터라 하고, 임계 값 이하의 크기를 가진 적어도 하나의 가중치 값의 양자화에 의해 획득되는 양자화 데이터를 제2 양자화 데이터라 한다.
예를 들어, 가중치 데이터 W에 포함된 가중치 값들 w1, w2, w3, w4 중 임계 값 이하의 크기를 가진 가중치 값이 w1인 경우, 프로세서(120)는 w1을 제외한 [w2, w3, w4]에 대한 양자화를 수행할 수 있다. 여기에서, 양자화 방법은 상술한 바와 같이 n 비트의 부동 소수점 포맷을 k 비트의 고정 소수점 포맷으로 경량화 할 수 있는 다양한 알고리즘이 적용될 수 있다.
그리고, 프로세서(120)는 [w2, w3, w4]를 양자화함으로써, 제1 양자화 데이터를 획득할 수 있다. 즉, 프로세서(120)는 n 비트의 부동 소수점 포맷인 [w2, w3, w4]를 k 비트로 양자화 하여, k 비트의 고정 소수점 포맷인 [w2', w3', w4']를 획득할 수 있다.
또는, 프로세서(120)는 [w2, w3, w4]를 이진 코드로 양자화함으로써, 복수의 스케일링 인자 및, -1 또는 1의 비트 값들을 포함하는 제1 양자화 데이터를 획득할 수 있다. 일 예로, 도 2a의 식별 번호 220을 참조하면, 프로세서(120)는 W = [w2, w3, w4]를 양자화 알고리즘에 기초하여, W'
Figure pat00004
a2[b22, b23, b24] + a3[b32, b33, b34] + a4[b42, b43, b44]로 양자화하여, 복수의 스케일링 인자 a2, a3 및 a4, 및 -1 또는 1의 비트 값들을 포함하는 제1 양자화 데이터를 획득할 수 있다. 만약, b22=1, b32=-1, b42=-1, b23=1, b33=1, b43=-1, b24=1, b34=1, b44=-1인 경우, 프로세서(120)는 복수의 스케일링 인자 a2, a3 및 a4와, w2에 대응되는 비트 값들 [1, -1, -1], w3에 대응되는 비트 값들 [1, 1, -1] 및 w4에 대응되는 비트 값들 [1, 1, -1]을 제1 양자화 데이터로 획득하고, 이를 메모리(110)에 저장할 수 있다.
또한, 프로세서(120)는 비트 값 -1을 0으로 치환하여, w2에 대응되는 이진 데이터 '100', w3에 대응되는 이진 데이터 '110', w4에 대응되는 이진 데이터 '110'을 메모리(110)에 저장할 수도 있다.
그리고, 프로세서(120)는 상술한 적어도 하나의 가중치 값에 대응되는 양자화 값을 포함하는 양자화 데이터(즉, 제2 양자화 데이터라 한다.)를 획득할 수 있다.
구체적으로, 프로세서(120)는 제1 양자화 데이터에 포함된 양자화 값들 중에서 기설정된 값에 가장 근접한 양자화 값을 상술한 적어도 하나의 가중치 값에 대응되는 양자화 값으로 판단할 수 있다. 여기에서, 기설정된 값은 0이 될 수 있다.
이를 위해, 프로세서(120)는 제1 양자화 데이터에 포함된 양자화 값들 각각의 크기를 판단하고, 제1 양자화 데이터에 포함된 양자화 값들 중에서 가장 작은 크기를 가진 양자화 값을 판단할 수 있다. 예를 들어, 상술한 바와 같이, 임계 값 이하의 크기를 갖는 가중치 값 w1을 제외한 나머지 가중치 값들 [w2, w3, w4]을 양자화 하여, [w2', w3', w4']와 같은 제1 양자화 데이터를 획득한 경우, 프로세서(120)는 w2', w3' 및 w4' 각각의 크기를 판단하고, 양자화 값 w1'는 w2', w3' 및 w4' 중에서, 최소 크기의 양자화 값을 w1의 양자화 값 w1'로 판단할 수 있다.
한편, 실시 예에 따라 0에 가장 근접한 양자화 값으로 두 개의 양자화 값이 있을 수 있다. 일 예로, 상술한 w2', w3' 및 w4'의 크기가 w2' > w3' = w4'이고, w3' 및 w4'의 부호가 상이한 경우가 그러하다.
이 경우, 프로세서(120)는 양자화 전의 가중치 값 w1의 크기(또는, 부호)에 기초하여 두 개의 양자화 값 중 하나를 w1의 양자화 값으로 결정할 수 있다. 구체적으로, 프로세서(120)는 가중치 값 w1의 크기가 0보다 큰 경우(또는, 부호가 양인 경우)이면, 양의 값을 가진 양자화 값을 w1의 양자화 값으로 결정하고, 가중치 값 w1의 크기가 0보다 작은 경우(또는, 부호가 음인 경우)이면, 음의 값을 가진 양자화 값을 w1의 양자화 값으로 결정할 수 있다. 다만, 이는 일 실시 예로서, 실시 예에 따라 두 개의 양자화 값 중 어느 하나가 랜덤하게 선택될 수도 있다.
이후, 프로세서(120)는 획득한 제1 양자화 데이터 및 제2 양자화 데이터 메모리(110)에 저장할 수 있다. 즉, 상술한 실시 예에서, 프로세서(120)는 [w1', w2', w3', w4']를 메모리(110)에 저장할 수 있다. 여기에서 저장된 양자화 데이터는 이후 신경망 모델의 연산에 이용되거나, 신경망 모델의 연산을 수행할 수 있는 외부 장치로 전송될 수 있다.
한편, 이진 코드에 기반하여 가중치 데이터를 양자화한 경우이면, 프로세서(120)는 획득한 복수의 스케일링 인자에 기초하여, 상술한 적어도 하나의 가중치 값에 대응되는 양자화 데이터(즉, 제2 양자화 데이터라 한다.)를 획득할 수 있다.
구체적으로, 프로세서(120)는 복수의 스케일링 인자를 이용한 연산에 기초하여 복수의 연산 값을 획득하고, 복수의 연산 값 중에서 기설정된 값에 가장 근접한 연산 값에 기초하여 제2 양자화 데이터를 획득할 수 있다. 여기에서, 기설정된 값은 0이 될 수 있다.
이를 위해, 프로세서(120)는 복수의 스케일링 인자를 이용하여 복수의 연산을 수행할 수 있다. 구체적으로, 프로세서(120)는 복수의 스케일링 인자 각각에 +1 또는 -1을 곱한 값을 합산하는 연산을 수행할 수 있다.
예를 들어, 상술한 바와 같이, 임계 값 이하의 크기를 갖는 가중치 값 w1을 제외한 나머지 가중치 값들 [w2, w3, w4]을 양자화 하여, 복수의 스케일링 인자 a2, a3 및 a4를 획득한 경우, 프로세서(120)는 ±a2 ±a3 ±a4 연산을 수행할 수 있다.
그리고, 프로세서(120)는 복수의 스케일링 인자를 이용하여 획득한 복수의 연산 값 중에서, 0에 가장 근접한 연산 값을 판단할 수 있다.
이때, 프로세서(120)는 0에 가장 근접한 연산 값으로 두 개의 값을 획득할 수 있다. 일 예로, 상술한 스케일링 인자의 크기가 a2 > a3 > a4인 경우, 프로세서(120)는 a2-a3-a4 연산에 기초하여 획득한 연산 값 k 및 -(a2-a3-a4) 연산에 기초하여 획득한 연산 값 -k를 0에 가장 근접한 연산 값으로 판단할 수 있다.
이 경우, 프로세서(120)는 양자화 전의 가중치 값 w1의 크기(또는, 부호)에 기초하여 두 개의 연산 값 중 하나를 제2 양자화 데이터 획득을 위한 연산 값으로 판단할 수 있다. 구체적으로, 프로세서(120)는 가중치 값 w1의 크기가 0보다 큰 경우(또는, 부호가 양인 경우)이면, 양의 값을 가진 연산 값 k를 제2 양자화 데이터 획득을 위한 연산 값으로 판단하고, 가중치 값 w1의 크기가 0보다 작은 경우(또는, 부호가 음인 경우)이면, 음의 값을 가진 연산 값 -k를 제2 양자화 데이터 획득을 위한 연산 값으로 판단할 수 있다. 다만, 이는 일 실시 예로서, 실시 예에 따라 두 개의 연산 값 중 어느 하나가 랜덤하게 선택될 수도 있다.
그리고, 프로세서(120)는 상술한 기설정된 값에 가장 근접한 연산 값을, 가중치 값 w1에 대응되는 양자화 값으로 판단할 수 있다. 즉, 도 2b의 식별 번호 230에 도시된 바와 같이, 프로세서(120)는 min (±a2 ±a3 ±a4)을 가중치 값 w1에 대응되는 양자화 값으로 판단할 수 있다.
일 예로, 복수의 스케일링 인자 a2, a3 및 a4를 이용한 복수의 연산 중에서, a2-a3-a4 연산에 기초한 연산 값이 0에 가장 근접한 연산 값으로 판단되는 경우, 프로세서(120)는 a2-a3-a4 연산에 기초한 연산 값을 가중치 값 w1에 대응되는 양자화 값으로 판단할 수 있다. 그리고, 프로세서(120)는 복수의 스케일링 인자 a2, a3 및 a4와 w1에 대응되는 비트 값들 [1, -1, -1]을 제2 양자화 데이터로 획득하고, 이를 메모리(110)에 저장할 수 있다. 또한, 프로세서(120)는 [1, -1, -1]에 대응되는 이진 데이터인 '100'을 메모리(100)에 저장할 수도 있다.
이와 같은 방법으로 양자화 된 가중치 데이터 W를 수식으로 표현하면, 도 2b의 식별 번호 230과 같다. 즉, 양자화 된 가중치 데이터 W는, [min (±a2 ±a3 ±a4), a2·b22+ a3·b32 + a4·b42, a2·b23 + a3·b33 + a4·b43, a2·b24 + a3·b34 + a4·b44]로 표현될 수 있다. 여기에서, 양자화 된 가중치 값들을 하나씩 살펴보면, 도 2b의 식별 번호 230과 같다. 즉, 양자화 된 가중치 값 w1은 min (±a2 ±a3 ±a4)이고, 양자화 된 가중치 값 w2는 a2·b22 + a3·b32 + a4·b42이며, 양자화 된 가중치 값 w3는 a2·b23 + a3·b33 + a4·b43이고, 양자화 된 가중치 값 w4는 a2·b24 + a3·b34 + a4·b44가 될 수 있다.
만약, 복수의 스케일링 인자 각각의 값이 a2=0.8 a3=0.4 a4=0.1이고, 0에 가장 근접한 연산 값이 a2-a3-a4=0.3이며, 복수의 양자화 된 가중치 값 각각이 b22=1, b32=-1, b42=-1, b23=1, b33=1, b43=-1, b24=1, b34=1, b44=-1인 경우이면, 프로세서(120)는 복수의 스케일링 인자의 값들과, w1에 대응되는 비트 값들 [1, -1, -1], w2에 대응되는 비트 값들 [1, -1, -1], w3에 대응되는 비트 값들 [1, 1, -1] 및 w4에 대응되는 비트 값들 [1, 1, -1]를 획득할 수 있다. 또한, 프로세서(120)는 w1에 대응되는 이진 데이터 '100', w2에 대응되는 이진 데이터 '100', w3에 대응되는 이진 데이터 '110' 및 w4에 대응되는 이진 데이터 '110'을 획득할 수 있다.
그리고, 프로세서(120)는 획득한 제1 양자화 데이터 및 제2 양자화 데이터 메모리(110)에 저장할 수 있다. 여기에서 저장된 양자화 데이터는 이후 신경망 모델의 연산에 이용되거나, 신경망 모델의 연산을 수행할 수 있는 외부 장치로 전송될 수 있다.
이와 같이, 본 개시는 출력 데이터에 미치는 영향이 작은, 즉 임계 값 이하의 크기를 가진 가중치 값을 제외한 나머지 가중치 값들에 기초하여, 가중치 데이터를 양자화함으로써, 모든 가중치 값들을 양자화 하는 경우와 비교하였을 때 가중치 데이터의 용량을 축소시키면서도, 출력 데이터의 오류 발생을 최소화 할 수 있다.
또한, 임계 값 이하의 크기를 가진 가중치 값을 0으로 대체하는 것이 아닌, 0에 가장 근접한 연산 값으로 대체함으로써, 가중치 값을 0으로 대체하기 위해 프루닝 마스크를 이용할 필요가 없고, 이에 따라 프루닝 마스크에 의한 비트(가령, 1 비트)소모를 방지할 수 있다.
또한, 임계 값 이하의 크기를 가진 가중치 값을 0에 가장 근접한 연산 값으로 대체함으로써, 노이즈를 신경망 모델에 추가하는 효과도 줄 수 있다. 여기에서, 노이즈는 출력 데이터의 정확도 향상에 도움이 될 수 있음은 물론, 신경망 모델의 학습 과정에서 출력 데이터의 오류 감소에 이용될 수 있다.
한편, 이상에서는 임계 값 이하의 크기를 가진 가중치 값을 제외한 나머지 가중치 값들에 기초하여, 가중치 데이터를 양자화하는 방법에 대해 설명하였다. 그러나, 본 개시의 실시 예가 이에 한정되는 것은 아니며, 본 개시는 다양한 방법을 통해 가중치 데이터의 양자화를 수행할 수 있다.
일 예로, 프로세서(120)는 클리핑 값에 기초하여 가중치 데이터의 양자화를 수행할 수 있다. 구체적으로, 프로세서(120)는 가중치 데이터에 포함된 가중치 값들 중 적어도 하나의 가중치 값을 클리핑 값에 기초하여 클리핑하고, 클리핑 된 가중치 값을 포함하는 가중치 데이터를 양자화할 수 있다. 여기에서, 클리핑이란, 클리핑 값보다 큰 크기를 갖는 가중치 값을 (+)클리핑 값 및 (-)클리핑 값 중 하나로 대체하는 것으로서, 프로세서(120)는 클리핑 값이 Ck인 경우, +Ck보다 큰 크기를 갖는 가중치 값은 +Ck로 대체하고, -Ck보다 큰 크기를 갖는 가중치 값은 -Ck로 대체할 수 있다. 일 예로, 클리핑 값이 1.3으로 설정된 경우, 프로세서(120)는 가중치 데이터에 포함된 가중치 값들 중에서 1.3보다 큰 크기를 갖는 가중치 값 1.5나 2.7 등의 값을 1.3으로 대체하고, -1.3보다 큰 크기를 갖는 가중치 값 -1.5나 -2.7 등의 값을 -1.3으로 대체할 수 있다. 그리고, 프로세서(120)는 클리핑 된 가중치 값을 포함하는 가중치 데이터를 양자화하여 양자화 데이터를 획득하고, 양자화 데이터를 메모리(110)에 저장할 수 있다. 한편, 여기에서 클리핑 값은, 클리핑 값 설정을 위한 사용자 입력에 기초하여 설정될 수 있다. 또한, 일 실시 예에 의하면, 클리핑 값은 상술한 Bayesian optimization등과 같은 AutoML 기법을 통해 설정될 수도 있다. 이에 따라, 본 개시는 신경망 모델의 정확도를 크게 손실하지 않으면서도, 신경망 모델을 효율적으로 경량화 할 수 있는 최적의 클리핑 값에 기초하여 가중치 데이터를 양자화 할 수 있다.
또한, 이상에서는 지수 값 2를 갖는 [수학식 1]에 기초하여 가중치 데이터를 양자화 하는 것으로 설명하였다. 그러나, 이는 일 실시 예로서, 프로세서(120)는 2가 아닌 다른 지수 값을 갖는 [수학식 1]에 기초하여 가중치 데이터를 양자화 할 수도 있다. 예를 들어, 프로세서(120)는 지수 값 2가 1.3이나 2.5 등의 값으로 대체된 [수학식 1]에 기초하여 가중치 데이터를 양자화 할 수도 있다. 한편, 여기에서 지수 값은, 지수 값 설정을 위한 사용자 입력에 기초하여 설정될 수 있다. 또한, 일 실시 예에 의하면, 지수 값은 상술한 Bayesian optimization등과 같은 AutoML 기법을 통해 설정될 수도 있다. 이에 따라, 본 개시는 신경망 모델의 정확도를 크게 손실하지 않으면서도, 신경망 모델을 효율적으로 경량화 할 수 있는 최적의 지수 값에 기초하여 가중치 데이터를 양자화 할 수 있다.
도 3a 및 도 3b는 본 개시의 일 실시 예에 따른 중요도에 기초하여 가중치 데이터를 양자화하는 실시 예를 설명하기 위한 도면이다.
이상에서는, 가중치 값들 중에서 임계 값 이하의 크기를 갖는 적어도 하나의 가중치 값을 제외한, 나머지 가중치 값들에 기초하여 가중치 데이터를 양자화하는 방법에 대해 설명하였다. 이는, 전술한 바와 같이, 임계 값 이하의 크기를 갖는 가중치 값은 출력 데이터에 미치는 영향, 즉 중요도가 낮음을 고려한 것이다.
한편, 프로세서(120)는 실시 예에 따라 가중치 데이터에 포함된 가중치 값들을 중요도에 기초하여 정규화(normalize)하고, 정규화 된 가중치 값들을 양자화할 수도 있다. 이 역시, 상술한 취지와 유사하게, 중요도가 낮은 가중치 값은 출력 데이터에 미치는 영향이 적음을 고려한 것이다.
구체적으로, 프로세서(120)는 가중치 데이터에 포함된 가중치 값들의 크기를 판단하고, 상대적으로 가장 큰 크기를 가진 가중치 값에 기초하여, 가중치 값들을 정규화할 수 있다. 일 예로, 도 3a를 참조하면, 프로세서(120)는 가중치 데이터 W에 가중치 값들 w1, w2, w3 및 w4이 포함된 경우, 가중치 데이터 W에 포함된 가중치 값들 w1, w2, w3 및 w4 각각의 크기를 판단하고, w1, w2, w3 및 w4 중에서, 상대적으로 가장 큰 크기를 가진 가중치 값을, w1, w2, w3 및 w4 각각에 나누는 방식으로 가중치 데이터 W를 정규화할 수 있다. 즉, 프로세서(120)는 가중치 데이터 W를 [w1/w(max), w2/w(max), w3/w(max), w4/w(max)]로 정규화 할 수 있다.
여기에서, 정규화 된 가중치 값의 크기는, 가중치의 중요도를 나타내는 지표가 될 수 있다. 즉, w1의 중요도 m1은 │w1│/│w(max)│이고, w2의 중요도 m2는 │w2│/│w(max)│이며, w3의 중요도 m3는 │w3│/│w(max)│이고, w4의 중요도 m4는 │w4│/│w(max)│가 될 수 있다. 본 수식을 통해, 중요도가 높은 정규화 된 가중치 값은 1에 가까운 중요도를 가지고, 중요도가 낮은 정규화 된 가중치 값은 0에 가까운 중요도를 가짐을 알 수 있다.
그리고, 프로세서(120)는 정규화 된 가중치 값들의 중요도에 기초하여 양자화를 수행할 수 있다. 즉, 프로세서(120)는 정규화 된 가중치 값들의 중요도에 기초하여 가중치 값들 [w1/w(max), w2/w(max), w3/w(max), w4/w(max)]에 대한 양자화를 수행할 수 있다.
여기에서, 양자화는 상술한 바와 같이 다양한 양자화 알고리즘에 의해 수행될 수 있다.
또한, 이진 코드에 기반한 상술한 수학식 2, 3의 기술적 사상이 적용될 수도 있다. 다만, 수학식 2, 3의 가중치 값 w 대신 중요도 m이 곱해진 m * w 가 수학식 2, 3에 적용되고, 수학식 2, 3의 n 값 대신 중요도 m 값들을 합산한 값이 수학식 2, 3에 적용될 수 있다. 일 예로, 상술한 바와 같이, 정규화 된 가중치 값들이 [w1/w(max), w2/w(max), w3/w(max), w4/w(max)]인 경우, k=1인 경우의 스케일링 인자는 도 3a에 도시된 바와 같이, (m1*w1+m2*w2+m3*w3+m4*w4)/(m1+m2+m3+m4)가 될 수 있다. 그리고, 양자화 된 가중치 값은, 상술한 수학식 2, 3과 유사하게 정규화 된 가중치 값 각각의 크기(또는, 부호)에 기초하여 결정될 수 있다.
이와 같이, 본 개시는 상대적으로 작은 크기를 가진(즉, 상대적으로 출력 데이터에 적은 영향을 미치는) 가중치 값에는 낮은 중요도를 적용하고, 상대적으로 큰 크기를 가진(즉, 상대적으로 출력 데이터에 많은 영향을 미치는) 가중치 값에는 높은 중요도를 적용하여 양자화를 수행함으로써, 높은 정확도의 출력 데이터를 출력하면서도 가중치 데이터의 용량은 줄일 수 있다.
한편, 상술한 가중치 값의 크기에 기초하여 가중치 데이터를 정규화하는 예는 일 실시 예로서, 본 개시는 피셔(fisher) 값에 기초하여 가중치 데이터의 정규화를 수행할 수도 있다.
예를 들어, 도 3b를 참조하면, 프로세서(120)는 가중치 데이터 W에 가중치 값들 w1, w2, w3 및 w4이 포함된 경우, 가중치 데이터 W에 포함된 가중치 값들 w1, w2, w3 및 w4 각각의 피셔 값을 판단하고, 복수의 피셔 값 중에서, 상대적으로 가장 큰 피셔 값을, 각각의 값들 f1, f2, f3 및 f4에 나누는 방식으로 가중치 데이터 W를 정규화할 수 있다. 즉, 프로세서(120)는 가중치 데이터 W를 [f1/f(max), f2/f(max), f3/f(max), f4/f(max)]로 정규화 할 수 있다.
여기에서, 피셔 값은 피셔 이론에 의해 산출된 값으로써, 피셔 값은 특정 값(가령, 가중치 값)이 다른 값(가령, mean square error)에 얼마나 영향을 미치는지를 수치적으로 나타내는 값이 될 수 있다. 구체적으로, 프로세서(120)는 역전파(back propagation)를 수행하는 동안 변경되는 가중치 값의 gradient 값, 즉 △g 값을 각 가중치의 피셔 값으로 산출할 수 있다. 실시 예에 따라, 프로세서(120)는 다수의 역전파를 수행하는 동안 획득한 △g를 합산한 값을 피셔 값으로 산출할 수도 있고, (△g)^2 또는 (△g)^2를 합산한 값을 각 가중치의 피셔 값으로 산출할 수도 있다.
여기에서, 정규화 된 피셔 값의 크기는, 가중치의 중요도를 나타내는 지표가 될 수 있다. 즉, w1의 중요도 m1은 │f1│/│f(max)│이고, w2의 중요도 m2는 │f2│/│f(max)│이며, w3의 중요도 m3는 │f3│/│f(max)│이고, w4의 중요도 m4는 │f4│/│f(max)│가 될 수 있다. 본 수식을 통해, 중요도가 높은 정규화 된 가중치 값은 1에 가까운 중요도를 가지고, 중요도가 낮은 정규화 된 가중치 값은 0에 가까운 중요도를 가짐을 알 수 있다.
그리고, 프로세서(120)는 피셔 값에 기초하여 정규화 된 가중치 값들의 양자화를 수행할 수 있다. 즉, 프로세서(120)는 [f1/f(max), f2/f(max), f3/f(max), f4/f(max)]에 대한 양자화를 수행할 수 있다.
여기에서, 양자화는 상술한 바와 같이 다양한 양자화 알고리즘에 의해 수행될 수 있다.
또한, 이진 코드에 기반한 상술한 수학식 2, 3의 기술적 사상이 적용될 수 있다. 다만, 수학식 2, 3의 가중치 값 w 대신 중요도 m이 피셔 값 f에 곱해진 m * f 가 수학식 2, 3에 적용되고, 수학식 2, 3의 가중치 값들의 개수를 나타내는 n 대신 중요도 m 값들을 합산한 값이 수학식 2, 3에 적용될 수 있다. 일 예로, 상술한 바와 같이, 정규화 된 가중치 값들이 [f1/f(max), f2/f(max), f3/f(max), f4/f(max)]인 경우, k=1인 경우의 스케일링 인자는 도 3b에 도시된 바와 같이, (m1*f1+m2*f2+m3*f3+m4*f4)/(m1+m2+m3+m4)가 될 수 있다. 그리고, 양자화 된 가중치 값은, 상술한 수학식 2, 3과 유사하게 정규화 된 가중치 값 각각의 크기(또는, 부호)에 기초하여 결정될 수 있다.
이와 같이, 본 개시는 상대적으로 작은 피셔 값을 가진(즉, 상대적으로 출력 데이터에 적은 영향을 미치는) 가중치 값에는 낮은 중요도를 적용하고, 상대적으로 큰 피셔 값을 가진(즉, 상대적으로 출력 데이터에 많은 영향을 미치는) 가중치 값에는 높은 중요도를 적용하여 양자화를 수행함으로써, 높은 정확도의 출력 데이터를 출력하면서도 가중치 데이터의 용량은 줄일 수 있다.
도 4는 본 개시의 일 실시 예에 따른 전자 장치를 설명하기 위한 상세 블록도이다.
도 4를 참조하면, 본 개시의 일 실시 예에 따른 전자 장치(100)는 메모리(110), 입력부(130), 통신부(140), 디스플레이(150), 스피커(160) 및 프로세서(120)를 포함할 수 있다. 이하, 설명한 설명과 중복되는 부분은 생략하거나 축약하여 설명한다.
입력부(130)는 사용자 명령을 수신할 수 있다. 이를 위해, 입력부(130)는 터치 센서, (디지털) 펜 센서, 압력 센서, 또는 키를 포함할 수 있다. 터치 센서는, 예를 들면, 정전식, 감압식, 적외선 방식, 또는 초음파 방식 중 적어도 하나의 방식을 사용할 수 있다. (디지털) 펜 센서는, 예를 들면, 터치 패널의 일부이거나, 별도의 인식용 쉬트를 포함할 수 있다. 키는, 예를 들면, 물리적인 버튼, 광학식 키, 또는 키패드를 포함할 수 있다. 또한, 입력부(130)는 마이크를 포함할 수 있다. 여기에서, 마이크는 사용자 발화 음성을 수신할 수 있다.
통신부(140)는 외부 장치와 통신을 수행하여 다양한 데이터를 송수신할 수 있다. 구체적으로, 통신부(140)는 외부 장치와 통신을 수행하여 신경망 모델을 수신할 수 있다. 여기에서, 신경망 모델은 상술한 양자화 알고리즘을 통해 양자화 된 가중치 데이터를 포함할 수 있다.
이를 위해, 통신부(140)는 무선 통신 칩, 와이 파이 칩, 블루투스 칩 등을 포함할 수 있다.
디스플레이(150)는 다양한 화면을 표시할 수 있다. 특히, 디스플레이(150)는 신경망 모델에 의해 출력된 출력 데이터에 대응되는 화면을 표시할 수 있다. 여기에서, 출력 데이터에 대응되는 화면은 출력 데이터에 기초하여 생성된 메시지, 이미지 등이 될 수 있다.
디스플레이(150)는 LCD(Liquid Crystal Display), OLED(Organic Light Emitting Diodes), AM-OLED(Active-Matrix Organic Light-Emitting Diode), LcoS(Liquid Crystal on Silicon) 또는 DLP(Digital Light Processing) 등과 같은 다양한 디스플레이 기술로 구현될 수 있다. 또한, 디스플레이(150)는 플렉서블 디스플레이(flexible display)의 형태로 전자 장치(100)의 전면 영역 및, 측면 영역 및 후면 영역 중 적어도 하나에 결합될 수도 있다.
또한, 디스플레이(150)는 터치 센서를 구비한 터치 스크린으로 구현될 수도 있다.
스피커(160)는 오디오 처리부(미도시)에 의해 디코딩이나 증폭, 노이즈 필터링과 같은 다양한 처리 작업이 수행된 각종 오디오 데이터를 출력하는 구성이다. 또한, 스피커(160)는 각종 알림 음이나 음성 메시지를 출력할 수 있다. 본 개시에 따르면 신경망 모델의 압축이 완료된 경우 또는 신경망 모델에 의해 출력 데이터가 출력되는 경우, 스피커(160)는 알림 음 등을 출력할 수 있다.
도 5는 본 개시의 일 실시 예에 따른 전자 장치의 제어 방법을 설명하기 위한 흐름도이다.
전자 장치(100)는 가중치 데이터에 포함된 가중치 값들 중에서 임계 값 이하의 크기를 갖는 적어도 하나의 가중치 값을 판단(S510)할 수 있다. 여기에서, 가중치 데이터는 신경망 모델의 연산에 이용되는 데이터가 될 수 있다. 임계 값은, 임계 값 설정을 위한 사용자 입력에 기초하여 설정될 수 있음은 물론, 프루닝 레이트 설정을 위한 사용자 입력에 기초하여 설정될 수 있다.
전자 장치(100)는 가중치 데이터에 포함된 가중치 값들 중에서, 판단된 적어도 하나의 가중치 값을 제외한 나머지 가중치 값들을 양자화하여, 상술한 나머지 가중치 값들에 대응되는 양자화 값들을 포함하는 제1 양자화 데이터를 획득(S520)할 수 있다.
그리고, 전자 장치(100)는 제1 양자화 데이터에 포함된 양자화 값들 중에서 중에서 기설정된 값에 가장 근접한 양자화 값을 판단(S530)할 수 있다. 여기에서, 기설정된 값은 0이 될 수 있다.
그리고, 전자 장치(100)는 기설정된 값에 가장 근접한 양자화 값에 기초하여 상술한 적어도 하나의 가중치 값에 대응되는 양자화 값을 포함하는 제2 양자화 데이터를 획득(S540)할 수 있다. 구체적으로, 전자 장치(100)는 기설정된 값에 가장 근접한 양자화 값을, 상술한 적어도 하나의 가중치 값에 대응되는 양자화 값으로 판단할 수 있다.
그리고, 전자 장치(100)는 획득한 제1 양자화 데이터 및 제2 양자화 데이터를 저장(S550)할 수 있다. 여기에서, 저장된 제1 양자화 데이터 및 제2 양자화 데이터는, 전자 장치(100)가 신경망 모델의 연산을 수행할 때 이용될 수 있다. 또는, 전자 장치(100)는 제1 양자화 데이터 및 제2 양자화 데이터를 외부 장치로 전송할 수 있다.
한편, 상술한 본 개시의 다양한 실시 예들에 따른 방법들은, 기존 전자 장치에 설치 가능한 소프트웨어 또는 어플리케이션 형태로 구현될 수 있다.
또한, 본 개시에 따른 전자 장치의 제어 방법을 순차적으로 수행하는 프로그램이 저장된 비일시적 판독 가능 매체(non-transitory computer readable medium)가 제공될 수 있다.
비일시적 판독 가능 매체란 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 구체적으로는, 상술한 다양한 어플리케이션 또는 프로그램들은 CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등과 같은 비일시적 판독 가능 매체에 저장되어 제공될 수 있다.
또한, 이상에서는 본 발명의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
100: 전자 장치
110: 메모리
120: 프로세서

Claims (18)

  1. 전자 장치에 있어서,
    신경망 모델의 연산에 이용되는 가중치 데이터를 저장하는 메모리;
    상기 가중치 데이터에 포함된 가중치 값들 중에서 임계 값 이하의 크기를 갖는 적어도 하나의 가중치 값을 판단하고,
    상기 가중치 데이터에 포함된 가중치 값들 중에서, 상기 판단된 적어도 하나의 가중치 값을 제외한 나머지 가중치 값들을 양자화하여, 상기 나머지 가중치 값들에 대응되는 양자화 값들을 포함하는 제1 양자화 데이터를 획득하며,
    상기 제1 양자화 데이터에 포함된 양자화 값들 중에서 기설정된 값에 가장 근접한 양자화 값을 판단하고, 상기 기설정된 값에 가장 근접한 양자화 값에 기초하여 상기 적어도 하나의 가중치 값에 대응되는 양자화 값을 포함하는 제2 양자화 데이터를 획득하고,
    상기 획득한 제1 양자화 데이터 및 제2 양자화 데이터를 상기 메모리에 저장하는 프로세서;를 포함하는 전자 장치.
  2. 제1항에 있어서,
    상기 프로세서는,
    상기 기설정된 값에 가장 근접한 양자화 값을, 상기 적어도 하나의 가중치 값에 대응되는 양자화 값으로 판단하는, 전자 장치.
  3. 제1항에 있어서,
    상기 프로세서는,
    상기 나머지 가중치 값들의 양자화에 기초하여, 복수의 스케일링 인자(scaling factor) 및, 상기 나머지 가중치 값들에 대응되는 비트 값들을 포함하는 상기 제1 양자화 데이터를 획득하고,
    상기 복수의 스케일링 인자를 이용한 연산에 기초하여 획득되는 복수의 연산 값 중에서 상기 기설정된 값에 가장 근접한 연산 값을 판단하며,
    상기 판단된 연산 값에 기초하여 상기 적어도 하나의 가중치 값에 대응되는 양자화 값을 포함하는 상기 제2 양자화 데이터를 획득하는, 전자 장치.
  4. 제3항에 있어서
    상기 프로세서는,
    상기 기설정된 값에 가장 근접한 연산 값을, 상기 적어도 하나의 가중치 값에 대응되는 양자화 값으로 판단하는, 전자 장치.
  5. 제3항에 있어서,
    상기 프로세서는,
    상기 복수의 스케일링 인자 각각에 +1 또는 -1을 곱한 값을 합산함으로써 상기 복수의 연산 값을 획득하고, 상기 복수의 연산 값 중에서 상기 기설정된 값에 가장 근접한 연산 값을 판단하는, 전자 장치.
  6. 제3항에 있어서,
    상기 프로세서는,
    상기 복수의 스케일링 인자를 이용한 복수의 연산 중에서, 상기 기설정된 값에 가장 근접한 연산 값을 출력하는 복수의 연산을 판단하고, 상기 복수의 연산 중에서 상기 적어도 하나의 가중치 값의 부호와 동일한 부호의 연산 값을 출력하는 연산을 판단하며, 상기 판단된 연산에 기초하여 상기 적어도 하나의 가중치 값에 대응되는 제2 양자화 데이터를 획득하는, 전자 장치.
  7. 제3항에 있어서,
    상기 프로세서는,
    상기 복수의 스케일링 인자를 이용한 복수의 연산 중에서, 상기 기설정된 값에 가장 근접한 연산 값을 출력하는 연산에 포함된 상기 복수의 스케일링 인자 각각의 부호를 판단하고, 상기 각각의 부호에 기초하여 상기 적어도 하나의 가중치 값에 대응되는 제2 양자화 데이터를 획득하는, 전자 장치.
  8. 제1항에 있어서,
    상기 프로세서는,
    프루닝 레이트(pruning rate) 설정을 위한 사용자 입력을 수신하고, 상기 가중치 값들의 크기에 기초하여, 상기 가중치 데이터에 포함된 가중치 값들 중에서 상기 프루닝 레이트에 속하는 상기 적어도 하나의 가중치 값을 판단하는, 전자 장치.
  9. 제1항에 있어서,
    상기 기설정된 값은 0인, 전자 장치.
  10. 전자 장치의 제어 방법에 있어서,
    가중치 데이터에 포함된 가중치 값들 중에서 임계 값 이하의 크기를 갖는 적어도 하나의 가중치 값을 판단하는 단계;
    상기 가중치 데이터에 포함된 가중치 값들 중에서, 상기 판단된 적어도 하나의 가중치 값을 제외한 나머지 가중치 값들을 양자화하여, 상기 나머지 가중치 값들에 대응되는 양자화 값들을 포함하는 제1 양자화 데이터를 획득하는 단계;
    상기 제1 양자화 데이터에 포함된 양자화 값들 중에서 기설정된 값에 가장 근접한 양자화 값을 판단하고, 상기 기설정된 값에 가장 근접한 양자화 값에 기초하여 상기 적어도 하나의 가중치 값에 대응되는 양자화 값을 포함하는 제2 양자화 데이터를 획득하는 단계; 및
    상기 획득한 제1 양자화 데이터 및 제2 양자화 데이터를 저장하는 단계;를 포함하는 전자 장치의 제어 방법.
  11. 제10항에 있어서,
    상기 제2 양자화 데이터를 획득하는 단계는,
    상기 기설정된 값에 가장 근접한 양자화 값을, 상기 적어도 하나의 가중치 값에 대응되는 양자화 값으로 판단하는 단계;를 포함하는 전자 장치의 제어 방법.
  12. 제10항에 있어서,
    상기 제1 양자화 데이터를 획득하는 단계는,
    상기 나머지 가중치 값들의 양자화에 기초하여, 복수의 스케일링 인자(scaling factor) 및, 상기 나머지 가중치 값들에 대응되는 비트 값들을 포함하는 상기 제1 양자화 데이터를 획득하는 단계;를 포함하고,
    상기 제2 양자화 데이터를 획득하는 단계는,
    상기 복수의 스케일링 인자를 이용한 연산에 기초하여 획득되는 복수의 연산 값 중에서 상기 기설정된 값에 가장 근접한 연산 값을 판단하고, 상기 판단된 연산 값에 기초하여 상기 적어도 하나의 가중치 값에 대응되는 양자화 값을 포함하는 상기 제2 양자화 데이터를 획득하는 단계;를 포함하는, 전자 장치의 제어 방법.
  13. 제12항에 있어서,
    상기 제2 양자화 데이터를 획득하는 단계는,
    상기 기설정된 값에 가장 근접한 연산 값을, 상기 적어도 하나의 가중치 값에 대응되는 양자화 값으로 판단하는 단계;를 포함하는, 전자 장치의 제어 방법.
  14. 제12항에 있어서,
    상기 연산 값을 판단하는 단계는,
    상기 복수의 스케일링 인자 각각에 +1 또는 -1을 곱한 값을 합산함으로써 상기 복수의 연산 값을 획득하고, 상기 복수의 연산 값 중에서 상기 기설정된 값에 가장 근접한 연산 값을 판단하는, 전자 장치의 제어 방법.
  15. 제12항에 있어서,
    상기 제2 양자화 데이터를 획득하는 단계는,
    상기 복수의 스케일링 인자를 이용한 복수의 연산 중에서, 상기 기설정된 값에 가장 근접한 연산 값을 출력하는 복수의 연산을 판단하고, 상기 복수의 연산 중에서 상기 적어도 하나의 가중치 값의 부호와 동일한 부호의 연산 값을 출력하는 연산을 판단하며, 상기 판단된 연산에 기초하여 상기 적어도 하나의 가중치 값에 대응되는 제2 양자화 데이터를 획득하는, 전자 장치의 제어 방법.
  16. 제12항에 있어서,
    상기 제2 양자화 데이터를 획득하는 단계는,
    상기 복수의 스케일링 인자를 이용한 복수의 연산 중에서, 상기 기설정된 값에 가장 근접한 연산 값을 출력하는 연산에 포함된 상기 복수의 스케일링 인자 각각의 부호를 판단하고, 상기 각각의 부호에 기초하여 상기 적어도 하나의 가중치 값에 대응되는 제2 양자화 데이터를 획득하는, 전자 장치의 제어 방법.
  17. 제10항에 있어서,
    상기 상기 적어도 하나의 가중치 값을 판단하는 단계는,
    프루닝 레이트(pruning rate) 설정을 위한 사용자 입력을 수신하고, 상기 가중치 값들의 크기에 기초하여, 상기 가중치 데이터에 포함된 가중치 값들 중에서 상기 프루닝 레이트에 속하는 상기 적어도 하나의 가중치 값을 판단하는, 전자 장치의 제어 방법.
  18. 제10항에 있어서,
    상기 기설정된 값은 0인, 전자 장치의 제어 방법.
KR1020200058669A 2020-05-15 2020-05-15 전자 장치 및 그 제어 방법 KR20210141252A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200058669A KR20210141252A (ko) 2020-05-15 2020-05-15 전자 장치 및 그 제어 방법
PCT/KR2021/001766 WO2021230470A1 (ko) 2020-05-15 2021-02-10 전자 장치 및 그 제어 방법
US17/520,326 US20220058487A1 (en) 2020-05-15 2021-11-05 Electronic apparatus and method for controlling thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200058669A KR20210141252A (ko) 2020-05-15 2020-05-15 전자 장치 및 그 제어 방법

Publications (1)

Publication Number Publication Date
KR20210141252A true KR20210141252A (ko) 2021-11-23

Family

ID=78524784

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200058669A KR20210141252A (ko) 2020-05-15 2020-05-15 전자 장치 및 그 제어 방법

Country Status (3)

Country Link
US (1) US20220058487A1 (ko)
KR (1) KR20210141252A (ko)
WO (1) WO2021230470A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11775806B2 (en) 2022-02-10 2023-10-03 Nota, Inc. Method of compressing neural network model and electronic apparatus for performing the same

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI833209B (zh) * 2022-04-27 2024-02-21 緯創資通股份有限公司 用於神經網路的優化方法、電腦系統及電腦可讀取媒體

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7045947B2 (ja) * 2018-07-05 2022-04-01 株式会社日立製作所 ニューラルネットワークの学習装置および学習方法
US20200082269A1 (en) * 2018-09-12 2020-03-12 Nvidia Corporation Memory efficient neural networks
US20200097818A1 (en) * 2018-09-26 2020-03-26 Xinlin LI Method and system for training binary quantized weight and activation function for deep neural networks
KR102153192B1 (ko) * 2018-10-31 2020-09-08 주식회사 노타 시뮬레이션-가이드된 반복적 프루닝을 사용하는 효율적인 네트워크 압축
US11588499B2 (en) * 2018-11-05 2023-02-21 Samsung Electronics Co., Ltd. Lossless compression of neural network weights

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11775806B2 (en) 2022-02-10 2023-10-03 Nota, Inc. Method of compressing neural network model and electronic apparatus for performing the same

Also Published As

Publication number Publication date
US20220058487A1 (en) 2022-02-24
WO2021230470A1 (ko) 2021-11-18

Similar Documents

Publication Publication Date Title
US11593625B2 (en) Method and apparatus with neural network parameter quantization
US11823028B2 (en) Method and apparatus for quantizing artificial neural network
US11475298B2 (en) Using quantization in training an artificial intelligence model in a semiconductor solution
KR102589303B1 (ko) 고정 소수점 타입의 뉴럴 네트워크를 생성하는 방법 및 장치
CN107836000B (zh) 用于语言建模和预测的改进的人工神经网络方法、电子设备
KR20210029785A (ko) 활성화 희소화를 포함하는 신경 네트워크 가속 및 임베딩 압축 시스템 및 방법
KR20200086581A (ko) 뉴럴 네트워크 양자화를 위한 방법 및 장치
US11468313B1 (en) Systems and methods for quantizing neural networks via periodic regularization functions
CN112136142A (zh) 计算机系统预测机器学习模型
US20210279525A1 (en) Hierarchy-preserving learning for multi-label classification
US20220058487A1 (en) Electronic apparatus and method for controlling thereof
US20200302283A1 (en) Mixed precision training of an artificial neural network
US11775589B2 (en) Systems and methods for weighted quantization
KR20200076461A (ko) 중첩된 비트 표현 기반의 뉴럴 네트워크 처리 방법 및 장치
KR20210076691A (ko) 프레임워크 간 뉴럴 네트워크의 학습을 검증하는 방법 및 장치
US20230386448A1 (en) Method of training speech recognition model, electronic device and storage medium
CN108847251B (zh) 一种语音去重方法、装置、服务器及存储介质
CN113795880A (zh) 电子设备及其控制方法
EP4207192A1 (en) Electronic device and method for controlling same
CN111507195B (zh) 虹膜分割神经网络模型的训练方法、虹膜分割方法及装置
KR20230097540A (ko) 물체 경계 예측 불확실성 및 강조 신경망을 이용한 물체 검출 장치 및 방법
US20210027168A1 (en) Electronic apparatus and controlling method thereof
US11861452B1 (en) Quantized softmax layer for neural networks
KR20210111014A (ko) 전자 장치 및 그 제어 방법
KR20220045357A (ko) 전자 장치 및 이의 제어 방법