KR20180073118A - 컨볼루션 신경망 처리 방법 및 장치 - Google Patents

컨볼루션 신경망 처리 방법 및 장치 Download PDF

Info

Publication number
KR20180073118A
KR20180073118A KR1020160176617A KR20160176617A KR20180073118A KR 20180073118 A KR20180073118 A KR 20180073118A KR 1020160176617 A KR1020160176617 A KR 1020160176617A KR 20160176617 A KR20160176617 A KR 20160176617A KR 20180073118 A KR20180073118 A KR 20180073118A
Authority
KR
South Korea
Prior art keywords
kernel
convolution
input
neural network
output
Prior art date
Application number
KR1020160176617A
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 KR1020160176617A priority Critical patent/KR20180073118A/ko
Priority to EP17207744.8A priority patent/EP3349153B1/en
Priority to CN201711365593.1A priority patent/CN108229655B/zh
Priority to US15/848,298 priority patent/US11915119B2/en
Publication of KR20180073118A publication Critical patent/KR20180073118A/ko
Priority to US18/413,946 priority patent/US20240152729A1/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/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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/044Recurrent networks, e.g. Hopfield networks
    • 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
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of 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/048Activation functions
    • 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
    • G06N99/005
    • 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

Landscapes

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

Abstract

컨볼루션 신경망 처리 방법 및 장치가 개시된다. 일실시예에 따른 컨볼루션 신경망 처리 장치는 고속 컨볼루션 망을 통한 입력 및 커널 사이의 고속 컨볼루션 연산을 수행하여, 정밀 컨볼루션 망 내 서바이벌 망(survival network)을 선택하고, 서바이벌 망을 이용하여 입력 및 커널 사이의 정밀 컨볼루션 연산을 수행할 수 있다.

Description

컨볼루션 신경망 처리 방법 및 장치{CONVOLUTIONAL NEURAL NETWORK PROCESSING METHOD AND APPARATUS}
아래 실시예들은 컨볼루션 신경망의 처리 기술에 관한 것이다.
뉴럴 네트워크 기반의 딥러닝(deep learning) 기술은 다양한 분야에서 활용되고 있다. 예를 들어, 얼굴, 홍채, 음성 등을 인식하는 딥러닝 기반 생체 인식/인증 어플리케이션은 임베디드 단말(예를 들어, 스마트 폰)에 채용된다. 컨볼루션 신경망(Convolutional Neural Network; CNN)은 컨볼루션 연산을 활용하는 다 계층 신경망으로서, 딥러닝 기반 영상 및 음성 인식 분야에서 좋은 성능을 보여준다.
일실시예에 따른 심층 신경망(Deep Neural Network)의 가속화 알고리즘은 스마트폰 등의 제한된 임베디드 시스템에서 인식 또는 인증 동작의 고속 처리를 성능 저하 없이 제공할 수 있다. 일실시예에 따른 CNN을 이용한 인식 기술은 제한된 리소스의 단말 환경에서 구동이 가능하며, 다양한 환경에서 강인한 성능을 제공한다. 예를 들어, 일실시예에 따른 CNN의 처리 기법은 얼굴 인식기를 스마트 폰의 트러스트존(Trust-Zone) 내에서 제한된 시간 내에 반응하도록 구현될 수 있다. CNN의 처리 기법은 싱글-코어로 구동되는 등 제한된 컴퓨팅 자원만 이용하여 구현될 수도 있다. 주어진 데이터에 행렬 곱셉 연산을 적용하는 CNN에 있어서, 일 실시예에 따른 CNN의 처리 기법은 연산 횟수를 줄여 CNN의 고속 처리를 제공한다.
일실시예에 따른 컨볼루션 신경망 처리 방법은 고속 컨볼루션 망을 통한 입력 및 커널 사이의 고속 컨볼루션 연산을 수행하여, 정밀 컨볼루션 망 내 서바이벌 망(survival network)을 선택하는 단계; 및 상기 서바이벌 망을 이용하여 상기 입력 및 상기 커널 사이의 정밀 컨볼루션 연산을 수행하는 단계를 포함한다.
일실시예에 따르면, 상기 서바이벌 망을 선택하는 단계는 상기 고속 컨볼루션 연산 결과에 기초하여, 상기 정밀 컨볼루션 연산에 기여하는 적어도 하나의 입력 요소의 인덱스 및 적어도 하나의 커널 요소의 인덱스를 획득하는 단계; 및 상기 입력 요소의 인덱스 및 상기 커널 요소의 인덱스에 기초하여 상기 서바이벌 망을 선택하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 서바이벌 망을 선택하는 단계는 상기 고속 컨볼루션 연산을 수행하여 근사 출력을 획득하는 단계; 상기 근사 출력에 포함된 출력 요소들 중 상기 정밀 컨볼루션 연산에 기여하는 적어도 하나의 출력 요소를 선택하는 단계; 및 상기 정밀 컨볼루션 망으로부터 상기 출력 요소와 연관된 상기 서바이벌 망을 역방향으로(backward) 선택하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 출력 요소를 선택하는 단계는 ReLU(Rectified Linear Unit) 레이어를 이용하여 상기 출력 요소들의 ReLU 연산을 수행하는 단계; 및 상기 ReLU 연산 결과들에 기초하여, 비-제로(non-zero) 값에 대응하는 상기 출력 요소를 선택하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 출력 요소를 선택하는 단계는 ReLU(Rectified Linear Unit) 레이어를 이용하여 상기 출력 요소들의 ReLU 연산을 수행하는 단계; 맥스 풀링(Max Pooling) 레이어를 이용하여 상기 ReLU 연산 결과들의 맥스 풀링 연산을 수행하는 단계; 및 상기 맥스 풀링 연산 결과들에 기초하여, 대표 값에 대응하는 상기 출력 요소를 선택하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 출력 요소를 선택하는 단계는 상기 출력 요소들이 임계값을 초과하는지 여부를 판단하는 비교 연산을 수행하는 단계; 및 상기 비교 연산 결과들에 기초하여, 비-제로(non-zero) 값에 대응하는 상기 출력 요소를 선택하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 서바이벌 망을 선택하는 단계는 상기 고속 컨볼루션 연산을 수행하여 근사 출력을 획득하는 단계; 상기 근사 출력에 포함된 출력 요소들 중 상기 정밀 컨볼루션 연산에 기여하는 적어도 하나의 출력 요소를 선택하는 단계; 및 상기 정밀 컨볼루션 망으로부터 상기 출력 요소와 무관한 잉여 망(redundant network)을 역방향으로(backward) 제거하여, 상기 서바이벌 망을 선택하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 출력 요소를 선택하는 단계는 ReLU(Rectified Linear Unit) 레이어를 이용하여 상기 출력 요소들의 ReLU 연산을 수행하는 단계; 상기 ReLU 연산 결과들을 적어도 하나의 그룹으로 그룹화하는 단계; 및 상기 그룹 내 비-제로(non-zero) 값들 중에서 최대값 또는 최대값과의 차이가 임계값보다 작은 값에 대응하는 상기 출력 요소를 선택하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 출력 요소를 선택하는 단계는 상기 출력 요소들이 제1 임계값을 초과하는지 여부를 판단하는 비교 연산을 수행하는 단계; 상기 비교 연산 결과들을 적어도 하나의 그룹으로 그룹화하는 단계; 및 상기 그룹 내 비-제로(non-zero) 값들 중에서 최대값 또는 최대값과의 차이가 제2 임계값보다 작은 값에 대응하는 상기 출력 요소를 선택하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 서바이벌 망을 선택하는 단계는 상기 입력 및 서브 커널들(상기 서브 커널들은 상기 커널이 분해되어 생성됨) 사이의 컨볼루션 연산을 연쇄적으로 수행하여, 상기 고속 컨볼루션 연산을 수행하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 고속 컨볼루션 연산을 수행하는 단계는 상기 입력 및 제1 서브 커널 사이의 제1 컨볼루션 연산을 수행하는 단계; 및 상기 제1 컨볼루션 연산 결과 및 제2 서브 커널 사이의 제2 컨볼루션 연산을 수행하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 서브 커널들은 상기 입력 및 상기 서브 커널들 사이의 연쇄적인 컨볼루션 연산 결과의 ReLU 연산 결과와 상기 입력 및 상기 커널 사이의 컨볼루션 연산 결과의 ReLU 연산 결과 사이의 차이가 최소화되도록 정의될 수 있다.
일실시예에 따르면, 상기 서브 커널들은 상기 입력 및 상기 서브 커널들 사이의 연쇄적인 컨볼루션 연산 결과와 상기 입력 및 상기 커널 사이의 컨볼루션 연산 결과의 ReLU 연산 결과 사이의 차이가 최소화되도록 정의될 수 있다.
일실시예에 따르면, 상기 서바이벌 망을 선택하는 단계는 상기 입력에 포함된 입력 요소의 상위 비트(bit) 및 상기 커널에 포함된 커널 요소의 상위 비트를 이용하여, 상기 고속 컨볼루션 연산을 수행하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 고속 컨볼루션 연산을 수행하는 단계는 상기 입력을 상위 비트에 대응하는 상위 비트 입력 및 하위 비트에 대응하는 하위 비트 입력으로 분리하는 단계; 상기 커널을 상위 비트에 대응하는 상위 비트 커널 및 하위 비트에 대응하는 하위 비트 커널로 분리하는 단계; 및 상기 상위 비트 입력 및 상기 상위 비트 커널 사이의 컨볼루션 연산을 수행하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 정밀 컨볼루션 연산을 수행하는 단계는 상기 상위 비트 입력 및 상기 하위 비트 커널 사이의 제2 컨볼루션 연산을 수행하는 단계; 상기 하위 비트 입력 및 상기 상위 비트 커널 사이의 제3 컨볼루션 연산을 수행하는 단계; 상기 하위 비트 입력 및 상기 하위 비트 커널 사이의 제4 컨볼루션 연산을 수행하는 단계; 및 상기 고속 컨볼루션 연산 결과, 상기 제2 컨볼루션 연산 결과, 상기 제3 컨볼루션 연산 결과 및 상기 제4 컨볼루션 연산 결과를 결합하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 커널은 적어도 하나의 필터를 포함하고, 상기 필터는 적어도 하나의 입력 채널에 대응하는 적어도 하나의 커널 맵(상기 커널 맵은 커널 요소들을 포함함)을 포함하고, 상기 입력은 상기 입력 채널에 대응하는 적어도 하나의 입력 특징 맵(상기 입력 특징 맵은 입력 요소들을 포함함)을 포함하며, 상기 서바이벌 망을 선택하는 단계는 제1 입력 채널에 대응하는 제1 커널 맵 내 커널 요소들의 제1 일부 및 상기 제1 일부에 대응하는 적어도 하나의 입력 요소 사이의 제1 연산을 수행하는 단계; 상기 제1 연산 이후, 제2 입력 채널에 대응하는 제2 커널 맵 내 커널 요소들의 제2 일부 및 상기 제2 일부에 대응하는 적어도 하나의 입력 요소 사이의 제2 연산을 수행하는 단계; 상기 제1 연산 결과 및 상기 제2 연산 결과에 기초하여, 상기 제1 커널 맵 및 상기 제2 커널 맵에 대응하는 출력 요소를 생성하는 단계; 및 상기 출력 요소에 기초하여, 상기 고속 컨볼루션 연산을 수행하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 서바이벌 망을 선택하는 단계는 행렬 곱(Matrix Multiplication)의 근사화 알고리즘을 이용하여 상기 고속 컨볼루션 연산을 수행하는 단계를 포함할 수 있다.
일실시예에 따른 컨볼루션 신경망 처리 방법은 입력 및 커널 사이의 고속 컨볼루션 연산에 의한 근사 출력을 획득하는 단계; 상기 근사 출력에 기초하여 컨볼루션 레이어 내 서바이벌 망(survival network)을 선택하는 단계; 및 상기 서바이벌 망을 이용하여 상기 입력 및 상기 커널 사이의 정밀 컨볼루션 연산을 수행하는 단계를 포함한다.
일실시예에 따르면, 상기 서바이벌 망을 역방향으로 선택하는 단계는 상기 출력 요소와 연관된 적어도 하나의 입력 요소 및 적어도 하나의 커널 요소에 기초하여, 상기 서바이벌 망을 선택하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 근사 출력은 상기 입력 및 서브 커널들(상기 서브 커널들은 상기 커널이 분해되어 생성됨) 사이의 컨볼루션 연산이 연쇄적으로 수행되어 생성될 수 있다.
일실시예에 따르면, 상기 근사 출력은 상기 입력에 포함된 입력 요소의 상위 비트(bit) 및 상기 커널에 포함된 커널 요소의 상위 비트에 기초하여 생성될 수 있다.
일실시예에 따른 컨볼루션 신경망 처리 방법은 입력에 포함된 입력 요소의 상위 비트 및 커널에 포함된 커널 요소의 상위 비트에 대응하는 컨볼루션 연산을 수행하는 단계; 및 상기 컨볼루션 연산 결과에 기초하여 상기 입력 및 상기 커널 사이의 고속 컨볼루션 연산을 수행하는 단계를 포함한다.
일실시예에 따른 컨볼루션 신경망 처리 장치는 고속 컨볼루션 망을 통한 입력 및 커널 사이의 고속 컨볼루션 연산을 수행하여, 정밀 컨볼루션 망 내 서바이벌 망(survival network)을 선택하고, 상기 서바이벌 망을 이용하여 상기 입력 및 상기 커널 사이의 정밀 컨볼루션 연산을 수행하는 프로세서를 포함한다.
일실시예에 따른 컨볼루션 신경망 처리 장치는 입력 및 커널 사이의 고속 컨볼루션 연산에 의한 근사 출력을 획득하고, 상기 근사 출력에 기초하여 컨볼루션 레이어 내 서바이벌 망(survival network)을 선택하고, 상기 서바이벌 망을 이용하여 상기 입력 및 상기 커널 사이의 정밀 컨볼루션 연산을 수행하는 프로세서를 포함할 수 있다.
일실시예에 따른 컨볼루션 신경망 처리 장치는입력에 포함된 입력 요소의 상위 비트(bit) 및 커널에 포함된 커널 요소의 상위 비트에 대응하는 컨볼루션 연산을 수행하고, 상기 컨볼루션 연산 결과에 기초하여 상기 입력 및 상기 커널 사이의 고속 컨볼루션 연산을 수행하는 프로세서를 포함한다.
도 1은 일실시예에 따른 컨볼루션 신경망 처리 방법을 설명하기 위한 순서도이다.
도 2는 일실시예에 따른 컨볼루션 신경망의 처리 동작을 설명하기 위한 도면이다.
도 3은 일실시예에 따른 컨볼루션 신경망의 처리 동작을 설명하기 위한 도면이다.
도 4는 일실시예에 따른 컨볼루션 신경망의 처리 동작을 설명하기 위한 도면이다.
도 5는 일실시예에 따른 컨볼루션 신경망의 예시도이다.
도 6은 일실시예에 따른 고속 컨볼루션 연산의 동작을 설명하기 위한 도면이다.
도 7a는 일실시예에 따른 고속 컨볼루션 연산의 동작을 설명하기 위한 도면이다.
도 7b는 일실시예에 따른 고속 컨볼루션 연산의 동작을 설명하기 위한 도면이다.
도 7c는 일실시예에 따른 고속 컨볼루션 연산의 동작을 설명하기 위한 도면이다.
도 8은 일실시예에 따른 컨볼루션 신경망 처리 방법을 설명하기 위한 순서도이다.
도 9는 일실시예에 따른 컨볼루션 신경망 처리 방법을 설명하기 위한 순서도이다.
도 10은 일실시예에 따른 컨볼루션 신경망 처리 장치의 구성의 예시도이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 실시될 수 있다. 따라서, 실시예들은 특정한 개시형태로 한정되는 것이 아니며, 본 명세서의 범위는 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 일실시예에 따른 컨볼루션 신경망 처리 방법을 설명하기 위한 순서도이다.
도 1을 참조하면, 컨볼루션 신경망 처리 장치는 고속 컨볼루션 망을 통한 입력 및 커널 사이의 고속 컨볼루션 연산을 수행하여, 정밀 컨볼루션 망 내 서바이벌 망(survival network)을 선택할 수 있다(101). 기계 학습(machine learning)에 있어서, 신경망(Neural Network)의 일종인 컨볼루션 신경망(Convolutional Neural Network; CNN)은 컨볼루션 연산을 수행하도록 설계된 컨볼루션 레이어들을 포함한다. CNN을 구성하는 컨볼루션 레이어는 커널을 이용하여 입력과 연관된 컨볼루션 연산을 수행할 수 있다. 컨볼루션 신경망 처리 장치는 미리 구축된 데이터베이스로부터 커널 또는 입력을 로딩할 수 있고, 데이터베이스는 컨볼루션 신경망 처리 장치에 포함된 메모리로 구현되거나 컨볼루션 신경망 처리 장치와 유선, 무선, 또는 네트워크 등으로 연결 가능한 서버 등의 외부 장치로 구현될 수 있다.
일실시예에 따른 컨볼루션 레이어는 고속 컨볼루션 망 및 정밀 컨볼루션 망을 포함할 수 있고, 컨볼루션 신경망 처리 장치는 고속 컨볼루션 망을 이용하여 고속 컨볼루션 연산을 수행하고, 정밀 컨볼루션 망을 이용하여 정밀 컨볼루션 연산을 수행할 수 있다. 여기서, 고속 컨볼루션 연산은 일반적인 컨볼루션 연산보다 고속으로 연산이 수행되는 컨볼루션 연산으로서, 간소화된 형태의 컨볼루션 연산 기법 또는 알고리즘을 이용하여 입력 및 커널 사이의 연산을 수행하고, 근사화된 출력을 생성할 수 있다. 고속 컨볼루션 연산은 정밀 컨볼루션 연산과 비교하여 연산 및 처리 속도가 빠른 상대적인 개념으로서, 예를 들어 고속 컨볼루션 연산은 정밀 컨볼루션 연산을 수행하기 위한 동작 또는 변수들의 일부를 생략 또는 간소화하는 방식으로 수행될 수 있다.
고속 컨볼루션 연산에 의해 생성되는 출력은 정밀 컨볼루션 연산에 의해 생성되는 출력을 근사화한 것으로서, 근사화의 정확도와 고속 컨볼루션 연산의 연산 속도는 서로 트레이드 오프(trade off) 관계일 수 있다. 고속 컨볼루션 연산 및 정밀 컨볼루션 연산을 구별하는 기준은 연산 또는 동작의 횟수, 연산 또는 처리의 속도일 수 있는데, 예를 들어 고속 컨볼루션 연산 및 정밀 컨볼루션 연산의 데이터 로드 횟수는 서로 같지만 연산 또는 처리 속도는 서로 다를 수 있다. 여기서, 데이터 로드 횟수는 컨볼루션 연산을 위해 입력 또는 커널의 정보를 로딩하는 횟수를 포함한다.
컨볼루션 신경망 처리 장치는 컨볼루션 신경망을 처리하는 장치로서, 소프트웨어 모듈, 하드웨어 모듈 또는 이들의 조합으로 구현될 수 있다. 예를 들어, 컨볼루션 신경망 처리 장치는 컨볼루션 신경망과 관련된 동작, 연산 및 명령 등을 생성 또는 처리할 수 있다. 컨볼루션 신경망 처리 장치는 스마트 폰, 테블릿 컴퓨터, 랩톱 컴퓨터, 데스크톱 컴퓨터, 텔레비전, 웨어러블 장치, 보안 시스템, 스마트 홈 시스템 등 다양한 컴퓨팅 장치 및/또는 시스템에 탑재될 수 있다.
도 1을 참조하면, 컨볼루션 신경망 처리 장치는 선택된 서바이벌 망을 이용하여, 입력 및 커널 사이의 정밀 컨볼루션 연산을 수행할 수 있다(102). 컨볼루션 신경망 처리 장치는 고속 컨볼루션 연산을 전제로 정밀 컨볼루션 연산을 수행하는 방식을 통해, 고속 컨볼루션 연산에 의한 정확도 저하를 보완하고 정밀 컨볼루션 연산에 의한 속도 저하를 보완할 수 있으므로, 컨볼루션 연산의 정확도 성능 및 속도 성능을 높일 수 있다. 고속 컨볼루션 연산을 통해 서바이벌 망이 선택되는 기법은 도 2 내지 도 4를 참조하여 설명되고, 컨볼루션 신경망을 구성하는 컨볼루션 레이어들의 구조의 실시예는 도 5를 참조하여 설명되고, 고속 컨볼루션 연산의 실시예는 도 6 내지 도 7c을 참조하여 상세히 설명될 것이다.
도 2는 일실시예에 따른 컨볼루션 신경망의 처리 동작을 설명하기 위한 도면이다.
도 2를 참조하면, 컨볼루션 신경망 처리 장치는 입력(202) 및 커널(201) 사이의 컨볼루션 연산을 수행하여 출력(203)을 생성할 수 있다. 컨볼루션 신경망은 복수의 컨볼루션 레이어들을 포함할 수 있다. 컨볼루션 신경망 처리 장치는 컨볼루션 레이어들 별로 컨볼루션 연산을 수행하고, 각 컨볼루션 레이어에 의해 생성된 출력은 다음 컨볼루션 레이어의 입력으로 채용될 수 있다. 도 2는 임의의 컨볼루션 레이어에 의해 수행되는 컨볼루션 연산을 설명하기 위한 예시도이다.
여기서, 컨볼루션 레이어의 입력은 해당 컨볼루션 레이어에 입력으로 채용되는 데이터로서, 최초 입력 데이터 또는 이전 레이어에 의해 생성된 출력인 특징 맵(feature map)을 포함한다. 예를 들어, 도 2에 도시된 컨볼루션 레이어의 입력(202)은 컨볼루션 신경망의 최초 입력일 수 있고, 이전 컨볼루션 레이어의 출력일 수 있고, 이전 컨볼루션 레이어의 출력이 ReLU(Rectified Linear Uint) 연산되거나 맥스 풀링(Max Pooling) 연산되어 서브-샘플링 레이어(Sub-sampling layer)에 의해 생성된 것일 수 있다.
컨볼루션 레이어의 입력(202)의 크기는 W*H*C일 수 있다. 여기서, 입력(202)은 C개의 입력 채널들에 대응하는 C개의 입력 특징 맵들을 포함하고, 각 입력 특징 맵은 W*H개의 입력 요소들을 포함한다. 컨볼루션 레이어의 커널(201)의 크기는 K2*C*D일 수 있다. 여기서, 커널(201)은 D개의 출력 채널들에 대응하는 D개의 필터들을 포함하고, 각 필터는 C개의 입력 채널들에 대응하는 C개의 커널 맵들을 포함하며, 각 커널 맵은 K*K개의 커널 요소들을 포함한다. 컨볼루션 신경망 처리 장치는 입력(202) 및 커널(201) 사이의 고속 컨볼루션 연산 및 정밀 컨볼루션 연산을 순차적으로 수행하여, 출력(203)을 생성할 수 있다. 출력(203)은 D개의 출력 채널들에 대응하는 D개의 출력 특징 맵들을 포함하고, 각 출력 특징 맵은 W*H개의 출력 요소들을 포함할 수 있다. 여기서, 출력 특징 맵의 크기는 컨볼루션 연산 시 적용되는 입력 특징 맵의 패드(pad)의 크기 및 커널 맵의 스트라이드(stride)의 크기에 따라 달라질 수 있다. 입력(202)에는 패딩(padding)이 적용될 수 있는데, 패딩이란 입력의 일부 영역(예를 들어, 일반적으로 가장자리를 가리키지만 설계 의도에 따라 달라질 수 있음)를 특정 값으로 채우는 기법을 의미하고, 패딩이 적용된 입력은 패드의 크기만큼 크기가 더 커질 수 있다. 스트라이드(stride)란 컨볼루션 연산 시 가중치 맵을 슬라이딩하는 간격을 의미한다.
일실시예에 따르면, 컨볼루션 신경망 처리 장치는 출력 요소(206)을 생성하기 위해, 고속 컨볼루션 연산을 수행한 후에 정밀 컨볼루션 연산을 수행할 수 있다. 예를 들면, 컨볼루션 신경망 처리 장치는 출력 요소(206)을 생성하기에 앞서, D번째 필터의 C개의 커널 맵들의 커널 요소들(204)과 C개의 입력 특징 맵들 중 출력 요소(206)에 대응하는 입력 요소들(205) 사이의 2D 매트릭스 스칼라 곱(
Figure pat00001
: 2D matrix scalar multiplication) 및 연산 결과들 사이의 2D 매트릭스 와이즈 합(
Figure pat00002
: 2D matrix wise addition)의 연산과정을 근사화하는 방식을 통해, 근사 출력을 생성할 수 있다. 여기서, 연산과정을 근사화하는 방식을 고속 컨볼루션 연산이라 한다.
일실시예에 따르면, 컨볼루션 신경망 처리 장치는 고속 컨볼루션 연산을 수행하기 위해,
Figure pat00003
Figure pat00004
의 일부 연산만 수행하거나 연산 순서를 변형할 수 있다. 컨볼루션 신경망 처리 장치는 근사화된 출력 요소(206)를 생성하기 위해, D번째 필터의 각 커널 맵에 포함된 커널 요소들 중 일부와 관련된 연산(예를 들어,
Figure pat00005
Figure pat00006
)만을 수행하고, 연산 결과와 임계값을 비교하여 미리 정의된 조건을 만족하는지 여부를 판단할 수 있다. 예를 들어, 컨볼루션 신경망 처리 장치는 특정 입력 채널에 대응하는 커널 맵 내 커널 요소들의 일부와 관련된 연산을 수행하고, 나머지 일부와 관련된 연산을 스킵할 수 있으며, 다음번 채널에 대응하는 커널 맵 내 커널 요소들의 일부와 관련된 연산을 수행하는 방식으로 고속 컨볼루션 연산을 수행할 수 있다. 컨볼루션 신경망 처리 장치는 제1 입력 채널에 대응하는 제1 커널 맵 내 커널 요소들의 제1 일부 및 제1 일부에 대응하는 적어도 하나의 입력 요소 사이의 제1 연산을 수행하여, 출력 요소(206)를 갱신할 수 있다. 컨볼루션 신경망 처리 장치는 제1 연산 이후, 제2 입력 채널에 대응하는 제2 커널 맵 내 커널 요소들의 제2 일부 및 제2 일부에 대응하는 적어도 하나의 입력 요소 사이의 제2 연산을 수행하여, 출력 요소(206)를 추가적으로 갱신할 수 있다. 컨볼루션 신경망 처리 장치는 갱신된 출력 요소(206)와 임계값을 비교하여 제1 커널 맵 및 제2 커널 맵 내 나머지 일부의 연산을 스킵할 수 있다.
고속 컨볼루션 연산을 위해, 컨볼루션 신경망 처리 장치는 각 커널 맵 내 커널 요소들의 일부만을 로딩하고, 로딩 후 다음번 커널 맵 내 커널 요소들의 일부만을 로딩할 수 있는데, 여기서 로딩되는 커널 요소들의 일부는 설계 의도에 따라 다양하게 변형되어 채용될 수 있다. 예를 들어, 도 2에 도시된 바와 같이 각 커널 맵의 크기가 K*K인 경우, 고속 컨볼루션 연산 시 각 커널 맵으로부터 로딩 및 연산되는 커널 요소들의 일부는 1*1, 1*3, 3*1, 3*3 등 다양하게 정의될 수 있고, 컨볼루션 신경망 처리 장치는 크기가 K*K인 각 커널 맵으로부터 1*1, 1*3, 3*1, 3*3의 커널 요소들의 로딩 및 연산을 수행할 수 있다.
예를 들어, 크기가 K*K인 커널 맵에 있어서 K가 3이라고 가정하면, K*K의 크기인 커널 맵에 대응하는 연산은 1*1의 크기인 커널 맵에 대응하는 연산으로 9번 분할되어 수행되는 연산과 동일한 결과를 얻을 수 있다. 일실시예에 따른 컨볼루션 신경망 처리 장치는 1*1의 크기인 커널 맵에 대응하는 컨볼루션 연산을 9-n 번만 수행하여 근사 출력을 생성하고, 서바이벌 망을 선택할 수 있다. 컨볼루션 신경망 처리 장치는 선택된 서바이벌 망을 이용한 정밀 컨볼루션 연산 시, 고속 컨볼루션 연산에서 사용되지 않은 n개의 1*1의 크기인 커널 맵에 대응하는 연산만을 수행하여 출력을 생성할 수 있다. 컨볼루션 신경망 처리 장치는 정밀 컨볼루션 연산에 의해 생성된 출력과 고속 컨볼루션 연산에 의해 생성된 근사 출력을 조합하여 본래 의도한 컨볼루션 연산의 출력을 정확하고 신속하게 도출할 수 있다. 여기서, 분할된 커널 맵의 단위는 1*1, 1*3 및 3*1 등 설계 의도에 따라 다양하게 설정될 수 있고, 커널 맵을 기준으로 실시예를 설명하였지만 커널 전체를 분할하여 상술한 방식의 고속 및 정밀 컨볼루션 연산도 수행될 수 있다.
커널 맵 내 커널 요소들 중 일부만을 채용하는 방식으로 고속 컨볼루션 연산을 수행하는 실시예는 다양한 기법과 결합되어 응용될 수 있고, 고속 컨볼루션 연산의 실시예와 관련된 내용은 도 6 내지 도 7c를 참조하여 설명된다.
컨볼루션 신경망 처리 장치는 근사 출력에 기초하여 정밀 컨볼루션 연산을 위한 서바이벌 망을 선택하고, 선택된 서바이벌 망을 이용하여 커널 요소들(204) 및 입력 요소들(205) 사이의 정밀 컨볼루션 연산을 수행하여, 출력 요소(206)를 생성할 수 있다. 컨볼루션 신경망 처리 장치는 상술한
Figure pat00007
Figure pat00008
의 연산과정을 이용하여 정밀 컨볼루션 연산을 수행할 수 있다.
컨볼루션 신경망 처리 장치는 특징 벡터 형태의 입력(207) 및 특징 벡터 형태의 커널(208) 사이의 고속 컨볼루션 연산 및 정밀 컨볼루션 연산을 수행할 수 있다. 특징 벡터는 컨볼루션 연산의 처리에 적합한 형태의 벡터로서, 컨볼루션 신경망 처리 장치는 입력(202)을 표현하는 특징 벡터 형태의 입력(207)과 커널(201)을 표현하는 특징 벡터 형태의 커널(208) 사이의 연산을 수행하고, 출력(203)을 표현하는 특징 벡터 형태의 출력(209)을 생성할 수 있다. 예를 들어, 컨볼루션 신경망 처리 장치는 입력(202)의 전치 행렬(transpose matrix)로 표현된 특징 벡터를 채용할 수 있다. 도 2의 N은 W*H이다. 이하에서 설명되는 입력, 출력 및 커널은 특징 벡터 형태의 입력, 출력 및 커널의 개념을 포함한다.
도 2를 참조하면, 컨볼루션 신경망 처리 장치는 입력(207) 및 커널(208) 사이의 고속 컨볼루션 연산 결과에 기초하여, 서바이벌 망(210)을 선택할 수 있다. 여기서, 서바이벌 망(210)은 정밀 컨볼루션 연산에 기여하는 망으로서, 정밀 컨볼루션 망으로부터 잉여 망이 제거된 망을 포함한다. 잉여 망은 정밀 컨볼루션 연산과 무관한 망을 의미한다. 일실시예에 따르면, 컨볼루션 신경망 처리 장치는 고속 컨볼루션 연산 결과에 기초하여, 정밀 컨볼루션 연산에 기여하는 적어도 하나의 입력 요소의 인덱스 및 적어도 하나의 커널 요소의 인덱스를 획득할 수 있다. 컨볼루션 신경망 처리 장치는 획득된 입력 요소의 인덱스 및 커널 요소의 인덱스에 기초하여 서바이벌 망을 선택할 수 있다.
도 3은 일실시예에 따른 컨볼루션 신경망의 처리 동작을 설명하기 위한 도면이다.
도 3을 참조하면, 컨볼루션 신경망 처리 장치는 고속 컨볼루션 연산 결과에 기초하여, 정밀 컨볼루션 망으로부터 서바이벌 망(304)을 역방향으로(backward) 선택할 수 있다. 컨볼루션 신경망 처리 장치는 입력 및 커널 사이의 고속 컨볼루션 연산을 수행하여 근사 출력을 획득할 수 있다. 도 3에 도시된 출력은 고속 컨볼루션 연산에 의해 생성된 근사화된 출력일 수 있다. 컨볼루션 신경망 처리 장치는 근사 출력에 포함된 출력 요소들 중 정밀 컨볼루션 연산에 기여하는 적어도 하나의 출력 요소를 선택할 수 있다. 컨볼루션 신경망 처리 장치는 정밀 컨볼루션 망으로부터, 선택된 출력 요소와 연관된 서바이벌 망(304)을 역방향으로 선택할 수 있다. 예를 들어, 컨볼루션 신경망 처리 장치는 선택된 출력 요소의 생성에 기여하는 경로를 선택하는 방식으로 서바이벌 망(304)을 역방향으로 선택할 수 있다. 또는, 컨볼루션 신경망 처리 장치는 정밀 컨볼루션 망으로부터, 선택된 출력 요소와 무관한 잉여 망을 역방향으로 제거하여 서바이벌 망(304)을 선택할 수 있다.
일실시예에 따르면, 컨볼루션 신경망 처리 장치는 근사 출력의 ReLU(Rectified Linear Unit) 연산 결과에 기초하여, 서바이벌 망(304)을 선택할 수 있다. ReLU 연산을 위한 함수는 F(x) = max(0, x)로 표현될 수 있다. x는 컨볼루션 연산 결과인 출력이고, F(x)는 ReLU 연산의 함수 값이다. 음수인 컨볼루션 연산 결과는 ReLU 연산에 의해 0으로 출력된다. 예를 들어, 특징 맵(302)의 ReLU 연산이 수행되면, 음수 값들은 0의 값으로 변환되어 ReLU 연산 결과인 특징 맵(302)이 생성될 수 있다.
컨볼루션 신경망 처리 장치는 ReLU 레이어를 이용하여 근사 출력의 출력 요소들의 ReLU 연산을 수행할 수 있다. 여기서, ReLU 레이어는 고속 컨볼루션 망의 활성화 함수(activation function)로 채용될 수 있다. 컨볼루션 신경망 처리 장치는 근사 출력의 출력 요소들의 ReLU 연산 결과들(301)에 기초하여, 비-제로(non-zero) 값에 대응하는 적어도 하나의 출력 요소를 선택할 수 있다. 도 3을 참조하면, 비-제로 값에 대응하는 출력 요소들이 선택될 수 있다. 컨볼루션 신경망 처리 장치는 선택된 출력 요소와 연관된 서바이벌 망(304)을 정밀 컨볼루션 망으로부터 선택할 수 있다. 예를 들어, 컨볼루션 신경망 처리 장치는 선택된 출력 요소의 생성에 기여하는 적어도 하나의 입력 요소 및 적어도 하나의 커널 요소를 선택하고, 선택된 입력 요소 및 커널 요소 사이의 연산과 관련된 망을 선택할 수 있다.
일실시예에 따르면, 컨볼루션 신경망 처리 장치는 ReLU 연산을 변형하여 근사 출력의 출력 요소들을 연산할 수 있다. 예를 들어, 컨볼루션 신경망 처리 장치는 ReLU 함수가 x축 방향으로 평행이동 된 형태의 함수를 채용하여 상술한 ReLU 연산을 대체할 수 있다. 이를 위해, 컨볼루션 신경망 처리 장치는 근사 출력의 출력 요소들이 임계값을 초과하는지 여부를 판단하는 비교 연산을 수행할 수 있다. 컨볼루션 신경망 처리 장치는 비교 연산 결과들에 기초하여, 비-제로 값에 대응하는 출력 요소를 선택할 수 있다. 여기서, ReLU 함수를 x축 방향으로 평행이동시킨 함수가 채용되는 실시예가 설명되었지만, y축 방향의 평행이동도 채용될 수 있다. 예를 들어, ReLU 함수를 y축 방향으로 평행이동 시킨 함수가 채용된다면, 컨볼루션 신경망 처리 장치는 비-제로 값과 다르게 정의된 값을 기준으로 서바이벌 망의 선택을 위한 출력 요소들을 선택할 수 있다.
도 4는 일실시예에 따른 컨볼루션 신경망의 처리 동작을 설명하기 위한 도면이다.
도 4를 참조하면, 컨볼루션 신경망 처리 장치는 ReLU 연산 및 맥스 풀링 연산을 이용하여, 정밀 컨볼루션 망으로부터 서바이벌 망(404)을 역방향으로(backward) 선택할 수 있다. 컨볼루션 신경망 처리 장치는 입력 및 커널 사이의 고속 컨볼루션 연산을 수행하여 근사 출력을 획득할 수 있다. 도 4에 도시된 출력은 고속 컨볼루션 연산에 의해 생성된 근사화된 출력일 수 있다.
도 3을 참조하여 설명한 바와 같이, 컨볼루션 신경망 처리 장치는 ReLU 레이어를 이용하여 근사 출력의 출력 요소들의 ReLU 연산을 수행할 수 있다. 컨볼루션 신경망 처리 장치는 맥스 풀링 레이어를 이용하여 ReLU 연산 결과들의 맥스 풀링 연산을 수행할 수 있다. 컨볼루션 신경망 처리 장치는 맥스 풀링 연산 결과들(401)에 기초하여, 대표 값에 대응하는 출력 요소를 선택하고, 상술한 바와 같이 선택된 출력 요소와 연관된 서바이벌 망(404)을 정밀 컨볼루션 망으로부터 선택할 수 있다. 풀링(pooling) 또는 샘플링(sampling)은 특징 맵의 해상도를 줄이는 기법으로서, 특징 맵(402)의 맥스 풀링 연산이 수행되면 4*4의 해상도를 갖는 특징 맵(402)으로부터 2*2의 해상도를 갖는 특징 맵(403)이 생성될 수 있다. 여기서, 특징 맵(403)의 각 픽셀 값은 특징 맵(402) 내 영역 별 픽셀 값들 중 최대값이 된다. 풀링의 연산은 스케일링의 정도를 기준으로 설계 의도에 따라 다양하게 변형되어 채용될 수 있다.
도 4를 참조하면, 컨볼루션 신경망 처리 장치는 ReLU 연산 결과들의 맥스 풀링 연산을 수행하고, 2*2의 출력 요소들 중 최대값을 갖는 출력 요소를 대표 값으로 결정할 수 있다. 도 4에 도시된 "0" 및 "X"로 표시된 출력 요소들은 대표값을 제외한 나머지 출력 요소들이고, 컨볼루션 신경망 처리 장치는 맥스 풀링 연산 결과들(401) 중 대표 값에 대응하는 출력 요소들(전체 출력 요소들 중에서 "0" 및 "X"로 표시된 출력 요소들을 제외한 출력 요소들임)을 선택할 수 있다. 컨볼루션 신경망 처리 장치는 상술한 바와 같이 선택된 출력 요소를 이용하여 서바이벌 망(404)을 선택할 수 있다. ReLU 연산 결과들에 의해 선택된 출력 요소의 수보다 ReLU 연산 결과들의 맥스 풀링 연산 결과들에 의해 선택된 출력 요소의 수가 작기 때문에, ReLU 레이어 및 맥스 풀링 레이어에 기초하여 선택된 서바이벌 망(404)의 크기는 ReLU 레이어에 기초하여 선택된 서바이벌 망(304)의 크기보다 작을 수 있다.
일실시예에 따르면, 컨볼루션 신경망 처리 장치는 맥스 풀링 연산을 변형하여 근사 출력의 출력 요소들 또는 ReLU 연산 결과들을 연산할 수 있다. 예를 들어, 컨볼루션 신경망 처리 장치는 맥스 풀링 연산의 대표값 선정 기준이 변형된 연산을 채용하여 상술한 맥스 풀링 연산을 대체할 수 있다. 이를 위해, 컨볼루션 신경망 처리 장치는 ReLU 연산 결과들을 적어도 하나의 그룹으로 그룹화할 수 있다. 컨볼루션 신경망 처리 장치는 그룹화된 그룹 내 비-제로값들 중에서 최대값 또는 최대값과의 차이가 임계값보다 작은 값에 대응하는 적어도 하나의 출력 요소를 선택할 수 있다. 여기서, 선행되는 연산이 ReLU 연산인 실시예가 설명되었지만, 상술한 방식으로 변형된 ReLU 연산이 채용될 수 있다. 예를 들어, 컨볼루션 신경망 처리 장치는 근사 출력의 출력 요소들이 제1 임계값을 초과하는지 여부를 판단하는 비교 연산을 수행하고, 비교 연산 결과들을 적어도 하나의 그룹으로 그룹화하며, 그룹화된 그룹 내 비-제로 값들 중에서 최대값 또는 최대값과의 차이가 제2 임계값보다 작은 값에 대응하는 적어도 하나의 출력 요소를 선택할 수 있다. 컨볼루션 신경망 처리 장치는 선택된 적어도 하나의 출력 요소에 기초하여, 서바이벌 망(404)을 선택할 수 있다.
도 5는 일실시예에 따른 컨볼루션 신경망의 예시도이다.
도 5를 참조하면, 일실시예에 따른 컨볼루션 신경망은 복수의 컨볼루션 레이어들(Layer 1, Layer 2 및 Layer 3 등)을 포함할 수 있다. 일실시예에 따르면, 각 컨볼루션 레이어(501 및 502)는 예측 망(503 및 505) 및 정밀 컨볼루션 망(504)을 포함할 수 있다. 컨볼루션 신경망 처리 장치는 예측 망(503 및 505)을 이용하여 입력에 대응하는 서바이벌 망의 인덱스를 생성할 수 있다. 컨볼루션 신경망 처리 장치는 정밀 컨볼루션 망(504 및 506)을 이용하여 입력 및 서바이벌 망의 인덱스에 대응하는 출력을 생성할 수 있다. 여기서, 서바이벌 망의 인덱스는 정밀 컨볼루션 연산에 기여하는 입력 요소의 인덱스 및 커널 요소의 인덱스에 기초하여 생성될 수 있다. 상술한 바와 같이, 컨볼루션 신경망 처리 장치는 예측 망(503 및 505)을 이용하여 근사 출력에 기여하는 서바이벌 망을 선택할 수 있는데, 예측 망(503 및 505)을 이용한 처리 동작은 정밀 컨볼루션 망(504 및 506)을 이용한 동작의 전처리 과정으로 채용될 수 있다.
일실시예에 따르면, 예측 망(503 및 505)은 고속 컨볼루션 망을 포함하고, ReLU 레이어 및 맥스 풀링 레이어를 선택적으로 더 포함할 수 있다. 컨볼루션 신경망 처리 장치는 고속 컨볼루션 망을 이용하여 상술한 고속 컨볼루션 연산을 수행할 수 있고, 정밀 컨볼루션 망(504 및 506)을 이용하여 상술한 정밀 컨볼루션 연산을 수행할 수 있다. 도시된 컨볼루션 레이어들의 구조는 예시에 지나지 않고, 설계의도나 채용되는 기법에 따라 다양하게 변형되어 응용될 수 있다.
도 6은 일실시예에 따른 고속 컨볼루션 연산의 동작을 설명하기 위한 도면이다.
컨볼루션 신경망 처리 장치는 수학적 근사 모델을 이용한 로우 랭킹 근사화(Low Ranking Approximation) 기법을 응용하여 입력 및 커널 사이의 고속 컨볼루션 연산을 수행할 수 있다. 일실시예에 따르면, 컨볼루션 신경망 처리 장치는 입력 및 서브 커널들 사이의 컨볼루션 연산을 연쇄적으로 수행하여, 고속 컨볼루션 연산을 수행할 수 있다. 여기서, 서브 커널들은 커널이 분해되어 생성될 수 있다. 예를 들어, 컨볼루션 신경망 처리 장치는 입력 및 제1 서브 커널 사이의 제1 컨볼루션 연산을 수행하고, 제1 컨볼루션 연산 결과 및 제2 서브 커널 사이의 제2 컨볼루션 연산을 수행하는 방식으로 컨볼루션 연산을 연쇄적으로 수행할 수 있다. 여기서, 서브 커널들에 의한 컨볼루션 연산들은 커널에 의한 컨볼루션 연산을 근사화한 것이므로, 고속으로 수행될 수 있다.
도 6을 참조하면, 입력(601)의 입력 채널들의 수는 S이고, 커널의 각 필터(603)의 크기는 d*d*S이며(각 커널 맵의 크기는 d*d임), 출력(602)의 출력 채널들의 수는 T(필터들의 수도 T임)인 경우를 전제하여 고속 컨볼루션 연산의 실시예를 설명하겠다. 컨볼루션 신경망 처리 장치는 입력(604)과 제1 서브 커널 사이의 컨볼루션 연산을 수행할 수 있다. 여기서, 제1 서브 커널은 R개의 필터들을 포함하는데, 각 필터(606)는 입력 채널들에 대응하는 서브 커널 맵들을 포함한다. 컨볼루션 신경망 처리 장치는 R개의 필터들을 포함하는 제1 서브 커널을 이용하여 컨볼루션 연산을 수행하므로, 출력 채널들의 수가 R인 제1 컨볼루션 연산 결과(607)를 생성할 수 있다.
컨볼루션 신경망 처리 장치는 제1 컨볼루션 연산 결과(607)와 제2 서브 커널 사이의 컨볼루션 연산을 수행할 수 있다. 여기서, 제2 서브 커널은 R개의 필터들을 포함하는데, 각 필터(608)는 입력 채널들에 대응하는 서브 커널 맵들을 포함한다. 컨볼루션 신경망 처리 장치는 R개의 필터들을 포함하는 제2 서브 커널을 이용하여 컨볼루션 연산을 수행하므로, 출력 채널들의 수가 R인 제2 컨볼루션 연산 결과(609)를 생성할 수 있다.
컨볼루션 신경망 처리 장치는 제2 컨볼루션 연산 결과(609)와 제3 서브 커널 사이의 컨볼루션 연산을 수행할 수 있다. 여기서, 제3 서브 커널은 R개의 필터들을 포함하는데, 각 필터(610)는 입력 채널들에 대응하는 서브 커널 맵들을 포함한다. 컨볼루션 신경망 처리 장치는 R개의 필터들을 포함하는 제3 서브 커널을 이용하여 컨볼루션 연산을 수행하므로, 출력 채널들의 수가 R인 제3 컨볼루션 연산 결과(611)를 생성할 수 있다.
컨볼루션 신경망 처리 장치는 제3 컨볼루션 연산 결과(611)와 제4 서브 커널 사이의 컨볼루션 연산을 수행할 수 있다. 여기서, 제4 서브 커널은 T개의 필터들을 포함하는데, 각 필터(612)는 입력 채널들에 대응하는 서브 커널 맵들을 포함한다. 컨볼루션 신경망 처리 장치는 T개의 필터들을 포함하는 제4 서브 커널을 이용하여 컨볼루션 연산을 수행하므로, 출력 채널들의 수가 T인 제4 컨볼루션 연산 결과(605)를 생성할 수 있다. 여기서, 제4 컨볼루션 연산 결과(605)는 출력(602)을 근사화하는 근사 출력이다. 이와 같이, 컨볼루션 신경망 처리 장치는 커널의 크기가 d*d*S*T인 컨볼루션 연산을 대체하여, 서브 커널들을 이용할 수 있고, 서브 커널들에 기반한 고속 컨볼루션 연산을 컨볼루션 연산을 간소화하고, 연산 속도를 높일 수 있다.
일실시예에 따르면, 서브 커널들은 입력 및 서브 커널들 사이의 연쇄적인 컨볼루션 연산 결과의 ReLU 연산 결과와 입력 및 커널 사이의 컨볼루션 연산 결과의 ReLU 연산 결과 사이의 차이가 최소화되도록 정의될 수 있다. 또한, 서브 커널들은 입력 및 서브 커널들 사이의 연쇄적인 컨볼루션 연산 결과와 입력 및 커널 사이의 컨볼루션 연산 결과의 ReLU 연산 결과 사이의 차이가 최소화되도록 정의될 수 있다. 컨볼루션 신경망 처리 장치는 ReLU 연산 결과가 반영된 서브 커널들을 이용하여, 보다 간소화된 고속 컨볼루션 연산을 수행할 수 있다.
일실시예에 따르면, 서브 커널들은 수학식 1 내지 3에 의해 획득될 수 있다.
Figure pat00009
Figure pat00010
Figure pat00011
여기서, X 및 K는 입력 및 커널이고,
Figure pat00012
는 컨볼루션 연산이다(수학식 1 내지 3의
Figure pat00013
는 컨볼루션 연산을 의미하므로 도 2를 참조하여 설명된
Figure pat00014
와 다름). || ||2 및 || ||1는 각각 L1-norm 및 L2-norm이고, Minimize|| ||2 Minimize|| ||1 는 각각 || ||2 및 || ||1가 최소화되도록 하는 C, KY, KX이고, C, KY, KX는 서브 커널들이다. 서브 커널들이 정의되는 방식은 다양한 기법들이 채용될 수 있고, 상술한 방식이나 수학식들에 한정되지 않는다.
도 7a 내지 도 7c는 일실시예에 따른 고속 컨볼루션 연산의 동작을 설명하기 위한 도면이다.
컨볼루션 신경망 처리 장치는 입력에 포함된 입력 요소의 상위 비트(bit) 및 커널에 포함된 커널 요소의 상위 비트를 이용하여, 고속 컨볼루션 연산을 수행할 수 있다. 도 7a를 참조하면, 커널 요소들 및 입력 요소들이 각각 16비트인 경우, 컨볼루션 신경망 처리 장치는 커널 요소들의 상위 8 비트들(701) 및 입력 요소들의 상위 8 비트들(702) 사이의 컨볼루션 연산을 수행하여 근사 출력(703)을 생성할 수 있다. 근사 출력(703)은 8 비트들 간의 연산에 의해 생성되므로, 16 비트이다.
컨볼루션 신경망 처리 장치는 상술한 바와 같이 근사 출력(703)에 기초한 서바이벌 망 선택 동작을 수행하고, 서바이벌 망을 이용하여 정밀 컨볼루션 연산을 수행할 수 있다. 정밀 컨볼루션 연산을 위해, 컨볼루션 신경망 처리 장치는 커널 요소들의 상위 8 비트들(701) 및 입력 요소들의 하위 8 비트들 사이의 제2 컨볼루션 연산을 수행하고, 커널 요소들의 하위 8 비트들 및 입력 요소들의 상위 8 비트들(702) 사이의 제3 컨볼루션 연산을 수행하며, 커널 요소들의 하위 8 비트들 및 입력 요소들의 하위 8 비트들 사이의 제4 컨볼루션 연산을 수행할 수 있다. 컨볼루션 신경망 처리 장치는 근사 출력(703), 제2 컨볼루션 연산 결과, 제3 컨볼루션 연산 결과 및 제4 컨볼루션 연산 결과를 결합하여 출력(704)을 생성할 수 있다. 여기서, 출력(704)은 다음 번 컨볼루션 레이어의 입력으로 채용될 수 있기 때문에, 총 32 비트 중 상위 16 비트에 의해 표현될 수 있다.
도 7b를 참조하면, 컨볼루션 신경망 처리 장치는 입력(705)을 상위 비트에 대응하는 상위 비트 입력(706) 및 하위 비트에 대응하는 하위 비트 입력(707)으로 분리할 수 있다. 컨볼루션 신경망 처리 장치는 수학식 4 및 5를 이용하여 상위 비트 입력 및 하위 비트 입력을 생성할 수 있다.
Figure pat00015
Figure pat00016
여기서, hi는 상위 비트 입력이고, lo는 하위 비트 입력이고, Input은 입력이며, ">>"는 오른쪽 시프트 연산자(right shift operator)이고, "<<"는 왼쪽 시프트 연산자(left shift operator)이다.
도 7b에는 상위 비트 입력 및 하위 비트 입력의 분리 동작이 컨볼루션 레이어의 외부에서 수행되는 것으로 도시되어 있지만, 이는 내부에서 수행될 수도 있다. 컨볼루션 신경망 처리 장치는 컨볼루션 레이어의 정밀 컨볼루션 망을 이용하여 정밀 컨볼루션 연산을 수행할 수 있고, 정밀 컨볼루션 연산에 의한 출력(708)의 상위 비트에 대응하는 연산 결과와 하위 비트에 대응하는 연산 결과를 결합하여, 출력(708)을 생성할 수 있다. 컨볼루션 신경망 처리 장치는 고속 컨볼루션 연산 또는 정밀 컨볼루션 연산을 위해 채용되는 커널을 상위 비트 커널 및 하위 비트 커널로 분리할 수 있고, 상술한 방식으로 컨볼루션 연산을 수행할 수 있다. 컨볼루션 신경망 처리 장치는 수학식 6을 이용하여 컨볼루션 레이어의 출력을 생성할 수 있다.
Figure pat00017
여기서, Output은 컨볼루션 레이어의 출력이고, HI는 출력의 상위 비트에 대응하는 연산 결과이고, LO는 출력의 하위 비트에 대응하는 연산 결과이다.
도 7b를 참조하면, 컨볼루션 신경망 처리 장치는 컨볼루션 레이어 1의 정밀 컨볼루션 망을 이용하여 출력(708)을 생성할 수 있고, 생성된 출력(708)은 다음번 컨볼루션 레이어의 입력(709)으로 채용될 수 있는데, 여기서 입력(709)은 출력(708)이 샘플링과 같은 전처리가 수행된 결과일 수 있다.
도 7c를 참조하면, 컨볼루션 신경망 처리 장치는 상위 비트 입력(711) 및 상위 비트 커널(712) 사이의 컨볼루션 연산 결과의 ReLU 연산을 수행하고, ReLU 연산 결과에 기초하여 나머지 비트와 관련된 연산을 수행할지 여부를 판단할 수 있다. 도 7c에 도시된 입력 요소들 및 커널 요소들은 출력 요소가 도출되는데 관여하는 요소들을 의미하고, 컨볼루션 신경망 처리 장치는 출력 요소를 생성하기 위해 상위 비트 입력(711) 및 상위 비트 커널(712) 사이의 컨볼루션 연산(713)인 고속 컨볼루션 연산을 수행할 수 있다. 컨볼루션 신경망 처리 장치는 고속 컨볼루션 연산 결과의 ReLU 연산(714)을 수행하고, ReLU 연산 결과에 기초하여 출력 요소의 생성을 위한 추가적인 컨볼루션 연산이 필요한지 여부를 판단할 수 있다. 도 7c를 참조하면, 컨볼루션 신경망 처리 장치는 처리대상 위치 결정 모듈(715)을 이용하여, 상위 비트 입력 및 하위 비트 커널 사이의 컨볼루션 연산(716)과 하위 비트 입력 및 상위 비트 커널 사이의 컨볼루션 연산(716)이 필요한지 여부를 판단할 수 있다. 컨볼루션 신경망 처리 장치는 ReLU 연산 결과에 기초하여 컨볼루션 연산(716)을 스킵할 수 있다. 컨볼루션 신경망 처리 장치는 ReLU 연산 결과 및 컨볼루션 연산(716) 결과를 결합할 수 있다(717). 여기서, 결합은 도 7a를 참조하여 설명된 결합과 같은 개념이고, 컨볼루션 연산(716)이 스킵되면 컨볼루션 연산(716) 결과는 0일 수 있다.
컨볼루션 신경망 처리 장치는 처리대상 위치 결정 모듈(718)을 이용하여, 하위 비트 입력 및 하위 비트 커널 사이의 컨볼루션 연산(719)이 필요한지 여부를 판단할 수 있다. 컨볼루션 신경망 처리 장치는 ReLU 연산 결과에 기초하여 컨볼루션 연산(719)을 스킵할 수 있다. 컨볼루션 신경망 처리 장치는 결합(717) 결과와 컨볼루션 연산(719) 결과를 결합하여(720), 출력 요소를 생성할 수 있다. 컨볼루션 신경망 처리 장치가 컨볼루션 연산(716) 및 컨볼루션 연산(719)을 스킵할지 여부를 판단하는 동작은 상술한 서바이벌 망이 선택되는 실시예가 적용될 수 있다. 도 6 내지 도 7c를 참조하여 설명된 실시예는 고속 컨볼루션 연산에 적용될 수 있고, 컨볼루션 신경망 처리 장치는 행렬 곱(Matrix Multiplication)의 근사화 알고리즘을 포함한 다양한 방식의 고속 컨볼루션 연산 기법들을 채용할 수 있다.
도 8은 일실시예에 따른 컨볼루션 신경망 처리 방법을 설명하기 위한 순서도이다.
도 8을 참조하면, 컨볼루션 신경망 처리 장치는 입력 및 커널 사이의 고속 컨볼루션 연산에 의한 근사 출력을 획득하고(801), 근사 출력에 기초하여 컨볼루션 레이어 내 서바이벌 망(survival network)을 선택하고(802), 서바이벌 망을 이용하여 입력 및 커널 사이의 정밀 컨볼루션 연산을 수행할 수 있다(803). 컨볼루션 신경망 처리 장치는 도 8을 참조하여 설명된 방법을 정밀 컨볼루션 망에 적용할 수 있고, 상술한 실시예도 적용할 수 있다.
도 9는 일실시예에 따른 컨볼루션 신경망 처리 방법을 설명하기 위한 순서도이다.
도 9를 참조하면, 컨볼루션 신경망 처리 장치는 입력에 포함된 입력 요소의 상위 비트 및 커널에 포함된 커널 요소의 상위 비트에 대응하는 컨볼루션 연산을 수행하고(901), 컨볼루션 연산 결과에 기초하여 입력 및 커널 사이의 고속 컨볼루션 연산을 수행할 수 있다(902). 컨볼루션 신경망 처리 장치는 입력 요소들 중 상위 비트에 대응하는 입력 요소들과 커널 요소들 중 커널 요소들 사이의 컨볼루션 연산을 수행하고, 그 컨볼루션 연산 결과들을 결합하여 고속 컨볼루션 연산을 수행할 수 있다. 컨볼루션 신경망 처리 장치는 도 7a 내지 도 7c를 참조하여 설명된 방법을 이용하여 고속 컨볼루션 연산을 수행할 수 있고, 그 밖에 상술한 실시예를 고속 컨볼루션 연산에 적용할 수도 있다.
도 10은 일실시예에 따른 컨볼루션 신경망 처리 장치의 구성의 예시도이다.
도 10을 참조하면, 컨볼루션 신경망 처리 장치(1001)는 프로세서(1002) 및 메모리(1003)를 포함한다. 프로세서(1002)는 도 1 내지 도 9를 통하여 전술한 적어도 하나의 장치들을 포함하거나, 도 1 내지 도 9를 통하여 전술한 적어도 하나의 방법을 수행할 수 있다. 메모리(1003)는 컨볼루션 레이어들의 입력들의 특성들 및 커널들의 특성들 중 적어도 하나를 저장하거나 컨볼루션 신경망 처리 방법이 구현된 프로그램을 저장할 수 있다. 메모리(1003)는 휘발성 메모리 또는 비휘발성 메모리일 수 있다.
프로세서(1002)는 프로그램을 실행하고, 컨볼루션 신경망 처리 장치(1001)를 제어할 수 있다. 프로세서(1002)에 의하여 실행되는 프로그램의 코드는 메모리(1003)에 저장될 수 있다. 컨볼루션 신경망 처리 장치(1001)는 입출력 장치(도면 미 표시)를 통하여 외부 장치(예를 들어, 퍼스널 컴퓨터 또는 네트워크)에 연결되고, 데이터를 교환할 수 있다.
일실시예에 따르면 컨볼루션 신경망 처리 장치(1001)는 CNN과 관련된 연산을 고속으로 처리하는 CNN 가속기, NPU(Neural Processing Unit) 또는 VPU(Vision Processing Unit)에 채용되어 해당 전용 프로세서를 제어할 수 있다. 컨볼루션 신경망 처리 장치(1001)는 설계 의도에 따라 다양한 하드웨어를 채용하거나 다양한 하드웨어에 채용될 수 있으며 도시된 구성요소들의 실시예에 한정되지 않는다. 컨볼루션 신경망 처리 시 상술한 실시예들을 적용하는 경우, 컨볼루션 신경망의 처리에서 요구되는 연산 횟수(예를 들어, MAC의 연산 횟수)를 줄여 메모리를 절감하고 처리 속도를 높일 수 있으므로, 상술한 실시예들은 제한된 리소스를 사용하는 환경이나 임베디드 단말에 적합할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (36)

  1. 고속 컨볼루션 망을 통한 입력 및 커널 사이의 고속 컨볼루션 연산을 수행하여, 정밀 컨볼루션 망 내 서바이벌 망(survival network)을 선택하는 단계; 및
    상기 서바이벌 망을 이용하여 상기 입력 및 상기 커널 사이의 정밀 컨볼루션 연산을 수행하는 단계
    를 포함하는
    컨볼루션 신경망 처리 방법.
  2. 제1항에 있어서,
    상기 서바이벌 망을 선택하는 단계는
    상기 고속 컨볼루션 연산 결과에 기초하여, 상기 정밀 컨볼루션 연산에 기여하는 적어도 하나의 입력 요소의 인덱스 및 적어도 하나의 커널 요소의 인덱스를 획득하는 단계; 및
    상기 입력 요소의 인덱스 및 상기 커널 요소의 인덱스에 기초하여 상기 서바이벌 망을 선택하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  3. 제1항에 있어서,
    상기 서바이벌 망을 선택하는 단계는
    상기 고속 컨볼루션 연산을 수행하여 근사 출력을 획득하는 단계;
    상기 근사 출력에 포함된 출력 요소들 중 상기 정밀 컨볼루션 연산에 기여하는 적어도 하나의 출력 요소를 선택하는 단계; 및
    상기 정밀 컨볼루션 망으로부터 상기 출력 요소와 연관된 상기 서바이벌 망을 역방향으로(backward) 선택하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  4. 제3항에 있어서,
    상기 출력 요소를 선택하는 단계는
    ReLU(Rectified Linear Unit) 레이어를 이용하여 상기 출력 요소들의 ReLU 연산을 수행하는 단계; 및
    상기 ReLU 연산 결과들에 기초하여, 비-제로(non-zero) 값에 대응하는 상기 출력 요소를 선택하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  5. 제3항에 있어서,
    상기 출력 요소를 선택하는 단계는
    상기 출력 요소들이 임계값을 초과하는지 여부를 판단하는 비교 연산을 수행하는 단계; 및
    상기 비교 연산 결과들에 기초하여, 비-제로(non-zero) 값에 대응하는 상기 출력 요소를 선택하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  6. 제3항에 있어서,
    상기 출력 요소를 선택하는 단계는
    ReLU(Rectified Linear Unit) 레이어를 이용하여 상기 출력 요소들의 ReLU 연산을 수행하는 단계;
    맥스 풀링(Max Pooling) 레이어를 이용하여 상기 ReLU 연산 결과들의 맥스 풀링 연산을 수행하는 단계; 및
    상기 맥스 풀링 연산 결과들에 기초하여, 대표 값에 대응하는 상기 출력 요소를 선택하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  7. 제3항에 있어서,
    상기 출력 요소를 선택하는 단계는
    ReLU(Rectified Linear Unit) 레이어를 이용하여 상기 출력 요소들의 ReLU 연산을 수행하는 단계;
    상기 ReLU 연산 결과들을 적어도 하나의 그룹으로 그룹화하는 단계; 및
    상기 그룹 내 비-제로(non-zero) 값들 중에서 최대값 또는 최대값과의 차이가 임계값보다 작은 값에 대응하는 상기 출력 요소를 선택하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  8. 제3항에 있어서,
    상기 출력 요소를 선택하는 단계는
    상기 출력 요소들이 제1 임계값을 초과하는지 여부를 판단하는 비교 연산을 수행하는 단계;
    상기 비교 연산 결과들을 적어도 하나의 그룹으로 그룹화하는 단계; 및
    상기 그룹 내 비-제로(non-zero) 값들 중에서 최대값 또는 최대값과의 차이가 제2 임계값보다 작은 값에 대응하는 상기 출력 요소를 선택하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  9. 제1항에 있어서,
    상기 서바이벌 망을 선택하는 단계는
    상기 고속 컨볼루션 연산을 수행하여 근사 출력을 획득하는 단계;
    상기 근사 출력에 포함된 출력 요소들 중 상기 정밀 컨볼루션 연산에 기여하는 적어도 하나의 출력 요소를 선택하는 단계; 및
    상기 정밀 컨볼루션 망으로부터 상기 출력 요소와 무관한 잉여 망(redundant network)을 역방향으로(backward) 제거하여, 상기 서바이벌 망을 선택하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  10. 제1항에 있어서,
    상기 서바이벌 망을 선택하는 단계는
    상기 입력 및 서브 커널들(상기 서브 커널들은 상기 커널이 분해되어 생성됨) 사이의 컨볼루션 연산을 연쇄적으로 수행하여, 상기 고속 컨볼루션 연산을 수행하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  11. 제10항에 있어서,
    상기 고속 컨볼루션 연산을 수행하는 단계는
    상기 입력 및 제1 서브 커널 사이의 제1 컨볼루션 연산을 수행하는 단계; 및
    상기 제1 컨볼루션 연산 결과 및 제2 서브 커널 사이의 제2 컨볼루션 연산을 수행하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  12. 제10항에 있어서,
    상기 서브 커널들은
    상기 입력 및 상기 서브 커널들 사이의 연쇄적인 컨볼루션 연산 결과의 ReLU 연산 결과와 상기 입력 및 상기 커널 사이의 컨볼루션 연산 결과의 ReLU 연산 결과 사이의 차이가 최소화되도록 정의되는,
    컨볼루션 신경망 처리 방법.
  13. 제10항에 있어서,
    상기 서브 커널들은
    상기 입력 및 상기 서브 커널들 사이의 연쇄적인 컨볼루션 연산 결과와 상기 입력 및 상기 커널 사이의 컨볼루션 연산 결과의 ReLU 연산 결과 사이의 차이가 최소화되도록 정의되는,
    컨볼루션 신경망 처리 방법.
  14. 제1항에 있어서,
    상기 서바이벌 망을 선택하는 단계는
    상기 입력에 포함된 입력 요소의 상위 비트(bit) 및 상기 커널에 포함된 커널 요소의 상위 비트를 이용하여, 상기 고속 컨볼루션 연산을 수행하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  15. 제14항에 있어서,
    상기 고속 컨볼루션 연산을 수행하는 단계는
    상기 입력을 상위 비트에 대응하는 상위 비트 입력 및 하위 비트에 대응하는 하위 비트 입력으로 분리하는 단계;
    상기 커널을 상위 비트에 대응하는 상위 비트 커널 및 하위 비트에 대응하는 하위 비트 커널로 분리하는 단계; 및
    상기 상위 비트 입력 및 상기 상위 비트 커널 사이의 컨볼루션 연산을 수행하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  16. 제15항에 있어서,
    상기 정밀 컨볼루션 연산을 수행하는 단계는
    상기 상위 비트 입력 및 상기 하위 비트 커널 사이의 제2 컨볼루션 연산을 수행하는 단계;
    상기 하위 비트 입력 및 상기 상위 비트 커널 사이의 제3 컨볼루션 연산을 수행하는 단계;
    상기 하위 비트 입력 및 상기 하위 비트 커널 사이의 제4 컨볼루션 연산을 수행하는 단계; 및
    상기 고속 컨볼루션 연산 결과, 상기 제2 컨볼루션 연산 결과, 상기 제3 컨볼루션 연산 결과 및 상기 제4 컨볼루션 연산 결과를 결합하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  17. 제1항에 있어서,
    상기 커널은 적어도 하나의 필터를 포함하고,
    상기 필터는 적어도 하나의 입력 채널에 대응하는 적어도 하나의 커널 맵(상기 커널 맵은 커널 요소들을 포함함)을 포함하고,
    상기 입력은 상기 입력 채널에 대응하는 적어도 하나의 입력 특징 맵(상기 입력 특징 맵은 입력 요소들을 포함함)을 포함하며,
    상기 서바이벌 망을 선택하는 단계는
    제1 입력 채널에 대응하는 제1 커널 맵 내 커널 요소들의 제1 일부 및 상기 제1 일부에 대응하는 적어도 하나의 입력 요소 사이의 제1 연산을 수행하는 단계;
    상기 제1 연산 이후, 제2 입력 채널에 대응하는 제2 커널 맵 내 커널 요소들의 제2 일부 및 상기 제2 일부에 대응하는 적어도 하나의 입력 요소 사이의 제2 연산을 수행하는 단계;
    상기 제1 연산 결과 및 상기 제2 연산 결과에 기초하여, 상기 제1 커널 맵 및 상기 제2 커널 맵에 대응하는 출력 요소를 생성하는 단계; 및
    상기 출력 요소에 기초하여, 상기 고속 컨볼루션 연산을 수행하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  18. 제1항에 있어서,
    상기 서바이벌 망을 선택하는 단계는
    행렬 곱(Matrix Multiplication)의 근사화 알고리즘을 이용하여 상기 고속 컨볼루션 연산을 수행하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  19. 입력 및 커널 사이의 고속 컨볼루션 연산에 의한 근사 출력을 획득하는 단계;
    상기 근사 출력에 기초하여 컨볼루션 레이어 내 서바이벌 망(survival network)을 선택하는 단계; 및
    상기 서바이벌 망을 이용하여 상기 입력 및 상기 커널 사이의 정밀 컨볼루션 연산을 수행하는 단계
    를 포함하는
    컨볼루션 신경망 처리 방법.
  20. 제19항에 있어서,
    상기 서바이벌 망을 선택하는 단계는
    상기 근사 출력에 포함된 출력 요소들 중 상기 정밀 컨볼루션 연산에 기여하는 적어도 하나의 출력 요소를 선택하는 단계; 및
    상기 컨볼루션 레이어 내 망들 중에서, 상기 출력 요소와 연관된 상기 서바이벌 망을 역방향으로(backward) 선택하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  21. 제20항에 있어서,
    상기 서바이벌 망을 역방향으로 선택하는 단계는
    상기 출력 요소와 연관된 적어도 하나의 입력 요소 및 적어도 하나의 커널 요소에 기초하여, 상기 서바이벌 망을 선택하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  22. 제20항에 있어서,
    상기 출력 요소를 선택하는 단계는
    ReLU(Rectified Linear Unit) 레이어를 이용하여 상기 출력 요소들의 ReLU 연산을 수행하는 단계; 및
    상기 ReLU 연산 결과들에 기초하여, 비-제로(non-zero) 값에 대응하는 상기 출력 요소를 선택하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  23. 제20항에 있어서,
    상기 출력 요소를 선택하는 단계는
    상기 출력 요소들이 임계값을 초과하는지 여부를 판단하는 비교 연산을 수행하는 단계; 및
    상기 비교 연산 결과들에 기초하여, 비-제로(non-zero) 값에 대응하는 상기 출력 요소를 선택하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  24. 제20항에 있어서,
    상기 출력 요소를 선택하는 단계는
    상기 출력 요소들이 임계값을 초과하는지 여부를 판단하는 비교 연산을 수행하는 단계; 및
    상기 비교 연산 결과들에 기초하여, 비-제로(non-zero) 값에 대응하는 상기 출력 요소를 선택하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  25. 제20항에 있어서,
    상기 출력 요소를 선택하는 단계는
    ReLU(Rectified Linear Unit) 레이어를 이용하여 상기 출력 요소들의 ReLU 연산을 수행하는 단계;
    상기 ReLU 연산 결과들을 적어도 하나의 그룹으로 그룹화하는 단계; 및
    상기 그룹 내 비-제로(non-zero) 값들 중에서 최대값 또는 최대값과의 차이가 임계값보다 작은 값에 대응하는 상기 출력 요소를 선택하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  26. 제20항에 있어서,
    상기 출력 요소를 선택하는 단계는
    상기 출력 요소들이 제1 임계값을 초과하는지 여부를 판단하는 비교 연산을 수행하는 단계; 및
    상기 비교 연산 결과들을 적어도 하나의 그룹으로 그룹화하는 단계; 및
    상기 그룹 내 비-제로(non-zero) 값들 중에서 최대값 또는 최대값과의 차이가 제2 임계값보다 작은 값에 대응하는 상기 출력 요소를 선택하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  27. 제19항에 있어서,
    상기 근사 출력은
    상기 입력 및 서브 커널들(상기 서브 커널들은 상기 커널이 분해되어 생성됨) 사이의 컨볼루션 연산이 연쇄적으로 수행되어 생성되는,
    컨볼루션 신경망 처리 방법.
  28. 제19항에 있어서,
    상기 근사 출력은
    상기 입력에 포함된 입력 요소의 상위 비트(bit) 및 상기 커널에 포함된 커널 요소의 상위 비트에 기초하여 생성되는,
    컨볼루션 신경망 처리 방법.
  29. 제19항에 있어서,
    상기 커널은 적어도 하나의 필터를 포함하고,
    상기 필터는 적어도 하나의 입력 채널에 대응하는 적어도 하나의 커널 맵(상기 커널 맵은 커널 요소들을 포함함)을 포함하고,
    상기 입력은 상기 입력 채널에 대응하는 적어도 하나의 입력 특징 맵(상기 입력 특징 맵은 입력 요소들을 포함함)을 포함하며,
    제1 입력 채널에 대응하는 제1 커널 맵 내 커널 요소들의 제1 일부 및 상기 제1 일부에 대응하는 적어도 하나의 입력 요소 사이의 제1 연산이 수행되고,
    상기 제1 연산 이후, 제2 입력 채널에 대응하는 제2 커널 맵 내 커널 요소들의 제2 일부 및 상기 제2 일부에 대응하는 적어도 하나의 입력 요소 사이의 제2 연산이 수행되며,
    상기 제1 연산 결과 및 상기 제2 연산 결과에 기초하여, 상기 제1 커널 맵 및 상기 제2 커널 맵에 대응하는 출력 요소가 생성되고,
    상기 근사 출력은 상기 출력 요소에 기초하여 생성되는,
    컨볼루션 신경망 처리 방법.
  30. 입력에 포함된 입력 요소의 상위 비트 및 커널에 포함된 커널 요소의 상위 비트에 대응하는 컨볼루션 연산을 수행하는 단계; 및
    상기 컨볼루션 연산 결과에 기초하여 상기 입력 및 상기 커널 사이의 고속 컨볼루션 연산을 수행하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  31. 제30항에 있어서,
    상기 컨볼루션 연산을 수행하는 단계는
    상기 입력을 상위 비트에 대응하는 상위 비트 입력 및 하위 비트에 대응하는 하위 비트 입력으로 분리하는 단계;
    상기 커널을 상위 비트에 대응하는 상위 비트 커널 및 하위 비트에 대응하는 하위 비트 커널로 분리하는 단계; 및
    상기 상위 비트 입력 및 상기 상위 비트 커널 사이의 컨볼루션 연산을 수행하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  32. 제31항에 있어서,
    상기 상위 비트 입력 및 상기 하위 비트 커널 사이의 제2 컨볼루션 연산을 수행하는 단계;
    상기 하위 비트 입력 및 상기 상위 비트 커널 사이의 제3 컨볼루션 연산을 수행하는 단계;
    상기 하위 비트 입력 및 상기 하위 비트 커널 사이의 제4 컨볼루션 연산을 수행하는 단계; 및
    상기 고속 컨볼루션 연산 결과, 상기 제2 컨볼루션 연산 결과, 상기 제3 컨볼루션 연산 결과 및 상기 제4 컨볼루션 연산 결과를 결합하는 단계
    를 더 포함하는,
    컨볼루션 신경망 처리 방법.
  33. 하드웨어와 결합되어 제1항 내지 제32항 중 어느 하나의 항의 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.
  34. 고속 컨볼루션 망을 통한 입력 및 커널 사이의 고속 컨볼루션 연산을 수행하여, 정밀 컨볼루션 망 내 서바이벌 망(survival network)을 선택하고,
    상기 서바이벌 망을 이용하여 상기 입력 및 상기 커널 사이의 정밀 컨볼루션 연산을 수행하는 프로세서
    를 포함하는
    컨볼루션 신경망 처리 장치.
  35. 입력 및 커널 사이의 고속 컨볼루션 연산에 의한 근사 출력을 획득하고,
    상기 근사 출력에 기초하여 컨볼루션 레이어 내 서바이벌 망(survival network)을 선택하고,
    상기 서바이벌 망을 이용하여 상기 입력 및 상기 커널 사이의 정밀 컨볼루션 연산을 수행하는 프로세서
    를 포함하는
    컨볼루션 신경망 처리 장치.
  36. 입력에 포함된 입력 요소의 상위 비트(bit) 및 커널에 포함된 커널 요소의 상위 비트에 대응하는 컨볼루션 연산을 수행하고,
    상기 컨볼루션 연산 결과에 기초하여 상기 입력 및 상기 커널 사이의 고속 컨볼루션 연산을 수행하는 프로세서
    를 포함하는
    컨볼루션 신경망 처리 장치.

KR1020160176617A 2016-12-22 2016-12-22 컨볼루션 신경망 처리 방법 및 장치 KR20180073118A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020160176617A KR20180073118A (ko) 2016-12-22 2016-12-22 컨볼루션 신경망 처리 방법 및 장치
EP17207744.8A EP3349153B1 (en) 2016-12-22 2017-12-15 Convolutional neural network (cnn) processing method and apparatus
CN201711365593.1A CN108229655B (zh) 2016-12-22 2017-12-18 卷积神经网络(cnn)处理方法和设备
US15/848,298 US11915119B2 (en) 2016-12-22 2017-12-20 Convolutional neural network (CNN) processing method and apparatus performing high speed and precision convolution operations
US18/413,946 US20240152729A1 (en) 2016-12-22 2024-01-16 Convolutional neural network (cnn) processing method and apparatus performing high-speed and precision convolution operations

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160176617A KR20180073118A (ko) 2016-12-22 2016-12-22 컨볼루션 신경망 처리 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20180073118A true KR20180073118A (ko) 2018-07-02

Family

ID=60781607

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160176617A KR20180073118A (ko) 2016-12-22 2016-12-22 컨볼루션 신경망 처리 방법 및 장치

Country Status (4)

Country Link
US (2) US11915119B2 (ko)
EP (1) EP3349153B1 (ko)
KR (1) KR20180073118A (ko)
CN (1) CN108229655B (ko)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190041922A (ko) * 2017-10-13 2019-04-23 주식회사 스트라드비젼 액티베이션 연산과 컨벌루션 연산을 동시에 수행하기 위한 방법 및 장치 그리고 이를 위한 학습 방법 및 학습 장치
KR20200008845A (ko) * 2018-07-17 2020-01-29 삼성전자주식회사 전자 장치, 영상 처리 방법 및 컴퓨터 판독가능 기록 매체
KR20200101493A (ko) * 2019-01-29 2020-08-28 건국대학교 산학협력단 초해상도 신경망 기반 고해상도 이미지 복원 장치 및 방법
WO2020231226A1 (en) * 2019-05-16 2020-11-19 Samsung Electronics Co., Ltd. Method of performing, by electronic device, convolution operation at certain layer in neural network, and electronic device therefor
KR20210012083A (ko) * 2019-07-23 2021-02-03 포항공과대학교 산학협력단 뉴럴 네트워크 시스템 및 이의 동작 방법
KR20210077159A (ko) * 2019-12-17 2021-06-25 연세대학교 산학협력단 스파이킹 신경망 및 이의 운용 방법
KR20210121533A (ko) * 2020-03-30 2021-10-08 포항공과대학교 산학협력단 일정한 확률의 인덱스 매칭을 수행하는 희소성 인식 신경 처리 유닛 및 처리 방법
KR20210143440A (ko) * 2020-05-20 2021-11-29 연세대학교 산학협력단 콘볼루션 신경망의 하드웨어 구조 최적화 방법
US11295195B2 (en) * 2017-03-03 2022-04-05 Samsung Electronics Co., Ltd. Neural network devices and methods of operating the same
US11487845B2 (en) 2018-11-28 2022-11-01 Electronics And Telecommunications Research Institute Convolutional operation device with dimensional conversion
KR20230024578A (ko) * 2021-08-12 2023-02-21 주식회사 노타 입력 해상도 변경에 따른 특징맵 해상도 변경 방법 및 시스템
US11798252B2 (en) 2018-10-24 2023-10-24 Samsung Electronics Co., Ltd. Electronic device and control method therefor
WO2024010437A1 (ko) * 2022-07-08 2024-01-11 주식회사 딥엑스 신경 프로세싱 유닛 및 이의 동작 방법

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017200883A1 (en) * 2016-05-17 2017-11-23 Silicon Storage Technology, Inc. Deep learning neural network classifier using non-volatile memory array
US10387740B2 (en) * 2016-10-10 2019-08-20 Gyrfalcon Technology Inc. Object detection and recognition apparatus based on CNN based integrated circuits
US11132619B1 (en) * 2017-02-24 2021-09-28 Cadence Design Systems, Inc. Filtering in trainable networks
US10699160B2 (en) * 2017-08-23 2020-06-30 Samsung Electronics Co., Ltd. Neural network method and apparatus
CN109543139B (zh) * 2017-09-22 2021-09-17 杭州海康威视数字技术股份有限公司 卷积运算方法、装置、计算机设备及计算机可读存储介质
US20190370644A1 (en) * 2018-06-04 2019-12-05 Lightmatter, Inc. Convolutional layers for neural networks using programmable nanophotonics
KR20200028168A (ko) 2018-09-06 2020-03-16 삼성전자주식회사 컨볼루셔널 뉴럴 네트워크를 이용하는 컴퓨팅 장치 및 그 동작 방법
KR102055645B1 (ko) * 2018-12-07 2020-01-22 아주대학교산학협력단 고속 딥러닝을 위한 컨볼루션 방법
CN109558944B (zh) * 2018-12-13 2021-02-19 北京智芯原动科技有限公司 基于可配置卷积层的卷积神经网络的算法优化方法及装置
KR20200094534A (ko) * 2019-01-30 2020-08-07 삼성전자주식회사 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치에서 멀티-비트 연산을 처리하는 방법
US11880760B2 (en) 2019-05-01 2024-01-23 Samsung Electronics Co., Ltd. Mixed-precision NPU tile with depth-wise convolution
US11164032B2 (en) * 2019-07-11 2021-11-02 Arm Limited Method of performing data processing operation
US11615319B2 (en) * 2019-07-15 2023-03-28 Meta Platforms Technologies, Llc System and method for shift-based information mixing across channels for shufflenet-like neural networks
US20210049474A1 (en) * 2019-08-13 2021-02-18 Samsung Electronics Co., Ltd. Neural network method and apparatus
US20210182025A1 (en) * 2019-12-12 2021-06-17 Samsung Electronics Co., Ltd. Accelerating 2d convolutional layer mapping on a dot product architecture
CN111179149B (zh) * 2019-12-17 2022-03-08 Tcl华星光电技术有限公司 图像处理方法、装置、电子设备和计算机可读存储介质
CN112862096A (zh) * 2021-02-04 2021-05-28 百果园技术(新加坡)有限公司 一种模型训练和数据处理方法、装置、设备及介质

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5276771A (en) * 1991-12-27 1994-01-04 R & D Associates Rapidly converging projective neural network
KR100442835B1 (ko) 2002-08-13 2004-08-02 삼성전자주식회사 인공 신경망을 이용한 얼굴 인식 방법 및 장치
US7747070B2 (en) 2005-08-31 2010-06-29 Microsoft Corporation Training convolutional neural networks on graphics processing units
US8051124B2 (en) 2007-07-19 2011-11-01 Itt Manufacturing Enterprises, Inc. High speed and efficient matrix multiplication hardware module
KR100980858B1 (ko) 2007-11-28 2010-09-10 울산대학교 산학협력단 물리계층에서 콘볼루션 부호를 이용한 무선 센서 네트워크보안 시스템 및 방법
US9390327B2 (en) 2013-09-16 2016-07-12 Eyeverify, Llc Feature extraction and matching for biometric authentication
US10095917B2 (en) 2013-11-04 2018-10-09 Facebook, Inc. Systems and methods for facial representation
US9978014B2 (en) * 2013-12-18 2018-05-22 Intel Corporation Reconfigurable processing unit
KR101563569B1 (ko) 2014-05-28 2015-10-28 한국과학기술원 학습형 다이내믹 시각 이미지 패턴 인식 시스템 및 방법
CN104077233B (zh) 2014-06-18 2017-04-05 百度在线网络技术(北京)有限公司 多通道卷积层处理方法和装置
US10360497B2 (en) * 2014-07-16 2019-07-23 Qualcomm Incorporated Decomposing convolution operation in neural networks
US20160026912A1 (en) * 2014-07-22 2016-01-28 Intel Corporation Weight-shifting mechanism for convolutional neural networks
KR101644498B1 (ko) 2014-07-30 2016-08-01 황판용 마이크로파일 보강구조체와 이를 이용한 기초콘크리트 보강공법
KR102276339B1 (ko) 2014-12-09 2021-07-12 삼성전자주식회사 Cnn의 근사화를 위한 학습 장치 및 방법
CN105844128B (zh) 2015-01-15 2021-03-02 北京三星通信技术研究有限公司 身份识别方法和装置
US10223635B2 (en) 2015-01-22 2019-03-05 Qualcomm Incorporated Model compression and fine-tuning
KR20160091786A (ko) 2015-01-26 2016-08-03 삼성전자주식회사 사용자 관리 방법 및 사용자 관리 장치
US9904874B2 (en) * 2015-11-05 2018-02-27 Microsoft Technology Licensing, Llc Hardware-efficient deep convolutional neural networks
JP2017211735A (ja) * 2016-05-24 2017-11-30 ソニー株式会社 演算処理装置、及び、演算処理方法
US10402168B2 (en) * 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11295195B2 (en) * 2017-03-03 2022-04-05 Samsung Electronics Co., Ltd. Neural network devices and methods of operating the same
KR20190041922A (ko) * 2017-10-13 2019-04-23 주식회사 스트라드비젼 액티베이션 연산과 컨벌루션 연산을 동시에 수행하기 위한 방법 및 장치 그리고 이를 위한 학습 방법 및 학습 장치
KR20200008845A (ko) * 2018-07-17 2020-01-29 삼성전자주식회사 전자 장치, 영상 처리 방법 및 컴퓨터 판독가능 기록 매체
US11798252B2 (en) 2018-10-24 2023-10-24 Samsung Electronics Co., Ltd. Electronic device and control method therefor
US11487845B2 (en) 2018-11-28 2022-11-01 Electronics And Telecommunications Research Institute Convolutional operation device with dimensional conversion
KR20200101493A (ko) * 2019-01-29 2020-08-28 건국대학교 산학협력단 초해상도 신경망 기반 고해상도 이미지 복원 장치 및 방법
WO2020231226A1 (en) * 2019-05-16 2020-11-19 Samsung Electronics Co., Ltd. Method of performing, by electronic device, convolution operation at certain layer in neural network, and electronic device therefor
KR20210012083A (ko) * 2019-07-23 2021-02-03 포항공과대학교 산학협력단 뉴럴 네트워크 시스템 및 이의 동작 방법
KR20210077159A (ko) * 2019-12-17 2021-06-25 연세대학교 산학협력단 스파이킹 신경망 및 이의 운용 방법
KR20210121533A (ko) * 2020-03-30 2021-10-08 포항공과대학교 산학협력단 일정한 확률의 인덱스 매칭을 수행하는 희소성 인식 신경 처리 유닛 및 처리 방법
KR20210143440A (ko) * 2020-05-20 2021-11-29 연세대학교 산학협력단 콘볼루션 신경망의 하드웨어 구조 최적화 방법
US11587203B2 (en) 2020-05-20 2023-02-21 Industry-Academic Cooperation Foundation, Yonsei University Method for optimizing hardware structure of convolutional neural networks
KR20230024578A (ko) * 2021-08-12 2023-02-21 주식회사 노타 입력 해상도 변경에 따른 특징맵 해상도 변경 방법 및 시스템
WO2024010437A1 (ko) * 2022-07-08 2024-01-11 주식회사 딥엑스 신경 프로세싱 유닛 및 이의 동작 방법

Also Published As

Publication number Publication date
CN108229655A (zh) 2018-06-29
US20240152729A1 (en) 2024-05-09
EP3349153A1 (en) 2018-07-18
EP3349153B1 (en) 2021-12-01
US11915119B2 (en) 2024-02-27
US20180181858A1 (en) 2018-06-28
CN108229655B (zh) 2023-09-05

Similar Documents

Publication Publication Date Title
KR20180073118A (ko) 컨볼루션 신경망 처리 방법 및 장치
KR102415508B1 (ko) 컨볼루션 신경망 처리 방법 및 장치
US20240104378A1 (en) Dynamic quantization of neural networks
KR102631381B1 (ko) 컨볼루션 신경망 처리 방법 및 장치
US11307865B2 (en) Data processing apparatus and method
US20210224125A1 (en) Operation Accelerator, Processing Method, and Related Device
KR102655950B1 (ko) 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치
CN112673383A (zh) 神经网络核中动态精度的数据表示
US11593628B2 (en) Dynamic variable bit width neural processor
US10579334B2 (en) Block floating point computations using shared exponents
JP6521440B2 (ja) ニューラルネットワーク及びそのためのコンピュータプログラム
CN111695671A (zh) 训练神经网络的方法及装置、电子设备
US20200389182A1 (en) Data conversion method and apparatus
KR20220059194A (ko) 대상 객체에 적응적인 객체 추적 방법 및 장치
CN114078195A (zh) 分类模型的训练方法、超参数的搜索方法以及装置
KR20210043295A (ko) 뉴럴 네트워크의 데이터를 양자화하는 방법 및 장치
US11610128B2 (en) Neural network training under memory restraint
KR20210076691A (ko) 프레임워크 간 뉴럴 네트워크의 학습을 검증하는 방법 및 장치
US11900577B2 (en) Processing apparatus for performing processing using a convolutional neural network
JP2022512211A (ja) 画像処理方法、装置、車載演算プラットフォーム、電子機器及びシステム
US20230316042A1 (en) Mixture of experts models with sparsified weights
CN110852202A (zh) 一种视频分割方法及装置、计算设备、存储介质
KR102424538B1 (ko) 영상 복원 방법 및 장치
KR102507855B1 (ko) 고속 연산이 가능한 딥러닝 신경망 장치
US20230316043A1 (en) Machine learning model processing based on perplexity

Legal Events

Date Code Title Description
A201 Request for examination