KR20200135059A - 데이터를 처리하는 방법 및 장치 - Google Patents

데이터를 처리하는 방법 및 장치 Download PDF

Info

Publication number
KR20200135059A
KR20200135059A KR1020190061458A KR20190061458A KR20200135059A KR 20200135059 A KR20200135059 A KR 20200135059A KR 1020190061458 A KR1020190061458 A KR 1020190061458A KR 20190061458 A KR20190061458 A KR 20190061458A KR 20200135059 A KR20200135059 A KR 20200135059A
Authority
KR
South Korea
Prior art keywords
data
result
weight
limit
values
Prior art date
Application number
KR1020190061458A
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 KR1020190061458A priority Critical patent/KR20200135059A/ko
Priority to US16/843,199 priority patent/US11301209B2/en
Publication of KR20200135059A publication Critical patent/KR20200135059A/ko
Priority to US17/689,454 priority patent/US20220188070A1/en

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/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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/02Comparing digital values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/74Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural 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

Abstract

데이터 처리 장치에서 데이터를 처리하는 방법은, 제 1 입력 데이터 및 필터에 포함된 가중치들로부터 생성된 가중치 데이터에 기초한 제 1 연산을 수행함에 따라 제 1 한계 데이터를 설정하고, 제 2 입력 데이터 및 상기 가중치 데이터에 기초한 제 2 연산의 중간 결과와 상기 제 1 한계 데이터를 비교하고, 상기 비교 결과에 기초하여 상기 제 2 연산의 계속 여부를 판단한다.

Description

데이터를 처리하는 방법 및 장치{METHOD AND APPARATUS WITH DATA PROCESSING}
데이터를 처리하는 방법 및 장치에 관한다. 구체적으로, 뉴럴 네트워크의 처리에 있어서 곱의 합 연산을 수행하는 방법 및 장치에 관한다.
뉴럴 네트워크(neural network)는 시냅스의 결합으로 네트워크를 형성한 인공 뉴런이 학습을 통해 시냅스의 결합 세기를 변화시켜, 문제 해결 능력을 가지는 모델 전반을 의미한다. 뉴럴 네트워크를 처리하는 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 뉴럴 네트워크에서 ReLU 활성 함수가 많이 사용되는데, ReLU 활성 함수에는 컨볼루션 연산의 최종 결과값이 입력된다. ReLU 활성 함수는 입력 값이 음수라면 0을 출력하고 양수라면 입력을 그대로 출력하게 된다. 따라서, ReLU 활성 함수에 입력되는 컨볼루션 연산의 최종 결과값이 음수인지를 빠르게 판단할 수 있다면 연산량을 효과적으로 줄일 수 있다.
다만, 컨볼루션 연산의 최종 결과값의 부호가 음이라는 것이 정확하게 판단된 경우에 0을 출력하게 되면 연산량이 감소되는 정도가 제한적일 수 있다. 따라서, 연산의 최종 결과값의 부호가 음일 것으로 예측되는 경우에 0을 출력하도록 하여, 연산량을 충분히 감소시키면서도 뉴럴 네트워크의 정확도 손실을 최소화하는 처리 방식이 요구된다.
데이터를 처리하는 방법 및 장치를 제공하는데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는 데 있다.
해결하고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따르면, 데이터를 처리하는 방법은, 제 1 입력 데이터 및 필터에 포함된 가중치들로부터 생성된 가중치 데이터에 기초한 제 1 연산을 수행함에 따라 제 1 한계 데이터를 설정하는 단계; 제 2 입력 데이터 및 상기 가중치 데이터에 기초한 제 2 연산의 중간 결과와 상기 제 1 한계 데이터를 비교하는 단계; 및 상기 비교 결과에 기초하여 상기 제 2 연산의 계속 여부를 판단하는 단계;를 포함한다.
다른 측면에 따르면, 데이터 처리 장치는, 메모리; 및 프로세서;를 포함하고,
상기 프로세서는, 제 1 입력 데이터 및 필터에 포함된 가중치들로부터 생성된 가중치 데이터에 기초한 제 1 연산을 수행함에 따라 제 1 한계 데이터를 설정하고, 제 2 입력 데이터 및 상기 가중치 데이터에 기초한 제 2 연산의 중간 결과와 상기 제 1 한계 데이터를 비교하고, 상기 비교 결과에 기초하여 상기 제 2 연산의 계속 여부를 판단한다.
또 다른 측면에 따르면, 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 포함할 수 있다.
도 1은 뉴럴 네크워크 아키텍처의 일 예를 설명하기 위한 도면이다.
도 2는 컨벌루션 레이어(convolution layer)의 일 예를 나타낸 도면이다.
도 3은 데이터를 처리하는 방법의 일 예를 나타내는 흐름도이다.
도 4는 부호화된 가중치의 일 예를 나타내는 도면이다.
도 5는 가중치 데이터의 일 예를 나타낸 것이다.
도 6은 비트 시리얼(bit serial) 연산 방식의 일 예를 나타내는 도면이다.
도 7은 제 1 입력 데이터 및 가중치 데이터에 기초한 연산에서 가중치 자릿수의 변화에 따른 연산 결과의 일 예를 나타낸 도면이다.
도 8은 제 1 한계 데이터를 설정하는 일 예를 나타내는 도면이다.
도 9는 바이어스(bias)을 설정하는 일 예를 나타내는 도면이다.
도 10은 제 1 한계 데이터를 설정하는 다른 예를 나타내는 도면이다.
도 11은 제 2 연산의 중간 결과와 제 1 한계 데이터를 비교하는 일 예를 나타내는 도면이다.
도 12는 제 2 연산의 중간 결과와 제 1 한계 데이터를 비교하는 다른 예를 나타내는 도면이다.
도 13은 데이터 처리 장치에서 한계 데이터에 기초하여 연산의 계속 여부를 판단하는 과정의 일 예를 설명하기 위한 흐름도이다.
도 14는 데이터 처리 장치에서 한계 데이터에 기초하여 연산의 계속 여부를 판단하는 과정의 다른 예를 설명하기 위한 흐름도이다.
도 15는 데이터 처리 장치의 구성의 일 예를 도시한 블록도이다.
실시예들에서 사용되는 용어는 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 기술분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 임의로 선정된 용어도 있으며, 이 경우 해당 실시예의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 명세서에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 실시예들의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 그 중간에 다른 구성요소를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
명세서에 기재된 "구성된다" 또는 "포함한다" 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
이하 첨부된 도면들을 참조하면서 실시예들을 상세히 설명하기로 한다. 그러나 실시 예는 여러 가지 상이한 형태로 구현될 수 있으며 이하에서 설명하는 예에 한정되지 않는다.
도 1은 뉴럴 네크워크 아키텍처의 일 예를 설명하기 위한 도면이다.
도 1에 도시된 뉴럴 네트워크(1)는 딥 뉴럴 네트워크(Deep Neural Network, 이하 'DNN'이라고 함) 아키텍처의 일 예일 수 있다. DNN은 컨볼루션 뉴럴 네트워크(Convolutional Neural Networks, CNN), 리커런트 뉴럴 네트워크(Recurrent Neural Networks, RNN) 등 일 수 있으나 이에 한정되지 않는다. 예를 들어, 뉴럴 네트워크(1)는 입력 레이어(Layer 1), 4개의 히든 레이어들(Layer 2, Layer 3, Layer 4, Layer 5) 및 출력 레이어(Layer 6)를 포함하는 DNN일 수 있다.
뉴럴 네트워크(1)가 DNN 아키텍처로 구현된 경우 유효한 정보를 처리할 수 있는 많은 레이어들을 포함할 수 있다. 따라서, 뉴럴 네트워크(1)는 싱글 레이어를 포함하는 뉴럴 네트워크보다 복잡한 데이터 집합들을 처리할 수 있다. 한편, 도 1에는 뉴럴 네트워크(1)가 6개의 레이어들을 포함하는 것으로 도시되어 있으나, 이는 예시에 불과할 뿐 뉴럴 네트워크(1)는 더 적거나 많은 레이어들을 포함할 수 있다. 즉, 뉴럴 네트워크(1)는 도 1에 도시된 것과는 다른, 다양한 구조의 레이어들을 포함할 수 있다.
도 2는 컨벌루션 레이어(convolution layer)의 일 예를 나타낸 도면이다.
도 2에는 컨볼루션 레이어(2)의 일부가 도시되어있다. 다만, 뉴럴 네트워크는 도 2에 도시된 컨볼루션 레이어(2) 외에도, 풀링 레이어(pooling layer), 풀리 커넥티드(fully connected) 레이어 등을 더 포함할 수 있다. 도 2의 컨볼루션 레이어(2)는 Ix Х Iy Х Iz의 사이즈를 갖는 입력 액티베이션 맵(210) (Input activation map), Fx Х Fy Х Iz의 사이즈를 갖는 가중치(weight) 필터(220), 그리고 Ox Х Oy Х Oz의 사이즈를 갖는 출력 액티베이션 맵(230) (Output activation map)을 포함한다.
입력 액티베이션 맵(210), 가중치 필터(220), 출력 액티베이션 맵(230)은 각각 입력 액티베이션 값들, 가중치 값들, 출력 액티베이션 값들로 구성될 수 있다. 입력 액티베이션 맵(210)은 가중치 필터(220)와 컨벌루션 연산이 수행되고, 그 결과 출력 액티베이션 맵(230)이 생성된다. 예를 들어, 가중치 필터(220)와 입력 액티베이션 맵(210)은 슬라이딩 윈도우(sliding window) 방식으로 연산될 수 있다. 구체적으로, 슬라이딩 윈도우 내의 입력 액티베이션들과 가중치 필터(220) 내의 가중치들의 컨벌루션 연산이 수행된다. 출력 액티베이션 맵(230)은 다시 입력 액티베이션 맵(210)이 되어 가중치 필터(220)와 컨벌루션 연산이 수행된다. 이러한 컨벌루션 연산이 반복적으로 수행된다.
도 2에는 하나의 가중치 필터(220)만이 도시되어 있으나, 복수의 가중치 필터(220)들이 입력 액티베이션 맵(210)과 컨볼루션 연산이 수행되어, 출력 액티베이션 맵(230)을 생성할 수도 있다.
상술한 연산은 간단하게 입력 액티베이션과 가중치의 곱의 합(sum of product) 형태로 표현할 수 있다. 아래의 식은 입력 액티베이션 a와 가중치 w의 곱셈 N개가 더해지는 곱의 합 연산을 표현한 식이다.
Figure pat00001
상술한 수학식 1 에서, ai는 i번째 입력 액티베이션을, wi는 i번째 가중치를, S는 곱의 합 연산의 결과값을 의미한다.
뉴럴 네트워크에서 ReLU (rectified linear unit) 활성함수의 입력 값은 컨볼루션 레이어(2)나 풀리 커넥티드 레이어에서 연산의 결과 값일 수 있다. ReLU 활성 함수는 f(x) = max(0,x)로 정의되며, 입력이 음수이면 결과로 0이 출력되고, 입력이 양수이면 결과로 입력이 그대로 출력된다. 따라서, 만약 연산이 완료되기 전에 연산의 최종 결과값의 부호가 음인 것을 알 수 있다면, 연산을 완료할 필요 없이 0을 출력할 수 있으므로 연산량을 줄일 수 있다.
이 때, 연산의 최종 결과값의 부호가 음이라는 것이 정확하게 판단된 경우에만 0을 출력하면, 뉴럴 네트워크의 정확도에 영향을 주지 않을 수 있다. 그러나, 연산의 최종 결과값의 부호가 음이라는 것을 정확하게 판단하는 경우에는, 연산량이 감소되는 정도가 제한적일 수 있다.
따라서, 데이터 처리 장치는 연산의 중간 결과값의 크기 또는 연산의 중간 결과값이 감소하는 정도를 기 설정된 한계 데이터와 비교하여, 연산의 최종 결과값의 부호가 음일 것으로 예측되는 경우에 0이 출력되도록 할 수 있다. 이 때, 기 설정된 한계 데이터는 0을 초과하는 값에 대응하는 데이터를 포함할 수 있다.
이에 따라, 한계 데이터를 적절하게 설정함에 따라 뉴럴 네트워크의 정확도의 손실은 최소화하는 동시에 연산량을 크게 감소시킬 수 있다. 이하, 도 3 내지 도 16을 참조하여, 데이터 처리 장치가 동작하는 예에 대하여 설명한다.
도 3은 데이터를 처리하는 방법의 일 예를 나타내는 흐름도이다.
도 3을 참조하면, 데이터를 처리하는 방법은 도 15에 도시된 데이터 처리 장치(1500)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라 하더라도 도 15에 도시된 데이터 처리 장치(1500)에 관하여 후술할 내용은 도 3의 방법에도 적용됨을 알 수 있다.
310 단계에서, 데이터 처리 장치(1500)는 제 1 입력 데이터 및 필터에 포함된 가중치들로부터 생성된 가중치 데이터에 기초한 제 1 연산을 수행함에 따라 제 1 한계 데이터를 설정할 수 있다.
제 1 입력 데이터는 입력 액티베이션들이 블록화된 데이터이다. 예를 들어, 데이터 전처리 장치(1520)는 입력 액티베이션 맵에 포함된 입력 액티베이션들을 블록화하여 제 1 입력 데이터를 생성할 수 있다. 따라서, 제 1 입력 데이터는 적어도 하나의 입력 액티베이션 블록들을 포함할 수 있다. 이 때, 입력 액티베이션 맵은 기 입력된 이미지 또는 제 1 한계 데이터가 설정된 후 데이터 처리 장치(1500)에 입력될 이미지의 일부로부터 생성될 수 있다.
데이터 전처리 장치(1520)는 입력 액티베이션 맵에 포함된 x, y 좌표가 동일한 입력 액티베이션들을 모아 블록화할 수 있다. 예를 들어, 데이터 전처리 장치(1520)는 x, y 좌표가 모두 1이고 z의 좌표가 1부터 k(k는 임의의 자연수)인 입력 액티베이션들을 모아 블록을 형성할 수 있다.
한편, 가중치 데이터는 부호화된 가중치들의 동일한 자리에 대응하는 값들에 기초하여 생성될 수 있으며, 가중치들은 반전된 2의 보수 고정소수점 형식에 기초하여 부호화될 수 있다. 이하, 도 4를 참조하여 반전된 2의 보수 고정소수점 에 기초한 부호화에 관하여 설명하고, 도 5를 참조하여 부호화된 가중치들로부터 가중치 데이터를 생성하는 것에 관하여 설명한다.
도 4는 부호화된 가중치의 일 예를 나타내는 도면이다.
고정 소수점 형식은 소수점의 위치가 고정되어 있다고 가정하고 수치를 표현하는 방식이다. 도 4는 가중치 Wi 를 고정 소수점 형식으로 부호화한 것이며, 0번째 자리(410)의 Wi,0 는 가중치 Wi 의 가장 작은 자릿수(LSB, least significant bit)에 해당하는 비트이고 M-1번째 자리(420)의 Wi,M-1 는 가중치 Wi 의 가장 큰 자릿수(MSB, most significant bit)에 해당하는 비트이다.
2의 보수 고정 소수점(two's complement representation) 형식에 의하여 부호화가 되면, MSB가 음수이고 나머지 자릿수가 양수인 형태가 된다. 따라서 가중치 Wi 는 일반적인 2의 보수 고정소수점 형식으로 부호화된다면 아래의 식과 같이 표현할 수 있다.
Figure pat00002
상술한 수학식 2에서, Sj는 가중치의 j번째 자릿수에 해당하는 부호에 의하여 결정되고, Wi,j는 가중치 Wi의 j 번째 자릿수에 해당하는 비트의 값을 의미한다.
반전된 2의 보수 고정 소수점(inverted two's complement representation) 형식에 의하여 부호화가 되면, MSB가 양수이고 나머지 자릿수가 음수인 형태가 된다. 가중치 Wi 를 반전된 2의 보수 고정소수점 형식으로 부호화된다면 다음과 같이 표현할 수 있다.
Figure pat00003
상술한 수학식 3에서, Sj는 가중치의 j번째 자릿수에 해당하는 부호에 의하여 결정되고, Wi,j는 가중치 Wi의 j 번째 자릿수에 해당하는 비트의 값을 의미한다.
데이터 전처리 장치(1520)는 상술한 반전된 2의 보수 고정 소수점 형식을 이용하여 필터에 포함된 가중치들 각각을 부호화할 수 있으며, 부호화된 가중치들로부터 가중치 데이터를 생성할 수 있다.
도 5는 가중치 데이터의 일 예를 나타낸 것이다.
데이터 전처리 장치(1520)는 부호화된 가중치들의 동일한 자리에 대응하는 값들을 이용하여 가중치 데이터를 생성할 수 있다.
예를 들어, 데이터 전처리 장치(1520)는 반전된 2의 보수 고정 소수점 형식을 이용하여 부호화된 가중치들의 동일한 자리에 대응하는 값을 모아 블록화할 수 있다. 한편, 블록화되는 가중치들은 하나의 필터에 포함되고 x,y 좌표가 동일한 가중치들에 해당할 수 있다. 가중치 데이터의 예는 도 11 및 도 12를 참조하여 후술한다.
예를 들어, 도 5에서 첫 번째 블록(510)은 x, y 좌표가 모두 1이고 z의 좌표가 1부터 k인 가중치들 각각의 MSB 에 대응하는 비트들을 모은 것이다. 마지막 블록(520)은 x, y 좌표가 모두 1이고 z의 좌표가 1부터 k인 가중치들 각각의 LSB 에 대응하는 비트들을 모은 것이다.
한편, 제 1 입력 데이터 및 가중치 데이터는 비트 시리얼(bit serial) 방식으로 연산이 수행될 수 있다. 도 6에서는 비트 시리얼 연산 방식과 관련하여 상세히 설명하도록 한다.
도 6은 비트 시리얼(bit serial) 연산 방식의 일 예를 나타내는 도면이다.
도 6에서, 필터에 포함된 가중치들 W0 내지 WN-1은 각각 반전된 2의 보수 고정소수점 형식으로 부호화되어 있다고 가정한다. a0 내지 aN-1는 입력 액티베이션들에 해당할 수 있다.
비트 시리얼 연산 방식을 이용하여 가중치들과 입력 액티베이션들 간 컨볼루션 연산을 수행하는 경우, 각 가중치의 MSB부터 LSB에 해당하는 비트들은 순차적으로 연산에 이용될 수 있다.
예를 들어, 가중치 W0부터 WN-1까지의 각 MSB에 해당하는 가중치 비트들에 기초하여, 입력 액티베이션 a0부터 aN-1 각각이 덧셈기(710)에 입력될지 여부가 결정된다. W0 의 MSB 에 해당하는 비트는 0이므로 a0는 덧셈기에 입력되지 않으며, WN-1의 MSB 에 해당하는 비트는 1이므로 aN-1은 덧셈기에 입력된다. 덧셈기(710)에 입력된 입력 액티베이션들이 모두 더해져 중간 결과값(S)이 결정된다.
그 후, 중간 결과값(S)은 자릿수 이동기(shifter)(620)를 통해 한 자릿수 이동한다. 자릿수 이동기에 의해 처리된 중간 결과값(S)는 가중치 W0부터 WN-1까지의 각 MSB 다음 자릿수에 해당하는 가중치 비트들에 기초하여 생성된 중간 결과값과 더해진다.
동일한 과정을 가중치 W0부터 WN-1까지의 각 LSB까지 반복하게 되면, 가중치들과 입력 액티베이션들 간 곱의 합 연산의 최종 결과값을 결정할 수 있다.
도 7은 제 1 입력 데이터 및 가중치 데이터에 기초한 제 1 연산에서 가중치 자릿수의 변화에 따른 연산 결과의 일 예를 나타낸 도면이다.
제 1 입력 데이터을 구성하는 입력 액티베이션들 각각의 값은 이전 레이어에서 ReLU 활성함수를 통과하여 나온 값이므로 그 값이 0 또는 양수이다.
반전된 2의 보수 고정 소수점 형식으로 부호화된 가중치는 MSB가 양수며 나머지 자릿수는 음수이다. 양수인 입력 액티베이션과 가중치의 MSB에 해당하는 비트의 연산 결과는 항상 양수이다. 따라서, 가중치 데이터에서 각 가중치들의 MSB에 대응하는 값들을 이용하여 생성된 가중치 블록과 제 1 입력 데이터 간의 연산 결과는 양수이다.
한편, 양수인 입력 액티베이션과 가중치의 MSB가 아닌 다른 자릿수의 비트의 연산 결과는 항상 음수이다. 따라서, 가중치 데이터에서 각 가중치들의 MSB가 아닌 자릿수에 대응하는 값들을 이용하여 생성된 가중치 블록들 각각과 제 1 입력 데이터 간의 연산 결과는 음수이다. 결과적으로, 제 1 입력 데이터 및 가중치 데이터에 기초한 제 1 연산에 따른 중간 결과값 S는, 연산에 이용되는 가중치 자릿수의 변화에 따라 도 7과 같이 점점 작아지게 된다.
한편, 데이터 처리 장치(1500)는 제 1 입력 데이터 및 가중치 데이터에 기초한 제 1 연산을 수행함에 따라 제 1 한계 데이터를 설정할 수 있다. 제 1 한계 데이터가 설정된 후, 데이터 처리 장치(1500)에는 컨볼루션 연산이 수행될 이미지가 새롭게 입력될 수 있다. 이 때 제 1 한계 데이터는, 새롭게 입력되는 이미지로부터 생성되는 제 2 입력 데이터 및 가중치 데이터에 기초한 연산의 중간 결과와 비교되는 기준(threshold)이 될 수 있다. 제 1 한계 데이터를 기준으로 하여, 새롭게 입력되는 이미지로부터 생성되는 입력 데이터 및 가중치 데이터에 기초한 연산의 최종 결과값의 부호가 음일 것으로 예측되는 경우에는 0이 출력되도록 할 수 있다.
예를 들어, 제 1 한계 데이터는 제 1 입력 데이터 및 가중치 데이터에 기초한 제 1 연산의 중간 결과값의 크기에 기초하여 설정될 수 있으며 이는 도 8 및 도 9에서 상세히 설명하도록 한다. 또는, 제 1 한계 데이터는 제 1 입력 데이터 및 가중치 데이터에 기초한 제 1 연산의 중간 결과값이 감소하는 정도에 기초하여 설정될 수 있으며 이는 도 10에서 후술하도록 한다.
도 8은 제 1 한계 데이터를 설정하는 일 예를 나타내는 도면이다.
제 1 한계 데이터가 제 1 입력 데이터 및 가중치 데이터에 기초한 제 1 연산의 중간 결과값의 크기에 기초하여 설정되는 경우, 제 1 한계 데이터에 대응되는 값은 데이터 처리 장치(1500)에 새롭게 입력되는 이미지로부터 생성되는 입력 데이터 및 가중치 데이터에 기초한 연산의 중간 결과값과 비교될 수 있다.
도 8을 참조하면, 제 1 연산 결과값들 및 제 2 연산 결과값들 간의 상관 관계를 나타내는 그래프가 도시되어 있다.
제 1 연산 결과값들은 제 1 입력 데이터 및 가중치 데이터의 일부에 기초한 연산의 결과로부터 획득될 수 있다.
한편, 가중치 데이터는 제 1 가중치 블록 내지 제 n 가중치 블록을 포함할 수 있다. 예를 들어, 제 1 가중치 블록은 필터에 포함된 가중치들의 MSB에 대응하는 값들을 이용하여 생성된 블록 일 수 있으며, 제 2 가중치 블록은 필터에 포함된 가중치들의 MSB 다음 자리에 대응하는 값들을 이용하여 생성된 블록 일 수 있다. 마찬가지로, 제 n 가중치 블록은 필터에 포함된 가중치들의 LSB에 대응하는 값들을 이용하여 생성된 블록일 수 있다.
예를 들어, 제 1 연산 결과값들은 제 1 입력 데이터 및 가중치 데이터에서 각 가중치들의 MSB에 대응하는 값들을 이용하여 생성된 제 1 가중치 블록에 기초한 연산의 결과로부터 획득될 수 있으나, 이에 제한되는 것은 아니다.
제 2 연산 결과값들은 제 1 입력 데이터 및 가중치 데이터의 전부에 기초한 연산의 결과로부터 획득될 수 있다. 따라서, 제 2 연산 결과값들은 제 1 입력 데이터 및 제 1 가중치 블록 내지 제 n 가중치 블록 각각과의 연산이 모두 완료된 후 획득된 최종 결과값들에 해당할 수 있다.
제 1 연산 결과값들 및 제 2 연산 결과값들 간의 상관 관계에서, 제1 한계값은 제 1 연산 결과값들 중에서 제 2 연산 결과가 음수가 되는 값들 중의 최대값에 기초하여 설정될 수 있다.
도 8을 참조하면, 제 1 연산 결과값들 중에서 제 2 연산 결과가 음수가 되는 값 중의 최대값은 Sm에 해당할 수 있다. 즉, 제 1 연산 결과값이 Sm보다 작은 경우에는 최종 결과값이 모두 음수가 되므로, Sm을 제 1 한계 데이터로 설정하는 경우에는 정확도의 손실이 최소화될 수 있다.
한편, Sm을 제 1 한계 데이터로 설정하는 경우에는 정확도의 손실을 최소화할 수 있으나, 연산량의 감소 정도는 크지 않을 수 있다. 따라서, 제 1 한계 데이터가 최대값 Sm에서 Sb만큼의 바이어스(bias)를 더한 값에 해당하도록 설정할 수 있으며, 더하는 바이어스가 클수록 연산량이 더 많이 감소될 수 있다.
도 9는 바이어스(bias)을 설정하는 일 예를 나타내는 도면이다.
도 9를 참조하면, 제 1 한계 데이터가 최대값 Sm에서 Sb만큼의 바이어스를 더한 값에 해당하는 경우, 바이어스가 증가함에 따른 총 연산량 및 연산의 정확도를 알 수 있다.
도 9에서는 제 1 한계 데이터의 적용 없이, 데이터 처리 장치(1500)에 새롭게 입력되는 이미지로부터 생성되는 입력 데이터 및 필터에 포함된 가중치들 간에 수행되는 총 연산량을 1로 가정하였다. 따라서, 바이어스가 증가함에 따른 제 1 연산의 총 연산량은 0과 1 사이의 값으로 표현될 수 있다. 한편, 정확도는 바이어스가 증가함에 따른 뉴럴 네트워크의 정확도를 의미한다. 예를 들어, 입력되는 이미지와 동일한 결과가 출력되는지에 따라 정확도가 결정될 수 있다.
바이어스는 제 1 입력 데이터 및 가중치 데이터에 기초한 제 1 연산의 총 연산량 및 연산의 정확도 간의 트레이드오프(tradeoff) 관계를 고려하여 설정될 수 있다. 예를 들어 도 9을 참조하면, 바이어스가 16인 경우에는 연산의 최종 결과값의 부호가 음이라는 것이 정확하게 판단된 경우에만 0을 출력하는 경우보다 총 연산량의 감소 정도는 크나 정확도의 손실은 거의 없으므로, 제 1 한계 데이터는 최대값 Sm에서 16만큼의 바이어스를 더한 값에 해당하도록 설정될 수 있다.
도 10은 제 1 한계 데이터를 설정하는 다른 예를 나타내는 도면이다.
제 1 연산의 중간 연산 결과값이 감소하는 정도에 기초하여 제 1 한계 데이터가 설정되는 경우 제 1 한계 데이터는, 새롭게 입력되는 이미지로부터 생성되는 입력 데이터 및 가중치 데이터에 기초한 연산에서 이전 단계에서의 중간 결과값에 대한 현재 단계에서의 중간 결과값의 비와 비교될 수 있다. 따라서, 제 1 한계 데이터는 0과 1 사이의 값을 가질 수 있다.
도 10을 참조하면, 제 1 한계 데이터에 해당하는 값이 0.51에서 0.505로 감소함에 따른 제 1 연산의 총 연산량 및 연산의 정확도를 알 수 있다.
도 10에서는 제 1 한계 데이터의 적용없이, 데이터 처리 장치(1500)에 새롭게 입력되는 이미지로부터 생성되는 입력 데이터 및 필터에 포함된 가중치들 간에 수행되는 총 연산량을 1로 가정하였다. 따라서, 제 1 한계 데이터에 해당하는 값이 0.51에서 0.505로 감소함에 따른 제 1 연산의 총 연산량은 0과 1 사이의 값으로 표현될 수 있다. 한편, 정확도는 바이어스가 증가함에 따른 뉴럴 네트워크의 정확도를 의미한다. 예를 들어, 입력되는 이미지와 동일한 결과가 출력되는지에 따라 정확도가 결정될 수 있다.
도 10을 참조하면, 제 1 한계 데이터는 제 1 입력 데이터 및 가중치 데이터에 기초한 제 1 연산의 총 연산량 및 연산의 정확도 간의 트레이드오프(tradeoff) 관계를 고려하여 설정될 수 있다.
다시 도 3을 참조하면, 320 단계에서 제 2 입력 데이터 및 가중치 데이터에 기초한 제 2 연산의 중간 결과와 제 1 한계 데이터를 비교할 수 있다.
제 2 입력 데이터는 제 1 한계 데이터가 설정된 후, 데이터 처리 장치(1500)에 새롭게 입력되는 이미지로부터 형성될 수 있다. 예를 들어, 입력 액티베이션 맵은 새롭게 입력되는 이미지로부터 생성될 수 있으며, 데이터 전처리 장치(1520)는 입력 액티베이션 맵에 포함된 입력 액티베이션들을 블록화하여 제 2 입력 데이터를 형성할 수 있다.
가중치 데이터는 도 5에서 상술한 바와 동일하므로 이에 관한 설명은 생략한다. 또한, 제 2 입력 데이터 및 가중치 데이터 간의 제 2 연산은 도 6에서 상술한 바와 같이 비트 시리얼 연산 방식을 이용하여 연산될 수 있다. 이에 따라, 제 2 입력 데이터 및 가중치 데이터 간의 제 2 연산에서 연산에 이용되는 가중치 자릿수의 변화에 따른 중간 결과값은, 도 7에서 상술한 바와 마찬가지로 점점 작아지게 된다.
한편, 제 1 한계 데이터가 제 1 입력 데이터 및 가중치 데이터에 기초한 제 1 연산의 중간 연산 결과값의 크기에 기초하여 설정된 경우, 제 2 연산의 중간 결과와 제 1 한계 데이터를 비교하는 방식은 하기 도 11을 참조하여 상세히 설명하도록 한다. 또한, 제 1 한계 데이터가 제 1 입력 데이터 및 가중치 데이터에 기초한 제 1 연산의 중간 결과값이 감소하는 정도에 기초하여 설정된 경우, 제 2 연산의 중간 결과와 제 1 한계 데이터를 비교하는 방식은 도 11을 참조하여 상세히 후술하도록 한다.
도 11은 제 2 연산의 중간 결과와 제 1 한계 데이터를 비교하는 일 예를 나타내는 도면이다.
도 11을 참조하면, 가중치 데이터는 제 1 가중치 블록 내지 제 n 가중치 블록을 포함할 수 있다. 예를 들어, 제 1 가중치 블록은 필터에 포함된 가중치들의 MSB에 대응하는 값들을 이용하여 생성된 블록 일 수 있으며, 제 2 가중치 블록은 필터에 포함된 가중치들의 MSB 다음 자리에 대응하는 값들을 이용하여 생성된 블록 일 수 있다. 마찬가지로, 제 n 가중치 블록은 필터에 포함된 가중치들의 LSB에 대응하는 값들을 이용하여 생성된 블록일 수 있다.
S1은 제 2 입력 데이터와 제 1 가중치 블록를 연산한 결과일 수 있으며, S2는 제 2 입력 데이터과 제 2 가중치 블록를 연산한 결과일 수 있다. 마찬가지로, Sn은 제 2 입력 데이터과 제 n 가중치 블록를 연산한 결과일 수 있다. 따라서, 제 2 입력 데이터와 가중치 데이터에 기초한 연산의 중간 결과값 S는, 연산의 각 단계가 진행됨에 따라, S1, S1 + S2, ..., S1 + S2+... +Sn로 순차적으로 업데이트될 수 있다.
먼저, 데이터 처리 장치(1500)는 제 2 연산의 첫 번째 단계에서 획득한 중간 결과인 S1과 기 설정된 제 1 한계 데이터를 비교하여, S1이 제 1 한계 데이터보다 작은 지를 판단할 수 있다. 이 때, 제 1 한계 데이터는 제 1 입력 데이터 및 가중치 데이터에 기초한 제 1 연산의 중간 결과값의 크기에 기초하여 설정될 수 있다. 만약, 중간 결과인 S1이 제 1 한계 데이터보다 작은 경우에, 데이터 처리 장치(1500)는 제 2 연산하고 0을 출력할 수 있다.
만약, 중간 결과인 S1이 제 1 한계 데이터보다 큰 경우에는, 데이터 처리 장치(1500)는 가중치 데이터 중 가중치들의 MSB의 다음 자리에 대응하는 값들을 이용하여 생성된 제 2 가중치 블록을 수신할 수 있다. 데이터 처리 장치(1500)는 제 2 입력 데이터 및 제 2 가중치 블록에 기초한 제 2 연산의 중간 결과인 S1 + S2와 제 2 한계 데이터를 비교하여, S1 + S2가 제 2 한계 데이터보다 작은 지 판단할 수 있다.
이 때, 제 2 한계 데이터에 해당하는 값은 제 1 한계 데이터에 해당하는 값의 1/x(단, x는 1보다 큰 실수)배의 크기를 가질 수 있다. 예를 들어, 제 2 한계 데이터에 해당하는 값은 제 1 한계 데이터에 해당하는 값의 1/2 배의 크기를 가질 수 있으나 이에 제한되는 것은 아니다. 이와 같은 방식으로 제 2 연산의 각 단계마다 설정된 한계 데이터에 해당하는 값은, 전 단계에서 설정된 한계 데이터의 1/k배의 크기를 가질 수 있다.
데이터 처리 장치(1500)는 제 2 연산의 각 단계마다 획득한 중간 결과값 S가 각 단계마다 설정된 한계 데이터보다 작은 지를 판단할 수 있다.
도 12는 제 2 연산의 중간 결과와 제 1 한계 데이터를 비교하는 다른 예를 나타내는 도면이다.
도 12에서는 도 11과 달리, 제 1 한계 데이터가 제 1 입력 데이터 및 가중치 데이터에 기초한 제 1 연산의 중간 결과값이 감소하는 정도에 기초하여 설정될 수 있다. 한편, 도 11에서 도 10과 중복되는 내용은 생략한다.
먼저, 데이터 처리 장치(1500)는 제 2 입력 데이터와 가중치들의 MSB에 대응하는 값들을 이용하여 생성된 블록인 제 1 가중치 블록을 연산하여 제 1 중간 결과값 S1을 획득할 수 있다. 또한, 데이터 처리 장치(1500)는 제 2 입력 데이터와 가중치들의 MSB의 다음 자리에 대응하는 값들을 이용하여 생성된 블록인 제 2 가중치 블록을 연산하여 제 2 중간 결과값 S1 + S2를 획득할 수 있다.
데이터 처리 장치(1500)는 제 1 중간 결과값 S1에 대한 제 2 중간 결과값 S1 + S2의 비와 제 1 한계 데이터를 비교하여, S1에 대한 S1 + S2의 비가 제 1 한계 데이터보다 작은 지를 판단할 수 있다. 만약, S1에 대한 S1 + S2의 비가 제 1 한계 데이터보다 작은 경우에, 데이터 처리 장치(1500)는 제 2 연산을 중지하고 0을 출력할 수 있다.
즉, 데이터 처리 장치(1500)는 제 2 연산의 이전 단계에서 획득한 중간 결과값에 대한 현재 단계에서 획득한 중간 결과값의 비가, 각 단계의 사이마다 기 설정된 한계 데이터보다 작은 지를 판단할 수 있다.
다시 도 3을 참조하면, 330 단계에서 데이터 처리 장치(1500)는 비교 결과에 기초하여 제 2 연산의 계속 여부를 판단할 수 있다.
일 예로, 제 1 한계 데이터가 제 1 입력 데이터 및 가중치 데이터에 기초한 제 1 연산의 중간 결과값의 크기에 기초하여 설정된 경우에, 데이터 처리 장치(1500)는 제 2 연산의 각 단계마다 획득한 중간 결과값 S가 각 단계마다 설정된 한계 데이터보다 작은 지를 판단할 수 있다. 데이터 처리 장치(1500)는 각 단계의 중간 결과값 S가 대응되는 한계 데이터보다 작은 경우에는 연산을 중지하고 0을 출력할 수 있다. 만약에, 제 2 입력 데이터 및 제 n 가중치 블록에 기초한 제 2 연산의 중간 결과인 S1 + S2+... +Sn도 제 n 한계 데이터보다 큰 경우에는, 데이터 처리 장치(1500)는 S1 + S2+... +Sn을 그대로 출력할 수 있다.
다른 예로, 제 1 한계 데이터가 제 1 입력 데이터 및 가중치 데이터에 기초한 제 1 연산의 중간 결과값이 감소하는 정도에 기초하여 설정된 경우에, 데이터 처리 장치(1500)는 제 2 연산의 이전 단계에서 획득한 중간 결과값에 대한 현재 단계에서 획득한 중간 결과값의 비가, 각 단계의 사이마다 기 설정된 한계 데이터보다 작은 지를 판단할 수 있다. 데이터 처리 장치(1500)는 이전 단계에서 획득한 중간 결과값에 대한 현재 단계에서 획득한 중간 결과값의 비가 대응되는 한계 데이터보다 작은 경우에는 연산을 중지하고 0을 출력할 수 있다. 만약에, 중간 결과값 S1 + S2+... +Sn-1에 대한 중간 결과값 S1 + S2+... +Sn의 비가 제 1 한계 데이터보다 큰 경우에는, S1 + S2+... +Sn을 그대로 출력할 수 있다.
도 13은 데이터 처리 장치에서 한계 데이터에 기초하여 연산의 계속 여부를 판단하는 과정의 일 예를 설명하기 위한 흐름도이다.
1300 단계에서, 데이터 처리 장치(1500)는 필터의 MSB 에 대응하는 값들을 이용하여 생성된 가중치 블록을 처음 입력으로 결정한다.
1301 단계에서, 데이터 처리 장치(1500)는 한계 데이터에 해당하는 값을 K(단, K는 0보다 큰 실수)로 설정한다. 한계 데이터는 데이터 처리 장치(1500)에 입력되는 이미지로부터 생성된 입력 데이터 및 가중치 데이터에 기초한 연산의 중간 결과와 비교되는 기준이 될 수 있다.
1302 단계에서, 데이터 처리 장치(1500)는 결정된 자리에 대응하는 값을 이용하여 생성된 가중치 블록을 메모리로부터 수신한다.
1303 단계에서, 데이터 처리 장치(1500)는 결정된 자리에 대응하는 값을 이용하여 생성된 가중치 블록과 입력 데이터를 연산한다.
1304 단계에서, 데이터 처리 장치(1500)는 연산한 결과를 시프터를 통해 자릿수를 증가한 기존 연산기의 결과와 더한다.
1305 단계에서, 데이터 처리 장치(1500)는 더한 결과값이 한계 데이터에 해당하는 값보다 작은 지를 판단한다. 더한 결과값이 한계 데이터에 해당하는 값보다 작은 경우, 1306단계로 진행된다. 하지만, 더한 결과값이 한계 데이터에 해당하는 값보다 큰 경우, 1307단계로 진행한다.
1306 단계에서, 데이터 처리 장치(1500)는 0을 최종 결과로 출력한다. 더한 결과값이 한계 데이터에 해당하는 값보다 작은 경우에는, 연산의 최종 결과값의 부호가 음일 것으로 예측하고 바로 0을 최종 결과로 출력하여 연산량을 줄이기 위함이다.
1307 단계에서, 데이터 처리 장치(1500)는 한계 데이터에 해당하는 값을 K/2로 설정한다.
1308 단계에서, 데이터 처리 장치(1500)는 연산에 최종적으로 이용된 가중치 블록이 필터의 LSB에 대응하는 값들을 이용하여 생성된 것인지 판단한다. 필터의 LSB에 대응하는 값들을 이용하여 생성된 것인 경우 1309 단계로 진행한다. 그렇지 않은 경우, 1310단계로 진행한다.
1309 단계에서, 데이터 처리 장치(1500)는 더한 결과값을 그대로 출력한다.
1310 단계에서, 데이터 처리 장치(1500)는 필터의 다음 자리에 대응하는 값들을 이용하여 생성된 가중치 블록을 입력으로 결정하고, 1302단계로 리턴한다. 즉, 필터의 LSB 에 대응하는 값들을 이용하여 생성된 가중치 블록을 연산할 때까지 1302 단계 내지 1309 단계가 반복된다.
1311 단계에서, 데이터 처리 장치(1500)는 연산에 최종적으로 이용된 가중치 블록이 마지막 필터의 가중치들을 이용한 것인지를 판단한다. 즉, 필터의 연산이 완료되어 0 또는 특정 양수값을 출력한 후에 다음 필터에 대해 연산을 진행하는 것이다. 연산에 최종적으로 이용된 가중치 블록이 마지막 필터의 가중치들을 이용한 것이 아닌 경우, 1312 단계로 진행한다. 연산에 최종적으로 이용된 가중치 블록이 마지막 필터의 가중치들을 이용한 것인 경우에는 연산을 종료한다.
1312 단계에서, 데이터 처리 장치(1500)는 다음 필터의 MSB 에 대응하는 값들을 이용하여 생성된 가중치 블록을 입력으로 결정하고 1301 단계로 리턴한다. 즉 모든 필터에 대해 연산을 완료할 때까지 1301 단계 내지 1311 단계가 반복된다.
도 14는 데이터 처리 장치에서 한계 데이터에 기초하여 연산의 계속 여부를 판단하는 과정의 다른 예를 설명하기 위한 흐름도이다.
1400 단계에서, 데이터 처리 장치(1500)는 필터의 MSB 에 대응하는 값들을 이용하여 생성된 가중치 블록을 처음 입력으로 결정한다.
1401 단계에서, 데이터 처리 장치(1500)는 한계 데이터에 해당하는 값을 K(단, K는 0과 1사이의 실수)로 설정한다. 한계 데이터는 데이터 처리 장치(1500)에 입력되는 이미지로부터 생성된 입력 데이터 및 가중치 데이터에 기초한 연산의 중간 결과와 비교되는 기준이 될 수 있다.
1402 단계에서, 데이터 처리 장치(1500)는 결정된 자리에 대응하는 값을 이용하여 생성된 가중치 블록을 메모리로부터 수신한다.
1403 단계에서, 데이터 처리 장치(1500)는 결정된 자리에 대응하는 값을 이용하여 생성된 가중치 블록과 입력 데이터를 연산한다.
1404 단계에서, 데이터 처리 장치(1500)는 연산한 결과를 시프터를 통해 자릿수를 증가한 기존 연산기의 결과와 더한다.
1405 단계에서, 데이터 처리 장치(1500)는 기존 연산기의 결과값에 대한 더한 결과값의 비가 한계 데이터에 해당하는 값보다 작은 지를 판단한다. 기존 연산기의 결과값에 대한 더한 결과값의 비가 한계 데이터에 해당하는 값보다 작은 경우, 1406단계로 진행된다. 하지만, 기존 연산기의 결과값에 대한 더한 결과값의 비가 한계 데이터에 해당하는 값보다 큰 경우, 1407단계로 진행한다.
1406 단계에서, 데이터 처리 장치(1500)는 0을 최종 결과로 출력한다. 기존 연산기의 결과값에 대한 더한 결과값의 비가 한계 데이터에 해당하는 값보다 작은 경우에는, 연산의 최종 결과값의 부호가 음일 것으로 예측하고 바로 0을 최종 결과로 출력하여 연산량을 줄이기 위함이다.
1407 단계에서, 데이터 처리 장치(1500)는 연산에 최종적으로 이용된 가중치 블록이 필터의 LSB에 대응하는 값들을 이용하여 생성된 것인지 판단한다. 필터의 LSB에 대응하는 값들을 이용하여 생성된 것인 경우 1408 단계로 진행한다. 그렇지 않은 경우, 1409단계로 진행한다.
1408 단계에서, 데이터 처리 장치(1500)는 더한 결과값을 그대로 출력한다.
1409 단계에서, 데이터 처리 장치(1500)는 필터의 다음 자리에 대응하는 값들을 이용하여 생성된 가중치 블록을 입력으로 결정하고, 1402단계로 리턴한다. 즉, 필터의 LSB 에 대응하는 값들을 이용하여 생성된 가중치 블록을 연산할 때까지 1402 단계 내지 1409 단계가 반복된다.
1410 단계에서, 데이터 처리 장치(1500)는 연산에 최종적으로 이용된 가중치 블록이 마지막 필터의 가중치들을 이용한 것인지를 판단한다. 즉, 필터의 연산이 완료되어 0 또는 특정 양수값을 출력한 후에 다음 필터에 대해 연산을 진행하는 것이다. 연산에 최종적으로 이용된 가중치 블록이 마지막 필터의 가중치들을 이용한 것이 아닌 경우, 1411 단계로 진행한다. 연산에 최종적으로 이용된 가중치 블록이 마지막 필터의 가중치들을 이용한 것인 경우에는 연산을 종료한다.
1411 단계에서, 데이터 처리 장치(1500)는 다음 필터의 MSB 에 대응하는 값들을 이용하여 생성된 가중치 블록을 입력으로 결정하고 1402 단계로 리턴한다. 즉 모든 필터에 대해 연산을 완료할 때까지 1402 단계 내지 1410 단계가 반복된다.
도 15는 데이터 처리 장치의 구성의 일 예를 도시한 블록도이다.
데이터 처리 장치(1500)는 PC(personal computer), 서버 디바이스, 모바일 디바이스, 임베디드 디바이스 등의 다양한 종류의 디바이스들로 구현될 수 있다. 예를 들어, 데이터 처리 장치(1500)는 뉴럴 네트워크를 이용한 음성 인식, 영상 인식, 영상 분류 등을 수행하는 스마트폰, 태블릿 디바이스, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스, 자율주행 자동차, 로보틱스, 의료기기 등으로 구현될 수 있으나, 이에 제한되지 않는다. 나아가서, 데이터 처리 장치(1500)는 위와 같은 디바이스에 탑재되는 전용 하드웨어 가속기(HW accelerator)에 해당될 수 있고, 데이터 처리 장치(1500)는 뉴럴 네트워크 구동을 위한 전용 모듈인 NPU(neural processing unit), TPU(Tensor Processing Unit), Neural Engine 등과 같은 하드웨어 가속기일 수 있으나, 이에 제한되지 않는다.
도 15을 참조하면, 데이터 처리 장치(1500)는 프로세서(1510) 및 메모리(1530)를 포함한다. 도 15에 도시된 데이터 처리 장치(1500)에는 본 실시예들과 관련된 구성요소들만이 도시되어 있다. 따라서, 데이터 처리 장치(1500)에는 도 15에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당해 기술분야의 통상의 기술자에게 자명하다.
프로세서(1510)는 제 1 입력 데이터 및 필터에 포함된 가중치들로부터 생성된 가중치 데이터에 기초한 제 1 연산을 수행함에 따라 제 1 한계 데이터를 설정할 수 있다. 제 1 입력 데이터는 입력 액티베이션 맵에 포함된 입력 액티베이션들이 블록화되어 형성된 데이터이다. 데이터 전처리 장치(1520)는 입력 액티베이션 맵에 포함된 입력 액티베이션들을 블록화하여 제 1 입력 데이터를 형성할 수 있다. 이 때 입력 액티베이션 맵은 기 입력된 이미지 또는 제 1 한계 데이터가 설정된 후 데이터 처리 장치(1500)에 입력될 이미지의 일부로부터 생성될 수 있다. 한편, 데이터 전처리 장치(1520)는 상술한 반전된 2의 보수 고정 소수점 형식을 이용하여 필터에 포함된 가중치들 각각을 부호화할 수 있으며, 부호화된 가중치들로부터 가중치 데이터를 생성할 수 있다. 데이터 전처리 장치(1520)는 CPU일 수 있으나, 이에 제한되지 않는다.
제 1 한계 데이터는, 새롭게 입력되는 이미지로부터 생성되는 제 2 입력 데이터 및 가중치 데이터에 기초한 연산의 중간 결과와 비교되는 기준이 될 수 있다. 제 1 한계 데이터를 기준으로 하여, 새롭게 입력되는 이미지로부터 생성되는 입력 데이터 및 가중치 데이터에 기초한 연산의 최종 결과값의 부호가 음일 것으로 예측되는 경우에는 0이 출력되도록 할 수 있다.
제 1 한계 데이터는 제 1 입력 데이터 및 가중치 데이터에 기초한 제 1 연산의 중간 결과값의 크기에 기초하여 설정될 수 있고, 또는 제 1 입력 데이터 및 가중치 데이터에 기초한 제 1 연산의 중간 결과값이 감소하는 정도에 기초하여 설정될 수 있다.
프로세서(1510)는 제 2 입력 데이터 및 가중치 데이터에 기초한 제 2 연산의 중간 결과와 제 1 한계 데이터를 비교할 수 있다.
일 예로, 프로세서(1510)는 제 1 한계 데이터가 제 1 입력 데이터 및 가중치 데이터에 기초한 제 1 연산의 중간 결과값의 크기에 기초하여 설정된 경우에, 제 2 연산의 각 단계마다 획득한 중간 결과값 S가 각 단계마다 설정된 한계 데이터보다 작은 지를 판단할 수 있다. 다른 예로, 프로세서(1510)는 제 1 한계 데이터가 제 1 입력 데이터 및 가중치 데이터에 기초한 제 1 연산의 중간 결과값이 감소하는 정도에 기초하여 설정된 경우에, 제 2 연산의 이전 단계에서 획득한 중간 결과값에 대한 현재 단계에서 획득한 중간 결과값의 비가, 각 단계의 사이마다 설정된 한계 데이터보다 작은 지를 판단할 수 있다.
프로세서(1510)는 비교 결과에 기초하여 제 2 연산의 계속 여부를 판단할 수 있다. 일 예로, 프로세서(1510)는 각 단계의 중간 결과값 S가 대응되는 한계 데이터보다 작은 경우에는 연산을 중지하고 0을 출력할 수 있다. 다른 예로, 프로세서(1510)는 이전 단계에서 획득한 중간 결과값에 대한 현재 단계에서 획득한 중간 결과값의 비가 대응되는 한계 데이터보다 작은 경우에는 연산을 중지하고 0을 출력할 수 있다.
프로세서(1510)는 데이터 처리 장치(1500) 내에 구비된 CPU(central processing unit), GPU(graphics processing unit), AP(application processor) 등으로 구현될 수 있으나, 이에 제한되지 않는다.
메모리(1530)는 데이터 처리 장치(1500)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 예를 들어, 메모리(1530)는 제 1 입력 데이터, 제 2 입력 데이터 및 가중치 데이터 등을 저장할 수 있다. 메모리(1530)는 DRAM(dynamic random access memory), SRAM(static random access memory) 등과 같은 RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), CD-ROM, 블루레이 또는 다른 광학 디스크 스토리지, HDD(hard disk drive), SSD(solid state drive), 또는 플래시 메모리일 수 있으나, 이에 한정되지 않는다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
이제까지 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 하며, 권리 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점을 포함하는 것으로 해석되어야 할 것이다.

Claims (21)

  1. 데이터를 처리하는 방법에 있어서,
    제 1 입력 데이터 및 필터에 포함된 가중치들로부터 생성된 가중치 데이터에 기초한 제 1 연산을 수행함에 따라 제 1 한계 데이터를 설정하는 단계;
    제 2 입력 데이터 및 상기 가중치 데이터에 기초한 제 2 연산의 중간 결과와 상기 제 1 한계 데이터를 비교하는 단계; 및
    상기 비교 결과에 기초하여 상기 제 2 연산의 계속 여부를 판단하는 단계;를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 가중치 데이터는 부호화된 가중치들의 동일한 자리에 대응하는 값들에 기초하여 생성되고,
    상기 부호화된 가중치들은 상기 가중치들이 반전된 2의 보수 고정소수점 형식에 기초하여 부호화되는 방법.
  3. 제 1 항에 있어서,
    상기 제 1 한계 데이터는 0을 초과하는 값에 대응하는 데이터를 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 제 1 한계 데이터를 설정하는 단계는,
    상기 제 1 입력 데이터 및 상기 가중치 데이터의 일부에 기초한 연산의 결과로서 제 1 연산 결과값들을 획득하는 단계;
    상기 제 1 입력 데이터 및 상기 가중치 데이터의 전부에 기초한 연산의 결과로서 제 2 연산 결과값들을 획득하는 단계; 및
    상기 제 1 연산 결과값들 및 상기 제 2 연산 결과값들 간의 상관 관계에 기초하여 상기 제 1 한계 데이터를 설정하는 단계를 포함하는 방법.
  5. 제 4 항에 있어서,
    상기 제 1 한계 데이터를 설정하는 단계는,
    상기 제 1 연산 결과값들 중에서 상기 제 2 연산 결과값들이 음수가 되는 값 중의 최대값에 기초하여 설정하는 방법.
  6. 제 5 항에 있어서,
    상기 제 1 한계 데이터는,
    상기 최대값 및 바이어스(bias)의 합에 해당하고,
    상기 바이어스는, 상기 제 1 입력 데이터 및 상기 가중치 데이터에 기초한 연산의 총량 및 연산의 정확도에 기초하여 설정되는 방법.
  7. 제 1 항에 있어서,
    상기 판단하는 단계는,
    상기 제 2 연산의 중간 결과가 상기 제 1 한계 데이터보다 작은 경우에는, 상기 제 2 연산을 중단하고, 0을 출력하는 방법.
  8. 제 1 항에 있어서,
    상기 중간 결과는,
    상기 제 2 입력 데이터 및 상기 가중치 데이터 중 상기 가중치들의 MSB(Most Significant Bit)에 대응하는 값들을 이용하여 생성된 제 1 가중치 블록에 기초한 연산의 결과에 해당하는 방법.
  9. 제 8 항에 있어서,
    상기 비교하는 단계는,
    상기 제 2 입력 데이터 및 상기 제 1 가중치 블록에 기초한 연산의 결과로서 제 1 중간 결과값을 획득하는 단계;
    상기 제 2 입력 데이터 및 상기 가중치들의 MSB의 다음 자리에 대응하는 값들을 이용하여 생성된 제 2 가중치 블록에 기초한 연산의 결과로서 제 2 중간 결과값을 획득하는 단계;
    제 1 중간 결과값에 대한 제 2 중간 결과값의 비와 상기 제 1 한계 데이터를 비교하는 단계를 포함하고,
    상기 제 1 한계 데이터는 상기 제 1 연산의 총량 및 상기 제 1 연산의 정확도에 기초하여 결정되는 방법.
  10. 제 8 항에 있어서,
    상기 판단하는 단계는,
    상기 중간 결과가 상기 제 1 한계 데이터보다 큰 경우에는,
    상기 가중치 데이터 중 상기 가중치들의 MSB의 다음 자리에 대응하는 값들을 이용하여 생성된 제 2 가중치 블록을 수신하는 단계;
    상기 제 2 입력 데이터 및 상기 제 2 가중치 블록에 기초한 연산의 결과로서 제 2 중간 결과값을 획득하는 단계; 및
    상기 제 2 중간 결과값 및 제 2 한계 데이터의 비교 결과에 기초하여 상기 제 2 연산의 계속 여부를 판단하는 단계;를 포함하고,
    상기 제 2 한계 데이터는 상기 제 1 한계 데이터의 1/x(x는 1보다 큰 실수) 배의 크기를 갖는 방법.
  11. 제 1 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  12. 메모리; 및
    프로세서;를 포함하고,
    상기 프로세서는,
    제 1 입력 데이터 및 필터에 포함된 가중치들로부터 생성된 가중치 데이터에 기초한 제 1 연산을 수행함에 따라 제 1 한계 데이터를 설정하고, 제 2 입력 데이터 및 상기 가중치 데이터에 기초한 제 2 연산의 중간 결과와 상기 제 1 한계 데이터를 비교하고, 상기 비교 결과에 기초하여 상기 제 2 연산의 계속 여부를 판단하는 데이터 처리 장치.
  13. 제 12 항에 있어서,
    상기 가중치 데이터는 부호화된 가중치들의 동일한 자리에 대응하는 값들에 기초하여 생성되고,
    상기 부호화된 가중치들은 상기 가중치들이 반전된 2의 보수 고정소수점 형식에 기초하여 부호화되는 데이터 처리 장치.
  14. 제 12 항에 있어서,
    상기 제 1 한계 데이터는 0을 초과하는 값에 대응하는 데이터를 포함하는 데이터 처리 장치.
  15. 제 12 항에 있어서,
    상기 프로세서는,
    상기 제 1 입력 데이터 및 상기 가중치 데이터의 일부에 기초한 연산의 결과로서 제 1 연산 결과값들을 획득하고, 상기 제 1 입력 데이터 및 상기 가중치 데이터의 전부에 기초한 연산의 결과로서 제 2 연산 결과값들을 획득하고, 상기 제 1 연산 결과값들 및 상기 제 2 연산 결과값들 간의 상관 관계에 기초하여 상기 제 1 한계 데이터를 설정하는 데이터 처리 장치.
  16. 제 15 항에 있어서,
    상기 프로세서는,
    상기 제 1 연산 결과값들 중에서 상기 제 2 연산 결과값들이 음수가 되는 값 중의 최대값에 기초하여 상기 제 1 한계 데이터를 설정하는 데이터 처리 장치.
  17. 제 16 항에 있어서,
    상기 제 1 한계 데이터는,
    상기 최대값 및 바이어스(bias)의 합에 해당하고,
    상기 바이어스는, 상기 제 1 입력 데이터 및 상기 가중치 데이터에 기초한 연산의 총량 및 연산의 정확도에 기초하여 설정되는 데이터 처리 장치.
  18. 제 12 항에 있어서,
    상기 프로세서는,
    상기 제 2 연산의 중간 결과가 상기 제 1 한계 데이터보다 작은 경우에는, 상기 제 2 연산을 중단하고, 0을 출력하는 데이터 처리 장치.
  19. 제 12 항에 있어서,
    상기 중간 결과는,
    상기 제 2 입력 데이터 및 상기 가중치 데이터 중 상기 가중치들의 MSB(Most Significant Bit)에 대응하는 값들을 이용하여 생성된 제 1 가중치 블록에 기초한 연산의 결과에 해당하는 데이터 처리 장치.
  20. 제 19 항에 있어서,
    상기 프로세서는,
    상기 제 2 입력 데이터 및 상기 제 1 가중치 블록에 기초한 연산의 결과로서 제 1 중간 결과값을 획득하고, 상기 제 2 입력 데이터 및 상기 가중치들의 MSB의 다음 자리에 대응하는 값들을 이용하여 생성된 제 2 가중치 블록에 기초한 연산의 결과로서 제 2 중간 결과값을 획득하고, 제 1 중간 결과값에 대한 제 2 중간 결과값의 비와 상기 제 1 한계 데이터를 비교하고,
    상기 제 1 한계 데이터는 상기 제 1 연산의 총량 및 상기 제 1 연산의 정확도에 기초하여 결정되는 데이터 처리 장치.
  21. 제 19 항에 있어서,
    상기 프로세서는,
    상기 중간 결과가 상기 제 1 한계 데이터보다 큰 경우에는,
    상기 가중치 데이터 중 상기 가중치들의 MSB의 다음 자리에 대응하는 값들을 이용하여 생성된 제 2 가중치 블록을 수신하고, 상기 제 2 입력 데이터 및 상기 제 2 가중치 블록에 기초한 연산의 결과로서 제 2 중간 결과값을 획득하고, 상기 제 2 중간 결과값 및 제 2 한계 데이터의 비교 결과에 기초하여 상기 제 2 연산의 계속 여부를 판단하고,
    상기 제 2 한계 데이터는 상기 제 1 한계 데이터의 1/x(x는 1보다 큰 실수) 배의 크기를 갖는 데이터 처리 장치.
KR1020190061458A 2019-05-24 2019-05-24 데이터를 처리하는 방법 및 장치 KR20200135059A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190061458A KR20200135059A (ko) 2019-05-24 2019-05-24 데이터를 처리하는 방법 및 장치
US16/843,199 US11301209B2 (en) 2019-05-24 2020-04-08 Method and apparatus with data processing
US17/689,454 US20220188070A1 (en) 2019-05-24 2022-03-08 Method and apparatus with data processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190061458A KR20200135059A (ko) 2019-05-24 2019-05-24 데이터를 처리하는 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20200135059A true KR20200135059A (ko) 2020-12-02

Family

ID=73457051

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190061458A KR20200135059A (ko) 2019-05-24 2019-05-24 데이터를 처리하는 방법 및 장치

Country Status (2)

Country Link
US (2) US11301209B2 (ko)
KR (1) KR20200135059A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11562235B2 (en) * 2020-02-21 2023-01-24 International Business Machines Corporation Activation function computation for neural networks

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5993051A (en) 1996-11-18 1999-11-30 Samsung Electronics Co., Ltd. Combined leading one and leading zero anticipator
KR100929423B1 (ko) 2002-10-11 2009-12-03 매그나칩 반도체 유한회사 부동소수점의 복합 연산 장치
JP2005044330A (ja) * 2003-07-24 2005-02-17 Univ Of California San Diego 弱仮説生成装置及び方法、学習装置及び方法、検出装置及び方法、表情学習装置及び方法、表情認識装置及び方法、並びにロボット装置
JP4858794B2 (ja) 2009-12-02 2012-01-18 日本電気株式会社 浮動小数点除算器、及びそれを用いた情報処理装置
KR101735677B1 (ko) 2010-11-17 2017-05-16 삼성전자주식회사 부동 소수점의 복합 연산장치 및 그 연산방법
KR20190089685A (ko) 2018-01-23 2019-07-31 삼성전자주식회사 데이터를 처리하는 방법 및 장치
US11630997B2 (en) 2018-01-23 2023-04-18 Samsung Electronics Co., Ltd. Method and apparatus with bit-serial data processing of a neural network

Also Published As

Publication number Publication date
US20200371745A1 (en) 2020-11-26
US11301209B2 (en) 2022-04-12
US20220188070A1 (en) 2022-06-16

Similar Documents

Publication Publication Date Title
US20210004663A1 (en) Neural network device and method of quantizing parameters of neural network
JP7349835B2 (ja) ニューラルネットワークにおいてパラメータを処理する方法及び装置
EP3474194B1 (en) Method and apparatus with neural network parameter quantization
KR102589303B1 (ko) 고정 소수점 타입의 뉴럴 네트워크를 생성하는 방법 및 장치
US11809515B2 (en) Reduced dot product computation circuit
KR20210029785A (ko) 활성화 희소화를 포함하는 신경 네트워크 가속 및 임베딩 압축 시스템 및 방법
US11880768B2 (en) Method and apparatus with bit-serial data processing of a neural network
KR20190034985A (ko) 인공 신경망의 양자화 방법 및 장치
US11604960B2 (en) Differential bit width neural architecture search
KR20210043295A (ko) 뉴럴 네트워크의 데이터를 양자화하는 방법 및 장치
KR20190089685A (ko) 데이터를 처리하는 방법 및 장치
US20200364538A1 (en) Method of performing, by electronic device, convolution operation at certain layer in neural network, and electronic device therefor
KR20210076691A (ko) 프레임워크 간 뉴럴 네트워크의 학습을 검증하는 방법 및 장치
US11853888B2 (en) Method and apparatus with neural network convolution operations
KR20190130443A (ko) 뉴럴 네트워크의 양자화 방법 및 장치
US20240071070A1 (en) Algorithm and method for dynamically changing quantization precision of deep-learning network
KR20200135059A (ko) 데이터를 처리하는 방법 및 장치
JP2022042467A (ja) 人工ニューラルネットワークモデル学習方法およびシステム
US11068784B2 (en) Generic quantization of artificial neural networks
US20220405561A1 (en) Electronic device and controlling method of electronic device
US20220058487A1 (en) Electronic apparatus and method for controlling thereof
WO2020054402A1 (ja) ニューラルネットワーク処理装置、コンピュータプログラム、ニューラルネットワーク製造方法、ニューラルネットワークデータの製造方法、ニューラルネットワーク利用装置、及びニューラルネットワーク小規模化方法
KR102424538B1 (ko) 영상 복원 방법 및 장치
WO2022247368A1 (en) Methods, systems, and mediafor low-bit neural networks using bit shift operations
KR102384588B1 (ko) 신경망 연산방법 및 신경망 가중치 생성방법