KR20240119689A - 신경망 모델을 양자화하기 위한 전자 장치 및 그 제어 방법 - Google Patents

신경망 모델을 양자화하기 위한 전자 장치 및 그 제어 방법 Download PDF

Info

Publication number
KR20240119689A
KR20240119689A KR1020230012016A KR20230012016A KR20240119689A KR 20240119689 A KR20240119689 A KR 20240119689A KR 1020230012016 A KR1020230012016 A KR 1020230012016A KR 20230012016 A KR20230012016 A KR 20230012016A KR 20240119689 A KR20240119689 A KR 20240119689A
Authority
KR
South Korea
Prior art keywords
layer
feature map
channel
neural network
network model
Prior art date
Application number
KR1020230012016A
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 KR1020230012016A priority Critical patent/KR20240119689A/ko
Priority to PCT/KR2023/016866 priority patent/WO2024162560A1/ko
Priority to US18/519,860 priority patent/US20240256843A1/en
Publication of KR20240119689A publication Critical patent/KR20240119689A/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
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Image Analysis (AREA)

Abstract

전자 장치가 개시된다. 본 전자 장치는 메모리, 메모리에 연결되어 전자 장치를 제어하는 적어도 하나의 프로세서를 포함하며, 프로세서는 적어도 하나의 양자화가 가능한 레이어를 포함하는 제1 신경망 모델을 획득하고, 제1 신경망 모델에 대한 입력으로 사용되는 테스트 데이터를 획득하고, 테스트 데이터를 제1 신경망 모델에 입력하여 제1 신경망 모델에 포함된 적어도 하나의 레이어 각각으로부터 피쳐 맵(feature map) 데이터를 획득하고, 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터에서 채널 별 데이터를 균등화하기 위한 스케일링(scaling) 또는 시프트(shift) 중 적어도 하나에 대한 정보를 획득하고, 획득된 정보에 기초하여 적어도 하나의 레이어 각각을 업데이트하여 피쳐 맵 데이터의 채널 별 데이터가 균등화된 제2 신경망 모델을 획득하고, 테스트 데이터에 기초하여 제2 신경망 모델을 양자화하여 제1 신경망 모델에 대응되는 양자화된 제3 신경망 모델을 획득할 수 있다.

Description

신경망 모델을 양자화하기 위한 전자 장치 및 그 제어 방법 { ELECTRONIC APPARATUS FOR QUANTIZING NEURAL NETWORK MODEL AND CONTROL METHOD THEREOF }
본 개시는 전자 장치 및 그 제어 방법에 대한 것으로, 더욱 상세하게는 신경망 모델을 양자화하는 전자 장치 및 그 제어 방법에 대한 것이다.
전자 기술의 발달에 힘입어 다양한 종류의 전자 장치가 개발되고 있다. 특히, 최근에는 신경망 모델을 통해 다양한 연산이 가능한 전자 장치가 개발되고 있다.
다만, 신경망 모델의 성능을 높이기 위해서는 용량 증가가 불가피한 상황이다. 특히, 신경망 모델이 온디바이스에 구현될 필요가 있을 때, 이러한 문제가 더욱 부각된다.
그에 따라, 신경망 모델을 압축하여 이용하는 다양한 방법들이 개발될 필요가 있다.
이상과 같은 목적을 달성하기 위한 본 개시의 일 실시 예에 따르면, 전자 장치는 메모리, 상기 메모리에 연결되어 상기 전자 장치를 제어하는 적어도 하나의 프로세서를 포함하며, 상기 프로세서는 적어도 하나의 양자화가 가능한 레이어를 포함하는 제1 신경망 모델을 획득하고, 상기 제1 신경망 모델에 대한 입력으로 사용되는 테스트 데이터를 획득하고, 상기 테스트 데이터를 상기 제1 신경망 모델에 입력하여 상기 제1 신경망 모델에 포함된 적어도 하나의 레이어 각각으로부터 피쳐 맵(feature map) 데이터를 획득하고, 상기 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터에서 채널 별 데이터를 균등화하기 위한 스케일링(scaling) 또는 시프트(shift) 중 적어도 하나에 대한 정보를 획득하고, 상기 획득된 정보에 기초하여 상기 적어도 하나의 레이어 각각을 업데이트하여 피쳐 맵 데이터의 채널 별 데이터가 균등화된 제2 신경망 모델을 획득하고, 상기 테스트 데이터에 기초하여 상기 제2 신경망 모델을 양자화하여 상기 제1 신경망 모델에 대응되는 양자화된 제3 신경망 모델을 획득할 수 있다.
또한, 상기 프로세서는 상기 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터의 이전 레이어의 타입 및 이후 레이어의 타입에 기초하여 상기 스케일링 또는 상기 시프트 중 적어도 하나에 대한 정보를 획득할 수 있다.
그리고, 상기 프로세서는 상기 적어도 하나의 레이어 중 제1 레이어의 피쳐 맵 데이터를 스케일링하는 경우, 채널 별 스케일링 데이터를 상기 제1 레이어의 웨이트(weight) 및 바이어스(bias)에 채널 별로 곱셈하여 상기 제1 레이어를 업데이트하고, 상기 제1 레이어 직후의 제2 레이어를 상기 채널 별 스케일링 데이터로 채널 별로 나누어 상기 제2 레이어를 업데이트할 수 있다.
또한, 상기 프로세서는 상기 적어도 하나의 레이어 중 제3 레이어의 피쳐 맵 데이터를 시프트하는 경우, 채널 별 시프트 데이터를 상기 제3 레이어의 바이어스에 채널 별로 더하여 상기 제3 레이어를 업데이트하고, 상기 제3 레이어 직후의 제4 레이어의 웨이트에 채널 별 시프트 데이터를 채널 별로 곱셈하고, 상기 곱셈 결과를 채널 별로 더하고, 상기 제4 레이어의 바이어스에 상기 채널 별 덧셈 결과를 빼서 상기 제4 레이어를 업데이트할 수 있다.
그리고, 상기 프로세서는 상기 적어도 하나의 레이어 중 제5 레이어의 피쳐 맵 데이터를 스케일링 및 시프트하는 경우, 상기 제5 레이어의 피쳐 맵 데이터에 대해 스케일링을 적용하고, 상기 스케일링이 적용된 피쳐 맵 데이터에 대해 시프트를 적용할 수 있다.
또한, 상기 프로세서는 상기 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터 중 최대 레인지(range)를 갖는 채널에 기초하여 상기 스케일링 또는 상기 시프트 중 적어도 하나에 대한 정보를 획득할 수 있다.
그리고, 상기 프로세서는 상기 적어도 하나의 레이어 각각에 대하여, 상기 최대 레인지를 갖는 채널의 레인지를 시프트하고, 상기 시프트된 레인지에 기초하여 나머지 채널의 레인지를 스케일링 및 시프트할 수 있다.
또한, 상기 프로세서는 상기 적어도 하나의 레이어 중 제1 레이어의 피쳐 맵 데이터를 스케일링하는 경우, 상기 제1 레이어의 피쳐 맵 데이터 중 상기 최대 레인지를 갖는 채널을 제외한 나머지 채널의 레인지가 상기 제1 레이어의 피쳐 맵 데이터 중 최대 레인지를 갖는 채널의 레인지보다 기설정된 값 이상 작도록 상기 스케일링에 대한 정보를 획득할 수 있다.
그리고, 상기 프로세서는 상기 제2 신경망 모델에 포함된 적어도 하나의 레이어는 채널 별로 양자화하고, 상기 제2 신경망 모델에 포함된 적어도 하나의 레이어 각각의 피쳐 맵 데이터는 피쳐 맵 데이터 별로 양자화하여 상기 제3 신경망 모델을 획득할 수 있다.
또한, 상기 프로세서는 affine transformation을 통해 상기 제2 신경망 모델을 양자화할 수 있다.
한편, 본 개시의 일 실시 예에 따르면, 전자 장치의 제어 방법은 적어도 하나의 양자화가 가능한 레이어를 포함하는 제1 신경망 모델을 획득하는 단계, 상기 제1 신경망 모델에 대한 입력으로 사용되는 테스트 데이터를 획득하는 단계, 상기 테스트 데이터를 상기 제1 신경망 모델에 입력하여 상기 제1 신경망 모델에 포함된 적어도 하나의 레이어 각각으로부터 피쳐 맵(feature map) 데이터를 획득하는 단계, 상기 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터에서 채널 별 데이터를 균등화하기 위한 스케일링(scaling) 또는 시프트(shift) 중 적어도 하나에 대한 정보를 획득하는 단계, 상기 획득된 정보에 기초하여 상기 적어도 하나의 레이어 각각을 업데이트하여 피쳐 맵 데이터의 채널 별 데이터가 균등화된 제2 신경망 모델을 획득하는 단계 및 상기 테스트 데이터에 기초하여 상기 제2 신경망 모델을 양자화하여 상기 제1 신경망 모델에 대응되는 양자화된 제3 신경망 모델을 획득하는 단계를 포함한다.
또한, 상기 스케일링 또는 상기 시프트 중 적어도 하나에 대한 정보를 획득하는 단계는 상기 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터의 이전 레이어의 타입 및 이후 레이어의 타입에 기초하여 상기 스케일링 또는 상기 시프트 중 적어도 하나에 대한 정보를 획득할 수 있다.
그리고, 상기 제2 신경망 모델을 획득하는 단계는 상기 적어도 하나의 레이어 중 제1 레이어의 피쳐 맵 데이터를 스케일링하는 경우, 채널 별 스케일링 데이터를 상기 제1 레이어의 웨이트(weight) 및 바이어스(bias)에 채널 별로 곱셈하여 상기 제1 레이어를 업데이트하고, 상기 제1 레이어 직후의 제2 레이어를 상기 채널 별 스케일링 데이터로 채널 별로 나누어 상기 제2 레이어를 업데이트할 수 있다.
또한, 상기 제2 신경망 모델을 획득하는 단계는 상기 적어도 하나의 레이어 중 제3 레이어의 피쳐 맵 데이터를 시프트하는 경우, 채널 별 시프트 데이터를 상기 제3 레이어의 바이어스에 채널 별로 더하여 상기 제3 레이어를 업데이트하고, 상기 제3 레이어 직후의 제4 레이어의 웨이트에 채널 별 시프트 데이터를 채널 별로 곱셈하고, 상기 곱셈 결과를 채널 별로 더하고, 상기 제4 레이어의 바이어스에 상기 채널 별 덧셈 결과를 빼서 상기 제4 레이어를 업데이트할 수 있다.
그리고, 상기 제2 신경망 모델을 획득하는 단계는 상기 적어도 하나의 레이어 중 제5 레이어의 피쳐 맵 데이터를 스케일링 및 시프트하는 경우, 상기 제5 레이어의 피쳐 맵 데이터에 대해 스케일링을 적용하고, 상기 스케일링이 적용된 피쳐 맵 데이터에 대해 시프트를 적용할 수 있다.
또한, 상기 스케일링 또는 상기 시프트 중 적어도 하나에 대한 정보를 획득하는 단계는 상기 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터 중 최대 레인지(range)를 갖는 채널에 기초하여 상기 스케일링 또는 상기 시프트 중 적어도 하나에 대한 정보를 획득할 수 있다.
그리고, 상기 제2 신경망 모델을 획득하는 단계는 상기 적어도 하나의 레이어 각각에 대하여, 상기 최대 레인지를 갖는 채널의 레인지를 시프트하고, 상기 시프트된 레인지에 기초하여 나머지 채널의 레인지를 스케일링 및 시프트할 수 있다.
또한, 상기 스케일링 또는 상기 시프트 중 적어도 하나에 대한 정보를 획득하는 단계는 상기 적어도 하나의 레이어 중 제1 레이어의 피쳐 맵 데이터를 스케일링하는 경우, 상기 제1 레이어의 피쳐 맵 데이터 중 상기 최대 레인지를 갖는 채널을 제외한 나머지 채널의 레인지가 상기 제1 레이어의 피쳐 맵 데이터 중 최대 레인지를 갖는 채널의 레인지보다 기설정된 값 이상 작도록 상기 스케일링에 대한 정보를 획득할 수 있다.
그리고, 상기 제3 신경망 모델을 획득하는 단계는 상기 제2 신경망 모델에 포함된 적어도 하나의 레이어는 채널 별로 양자화하고, 상기 제2 신경망 모델에 포함된 적어도 하나의 레이어 각각의 피쳐 맵 데이터는 피쳐 맵 데이터 별로 양자화하여 상기 제3 신경망 모델을 획득할 수 있다.
또한, 상기 제3 신경망 모델을 획득하는 단계는 affine transformation을 통해 상기 제2 신경망 모델을 양자화할 수 있다.
도 1a 내지 도 1e는 본 개시의 이해를 돕기 위한 양자화를 설명하기 위한 도면들이다.
도 2는 본 개시의 일 실시 예에 따른 전자 장치의 구성을 설명하기 위한 블럭도이다.
도 3은 본 개시의 일 실시 예에 따른 프로세서의 동작을 전반적으로 설명하기 위한 흐름도이다.
도 4는 본 개시의 일 실시 예에 따른 피쳐 맵 데이터를 균등화하는 방법을 설명하기 위한 흐름도이다.
도 5는 본 개시의 일 실시 예에 따른 적어도 하나의 레이어 및 피쳐 맵 데이터를 양자화하는 방법을 설명하기 위한 흐름도이다.
도 6은 본 개시의 일 실시 예에 따른 전자 장치의 세부 구성을 나타내는 블럭도이다.
도 7은 본 개시의 일 실시 예에 따른 적용 예를 구체적으로 설명하기 위한 도면이다.
도 8 내지 도 11은 본 개시의 일 실시 예에 따른 피쳐 맵 데이터를 균등화하는 방법을 설명하기 위한 도면들이다.
도 12 및 도 13은 본 개시의 일 실시 예에 따른 기존 레이어에 스케일링하는 구성을 결합하는 방법을 설명하기 위한 도면들이다.
도 14 및 도 15는 본 개시의 일 실시 예에 따른 기존 레이어에 시프트하는 구성을 결합하는 방법을 설명하기 위한 도면들이다.
도 16은 본 개시의 일 실시 예에 따른 스케일링 또는 시프트 중 적어도 하나를 수행하는 기준을 설명하기 위한 도면이다.
도 17은 본 개시의 일 실시 예에 따른 균등화 동작을 전반적으로 설명하기 위한 블록도이다.
도 18은 본 개시의 일 실시 예에 따른 균등화 동작을 좀더 구체적으로 설명하기 위한 블록도이다.
도 19는 본 개시의 일 실시 예에 따른 균등화 패턴을 식별하는 방법을 설명하기 위한 블록도이다.
도 20은 본 개시의 일 실시 예에 따른 피쳐 맵 데이터의 획득 방법을 설명하기 위한 블록도이다.
도 21 및 도 22는 본 개시의 일 실시 예에 따른 신경망 모델의 업데이트 동작을 설명하기 위한 블록도들이다.
도 23 및 도 24는 본 개시의 일 실시 예에 따른 성능 개선을 설명하기 위한 도면들이다.
도 25는 본 개시의 일 실시 예에 따른 전자 장치의 제어 방법을 설명하기 위한 흐름도이다.
본 개시의 목적은 데이터 용량을 줄이면서도 양자화에 따른 오차를 줄인 신경망 모델을 획득하는 전자 장치 및 그 제어 방법을 제공함에 있다.
이하에서는 첨부 도면을 참조하여 본 개시를 상세히 설명한다.
본 개시의 실시 예에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 개시의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 명세서에서, "가진다," "가질 수 있다," "포함한다," 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
A 또는/및 B 중 적어도 하나라는 표현은 "A" 또는 "B" 또는 "A 및 B" 중 어느 하나를 나타내는 것으로 이해되어야 한다.
본 명세서에서 사용된 "제1," "제2," "첫째," 또는 "둘째,"등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "구성되다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
본 명세서에서, 사용자라는 용어는 전자 장치를 사용하는 사람 또는 전자 장치를 사용하는 장치(예: 인공 지능 전자 장치)를 지칭할 수 있다.
이하 첨부된 도면들을 참조하여 본 개시의 다양한 실시 예를 보다 상세하게 설명한다.
도 1a 내지 도 1e는 본 개시의 이해를 돕기 위한 양자화를 설명하기 위한 도면들이다.
최근 신경망 모델의 성능 저하를 최소화하면서 압축률을 높이기 위해 양자화(quantization)가 이용되고 있다. 가중치 양자화(weight quantization) 방법은 양자화를 하는 시점을 기준으로 학습 후 양자화(post-training quantization) 및 학습 중 양자화(quantization-aware training)로 나눌 수 있고, 양자화 방식을 기준으로 선형 양자화(linear quantization) 및 비선형 양자화(non-linear quantization)로 나눌 수 있다.
학습 후 양자화는 도 1a에 도시된 바와 같이, 이미 학습이 완료된 floating point 형태의 가중치를 포함하는 신경망 모델을 재학습 없이 양자화하여 속도가 빠르고 학습 데이터가 요구되지 않는다.
학습 후 양자화 방식의 하나로 affine 양자화는 affine transformation을 통해 실수 값을 양자화할 수 있다. 예를 들어, 도 1b에 도시된 바와 같이, xf의 최소값은 0으로, xf의 최대값은 255로 변환되며, 하기와 같이 나타낼 수 있다.
xf = scale * (xq - zero point)
scale = (max(xf) - min(xf))/(2^n-1)
여기서, xf는 원래 실수 값이고, xq는 양자화된 값이고, scale은 양자화를 위한 스케일링 배율이고, zero point는 xf가 0일 때 xq의 값이고, n은 비트의 수일 수 있다.
affine 양자화는 정확도 저하가 적으면서도 효율적인 하드웨어 구현이 가능한 방법이나, 실수값의 레인지에 따라 scale 및 zero point(zp)가 결정되므로, 레인지가 달라지면 양자화 오차가 증가할 수 있다.
양자화 방법은 양자화를 수행하는 단위를 기준으로 layer-wise quantization(LWQ) 및 channel-wise quantization(CWQ)로 구분될 수 있다. LWQ는 한 레이어의 가중치를 모두 같은 scale 및 zp로 양자화하는 방법이고, CWQ는 한 레이어의 가중치를 채널 수 만큼 상이한 scale 및 zp로 양자화하는 방법이다. 예를 들어, 도 1c에 도시된 바와 같이, input feature map이 convolution layer에 입력되면 output feature map이 출력되며, 여기서 convolution layer를 하나의 scale 및 zp로 양자화하면 LWQ 방법이고, convolution layer를 채널 별 scale 및 zp로 양자화하면 CWQ 방법일 수 있다.
일반적으로, 도 1d에 도시된 바와 같이, 각 채널 별 값의 분포가 상이한 경우가 많아 CWQ 방법이 많이 이용되고 있다.
다만, 레이어가 아닌 피쳐 맵(feature map) 데이터는 중간 연산 결과에 불과하여 CWQ 방법을 이용하기 어려운 문제가 있다.
그럼에도 피쳐 맵 데이터 역시 도 1e에 도시된 바와 같이, 각 채널 별 값의 분포가 상이하여 하나의 scale 및 zp로 양자화하는 경우, 오차가 증가하는 문제가 있다.
도 2는 본 개시의 일 실시 예에 따른 전자 장치(100)의 구성을 설명하기 위한 블럭도이다.
전자 장치(100)는 신경망 모델을 양자화하는 장치일 수 있다. 예를 들어, 전자 장치(100)는 TV, 데스크탑 PC, 노트북, 비디오 월(video wall), LFD(large format display), Digital Signage(디지털 간판), DID(Digital Information Display), 프로젝터 디스플레이, 스마트폰, 태블릿 PC 등으로 구현되어, 신경망 모델을 양자화할 수 있다. 여기서, 양자화(quantization)는 floating point 형태의 가중치(weight)를 정수(integer) 형태로 변환하는 기술로서, 이를 통해 신경망 모델의 결과에 대한 오차가 발생할 수 있으나, 신경망 모델에 대한 데이터 용량을 줄이거나 연산 속도를 증가시킬 수 있다. 다만, 이에 한정되는 것은 아니며, 전자 장치(100)는 신경망 모델을 양자화할 수 있는 장치라면 어떠한 장치라도 무방하다.
도 2에 따르면, 전자 장치(100)는 메모리(110) 및 프로세서(120)를 포함한다. 다만, 이에 한정되는 것은 아니며, 전자 장치(100)는 일부 구성이 제외된 형태로 구현될 수도 있다.
메모리(110)는 프로세서(120) 등이 접근할 수 있도록 데이터 등의 정보를 전기 또는 자기 형태로 저장하는 하드웨어를 지칭할 수 있다. 이를 위해, 메모리(110)는 비휘발성 메모리, 휘발성 메모리, 플래시 메모리(Flash Memory), 하드디스크 드라이브(HDD) 또는 솔리드 스테이트 드라이브(SSD), RAM, ROM 등 중에서 적어도 하나의 하드웨어로 구현될 수 있다.
메모리(110)에는 전자 장치(100) 또는 프로세서(120)의 동작에 필요한 적어도 하나의 인스트럭션(instruction)이 저장될 수 있다. 여기서, 인스트럭션은 전자 장치(100) 또는 프로세서(120)의 동작을 지시하는 부호 단위로서, 컴퓨터가 이해할 수 있는 언어인 기계어로 작성된 것일 수 있다. 또는, 메모리(110)에는 전자 장치(100) 또는 프로세서(120)의 특정 작업을 수행하는 복수의 인스트럭션이 인스트럭션 집합체(instruction set)로서 저장될 수도 있다.
특히, 메모리(110)는 전자 장치(100)의 양자화 동작을 제어하기 위한 모듈이 각종 동작을 수행하기 위해 필요한 데이터를 저장할 수 있다. 예를 들어, 전자 장치(100)가 신경망 모델을 양자화하는 동작을 제어하기 위한 구성은 도 2의 신경망 모델 획득 모듈(120-1), 테스트 데이터 획득 모듈(120-2), 피쳐 맵 데이터 획득 모듈(120-3), 균등화 모듈(120-4), 신경망 모델 업데이트 모듈(120-5), 양자화 모듈(120-6)을 포함할 수 있고, 각 모듈은 메모리(110)에 소프트웨어적으로 구현된 상태일 수 있다. 다만, 이에 한정되는 것은 아니며, 각 모듈은 프로세서(120)의 일 구성으로서 하드웨어적으로 구현될 수도 있다.
메모리(110)에는 문자, 수, 영상 등을 나타낼 수 있는 비트 또는 바이트 단위의 정보인 데이터가 저장될 수 있다. 예를 들어, 메모리(110)에는 프로세서(120)의 동작 과정에서 획득되는 데이터가 저장될 수 있다. 또한, 메모리(110)에는 적어도 하나의 신경망 모델에 대한 정보와 테스트 데이터에 대한 정보가 저장될 수도 있다.
메모리(110)는 프로세서(120)에 의해 액세스되며, 프로세서(120)에 의해 인스트럭션, 인스트럭션 집합체 또는 데이터에 대한 독취/기록/수정/삭제/갱신 등이 수행될 수 있다.
프로세서(120)는 전자 장치(100)의 동작을 전반적으로 제어한다. 구체적으로, 프로세서(120)는 전자 장치(100)의 각 구성과 연결되어 전자 장치(100)의 동작을 전반적으로 제어할 수 있다. 예를 들어, 프로세서(120)는 메모리(110), 디스플레이(미도시) 등과 같은 구성과 연결되어 전자 장치(100)의 동작을 제어할 수 있다.
프로세서(120)는 적어도 하나의 프로세서로 구현될 수 있다. 이때, 적어도 하나의 프로세서는 CPU(Central Processing Unit), GPU(Graphics Processing Unit), APU(Accelerated Processing Unit), MIC(Many Integrated Core), DSP(Digital Signal Processor), NPU(Neural Processing Unit), 하드웨어 가속기 또는 머신 러닝 가속기 중 하나 이상을 포함할 수 있다. 적어도 하나의 프로세서는 전자 장치(100)의 다른 구성 요소 중 하나 또는 임의의 조합을 제어할 수 있으며, 통신에 관한 동작 또는 데이터 처리를 수행할 수 있다. 적어도 하나의 프로세서는 메모리(110)에 저장된 하나 이상의 프로그램 또는 명령어(instruction)을 실행할 수 있다. 예를 들어, 적어도 하나의 프로세서는 메모리(110)에 저장된 하나 이상의 명령어를 실행함으로써, 본 개시의 일 실시 예에 따른 방법을 수행할 수 있다.
본 개시의 일 실시 예에 따른 방법이 복수의 동작을 포함하는 경우, 복수의 동작은 하나의 프로세서에 의해 수행될 수도 있고, 복수의 프로세서에 의해 수행될 수도 있다. 예를 들어, 일 실시 예에 따른 방법에 의해 제1 동작, 제2 동작, 제3 동작이 수행될 때, 제1 동작, 제2 동작 및 제3 동작 모두 제1 프로세서에 의해 수행될 수도 있고, 제1 동작 및 제2 동작은 제1 프로세서(예를 들어, 범용 프로세서)에 의해 수행되고 제3 동작은 제2 프로세서(예를 들어, 인공지능 전용 프로세서)에 의해 수행될 수도 있다. 예를 들어, 본 개시의 일 실시 예에 따른 신경망 모델을 양자화하는 과정은 범용 프로세서에 의해 수행될 수 있으며, 양자화된 신경망 모델을 학습하거나 추론하는 과정은 인공지능 전용 프로세서에 의해 수행될 수 있다.
적어도 하나의 프로세서는 하나의 코어를 포함하는 단일 코어 프로세서(single core processor)로 구현될 수도 있고, 복수의 코어(예를 들어, 동종 멀티 코어 또는 이종 멀티 코어)를 포함하는 하나 이상의 멀티 코어 프로세서(multicore processor)로 구현될 수도 있다. 적어도 하나의 프로세서가 멀티 코어 프로세서로 구현되는 경우, 멀티 코어 프로세서에 포함된 복수의 코어 각각은 캐시 메모리, 온 칩(On-chip) 메모리와 같은 프로세서 내부 메모리를 포함할 수 있으며, 복수의 코어에 의해 공유되는 공통 캐시가 멀티 코어 프로세서에 포함될 수 있다. 또한, 멀티 코어 프로세서에 포함된 복수의 코어 각각(또는 복수의 코어 중 일부)은 독립적으로 본 개시의 일 실시 예에 따른 방법을 구현하기 위한 프로그램 명령을 판독하여 수행할 수도 있고, 복수의 코어 전체(또는 일부)가 연계되어 본 개시의 일 실시 예에 따른 방법을 구현하기 위한 프로그램 명령을 판독하여 수행할 수도 있다.
본 개시의 일 실시 예에 따른 방법이 복수의 동작을 포함하는 경우, 복수의 동작은 멀티 코어 프로세서에 포함된 복수의 코어 중 하나의 코어에 의해 수행될 수도 있고, 복수의 코어에 의해 수행될 수도 있다. 예를 들어, 일 실시 예에 따른 방법에 의해 제1 동작, 제2 동작 및 제3 동작이 수행될 때, 제1 동작, 제2 동작 및 제3 동작 모두 멀티 코어 프로세서에 포함된 제1 코어에 의해 수행될 수도 있고, 제1 동작 및 제2 동작은 멀티 코어 프로세서에 포함된 제1 코어에 의해 수행되고 제3 동작은 멀티 코어 프로세서에 포함된 제2 코어에 의해 수행될 수도 있다.
본 개시의 실시 예들에서, 적어도 하나의 프로세서는 하나 이상의 프로세서 및 기타 전자 부품들이 집적된 시스템 온 칩(SoC), 단일 코어 프로세서, 멀티 코어 프로세서, 또는 단일 코어 프로세서 또는 멀티 코어 프로세서에 포함된 코어를 의미할 수 있으며, 여기서 코어는 CPU, GPU, APU, MIC, DSP, NPU, 하드웨어 가속기 또는 기계 학습 가속기 등으로 구현될 수 있으나, 본 개시의 실시 예들이 이에 한정되는 것은 아니다. 다만, 이하에서는 설명의 편의를 위해, 프로세서(120)라는 표현으로 전자 장치(100)의 동작을 설명한다.
도 2에서 프로세서(120) 내부에 복수의 모듈이 위치하는 것은 복수의 모듈이 프로세서(120)에 의해 로딩(또는 실행)되어 프로세서(120)에서 동작되는 상태를 나타내기 위한 것이며, 복수의 모듈은 메모리(110)에 기저장된 상태일 수 있다.
프로세서(120)는 메모리(110)에 저장된 모듈 또는 인스트럭션을 실행함으로써 전자 장치(100)의 전반적인 동작을 제어할 수 있다. 구체적으로, 프로세서(120)는 모듈 또는 인스트럭션을 읽고 해석하며 데이터 처리를 위한 시퀀스를 결정할 수 있으며, 그에 따라 메모리(110) 등 다른 구성의 동작을 제어하는 제어 신호를 전송함으로써 다른 구성의 동작을 제어할 수 있다.
프로세서(120)는 신경망 모델 획득 모듈(120-1)을 실행함으로써 제1 신경망 모델을 획득할 수 있다. 예를 들어, 프로세서(120)는 외부 서버로부터 제1 신경망 모델을 수신하고, 수신된 제1 신경망 모델을 메모리(110)에 저장할 수 있다. 또는, 제1 신경망 모델은 메모리(110)에 저장된 상태이고, 프로세서(120)는 메모리(110)로부터 제1 신경망 모델을 독출할 수도 있다. 여기서, 제1 신경망 모델은 복수의 레이어를 포함할 수 있다. 이때, 복수의 레이어에는 양자화가 가능한 복수의 파라미터(예로, 가중치(weight) 또는 바이어스(bais) 등)가 포함될 수 있다.
프로세서(120)는 테스트 데이터 획득 모듈(120-2)을 실행함으로써 테스트 데이터를 획득할 수 있다. 예를 들어, 프로세서(120)는 외부 서버로부터 테스트 데이터를 수신하고, 수신된 테스트 데이터를 메모리(110)에 저장할 수 있다. 또는, 테스트 데이터는 메모리(110)에 저장된 상태이고, 프로세서(120)는 메모리(110)로부터 테스트 데이터를 독출할 수도 있다. 여기서, 테스트 데이터는 제1 신경망 모델의 입력으로 사용되는 데이터일 수 있다. 가령, 테스트 데이터는 제1 신경망 모델에 입력되어 제1 신경망 모델에 포함된 적어도 하나의 레이어 각각으로부터 출력되는 피쳐 맵(feature map) 데이터를 획득하기 위한 데이터일 수 있다.
프로세서(120)는 피쳐 맵 데이터 획득 모듈(120-3)을 실행함으로써 테스트 데이터를 제1 신경망 모델에 입력하여 제1 신경망 모델에 포함된 적어도 하나의 레이어 각각으로부터 피쳐 맵 데이터를 획득할 수 있다. 예를 들어, 프로세서(120)는 테스트 데이터를 제1 신경망 모델에 입력하여 제1 신경망 모델에 포함된 n개의 레이어 각각으로부터 제1 피쳐 맵 데이터~제n 피쳐 맵 데이터를 획득할 수 있다. 설명의 편의를 위해, 테스트 데이터가 복수의 테스트 이미지라고 가정하면, 프로세서(120)는 복수의 테스트 이미지 중 제1 테스트 이미지를 제1 신경망 모델에 입력하여 제1 피쳐 맵 데이터~제n 피쳐 맵 데이터를 획득하고, 복수의 테스트 이미지 중 제2 테스트 이미지를 제1 신경망 모델에 입력하여 제1 피쳐 맵 데이터~제n 피쳐 맵 데이터를 획득할 수 있다. 이러한 방식으로 프로세서(120)는 복수의 테스트 이미지 전체에 대한 제1 피쳐 맵 데이터~제n 피쳐 맵 데이터를 획득할 수 있다. 여기서, 피쳐 맵 데이터는 신경망 모델에 포함된 각 레이어로부터 출력되는 중간 연산 결과를 의미하며, 각 레이어에 포함된 채널 별로 구분되는 데이터 그룹을 포함할 수 있다. 예를 들어, 입력 데이터가 신경망 모델의 첫 번째 레이어와 연산되면 첫 번째 피쳐 맵 데이터가 출력되고, 첫 번째 피쳐 맵 데이터가 신경망 모델의 두 번째 레이어와 연산되면 두 번째 피쳐 맵 데이터가 출력될 수 있다. 여기서, 신경망 모델의 첫 번째 레이어가 m개의 채널을 포함하는 경우, 첫 번째 피쳐 맵 데이터는 m개의 데이터 그룹으로 구분될 수 있고, 신경망 모델의 두 번째 레이어가 n개의 채널을 포함하는 경우, 두 번째 피쳐 맵 데이터는 n개의 데이터 그룹으로 구분될 수 있다.
이하에서는 설명의 편의를 위하여, 제1 신경망 모델에 포함된 n개의 레이어 중 제1 레이어로부터 출력되는 제1 피쳐 맵 데이터를 기준으로 설명한다. 다만, n개의 레이어 중 나머지 레이어로부터 출력되는 피쳐 맵 데이터에 대하여도 제1 피쳐 맵 데이터에 대한 동작과 동일한 동작이 수행될 수 있다.
프로세서(120)는 균등화 모듈(120-4)을 실행함으로써 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터에서 채널 별 데이터를 균등화하기 위한 스케일링(scaling) 또는 시프트(shift) 중 적어도 하나에 대한 정보를 획득할 수 있다. 여기서, 균등화는 피쳐 맵 데이터의 채널 별 데이터의 레인지를 동일하게 조정하는 동작 또는 오차를 최소화하는 동작을 의미한다.
예를 들어, 프로세서(120)는 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터 중 최대 레인지(range)를 갖는 채널에 기초하여 스케일링 또는 시프트 중 적어도 하나에 대한 정보를 획득할 수 있다. 상술한 예에서, 프로세서(120)는 제1 피쳐 맵 데이터를 복수의 테스트 이미지의 개수만큼 획득할 수 있다. 여기서, 제1 피쳐 맵 데이터는 채널 별로 구분된 데이터일 수 있고, 프로세서(120)는 복수의 테스트 이미지의 개수만큼 획득된 제1 피쳐 맵 데이터 중 최대 레인지를 갖는 채널을 식별할 수 있다. 레인지는 채널에 포함된 데이터 중 최대값과 최소값의 차이이고, 최대 레인지는 복수의 테스트 이미지의 개수만큼 획득된 제1 피쳐 맵 데이터의 채널 중 레인지가 가장 큰 채널의 레인지일 수 있다. 여기서, 스케일링은 채널 별 데이터에 스케일링 배율을 곱셈하는 연산을 의미한다. 가령, 채널 데이터가 10개의 값을 포함하는 경우, 프로세서(120)는 10개의 값 각각에 스케일링 배율을 곱셈하여 채널 별 데이터를 스케일링할 수 있다. 시프트는 채널 별 데이터에 시프트 값을 덧셈하는 연산을 의미한다. 가령, 채널 데이터가 10개의 값을 포함하는 경우, 프로세서(120)는 10개의 값 각각에 시프트 값을 덧셈하여 채널 별 데이터를 시프트할 수 있다.
프로세서(120)는 최대 레인지를 갖는 채널의 레인지를 시프트하고, 시프트된 레인지에 기초하여 나머지 채널의 레인지를 스케일링 및 시프트할 수 있다. 이러한 동작을 통해, 가령 제1 피쳐 맵 데이터의 모든 채널의 레인지를 동일하게 만들 수 있다.
또는, 프로세서(120)는 제1 피쳐 맵 데이터에 대해 스케일링만을 수행할 수도 있다. 이 경우, 프로세서(120)는 제1 피쳐 맵 데이터 중 최대 레인지를 갖는 채널을 제외한 나머지 채널의 레인지가 제1 피쳐 맵 데이터 중 최대 레인지를 갖는 채널의 레인지보다 기설정된 값 이상 작도록 스케일링하기 위한 정보를 획득할 수 있다.
예를 들어, 프로세서(120)는 최대 레인지가 10인 경우, 최대 레인지를 갖는 채널을 제외한 나머지 채널의 레인지를 10보다 2 작은 8 이하로 스케일링할 수 있다.
일 실시 예에 따르면, 스케일링만을 수행하는 경우, 프로세서(120)는 나머지 채널 각각의 최소값 및 최대값 중 하나를 최대 레인지에 맞춰 스케일링할 수 있다. 예를 들어, 프로세서(120)는 나머지 채널 각각의 최소값 및 최대 레인지의 최소값에 기초하여 제1 스케일링 배율을 식별하고, 나머지 채널 각각의 최대값 및 최대 레인지의 최대값에 기초하여 제2 스케일링 배율을 식별하고, 제1 스케일링 배율 및 제2 스케일링 배율 중 작은 값을 최종 스케일링 배율로 식별할 수도 있다.
프로세서(120)는 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터의 이전 레이어의 타입 및 이후 레이어의 타입에 기초하여 스케일링 또는 시프트 중 적어도 하나에 대한 정보를 획득할 수 있다. 예를 들어, 프로세서(120)는 제1 피쳐 맵 데이터의 직전 레이어가 제1 타입이고, 제1 피쳐 맵 데이터의 직후 레이어가 제2 타입이면, 스케일링에 대한 정보만을 획득하고, 제1 피쳐 맵 데이터의 직전 레이어가 제3 타입이고, 제1 피쳐 맵 데이터의 직후 레이어가 제4 타입이면, 시프트에 대한 정보만을 획득하고, 제1 피쳐 맵 데이터의 직전 레이어가 제5 타입이고, 제1 피쳐 맵 데이터의 직후 레이어가 제6 타입이면, 스케일링 및 시프트에 대한 정보를 획득할 수 있다.
여기서, 레이어의 타입은 레이어의 연산 특성 및 균등화의 대상이 되는 피쳐 맵 데이터의 입출력 여부에 의해 결정될 수 있다. 예를 들어, 레이어가 Conv이고 피쳐 맵 데이터가 출력되는 상태이면, 해당 피쳐 맵 데이터에 대해 스케일링이 가능하다. 다만, 레이어가 Mul이고 피쳐 맵 데이터가 출력되는 상태이면, 해당 피쳐 맵 데이터에 대해 스케일링이 불가능하다. 이는 Mul의 경우, MUL(X, Y)로 표현될 수 있고, 스케일링 시 MUL(X, Y)ⅹα이나, 이는 Mul 연산으로 표현될 수 없어 스케일링이 불가능하다. 또는, 레이어가 Conv이고 피쳐 맵 데이터가 출력되는 상태이면, 해당 피쳐 맵 데이터에 대해 시프트가 가능하다. 다만, 레이어가 Mul이고 피쳐 맵 데이터가 출력되는 상태이면, 해당 피쳐 맵 데이터에 대해 시프트는 불가능하다. 이는 Mul의 경우, MUL(X, Y)로 표현될 수 있고, 시프트 시 MUL(X, Y)+α이나, 이는 Mul 연산으로 표현될 수 없어 시프트가 불가능하다.
프로세서(120)는 신경망 모델 업데이트 모듈(120-5)을 실행함으로써 스케일링 또는 시프트 중 적어도 하나에 대한 정보에 기초하여 적어도 하나의 레이어 각각을 업데이트하여 피쳐 맵 데이터의 채널 별 데이터가 균등화된 제2 신경망 모델을 획득할 수 있다.
예를 들어, 프로세서(120)는 적어도 하나의 레이어 중 제1 레이어의 피쳐 맵 데이터를 스케일링하는 경우, 채널 별 스케일링 데이터를 제1 레이어의 웨이트(weight) 및 바이어스(bias)에 채널 별로 곱셈하여 제1 레이어를 업데이트하고, 제1 레이어 직후의 제2 레이어를 채널 별 스케일링 데이터로 채널 별로 나누어 제2 레이어를 업데이트할 수 있다.
또는, 프로세서(120)는 적어도 하나의 레이어 중 제3 레이어의 피쳐 맵 데이터를 시프트하는 경우, 채널 별 시프트 데이터를 제3 레이어의 바이어스에 채널 별로 더하여 제3 레이어를 업데이트하고, 제3 레이어 직후의 제4 레이어의 웨이트에 채널 별 시프트 데이터를 채널 별로 곱하고, 곱셈 결과를 채널 별로 더하고, 제4 레이어의 바이어스에 채널 별 덧셈 결과를 빼서 제4 레이어를 업데이트할 수 있다.
또는, 프로세서(120)는 적어도 하나의 레이어 중 제5 레이어의 피쳐 맵 데이터를 스케일링 및 시프트하는 경우, 제5 레이어의 피쳐 맵 데이터에 대해 스케일링을 적용하고, 스케일링이 적용된 피쳐 맵 데이터에 대해 시프트를 적용할 수 있다.
이러한 동작을 통해 제1 신경망 모델이 제2 신경망 모델로 업데이트될 수 있다. 또한, 제2 신경망 모델에 포함된 적어도 하나의 레이어로부터 출력되는 피쳐 맵 데이터는 제1 신경망 모델에 포함된 적어도 하나의 레이어로부터 출력되는 피쳐 맵 데이터보다 동일 레이어 내에서 채널 별 편차가 작아질 수 있다. 특히, 모든 피쳐 맵 데이터에 대해 스케일링 및 시프트가 수행되는 경우라면, 제2 신경망 모델에 포함된 적어도 하나의 레이어로부터 출력되는 피쳐 맵 데이터는 동일 레이어 내에서 채널 별 편차가 없을 수도 있다.
프로세서(120)는 양자화 모듈(120-6)을 실행함으로써 테스트 데이터에 기초하여 제2 신경망 모델을 양자화하여 제1 신경망 모델에 대응되는 양자화된 제3 신경망 모델을 획득할 수 있다.
예를 들어, 프로세서(120)는 affine transformation을 통해 제2 신경망 모델을 양자화할 수 있다. affine transformation은 하기와 같은 양자화 방식이다.
xf = scale * (xq - zero point)
여기서, xf는 원래 실수 값이고, xq는 양자화된 값이고, scale은 양자화를 위한 스케일링 배율이고, zero point는 xf가 0일 때 xq의 값일 수 있다.
프로세서(120)는 affine transformation을 통해 제2 신경망 모델에 포함된 적어도 하나의 레이어 각각 및 적어도 하나의 레이어 각각으로부터 출력되는 피쳐 맵 데이터를 양자화할 수 있다.
여기서, 프로세서(120)는 제2 신경망 모델에 포함된 적어도 하나의 레이어는 채널 별로 양자화하고, 제2 신경망 모델에 포함된 적어도 하나의 레이어 각각의 피쳐 맵 데이터는 피쳐 맵 데이터 별로 양자화하여 제3 신경망 모델을 획득할 수 있다.
이러한 동작을 통해, 양자화 과정에서 발생할 수 있는 오차를 줄일 수 있다.
한편, 본 개시에 따른 인공 지능과 관련된 기능은 프로세서(120)와 메모리(110)를 통해 동작될 수 있다.
프로세서(120)는 하나 또는 복수의 프로세서로 구성될 수 있다. 이때, 하나 또는 복수의 프로세서는 CPU, AP, DSP 등과 같은 범용 프로세서, GPU, VPU(Vision Processing Unit)와 같은 그래픽 전용 프로세서 또는 NPU와 같은 인공 지능 전용 프로세서일 수 있다.
하나 또는 복수의 프로세서는, 메모리(110)에 저장된 기 정의된 동작 규칙 또는 인공 지능 모델에 따라, 입력 데이터를 처리하도록 제어한다. 또는, 하나 또는 복수의 프로세서가 인공 지능 전용 프로세서인 경우, 인공 지능 전용 프로세서는 특정 인공 지능 모델의 처리에 특화된 하드웨어 구조로 설계될 수 있다. 기 정의된 동작 규칙 또는 인공 지능 모델은 학습을 통해 만들어진 것을 특징으로 한다.
여기서, 학습을 통해 만들어진다는 것은, 기본 인공 지능 모델이 학습 알고리즘에 의하여 다수의 학습 데이터들을 이용하여 학습됨으로써, 원하는 특성(또는, 목적)을 수행하도록 설정된 기 정의된 동작 규칙 또는 인공 지능 모델이 만들어짐을 의미한다. 이러한 학습은 본 개시에 따른 인공 지능이 수행되는 기기 자체에서 이루어질 수도 있고, 별도의 서버 및/또는 시스템을 통해 이루어 질 수도 있다. 학습 알고리즘의 예로는, 지도형 학습(supervised learning), 비지도형 학습(unsupervised learning), 준지도형 학습(semi-supervised learning) 또는 강화 학습(reinforcement learning)이 있으나, 전술한 예에 한정되지 않는다.
인공 지능 모델은 복수의 신경망 레이어들로 구성될 수 있다. 복수의 신경망 레이어들 각각은 복수의 가중치들(weight values)을 갖고 있으며, 이전(previous) 레이어의 연산 결과와 복수의 가중치들 간의 연산을 통해 신경망 연산을 수행한다. 복수의 신경망 레이어들이 갖고 있는 복수의 가중치들은 인공 지능 모델의 학습 결과에 의해 최적화될 수 있다. 예를 들어, 학습 과정 동안 인공 지능 모델에서 획득한 로스(loss) 값 또는 코스트(cost) 값이 감소 또는 최소화되도록 복수의 가중치들이 갱신될 수 있다.
인공 신경망은 심층 신경망(DNN:Deep Neural Network)를 포함할 수 있으며, 예를 들어, CNN(Convolutional Neural Network), DNN (Deep Neural Network), RNN(Recurrent Neural Network), RBM(Restricted Boltzmann Machine), DBN(Deep Belief Network), BRDNN(Bidirectional Recurrent Deep Neural Network), GAN(Generative Adversarial Network) 또는 심층 Q-네트워크(Deep Q-Networks) 등이 있으나, 이에 한정되는 것은 아니다.
도 3은 본 개시의 일 실시 예에 따른 프로세서(120)의 동작을 전반적으로 설명하기 위한 흐름도이다.
먼저, 프로세서(120)는 테스트 데이터를 제1 신경망 모델에 입력하여 피쳐 맵 데이터를 획득할 수 있다(S310). 설명의 편의를 위해, 제1 신경망 모델이 제1 레이어 및 제2 레이어를 포함하는 것으로 가정하면, 프로세서(120)는 테스트 데이터를 제1 신경망 모델에 입력하여 제1 레이어로부터 출력되는 피쳐 맵 데이터를 획득할 수 있다. 이 경우, 피쳐 맵 데이터는 채널 별로 구분될 수 있다. 가령, 제1 레이어가 10개의 채널을 포함하는 경우, 피쳐 맵 데이터도 10개의 채널에 각각 대응되는 10개의 데이터를 포함할 수 있다.
프로세서(120)는 피쳐 맵 데이터에 대해 스케일링/시프트 변환을 통해 균등화된 피쳐 맵 데이터를 갖는 제2 신경망 모델을 획득할 수 있다(S320). 상술한 예에서, 프로세서(120)는 피쳐 맵 데이터의 10개의 데이터 각각의 레인지를 식별할 수 있다. 여기서, 레인지는 각 채널에 포함된 데이터의 최대값과 최소값의 차이일 수 있다. 프로세서(120)는 복수의 레인지 중 가장 큰 값을 갖는 최대 레인지에 기초하여 각 채널의 레인지에 대해 스케일링 또는 시프트 중 적어도 하나를 수행하고, 수행 결과에 기초하여 피쳐 맵 데이터의 직전 레이어인 제1 레이어 및 피쳐 맵 데이터의 직후 레이어인 제2 레이어를 업데이트하여 제2 신경망 모델을 획득할 수 있다. S320 단계에 대한 구체적인 동작은 도 4를 통해 설명한다.
프로세서(120)는 제2 신경망 모델 및 테스트 데이터를 입력으로 양자화 변환을 수행하여 제1 신경망 모델에 대응되는 양자화된 제3 신경망 모델을 획득할 수 있다(S330). 상술한 예에서, 프로세서(120)는 제2 신경망 모델에 포함된 제1 레이어 및 제2 레이어를 양자화하고, 테스트 데이터를 제2 신경망 모델에 입력하여 피쳐 맵 데이터를 획득하고, 피쳐 맵 데이터를 양자화하여 제3 신경망 모델을 획득할 수 있다. S330 단계에 대한 구체적인 동작은 도 5를 통해 설명한다.
도 4는 본 개시의 일 실시 예에 따른 피쳐 맵 데이터를 균등화하는 방법을 설명하기 위한 흐름도이다.
먼저, 프로세서(120)는 피쳐 맵 데이터의 직전 레이어의 타입 및 직후 레이어의 타입에 기초하여 스케일링 또는 시프트 중 적어도 하나의 수행 여부를 식별할 수 있다(S410). 예를 들어, 프로세서(120)는 직전 레이어와 스케일링 연산을 개별적으로 수행한 결과와 직전 레이어와 스케일링 연산을 결합한 후의 결과가 동일한 경우, 직전 레이어와 스케일링 연산을 결합 가능한 것으로 식별할 수 있다. 여기서, 직전 레이어와 스케일링 연산의 결합 여부는 직전 레이어의 연산 특성에 따라 결정될 수 있으며, 이에 대한 구체적인 설명은 도 16을 통해 후술한다. 프로세서(120)는 이상과 같은 방식에 기초하여 직전 레이어와 스케일링 연산 또는 시프트 연산 중 적어도 하나의 결합 여부 및 스케일링 연산 또는 시프트 연산 중 적어도 하나와 직후 레이어의 결합 여부를 식별하고, 그 결과에 기초하여 스케일링 또는 시프트 중 적어도 하나의 수행 여부를 결정할 수 있다.
프로세서(120)는 피쳐 맵 데이터에서 최대 레인지를 갖는 채널을 식별할 수 있다(S420). 예를 들어, 프로세서(120)는 피쳐 맵 데이터의 복수의 채널 별 데이터 각각에 대하여 최대값과 최소값의 차이인 레인지를 식별하고, 이 중 가장 큰 값을 최대 레인지로서 식별하고, 최대 레인지에 대응되는 채널을 식별할 수 있다.
프로세서(120)는 피쳐 맵 데이터에서 최대 레인지에 대응되는 채널을 제외한 나머지 채널 각각에 대해 스케일링 또는 시프트 중 적어도 하나를 수행할 수 있다(S430). S410 단계에서 피쳐 맵 데이터를 스케일링하는 것으로 식별된 경우, 프로세서(120)는 나머지 채널 각각의 레인지를 최대 레인지의 크기 또는 최대 레인지보다 기설정된 값만큼 작은 값로 스케일링할 수 있다. 이 경우, 프로세서(120)는 나머지 채널 각각에 대한 스케일링 배율을 획득할 수 있다.
또는, S410 단계에서 피쳐 맵 데이터를 시프트하는 것으로 식별된 경우, 프로세서(120)는 나머지 채널 각각의 레인지를 최대 레인지에 대응되는 채널의 최소값 및 최대값에 기초하여 시프트할 수 있다. 이 경우, 프로세서(120)는 나머지 채널 각각에 대한 시프트 값을 획득할 수 있다.
또는, S410 단계에서 피쳐 맵 데이터를 스케일링 및 시프트하는 것으로 식별된 경우, 프로세서(120)는 나머지 채널 각각의 레인지를 최대 레인지의 크기만큼 스케일링하고, 나머지 채널 각각의 스케일링된 레인지를 최대 레인지에 대응되는 채널의 최소값 및 최대값에 기초하여 시프트할 수 있다. 이 경우, 프로세서(120)는 나머지 채널 각각에 대한 스케일링 배율 및 시프트 값을 획득할 수 있다.
프로세서(120)는 피쳐 맵 데이터의 채널 별 스케일링 또는 시프트 중 적어도 하나에 대한 정보에 기초하여 직전 레이어 및 직후 레이어가 업데이트된 제2 신경망 모델을 획득할 수 있다(S440). 예를 들어, 프로세서(120)는 피쳐 맵 데이터의 채널 별 스케일링 배율 또는 시프트 값 중 적어도 하나에 기초하여 직전 레이어 및 직후 레이어를 업데이트하여 제2 신경망 모델을 획득할 수 있다.
도 5는 본 개시의 일 실시 예에 따른 적어도 하나의 레이어 및 피쳐 맵 데이터를 양자화하는 방법을 설명하기 위한 흐름도이다.
먼저, 프로세서(120)는 테스트 데이터를 제2 신경망 모델에 입력하여 피쳐 맵 데이터를 획득할 수 있다(S510). 이러한 동작은 S310과 동일하므로 중복되는 설명은 생략한다.
프로세서(120)는 제2 신경망 모델에 포함된 적어도 하나의 레이어를 양자화하고, 피쳐 맵 데이터를 양자화하여 제3 신경망 모델을 획득할 수 있다(S520). 예를 들어, 제2 신경망 모델이 2개의 레이어를 포함하는 경우, 프로세서(120)는 2개의 레이어 각각을 채널 별로 양자화할 수 있다. 그리고, 프로세서(120)는 2개의 레이어 중 첫 번째 레이어로부터 출력되는 피쳐 맵 데이터를 양자화할 수 있다. 여기서, 피쳐 맵 데이터는 채널 별로 출력되는 데이터가 균등화된 상태로, 프로세서(120)는 피쳐 맵 데이터를 채널 별로 양자화하는 것이 아니라 피쳐 맵 데이터 전체에 대해 양자화를 수행할 수 있다.
도 6은 본 개시의 일 실시 예에 따른 전자 장치(100)의 세부 구성을 나타내는 블럭도이다. 전자 장치(100)는 메모리(110) 및 프로세서(10)를 포함할 수 있다. 또한, 도 6에 따르면, 전자 장치(100)는 통신 인터페이스(130), 디스플레이(140), 사용자 인터페이스(150), 마이크(160), 스피커(170), 카메라(180)를 더 포함할 수도 있다. 도 6에 도시된 구성 요소들 중 도 2에 도시된 구성 요소와 중복되는 부분에 대해서는 자세한 설명을 생략하도록 한다.
통신 인터페이스(130)는 다양한 유형의 통신 방식에 따라 다양한 유형의 외부 장치와 통신을 수행하는 구성이다. 예를 들어, 전자 장치(100)는 통신 인터페이스(130)를 통해 외부 서버 등과 통신을 수행할 수 있다.
통신 인터페이스(130)는 와이파이 모듈, 블루투스 모듈, 적외선 통신 모듈 및 무선 통신 모듈 등을 포함할 수 있다. 여기서, 각 통신 모듈은 적어도 하나의 하드웨어 칩 형태로 구현될 수 있다.
와이파이 모듈, 블루투스 모듈은 각각 WiFi 방식, 블루투스 방식으로 통신을 수행한다. 와이파이 모듈이나 블루투스 모듈을 이용하는 경우에는 SSID 및 세션 키 등과 같은 각종 연결 정보를 먼저 송수신하여, 이를 이용하여 통신 연결한 후 각종 정보들을 송수신할 수 있다. 적외선 통신 모듈은 시 광선과 밀리미터파 사이에 있는 적외선을 이용하여 근거리에 무선으로 데이터를 전송하는 적외선 통신(IrDA, infrared Data Association)기술에 따라 통신을 수행한다.
무선 통신 모듈은 상술한 통신 방식 이외에 지그비(zigbee), 3G(3rd Generation), 3GPP(3rd Generation Partnership Project), LTE(Long Term Evolution), LTE-A(LTE Advanced), 4G(4th Generation), 5G(5th Generation)등과 같은 다양한 무선 통신 규격에 따라 통신을 수행하는 적어도 하나의 통신 칩을 포함할 수 있다.
또는, 통신 인터페이스(130)는 HDMI, DP, 썬더볼트, USB, RGB, D-SUB, DVI 등과 같은 유선 통신 인터페이스를 포함할 수 있다.
그 밖에 통신 인터페이스(130)는 LAN(Local Area Network) 모듈, 이더넷 모듈, 또는 페어 케이블, 동축 케이블 또는 광섬유 케이블 등을 이용하여 통신을 수행하는 유선 통신 모듈 중 적어도 하나를 포함할 수도 있다.
디스플레이(140)는 이미지를 디스플레이하는 구성으로, LCD(Liquid Crystal Display), OLED(Organic Light Emitting Diodes) 디스플레이, PDP(Plasma Display Panel) 등과 같은 다양한 형태의 디스플레이로 구현될 수 있다. 디스플레이(140) 내에는 a-si TFT, LTPS(low temperature poly silicon) TFT, OTFT(organic TFT) 등과 같은 형태로 구현될 수 있는 구동 회로, 백라이트 유닛 등도 함께 포함될 수 있다. 한편, 디스플레이(140)는 터치 센서와 결합된 터치 스크린, 플렉시블 디스플레이(flexible display), 3차원 디스플레이(3D display) 등으로 구현될 수 있다.
사용자 인터페이스(150)는 버튼, 터치 패드, 마우스 및 키보드 등으로 구현되거나, 디스플레이 기능 및 조작 입력 기능도 함께 수행 가능한 터치 스크린으로도 구현될 수 있다. 여기서, 버튼은 전자 장치(100)의 본체 외관의 전면부나 측면부, 배면부 등의 임의의 영역에 형성된 기계적 버튼, 터치 패드, 휠 등과 같은 다양한 유형의 버튼이 될 수 있다.
마이크(160)는 사운드를 입력받아 오디오 신호로 변환하기 위한 구성이다. 마이크(160)는 프로세서(120)와 전기적으로 연결되며, 프로세서(120)의 제어에 의해 사운드를 수신할 수 있다.
예를 들어, 마이크(160)는 전자 장치(100)의 상측이나 전면 방향, 측면 방향 등에 일체화된 일체형으로 형성될 수 있다. 또는, 마이크(160)는 전자 장치(100)와는 별도의 리모컨 등에 구비될 수도 있다. 이 경우, 리모컨은 마이크(160)를 통해 사운드를 수신하고, 수신된 사운드를 전자 장치(100)로 제공할 수도 있다.
마이크(160)는 아날로그 형태의 사운드를 수집하는 마이크, 수집된 사운드를 증폭하는 앰프 회로, 증폭된 사운드를 샘플링하여 디지털 신호로 변환하는 A/D 변환회로, 변환된 디지털 신호로부터 노이즈 성분을 제거하는 필터 회로 등과 같은 다양한 구성을 포함할 수 있다.
한편, 마이크(160)는 사운드 센서의 형태로 구현될 수도 있으며, 사운드를 수집할 수 있는 구성이라면 어떠한 방식이라도 무방하다.
스피커(170)는 프로세서(120)에서 처리된 각종 오디오 데이터 뿐만 아니라 각종 알림 음이나 음성 메시지 등을 출력하는 구성요소이다.
그 밖에, 전자 장치(100)는 카메라(180)를 더 포함할 수 있다. 카메라(180)는 정지 영상 또는 동영상을 촬상하기 위한 구성이다. 카메라(180)는 특정 시점에서의 정지 영상을 촬영할 수 있으나, 연속적으로 정지 영상을 촬영할 수도 있다.
카메라(180)는 렌즈, 셔터, 조리개, 고체 촬상 소자, AFE(Analog Front End), TG(Timing Generator)를 포함한다. 셔터는 피사체에 반사된 빛이 카메라(180)로 들어오는 시간을 조절하고, 조리개는 빛이 들어오는 개구부의 크기를 기계적으로 증가 또는 감소시켜 렌즈에 입사되는 광량을 조절한다. 고체 촬상 소자는 피사체에 반사된 빛이 광전하로 축적되면, 광전하에 의한 상을 전기 신호로 출력한다. TG는 고체 촬상 소자의 픽셀 데이터를 리드아웃 하기 위한 타이밍 신호를 출력하며, AFE는 고체 촬상 소자로부터 출력되는 전기 신호를 샘플링하여 디지털화한다.
이상과 같이 전자 장치(100)는 제1 신경망 모델을 피쳐 맵 데이터를 균등화하기 위한 제2 신경망 모델로 업데이트하고, 제2 신경망 모델을 양자화하여, 데이터 용량을 줄이면서도 양자화에 따른 오차를 줄일 수 있다.
이상과 같은 전자 장치(100)의 feature map equalization 동작은 채널 별로 값의 레인지가 상이한 피쳐 맵을 많이 가지고 있는 모델에 적용하는 경우에 효과가 향상될 수 있다. 예를 들어, 도 7의 상단에 도시된 바와 같이, object detection 모델은 채널 별 값의 레인지가 상이한 피쳐 맵을 상당 수 포함할 수 있다(FP32 neural network). 이때, 전자 장치(100)는 도 7의 하단에 도시된 바와 같이, object detection 모델에 대해 feature map equalization 동작을 수행하여 채널 별 값의 레인지가 균등화된 피쳐 맵을 포함하는 모델을 획득하고(equalized network(FP32)), 이를 이용함에 따라 양자화 오차를 감소시킬 수 있다. 또는, generative model 중 이미지를 생성하는 어플리케이션, 가령 영상을 만화처럼 바꿔주는 style transfer의 경우, 변환 과정에서 평균과 표준편차를 계산하여 채널 별 normalization을 수행하는 instance normalization이 주로 이용될 수 있다. Instance normalization 의 input은 아직 normalize되지 않은 피쳐 맵이므로, 전자 장치(100)는 instance normalization 의 input에 대해 feature map equalization 동작을 수행하여 양자화 오차를 감소시킬 수 있다. 다만, 이에 한정되는 것은 아니며, 전자 장치(100)는 얼마든지 다양한 유형의 신경망 모델에 feature map equalization 동작을 수행하여 양자화 오차를 감소시킬 수 있다.
이하에서는 도 8 내지 도 24를 통해 전자 장치(100)의 동작을 좀더 구체적으로 설명한다. 도 8 내지 도 24에서는 설명의 편의를 위해 개별적인 실시 예에 대하여 설명한다. 다만, 도 8 내지 도 24의 개별적인 실시 예는 얼마든지 조합된 상태로 실시될 수도 있다.
도 8 내지 도 11은 본 개시의 일 실시 예에 따른 피쳐 맵 데이터를 균등화하는 방법을 설명하기 위한 도면들이다.
프로세서(120)는 피쳐 맵 데이터에서 채널 별 데이터에 대해 스케일링 또는 시프트 중 적어도 하나를 수행하여 피쳐 맵 데이터를 균등화할 수 있다.
예를 들어, 프로세서(120)는 도 8의 좌측에 도시된 바와 같이, DConv 레이어로부터 출력되는 피쳐 맵 데이터를 Conv 레이어로 입력할 수 있다. 여기서, 프로세서(120)는 피쳐 맵 데이터를 α로 스케일링하고, 다시 1/α로 스케일링할 수 있으며, 두 번의 스케일링 과정을 거침에 따라 Conv 레이어로 입력되는 피쳐 맵 데이터는 스케일링하지 않은 경우와 동일할 수 있다. 도 8의 좌측에서는 설명의 편의를 위해, α로 스케일링하고, 다시 1/α로 스케일링하는 것으로 도시하였으나, 실제 스케일링 과정에서는 피쳐 맵 데이터의 채널 별로 스케일링 배율이 상이할 수 있다. 또한, 피쳐 맵 데이터의 채널 중 최대 레인지를 갖는 채널은 스케일링 배율이 1일 수 있다.
프로세서(120)는 피쳐 맵 데이터에 포함된 복수의 채널 중 최대 레인지를 갖는 채널을 식별하고, 복수의 채널 중 나머지 채널을 최대 레인지에 기초하여 스케일링하기 위한 정보를 획득할 수 있다. 예를 들어, 도 8의 우측에서는 채널 1(ch1, 710)이 최대 레인지를 갖는 채널이고, 나머지 채널 중 하나의 채널(820-1)을 도시하였다. 프로세서(120)는 채널(820-1)을 채널 1(810)에 기초하여 채널 0(ch0, 820-2)로 스케일링하기 위한 정보를 획득할 수 있다. 프로세서(120)가 채널 1(810)에 기초하여 채널 0(820-2)으로 스케일링하는 방법에 대해서는 도 11을 참조하여 후술하기로 한다.
프로세서(120)는 도 8의 우측과 같은 방법으로 복수의 채널 중 나머지 채널 각각을 스케일링하기 위한 정보를 획득할 수 있다.
일 실시 예로서, 프로세서(120)는 도 9의 좌측에 도시된 바와 같이, Conv 레이어로부터 출력되는 피쳐 맵 데이터를 Instnorm 레이어로 입력할 수도 있다. 여기서, 프로세서(120)는 피쳐 맵 데이터를 β로 시프트하고, 다시 -β로 시프트할 수 있으며, 두 번의 시프트 과정을 거침에 따라 Instnorm 레이어로 입력되는 피쳐 맵 데이터는 시프트하지 않은 경우와 동일할 수 있다. 도 9의 좌측에서는 설명의 편의를 위해, β로 시프트하고, 다시 -β로 시프트하는 것으로 도시하였으나, 실제 시프트 과정에서는 피쳐 맵 데이터의 채널 별로 시프트 값이 상이할 수 있다.
프로세서(120)는 피쳐 맵 데이터에 포함된 복수의 채널 각각의 최대값과 최소값의 평균값이 0이 되도록 시프트하기 위한 정보를 획득할 수 있다. 예를 들어, 프로세서(120)는 도 9의 우측에 도시된 바와 같이, 채널(910-1)을 채널0(ch0, 910-2)로 시프트하기 위한 정보 및 채널(920-1)을 채널1(ch1, 920-2)로 시프트하기 위한 정보를 획득할 수 있다.
프로세서(120)는 도 9의 우측과 같은 방법으로 복수의 채널 각각을 시프트하기 위한 정보를 획득할 수 있다.
일 실시 예로서, 프로세서(120)는 도 10의 좌측에 도시된 바와 같이, Conv 레이어로부터 출력되는 피쳐 맵 데이터를 DConv 레이어로 입력할 수 있다. 여기서, 프로세서(120)는 피쳐 맵 데이터를 α로 스케일링하고, β로 시프트하고, 다시 -β로 시프트하고, 다시 1/α로 스케일링할 수 있으며, 두 번의 스케일링 및 두 번의 시프트 과정을 거침에 따라 DConv 레이어로 입력되는 피쳐 맵 데이터는 스케일링 및시프트 과정을 거치지 않은 경우와 동일할 수 있다. 도 9의 좌측에서는 설명의 편의를 위해, 스케일링 배율이 α이고, 시프트 값이 β인 것으로 도시하였으나, 실제 스케일링 및 시프트 과정에서는 피쳐 맵 데이터의 채널 별로 스케일링 배율 및 시프트 값이 상이할 수 있다. 또한, 피쳐 맵 데이터의 채널 중 최대 레인지를 갖는 채널은 스케일링 배율이 1일 수 있다.
프로세서(120)는 피쳐 맵 데이터에 포함된 복수의 채널 중 최대 레인지를 갖는 채널을 식별하고, 복수의 채널 중 나머지 채널을 최대 레인지에 기초하여 스케일링 및 시프트하기 위한 정보를 획득할 수 있다. 예를 들어, 도 10의 우측에서는 채널 1(ch1, 910)이 최대 레인지를 갖는 채널이고, 나머지 채널 중 하나의 채널(1020-1)을 도시하였다. 프로세서(120)는 채널 1(910)에 기초하여 채널(1020-1)을 채널(1020-2)로 스케일링하기 위한 정보를 획득하고, 채널(1020-2)이 채널(1020-3)로 시프트하기 위한 정보를 획득할 수 있다. 여기서, 채널(1020-3)의 최대값과 최소값의 평균값은 0일 수 있다. 즉, 프로세서(120)는 채널(1020-2)의 최대값과 최소값의 평균값이 0이 되도록 시프트하기 위한 정보를 획득할 수 있다.
프로세서(120)는 도 10의 우측과 같은 방법으로 복수의 채널 중 나머지 채널 각각을 스케일링 및 시프트하기 위한 정보를 획득할 수 있다. 또는, 프로세서(120)는 최대 레인지를 갖는 채널의 최대값과 최소값의 평균값이 0이 되도록 시프트하기 위한 정보를 획득하고, 시프트된 최대 레인지를 갖는 채널에 기초하여 도 10의 우측과 같은 방법으로 복수의 채널 중 나머지 채널 각각을 스케일링 및 시프트하기 위한 정보를 획득할 수도 있다.
도 8 내지 도 10에서 두 레이어 사이에 추가된 스케일링, 시프트 등의 구성은 두 레이어에 결합되어 성능 오버헤드가 발생하지 않을 수 있다. 예를 들어, 도 8의 α로 스케일링하는 구성은 DConv 레이어로 결합되고, 1/α로 스케일링하는 구성은 Conv 레이어로 결합될 수 있으며, 결합 동작에 대하여는 후술하는 도면을 통해 설명한다.
일 실시 예로서, 프로세서(120)는 스케일링을 수행하는 경우, 피쳐 맵 데이터 중 최대 레인지를 갖는 채널을 제외한 나머지 채널의 레인지가 피쳐 맵 데이터 중 최대 레인지를 갖는 채널의 레인지보다 기설정된 값 이상 작도록 스케일링하기 위한 정보를 획득할 수도 있다.
예를 들어, 프로세서(120)는 도 11에 도시된 바와 같이, 채널 0을 최대 레인지를 갖는 채널 1보다 1110만큼 작도록 스케일링하기 위한 정보를 획득할 수도 있다.
이러한 동작은 피쳐 맵 데이터를 획득하기 위한 테스트 데이터보다 극단적인 데이터가 입력되는 경우를 상정한 동작이다. 예를 들어, 최대 레인지인 채널 1을 기준으로 피쳐 맵 데이터를 양자화해 둔 상태이나, 실제 신경망 모델의 구동 과정에서 피쳐 맵 데이터가 채널 1보다 큰 레인지를 갖는 채널을 포함할 수도 있으며, 이 경우 오버 플로우가 발생할 수 있다. 그에 따라, 기설정된 값 이상의 마진을 두어 실제 신경망 구동 과정에서의 오버 플로우를 방지할 수 있다.
도 12 및 도 13은 본 개시의 일 실시 예에 따른 기존 레이어에 스케일링하는 구성을 결합하는 방법을 설명하기 위한 도면들이다.
프로세서(120)는 스케일링에 대한 정보에 기초하여 이전 레이어 및 이후 레이어를 업데이트하여 피쳐 맵 데이터의 채널 별 데이터가 균등화된 제2 신경망 모델을 획득할 수 있다.
예를 들어, 프로세서(120)는 제1 레이어(Conv 레이어)로부터 출력되는 피쳐 맵 데이터를 스케일링하는 경우, 도 12에 도시된 바와 같이, 채널 별 스케일링 데이터를 제1 레이어의 웨이트 및 바이어스에 채널 별로 곱셈하여 제1 레이어를 업데이트하고, 도 13에 도시된 바와 같이, 피쳐 맵 데이터가 입력되는 제2 레이어(Conv 레이어)를 채널 별 스케일링 데이터로 채널 별로 나누어 제2 레이어를 업데이트할 수 있다. 이러한 동작을 통해, 업데이트된 제1 레이어를 통해 출력되는 피쳐 맵 데이터는 균등화된 상태일 수 있다. 즉, 업데이트된 제1 레이어를 통해 출력되는 피쳐 맵 데이터에 포함된 복수의 채널 각각의 레인지는 유사한 레인지를 갖거나 모두 동일한 레인지를 가질 수 있다.
도 14 및 도 15는 본 개시의 일 실시 예에 따른 기존 레이어에 시프트하는 구성을 결합하는 방법을 설명하기 위한 도면들이다.
예를 들어, 프로세서(120)는 제3 레이어(Conv 레이어)로부터 출력되는 피쳐 맵 데이터를 시프트하는 경우, 도 14에 도시된 바와 같이, 채널 별 시프트 데이터를 제3 레이어의 바이어스에 채널 별로 더하여 제3 레이어를 업데이트하고, 도 15에 도시된 바와 같이, 피쳐 맵 데이터가 입력되는 제4 레이어(DConv 레이어)의 웨이트에 채널 별 시프트 데이터를 채널 별로 곱하고, 곱셈 결과를 채널 별로 더하고, 제4 레이어의 바이어스에 채널 별 덧셈 결과를 빼서 제4 레이어를 업데이트할 수 있다. 이러한 동작을 통해, 업데이트된 제3 레이어를 통해 출력되는 피쳐 맵 데이터는 균등화된 상태일 수 있다. 즉, 업데이트된 제3 레이어를 통해 출력되는 피쳐 맵 데이터에 포함된 복수의 채널 각각의 레인지는 유사한 레인지를 갖거나 모두 동일한 레인지를 가질 수 있다.
도 12 내지 도 15에서는 스케일링만이 수행되는 경우 및 시프트만이 수행되는 경우만을 설명하였다. 프로세서(120)는 스케일링 및 시프트를 수행하는 경우, 피쳐 맵 데이터를 출력하는 레이어를 도 12와 같이 업데이트한 후, 업데이트된 레이어를 도 14와 같이 추가로 업데이트할 수 있다. 또한, 프로세서(120)는 스케일링 및 시프트를 수행하는 경우, 피쳐 맵 데이터를 입력받는 레이어를 도 13과 같이 업데이트한 후, 업데이트된 레이어를 도 15와 같이 추가로 업데이트할 수 있다.
이러한 동작을 통해 제1 신경망 모델이 제2 신경망 모델로 업데이트될 수 있다. 또한, 제2 신경망 모델에 포함된 적어도 하나의 레이어로부터 출력되는 피쳐 맵 데이터는 제1 신경망 모델에 포함된 적어도 하나의 레이어로부터 출력되는 피쳐 맵 데이터보다 동일 레이어 내에서 채널 별 편차가 작아질 수 있다. 특히, 모든 피쳐 맵 데이터에 대해 스케일링 및 시프트가 수행되는 경우라면, 제2 신경망 모델에 포함된 적어도 하나의 레이어로부터 출력되는 피쳐 맵 데이터는 동일 레이어 내에서 채널 별 편차가 없을 수도 있다.
도 16은 본 개시의 일 실시 예에 따른 스케일링 또는 시프트 중 적어도 하나를 수행하는 기준을 설명하기 위한 도면이다.
프로세서(120)는 도 16 상단의 첫 번째 도면에 도시된 바와 같이, 피쳐 맵 데이터를 출력하는 레이어(operator(Op))가 Conv, Dconv, Tconv, FC, Instnorm 등이면, 스케일링에 대한 정보를 획득할 수 있다.
프로세서(120)는 도 16 상단의 두 번째 도면에 도시된 바와 같이, 피쳐 맵 데이터를 입력받는 레이어가 Conv, Dconv, Tconv, FC 등이면, 스케일링에 대한 정보를 획득할 수 있다.
피쳐 맵 데이터를 출력하는 레이어가 Conv, Dconv, Tconv, FC 및 Instnorm 중 하나인 경우, f(x)ⅹa = f`(x)로 표현될 수 있다. 여기서, f(x)는 레이어의 연산을 나타내고, a는 스케일링 배율을 나타낸다.
예를 들어, x 에 대한 Instnorm IN(x)는 하기와 같이 나타낼 수 있다.
Figure pat00001
Figure pat00002
Figure pat00003
피쳐 맵 데이터를 출력하는 레이어 IN(x)를 스케일링 배율 a로 업데이트하는 경우, 하기와 같이 나타낼 수 있다.
Figure pat00004
즉, 프로세서(120)는 gamma(γ)를 gamma ⅹ a로, beta(β)를 beta ⅹ a로 변경하여 IN(x)를 스케일링 배율 a로 업데이트할 수 있다. 즉, IN(x)ⅹa = IN`(x)가 성립하며, 여기서 IN`(x)는 IN(x)의 파라미터인 gamma, beta에 a가 곱해진 IN 연산을 나타낸다. 업데이트 후의 IN`(x)는 여전히 Instnorm 연산의 형태일 수 있다.
프로세서(120)는 도 16 상단의 세 번째 도면에 도시된 바와 같이, 피쳐 맵 데이터를 출력하는 레이어가 Conv, Dconv, Tconv, FC, Instnorm 등이면, 시프트에 대한 정보를 획득할 수 있다.
프로세서(120)는 도 16 상단의 네 번째 도면에 도시된 바와 같이, 피쳐 맵 데이터를 입력받는 레이어가 Dconv, Instnorm 등이면, 시프트에 대한 정보를 획득할 수 있다.
피쳐 맵 데이터를 입력받는 레이어가 Conv, Dconv, Tconv 및 FC 중 하나인 경우, f(ax) = f`(x)로 표현될 수 있다. 여기서, f(x)는 레이어의 연산을 나타내고, a는 스케일링 배율을 나타낸다. 다만, Instnorm는 f(ax) = f`(x)가 성립되지 않기 때문에 업데이트가 불가능하다.
예를 들어, 피쳐 맵 데이터를 입력받는 레이어 IN(x)를 스케일링 배율 a로 업데이트하는 경우, 하기와 같이 나타낼 수 있다.
Figure pat00005
여기서, mu(μ)’는 ax의 평균을 나타내고, sigma(σ)’는 ax의 표준편차 + epsilon을 나타내며, epsilon은 표준편차가 0이 되는 것을 방지하기 위한 매우 작은 수이다.
mu’(ax의 평균) = a ⅹ mu로 표현되고, sigma’(ax의 표준편차 + epsilon) = √((a ⅹ 표준편차)^2 + epsilon)로 표현되나, sigma’에 포함된 epsilon 때문에 sigma’은 sigma로 표현될 수는 없다. 그에 따라, IN(ax)는 Instnorm 연산의 형태로 변환이 불가능하여, 결과적으로 레이어를 업데이트할 수 없다.
한편, Dconv가 피쳐 맵 데이터를 입력받는 레이어인 경우에는 스케일링 연산 및 시프트 연산이 모두 가능하다. 예를 들어, Dconv는 WⅹX+B로 표현되며, 여기서 W는 weights이고, X는 input이고, B는 bias이다. 이 경우, 피쳐 맵 데이터를 입력받는 Dconv는 스케일링 연산과 결합 시, WⅹαX+B로 표현되고 W’ⅹX+B(W’=Wⅹα)로 표현 가능하여 스케일링 연산과의 결합이 가능하다. 또는, 피쳐 맵 데이터를 입력받는 Dconv는 시프트 연산과 결합 시, α(WⅹX+B)로 표현되고 W’ⅹX+B’(W’=Wⅹα, B’=Bⅹα)로 표현 가능하여 시프트 연산과의 결합이 가능하다.
이상과 같이, 각 레이어의 연산 특성 및 업데이트 방법(결합 방법)에 따라 업데이트 가능 여부가 결정될 수 있다.
도 17은 본 개시의 일 실시 예에 따른 균등화 동작을 전반적으로 설명하기 위한 블록도이다.
프로세서(120)는 도 17에 도시된 바와 같이, 테스트 데이터(representative data)를 제1 신경망 모델(pre-trained NN model(fp32)에 입력하여 제1 신경망 모델에 포함된 적어도 하나의 레이어 각각으로부터 피쳐 맵 데이터를 획득할 수 있다. 여기서, 제1 신경망 모델은 1차적으로 학습이 완료된 모델이며, 양자화 수행 전의 모델로서 floating point 형태의 가중치를 포함할 수 있다.
프로세서(120)는 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터에서 채널 별 데이터를 균등화하기 위한 스케일링 또는 시프트 중 적어도 하나에 대한 정보를 획득하고, 획득된 정보에 기초하여 적어도 하나의 레이어 각각을 업데이트하여(feature map distribution equalization, 1710) 피쳐 맵 데이터의 채널 별 데이터가 균등화된 제2 신경망 모델(act-equalized NN Model(fp32))을 획득할 수 있다. 균등화하기 위한 스케일링 또는 시프트 중 적어도 하나에 대한 정보를 획득하는 동작은 도 8 내지 도 11, 도 16을 통해 설명하였다. 제2 신경망 모델은 도 12 내지 도 15를 통해 레이어가 업데이트된 모델이며, 여전히 floating point 형태의 가중치를 포함할 수 있다.
프로세서(120)는 테스트 데이터에 기초하여 제2 신경망 모델을 양자화하여(quantization, 1720) 제1 신경망 모델에 대응되는 양자화된 제3 신경망 모델(quantized NN model)을 획득할 수 있다.
도 18은 본 개시의 일 실시 예에 따른 균등화 동작을 좀더 구체적으로 설명하기 위한 블록도이다.
프로세서(120)는 제1 신경망 모델에 포함된 복수의 레이어 중 인접한 레이어에 기초하여 복수의 레이어 각각으로부터 출력되는 피쳐 맵 데이터의 균등화 패턴을 식별할 수 있다(detect equalization pattern, 1810).
예를 들어, 프로세서(120)는 제1 신경망 모델에 포함된 복수의 레이어 중 제1 레이어가 Conv 레이어이고, 제1 레이어 직후의 제2 레이어가 Conv 레이어이면, 제1 레이어로부터 출력되는 피쳐 맵 데이터의 균등화 패턴을 스케일링으로 식별할 수 있다.
또는, 프로세서(120)는 제1 신경망 모델에 포함된 복수의 레이어 중 제3 레이어가 Conv 레이어이고, 제3 레이어 직후의 제4 레이어가 Dconv 레이어이면, 제3 레이어로부터 출력되는 피쳐 맵 데이터의 균등화 패턴을 스케일링 및 시프트로 식별할 수도 있다.
프로세서(120)는 식별된 균등화 패턴에 기초하여 제1 신경망 모델에 포함된 복수의 레이어 각각으로부터 출력되는 피쳐 맵 데이터에서 채널 별 데이터를 균등화하기 위한 스케일링 또는 시프트 중 적어도 하나에 대한 정보를 획득할 수 있다(compute scale/shift, 1820). 여기서, 프로세서(120)는 피쳐 맵 데이터를 획득하기 위해 테스트 데이터를 제1 신경망 모델에 입력할 수 있다.
예를 들어, 프로세서(120)는 제1 신경망 모델에 포함된 복수의 레이어 중 제1 레이어로부터 출력되는 피쳐 맵 데이터를 스케일링하는 것으로 식별한 경우, 피쳐 맵 데이터에 포함된 채널 중 최대 레인지를 갖는 채널을 식별하고, 최대 레인지에 기초하여 나머지 채널을 스케일링하기 위한 정보를 획득할 수 있다.
프로세서(120)는 스케일링 또는 시프트 중 적어도 하나에 대한 정보에 기초하여 적어도 하나의 레이어 각각을 업데이트하여 피쳐 맵 데이터의 채널 별 데이터가 균등화된 제2 신경망 모델을 획득할 수 있다(apply scale/shift, 1830).
도 19는 본 개시의 일 실시 예에 따른 균등화 패턴을 식별하는 방법을 설명하기 위한 블록도이다.
도 8 내지 도 10에서 설명한 바와 같이, 스케일링 및 시프트를 모두 수행하는 경우의 성능이 스케일링만을 수행하는 경우 또는 시프트만을 수행하는 경우보다 좋을 수 있다.
그에 따라, 프로세서(120)는 도 19에 도시된 바와 같이, 제1 신경망 모델에 포함된 복수의 레이어 중 인접한 레이어가 스케일링 및 시프트를 모두 수행할 수 있는지 식별하고, 불가능한 경우, 스케일링만을 수행할 수 있는지 식별하고, 불가능한 경우, 시프트만을 수행할 수 있는지 식별할 수 있다(1910).
프로세서(120)는 제1 신경망 모델에 포함된 복수의 레이어 중 인접한 레이어 전부에 대한 균등화 패턴이 식별되면(1920), 각 균등화 패턴을 저장할 수 있다(1930). 예를 들어, 프로세서(120)는 피쳐 맵 데이터를 출력하는 레이어를 "front"로서 저장하고, 피쳐 맵 데이터를 입력받는 레이어를 "back"로서 저장하고, 균등화 타입을 ScaleOnly, ShiftOnly 및 ScaleShift 중 하나로서 저장할 수 있다.
도 20은 본 개시의 일 실시 예에 따른 피쳐 맵 데이터의 획득 방법을 설명하기 위한 블록도이다.
프로세서(120)는 테스트 데이터를 제1 신경망 모델에 입력하여 피쳐 맵 데이터를 획득할 수 있다(2010).
예를 들어, 프로세서(120)는 테스트 데이터를 제1 신경망 모델에 입력하고, "front"로서 저장된 레이어로부터 출력되는 데이터를 "front"에 대응되는 레이어와 함께 피쳐 맵 데이터로서 저장할 수 있다.
도 21 및 도 22는 본 개시의 일 실시 예에 따른 신경망 모델의 업데이트 동작을 설명하기 위한 블록도들이다.
프로세서(120)는 도 21에 도시된 바와 같이, 피쳐 맵 데이터 전체로부터 최대 레인지를 갖는 채널을 식별하고, 최대 레인지를 갖는 채널의 최소값(min_t) 및 최대값(max_t)을 식별하고, 개별 채널의 최소값(min_c) 및 최대값(max_c)을 식별할 수 있다(2110).
프로세서(120)는 피쳐 맵 데이터에 대해 스케일링만을 수행하는 경우, 최대 레인지를 갖는 채널의 최소값 및 최대값에 기초하여 개별 채널의 스케일링 배수를 식별할 수 있다(2120-1). 예를 들어, 프로세서(120)는 최대 레인지를 갖는 채널의 최소값 및 최대값이 모두 0이면, 1을 스케일링 배수로 식별하고, 최대 레인지를 갖는 채널의 최소값이 0이고 최대값이 0이 아니면, 최대 레인지를 갖는 채널의 최대값 및 개별 채널의 최대값에 기초하여 스케일링 배수를 식별하고, 최대 레인지를 갖는 채널의 최대값이 0이고 최소값이 0이 아니면, 최대 레인지를 갖는 채널의 최소값 및 개별 채널의 최소값에 기초하여 스케일링 배수를 식별하고, 최대 레인지를 갖는 채널의 최소값 및 최대값이 모두 0이 아니면, 최대 레인지를 갖는 채널의 최소값 및 최대값, 개별 채널의 최소값 및 최대값에 기초하여 스케일링 배수를 식별할 수 있다.
프로세서(120)는 피쳐 맵 데이터에 대해 시프트만을 수행하는 경우, 개별 채널의 최소값 및 최대값에 기초하여 시프트 값을 식별할 수 있다(2120-2).
프로세서(120)는 피쳐 맵 데이터에 대해 스케일링 및 시프트를 수행하는 경우, 최대 레인지를 갖는 채널의 최소값 및 최대값, 개별 채널의 최소값 및 최대값에 기초하여 스케일링 배수를 식별하고, 스케일링 배수, 개별 채널의 최소값 및 최대값에 기초하여 시프트 값을 식별할 수 있다(2120-3).
프로세서(120)는 스케일링 배수 또는 시프트 값 중 적어도 하나에 기초하여 직전 레이어 및 직후 레이어를 업데이트할 수 있다(2130).
예를 들어, 프로세서(120)는 도 22에 도시된 바와 같이, 피쳐 맵 데이터에 대해 스케일링 또는 시프트 중 적어도 하나를 수행하는 경우, 제1 오퍼레이터를 직전 레이어에 결합하고, 제1 오퍼레이터에 대응되는 제2 오퍼레이터를 직후 레이어에 결합할 수 있다. 여기서, 제1 오퍼레이터는 피쳐 맵 데이터에 수행되는 스케일링 또는 시프트 중 적어도 하나에 기초하여 결정될 수 있다(2210).
도 23 및 도 24는 본 개시의 일 실시 예에 따른 성능 개선을 설명하기 위한 도면들이다.
도 23에서는 좌측이 원본이고, 우측이 스케일링만을 수행한 경우를 도시하였고, 도 24에서는 좌측이 원본이고, 우측이 시프트만을 수행한 경우를 도시하였다.
피쳐 맵 데이터의 분포는 도 23 및 도 24 모두에서 좌측보다 우측이 좀더 균일해졌으며, 그에 따라 양자화에 따른 오차를 줄일 수 있다.
도 25는 본 개시의 일 실시 예에 따른 전자 장치의 제어 방법을 설명하기 위한 흐름도이다.
먼저, 적어도 하나의 양자화가 가능한 레이어를 포함하는 제1 신경망 모델을 획득한다(S2510). 그리고, 제1 신경망 모델에 대한 입력으로 사용되는 테스트 데이터를 획득한다(S2520). 그리고, 테스트 데이터를 제1 신경망 모델에 입력하여 제1 신경망 모델에 포함된 적어도 하나의 레이어 각각으로부터 피쳐 맵(feature map) 데이터를 획득한다(S2530). 그리고, 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터에서 채널 별 데이터를 균등화하기 위한 스케일링(scaling) 또는 시프트(shift) 중 적어도 하나에 대한 정보를 획득한다(S2540). 그리고, 획득된 정보에 기초하여 적어도 하나의 레이어 각각을 업데이트하여 피쳐 맵 데이터의 채널 별 데이터가 균등화된 제2 신경망 모델을 획득한다(S2550). 그리고, 테스트 데이터에 기초하여 제2 신경망 모델을 양자화하여 제1 신경망 모델에 대응되는 양자화된 제3 신경망 모델을 획득한다(S2560).
또한, 스케일링 또는 시프트 중 적어도 하나에 대한 정보를 획득하는 단계(S2540)는 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터의 이전 레이어의 타입 및 이후 레이어의 타입에 기초하여 스케일링 또는 시프트 중 적어도 하나에 대한 정보를 획득할 수 있다.
그리고, 제2 신경망 모델을 획득하는 단계(S2550)는 적어도 하나의 레이어 중 제1 레이어의 피쳐 맵 데이터를 스케일링하는 경우, 채널 별 스케일링 데이터를 제1 레이어의 웨이트(weight) 및 바이어스(bias)에 채널 별로 곱셈하여 제1 레이어를 업데이트하고, 제1 레이어 직후의 제2 레이어를 채널 별 스케일링 데이터로 채널 별로 나누어 제2 레이어를 업데이트할 수 있다.
또한, 제2 신경망 모델을 획득하는 단계(S2550)는 적어도 하나의 레이어 중 제3 레이어의 피쳐 맵 데이터를 시프트하는 경우, 채널 별 시프트 데이터를 제3 레이어의 바이어스에 채널 별로 더하여 제3 레이어를 업데이트하고, 제3 레이어 직후의 제4 레이어의 웨이트에 채널 별 시프트 데이터를 채널 별로 곱셈하고, 곱셈 결과를 채널 별로 더하고, 제4 레이어의 바이어스에 채널 별 덧셈 결과를 빼서 제4 레이어를 업데이트할 수 있다.
그리고, 제2 신경망 모델을 획득하는 단계(S2550)는 적어도 하나의 레이어 중 제5 레이어의 피쳐 맵 데이터를 스케일링 및 시프트하는 경우, 제5 레이어의 피쳐 맵 데이터에 대해 스케일링을 적용하고, 스케일링이 적용된 피쳐 맵 데이터에 대해 시프트를 적용할 수 있다.
또한, 스케일링 또는 시프트 중 적어도 하나에 대한 정보를 획득하는 단계(S2540)는 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터 중 최대 레인지(range)를 갖는 채널에 기초하여 스케일링 또는 시프트 중 적어도 하나에 대한 정보를 획득할 수 있다.
그리고, 제2 신경망 모델을 획득하는 단계(S2550)는 적어도 하나의 레이어 각각에 대하여, 최대 레인지를 갖는 채널의 레인지를 시프트하고, 시프트된 레인지에 기초하여 나머지 채널의 레인지를 스케일링 및 시프트할 수 있다.
또한, 스케일링 또는 시프트 중 적어도 하나에 대한 정보를 획득하는 단계(S2540)는 적어도 하나의 레이어 중 제1 레이어의 피쳐 맵 데이터를 스케일링하는 경우, 제1 레이어의 피쳐 맵 데이터 중 최대 레인지를 갖는 채널을 제외한 나머지 채널의 레인지가 제1 레이어의 피쳐 맵 데이터 중 최대 레인지를 갖는 채널의 레인지보다 기설정된 값 이상 작도록 스케일링에 대한 정보를 획득할 수 있다.
그리고, 제3 신경망 모델을 획득하는 단계(S2560)는 제2 신경망 모델에 포함된 적어도 하나의 레이어는 채널 별로 양자화하고, 제2 신경망 모델에 포함된 적어도 하나의 레이어 각각의 피쳐 맵 데이터는 피쳐 맵 데이터 별로 양자화하여 제3 신경망 모델을 획득할 수 있다.
또한, 제3 신경망 모델을 획득하는 단계(S2560)는 affine transformation을 통해 제2 신경망 모델을 양자화할 수 있다.
이상과 같은 본 개시의 다양한 실시 예에 따르면, 전자 장치는 제1 신경망 모델을 피쳐 맵 데이터를 균등화하기 위한 제2 신경망 모델로 업데이트하고, 제2 신경망 모델을 양자화하여, 데이터 용량을 줄이면서도 양자화에 따른 오차를 줄일 수 있다.
한편, 이상에서는 전자 장치가 신경망 모델을 양자화하는 것으로 설명하였으나, 이에 한정되는 것은 아니다. 예를 들어, 전자 장치가 제1 신경망 모델을 업데이트하여 제2 신경망 모델을 획득하고, 서버가 제2 신경망 모델을 양자화하여 제3 신경망 모델을 획득할 수도 있다.
또한, 이상에서는 전자 장치가 균등화 및 양자화를 수행하는 것으로 설명하였으나, 균등화만을 수행할 수도 있다. 예를 들어, 전자 장치는 제1 신경망 모델에 대한 입력으로 사용되는 테스트 데이터를 획득하고, 테스트 데이터를 제1 신경망 모델에 입력하여 제1 신경망 모델에 포함된 적어도 하나의 레이어 각각으로부터 피쳐 맵 데이터를 획득하고, 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터에서 채널 별 데이터를 균등화하기 위한 스케일링 또는 시프트 중 적어도 하나에 대한 정보를 획득하고, 획득된 정보에 기초하여 적어도 하나의 레이어 각각을 업데이트하여 피쳐 맵 데이터의 채널 별 데이터가 균등화된 제2 신경망 모델을 획득할 수도 있다. 즉, 전자 장치는 양자화와 관련된 모델이 아닌 신경망 모델에 대하여도 균등화를 수행할 수도 있다.
한편, 본 개시의 일시 예에 따르면, 이상에서 설명된 다양한 실시 예들은 기기(machine)(예: 컴퓨터)로 읽을 수 있는 저장 매체(machine-readable storage media)에 저장된 명령어를 포함하는 소프트웨어로 구현될 수 있다. 기기는, 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 동작이 가능한 장치로서, 개시된 실시 예들에 따른 전자 장치(예: 전자 장치(A))를 포함할 수 있다. 명령이 프로세서에 의해 실행될 경우, 프로세서가 직접, 또는 프로세서의 제어 하에 다른 구성요소들을 이용하여 명령에 해당하는 기능을 수행할 수 있다. 명령은 컴파일러 또는 인터프리터에 의해 생성 또는 실행되는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.
또한, 본 개시의 일 실시 예에 따르면, 이상에서 설명된 다양한 실시 예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 온라인으로 배포될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
또한, 본 개시의 일 실시 예에 따르면, 이상에서 설명된 다양한 실시 예들은 소프트웨어(software), 하드웨어(hardware) 또는 이들의 조합을 이용하여 컴퓨터(computer) 또는 이와 유사한 장치로 읽을 수 있는 기록 매체 내에서 구현될 수 있다. 일부 경우에 있어 본 명세서에서 설명되는 실시 예들이 프로세서 자체로 구현될 수 있다. 소프트웨어적인 구현에 의하면, 본 명세서에서 설명되는 절차 및 기능과 같은 실시 예들은 별도의 소프트웨어로서 구현될 수도 있다. 소프트웨어 각각은 본 명세서에서 설명되는 하나 이상의 기능 및 동작을 수행할 수 있다.
한편, 상술한 다양한 실시 예들에 따른 기기의 프로세싱 동작을 수행하기 위한 컴퓨터 명령어(computer instructions)는 비일시적 컴퓨터 판독 가능 매체(non-transitory computer-readable medium)에 저장될 수 있다. 이러한 비일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 명령어는 특정 기기의 프로세서에 의해 실행되었을 때 상술한 다양한 실시 예에 따른 기기에서의 처리 동작을 특정 기기가 수행하도록 한다. 비일시적 컴퓨터 판독 가능 매체란 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 비일시적 컴퓨터 판독 가능 매체의 구체적인 예로는, CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등이 있을 수 있다.
또한, 상술한 다양한 실시 예들에 따른 구성 요소(예: 모듈 또는 프로그램) 각각은 단수 또는 복수의 개체로 구성될 수 있으며, 전술한 해당 서브 구성 요소들 중 일부 서브 구성 요소가 생략되거나, 또는 다른 서브 구성 요소가 다양한 실시 예에 더 포함될 수 있다. 대체적으로 또는 추가적으로, 일부 구성 요소들(예: 모듈 또는 프로그램)은 하나의 개체로 통합되어, 통합되기 이전의 각각의 해당 구성 요소에 의해 수행되는 기능을 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따른, 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱하게 실행되거나, 적어도 일부 동작이 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
이상에서는 본 개시의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 개시는 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 개시의 요지를 벗어남이 없이 당해 개시에 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 개시의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
100 : 전자 장치 110 : 메모리
120 : 프로세서 130 : 통신 인터페이스
140 : 디스플레이 150 : 사용자 인터페이스
160 : 마이크 170 : 스피커
180 : 카메라

Claims (20)

  1. 전자 장치에 있어서,
    메모리;
    상기 메모리에 연결되어 상기 전자 장치를 제어하는 적어도 하나의 프로세서;를 포함하며,
    상기 프로세서는,
    적어도 하나의 양자화가 가능한 레이어를 포함하는 제1 신경망 모델을 획득하고,
    상기 제1 신경망 모델에 대한 입력으로 사용되는 테스트 데이터를 획득하고,
    상기 테스트 데이터를 상기 제1 신경망 모델에 입력하여 상기 제1 신경망 모델에 포함된 적어도 하나의 레이어 각각으로부터 피쳐 맵(feature map) 데이터를 획득하고,
    상기 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터에서 채널 별 데이터를 균등화하기 위한 스케일링(scaling) 또는 시프트(shift) 중 적어도 하나에 대한 정보를 획득하고,
    상기 획득된 정보에 기초하여 상기 적어도 하나의 레이어 각각을 업데이트하여 피쳐 맵 데이터의 채널 별 데이터가 균등화된 제2 신경망 모델을 획득하고,
    상기 테스트 데이터에 기초하여 상기 제2 신경망 모델을 양자화하여 상기 제1 신경망 모델에 대응되는 양자화된 제3 신경망 모델을 획득하는, 전자 장치.
  2. 제1항에 있어서,
    상기 프로세서는,
    상기 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터의 이전 레이어의 타입 및 이후 레이어의 타입에 기초하여 상기 스케일링 또는 상기 시프트 중 적어도 하나에 대한 정보를 획득하는, 전자 장치.
  3. 제1항에 있어서,
    상기 프로세서는,
    상기 적어도 하나의 레이어 중 제1 레이어의 피쳐 맵 데이터를 스케일링하는 경우, 채널 별 스케일링 데이터를 상기 제1 레이어의 웨이트(weight) 및 바이어스(bias)에 채널 별로 곱셈하여 상기 제1 레이어를 업데이트하고, 상기 제1 레이어 직후의 제2 레이어를 상기 채널 별 스케일링 데이터로 채널 별로 나누어 상기 제2 레이어를 업데이트하는, 전자 장치.
  4. 제1항에 있어서,
    상기 프로세서는,
    상기 적어도 하나의 레이어 중 제3 레이어의 피쳐 맵 데이터를 시프트하는 경우, 채널 별 시프트 데이터를 상기 제3 레이어의 바이어스에 채널 별로 더하여 상기 제3 레이어를 업데이트하고, 상기 제3 레이어 직후의 제4 레이어의 웨이트에 채널 별 시프트 데이터를 채널 별로 곱셈하고, 상기 곱셈 결과를 채널 별로 더하고, 상기 제4 레이어의 바이어스에 상기 채널 별 덧셈 결과를 빼서 상기 제4 레이어를 업데이트하는, 전자 장치.
  5. 제1항에 있어서,
    상기 프로세서는,
    상기 적어도 하나의 레이어 중 제5 레이어의 피쳐 맵 데이터를 스케일링 및 시프트하는 경우, 상기 제5 레이어의 피쳐 맵 데이터에 대해 스케일링을 적용하고, 상기 스케일링이 적용된 피쳐 맵 데이터에 대해 시프트를 적용하는, 전자 장치.
  6. 제1항에 있어서,
    상기 프로세서는,
    상기 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터 중 최대 레인지(range)를 갖는 채널에 기초하여 상기 스케일링 또는 상기 시프트 중 적어도 하나에 대한 정보를 획득하는, 전자 장치.
  7. 제6항에 있어서,
    상기 프로세서는,
    상기 적어도 하나의 레이어 각각에 대하여, 상기 최대 레인지를 갖는 채널의 레인지를 시프트하고, 상기 시프트된 레인지에 기초하여 나머지 채널의 레인지를 스케일링 및 시프트하는, 전자 장치.
  8. 제6항에 있어서,
    상기 프로세서는,
    상기 적어도 하나의 레이어 중 제1 레이어의 피쳐 맵 데이터를 스케일링하는 경우, 상기 제1 레이어의 피쳐 맵 데이터 중 상기 최대 레인지를 갖는 채널을 제외한 나머지 채널의 레인지가 상기 제1 레이어의 피쳐 맵 데이터 중 최대 레인지를 갖는 채널의 레인지보다 기설정된 값 이상 작도록 상기 스케일링에 대한 정보를 획득하는, 전자 장치.
  9. 제1항에 있어서,
    상기 프로세서는,
    상기 제2 신경망 모델에 포함된 적어도 하나의 레이어는 채널 별로 양자화하고, 상기 제2 신경망 모델에 포함된 적어도 하나의 레이어 각각의 피쳐 맵 데이터는 피쳐 맵 데이터 별로 양자화하여 상기 제3 신경망 모델을 획득하는, 전자 장치.
  10. 제1항에 있어서,
    상기 프로세서는,
    affine transformation을 통해 상기 제2 신경망 모델을 양자화하는, 전자 장치.
  11. 전자 장치의 제어 방법에 있어서,
    적어도 하나의 양자화가 가능한 레이어를 포함하는 제1 신경망 모델을 획득하는 단계;
    상기 제1 신경망 모델에 대한 입력으로 사용되는 테스트 데이터를 획득하는 단계;
    상기 테스트 데이터를 상기 제1 신경망 모델에 입력하여 상기 제1 신경망 모델에 포함된 적어도 하나의 레이어 각각으로부터 피쳐 맵(feature map) 데이터를 획득하는 단계;
    상기 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터에서 채널 별 데이터를 균등화하기 위한 스케일링(scaling) 또는 시프트(shift) 중 적어도 하나에 대한 정보를 획득하는 단계;
    상기 획득된 정보에 기초하여 상기 적어도 하나의 레이어 각각을 업데이트하여 피쳐 맵 데이터의 채널 별 데이터가 균등화된 제2 신경망 모델을 획득하는 단계; 및
    상기 테스트 데이터에 기초하여 상기 제2 신경망 모델을 양자화하여 상기 제1 신경망 모델에 대응되는 양자화된 제3 신경망 모델을 획득하는 단계;를 포함하는, 제어 방법.
  12. 제11항에 있어서,
    상기 스케일링 또는 상기 시프트 중 적어도 하나에 대한 정보를 획득하는 단계는,
    상기 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터의 이전 레이어의 타입 및 이후 레이어의 타입에 기초하여 상기 스케일링 또는 상기 시프트 중 적어도 하나에 대한 정보를 획득하는, 제어 방법.
  13. 제11항에 있어서,
    상기 제2 신경망 모델을 획득하는 단계는,
    상기 적어도 하나의 레이어 중 제1 레이어의 피쳐 맵 데이터를 스케일링하는 경우, 채널 별 스케일링 데이터를 상기 제1 레이어의 웨이트(weight) 및 바이어스(bias)에 채널 별로 곱셈하여 상기 제1 레이어를 업데이트하고, 상기 제1 레이어 직후의 제2 레이어를 상기 채널 별 스케일링 데이터로 채널 별로 나누어 상기 제2 레이어를 업데이트하는, 제어 방법.
  14. 제11항에 있어서,
    상기 제2 신경망 모델을 획득하는 단계는,
    상기 적어도 하나의 레이어 중 제3 레이어의 피쳐 맵 데이터를 시프트하는 경우, 채널 별 시프트 데이터를 상기 제3 레이어의 바이어스에 채널 별로 더하여 상기 제3 레이어를 업데이트하고, 상기 제3 레이어 직후의 제4 레이어의 웨이트에 채널 별 시프트 데이터를 채널 별로 곱셈하고, 상기 곱셈 결과를 채널 별로 더하고, 상기 제4 레이어의 바이어스에 상기 채널 별 덧셈 결과를 빼서 상기 제4 레이어를 업데이트하는, 제어 방법.
  15. 제11항에 있어서,
    상기 제2 신경망 모델을 획득하는 단계는,
    상기 적어도 하나의 레이어 중 제5 레이어의 피쳐 맵 데이터를 스케일링 및 시프트하는 경우, 상기 제5 레이어의 피쳐 맵 데이터에 대해 스케일링을 적용하고, 상기 스케일링이 적용된 피쳐 맵 데이터에 대해 시프트를 적용하는, 제어 방법.
  16. 제11항에 있어서,
    상기 스케일링 또는 상기 시프트 중 적어도 하나에 대한 정보를 획득하는 단계는,
    상기 적어도 하나의 레이어 각각으로부터 획득된 피쳐 맵 데이터 중 최대 레인지(range)를 갖는 채널에 기초하여 상기 스케일링 또는 상기 시프트 중 적어도 하나에 대한 정보를 획득하는, 제어 방법.
  17. 제16항에 있어서,
    상기 제2 신경망 모델을 획득하는 단계는,
    상기 적어도 하나의 레이어 각각에 대하여, 상기 최대 레인지를 갖는 채널의 레인지를 시프트하고, 상기 시프트된 레인지에 기초하여 나머지 채널의 레인지를 스케일링 및 시프트하는, 제어 방법.
  18. 제16항에 있어서,
    상기 스케일링 또는 상기 시프트 중 적어도 하나에 대한 정보를 획득하는 단계는,
    상기 적어도 하나의 레이어 중 제1 레이어의 피쳐 맵 데이터를 스케일링하는 경우, 상기 제1 레이어의 피쳐 맵 데이터 중 상기 최대 레인지를 갖는 채널을 제외한 나머지 채널의 레인지가 상기 제1 레이어의 피쳐 맵 데이터 중 최대 레인지를 갖는 채널의 레인지보다 기설정된 값 이상 작도록 상기 스케일링에 대한 정보를 획득하는, 제어 방법.
  19. 제11항에 있어서,
    상기 제3 신경망 모델을 획득하는 단계는,
    상기 제2 신경망 모델에 포함된 적어도 하나의 레이어는 채널 별로 양자화하고, 상기 제2 신경망 모델에 포함된 적어도 하나의 레이어 각각의 피쳐 맵 데이터는 피쳐 맵 데이터 별로 양자화하여 상기 제3 신경망 모델을 획득하는, 제어 방법.
  20. 제11항에 있어서,
    상기 제3 신경망 모델을 획득하는 단계는,
    affine transformation을 통해 상기 제2 신경망 모델을 양자화하는, 제어 방법.
KR1020230012016A 2023-01-30 2023-01-30 신경망 모델을 양자화하기 위한 전자 장치 및 그 제어 방법 KR20240119689A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020230012016A KR20240119689A (ko) 2023-01-30 2023-01-30 신경망 모델을 양자화하기 위한 전자 장치 및 그 제어 방법
PCT/KR2023/016866 WO2024162560A1 (ko) 2023-01-30 2023-10-27 신경망 모델을 양자화하기 위한 전자 장치 및 그 제어 방법
US18/519,860 US20240256843A1 (en) 2023-01-30 2023-11-27 Electronic apparatus for quantizing neural network model and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230012016A KR20240119689A (ko) 2023-01-30 2023-01-30 신경망 모델을 양자화하기 위한 전자 장치 및 그 제어 방법

Publications (1)

Publication Number Publication Date
KR20240119689A true KR20240119689A (ko) 2024-08-06

Family

ID=92147090

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230012016A KR20240119689A (ko) 2023-01-30 2023-01-30 신경망 모델을 양자화하기 위한 전자 장치 및 그 제어 방법

Country Status (2)

Country Link
KR (1) KR20240119689A (ko)
WO (1) WO2024162560A1 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110569967A (zh) * 2019-09-11 2019-12-13 山东浪潮人工智能研究院有限公司 一种基于算术编码的神经网络模型压缩加密方法及系统
CN113298843B (zh) * 2020-02-24 2024-05-14 中科寒武纪科技股份有限公司 数据量化处理方法、装置、电子设备和存储介质
US20210406682A1 (en) * 2020-06-26 2021-12-30 Advanced Micro Devices, Inc. Quantization of neural network models using data augmentation
CN112580805A (zh) * 2020-12-25 2021-03-30 三星(中国)半导体有限公司 神经网络模型的量化方法和量化神经网络模型的装置
CN113282535B (zh) * 2021-05-25 2022-11-25 北京市商汤科技开发有限公司 量化处理方法和装置、量化处理芯片

Also Published As

Publication number Publication date
WO2024162560A1 (ko) 2024-08-08

Similar Documents

Publication Publication Date Title
WO2020155907A1 (zh) 用于生成漫画风格转换模型的方法和装置
KR20170033398A (ko) 자동 발화 인식을 위한 외삽 이용 프레임 스키핑 및 수요 출력 신경망
US11308856B2 (en) Modular display apparatus and method for maintaining display performance
US20240289999A1 (en) Method, apparatus, device and storage medium for image generation
KR102659494B1 (ko) 전자 장치 및 그 제어 방법
US11538278B2 (en) Electronic apparatus and control method thereof
US20190341001A1 (en) Automatic application of mapping functions to video signals based on inferred parameters
US11151695B1 (en) Video denoising using neural networks with spatial and temporal features
US20220164923A1 (en) Electronic apparatus and controlling method thereof
KR20210028041A (ko) 전자 장치 및 그 제어 방법
US20210390314A1 (en) Display device for generating multimedia content, and operation method of the display device
US20210201142A1 (en) Electronic device and control method thereof
KR20240119689A (ko) 신경망 모델을 양자화하기 위한 전자 장치 및 그 제어 방법
US20240256843A1 (en) Electronic apparatus for quantizing neural network model and control method thereof
KR20240009108A (ko) 화질 개선을 수행하는 신경망 모델을 학습시키는 전자 장치 및 그 제어 방법
CN111798385B (zh) 图像处理方法及装置、计算机可读介质和电子设备
US20230153068A1 (en) Electronic apparatus and control method thereof
US20240196039A1 (en) Electronic apparatus for controlling peripheral device with remote control signal and control method thereof
US20230109358A1 (en) Electronic apparatus and control method thereof
KR20240025372A (ko) 영상 처리를 수행하기 위한 전자 장치 및 그 제어 방법
US20230395060A1 (en) Electronic apparatus, terminal apparatus and controlling method thereof
US20240073637A1 (en) Electronic apparatus for identifying position of user and control method thereof
KR20240040984A (ko) Ui 오브젝트를 포함하는 템플릿을 획득하기 위한 전자 장치 및 그 제어 방법
US12106487B2 (en) Feature prediction for efficient video processing
US20230128220A1 (en) Information processing apparatus, information processing terminal, method, program, and model