KR20220020816A - 심층 신경망들에서의 깊이-우선 컨볼루션 - Google Patents

심층 신경망들에서의 깊이-우선 컨볼루션 Download PDF

Info

Publication number
KR20220020816A
KR20220020816A KR1020217040432A KR20217040432A KR20220020816A KR 20220020816 A KR20220020816 A KR 20220020816A KR 1020217040432 A KR1020217040432 A KR 1020217040432A KR 20217040432 A KR20217040432 A KR 20217040432A KR 20220020816 A KR20220020816 A KR 20220020816A
Authority
KR
South Korea
Prior art keywords
layer
kernel
input
width
input tensor
Prior art date
Application number
KR1020217040432A
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 퀄컴 인코포레이티드
Publication of KR20220020816A publication Critical patent/KR20220020816A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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
    • 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
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • 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
    • G06N3/0454
    • 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/047Probabilistic or stochastic networks
    • G06N3/0472
    • 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
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Probability & Statistics with Applications (AREA)
  • Medical Informatics (AREA)
  • Multimedia (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Image Analysis (AREA)
  • Surface Acoustic Wave Elements And Circuit Networks Thereof (AREA)

Abstract

일 실시예에서, 깊이-우선 DCN(deep convolutional network)은, 제1의 제1-계층 커널을 가지며 그리고 제1 입력을 컨볼빙하도록 구성된 제1 컨볼루션 계층, 및 제1의 제2-계층 커널을 가지며 그리고 제2-계층 입력을 컨볼빙하도록 구성된 제2 컨볼루션 계층을 갖는다. DCN을 위한 방법은, 제2-계층 입력 텐서에 대한 값 스트립을 생성하기 위해 제1 컨볼루션 계층에서 제1의 제1-계층 커널과 제1-계층 입력 텐서의 컨볼루션을 개시하는 단계, 및 제1 컨볼루션 계층에서 컨볼루션을 완료하기 전에, 제3 계층에 대한 값 스트립을 생성하기 위해 제2 컨볼루션 계층에서 제1의 제2-계층 커널과 제2 입력의 컨볼루션을 개시하는 단계를 포함한다.

Description

심층 신경망들에서의 깊이-우선 컨볼루션
[0001] 본 특허 출원은, "DEPTH-FIRST CONVOLUTION IN DEEP NEURAL NETWORKS"라는 명칭으로 2019년 6월 17일에 출원된 정규 출원 번호 제16/443,695호를 우선권으로 주장하며, 이 출원은 본 출원의 양수인에게 양도되었으며, 이에 의해, 인용에 의해 본원에 명시적으로 포함된다.
[0002] 본 개시내용은 일반적으로 인공 신경망(artificial neural network)들에 관한 것으로, 더 구체적으로는, 심층 신경망(deep neural network)들에서의 컨볼루션(convolution)에 관한 것이다.
[0003] 인공 뉴런(artificial neuron)들(예컨대, 뉴런 모델들)의 상호연결된 그룹으로 구성될 수 있는 인공 신경망은, 컴퓨테이셔널 디바이스(computational device) 또는 컴퓨테이셔널 디바이스에 의해 수행되는 방법의 표현일 수 있다. 신경망들은, 다양한 애플리케이션들 및/또는 디바이스들, 이를테면, IP(Internet Protocol) 카메라들, IoT(Internet of Things) 디바이스들, 자율 차량들, 및/또는 서비스 로봇들을 위해 사용될 수 있다.
[0004] 인공 신경망 내의 개별적인 인공 뉴런들 또는 노드들은, 입력 데이터를 취하여 그 데이터에 대해 간단한 동작들을 수행함으로써, 생물학적 뉴런(biological neuron)들을 에뮬레이트(emulate)할 수 있다. 입력 데이터에 대해 수행되는 간단한 동작들의 결과들은 다른 노드들에 선택적으로 전달된다. 가중치(weight) 값들이 망 내의 각각의 노드와 연관되며, 이러한 값들은 입력 데이터가 출력 데이터와 관련되는 방식을 제한한다. 예컨대, 각각의 노드의 입력들에는 대응하는 가중치 값들이 곱해질 수 있고, 곱들은 합산될 수 있다. 곱들의 합은 선택적인 바이어스(bias)에 의해 조정될 수 있고, 활성화 함수(activation function)가 결과에 적용되어, 노드의 출력 신호 또는 "출력 활성화"를 산출할 수 있다. 가중치 값들은 초기에, 망을 통한 트레이닝 데이터의 반복적인 흐름에 의해 결정될 수 있다(예컨대, 가중치 값들은, 망이 자신들의 전형적인 입력 데이터 특성들에 의해 특정 클래스들을 식별하는 방법을 학습(learn)하는 트레이닝 단계(training phase) 동안 설정된다).
[0005] 상이한 타입들의 인공 신경망들, 이를테면, RNN(recurrent neural network)들, MLP(multilayer perceptron) 신경망들, CNN(convolutional neural network)들 등이 존재한다. RNN들은, 계층의 결과(outcome)를 예측하는 것을 돕기 위해, 계층의 출력을 저장하고 이 출력을 입력으로 피드백하는 원리에 입각하여 작동한다. MLP 신경망들에서, 데이터가 입력 계층에 피딩(feed)될 수 있고, 하나 이상의 은닉 계층(hidden layer)들이 데이터에 대한 추상화(abstraction)의 레벨들을 제공한다. 그런 다음, 추상화된 데이터에 기반하여 출력 계층에 대해 예측들이 이루어질 수 있다. MLP들은, 입력들에 클래스(class) 또는 라벨(label)이 할당되는 분류 예측 문제(classification prediction problem)들에 특히 적합할 수 있다.
[0006] CNN(convolutional neural network)들은 일종의 피드-포워드(feed-forward) 인공 신경망이다. 컨볼루션 신경망(convolutional neural network)들은, 각각 수용 필드(receptive field)(예컨대, 입력 공간의 공간적으로 국부화된 영역)를 가지며 그리고 중첩하는 타일(overlapping tile)들로 입력 공간을 집합적으로 타일링(tile)하는 인공 뉴런들의 집합들을 포함할 수 있다. 컨볼루션 신경망들은 다수의 애플리케이션들을 갖는다. 특히, CNN들은 패턴 인식 및 분류의 분야에서 광범위하게 사용되어 왔다. 하나의 타입의 컨볼루션 신경망은 DCN(deep convolutional network)이다. 심층 신경망은 입력 계층과 출력 계층 사이에 다수의 은닉 계층들을 갖는 신경망이다.
[0007] 계층화된 신경망 아키텍처들(예컨대, MLP 및 DCN)에서, 인공 뉴런들의 제1 계층의 출력은 인공 뉴런들의 제2 계층에 대한 입력이 되고, 인공 뉴런들의 제2 계층의 출력은 인공 뉴런들의 제3 계층의 입력이 되는 식이다. 컨볼루션 신경망들은 특징(feature)들의 계층구조(hierarchy)를 인식하도록 트레이닝될 수 있다. 컨볼루션 신경망 아키텍처들에서의 컴퓨테이션(computation)은 프로세싱 노드들의 집단(population)에 걸쳐 분포될 수 있으며, 이는 하나 이상의 컴퓨테이셔널 체인(computational chain)들로 구성될 수 있다. 이들 다중-계층화된 아키텍처들은 한 번에 하나의 계층씩 트레이닝될 수 있고, 역 전파(back propagation)를 사용하여 미세-조정(fine-tune)될 수 있다. 위에서 언급한 바와 같이, 트레이닝은, 신경망들이 학습된 입력 데이터 특성들에 의해 특정 클래스들을 식별할 수 있게 되도록 신경망에 대한 가중치 값들이 조정 및 설정되는 단계이다. 신경망이 트레이닝된 후, 이는 추론을 위해 사용될 수 있으며, 여기서, 설정된 가중치 값들은 새로운 입력들을 분류하기 위해 망에 의해 사용된다.
[0008] 에지 디바이스들(edge devices)(예컨대, 모바일 컴퓨팅 디바이스 또는 스마트 폰)은 일반적으로, 트레이닝을 실질적으로 수행하기 위한 메모리, 계산 및 전력 자원들이 부족하기 때문에, 트레이닝은 전형적으로 서버 시스템들에서 수행되는 계산 집약적 프로세스(computationally intensive process)이다. 추론은 상당히 덜 계산 집약적이며, 그리고 에지 디바이스들에 의해 합리적으로 행해질 수 있다. 트레이닝된 모델은 추가적인 트레이닝없이 추론을 위해 사용될 수 있다. 그러나, 추가적인 트레이닝이 필요하지 않다고 하더라도, 그럼에도 불구하고, 트레이닝된 모델은 추론 디바이스 자체로부터의 또는 외부 입력으로부터의 새로운 입력으로 추가로 미세 조정될 수 있다는 것에 유의한다. 추론이 트레이닝보다 덜 계산 집약적이기는 하지만, 그럼에도 불구하고, 모바일 컴퓨팅 디바이스에 의해 수행되는 다른 작업(task)들에 비해 계산 집약적이며, 계산 부담을 감소시키기 위한 시스템들 및 방법들이 바람직하다.
[0009] 본 개시내용의 특정 양상들은 심층 컨볼루션망(deep convolutional network)을 사용하기 위해 컴퓨터에서 구현되는 방법에 관한 것이다. 심층 컨볼루션망은, 제2-계층 입력 텐서(input tensor)를 생성하기 위해, 제1-계층 커널(kernel)을 사용하여 제1-계층 입력 텐서를 컨볼빙(convolve)하도록 구성된 제1 컨볼루션 계층(convolutional layer); 제3-계층 입력 텐서를 생성하기 위해, 제2-계층 커널을 사용하여 제2-계층 입력 텐서를 컨볼빙하도록 구성된 제2 컨볼루션 계층; 및 제3-계층 입력 텐서를 수신(receive)하도록 구성된 제3-계층을 포함한다. 제1-계층 커널은 제1-계층-커널 길이 및 제1-계층-커널 폭을 갖는다. 제1-계층 입력 텐서는 제1-계층-입력 길이 및 제1-계층-입력 폭을 갖는다. 제2-계층 입력 텐서는 제2-계층-입력 길이 및 제2-계층-입력 폭을 갖는다. 제2-계층 커널은 제2-계층-커널 길이 및 제2-계층-커널 폭을 갖는다. 방법은, 제2-계층 입력 텐서의 제1 스트립(strip)에 대한 값들을 생성하기 위해, 제1-계층 입력 텐서의 제1의 제1-계층 신장된 수용 필드(stretched receptive field)와 제1-계층 커널을 컨볼빙하는 단계; 이후, 제3-계층 입력 텐서의 제1 스트립에 대한 값들을 생성하기 위해, 제2-계층 입력 텐서의 제1의 제2-계층 신장된 수용 필드와 제2-계층 커널을 컨볼빙하는 단계; 및 이후, 제2-계층 입력 텐서의 제2 스트립에 대한 값들을 생성하기 위해, 제1-계층 입력 텐서의 제2의 제1-계층 신장된 수용 필드와 제1-계층 커널을 컨볼빙하는 단계를 포함한다. 제1-계층 수용 필드들은, 제1-계층-커널 길이와 같은 길이, 및 제1-계층-커널 폭보다 더 큰 제1-계층-신장된-수용-필드 폭을 갖는다. 제2-계층 수용 필드들은, 제2-계층-커널 길이와 같은 길이, 및 제2-계층-커널 폭보다 더 큰 제2-계층-신장된-수용-필드 폭을 갖는다.
[0010] 본 개시내용의 특정 양상들은 심층 컨볼루션망을 사용하기 위한 컴퓨팅 디바이스에 관한 것이다. 심층 컨볼루션망은, 제2-계층 입력 텐서를 생성하기 위해, 제1-계층 커널을 사용하여 제1-계층 입력 텐서를 컨볼빙하도록 구성된 제1 컨볼루션 계층; 제3-계층 입력 텐서를 생성하기 위해, 제2-계층 커널을 사용하여 제2-계층 입력 텐서를 컨볼빙하도록 구성된 제2 컨볼루션 계층; 및 제3-계층 입력 텐서를 수신하도록 구성된 제3-계층을 포함한다. 제1-계층 커널은 제1-계층-커널 길이 및 제1-계층-커널 폭을 갖는다. 제1-계층 입력 텐서는 제1-계층-입력 길이 및 제1-계층-입력 폭을 갖는다. 제2-계층 입력 텐서는 제2-계층-입력 길이 및 제2-계층-입력 폭을 갖는다. 제2-계층 커널은 제2-계층-커널 길이 및 제2-계층-커널 폭을 갖는다. 컴퓨팅 디바이스는, 제2-계층 입력 텐서의 제1 스트립에 대한 값들을 생성하기 위해, 제1-계층 입력 텐서의 제1의 제1-계층 신장된 수용 필드와 제1-계층 커널을 컨볼빙하고; 이후, 제3-계층 입력 텐서의 제1 스트립에 대한 값들을 생성하기 위해, 제2-계층 입력 텐서의 제1의 제2-계층 신장된 수용 필드와 제2-계층 커널을 컨볼빙하고; 그리고 이후, 제2-계층 입력 텐서의 제2 스트립에 대한 값들을 생성하기 위해, 제1-계층 입력 텐서의 제2의 제1-계층 신장된 수용 필드와 제1-계층 커널을 컨볼빙하도록 구성된다. 제1-계층 수용 필드들은, 제1-계층-커널 길이와 같은 길이, 및 제1-계층-커널 폭보다 더 큰 제1-계층-신장된-수용-필드 폭을 갖는다. 제2-계층 수용 필드들은, 제2-계층-커널 길이와 같은 길이, 및 제2-계층-커널 폭보다 더 큰 제2-계층-신장된-수용-필드 폭을 갖는다.
[0011] 본 개시내용의 특정 양상들은 심층 컨볼루션망을 사용하기 위한 컴퓨팅 디바이스에 관한 것이다. 심층 컨볼루션망은, 제2-계층 입력 텐서를 생성하기 위해, 제1-계층 커널을 사용하여 제1-계층 입력 텐서를 컨볼빙하도록 구성된 제1 컨볼루션 계층; 제3-계층 입력 텐서를 생성하기 위해, 제2-계층 커널을 사용하여 제2-계층 입력 텐서를 컨볼빙하도록 구성된 제2 컨볼루션 계층; 및 제3-계층 입력 텐서를 수신하도록 구성된 제3-계층을 포함한다. 제1-계층 커널은 제1-계층-커널 길이 및 제1-계층-커널 폭을 갖는다. 제1-계층 입력 텐서는 제1-계층-입력 길이 및 제1-계층-입력 폭을 갖는다. 제2-계층 입력 텐서는 제2-계층-입력 길이 및 제2-계층-입력 폭을 갖는다. 제2-계층 커널은 제2-계층-커널 길이 및 제2-계층-커널 폭을 갖는다. 컴퓨팅 디바이스는, 제2-계층 입력 텐서의 제1 스트립에 대한 값들을 생성하기 위해, 제1-계층 입력 텐서의 제1의 제1-계층 신장된 수용 필드와 제1-계층 커널을 컨볼빙하기 위한 수단; 이후, 제3-계층 입력 텐서의 제1 스트립에 대한 값들을 생성하기 위해, 제2-계층 입력 텐서의 제1의 제2-계층 신장된 수용 필드와 제2-계층 커널을 컨볼빙하기 위한 수단; 및 이후, 제2-계층 입력 텐서의 제2 스트립에 대한 값들을 생성하기 위해, 제1-계층 입력 텐서의 제2의 제1-계층 신장된 수용 필드와 제1-계층 커널을 컨볼빙하기 위한 수단을 포함한다. 제1-계층 수용 필드들은, 제1-계층-커널 길이와 같은 길이, 및 제1-계층-커널 폭보다 더 큰 제1-계층-신장된-수용-필드 폭을 갖는다. 제2-계층 수용 필드들은, 제2-계층-커널 길이와 같은 길이, 및 제2-계층-커널 폭보다 더 큰 제2-계층-신장된-수용-필드 폭을 갖는다.
[0012] 본 개시내용의 특정 양상들은, 적어도 하나의 프로세서에 의해 실행될 때, 프로세서로 하여금, 심층 컨볼루션망을 사용하기 위한 방법을 수행하게 하는 명령들을 포함하는 비-일시적인 컴퓨터-판독가능 매체에 관한 것이다. 심층 컨볼루션망은, 제2-계층 입력 텐서를 생성하기 위해, 제1-계층 커널을 사용하여 제1-계층 입력 텐서를 컨볼빙하도록 구성된 제1 컨볼루션 계층; 제3-계층 입력 텐서를 생성하기 위해, 제2-계층 커널을 사용하여 제2-계층 입력 텐서를 컨볼빙하도록 구성된 제2 컨볼루션 계층; 및 제3-계층 입력 텐서를 수신하도록 구성된 제3-계층을 포함한다. 제1-계층 커널은 제1-계층-커널 길이 및 제1-계층-커널 폭을 갖는다. 제1-계층 입력 텐서는 제1-계층-입력 길이 및 제1-계층-입력 폭을 갖는다. 제2-계층 입력 텐서는 제2-계층-입력 길이 및 제2-계층-입력 폭을 갖는다. 제2-계층 커널은 제2-계층-커널 길이 및 제2-계층-커널 폭을 갖는다. 방법은, 제2-계층 입력 텐서의 제1 스트립에 대한 값들을 생성하기 위해, 제1-계층 입력 텐서의 제1의 제1-계층 신장된 수용 필드와 제1-계층 커널을 컨볼빙하는 단계; 이후, 제3-계층 입력 텐서의 제1 스트립에 대한 값들을 생성하기 위해, 제2-계층 텐서의 제1의 제2-계층 신장된 수용 필드와 제2-계층 커널을 컨볼빙하는 단계; 및 이후, 제2-계층 입력 텐서의 제2 스트립에 대한 값들을 생성하기 위해, 제1-계층 입력 텐서의 제2의 제1-계층 신장된 수용 필드와 제1-계층 커널을 컨볼빙하는 단계를 포함한다. 제1-계층 수용 필드들은, 제1-계층-커널 길이와 같은 길이, 및 제1-계층-커널 폭보다 더 큰 제1-계층-신장된-수용-필드 폭을 갖는다. 제2-계층 수용 필드들은, 제2-계층-커널 길이와 같은 길이, 및 제2-계층-커널 폭보다 더 큰 제2-계층-신장된-수용-필드 폭을 갖는다.
[0013] 본 개시내용의 부가적인 양상들, 장점들, 및 특징들은 전체 출원의 검토 후에 명백해질 수 있다.
[0014] 도 1은 본 개시내용의 실시예들을 구현하는 데 사용될 수 있는 예시적인 SoC(system-on-a-chip)의 개략도이다.
[0015] 도 2a는 예시적인 완전 연결(fully connected) 신경망 계층의 예시이다.
[0016] 도 2b는 예시적인 국부 연결(locally connected) 신경망 계층의 예시이다.
[0017] 도 2c는 예시적인 컨볼루션 신경망 계층의 예시이다.
[0018] 도 2d는 이미지로부터 시각적 특징들을 인식하도록 설계된 DCN(deep convolutional network)의 상세화된 예의 예시이다.
[0019] 도 3은 예시적인 DCN(deep convolutional network)의 블록도 예시이다.
[0020] 도 4는 본 개시내용의 실시예에 따른, DCN에서의 1-차원 컨볼루션 계층들의 깊이-우선 컨볼루션 프로세싱의 여러 스테이지들의 예시적인 진행의 예시이다.
[0021] 도 5는 본 개시내용의 다른 실시예에 따른, DCN에서의 2-차원 컨볼루션 계층들의 깊이-우선 컨볼루션 프로세싱의 여러 스테이지들의 예시적인 진행의 예시이다.
[0022] 도 6은 본 개시내용의 실시예에 따른 예시적인 프로세스의 흐름도이다.
[0023] 도면들을 참조하여, 본 개시내용의 몇몇 예시적인 양상들이 설명된다. "예시적인"이라는 단어는, "예, 예증 또는 예시로서 기능하는" 것을 의미하도록 본원에서 사용된다. 본원에서 "예시적인" 것으로 설명되는 임의의 양상은 반드시 다른 양상들에 비해 선호되거나 유리한 것으로 해석될 필요는 없다.
[0024] 도 1은 본 개시내용의 실시예들을 구현하는 데 사용될 수 있는 예시적인 SoC(system-on-a-chip)(100)의 개략도이다. SoC(100)는 CPU(central processing unit)(102) 또는 멀티-코어 CPU, GPU(graphics processing unit)(104), DSP(digital signal processor)(106), NPU(neural processing unit)(108), 연결성 블록(connectivity block)(110), 멀티미디어 프로세서(112), 센서 프로세서(114), ISP(image signal processor)들(116), 메모리 블록(118), 및 선택적인 내비게이션 모듈(120) 중 하나 이상을 포함한다.
[0025] 변수들(예컨대, 노드 입력들 및 가중치들), 데이터, 명령들, 시스템 파라미터들 등은, NPU(108)와 연관된 메모리 블록, CPU(102)와 연관된 메모리 블록, GPU(104)와 연관된 메모리 블록, DSP(106)와 연관된 메모리 블록, 메모리 블록(118)에 저장될 수 있거나, 또는 다수의 블록들에 걸쳐 분산될 수 있다.
[0026] 연결성 블록(110)은 5G(fifth generation) 연결성, 4G LTE(fourth generation long term evolution) 연결성, Wi-Fi 연결성, USB 연결성, 블루투스 연결성 등을 포함할 수 있다. 멀티미디어 프로세서(112)는, 예컨대, 제스처들을 검출 및 인식할 수 있다. 일 구현에서, NPU는 CPU(102), DSP(106), 및/또는 GPU(104)에서 구현된다. 내비게이션 모듈(120)은 글로벌 포지셔닝 시스템을 포함할 수 있다.
[0027] SoC(100) 및/또는 그 컴포넌트들은 아래에서 논의되는 본 개시내용의 양상들에 따라 깊이-우선 컨볼루션 동작들을 수행하도록 구성될 수 있다. 깊이-우선 컨볼루션을 사용함으로써, 컴퓨팅 디바이스는 추론 효율을 증가시킬 수 있게 되어, 디바이스가 데이터-전달(예컨대, 판독 및 기록) 동작들의 수를 감소시키고, 기존의 하드웨어로 더 큰 입력들(예컨대, 이미지들)을 프로세싱하고, 그리고/또는 더 적은 하드웨어를 사용하여 기존 사이즈의 입력들을 프로세싱하는 것을 허용한다.
[0028] 딥 러닝 아키텍처(deep learning architecture)들은, 각각의 계층에서 연속적으로 더 높은 추상화 레벨들로 입력들을 표현하는 것을 학습함으로써 객체 인식 작업을 수행할 수 있고, 그에 의해, 입력 데이터의 유용한 특징 표현을 축적할 수 있다. 이러한 방식으로, 딥 러닝은 종래의 머신 러닝의 주요 병목 현상을 해결한다. 딥 러닝의 출현 전에, 객체 인식 문제에 대한 머신-러닝 접근법은, 아마도 얕은 분류기(shallow classifier)와 결합하여, 인간 공학적 특징(human engineered feature)들에 크게 의존했을 수 있다. 얕은 분류기는, 예컨대, 입력 값들(예컨대, 입력 벡터 성분들)의 가중 합(weighted sum)을 임계치와 비교하여 입력이 어느 클래스에 속하는지를 예측할 수 있는 2-클래스 선형 분류기일 수 있다. 인간 공학적 특징들은 도메인 전문 지식을 가진 엔지니어들에 의해 특정 문제 도메인에 대해 맞춤화된 템플릿(template)들 또는 커널들일 수 있다. 대조적으로, 딥 러닝 아키텍처들은, 인간 엔지니어가 설계할 수 있는 것과 유사한 특징들을, 그러나 트레이닝을 통해, 표현하는 것을 학습할 수 있다. 게다가, 심층망은 인간이 고려하지 않았을 수도 있는 새로운 타입들의 특징들을 표현하고 인식하는 것을 학습할 수 있다.
[0029] 딥 러닝 아키텍처는 특징들의 계층구조를 학습할 수 있다. 예컨대, 시각적 데이터가 제시되는 경우, 제1 계층은 입력 스트림에서 에지들과 같은 비교적 간단한 특징들을 인식하는 것을 학습할 수 있다. 다른 예에서, 청각 데이터가 제시되는 경우, 제1 계층은 특정 주파수들에서 스펙트럼 전력을 인식하는 것을 학습할 수 있다. 하위(lower)(즉, 더 이전의) 계층들의 출력을 입력으로서 취하는 상위(higher)(즉, 후속) 계층들은, 특징들의 조합들, 이를테면, 시각적 데이터를 위한 간단한 형상들 또는 청각 데이터를 위한 소리들의 조합들을 인식하는 것을 학습할 수 있다. 예컨대, 상위 계층들은 시각적 데이터로 복잡한 형상들을 표현하거나 또는 청각 데이터로 워드들을 표현하는 것을 학습할 수 있다. 더 상위 계층들은 일반적인 시각적 객체들 또는 음성 어구(spoken phrase)들을 인식하는 것을 학습할 수 있다.
[0030] 딥 러닝 아키텍처들은, 자연적인 계층적 구조(hierarchical structure)를 갖는 문제들에 적용될 때 특히 잘 수행될 수 있다. 예컨대, 전동 차량들의 분류는, 휠들, 앞 유리들, 및 다른 특징들을 인식하는 것을 먼저 학습하는 것으로부터 이익을 얻을 수 있다. 이러한 특징들은, 예컨대, 자동차들, 트럭들, 및/또는 비행기들을 인식하기 위해 상이한 방식들로 상위 계층들에서 조합될 수 있다.
[0031] 신경망들은 다양한 연결성 패턴(connectivity pattern)들로 설계될 수 있다. 피드-포워드망(feed-forward network)들에서, 정보는 하위 계층으로부터 상위 계층으로 전달되고, 하위 계층의 각각의 뉴런은 상위 계층들의 뉴런들과 통신한다. 위에서 설명된 바와 같이, 계층적 표현은 피드-포워드망의 연속적인 계층들에서 구축될 수 있다. 신경망들은 또한, 순환(recurrent) 또는 피드백(하향식(top-down)으로도 불림) 연결들을 가질 수 있다. 순환 연결에서, 주어진 계층의 뉴런으로부터의 출력은 동일한 계층의 다른 뉴런에 통신될 수 있다. 순환 아키텍처는, 시퀀스로 신경망에 전달되는 입력 데이터 청크(chunk)들 중 하나 초과에 걸쳐있는 패턴들을 인식하는 데 도움이 될 수 있다. 주어진 계층의 뉴런으로부터 하위 계층의 뉴런으로의 연결은 피드백(또는 하향식) 연결이라고 불린다. 고-레벨의 개념의 인식이 입력의 특정 저-레벨 특징들을 구별하는 것을 도울 수 있을 때, 많은 피드백 연결들을 갖는 망이 도움이 될 수 있다.
[0032] 신경망의 계층들 사이의 연결들은 완전히 연결될 수 있거나 또는 국부적으로 연결될 수 있다. 도 2a는 완전 연결 신경망 세그먼트(202)의 예를 예시한다. 완전 연결 신경망 세그먼트(202)에서, 제1 계층의 뉴런은 제2 계층의 모든 뉴런에 자신의 출력을 통신할 수 있고, 그에 따라, 제2 계층의 각각의 뉴런은 제1 계층의 모든 뉴런으로부터 입력을 수신할 것이다. 도 2b는 국부 연결 신경망 세그먼트(204)의 예를 예시한다. 국부 연결 신경망 세그먼트(204)에서, 제1 계층의 뉴런은 제2 계층의 제한된 수의 뉴런들에 연결될 수 있다. 더 일반적으로, 국부 연결 신경망 세그먼트(204)의 국부적으로 연결된 계층은, 계층 내의 각각의 뉴런이 동일한 또는 유사한 연결성 패턴을 갖지만, 상이한 값들을 가질 수 있는 연결 강도(connection strength)들(예컨대, 210, 212, 214, 및 216)을 갖도록, 구성될 수 있다. 국부적으로 연결된 연결성 패턴은 상위 계층에서 공간적으로 별개의 구역들을 발생시킬 수 있는데, 왜냐하면 주어진 구역의 상위 계층 뉴런들은, 망에 대한 총 입력의 제한된 부분의 특성들에 대한 트레이닝을 통해 조정(tune)되는 입력들을 수신할 수 있기 때문이다.
[0033] 국부 연결 신경망의 일 예는 컨볼루션 신경망이다. 도 2c는 컨볼루션 신경망 세그먼트(206)의 예를 예시한다. 컨볼루션 신경망 세그먼트(206)는, 제2 계층의 각각의 뉴런에 대한 입력들과 연관된 연결 강도들이 공유되도록(예컨대, 208) 구성될 수 있다. 컨볼루션 신경망들은 입력들의 공간적 위치가 의미가 있는 문제들에 매우 적합할 수 있다. 컨볼루션 신경망 세그먼트(206)는 본 개시내용의 양상들에 따라 사용될 수 있다.
[0034] 도 2d는, 이미지 캡처링 디바이스(230), 이를테면 자동차-탑재 카메라로부터의 이미지(226) 입력으로부터 시각적 특징들을 인식하도록 설계된 DCN(200)의 상세한 예를 예시한다. 본 예의 DCN(200)은 교통 표지판들 및 교통 표지판 상에 제공되는 번호를 식별하도록 트레이닝될 수 있다. 물론, DCN(200)은 다른 작업들, 이를테면, 차선 표시를 식별하거나 신호등을 식별하도록 트레이닝될 수 있다.
[0035] DCN(200)은 지도 학습(supervised learning)으로 트레이닝될 수 있다. 트레이닝 동안, DCN(200)에는 이미지, 이를테면 속도 제한 표지판의 이미지(226)의 텐서 표현(tensor representation)이 제시될 수 있고, 그런 다음, 출력(222)을 생성하기 위해 포워드 패스(forward pass)가 컴퓨팅될 수 있다. 이미지의 텐서 표현은, 이미지의 각각의 픽셀에 대해, 픽셀에 대한 밝기 정보 및 컬러를 표현하는 정보를 포함할 수 있다. 본원에서, 이미지라는 용어는 이미지의 텐서 표현에 대한 약어로서 사용될 수 있다는 것에 유의한다. DCN(200)은 특징 추출 섹션 및 분류 섹션을 포함할 수 있다. 이미지(226)를 수신하면, 컨볼루션 계층(232)은 컨볼루션 커널(convolutional kernel)들(미도시)을 텐서에 적용하여 제1 세트의 특징 맵(feature map)들(218)을 생성할 수 있다. 예로서, 컨볼루션 계층(232)에 대한 컨볼루션 커널은 28x28 특징 맵들을 생성하는 5x5 커널일 수 있다. 본 예에서, 제1 세트의 특징 맵들(218)에서 4개의 상이한 특징 맵들이 생성되는데, 왜냐하면 컨볼루션 계층(232)에서 4개의 상이한 컨볼루션 커널들이 이미지(226)에 적용되었기 때문이다. 컨볼루션 커널들은 또한 필터들 또는 컨볼루션 필터(convolutional filter)들로 지칭될 수 있다.
[0036] 제1 세트의 특징 맵들(218)은 풀링(pooling) 계층(미도시)에 의해 서브샘플링(subsample)되어 제2 세트의 특징 맵들(220)을 생성할 수 있다. 풀링은, 예컨대, 입력들의 그룹의 최대 값만을 선택하는 최대 풀링(max pooling), 또는 입력들의 그룹의 평균 값만을 선택하는 평균 풀링(average pooling)일 수 있다. 풀링 계층은 제1 세트의 특징 맵들(218) 각각의 사이즈를 감소시킨다. 즉, 제2 세트의 특징 맵들(220) 각각의 사이즈, 이를테면 14x14는, 제1 세트의 특징 맵들(218)의 사이즈, 이를테면 28x28보다 더 작다. 감소된 사이즈는 메모리 소비를 감소시키면서 후속 계층에 유사한 정보를 제공한다. 제2 세트의 특징 맵들(220)은 하나 이상의 후속 컨볼루션 계층들(미도시)을 통해 추가로 컨볼빙되어, 하나 이상의 후속 세트들의 특징 맵들(미도시)을 생성할 수 있다.
[0037] 도 2d의 예에서, 제2 세트의 특징 맵들(220)은 완전히 연결되고 플래트닝(flatten)되어 제1 특징 벡터(feature vector)(224)를 생성한다. 게다가, 제1 특징 벡터(224)는 완전히 연결되어 제2 특징 벡터(228)를 생성한다. 제2 특징 벡터(228)의 각각의 특징은, 이미지(226)의 가능한 특징에 대응하는 숫자, 이를테면 "표지판(sign)", "60", 및 "100"을 포함할 수 있다. 소프트맥스 함수(softmax function)(미도시)가 제2 특징 벡터(228)의 숫자들을 확률로 변환할 수 있다. 따라서, DCN(200)의 출력(222)은, 이미지(226)가 하나 이상의 특징들을 포함할 확률이다.
[0038] 본 예에서, 출력(222)에서 "표지판" 및 "60"에 대한 확률들은, 출력(222) 중 다른 것들, 이를테면 "30," "40," "50," "70," "80," "90" 및 "100"의 확률들보다 더 높다. 트레이닝 전에, DCN(200)에 의해 생성되는 출력(222)은 부정확할 가능성이 있다. 따라서, 출력(222)과 타겟 출력 간의 에러가 계산될 수 있다. 타겟 출력은 이미지(226)의 실측 자료(ground truth)(예컨대, "표지판" 및 "60")이다. 그런 다음, DCN(200)의 출력(222)이 타겟 출력과 더 밀접하게 정렬되도록, DCN(200)의 가중치들이 조정될 수 있다.
[0039] 가중치들을 조정하기 위해, 학습 알고리즘은 가중치들에 대한 그래디언트 벡터(gradient vector)를 컴퓨팅할 수 있다. 그래디언트는, 가중치가 조정된 경우 에러가 증가 또는 감소하게 될 양을 표시할 수 있다. 최상위(top) 계층에서, 그레디언트는, 끝에서 두 번째 계층에서의 활성화된 뉴런과 출력 계층에서의 뉴런을 연결하는 가중치의 값에 직접적으로 대응할 수 있다. 하위 계층들에서, 그래디언트는 가중치들의 값 및 상위 계층들의 컴퓨팅된 에러 그래디언트들에 의존할 수 있다. 그런 다음, 에러를 감소시키기 위해 가중치들이 조정될 수 있다. 가중치들을 조정하는 이러한 방식은, 신경망을 통한 "백워드 패스(backward pass)"를 수반하기 때문에 "역 전파(back propagation)"로 지칭될 수 있다.
[0040] 실제로, 가중치들의 에러 그래디언트는, 계산된 그래디언트가 실제(true) 에러 그래디언트에 근사하도록 적은 수의 예들에 걸쳐 계산될 수 있다. 이러한 근사화 방법은 확률론적 그래디언트 하강(stochastic gradient descent)으로 지칭될 수 있다. 확률론적 그래디언트 하강은, 전체 시스템의 달성 가능한 에러 레이트가 감소를 중단할 때까지 또는 에러 레이트가 타겟 레벨에 도달할 때까지 반복될 수 있다. 학습 후에, DCN에는 새로운 이미지들이 제시될 수 있으며, 그리고 망을 통한 포워드 패스는 DCN의 추론 또는 예측으로 고려될 수 있는 출력(222)을 산출할 수 있다.
[0041] DCN들은 많은 작업들에 대해 최첨단 기술 성능을 달성하였다. DCN들은 지도 학습을 사용하여 트레이닝될 수 있으며, 여기서, 입력 및 출력 타겟들 둘 모두는 많은 예시들에 대해 알려져 있고, 그래디언트 하강 방법들을 사용하여 망의 가중치들을 수정하는 데 사용된다.
[0042] DCN들은 피드-포워드망들일 수 있다. 또한, 위에서 설명된 바와 같이, DCN의 제1 계층의 뉴런으로부터 다음 상위 계층의 뉴런들의 그룹으로의 연결들은 제1 계층의 뉴런들에 걸쳐 공유된다. DCN들의 피드-포워드 및 공유 연결들은 신속한 프로세싱을 위해 활용될 수 있다. DCN의 계산 부담은, 예컨대, 순환 또는 피드백 연결들을 포함하는 유사한 크기의 신경망의 계산 부담보다 훨씬 더 적을 수 있다.
[0043] 컨볼루션망의 각각의 계층의 프로세싱은 공간적으로 불변인 템플릿 또는 기초 투영(basis projection)으로 고려될 수 있다. 입력이 먼저 다수의 채널들, 이를테면 컬러 이미지의 적색 채널, 녹색 채널 및 청색 채널로 분해되는 경우, 그 입력에 대해 트레이닝된 컨볼루션망은, 이미지의 축들을 따라 2개의 공간 차원들을 갖고 컬러 정보를 캡처하는 제3 차원을 갖는, 3차원으로 고려될 수 있다. 컨볼루션 연결의 출력들은 후속 계층에서 특징 맵을 형성하는 것으로 고려될 수 있으며, 특징 맵(예컨대, 220)의 각각의 엘리먼트는 이전 계층(예컨대, 특징 맵들(218))의 뉴런들의 범위로부터 그리고 다수의 채널들 각각으로부터 입력을 수신한다. 특징 맵 내의 값들은, 비-선형성(non-linearity)으로, 이를테면, ReLU(rectified linear unit)에 의해, 정류(rectification), max(0, x)로 추가로 프로세싱될 수 있다. ReLU는, 0들로 대체되는 임의의 음의 값들을 필터링하는 기능을 한다. 인접한 뉴런들로부터의 값들은 추가로 풀링될 수 있으며, 이는 다운 샘플링(down sampling)에 대응하고, 그리고 부가적인 국부적 불변성 및 차원성(dimensionality) 감소를 제공할 수 있다.
[0044] 도 3은 예시적인 심층 컨볼루션망(350)을 예시하는 블록도이다. 심층 컨볼루션망(350)은 연결성 및 가중치 공유에 기반하여 다수의 상이한 타입들의 계층들을 포함할 수 있다. 도 3에 도시된 바와 같이, 심층 컨볼루션망(350)은 3개의 컨볼루션 블록들(354), 즉 컨볼루션 블록들(354(1), 354(2), 및 354(3))을 포함한다. 각각의 컨볼루션 블록(354)은 대응하는 컨볼루션 계층(CONV)(356)을 포함하며, 그리고 선택적으로, 정규화(normalization) 계층(LNorm)(358) 및 최대 풀링 계층(MAX POOL)(360)을 포함할 수 있다. 예컨대, 컨볼루션 블록(354(1))은 CONV(356(1)), LNorm(358(1)), 및 MAX POOL(360(1))을 포함하는 한편, 컨볼루션 블록(354(2))은 컨볼루션 계층(356(1))은 포함하지만, 대응하는 정규화 계층 또는 최대 풀링 계층은 포함하지 않는다.
[0045] 컨볼루션 계층(356)은 하나 이상의 컨볼루션 필터들(커널들)을 포함할 수 있으며, 그 컨볼루션 필터들(커널들) 각각은, 대응하는 특징 맵(미도시)(이것 또한 텐서임)을 생성하기 위해, 입력 텐서, 이를테면 입력 데이터(352)에 적용될 수 있는 가중치들의 세트를 포함한다. 아래에서 추가로 설명되는 바와 같이, 입력 텐서에 대한 커널의 컨볼루션 적용은, 입력 텐서에 대해 커널을 스위핑(sweep)하고, 커널의 가중치들에 입력 텐서의 대응하는 값들을 곱하고, 그리고 곱들을 더하여 결과적인 특징 맵에 대한 대응하는 값을 생성하는 것을 수반한다. 컨볼루션 계층(356)은, 예컨대, 비-선형 정류(ReLU), 스텝 함수(step function), 시그모이드 함수(sigmoid function) 또는 tanh 함수와 같은 비선형 함수(non-linearity function)를 수행하는 비선형 활성화 계층(미도시)을 포함할 수 있거나, 또는 이러한 비선형 활성화 계층이 바로 뒤따를 수 있다. 비-선형 함수를 수행하는 것은 DCN(350)의 정확도 및 효율을 개선하는 것을 돕는다.
[0046] 정규화 계층(358)은 선행하는 컨볼루션 필터들에 의해 출력되는 특징 맵들 각각을 정규화할 수 있다. 예컨대, 정규화 계층(358)은 화이트닝(whitening) 또는 측방향 억제(lateral inhibition)를 제공할 수 있다. 최대 풀링 계층(360)은, 로컬 변환 불변성을 위해 공간에 걸친 다운-샘플링 어그리게이션(aggregation)을 제공하기 위하여, 입력들의 클러스터(cluster)의 최대 값만을 전파하도록 선택할 수 있다. 다시 말해서, 최대 풀링은, 수용 필드의 최대 활성화가, 수용 필드 내에서의 그 최대 활성화의 정확한 위치와 무관하게 전체 수용 필드를 특성화할 수 있도록 허용한다. 다른 다운-샘플링 계층들, 이를테면, 예컨대 평균 풀링 계층이, 임의의 최대 풀링 계층(360) 대신에 사용될 수 있다는 것에 유의한다.
[0047] 도 3에는 단지 3개의 컨볼루션 블록들(354(1)-(3))만이 도시되어 있지만, 본 개시내용은 그렇게 제한되지 않으며, 대안적으로, 구성 계층들의 임의의 조합을 갖는 임의의 수의 컨볼루션 블록들(354)이 심층 컨볼루션망(350)에 포함될 수 있다.
[0048] 심층 컨볼루션망(350)은 또한, 하나 이상의 완전 연결 계층(fully connected layer)들(362), 이를테면, 계층(362(1))("FC1"로 라벨링됨) 및 계층(362(2))("FC2"로 라벨링됨)을 포함할 수 있다. 완전 연결 계층들은, 도 2d를 참조하여 위에서 설명된 바와 같이, 플래트닝 및 분류를 위해 사용된다. 심층 컨볼루션망(350)은, 예컨대, 출력 분류 특징(output classification feature)들의 세트 각각에 대한 확률들을 제공하기 위해 소프트맥스 함수를 구현할 수 있는 MLR(multinomial logistic regression) 계층(364)을 더 포함할 수 있다.
[0049] 심층 컨볼루션망(350)의 계층들(356, 358, 360, 362, 364) 중 임의의 2개의 연속적인 계층들 사이의 변환들은, 트레이닝 동안 업데이트되는 가중치들 및 바이어스들(미도시)에 기반한다. 컨볼루션 블록들 중 첫 번째 컨볼루션 블록(354(1))에 공급되는 입력 데이터(352)(예컨대, 이미지들, 오디오, 비디오, 센서 데이터 및/또는 다른 입력 데이터)로부터 계층적 특징 표현들을 학습하기 위해, 계층들(예컨대, 356, 358, 360, 362, 364) 각각의 출력은 심층 컨볼루션망(350) 내의 계층들(예컨대, 356, 358, 360, 362, 364) 중 후속 계층의 입력의 역할을 할 수 있다. 심층 컨볼루션망(350)의 출력은 입력 데이터(352)에 대한 분류(366)이다. 분류(366)는 확률들의 세트일 수 있으며, 여기서, 각각의 확률은 입력 데이터가 분류 특징들의 세트로부터의 특징을 포함할 확률이다.
[0050] DCN(350)에 의한 이미지의 예시적인 종래의 프로세싱에서, 이미지 데이터는, 오프-칩 DRAM 모듈과 같은 비교적 저속의 홀딩 메모리(holding memory)로부터 리트리브(retrieve)되고, 비교적 고속의 동작 메모리, 이를테면 NPU(108)의 TCM(tightly-coupled memory)(미도시), 또는 다른 로컬 메모리에 업로딩되며, 그리고 입력 데이터(352)로서 제공될 것이다. TCM은, 예컨대 SRAM(static random-access memory)으로서 구현될 수 있다. 이미지 데이터에 부가하여, 제1 컨볼루션 계층(356(1))의 커널들에 대한 가중치들이 또한, 홀딩 메모리로부터 동작 메모리 내로 리트리브될 것이다. 리트리벌(retrieval) 이후, 전체 이미지는 컨볼루션 블록(354(1))의 컨볼루션 계층(356(1))의 커널들을 사용하여 컨볼빙될 것이며(결과들은 대응하는 ReLU에 의해 필터링됨), 정규화 계층(358(1))에 의해 정규화되고, 최대 풀링 계층(360(1))에 의해 어그리게이팅되어, 컨볼루션 블록(354(2))에 대한 입력을 형성할 특징 맵들을 생성한다. 컨볼루션 블록(354(1))의 프로세싱 동안, 이러한 특징 맵들은 홀딩 메모리에 기록된다. 컨볼루션 블록(354(1))에 의한 입력 데이터(352)의 프로세싱이 완료된 이후, 이러한 특징 맵들은 홀딩 메모리로부터 리트리브되고, 컨볼루션 블록(354(2))에 의한 프로세싱을 위해 동작 메모리 내로 업로딩된다. 이러한 프로세싱은, 큰 입력 텐서들 및 큰 중량 텐서들을 프로세싱하기 위한 큰 동작 메모리들을 요구한다. 또한, 홀딩 메모리와 동작 메모리 사이의 데이터의 전후(back-and-forth) 이동은 자원-집약적이고, 성능을 제한하며, 전력을 소모한다.
[0051] 본 개시내용의 일 양상에서, 특정 사이즈의 입력들을 프로세싱하기 위해 필요한 동작 메모리의 사이즈를 최소화하고, 그리고 홀딩 메모리와 동작 메모리 사이에서 데이터를 전송하기 위해 사용되는 메모리 대역폭을 최소화하기 위해, 깊이-우선 컨볼루션이 사용된다. 깊이-우선 컨볼루션은, 현재 계층의 컨볼루션 프로세싱이 완료되기 전에, 다음 컨볼루션 계층의 컨볼루션 프로세싱을 시작하는 것을 수반한다. 또한, 입력 값들은 현재 프로세싱되는 수용 필드들에 대해 필요에 따라 업로딩되고, 더 이상 필요하지 않을 때, 현재 계층의 컨볼루션의 종료 전에 폐기된다.
[0052] 도 4는, 아래에서 설명되는 바와 같이, 여러 스테이지들 DCN(n)으로 도시된 DCN(401)에서의 1-차원 컨볼루션 계층들의 깊이-우선 컨볼루션 프로세싱의 여러 스테이지들의 예시적인 진행(400)의 예시이다. DCN(401)은 계층들(402, 403, 404, 및 405)을 포함한다. 계층들(402, 403, 및 404) 각각은, 국부적인 필터링, 이를테면, 예컨대 컨볼루션, 풀링, 또는 엘리먼트별 필터링(elementwise filtering)을 수행하는 계층이다. 계층들(402, 403, 404, 및 405)은, 임의의 2개의 인접한 계층들 사이에, 예컨대, 비-선형성 계층, 정규화 계층, 및/또는 풀링 계층과 같은 개재 계층(intervening layer)들(미도시)을 가질 수 있다.
[0053] 계층들(402, 403, 404, 및 405)은, 도 4에서, 이들의 입력 벡터들에 의해 표현된다는 것에 유의한다. 일 실시예에서, 계층들(402, 403, 404, 및 405)은 도 3의 계층들(356(1), 356(2), 356(3) 및 362(1))에 대응하며, 여기서, 계층들(402, 403, 및 404)은 컨볼루션 계층들이다. 일 실시예에서, 계층(402)은, 입력 벡터의 대응하는 3-엘리먼트 수용 필드들(407)과 컨볼빙하기 위해 3-탭(즉, 3-가중치) 커널들(미도시)을 사용한다.
[0054] DCN(401(1))을 프로세싱하는 제1 스테이지에서, 계층(402)에 대한 입력 벡터의 3개의 엘리먼트들(406(1))이 홀딩 메모리로부터 동작 메모리 내로 입력(read into)되어, 수용 필드(407(1))를 형성한다. 또한, 계층(402)에 대한 커널들의 가중치들이 홀딩 메모리로부터 동작 메모리 내로 입력된다. 수용 필드(407(1))는 계층(402)의 제1 커널과 행렬-곱셈(matrix-multiply)되어, 계층(403)에 대한 출력 값(408(1))을 생성한다. 이러한 프로세싱은, 그 베이스가 수용 필드(407(1))이고 그리고 그 정점(apex) 또는 스템(stem)이 출력 값(408(1))인 2-차원의 대각선으로 패터닝된 깔때기(funnel)(420(1))에 의해 시각적으로 표현될 수 있다. 일반적으로, 컨볼루션 또는 풀링과 같은 임의의 국부적 필터링 단계는, 그 베이스가 수용 필드이고 그리고 그 정점 또는 스템이 출력인 원뿔 또는 깔때기로서 시각적으로 표현될 수 있다.
[0055] 계층(402)은 하나의 엘리먼트의 스트라이드(stride)를 사용한다는 것에 유의한다. DCN(401(2))을 프로세싱하는 후속하는 제2 스테이지에서, 계층(402)에 대한 입력 벡터의 다음 엘리먼트(406(2))가 홀딩 메모리로부터 동작 메모리 내로 입력되어, 다음 수용 필드(407(2))를 형성하는 바, 이는 제1 스테이지 DCN(401(1))의 수용 필드(407(1))에 대해 하나의 엘리먼트만큼 시프트된 것으로 예시된다. 그런 다음, 수용 필드(407(2))는 계층(402)의 제1 커널과 행렬-곱셈되어, 계층(403)에 대한 출력 값(408(2))을 생성한다. 계층(402)에 대한 입력 벡터의 제1 값(421(2))이 더 이상 필요하지 않기 때문에, 동작 메모리에서의 (체커보드(checkerboard) 패턴으로 예시된) 그 스팟(spot)은 해제(free)되고 임의의 다른 엘리먼트에 대해 재사용될 수 있다.
[0056] DCN(401(3))을 프로세싱하는 후속하는 제3 스테이지에서, 계층(402)에 대한 입력 벡터의 다음 엘리먼트(406(3))가 홀딩 메모리로부터 동작 메모리 내로 입력되어, 다음 수용 필드(407(3))를 형성하며, 수용 필드(407(3))는 이후, 계층(402)의 제1 커널과 행렬-곱셈되어, 계층(403)에 대한 출력 값(408(3))을 생성한다. 계층(402)에 대한 입력 벡터의 제2 엘리먼트(421(3))에 대한 동작-메모리 스팟은 해제되어 재사용될 수 있다. 계층(403)은 또한, 3-탭 커널들(미도시)을 사용한다. 이제, 값들(408(1)-(3))이 결정되었으므로, 이들은 수용 필드(409(3))를 형성하며, 수용 필드(409(3))는 이후, 계층(403)의 제1 커널들과 행렬-곱셈되어, 계층(404)에 대한 출력 값(410(3))을 생성한다. 이러한 프로세싱은 대각선으로 패터닝된 깔때기(422(3))에 의해 예시된다.
[0057] DCN(401(4))을 프로세싱하는 후속하는 제4 스테이지에서, 계층(402)에 대한 입력 벡터의 다음 엘리먼트(406(4))가 홀딩 메모리로부터 동작 메모리 내로 입력되어, 다음 수용 필드(407(4))를 형성하며, 수용 필드(407(4))는 이후, 계층(402)의 제1 커널과 행렬-곱셈되어, 계층(403)에 대한 출력 값(408(3))을 생성한다. 계층(402)에 대한 입력 벡터의 제3 엘리먼트(421(4))에 대한 동작-메모리 스팟은 해제되어 재사용될 수 있다. 새롭게 생성된 값(408(4))을 사용하여, 수용 필드(409(4))는 계층(403)의 제1 커널과 행렬-곱셈되어, 계층(404)에 대한 출력 값(410(4))을 생성한다. (이제 체커보드 패턴으로 예시되는) 값(408(1))에 대한 동작-메모리 스팟은 이제 해제되어 재사용될 수 있다.
[0058] DCN(401(5))을 프로세싱하는 후속하는 제5 스테이지에서, 계층(402)에 대한 입력 벡터의 다음 엘리먼트(406(5))가 동작 메모리 내로 입력되어, 다음 수용 필드(407(5))를 형성하며, 수용 필드(407(5))는 이후, 계층(402)의 제1 커널과 행렬-곱셈되어, 계층(403)에 대한 출력 값(408(5))을 생성한다. 입력 벡터의 엘리먼트(406(2))에 의해 사용된 동작-메모리 스팟은 이제 해제되어 재사용될 수 있다. 새롭게 생성된 값(408(5))을 사용하여, 계층(403)의 수용 필드(409(5))는 계층(403)의 제1 커널과 행렬-곱셈되어, 계층(404)에 대한 출력 값(410(5))을 생성한다. 값(408(2))에 대한 동작-메모리 스팟은 이제 해제되어 재사용될 수 있다. 계층(404)은 또한, 3-탭 커널들(미도시)을 사용한다. 이제, 계층(404)의 값들(410(3)-(5))이 결정되었으므로, 이들은 수용 필드(411(5))를 형성하며, 수용 필드(411(5))는 계층(404)의 제1 커널과 행렬-곱셈되어, 계층(405)에 대한 출력 값(412(5))을 생성한다. 이러한 프로세싱은 대각선으로 패터닝된 깔때기(423(5))에 의해 예시된다.
[0059] DCN(401(6))을 프로세싱하는 후속하는 제6 스테이지에서, 계층(402)에 대한 입력 벡터의 다음 엘리먼트(406(6))가 동작 메모리 내로 입력되어, 다음 수용 필드(407(6))를 형성하며, 수용 필드(407(6))는 이후, 계층(402)의 제1 커널과 행렬-곱셈되어, 계층(403)에 대한 출력 값(408(6))을 생성한다. 입력 벡터의 엘리먼트(406(3))에 대한 동작-메모리 스팟은 해제되어 재사용될 수 있다. 새롭게 생성된 값(408(6))을 사용하여, 수용 필드(409(6))는 계층(403)의 제1 커널과 행렬-곱셈되어, 계층(404)에 대한 출력 값(410(6))을 생성한다. 값(408(3))에 대한 동작-메모리 스팟은 해제되어 재사용될 수 있다. 새롭게 생성된 값(410(6))을 사용하여, 수용 필드(411(6))는 계층(404)의 제1 커널과 행렬-곱셈되어, 계층(405)에 대한 출력 값(412(6))을 생성한다. 값(410(3))에 의해 사용된 동작-메모리 스팟은 해제되어 재사용될 수 있다. (이제 격자 패턴으로 예시되는) 이전에 생성된 값(412(5))은 홀딩 메모리에 기록될 수 있으며, 동작 메모리 내의 대응하는 스팟은 해제되어 재사용될 수 있다.
[0060] DCN(401(n))(여기서, n>6)을 프로세싱하는 후속하는 제n 스테이지에서, 계층(402)에 대한 입력 벡터의 제n 엘리먼트(406(n))가 동작 메모리 내로 입력되어, 수용 필드(407(n))를 형성하며, 수용 필드(407(n))는 계층(402)의 제1 커널과 행렬-곱셈되어, 계층(403)에 대한 출력 값(408(n))을 생성한다. 입력 벡터의 엘리먼트(406(n-3))에 대한 동작-메모리 스팟은 해제되어 재사용될 수 있다. 새롭게 생성된 값(408(n))을 사용하여, 수용 필드(409(n))는 계층(403)의 제1 커널과 행렬-곱셈되어, 계층(404)에 대한 출력 값(410(n))을 생성한다. 값(408(n-3))에 대한 동작-메모리 스팟은 해제되어 재사용될 수 있다. 새롭게 생성된 값(410(n))을 사용하여, 수용 필드(411(n))는 계층(404)의 제1 커널과 행렬-곱셈되어, 계층(405)에 대한 출력 값(412(n))을 생성한다. 값(410(n-3))에 의해 사용된 동작-메모리 스팟은 해제되어 재사용될 수 있다. 이전에 생성된 값(412(n-1))은 홀딩 메모리에 기록될 수 있으며, 동작 메모리 내의 대응하는 스팟은 해제되어 재사용될 수 있다.
[0061] 엘리먼트(406(n))가 계층(402)에 대한 입력 벡터의 최종 엘리먼트인 경우, 후속하여, 계층들(402, 403, 404, 및 405)에 의해 사용된 모든 나머지 동작-메모리 스팟들은 해제되어 재사용될 수 있으며, 계층(405)의 생성된 값(412(n))은 먼저 홀딩 메모리에 기록된다. 알 수 있는 바와 같이, 이러한 예시적인 예에서, 계층(405)에 대한 값들을 생성하기 위해 계층(402)에 대한 입력 벡터를 프로세싱하는 것은, (1) 홀딩 메모리로부터 입력 벡터의 엘리먼트만을 판독하는 것뿐만 아니라, 계층들(402, 403, 및 404)의 커널들에 대한 가중치들을 판독하는것, (2) 계층(405)의 계산된 값들만을 홀딩 메모리에 기록하는 것, 및 (3) 프로세싱 동안, 계층들(402, 403, 404)에 대한 커널들의 가중치들, 수용 필드들(407, 409 및 411)의 값들 및 대응하는 값(412)만을 동작 메모리에 유지하는 것을 요구한다.
[0062] 이에 비해, DCN(401)을 계층별로 프로세싱하는 종래의 방법들을 사용하게 되면, 훨씬 더 많은 판독 및 기록 동작들 및 훨씬 더 큰 동작 메모리를 요구할 것이다. 구체적으로, 종래의 프로세싱은, 대응하는 커널 가중치들과 함께, 홀딩 메모리로부터 계층(402)에 대한 입력 벡터의 모든 엘리먼트들을 판독하고, 이들 모두를 동작 메모리에 저장하고, 계층(403)의 모든 엘리먼트들을 홀딩 메모리에 기록한 다음, 대응하는 커널 가중치들과 함께, 계층(403)의 모든 엘리먼트들을 홀딩 메모리로부터 판독하고, 이들 모두를 동작 메모리에 저장한 다음, 계층(404)의 모든 엘리먼트들을 홀딩 메모리에 기록한 다음, 대응하는 커널 가중치들과 함께, 계층(404)의 모든 엘리먼트들을 홀딩 메모리로부터 판독하고, 이들 모두를 동작 메모리에 저장한 다음, 계층(405)의 모든 엘리먼트들을 홀딩 메모리에 기록하는 것을 요구할 것이다.
[0063] 깊이-우선 컨볼루션을 사용하여, 동작 메모리의 사이즈에 의해 허용되는 한 많은 계층들을 동시에 프로세싱할 수 있다. 그 수는 미리 결정될 수 있거나, 또는 소위 그리디 알고리즘(greedy algorithm)을 사용하여 동적으로 결정될 수 있으며, 여기서, 동작 메모리가 계층의 수용 필드들 및 가중치들을 위해 예비(reserve)된 후, 동작 메모리가 그 다음 계층의 수용 필드들 및 커널들을 지원할 수 있는지 여부가 결정되고, 지원할 수 있다면, 그 다음 계층이 깊이-우선 컨볼루션에 추가된다. 지원할 수 없다면, 그 다음 계층에 대해 계산된 값들은, 진행중인 깊이-우선 컨볼루션 프로세스의 완료 이후 추가 프로세싱을 위해 홀딩 메모리에 기록될 수 있다. 동시에 프로세싱되는 계층들의 수가 무엇이던 간에 또는 그 수가 선택되더라도, 그 값들이 홀딩 메모리에 기록되는, 깊이-우선 계층 세트의 마지막 계층은 컷-오프(cut-off) 계층으로 지칭될 수 있다. 위에서 설명된 DCN(401)의 구현에서, 컷-오프 계층은 계층(405)이다.
[0064] 1보다 큰 스트라이드 길이들을 사용하거나, (예컨대, 다수의 필터들을 사용하여) 계층에 다수의 채널들을 갖거나, 또는 다-차원 텐서들을 프로세싱하는 것은, 동작 메모리에 저장될 필요가 있게 될 엘리먼트들의 대응하는 수를 변화시킬 것이지만, 현재 계층을 여전히 프로세싱하면서 후속 계층들에서 컨볼루션 및 다른 동작들을 수행하는 전체 방법론은 실질적으로 동일하게 유지될 것임에 유의한다.
[0065] 일 실시예에서, 계층들(402, 403, 404, 및 405)은, 각각, 도 2d의 계층들(232, 218, 220, 및 224)에 대응할 수 있으며, 여기서, 계층들(402, 403, 및 404)은 컨볼루션 계층들이며, 입력 텐서들 및 커널들은 2차원 어레이들이다. 이 실시예에서, 도 4는 계층들(402, 403, 404, 및 405)의 단면을 도시하는 것으로서 보여질 수 있으며, 여기서, 컨볼빙 프로세스는 2-차원 원뿔 또는 깔때기 형태의 제1 단면 및 사다리꼴 형태의 제2 단면을 갖는 세장형 웨지(elongated wedge)로서 시각화될 수 있고, 수용 필드는 하기 설명되는 바와 같이, 신장된 수용 필드일 수 있다.
[0066] 도 5는 예시적인 DCN(501)에서의 2-차원 컨볼루션 계층들의 깊이-우선 컨볼루션 프로세싱의 여러 스테이지들의 예시적인 진행(500)의 예시이다. DCN(501)은 3개의 컨볼루션 계층들(502, 503, 및 504), 및 제4 계층(505)을 포함하며, 여기서, 4개의 계층들은, 예컨대, 도 2d의 망(200)의 계층들(232, 218, 220, 및 224) 또는 도 3의 망(350)의 계층들(356(1)-(3) 및 362(1))에 각각 대응할 수 있다. DCN(501)은, 임의의 2개의 순차적인 컨볼루션 계층들 사이에, 예컨대 비-선형성, 정규화, 및/또는 풀링 계층들과 같은 개재 비-컨볼루션 계층들(미도시)을 가질 수 있다는 것에 유의한다.
[0067] 각각의 컨볼루션 계층은, 길이 x(i) 및 폭 y(i)를 갖는 입력 텐서를 수신하고, 길이 x(k) 및 폭 y(k)를 갖는 커널들을 사용한다. 길이(x) 및 폭(y)은 본원에서 텐서의 제1 치수 및 텐서의 직교하는 제2 치수에 대한 편의상 약어로서 사용되며, 물리적 측정들을 나타내지 않는다는 것에 유의한다. 종래의 컨볼루션 프로세싱에서, 입력 텐서는 커널과 동일한 치수들을 갖는 수용 필드들을 사용하여 프로세싱되는 한편, DCN(501)은 길이 x(k) 및 폭 y(i)를 갖는 신장된 수용 필드들을 사용한다. 다시 말해서, DCN(501)의 계층의 신장된 수용 필드들은 대응하는 커널들과 동일한 길이 및 대응하는 입력 텐서와 동일한 폭을 갖는다. 임의의 특정 계층에 대해, 길이 및 폭 축들은 길이 x(i)가 폭 y(i)보다 크거나 같도록 선택될 수 있다는 것에 유의한다. 도 5에 도시된 바와 같이, 제1 계층(502)은, 그 길이(502(x(i)))가 15이고 폭(502(y(i)))이 13(즉, 15×13)인 입력 텐서를 수신하며, 그리고 길이(502(x(k)))가 3이고 폭이 3(즉, 3×3)인 커널들(미도시), 및 길이(502(x(k)))가 3이고 폭(502(y(i)))이 13(즉, 3×13)인 신장된 수용 필드(506)를 사용한다.
[0068] DCN(501(1))을 프로세싱하는 제1 스테이지에서, 502(x(k)) × 502(y(i)), 즉 3×13= 39의, 입력 텐서의 엘리먼트들이 홀딩 메모리로부터 동작 메모리 내로 리트리브되어, 수용 필드(506(1))를 형성한다. 수용 필드는, 계층(503)에 대한 제2-계층 입력 텐서에 대한 입력 스트립(507(1))을 생성하기 위해, 계층(502)의 제1 커널과 컨볼빙된다. 입력 스트립(507(1))은 11-엘리먼트 벡터, 또는 1의 길이 및 11의 폭(503(y(i)))을 갖는 행렬의 형태이다. 알 수 있는 바와 같이, 수용 필드(506)로부터의 입력 스트립(507)의 생성은, 그 베이스가 수용 필드(506)이고 그 정점이 스트립(507)인 웨지(510)로서 시각적으로 표현될 수 있다.
[0069] DCN(501(2))을 프로세싱하는 제2 스테이지에서, 폭(502(y(i))) 또는 13의 스트립의, 입력 텐서의 부가적인 엘리먼트들이 홀딩 메모리로부터 리트리브되어, 이전에 리트리브된 엘리먼트들 중 일부와 함께, 신장된 수용 필드(506(2))를 형성한다. 신장된 수용 필드(506(2))는, 계층(503)에 대한 제1의 제2-계층 입력 텐서에 대한 입력 스트립(507(2))을 생성하기 위해, 계층(502)의 제1 커널과 컨볼빙된다. 계층(502)에 대한 입력 텐서의 엘리먼트 스트립(508(2))에 의해 사용된 동작-메모리 스팟들은 해제되어 재사용될 수 있는데, 왜냐하면 이들의 값은 임의의 미래 컨볼루션들에 대해 필요하지 않을 것이기 때문이다. 위에서 언급된 동작-메모리 스팟들뿐만 아니라 임의의 다른 것들은, 이전 스테이지에 대한 대응하는 계산들이 완료되는 즉시 그리고 입력 텐서의 부가적인 엘리먼트들이 홀딩 메모리로부터 리트리브되기 전에, 해제될 수 있다는 것에 유의해야 한다.
[0070] DCN(501(3))을 프로세싱하는 제3 스테이지에서, 다른 502(y(i)), 또는 13의, 입력 텐서의 부가적인 엘리먼트들이 홀딩 메모리로부터 리트리브되어, 이전에 리트리브된 엘리먼트들 중 일부와 함께, 수용 필드(506(3))를 형성하며, 수용 필드(506(3))는 제1의 제2-계층 입력 텐서에 대한 입력 스트립(507(3))을 생성하기 위해 계층(502)의 제1 커널과 컨볼빙된다. 계층(502)에 대한 입력 텐서의 엘리먼트(508(3))에 의해 사용된 동작-메모리 스팟은 해제되어 재사용될 수 있다.
[0071] 컨볼루션 계층(503)은 3×3 커널들을 사용하며, 따라서, 길이(503(x(k)))가 3이고 폭(503(y(i)))이 11(즉, 3×11)인 신장된 수용 필드(512)를 사용한다. DCN(501(3))을 프로세싱하는 제3 스테이지에 의해, 신장된 수용 필드(512(3))에 대한 모든 엘리먼트들이 생성되었고, 결과적으로, 수용 필드(512(3))는, 계층(504)에 대한 제3-계층 입력 텐서에 대한 입력 스트립(509(3))을 생성하기 위해, 계층(503)에 대한 제1 커널과 컨볼빙될 수 있다. 입력 스트립(509(3))은 11-엘리먼트 벡터, 또는 1의 길이 및 11의 폭(504(y(i)))을 갖는 행렬의 형태이다. 계층(503)의 컨볼루션은, (패딩(padding)이 사용되지 않은 경우 초래될 더 작은 출력이 아니라) 계층(503)의 입력과 동일한 치수들을 갖는 계층(504)에 대한 출력을 생성하기 위해 패딩(미도시)의 사용을 수반할 수 있다는 것에 유의한다.
[0072] 후속 스테이지(미도시)에서, 계층(503)의 더 이상 필요없는 엘리먼트 스트립들에 의해 사용된 메모리 스팟들은, 계층(502)을 참조하여 위에서 설명된 것과 동일한 방식으로 해제되어 재사용될 것이다. 추가의 후속 스테이지들에서, 이는, 계층(504)이 전체 신장된 수용 필드(미도시)를 파퓰레이팅(populate)하고 계층(505)에 대한 입력 텐서에 대한 값들을 제공하기에 충분한 입력 엘리먼트들을 갖게 되면, 계층(504)에 또한 적용될 것이다. 계층(505)에 대한 입력 텐서에 대한 값들은, 예컨대, 이를 저장하기에 불충분한 동작 메모리가 있는 경우, 홀딩 메모리에 기록될 수 있다는 것에 유의한다. 컨볼루션 계층들(502, 503, 및 504)은, 이들 3개의 계층들의 컨볼루션들이 완료될 때까지, 이들의 개개의 입력 텐서들을 탠덤(tandem)으로 계속해서 컨볼빙할 것이다. 그런 다음, 계층(505)에 대한 입력 텐서가 추가 프로세싱을 위해 홀딩 메모리로부터 동작 메모리 내로 입력될 수 있다.
[0073] 제한된 동작 메모리를 갖는 일부 구현들에서, 다수의 대응하는 신장된 수용 필드들(이들 각각은 대응하는 입력 텐서의 폭의 부분(fraction)으로 신장됨)이 단일의 신장된 수용 필드 대신에 사용될 수 있다는 것에 유의한다. 이는, 단편적으로(fractionally) 신장된 수용 필드들을 적절하게 함께 스티칭(stitch)하기 위해 일부 부가적인 프로세싱을 요구할 것이지만, 대부분의 프로세싱은 도 5의 DCN(501)을 참조하여 위에서 설명된 바와 같을 것이다. 본 개시내용의 구현이 슬라이딩(sliding) 신장된 수용 필드를 1차원에서만 이동시키는 정도까지, 중첩하는 원뿔(overlapping cone)들의 재계산(re-computation)들이 결과적으로 회피될 수 있다는 것에 유의한다.
[0074] 위에서 언급된 바와 같이, 위에서 설명된 계층들 중 임의의 계층은 (예컨대, 다수의 채널들에 대해) 다수의 커널들을 가질 수 있으며, 이는 후속 계층에 대한 다수의 대응하는 입력 텐서들(예컨대, 특징 맵들)을 산출할 것이다. 위의 설명은 설명을 간략화하기 위해 계층당 제1 커널만을 설명한다. 계층에 다수의 커널들을 갖는 DCN은, 각각의 커널에 대해, 실질적으로 위에서 설명된 바와 같이 동작할 것이다.
[0075] 도 6은 본 개시내용의 실시예에 따른 프로세스(600)의 흐름도이다. 프로세스(600)는, 홀딩 메모리로부터 동작 메모리 내로 제1의 제1-계층 커널 및 제1-계층 입력의 부분을 리트리브하는 것으로 시작된다(단계 601). 프로세스는, 제1의 제2-계층 입력에 대한 값 스트립(value strip)을 생성하기 위해, 제1의 제1-계층 커널 및 리트리브된 부분을 사용하여 제1-계층 입력의 컨볼루션 프로세싱을 시작하는 것으로 계속된다(단계 602). 제1-계층 입력의 컨볼루션을 완료하기 전에, 프로세스는 제1의 제2-계층 커널을 리트리브하고, 제1의 제3-계층 입력에 대한 값들을 생성하기 위해 제1의 제2-계층 커널을 사용하여 제1의 제2-계층 입력의 컨볼루션 프로세싱을 시작한다(단계 603). 프로세스는, 제1-계층 입력의 부분들을 리트리브하고, 제1-계층 입력 및 제1의 제2-계층 입력 둘 모두의 컨볼루션들을 탠덤(tandem)으로 수행하고, 더 이상 필요하지 않은 값들을 포함하는 동작 메모리 스팟들을 해제하고 재사용하는 것을 계속한다(단계 604). 프로세스는, 완료된 제1의 제3-계층 입력을 생성하기 위해, 제1-계층 입력의 컨볼루션 및 제1의 제2-계층 입력의 컨볼루션의 완료까지 계속된다(단계 605).
[0076] 본원에서 설명된 양상들과 관련하여 설명되는 다양한 예시적인 회로들은, 이를테면 프로세서, DSP(digital signal processor), ASIC(application-specific integrated circuit), FPGA(field-programmable gate array), 또는 다른 프로그램가능 로직 디바이스와 같은 IC(integrated circuit)에서 또는 이러한 IC로 구현될 수 있다. 프로세서는 마이크로프로세서일 수 있지만, 대안적으로 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기 또는 상태 머신일 수 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예컨대 DSP 및 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수 있다.
[0077] 본원에서의 예시적인 양상들 중 임의의 양상에서 설명된 동작 단계들은 예들을 제공하기 위해 설명된 것을 또한 유의한다. 설명된 동작들은, 예시된 순서들과는 다른 다수의 상이한 순서들로 수행될 수 있다. 게다가, 단일 동작 단계에서 설명된 동작들은, 실제로 다수의 상이한 단계들에서 수행될 수 있다. 추가적으로, 예시적인 양상들에서 논의된 하나 이상의 동작 단계들은 결합될 수 있다. 흐름도들에서 예시된 동작 단계들은, 당업자에게 쉽게 자명할 바와 같이 다수의 상이한 변형들을 겪을 수 있음을 이해해야 한다. 정보 및 신호들은 다양한 다른 기술들 및 기법들 중 임의의 것을 사용하여 표현될 수 있음을 당업자는 또한 이해할 것이다. 예컨대, 상기 설명 전반에 걸쳐 참조될 수 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들 및 칩들은 전압들, 전류들, 전자기파들, 자기 필드들 또는 자기 입자들, 광 필드들 또는 광 입자들, 또는 이들의 임의의 결합으로 표현될 수 있다.
[0078] 본원에서 사용되는 바와 같이, 아이템들의 리스트 "중 적어도 하나"로 지칭되는 구문은 단일 멤버들을 포함하여 그 아이템들의 임의의 조합을 지칭한다. 예컨대, "a, b 또는 c 중 적어도 하나"는 a, b, c, a-b, a-c, b-c, 및 a-b-c 뿐만 아니라 다수의 동일한 엘리먼트의 임의의 결합(예컨대, a-a, a-a-a, a-a-b, a-a-c, a-b-b, a-c-c, b-b, b-b-b, b-b-c, c-c, 및 c-c-c 또는 a, b, 및 c의 임의의 다른 순서화)을 커버하는 것으로 의도된다.
[0079] 본 개시내용은 당업자가 본 개시내용의 양상들을 제조 또는 사용할 수 있게 하도록 제공된다. 본 개시내용에 대한 다양한 변형들이 당업자에게 쉽게 명백할 것이며, 본원에서 정의된 일반 원리들은 본 개시내용의 사상 또는 범위를 벗어나지 않으면서 다른 변형들에 적용될 수 있다. 그러므로 본 개시내용은 본원에서 설명된 예시들 및 설계들로 한정되는 것으로 의도되는 것이 아니라, 본원에서 개시된 원리들 및 신규한 특징들에 부합하는 가장 넓은 범위에 따르는 것이다.

Claims (22)

  1. 심층 컨볼루션망(deep convolutional network)을 사용하기 위해 컴퓨터에서 구현되는 방법으로서,
    상기 심층 컨볼루션망은 제1 컨볼루션 계층(convolutional layer), 제2 컨볼루션 계층 및 제3 컨볼루션 계층을 포함하고,
    상기 방법은,
    제2-계층 입력 텐서(input tensor)의 제1 스트립(strip)에 대한 값들을 생성하기 위해, 제1-계층 입력 텐서의 제1의 제1-계층 신장된 수용 필드(stretched receptive field)와 제1-계층 커널(kernel)을 컨볼빙(convolve)하는 단계;
    이후, 제3-계층 입력 텐서의 제1 스트립에 대한 값들을 생성하기 위해, 상기 제2-계층 입력 텐서의 제1의 제2-계층 신장된 수용 필드와 제2-계층 커널을 컨볼빙하는 단계; 및
    이후, 상기 제2-계층 입력 텐서의 제2 스트립에 대한 값들을 생성하기 위해, 상기 제1-계층 입력 텐서의 제2의 제1-계층 신장된 수용 필드와 상기 제1-계층 커널을 컨볼빙하는 단계를 포함하며,
    상기 제1-계층 커널은 제1-계층-커널 길이 및 제1-계층-커널 폭을 갖고;
    상기 제1-계층 입력 텐서는 제1-계층-입력 길이 및 제1-계층-입력 폭을 갖고;
    상기 제2-계층 입력 텐서는 제2-계층-입력 길이 및 제2-계층-입력 폭을 갖고;
    상기 제2-계층 커널은 제2-계층-커널 길이 및 제2-계층-커널 폭을 갖고;
    제1-계층 수용 필드들은, 상기 제1-계층-커널 길이와 같은 길이, 및 상기 제1-계층-커널 폭보다 더 큰 제1-계층-신장된-수용-필드 폭을 가지며; 그리고
    제2-계층 수용 필드들은, 상기 제2-계층-커널 길이와 같은 길이, 및 상기 제2-계층-커널 폭보다 더 큰 제2-계층-신장된-수용-필드 폭을 갖는,
    심층 컨볼루션망을 사용하기 위해 컴퓨터에서 구현되는 방법.
  2. 제1 항에 있어서,
    상기 제2-계층 입력 텐서의 대응하는 부가적인 스트립들에 대한 값들을 생성하기 위해, 하나 이상의 부가적인 제1-계층 커널들과 상기 제1-계층 신장된 수용 필드들을 컨볼빙하는 단계; 및
    상기 제3-계층 입력 텐서의 대응하는 부가적인 스트립들에 대한 값들을 생성하기 위해, 하나 이상의 부가적인 제2-계층 커널들과 상기 제2-계층 신장된 수용 필드들을 컨볼빙하는 단계를 더 포함하는,
    심층 컨볼루션망을 사용하기 위해 컴퓨터에서 구현되는 방법.
  3. 제1 항에 있어서,
    상기 제1-계층-신장된-수용-필드 폭은 상기 제1-계층-입력 폭과 동일하며; 그리고
    상기 제2-계층-신장된-수용-필드 폭은 상기 제2-계층-입력 폭과 동일한,
    심층 컨볼루션망을 사용하기 위해 컴퓨터에서 구현되는 방법.
  4. 제3 항에 있어서,
    상기 제2-계층 입력 텐서의 스트립들은 1의 길이, 및 상기 제2-계층-입력 폭과 동일한 폭을 갖고;
    상기 제3-계층 입력 텐서는 제3-계층-입력 길이 및 제3-계층-입력 폭을 가지며; 그리고
    상기 제3-계층 입력 텐서의 스트립들은 1의 길이, 및 상기 제3-계층-입력 폭과 동일한 폭을 갖는,
    심층 컨볼루션망을 사용하기 위해 컴퓨터에서 구현되는 방법.
  5. 제1 항에 있어서,
    상기 심층 컨볼루션망은, 상기 제1 컨볼루션 계층과 상기 제2 컨볼루션 계층 사이의 적어도 하나의 비-컨볼루션 계층을 더 포함하며; 그리고
    상기 제2-계층 입력 텐서를 생성하는 것은, 상기 제1-계층 입력 텐서의 컨볼빙에 부가하여, 상기 적어도 하나의 비-컨볼루션 계층의 동작들을 수행하는 것을 포함하는,
    심층 컨볼루션망을 사용하기 위해 컴퓨터에서 구현되는 방법.
  6. 제5 항에 있어서,
    상기 적어도 하나의 비-컨볼루션 계층은, 풀링(pooling) 계층, 비-선형성(non-linearity) 계층, 및 정규화(normalization) 계층 중 하나 이상을 포함하는,
    심층 컨볼루션망을 사용하기 위해 컴퓨터에서 구현되는 방법.
  7. 제1 항에 있어서,
    각각의 커널은 대응하는 가중치(weight)들의 세트를 포함하고;
    상기 방법은, 홀딩 메모리(holding memory)로부터 동작 메모리(operational memory) 내로 상기 제1-계층 커널의 가중치들 및 상기 제2-계층 커널의 가중치들을 입력(read in)하는 단계를 더 포함하며; 그리고
    상기 제1의 제1-계층 신장된 수용 필드와 상기 제1-계층 커널을 컨볼빙하는 단계는, 상기 동작 메모리 내로 상기 제1-계층 입력의 모든 값들을 입력하지 않으면서, 상기 홀딩 메모리로부터 상기 동작 메모리 내로 상기 제1의 제1-계층 신장된 수용 필드에 대한 값들을 입력하는 단계를 포함하는,
    심층 컨볼루션망을 사용하기 위해 컴퓨터에서 구현되는 방법.
  8. 제7 항에 있어서,
    상기 제1의 제1-계층 신장된 수용 필드와 상기 제1-계층 커널을 컨볼빙하는 단계 이후, 상기 제1-계층 입력 텐서의 제2의 제1-계층 신장된 수용 필드와 상기 제1-계층 커널을 후속하여 컨볼빙하기 전에, 상기 동작 메모리에서 상기 제1의 제1-계층 신장된 수용 필드에 대한 값들 중 적어도 일부를 해제(release) 및 재사용하는 단계가 이어지는,
    심층 컨볼루션망을 사용하기 위해 컴퓨터에서 구현되는 방법.
  9. 제1 항에 있어서,
    상기 제3-계층은 컨볼루션 계층이고;
    상기 심층 컨볼루션망은, 계층들의 세트 내의 상기 제1 컨볼루션 계층, 상기 제2 컨볼루션 계층 및 상기 제3 컨볼루션 계층과 동시에 프로세싱하기 위해 상기 제3 컨볼루션 계층 뒤에 연속적으로 구성된 0개 또는 그 초과의 부가적인 컨볼루션 계층들을 포함하며;
    상기 계층들의 세트는 컷-오프(cut-off) 계층을 포함하는,
    심층 컨볼루션망을 사용하기 위해 컴퓨터에서 구현되는 방법.
  10. 제9 항에 있어서,
    상기 컷-오프 계층은 그리디 알고리즘(greedy algorithm)을 사용하여 동적으로 결정되는,
    심층 컨볼루션망을 사용하기 위해 컴퓨터에서 구현되는 방법.
  11. 심층 컨볼루션망을 사용하기 위한 컴퓨팅 디바이스로서,
    상기 심층 컨볼루션망은:
    제2-계층 입력 텐서를 생성하기 위해, 제1-계층 커널을 사용하여 제1-계층 입력 텐서를 컨볼빙하도록 구성된 제1 컨볼루션 계층;
    제3-계층 입력 텐서를 생성하기 위해, 제2-계층 커널을 사용하여 상기 제2-계층 입력 텐서를 컨볼빙하도록 구성된 제2 컨볼루션 계층; 및
    상기 제3-계층 입력 텐서를 수신(receive)하도록 구성된 제3-계층을 포함하고,
    상기 제1-계층 커널은 제1-계층-커널 길이 및 제1-계층-커널 폭을 갖고;
    상기 제1-계층 입력 텐서는 제1-계층-입력 길이 및 제1-계층-입력 폭을 갖고;
    상기 제2-계층 입력 텐서는 제2-계층-입력 길이 및 제2-계층-입력 폭을 갖고;
    상기 제2-계층 커널은 제2-계층-커널 길이 및 제2-계층-커널 폭을 갖고;
    상기 컴퓨팅 디바이스는:
    상기 제2-계층 입력 텐서의 제1 스트립에 대한 값들을 생성하기 위해, 상기 제1-계층 입력 텐서의 제1의 제1-계층 신장된 수용 필드와 상기 제1-계층 커널을 컨볼빙하고;
    이후, 상기 제3-계층 입력 텐서의 제1 스트립에 대한 값들을 생성하기 위해, 상기 제2-계층 입력 텐서의 제1의 제2-계층 신장된 수용 필드와 상기 제2-계층 커널을 컨볼빙하고; 그리고
    이후, 상기 제2-계층 입력 텐서의 제2 스트립에 대한 값들을 생성하기 위해, 상기 제1-계층 입력 텐서의 제2의 제1-계층 신장된 수용 필드와 상기 제1-계층 커널을 컨볼빙하도록 구성되고,
    제1-계층 수용 필드들은, 상기 제1-계층-커널 길이와 같은 길이, 및 상기 제1-계층-커널 폭보다 더 큰 제1-계층-신장된-수용-필드 폭을 가지며; 그리고
    제2-계층 수용 필드들은, 상기 제2-계층-커널 길이와 같은 길이, 및 상기 제2-계층-커널 폭보다 더 큰 제2-계층-신장된-수용-필드 폭을 갖는,
    심층 컨볼루션망을 사용하기 위한 컴퓨팅 디바이스.
  12. 제11 항에 있어서,
    상기 제1 컨볼루션 계층은 상기 제2-계층 입력 텐서의 대응하는 부가적인 스트립들에 대한 값들을 생성하기 위해 상기 제1-계층 커널과 동일한 방식으로 하나 이상의 부가적인 제1-계층 커널들을 사용하도록 구성되며; 그리고
    상기 제2 컨볼루션 계층은 상기 제3-계층 입력 텐서의 대응하는 부가적인 스트립들에 대한 값들을 생성하기 위해 상기 제2-계층 커널과 동일한 방식으로 하나 이상의 부가적인 제2-계층 커널들을 사용하도록 구성되는,
    심층 컨볼루션망을 사용하기 위한 컴퓨팅 디바이스.
  13. 제11 항에 있어서,
    상기 제1-계층-신장된-수용-필드 폭은 상기 제1-계층-입력 폭과 동일하며; 그리고
    상기 제2-계층-신장된-수용-필드 폭은 상기 제2-계층-입력 폭과 동일한,
    심층 컨볼루션망을 사용하기 위한 컴퓨팅 디바이스.
  14. 제13 항에 있어서,
    상기 제2-계층 입력 텐서의 스트립들은 1의 길이, 및 상기 제2-계층-입력 폭과 동일한 폭을 갖고;
    상기 제3-계층 입력 텐서는 제3-계층-입력 길이 및 제3-계층-입력 폭을 가지며; 그리고
    상기 제3-계층 입력 텐서의 스트립들은 1의 길이, 및 상기 제3-계층-입력 폭과 동일한 폭을 갖는,
    심층 컨볼루션망을 사용하기 위한 컴퓨팅 디바이스.
  15. 제11 항에 있어서,
    상기 심층 컨볼루션망은, 상기 제1 컨볼루션 계층과 상기 제2 컨볼루션 계층 사이의 적어도 하나의 비-컨볼루션 계층을 더 포함하며; 그리고
    상기 제2-계층 입력 텐서를 생성하는 것은, 상기 제1-계층 입력 텐서의 컨볼빙에 부가하여, 상기 적어도 하나의 비-컨볼루션 계층의 동작들을 수행하는 것을 포함하는,
    심층 컨볼루션망을 사용하기 위한 컴퓨팅 디바이스.
  16. 제15 항에 있어서,
    상기 적어도 하나의 비-컨볼루션 계층은, 풀링 계층, 비-선형성 계층, 및 정규화 계층 중 하나 이상을 포함하는,
    심층 컨볼루션망을 사용하기 위한 컴퓨팅 디바이스.
  17. 제11 항에 있어서,
    각각의 커널은 대응하는 가중치들의 세트를 포함하고;
    상기 디바이스는, 홀딩 메모리로부터 동작 메모리 내로 상기 제1-계층 커널의 가중치들 및 상기 제2-계층 커널의 가중치들을 입력하도록 추가로 구성되며; 그리고
    상기 제1의 제1-계층 신장된 수용 필드와 상기 제1-계층 커널을 컨볼빙할 때, 상기 디바이스는, 상기 동작 메모리 내로 상기 제1-계층 입력의 모든 값들을 입력하지 않으면서, 상기 홀딩 메모리로부터 상기 동작 메모리 내로 상기 제1의 제1-계층 신장된 수용 필드에 대한 값들을 입력하도록 구성되는,
    심층 컨볼루션망을 사용하기 위한 컴퓨팅 디바이스.
  18. 제17 항에 있어서,
    상기 디바이스는, 상기 제1의 제1-계층 신장된 수용 필드와 상기 제1-계층 커널을 컨볼빙한 이후, 상기 제1-계층 입력 텐서의 제2의 제1-계층 신장된 수용 필드와 상기 제1-계층 커널을 후속하여 컨볼빙하기 전에, 상기 동작 메모리에서 상기 제1의 제1-계층 신장된 수용 필드에 대한 값들 중 적어도 일부를 해제 및 재사용하도록 구성되는,
    심층 컨볼루션망을 사용하기 위한 컴퓨팅 디바이스.
  19. 제11 항에 있어서,
    상기 제3-계층은 컨볼루션 계층이고;
    상기 심층 컨볼루션망은, 계층들의 세트 내의 상기 제1 컨볼루션 계층, 상기 제2 컨볼루션 계층 및 상기 제3 컨볼루션 계층과 동시에 프로세싱하기 위해 상기 제3 컨볼루션 계층 뒤에 연속적으로 구성된 0개 또는 그 초과의 부가적인 컨볼루션 계층들을 포함하며;
    상기 계층들의 세트는 컷-오프 계층을 포함하는,
    심층 컨볼루션망을 사용하기 위한 컴퓨팅 디바이스.
  20. 제19 항에 있어서,
    상기 디바이스는 그리디 알고리즘을 사용하여 상기 컷-오프 계층을 동적으로 결정하도록 구성되는,
    심층 컨볼루션망을 사용하기 위한 컴퓨팅 디바이스.
  21. 심층 컨볼루션망을 사용하기 위한 컴퓨팅 디바이스로서,
    상기 심층 컨볼루션망은:
    제2-계층 입력 텐서를 생성하기 위해, 제1-계층 커널을 사용하여 제1-계층 입력 텐서를 컨볼빙하도록 구성된 제1 컨볼루션 계층;
    제3-계층 입력 텐서를 생성하기 위해, 제2-계층 커널을 사용하여 상기 제2-계층 입력 텐서를 컨볼빙하도록 구성된 제2 컨볼루션 계층; 및
    상기 제3-계층 입력 텐서를 수신하도록 구성된 제3-계층을 포함하고,
    상기 제1-계층 커널은 제1-계층-커널 길이 및 제1-계층-커널 폭을 갖고;
    상기 제1-계층 입력 텐서는 제1-계층-입력 길이 및 제1-계층-입력 폭을 갖고;
    상기 제2-계층 입력 텐서는 제2-계층-입력 길이 및 제2-계층-입력 폭을 갖고;
    상기 제2-계층 커널은 제2-계층-커널 길이 및 제2-계층-커널 폭을 갖고;
    상기 컴퓨팅 디바이스는:
    상기 제2-계층 입력 텐서의 제1 스트립에 대한 값들을 생성하기 위해, 상기 제1-계층 입력 텐서의 제1의 제1-계층 신장된 수용 필드와 상기 제1-계층 커널을 컨볼빙하기 위한 수단;
    이후, 상기 제3-계층 입력 텐서의 제1 스트립에 대한 값들을 생성하기 위해, 상기 제2-계층 입력 텐서의 제1의 제2-계층 신장된 수용 필드와 상기 제2-계층 커널을 컨볼빙하기 위한 수단; 및
    이후, 상기 제2-계층 입력 텐서의 제2 스트립에 대한 값들을 생성하기 위해, 상기 제1-계층 입력 텐서의 제2의 제1-계층 신장된 수용 필드와 상기 제1-계층 커널을 컨볼빙하기 위한 수단을 포함하고;
    제1-계층 수용 필드들은, 상기 제1-계층-커널 길이와 같은 길이, 및 상기 제1-계층-커널 폭보다 더 큰 제1-계층-신장된-수용-필드 폭을 가지며; 그리고
    제2-계층 수용 필드들은, 상기 제2-계층-커널 길이와 같은 길이, 및 상기 제2-계층-커널 폭보다 더 큰 제2-계층-신장된-수용-필드 폭을 갖는,
    심층 컨볼루션망을 사용하기 위한 컴퓨팅 디바이스.
  22. 명령들을 포함하는 비-일시적인 컴퓨터-판독가능 저장 매체로서,
    상기 명령들은, 적어도 하나의 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 심층 컨볼루션망을 사용하기 위한 방법을 수행하게 하고,
    상기 심층 컨볼루션망은 제1 컨볼루션 계층, 제2 컨볼루션 계층 및 제3 컨볼루션 계층을 포함하고,
    상기 방법은:
    제2-계층 입력 텐서의 제1 스트립에 대한 값들을 생성하기 위해, 제1-계층 입력 텐서의 제1의 제1-계층 신장된 수용 필드와 제1-계층 커널을 컨볼빙하는 단계;
    이후, 제3-계층 입력 텐서의 제1 스트립에 대한 값들을 생성하기 위해, 상기 제2-계층 입력 텐서의 제1의 제2-계층 신장된 수용 필드와 제2-계층 커널을 컨볼빙하는 단계; 및
    이후, 상기 제2-계층 입력 텐서의 제2 스트립에 대한 값들을 생성하기 위해, 상기 제1-계층 입력 텐서의 제2의 제1-계층 신장된 수용 필드와 상기 제1-계층 커널을 컨볼빙하는 단계를 포함하며,
    상기 제1-계층 커널은 제1-계층-커널 길이 및 제1-계층-커널 폭을 갖고;
    상기 제1-계층 입력 텐서는 제1-계층-입력 길이 및 제1-계층-입력 폭을 갖고;
    상기 제2-계층 입력 텐서는 제2-계층-입력 길이 및 제2-계층-입력 폭을 갖고;
    상기 제2-계층 커널은 제2-계층-커널 길이 및 제2-계층-커널 폭을 갖고;
    제1-계층 수용 필드들은, 상기 제1-계층-커널 길이와 같은 길이, 및 상기 제1-계층-커널 폭보다 더 큰 제1-계층-신장된-수용-필드 폭을 가지며; 그리고
    제2-계층 수용 필드들은, 상기 제2-계층-커널 길이와 같은 길이, 및 상기 제2-계층-커널 폭보다 더 큰 제2-계층-신장된-수용-필드 폭을 갖는,
    비-일시적인 컴퓨터-판독가능 저장 매체.
KR1020217040432A 2019-06-17 2020-06-17 심층 신경망들에서의 깊이-우선 컨볼루션 KR20220020816A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/443,695 US11487998B2 (en) 2019-06-17 2019-06-17 Depth-first convolution in deep neural networks
US16/443,695 2019-06-17
PCT/US2020/038081 WO2020257245A1 (en) 2019-06-17 2020-06-17 Depth-first convolution in deep neural networks

Publications (1)

Publication Number Publication Date
KR20220020816A true KR20220020816A (ko) 2022-02-21

Family

ID=71465446

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217040432A KR20220020816A (ko) 2019-06-17 2020-06-17 심층 신경망들에서의 깊이-우선 컨볼루션

Country Status (7)

Country Link
US (1) US11487998B2 (ko)
EP (1) EP3983952A1 (ko)
KR (1) KR20220020816A (ko)
CN (1) CN113841162B (ko)
AU (1) AU2020297435A1 (ko)
BR (1) BR112021024591A2 (ko)
WO (1) WO2020257245A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110704197B (zh) * 2019-10-17 2022-12-09 北京小米移动软件有限公司 处理内存访问开销的方法、装置及介质
KR20210079785A (ko) * 2019-12-20 2021-06-30 삼성전자주식회사 뉴럴 네트워크의 컨볼루션 연산 처리 방법 및 장치
CN112801266B (zh) * 2020-12-24 2023-10-31 武汉旷视金智科技有限公司 神经网络构建方法、装置、设备及介质
KR102361249B1 (ko) * 2021-08-02 2022-02-14 오픈엣지테크놀로지 주식회사 브로드캐스팅 멀티플라이 최적화 방법 및 이를 이용한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10706330B2 (en) * 2015-10-01 2020-07-07 Intellivision Technologies Corp Methods and systems for accurately recognizing vehicle license plates
US10706348B2 (en) * 2016-07-13 2020-07-07 Google Llc Superpixel methods for convolutional neural networks
US10733505B2 (en) * 2016-11-10 2020-08-04 Google Llc Performing kernel striding in hardware
US10929749B2 (en) 2017-04-24 2021-02-23 Intel Corporation Neural network optimization mechanism
US11640526B2 (en) 2017-05-23 2023-05-02 Intel Corporation Methods and apparatus for enhancing a neural network using binary tensor and scale factor pairs
US10268646B2 (en) * 2017-06-06 2019-04-23 Facebook, Inc. Tensor-based deep relevance model for search on online social networks
US20190044942A1 (en) * 2017-08-01 2019-02-07 Twosense, Inc. Deep Learning for Behavior-Based, Invisible Multi-Factor Authentication
RU2691214C1 (ru) * 2017-12-13 2019-06-11 Общество с ограниченной ответственностью "Аби Продакшн" Распознавание текста с использованием искусственного интеллекта
US11741342B2 (en) * 2018-05-18 2023-08-29 Baidu Usa Llc Resource-efficient neural architects
US11861484B2 (en) 2018-09-28 2024-01-02 Qualcomm Incorporated Neural processing unit (NPU) direct memory access (NDMA) hardware pre-processing and post-processing
CN110378468B (zh) 2019-07-08 2020-11-20 浙江大学 一种基于结构化剪枝和低比特量化的神经网络加速器

Also Published As

Publication number Publication date
WO2020257245A1 (en) 2020-12-24
EP3983952A1 (en) 2022-04-20
US11487998B2 (en) 2022-11-01
CN113841162A (zh) 2021-12-24
AU2020297435A1 (en) 2021-12-16
US20200394500A1 (en) 2020-12-17
CN113841162B (zh) 2024-04-26
TW202105258A (zh) 2021-02-01
BR112021024591A2 (pt) 2022-01-25

Similar Documents

Publication Publication Date Title
US20210089922A1 (en) Joint pruning and quantization scheme for deep neural networks
KR20220020816A (ko) 심층 신경망들에서의 깊이-우선 컨볼루션
KR102582194B1 (ko) 선택적 역전파
US20190087713A1 (en) Compression of sparse deep convolutional network weights
US20160328646A1 (en) Fixed point neural network based on floating point neural network quantization
EP3857462A1 (en) Exploiting activation sparsity in deep neural networks
US11776608B2 (en) Static random-access memory (SRAM) compute in-memory integration
KR20180048930A (ko) 분류를 위한 강제된 희소성
EP3785176A1 (en) Learning a truncation rank of singular value decomposed matrices representing weight tensors in neural networks
US11500960B2 (en) Memory cell for dot product operation in compute-in-memory chip
US11551076B2 (en) Event-driven temporal convolution for asynchronous pulse-modulated sampled signals
KR20220058897A (ko) 컴퓨트-인-메모리 어레이의 컬럼 임계치들을 조정함으로써 xnor 등가 연산들을 수행
US20190228311A1 (en) Determining layer ranks for compression of deep networks
US10777259B1 (en) Static random-access memory (SRAM) for in-memory computing
US11410040B2 (en) Efficient dropout inference for bayesian deep learning
US11340867B2 (en) Compute-in-memory (CIM) binary multiplier
US11494629B2 (en) Charge-sharing compute-in-memory system
US11556798B2 (en) Optimizing machine learning model performance
US20230108248A1 (en) Model compression via quantized sparse principal component analysis
US20200293864A1 (en) Data-aware layer decomposition for neural network compression
WO2023059723A1 (en) Model compression via quantized sparse principal component analysis
TWI837388B (zh) 用於深度神經網路中的深度優先迴旋的方法、設備及媒體
TW202117609A (zh) 具有快速逐點迴旋的高效推斷
WO2023004670A1 (en) Channel-guided nested loop transformation and scalar replacement
WO2024049660A1 (en) Reconfigurable architecture for fused depth-wise separable convolution (dsc)