KR102573202B1 - 연산 회로, 그것의 연산 방법 및 뉴럴 네트워크 장치 - Google Patents

연산 회로, 그것의 연산 방법 및 뉴럴 네트워크 장치 Download PDF

Info

Publication number
KR102573202B1
KR102573202B1 KR1020200173673A KR20200173673A KR102573202B1 KR 102573202 B1 KR102573202 B1 KR 102573202B1 KR 1020200173673 A KR1020200173673 A KR 1020200173673A KR 20200173673 A KR20200173673 A KR 20200173673A KR 102573202 B1 KR102573202 B1 KR 102573202B1
Authority
KR
South Korea
Prior art keywords
weight vector
candidate
weight
bit
sequence
Prior art date
Application number
KR1020200173673A
Other languages
English (en)
Other versions
KR20220083434A (ko
Inventor
안병민
김태환
Original Assignee
서울대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 서울대학교산학협력단 filed Critical 서울대학교산학협력단
Priority to KR1020200173673A priority Critical patent/KR102573202B1/ko
Publication of KR20220083434A publication Critical patent/KR20220083434A/ko
Application granted granted Critical
Publication of KR102573202B1 publication Critical patent/KR102573202B1/ko

Links

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/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)

Abstract

본 개시에 따르면, 뉴럴 네트워크 시스템에 사용되는 연산 회로의 연산 방법은, 복수의 웨이트 벡터들을 포함하는 웨이트 매트릭스를 이용해 최적화된 웨이트 매트릭스를 획득하는 단계 및 최적화된 웨이트 매트릭스 및 입력 피처 데이터를 이용해 곱셈 및 누적 연산을 수행하는 단계를 포함할 수 있고, 최적화된 웨이트 매트릭스를 획득하는 단계는, 복수의 웨이트 벡터들 각각에 대해, '0' 또는 '1'로만 표현된 웨이트 벡터를 이용해 '-1', '0' 또는 '1'로만 표현된 적어도 하나의 후보 웨이트 벡터를 획득하는 단계, 최적화 알고리즘을 이용해, 복수의 웨이트 벡터들 각각에 대해, 적어도 하나의 후보 웨이트 벡터 중 하나의 웨이트 벡터를 선택하는 단계 및 복수의 웨이트 벡터들 각각에 대해 선택된 웨이트 벡터들을 병합함으로써 획득된 매트릭스에서 상위 열의 '0'을 제거하는 과정을 통해 최적화된 웨이트 매트릭스를 획득하는 단계를 포함할 수 있다.

Description

연산 회로, 그것의 연산 방법 및 뉴럴 네트워크 장치{ARITHMETIC CIRCUIT, CALCULATING METHOD THEREOF AND NEURAL NETWORK APPARATUS}
본 개시의 기술적 사상은 연산 회로, 연산 회로의 연산 방법 및 뉴럴 네트워크 장치에 관한 것으로서, 자세하게는 뉴럴 네트워크 시스템 또는 뉴럴 네트워크 장치에 이용되는 연산 회로와 관련된 기술로서 웨이트 매트릭스와 입력 피처 데이터를 이용한 연산을 수행하기 위한 장치 및 그것의 동작 방법에 관한 것이다.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 최근 뉴럴 네트워크(neural network) 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 하나 이상의 뉴럴 네트워크 모델을 이용한 뉴럴 네트워크 장치를 사용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다.
뉴럴 네트워크 장치에 관한 연구들 중 일부는, 성능이 감소되지 않거나 적게 감소되는 범위에서 에너지 효율을 증가시키는 데 집중되고 있다. 이에 따라, 뉴럴 네트워크를 이용하는 장치에서 성능 내지는 정확도가 감소되지 않거나 적게 감소되면서도, 계산 복잡도를 감소시키고, 연산 속도를 증가시킬 수 있는 기술이 요구되고 있다.
본 개시의 기술적 사상은 연산 회로, 연산 회로의 연산 방법 및 뉴럴 네트워크 장치에 있어서, 웨이트 매트릭스(weight matrix) 및 입력 피처 데이터(input feature data)를 이용한 곱셈 및 누적 연산(또는 컨볼루션 연산)의 연산 속도를 향상시키고 메모리 사용량을 감소시키기 위한 방법 및 장치를 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 뉴럴 네트워크 시스템에 사용되는 연산 회로의 연산 방법은, 복수의 웨이트 벡터들을 포함하는 웨이트 매트릭스를 이용해 최적화된 웨이트 매트릭스를 획득하는 단계 및 최적화된 웨이트 매트릭스 및 입력 피처 데이터를 이용해 곱셈 및 누적 연산을 수행하는 단계를 포함할 수 있고, 최적화된 웨이트 매트릭스를 획득하는 단계는, 복수의 웨이트 벡터들 각각에 대해, '0' 또는 '1'로만 표현된 웨이트 벡터를 이용해 '-1', '0' 또는 '1'로만 표현된 적어도 하나의 후보 웨이트 벡터를 획득하는 단계, 최적화 알고리즘을 이용해, 복수의 웨이트 벡터들 각각에 대해, 적어도 하나의 후보 웨이트 벡터 중 하나의 웨이트 벡터를 선택하는 단계 및 복수의 웨이트 벡터들 각각에 대해 선택된 웨이트 벡터들을 병합함으로써 획득된 매트릭스에서 상위 열의 '0'을 제거하는 과정을 통해 최적화된 웨이트 매트릭스를 획득하는 단계를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 뉴럴 네트워크 장치에서 사용되는 연산 회로는, 복수의 웨이트 벡터들을 포함하는 웨이트 매트릭스를 수신하고, 복수의 웨이트 벡터들 각각에 대응되며 벡터 내 '0'의 개수를 증가시킨 적어도 하나의 후보 웨이트 벡터를 생성하고, 적어도 하나의 후보 웨이트 벡터 중 하나의 선택된 웨이트 벡터를 이용해 최적화된 웨이트 매트릭스를 획득 및 출력하도록 구성되는 웨이트 최적화 회로, 웨이트 최적화 회로로부터 제공되는 최적화된 웨이트 매트릭스와 입력 피처 데이터를 이용해 비트 단위 곱셈 및 누적 연산함으로써 중간 값을 출력하도록 구성되는 비트 단위 곱셈 및 누적 회로 및 중간 값을 쉬프트 및 합산함으로써 연산 결과를 출력하도록 구성되는 쉬프트 및 합산 회로를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 뉴럴 네트워크 장치는, 복수의 웨이트 벡터들을 포함하는 웨이트 매트릭스 및 입력 피처 데이터를 저장하도록 구성되는 메모리 및 웨이트 매트릭스를 이용해 최적화된 웨이트 매트릭스를 획득하고, 최적화된 매트릭스 및 메모리로부터 제공되는 입력 피처 데이터를 이용해 곱셈 및 누적 연산을 수행함으로써 연산 결과를 출력하도록 구성되는 연산 회로를 포함할 수 있고, 연산 회로는, 복수의 웨이트 벡터들 각각에 대해, '0' 또는 '1'로만 표현된 웨이트 벡터를 이용해 '-1', '0' 또는 '1'로만 표현된 적어도 하나의 후보 웨이트 벡터를 획득하고, 최적화 알고리즘을 이용해, 복수의 웨이트 벡터들 각각에 대해, 적어도 하나의 후보 웨이트 벡터 중 하나의 웨이트 벡터를 선택하고, 복수의 웨이트 벡터들 각각에 대해 선택된 웨이트 벡터들을 병합함으로써 획득된 매트릭스에서 상위 열의 '0'을 제거하는 과정을 통해 최적화된 웨이트 매트릭스를 획득하도록 구성될 수 있다.
본 개시의 예시적 실시 예에 따른 연산 회로는, 웨이트 매트릭스에 포함된 복수의 웨이트 벡터들에 대해 '1'을 최소화 하는 과정을 통해 적어도 하나의 후보 웨이트 벡터를 얻어내고, 최적화 알고리즘을 이용해 여러 후보 웨이트 벡터 조합들 중 변환된 웨이트 매트릭스의 행의 개수가 최소가 되게 하는 조합을 얻어냄으로써 연산의 속도를 향상시킴과 아울러 메모리 사용량을 감소시킬 수 있다.
또한, 변환된 웨이트 매트릭스에 포함된 '-1', '0' 또는 '1'을 플래그 값 및 '0'또는 '1'로만 표현함으로써 웨이트 매트릭스를 표현하는 데에 사용되는 비트 수를 감소시킴으로써 메모리 사용량을 줄일 수 있다.
도 1은 본 개시의 예시적 실시 예에 따른 전자 시스템을 나타낸다.
도 2a 및 도 2b는 본 개시의 예시적 실시 예에 따른 비트 단위 곱셈 연산 방법을 설명하기 위한 도면이다.
도 3은 본 개시의 예시적 실시 예에 따른 최적화된 웨이트 매트릭스 생성 방법의 순서도를 나타낸다.
도 4는 본 개시의 예시적 실시 예에 따른 적어도 하나의 후보 웨이트 벡터 생성 방법의 순서도를 나타낸다.
도 5는 본 개시의 예시적 실시 예에 따른 후보 웨이트 벡터 생성 과정을 설명하기 위한 예시적인 개념도를 나타낸다.
도 6은 본 개시의 예시적 실시 예에 따른 최적화 알고리즘 적용 방법의 순서도를 나타낸다.
도 7은 본 개시의 예시적 실시 예에 따른 연산 회로를 나타낸다.
도 8은 본 개시의 예시적 실시 예에 따른 웨이트 변환 및 디코딩 과정을 설명하기 위한 개념도를 나타낸다.
도 9는 본 개시의 예시적 실시 예에 따른 웨이트 변환 및 디코딩 과정의 순서도를 나타낸다.
도 10은 본 개시의 예시적 실시 예에 따른 쉬프트 및 합산 회로를 나타낸다.
도 11은 본 개시의 예시적 실시 예에 따른 전자 장치를 나타낸다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다.
도 1은 본 개시의 예시적 실시 예에 따른 전자 시스템(1)을 나타낸다. 전자 시스템(1)은 뉴럴 네트워크를 기초로 입력 데이터를 실시간으로 분석하여 유효한 정보를 추출하고, 추출된 정보를 기초로 상황을 판단하거나 전자 시스템(1)이 탑재되는 전자 장치의 구성들을 제어할 수 있다. 예를 들어, 전자 시스템(1)은 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 등과 같은 로봇 장치, 스마트 TV, 스마트 폰, 의료 장치, 모바일 장치, 영상 표시 장치, 계측 장치, IoT(Internet of Things) 장치 등에 적용될 수 있으며, 이외에도 다양한 종류의 전자 장치 중 하나에 탑재될 수 있다. 뉴럴 네트워크가 적용되는 전자 시스템(10)은 뉴럴 네트워크 시스템이라 칭해질 수 있다.
전자 시스템(1)은 연산 회로(10) 및 메모리(20)를 포함할 수 있다. 하지만 이에만 제한되는 것은 아니며, 전자 시스템(1)은 다양한 구성들을 더 포함할 수 있으며, 예를 들어, 프로세싱 유닛(processing unit), 프로세싱 유닛에 포함된 복수의 코어들(cores), MFC(Multi-Format Codec), 비디오 모듈(예컨대, 카메라 인터페이스, JPEG(Joint Photographic Experts Group) 프로세서, 비디오 프로세서, 또는 믹서 등), 3D 그래픽 코어, 오디오 시스템, 드라이버 디스플레이 드라이버, 휘발성 메모리, 비휘발성 메모리(non-volatile memory), 메모리 컨트롤러(memory controller), 입출력 인터페이스 블록(input and output interface block), 또는 캐시 메모리(cache memory) 중 적어도 하나를 더 포함할 수 있다.
연산 회로(10)는 뉴럴 네트워크를 생성하거나, 뉴럴 네트워크를 훈련(train) 또는 학습(learn)하거나, 수신되는 입력 데이터를 기초로 연산을 수행하고, 수행 결과를 기초로 정보 신호(information signal)를 생성하거나, 뉴럴 네트워크를 재훈련(retrain)할 수 있다. 뉴럴 네트워크의 모델들은 GoogleNet, AlexNet, VGG Network 등과 같은 CNN(Convolution Neural Network), R-CNN(Region with Convolution Neural Network), RPN(Region Proposal Network), RNN(Recurrent Neural Network), S-DNN(Stacking-based deep Neural Network), S-SDNN(State-Space Dynamic Neural Network), Deconvolution Network, DBN(Deep Belief Network), RBM(Restricted Boltzman Machine), Fully Convolutional Network, LSTM(Long Short-Term Memory) Network, Classification Network 등 다양한 종류의 모델들을 포함할 수 있으나 이에 제한되지는 않는다.
연산 회로(10)는 뉴럴 네트워크 프로세서(NPU)의 형태로 구현될 수 있는데, 뉴럴 네트워크 프로세서는 뉴럴 네트워크의 모델들에 따른 연산을 수행하기 위한 하나 이상의 프로세서를 포함할 수 있다. 또한, 뉴럴 네트워크 프로세서는 뉴럴 네트워크의 모델들에 대응되는 프로그램들을 저장하기 위한 별도의 메모리를 포함할 수도 있다. 뉴럴 네트워크 프로세서는 뉴럴 네트워크 처리 장치(neural network processing device), 뉴럴 네트워크 집적 회로(neural network integrated circuit) 또는 뉴럴 네트워크 처리 유닛(Neural network Processing Unit) 등으로 달리 호칭될 수 있다.
메모리(20)는 데이터를 저장하기 위한 저장 장소로서, 예를 들어, OS(Operating System), 각종 프로그램들 및 각종 데이터를 저장할 수 있다. 메모리(20)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리(20)는 휘발성 메모리(volatile memory) 또는 비휘발성 메모리(non-volatile memory) 중 적어도 하나를 포함할 수 있다. 비휘발성 메모리는 ROM(Read Only Memory), PROM(Programmable ROM), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), FRAM(Ferroelectric RAM) 등을 포함할 수 있다. 휘발성 메모리는 DRAM(Dynamic RAM), SRAM(Static RAM), SDRAM(Synchronous DRAM), PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), FRAM(Ferroelectric RAM) 등을 포함할 수 있다. 또한 일 실시 예에 있어서, 메모리(20)는 HDD(Hard Disk Drive), SSD(Solid State Drive), CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme digital) 또는 Memory Stick 중 적어도 하나를 포함할 수도 있다.
본 개시의 실시 예에 따른 메모리(20)는 연산 회로(10)의 연산에 이용되는 웨이트 매트릭스(W) 및 입력 피처 데이터(IF)를 저장할 수 있고, 연산 회로(10)의 요청 등에 의해 웨이트 매트릭스(W) 및 입력 피처 데이터(IF)를 연산 회로(10)에 제공할 수 있다.
연산 회로(10)는 메모리(20)로부터 제공되는 웨이트 매트릭스(W) 및 입력 피처 데이터(IF)를 이용해 소정의 연산을 수행함으로써 연산 결과(RST)를 생성할 수 있고, 연산 결과(RST)를 출력할 수 있다.
본 개시의 예시적 실시 예에 따른 연산 회로(10)는 웨이트 최적화 회로(100), 비트 단위 곱셈 및 누적 회로(200) 및 쉬프트 및 합산 회로(300)를 포함할 수 있다.
웨이트 최적화 회로(100)는 입력되는 웨이트 매트릭스(W)를 이용해 최적화된 웨이트 매트릭스(W_opt)를 출력할 수 있다. 최적화된 웨이트 매트릭스(W_opt)는 웨이트 매트릭스(W)의 행(row) 수와 같거나 더 작은 수 만큼의 행들을 포함할 수 있다. 즉, 웨이트 최적화 회로(100)를 거치면서 웨이트 매트릭스(W)의 사이즈가 작아진 최적화된 웨이트 매트릭스(W_opt)가 생성될 수 있는 것이다.
웨이트 매트릭스(W)는 구성요소 값이 '0' 또는 '1'이며, 웨이트 매트릭스(W)는 복수의 웨이트 벡터들을 포함할 수 있는데, 복수의 웨이트 벡터들 각각은 웨이트 매트릭스(W)의 각각의 행들(rows)에 대응되는 벡터일 수 있다.
웨이트 최적화 회로(100)는 복수의 웨이트 벡터들 각각에 대해 적어도 하나의 후보 웨이트 벡터를 생성할 수 있다. 예를 들어, 복수의 웨이트 벡터들 중 해당 웨이트 벡터에 대해, 웨이트 최적화 회로(100)는 포함된 '1'의 값이 감소된 적어도 하나의 후보 웨이트 벡터를 생성할 수 있다. 일 예에서, 웨이트 최적화 회로(100)는 '0' 또는 '1'로 구성된 해당 웨이트 벡터를 이용해 '-1', '0' 또는 '1'로 구성된 적어도 하나의 후보 웨이트 벡터를 생성(획득)할 수 있다. 이에 대한 구체적인 방법은 도 4를 참조하여 설명된다.
웨이트 최적화 회로(100)는 최적화된 웨이트 매트릭스(W_opt)를 비트 단위 곱셈 및 누적 회로(200)에 제공할 수 있다.
비트 단위 곱셈 및 누적 회로(200)는 최적화된 웨이트 매트릭스(W_opt) 및 입력 피처 데이터(IF)를 이용해 비트 단위 곱셈 및 누적 연산을 수행함으로써 중간 값(MV)을 생성해낼 수 있다. 비트 단위 곱셈 및 누적 연산은 도 2a 및 도 2b를 참조하여 보다 상세히 이해될 수 있다.
비트 단위 곱셈 및 누적 회로(200)는 중간 값(MV)을 쉬프트 및 합산 회로(300)에 제공할 수 있다.
쉬프트 및 합산 회로(300)는 중간 값(MV)의 비트를 필요에 따라 일부 쉬프트한 뒤 합산하는 연산을 수행함으로써 연산 결과(RST)를 출력할 수 있다. 쉬프트 및 합산 회로(300)는 실시 예에 따라 도 10과 같이 구현될 수 있다.
본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 시스템(1)은, 웨이트 매트릭스에 포함된 복수의 웨이트 벡터들에 대해 '1'을 최소화 하는 과정을 통해 적어도 하나의 후보 웨이트 벡터를 얻어내고, 최적화 알고리즘을 이용해 여러 후보 웨이트 벡터 조합들 중 변환된 웨이트 매트릭스의 행의 개수가 최소가 되게 하는 조합을 얻어냄으로써 연산의 속도를 향상시킴과 아울러 메모리 사용량을 감소시킬 수 있다.
또한, 변환된 웨이트 매트릭스에 포함된 '-1', '0' 또는 '1'을 플래그 값 및 '0'또는 '1'로만 표현함으로써 웨이트 매트릭스를 표현하는 데에 사용되는 비트 수를 감소시킴으로써 메모리 사용량을 줄일 수 있다.
도 2a 및 도 2b는 본 개시의 예시적 실시 예에 따른 비트 단위 곱셈 연산 방법을 설명하기 위한 도면이다.
도 2a를 참조하면, 많은 뉴럴 네트워크를 가속하는 과정에서 컨볼루션 연산 등을 수행해야 하는데, 예를 들어, 컨볼루션 연산은 입력 피처 데이터와 웨이트(가중치라고도 함) 사이의 많은 곱셈 및 덧셈 연산을 통해 이루어질 수 있다. 컨볼루션 과정에서는, 아래의 [수학식 1] 같은 곱셈 및 그 곱셈의 결과를 합하는 연산이 수행될 수 있다.
[수학식 1]
또한, 위와 같은 수학식 1의 연산을 비트 단위(bitwise) 연산으로 수행할 경우 아래와 같은 [수학식 2]를 통해 수행할 수 있다.
[수학식 2]
여기서 를 2진수로 표현하였을 때 b번째 비트의 값이다. 이와 같이 가 일렬로 나열되어 형성된 벡터를 웨이트 벡터라 칭하기로 한다. 그리고 이러한 웨이트 벡터들을 행으로 포함하는 개념을 웨이트 매트릭스라 칭하기로 한다(도 2a 우측 상단에 있는 매트릭스). 위와 같은 [수학식 2]의 연산은 크게 두 단계를 거쳐서 이루어질 수 있는데, 도 2a에 나와 있는 그림과 같이 을 계산한 뒤, 아래의 [수학식 3]과 같은 식을 통해 결과 값을 생성해낼 수 있다.
[수학식 3]
이와 같은 연산을 비트 단위 곱셈 및 누적 연산이라 칭하는데, 이와 같은 비트 단위 곱셈 및 누적 연산을 통해 연산 결과 값을 얻어낼 수 있는데, 웨이트 매트릭스에서 확인할 수 있다시피, 웨이트 매트릭스의 많은 요소(element) 값들이 '0'인 것을 확인할 수 있는데, 이는 실질적으로 연산 시 곱셈에 영향을 미치지 않는 값들인 바, 이 '0'의 양만 줄이더라도 메모리 사용량을 줄일 수 있다.
도 2b를 참조하면, 도 2a에 도시된 웨이트 매트릭스에서 각 열(column)에서 '0'을 제거함으로써 웨이트 매트릭스의 용량을 줄임과 아울러 연산의 양을 줄일 수 있다. 이하의 도면들을 참조하여 웨이트 매트릭스에 의해 메모리가 소요되는 양을 더 줄이는 방법에 대해 설명하기로 한다.
도 3은 본 개시의 예시적 실시 예에 따른 최적화된 웨이트 매트릭스 생성 방법의 순서도를 나타낸다. 도 3은 도 1을 함께 참조하여 설명된다.
웨이트 최적화 회로(100)는 웨이트 매트릭스(W)에 포함된 복수의 웨이트 벡터들 각각에 대해, '0' 또는 '1'로 표현된 해당 웨이트 벡터를 이용해 '-1', '0' 또는 '1'로 표현된 적어도 하나의 후보 웨이트 벡터를 획득할 수 있다(S120). S120 단계에 대해서는 도 4를 참조하여 보다 상세히 후술된다.
웨이트 최적화 회로(100)는 최적화 알고리즘을 이용해, 복수의 웨이트 벡터들 각각에 대해, 적어도 하나의 후보 웨이트 벡터 중 하나의 웨이트 벡터를 선택할 수 있다(S140). 이에 대해 부연 설명을 하자면, S120 단계를 통해 복수의 웨이트 벡터들 각각에 대해 획득된 적어도 하나의 후보 웨이트 벡터를 이용하여, 가능한 후보 웨이트 벡터 조합들을 생성해낼 수 있다. 웨이트 최적화 회로(100)는 최종적으로 생성된 최적화된 웨이트 매트릭스(W_opt)의 열 수가 최소화가 되도록 하는 후보 웨이트 벡터 조합을 선택할 수 있다. 이러한 과정을 통해, 웨이트 최적화 회로(100)는 복수의 웨이트 벡터들 각각에 대해, 적어도 하나의 후보 웨이트 벡터 중 하나의 웨이트 벡터를 선택할 수 있는 것이다. 즉, 최적화 알고리즘은 최적화된 웨이트 매트릭스(W_opt)의 열 수가 최소화되도록 만드는 알고리즘으로서, 예를 들어, 와버튼(Warburton) 근사 알고리즘 일 수 있다. 예를 들어, 웨이트 최적화 회로(100)는 와버튼 근사 알고리즘을 이용해 다중 객체 최단 경로(multi-objective shortest path) 문제를 해결할 수 있으며, 와버튼 근사 알고리즘의 결과를 이용하여 경로의 비용 값을 최소화 하는 후보 웨이트 벡터 조합을 선택해낼 수 있다.
웨이트 최적화 회로(100)는 복수의 웨이트 벡터들 각각에 대해 선택된 웨이트 벡터들을 하나의 행으로 하여 병합한 뒤, 열(column) 내의 '0'을 제거하는 과정을 통해 최적화된 웨이트 매트릭스(W_opt)를 출력할 수 있다(S160). 열 내의 '0'을 제거하는 과정은 도 2a의 웨이트 매트릭스를 이용해 도 2b의 우측 상단 변환된 웨이트 매트릭스를 만드는 과정을 참조하여 수행될 수 있다.
도 4는 본 개시의 예시적 실시 예에 따른 적어도 하나의 후보 웨이트 벡터 생성 방법의 순서도를 나타낸다. 도 4는 특히, 도 3의 S120 단계의 세부적인 순서도를 나타내는 것일 수 있다. 도 4 역시 도 1을 함께 참조하여 설명된다.
웨이트 최적화 회로(100)는 복수의 웨이트 벡터들 중 해당 웨이트 벡터를 제1 후보 웨이트 벡터로 설정할 수 있다(S121). 또한, 도 4에 표시된 'i'는 도 4를 참조해 설명되는 방법의 재귀적(recursive) 방식을 설명하기 위해 사용되는 재귀 변수(i)로서 참조되면 되는 것이며, 방법의 내용을 구성하는 것으로 해석되는 것은 아니다.
또한, 재귀적인 방법을 설명하기 위해 '현재 비트'라는 개념을 도입하기로 한다. 처음에는 초기 '현재 비트'가 당연히 최하위 비트라고 생각하면 된다(S122).
웨이트 최적화 회로(100)는 해당 웨이트 벡터 내에서 현재 비트로부터 상위 비트 방향으로 스캔하며 연속된 '1'이 시작되는 비트 및 끝나는 비트를 검색할 수 있다(S123). 이와 같이 검색된 '1'이 시작되는 비트부터 '1'이 끝나는 비트까지를 하나의 시퀀스라고 칭하기로 한다.
웨이트 최적화 회로(100)는 검색된 연속된 '1'을 포함하는 시퀀스의 최하위 비트의 값을 '-1'로, 시퀀스의 나머지 비트들의 값을 '0'으로 변환하고, 해당 웨이트 벡터 내에서 시퀀스보다 하나 상위의 비트의 값을 '1'로 변환함으로써 제i 후보 웨이트 벡터를 생성할 수 있다(S124). 이 때, 재귀 변수(i)는 1 증가시키는 것으로 한다.
웨이트 최적화 회로(100)는 상기 시퀀스보다 상위 비트에 '1'이 존재하는지를 판단할 수 있고(S125), '1'이 존재하는지 여부에 따라 다음 단계가 달리 수행될 수 있다. 존재하는 경우, S126단계로 진행하고, 존재하지 않는 경우 본 순서도가 종료된다.
시퀀스보다 상위 비트에 '1'이 존재하는 경우, '현재 비트'는 시퀀스보다 상위의 비트 중 '1'이 시작되는 비트로 설정될 수 있다(S126).
웨이트 최적화 회로(100)는 현재 비트가 최상위 비트인지를 판단할 수 있고(S127), 최상위 비트인지 여부에 따라 다음 단계가 달리 진행될 수 있다. 최상위 비트인 경우, S128 단계로 진행할 수 있으며, 최상위 비트가 아닌 경우에는 다시 S123 단계로 돌아가 이전의 단계들이 재귀적으로 수행될 수 있다.
현재 비트가 최상위 비트이며, 그 비트의 값이 '1'인 경우, 웨이트 최적화 회로(100)는 최상위 비트의 값을 '0'으로 변환시키면서, 해당 웨이트 벡터 내의 나머지 비트 값들을 모두 반전시킬 수 있다(S128). 여기서, 비트 값을 반전시킨다는 것은 '1'을 '-1'로 변환시키고, '-1'을 '1'로 변환시킨다는 것을 의미한다. 이는, 최상위 비트가 부호 비트라는 점을 고려하여 하나라도 '1'을 줄이기 위한 단계라고 생각할 수 있다.
도 5는 본 개시의 예시적 실시 예에 따른 후보 웨이트 벡터 생성 과정을 설명하기 위한 예시적인 개념도를 나타낸다. 도 5는 도 1 및 도 4를 함께 참조하여 설명된다.
'10110111'이 웨이트 벡터인 것으로 가정한다. 웨이트 최적화 회로(100)는 최하위 비트로부터 상위 비트의 방향으로 연속된 '1'을 포함하는 시퀀스를 검색할 수 있으며, 그 시퀀스의 가장 최하위 비트를 '-1'로 변경함과 아울러 시퀀스보다 하나 상위 비트의 '0'을 '1'로 변환할 수 있다. 이와 같이 변환을 적용한 수를 왼쪽 화살표로, 변환하지 않은 수를 오른쪽 화살표로 분류할 수 있다.
그리고 각각의 수에 대해 위와 같은 동작을 반복할 수 있다.
또한 최상위 비트에 도달한 경우에는 최상위 비트가 '0'이면 그냥 나머지 비트들을 그대로 두고, 최상위 비트가 '1'인 경우에는 최상위 비트를 '0'으로 변경하는 대신 나머지 비트들의 값을 반전시킨다.
이로 인해 '10110111'과 같은 웨이트 벡터에 대해서는 총 4개의 후보 웨이트 벡터가 형성될 수 있는 것이다.
도 6은 본 개시의 예시적 실시 예에 따른 최적화 알고리즘 적용 방법의 순서도를 나타낸다. 도 6은 특히 도 3의 S140 단계의 세부 순서도를 나타내는 것일 수 있다. 도 6은 도 1 및 도 3을 함께 참조하여 설명된다.
웨이트 최적화 회로(100)는 후보 웨이트 벡터들을 이용해 복수의 노드들을 포함하는 그래프를 생성할 수 있다(S142).
웨이트 최적화 회로(100)는 와버튼(Warburton) 근사 알고리즘을 이용하여 다중 객체 최단 경로(multi-objective shortest path) 문제를 해결할 수 있다(S144).
웨이트 최적화 회로(100)는 와버튼(Warburton) 근사 알고리즘의 결과를 이용하여 경로의 비용 값을 최소화 하는 후보 웨이트 벡터 조합을 선택할 수 있다(S146).
도 7은 본 개시의 예시적 실시 예에 따른 연산 회로(10)를 나타낸다. 도 7은 도 1에 도시된 연산 회로(10)와의 차이점을 중심으로 기술된다.
연산 회로(10)는 웨이트 최적화 회로(100), 비트 단위 곱셈 및 누적 회로(200) 및 쉬프트 및 합산 회로(300)를 포함할 수 있으며, 웨이트 변환 회로(400)를 더 포함할 수 있다. 비트 단위 곱셈 및 누적 회로(200)는 디코딩 회로(220)를 포함할 수 있다.
웨이트 변환 회로(400)는 최적화된 웨이트 매트릭스(W_opt)를 이용해 변환된 웨이트 매트릭스(W_tran) 및 플래그 정보(FI)를 함께 출력할 수 있다. 변환된 웨이트 매트릭스(W_tran) 및 플래그 정보(FI)는 최적화된 웨이트 매트릭스(W_opt)에 비해 그 용량을 더 줄인 데이터일 수 있다.
디코딩 회로(220)는 변환된 웨이트 매트릭스(W_tran) 및 플래그 정보(FI)를 이용하여 최적화된 웨이트 매트릭스(W_opt)를 복원해낼 수 있다.
웨이트 변환 회로(400)의 변환 방식과 디코딩 회로(220)의 디코딩 방식은 이하의 도 8을 참조하여 보다 상세히 설명된다.
도 8은 본 개시의 예시적 실시 예에 따른 웨이트 변환 및 디코딩 과정을 설명하기 위한 개념도를 나타낸다. 도 8은 도 7을 함께 참조하여 설명된다.
도 8의 좌측에서 확인할 수 있다시피, 최적화된 웨이트 매트릭스(W_opt)는 '-1', '0' 및 '1'로 구성되어 있기 때문에 이를 표현하는 데 많은 비트 수를 차지하게 된다. 따라서, '-1', '0', '1' 각각을 2비트로 표현하는 대신에 플래그 정보를 두어 1비트로 이 값들을 표현할 수 있다.
플래그 정보를 이용한 값의 표현과 관련해서는, 아래의 [표 1]과 같은 규칙이 적용될 수 있다.
[표 1]
즉 플래그 값이 '0'일 때는 '0'의 디코딩 값(실제 값)은 '0'을 나타내는 것이고, '1'의 디코딩 값(실제 값)은 '-1'을 나타내는 것이다. 또한, 플래그 값이 '1'일 때는 '0'의 디코딩 값(실제 값)은 '-1'을 나타내는 것이고, '1'의 디코딩 값(실제 값)은 '1'을 나타내는 것이다.
따라서, 도 8의 우측을 살피면, 0번째 열의 경우 플래그 값이 중간에 '1'에서 '0'로 바뀌게 되는데, '0'으로 바뀌는 것이 적용되는 시점이 3번째 행에서 4번째 행으로 넘어가는 시점이라는 정보도 저장이 될 필요가 있다. 따라서 도 8의 우측에 나타난 빨간 화살표가 바로 디코딩 과정을 나타내는 것인데, 플래그 값이 '1'인 동안에, '0'은 '-1'로, '1'은 '1'로 디코딩 되는 것을 확인할 수 있는 반면, 플래그 값이 '0'으로 바뀐 후에 '0'은 '0'으로 디코딩 된 것을 확인할 수 있다.
마찬가지로 1번째 열의 경우 플래그 값이 계속 '0'이기 때문에, '1'은 '-1'로 디코딩 되며, '0'은 '0'으로 디코딩 된다.
2번째 열의 경우 플래그 값이 중간에 '1'에서 '0'으로 바뀌게 되는데, '0'으로 바뀌는 것이 적용되는 시점이 두 번째 행에서 세 번째 행으로 넘어가는 시점이라는 정보도 저장될 필요가 있다. 즉, 플래그 값이 '1'인 동안에는 '1'이 '1'로 디코딩 되는 것을 확인할 수 있는 반면, 플래그 값이 '0'으로 바뀐 후에 '0'은 '0'으로 디코딩 된 것을 확인할 수 있다.
마찬가지로 3번째 열의 경우 플래그 값이 계속 '0'이기 때문에 '0'은 '0'으로 디코딩 된다.
이와 같은 과정을 통해, 각각이 2-비트로 표현되어야 했던 최적화된 웨이트 매트릭스(W_opt)를 더 적은 용량을 차지하는 변환된 웨이트 매트릭스(W_tran) 및 플래그 정보(FI)로 변환할 수 있다.
도 9는 본 개시의 예시적 실시 예에 따른 웨이트 변환의 순서도를 나타낸다. 도 9는 특히, 플래그 정보를 생성하는 단계를 나타내는 것일 수 있으며, 도 9는 도 7을 함께 참조하여 설명된다.
웨이트 변환 회로(400)는 최적화된 웨이트 매트릭스(W_opt) 내에서 모든 행이 '-1' 및 '0'으로만 구성된 열에 대응되는 플래그 값은 '0'으로 설정할 수 있다(S220).
웨이트 변환 회로(400)는 행에 '1'이 포함된 경우, '1'에서 '0'으로 바뀌는 행에서 플래그 값이 '1'에서 '0'으로 바뀌도록, '0'에서 '1'로 바뀌는 행에서 플래그 값이 '0'에서 '1'로 바뀌도록 플래그 값들을 설정함으로써 플래그 정보(FI)를 생성해낼 수 있다(S240).
도 10은 본 개시의 예시적 실시 예에 따른 쉬프트 및 합산 회로(300)를 나타낸다.
연산이 수행되는 경우 최하위 비트에 대한 연산량이 최상위 비트에 대한 연산량보다 현저히 많아 최하위 비트에 대한 연산으로 인한 병목현상이 발생할 수 있다. 이를 위해, 최하위 비트의 연산 일부를 최상위 비트에 대응되는 하드웨어 소스에게 담당시킬 수 있다.
예를 들어, 도 10을 참조하면, 가중치를 16자리 사용하는 경우, S0~S1는 1만 쉬프트(shift)되며, S2부터 S15까지는 각각 2~15만큼 쉬프트(shift)될 수 있다. 가중치를 8자리 사용하는 경우(int8=1), S0~S1 및 S8~S9는 1만 쉬프트(shift)되고, S2~S7 및 S10~S15는 각각 2~7만큼 쉬프트(shift)될 수 있다. 즉, 가장 오른쪽 비트(bit)에 대한 연산은 S0~S1 / S8~S9 (8자리 사용의 경우)에서 나누어 처리하며, 입력 데이터는 하드웨어에서 불러오기 전부터 가장 오른쪽 비트(bit)가 둘로 나누어진 상태인 것이다. 그리고 최종적으로 오른쪽으로 1 만큼 쉬프트(shift) 시켜 연산 결과를 도출할 수 있다.
도 10과 같은 구조를 통해, 하드웨어가 8자리 연산과 16자리 연산 모두를 지원할 수 있다.
도 11은 본 개시의 예시적 실시 예에 따른 전자 장치(1000)를 나타낸다. 전자 장치(1000)는 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS), 스마트 TV, 스마트 폰, 의료 장치, 모바일 장치, 영상 표시 장치, 계측 장치, IoT(Internet of Things) 장치 등에 적용될 수 있으며, 이외에도 다양한 종류의 전자 장치 중 하나로 구현될 수 있다.
실시 예에 있어서, 전자 장치(1000)의 구성요소들, 메인 프로세서(1300), RAM(1200), 뉴럴 네트워크 프로세서(1100), 입출력 장치(1400) 및 메모리(1500)는 하나의 반도체 칩으로 구현될 수 있으며, 예컨대, 전자 장치(1000)는 시스템 온 칩(SoC)으로서 구현될 수 있다. 그러나 이에 제한되는 것은 아니며, 전자 장치(1000)는 복수의 반도체 칩들로 구현될 수 있다. 일 실시 예에서, 전자 장치(1000)는 모바일 장치에 탑재되는 어플리케이션 프로세서로 구현될 수도 있다.
메인 프로세서(1300)는 전자 장치(1000)의 전반적인 동작을 제어할 수 있으며, 일 예로서 메인 프로세서(1300)는 중앙 프로세싱 유닛(Central Processing Unit; CPU)일 수 있다. 메인 프로세서(1300)는 하나의 코어(Single Core)를 포함하거나, 복수의 코어들(Multi-Core)을 포함할 수 있다. 메인 프로세서(1300)는 RAM(1200) 및 메모리(1500)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 예를 들어, 메인 프로세서(1300)는 메모리(1500)에 저장된 프로그램들을 실행함으로써 전자 장치(1000)의 다양한 기능들을 제어할 수 있다.
RAM(1200)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대, 메모리(1500)에 저장된 프로그램들 및/또는 데이터는 메인 프로세서(1300)의 제어 또는 부팅 코드에 따라 RAM(1200)에 일시적으로 로딩될 수 있다. RAM(1200)은 DRAM(Dynamic RAM) 또는 SRAM(Static RAM) 등의 메모리를 이용해 구현될 수 있다.
입출력 장치(1400)는 사용자로부터 또는 외부로부터 입력 데이터를 수신하고, 전자 장치(1000)의 데이터 처리 결과를 출력할 수 있다. 입출력 장치(1400)는 터치 스크린 패널, 키보드, 다양한 종류의 센서들 중 적어도 하나를 이용해 구현될 수 있다. 실시 예에서, 입출력 장치(1400)는 전자 장치(1000) 주변의 정보를 수집할 수 있다. 예컨대 입출력 장치(1400)는 촬상 장치, 이미지 센서, 라이더(LIDAR; light detection and ranging) 센서, 초음파 센서, 적외선 센서 등 다양한 종류의 센싱 장치들 중 적어도 하나를 포함하거나, 또는 상기 장치로부터 센싱 신호를 수신할 수 있다. 실시 예에서, 입출력 장치(1400)는 전자 장치(1000) 외부로부터 이미지 신호를 센싱 또는 수신할 수 있고, 센싱 또는 수신된 이미지 신호를 이미지 데이터, 즉 이미지 프레임으로 변환할 수 있다. 입출력 장치(1400)는 이미지 프레임을 메모리(1500)에 저장하거나, 또는 뉴럴 네트워크 프로세서(1100)에 제공할 수 있다.
메모리(1500)는 데이터를 저장하기 위한 저장 장소로서, 예를 들어, OS(Operating System), 각종 프로그램들 및 각종 데이터를 저장할 수 있다. 메모리(1500)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리(1500)는 휘발성 메모리(volatile memory) 또는 비휘발성 메모리(non-volatile memory) 중 적어도 하나를 포함할 수 있다. 비휘발성 메모리는 ROM(Read Only Memory), PROM(Programmable ROM), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), FRAM(Ferroelectric RAM) 등을 포함할 수 있다. 휘발성 메모리는 DRAM(Dynamic RAM), SRAM(Static RAM), SDRAM(Synchronous DRAM) 등을 포함할 수 있다. 또한 일 실시 예에 있어서, 메모리(150)는 HDD(Hard Disk Drive), SSD(Solid-State Drive), CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme digital) 또는 Memory Stick 등과 같은 저장 장치로 구현될 수 있다.
뉴럴 네트워크 프로세서(1100)는 앞선 도면들을 참조해 설명된 연산 회로(10)와 같이 구현될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시 예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시 예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (16)

  1. 뉴럴 네트워크 시스템에 사용되는 연산 회로의 연산 방법으로서,
    복수의 웨이트 벡터들을 포함하는 웨이트 매트릭스를 획득하는 단계; 및
    상기 웨이트 매트릭스 및 입력 피처 데이터를 이용해 곱셈 및 누적 연산을 수행하는 단계를 포함하고,
    상기 웨이트 매트릭스를 획득하는 단계는,
    상기 복수의 웨이트 벡터들 각각에 대해, '0' 또는 '1'로만 표현된 웨이트 벡터를 이용해 '-1', '0' 또는 '1'로만 표현된 적어도 하나의 후보 웨이트 벡터를 획득하는 단계;
    최적화 알고리즘을 이용해, 상기 복수의 웨이트 벡터들 각각에 대하여 상기 적어도 하나의 후보 웨이트 벡터 중 하나의 웨이트 벡터를 선택하는 단계; 및
    상기 복수의 웨이트 벡터들 각각에 대해 선택된 웨이트 벡터들을 병합함으로써 획득된 매트릭스에서 '0'을 제거하는 과정을 통해 상기 웨이트 매트릭스를 획득하는 단계를 포함하며,
    상기 후보 웨이트 벡터를 획득하는 단계는,
    해당 웨이트 벡터를 제1 후보 웨이트 벡터로 생성하는 단계;
    상기 해당 웨이트 벡터의 하위 비트로부터 상위 비트 방향으로 스캔함으로써 연속된 '1'이 포함된 시퀀스를 검색하는 단계;
    상기 해당 웨이트 벡터에서, 상기 검색된 시퀀스에 포함된 최하위 비트의 값을 '-1'로 변환하고, 상기 검색된 시퀀스의 나머지 비트의 값을 '0'으로 변환하고, 상기 시퀀스의 최상위 비트보다 하나의 상위 비트의 값을 '1'로 변환함으로써 제2 후보 웨이트 벡터를 생성하는 단계;
    상기 제1 후보 웨이트 벡터 및 상기 제2 후보 웨이트 벡터 각각에 대해 상기 시퀀스보다 상위 비트에 '1'이 존재하는지 여부를 판단하는 단계;
    상기 시퀀스보다 상위 비트에 존재하는 '1'이 상기 제1 후보 웨이트 벡터 및 상기 제2 후보 웨이트 벡터 각각의 최상위 비트인지를 판단하는 단계;
    상기 시퀀스보다 상위 비트에 존재하는 '1'이 상기 제1 후보 웨이트 벡터 및 상기 제2 후보 웨이트 벡터 중 적어도 하나의 벡터의 최상위 비트가 아니고, 상기 시퀀스보다 상위 비트에 존재하는 '1'로부터 상위 비트 방향으로 연속된 '1'이 포함된 시퀀스가 검색된 경우 상기 제1 후보 웨이트 벡터 및 상기 제2 후보 웨이트 벡터와 구분되는 후보 웨이트 벡터를 생성하는 단계;
    상기 시퀀스보다 상위 비트에 존재하는 '1'이 상기 제1 후보 웨이트 벡터 및 상기 제2 후보 웨이트 벡터의 최상위 비트인 경우, 상기 제1 후보 웨이트 벡터 및 상기 제2 후보 웨이트 벡터 각각의 최상위 비트를 제외한 나머지 비트 값들을 모두 반전시킴으로써 상기 제1 후보 웨이트 벡터 및 상기 제2 후보 웨이트 벡터를 변환하는 단계
    를 포함하는 것을 특징으로 하는 연산 회로의 연산 방법.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 제1항에 있어서,
    획득한 상기 웨이트 매트릭스를 기반으로 변환된 웨이트 매트릭스 및 상기 변환된 웨이트 매트릭스 내 비트 값에 대한 디코딩 값을 지시하는 플래그 정보를 출력하는 단계를 더 포함하며,
    상기 웨이트 매트릭스는, '-1', '0' 및 '1'이 2 비트로 표현되며,
    상기 변환된 웨이트 매트릭스는, 상기 플래그 정보를 이용하여 1 비트로 표현된 것을 특징으로 하는 연산 회로의 연산 방법.
  9. 뉴럴 네트워크 장치에서 사용되는 연산 회로로서,
    복수의 웨이트 벡터들을 포함하는 웨이트 매트릭스를 수신하고, 상기 복수의 웨이트 벡터들 각각에 대응되며 벡터 내 '0'의 개수를 증가시킨 적어도 하나의 후보 웨이트 벡터를 생성하고, 상기 적어도 하나의 후보 웨이트 벡터 중 하나의 선택된 웨이트 벡터를 이용해 웨이트 매트릭스를 획득 및 출력하도록 구성되는 웨이트 최적화 회로;
    상기 웨이트 최적화 회로로부터 제공되는 상기 웨이트 매트릭스와 입력 피처 데이터를 이용해 비트 단위 곱셈 및 누적 연산함으로써 중간 값을 출력하도록 구성되는 비트 단위 곱셈 및 누적 회로; 및
    상기 중간 값을 쉬프트(shift) 및 합산함으로써 연산 결과를 출력하도록 구성되는 쉬프트 및 합산 회로를 포함하며,
    상기 웨이트 최적화 회로는,
    해당 웨이트 벡터를 제1 후보 웨이트 벡터로 생성하고, 상기 해당 웨이트 벡터의 하위 비트로부터 상위 비트 방향으로 스캔함으로써 연속된 '1'이 포함된 시퀀스를 검색하며, 상기 해당 웨이트 벡터에서, 상기 검색된 시퀀스에 포함된 최하위 비트의 값을 '-1'로 변환하고, 상기 검색된 시퀀스의 나머지 비트의 값을 '0'으로 변환하고, 상기 시퀀스의 최상위 비트보다 하나의 상위 비트의 값을 '1'로 변환함으로써 제2 후보 웨이트 벡터를 생성하고, 상기 제1 후보 웨이트 벡터 및 상기 제2 후보 웨이트 벡터 각각에 대해 상기 시퀀스보다 상위 비트에 '1'이 존재하는지 여부를 판단하며, 상기 시퀀스보다 상위 비트에 존재하는 '1'이 상기 제1 후보 웨이트 벡터 및 상기 제2 후보 웨이트 벡터 각각의 최상위 비트인지를 판단하고, 상기 시퀀스보다 상위 비트에 존재하는 '1'이 상기 제1 후보 웨이트 벡터 및 상기 제2 후보 웨이트 벡터 각각의 최상위 비트가 아니고, 상기 시퀀스보다 상위 비트에 존재하는 '1'로부터 상위 비트 방향으로 연속된 '1'이 포함된 시퀀스가 검색된 경우 상기 제1 후보 웨이트 벡터 및 상기 제2 후보 웨이트 벡터와 구분되는 후보 웨이트 벡터를 생성하며, 상기 시퀀스보다 상위 비트에 존재하는 '1'이 상기 제1 후보 웨이트 벡터 및 상기 제2 후보 웨이트 벡터의 최상위 비트인 경우, 상기 제1 후보 웨이트 벡터 및 상기 제2 후보 웨이트 벡터 각각의 최상위 비트를 제외한 나머지 비트 값들을 모두 반전시킴으로써 상기 제1 후보 웨이트 벡터 및 상기 제2 후보 웨이트 벡터를 변환하는 것을 특징으로 하는 연산 회로.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 제9항에 있어서,
    상기 쉬프트 및 합산 회로는,
    상기 중간 값의 최하위 비트에 대한 연산의 일부를 최상위 비트에 대한 하드웨어 자원을 이용해 수행하도록 구성되는 것을 특징으로 하는 연산 회로.
  15. 뉴럴 네트워크 장치로서,
    복수의 웨이트 벡터들을 포함하는 웨이트 매트릭스 및 입력 피처 데이터를 저장하도록 구성되는 메모리; 및
    상기 매트릭스 및 상기 메모리로부터 제공되는 상기 입력 피처 데이터를 이용해 곱셈 및 누적 연산을 수행함으로써 연산 결과를 출력하도록 구성되는 연산 회로를 포함하고,
    상기 연산 회로는,
    상기 복수의 웨이트 벡터들 각각에 대해, '0' 또는 '1'로만 표현된 해당 웨이트 벡터를 이용해 상기 해당 웨이트 벡터를 제1 후보 웨이트 벡터로 생성하고, 상기 해당 웨이트 벡터의 하위 비트로부터 상위 비트 방향으로 스캔함으로써 연속된 '1'이 포함된 시퀀스를 검색하며, 상기 해당 웨이트 벡터에서, 상기 검색된 시퀀스에 포함된 최하위 비트의 값을 '-1'로 변환하고, 상기 검색된 시퀀스의 나머지 비트의 값을 '0'으로 변환하고, 상기 시퀀스의 최상위 비트보다 하나의 상위 비트의 값을 '1'로 변환함으로써 제2 후보 웨이트 벡터를 생성하고, 상기 제1 후보 웨이트 벡터 및 상기 제2 후보 웨이트 벡터 각각에 대해 상기 시퀀스보다 상위 비트에 '1'이 존재하는지 여부를 판단하며, 상기 시퀀스보다 상위 비트에 존재하는 '1'이 상기 제1 후보 웨이트 벡터 및 상기 제2 후보 웨이트 벡터 각각의 최상위 비트인지를 판단하고, 상기 시퀀스보다 상위 비트에 존재하는 '1'이 상기 제1 후보 웨이트 벡터 및 상기 제2 후보 웨이트 벡터 중 적어도 하나의 벡터의 최상위 비트가 아니고, 상기 시퀀스보다 상위 비트에 존재하는 '1'로부터 상위 비트 방향으로 연속된 '1'이 포함된 시퀀스가 검색된 경우 상기 제1 후보 웨이트 벡터 및 상기 제2 후보 웨이트 벡터와 구분되는 후보 웨이트 벡터를 생성하며, 상기 시퀀스보다 상위 비트에 존재하는 '1'이 상기 후보 웨이트 벡터의 최상위 비트인 경우, 상기 제1 후보 웨이트 벡터 및 상기 제2 후보 웨이트 벡터의 최상위 비트를 제외한 나머지 비트 값들을 모두 반전시킴으로써 상기 제1 후보 웨이트 벡터 및 상기 제2 후보 웨이트 벡터를 변환함으로써 '-1', '0' 또는 '1'로만 표현된 적어도 하나의 상기 후보 웨이트 벡터를 획득하고, 최적화 알고리즘을 이용해, 상기 복수의 웨이트 벡터들 각각에 대해, 상기 적어도 하나의 후보 웨이트 벡터 중 하나의 웨이트 벡터를 선택하고, 상기 복수의 웨이트 벡터들 각각에 대해 선택된 웨이트 벡터들을 병합함으로써 획득된 매트릭스에서 '0'을 제거하는 과정을 통해 상기 웨이트 매트릭스를 획득하도록 구성되는 것을 특징으로 하는 뉴럴 네트워크 장치.
  16. 삭제
KR1020200173673A 2020-12-11 2020-12-11 연산 회로, 그것의 연산 방법 및 뉴럴 네트워크 장치 KR102573202B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200173673A KR102573202B1 (ko) 2020-12-11 2020-12-11 연산 회로, 그것의 연산 방법 및 뉴럴 네트워크 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200173673A KR102573202B1 (ko) 2020-12-11 2020-12-11 연산 회로, 그것의 연산 방법 및 뉴럴 네트워크 장치

Publications (2)

Publication Number Publication Date
KR20220083434A KR20220083434A (ko) 2022-06-20
KR102573202B1 true KR102573202B1 (ko) 2023-08-30

Family

ID=82257724

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200173673A KR102573202B1 (ko) 2020-12-11 2020-12-11 연산 회로, 그것의 연산 방법 및 뉴럴 네트워크 장치

Country Status (1)

Country Link
KR (1) KR102573202B1 (ko)

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
G. A. Ruiz 등. "Efficient canonic signed digit recoding". Microelectronics Journal*
H. Lu 등. "Tetris: Re-architecting Convolutional Neural Network Computation for Machine Learning Accelerators". IEEE/ACM International Conference on Computer-Aided Design*
H. Refael. "Approximation schemes for the restricted shortest path problem". Mathematics of Operations research*
M. Riaz 등. "CAxCNN: Towards the Use of Canonic Sign Digit Based Approximation for Hardware-Friendly Convolutional Neural Networks". IEEE Access*

Also Published As

Publication number Publication date
KR20220083434A (ko) 2022-06-20

Similar Documents

Publication Publication Date Title
CN112990297B (zh) 多模态预训练模型的训练方法、应用方法及装置
US11822898B2 (en) Semiconductor memory device employing processing in memory (PIM) and method of operating the semiconductor memory device
KR102637733B1 (ko) 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법
CN111767986A (zh) 一种基于神经网络的运算方法及装置
CN112101512A (zh) 采样装置和采样方法
CN112005251A (zh) 运算处理装置
CN114694005A (zh) 目标检测模型训练方法和装置、目标检测方法和装置
CN112925505A (zh) 算术设备、算术设备的操作方法和神经网络处理器
Song et al. Rebnn: in-situ acceleration of binarized neural networks in reram using complementary resistive cell
CN113033790A (zh) 神经网络装置及其操作方法
KR102573202B1 (ko) 연산 회로, 그것의 연산 방법 및 뉴럴 네트워크 장치
JP4865662B2 (ja) エントロピー符号化装置、エントロピー符号化方法およびコンピュータプログラム
US11694301B2 (en) Learning model architecture for image data semantic segmentation
US11567690B2 (en) Semiconductor memory device and electronic system the same
US20200356844A1 (en) Neural network processor for compressing featuremap data and computing system including the same
CN112348057A (zh) 一种基于yolo网络的目标识别方法与装置
CN109582911B (zh) 用于实行卷积的计算装置及实行卷积的计算方法
US20220188612A1 (en) Npu device performing convolution operation based on the number of channels and operating method thereof
JP4128439B2 (ja) 配列圧縮方法
CN113554042A (zh) 神经网络及其训练方法
JP2017169022A (ja) 動画像符号化装置、方法、プログラム、および動画像符号化システム
KR102504007B1 (ko) 분할 이미지를 통해 컨텍스트 벡터를 생성하는 컨텍스트 벡터 추출 모듈 및 이의 동작 방법
TWI834729B (zh) 神經網路處理器及其卷積操作方法
JP5174233B2 (ja) 電子署名プログラム、電子署名装置、および電子署名方法
CN116777727B (zh) 存算一体芯片、图像处理方法、电子设备及存储介质

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant