KR20230110355A - 계층별 분석을 통한 신경망 프루닝 방법 및 시스템 - Google Patents

계층별 분석을 통한 신경망 프루닝 방법 및 시스템 Download PDF

Info

Publication number
KR20230110355A
KR20230110355A KR1020237021798A KR20237021798A KR20230110355A KR 20230110355 A KR20230110355 A KR 20230110355A KR 1020237021798 A KR1020237021798 A KR 1020237021798A KR 20237021798 A KR20237021798 A KR 20237021798A KR 20230110355 A KR20230110355 A KR 20230110355A
Authority
KR
South Korea
Prior art keywords
neural network
layer
nodes
weights
connections
Prior art date
Application number
KR1020237021798A
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 KR20230110355A publication Critical patent/KR20230110355A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/213Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods
    • 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
    • G06N3/0442Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
    • 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/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/04Architecture, e.g. interconnection topology
    • G06N3/0499Feedforward networks
    • 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
    • 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/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
    • 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/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural 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/044Recurrent networks, e.g. Hopfield networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Biomedical Technology (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Neurology (AREA)
  • Medical Informatics (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Databases & Information Systems (AREA)
  • Image Analysis (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Investigating Or Analysing Biological Materials (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)

Abstract

본원에 개시된 실시예들은 신경망들이 프루닝될 수 있게 한다. 기준 신경망에 의해 생성된 입력들 및 출력들은 기준 신경망을 프루닝하는 데 사용된다. 프루닝된 신경망은 기준 신경망에 있는 가중치들의 서브세트를 가질 수 있다.

Description

계층별 분석을 통한 신경망 프루닝 방법 및 시스템
[0001] 본 출원은 2020년 11월 30일자로 출원된 미국 정규 특허 출원 제17/107,046호에 대한 이익을 주장하며, 그 개시는 전체가 참조로 본원에 통합된다.
[0002] 본 개시의 실시예들은 일반적으로 인공 지능에 관한 것이다. 더욱 구체적으로, 본 개시의 실시예들은 심층 신경망들과 같은 신경망들을 프루닝(pruning)하는 방법들 및 시스템들에 관한 것이다.
[0003] 심층 신경망(DNN: deep neural network)들, 컨벌루션 신경망(CNN: convolutional neural network)들 등과 같은 신경망들은 이미지, 비디오, 오디오 및 텍스트와 같은 하위-레벨 데이터로부터 상위-레벨 정보를 추출하기 위해 인공 지능(AI: artificial intelligence)에서 널리 사용되는 접근법이 되었다. 그러나, 신경망의 값비싼 컴퓨테이션 비용은 에너지 소비, 프로세싱 용량/자원들, 저장 공간 및/또는 대기 시간 허용 오차에 대한 예산이 더욱 빠듯한 애플리케이션들에서 사용을 방해할 수 있다. 예를 들어, 모바일 폰들 및 감시 카메라들과 같은 에지 디바이스들은 큰 저장/프로세싱 자원 등을 갖지 못할 수 있다.
[0004] 신경망의 컴퓨테이션 비용은 다양한 소스들로부터 발생할 수 있다. 첫째, 신경망 파라미터들은 대략 수백만 또는 수천만에 달할 수 있으므로 엄청난 저장 비용을 초래하고 메모리 공간에서 신경망 파라미터들의 저장을 방해할 수 있다. 둘째, 신경망의 뉴런들의 개수는 많은 메모리 공간을 소비할 수 있으며 런타임 동안 수십억 개의 산술 연산들을 필요로 할 수 있다. 셋째, 얼굴 비교 엔진들과 같이 신경망들에 의해 생성된 벡터 표현들에 기초하는 검색 엔진들은 부분적으로 신경망들의 고차원 밀집 벡터 표현들(임베딩(embedding)들)로 인해 컴퓨테이션 비용이 많이 들 수 있다.
[0005] 본 개시의 실시예들은 예의 방식으로 예시되며 유사한 참조 번호들이 유사한 요소들을 나타내는 첨부 도면들의 도면들에 제한되지 않는다.
[0006] 도 1은 본 개시의 하나 이상의 실시예들에 따른 신경망의 동작을 예시하는 도면이다.
[0007] 도 2는 본 개시의 하나 이상의 실시예들에 따른 예시적인 신경망을 예시하는 도면이다.
[0008] 도 3은 본 개시의 하나 이상의 실시예들에 따른 예시적인 프루닝 엔진을 예시하는 도면이다.
[0009] 도 4는 본 개시의 하나 이상의 실시예들에 따라 신경망을 프루닝하기 위한 예시적인 프로세스를 예시하는 흐름도이다.
[0010] 도 5는 본 개시의 하나 이상의 실시예들에 따른 예시적인 컴퓨팅 디바이스를 예시하는 블록도이다.
[0011] 본 개시의 다양한 실시예들 및 양태들은 아래에서 논의되는 상세 사항들을 참조하여 설명될 것이며, 첨부 도면들은 다양한 실시예들을 예시할 것이다. 이하의 설명 및 도면들은 본 개시를 예시하며 본 개시를 제한하는 것으로 해석되어서는 안 된다. 본 개시의 다양한 실시예들에 대한 완전한 이해를 제공하기 위해 다수의 특정 상세 사항들이 설명된다. 그러나, 특정한 경우들에 있어서, 본 개시의 실시예들의 간결한 설명을 제공하기 위해 공지된 또는 통상적인 상세 사항들은 설명되지 않는다.
[0012] 본 명세서에서 "일 실시예" 또는 "실시예"에 대한 언급은 실시예와 관련하여 설명된 특정의 특징, 구조 또는 특성이 본 개시의 적어도 하나의 실시예에 포함될 수 있음을 의미한다. 본 명세서의 여러 곳에서 "일 실시예에서"라는 문구가 등장은 반드시 모두 동일한 실시예를 지칭하는 것은 아니다.
[0013] 신경망은 수천 또는 수백만 개의 노드들 및/또는 가중치들을 포함할 수 있다. 이러한 가중치들 및/또는 노드들을 저장하는 것은 많은 양의 저장 공간을 사용할 수 있다. 또한, 신경망(200)을 실행하기 위해(예를 들어, 신경망(200)을 사용하여 입력 데이터를 프로세싱/분석하기 위해) 더 많은 양의 프로세싱/컴퓨테이션 자원들이 사용될 수 있다. 예를 들어, 가중치들의 각각은 신경망에 의해 수행되는 컴퓨테이션들 및/또는 연산들의 수를 증가시키는 입력에 적용될 수 있다. 따라서, 신경망에서 가중치들/연결들 및/또는 노드들의 수를 줄이는 것이 유용할 수 있다. 이렇게 하면 신경망을 저장하는 데 사용되는 저장 공간의 양을 줄이고 사용되는 프로세싱/컴퓨테이션 자원들을 줄일 것이다.
[0014] 도 1은 본 개시의 하나 이상의 실시예들에 따른 예시적인 신경망(100)을 예시하는 도면이다. 신경망은 심층 신경망일 수 있다. 심층 신경망은 복수의 중간 계층들(예를 들어, 노드들 및/또는 노드들 간의 가중치들/연결들의 복수의 계층들)을 포함하는 신경망일 수 있다. 일 실시예에서, 신경망은 심층 신경망의 유형/클래스일 수 있는 컨벌루션 신경망(CNN)일 수 있다. 신경망(예를 들어, CNN)은 추론, 결정 등과 같은 입력들을 프로세싱하고 생성 및 출력하기 위해 컨벌루션 및 풀링(pooling) 연산들을 사용하여 할 수 있다. CNN은 종종 이미지 분석 및/또는 프로세싱을 수행하는 데 사용될 수 있다.
[0015] 도 1에 예시된 바와 같이, 입력(110)은 신경망(100)에 제공(예를 들어, 전달, 공급 등)될 수 있다. 예를 들어, 입력(110)은 신경망(100)에 의해 프로세싱 및/또는 분석될 하나 이상의 이미지들(예를 들어, 디지털 이미지들, 사진들 등)을 포함할 수 있다. 입력(110)은 제1 커널(115)에 의해 프로세싱될 수 있다. 제1 커널(115)은 또한 컨벌루션 필터로 지칭될 수 있다. 컨벌루션 필터는 하나 이상의 커널들(예를 들어, 컨벌루션 커널들)을 포함할 수 있다. 예를 들어, 입력(예를 들어, 이미지)은 복수의 채널들(예를 들어, 이미지의 각각의 픽셀에 대한 적색, 청색, 녹색, 입력 채널과 같은 복수의 입력 채널들)을 가질 수 있다. 제1 커널(115)은 각각의 채널에 대해 필터를 포함할 수 있다. 제1 커널(115)은 입력(110)에 대해 컨벌루션 연산을 수행하는 데 사용될 수 있다. 컨벌루션 연산은 정보의 2 개의 세트를 출력으로 병합할 수 있는 연산을 지칭할 수 있다. 예를 들어, 제1 커널(115)은 출력을 생성하기 위해 입력의 일부들에 적용될 수 있는 가중치들(예를 들어, 값들)을 포함할 수 있다. 제1 커널(115)은 또한 신경망의 계층(예를 들어, 중간 계층)으로 칭할 수 있다.
[0016] 일 실시예에서, 제1 커널(115)에 의해 생성된 출력은 특징 맵(120)일 수 있다. 특징 맵(120)은 제1 커널(115)(예를 들어, 가중치들의 세트)을 입력의 값들에 적용한 결과일 수 있다. 예를 들어, 특징 맵(120)은 요소별 행렬 곱셈의 결과와 해당 결과의 합일 수 있다.
[0017] 일 실시예에서, 신경망(100)은 또한 특징 맵(120)에 대해 수행될 수 있는 풀링 연산들을 포함 및/또는 수행할 수 있다. 풀링 연산은 동일한 깊이를 유지하면서 특징 맵(120)의 높이 및 가중치를 줄이기 위해 특징 맵을 다운-샘플링하는 것을 지칭할 수 있다. 예를 들어, 최대-풀링(예를 들어, 풀링 윈도우에서 최대값을 사용할 수 있는 풀링의 유형)이 특징 맵(120)에 적용될 수 있다. 특징 맵(120)은 제1 커널(115)의 출력(예를 들어, 제1 계층의 출력)일 수 있고, 또한 제2 커널(125)에 제공되는 입력(예를 들어, 후속하는 제2 계층의 입력)일 수 있다.
[0018] 제2 커널(125)은 특징 맵(120)(예를 들어, 입력 특징 맵)을 수신하고 특징 맵(130)을 생성하기 위해 특징 맵(120)에 컨벌루션 연산을 적용할 수 있다. 위에 논의된 바와 같이, 하나 이상의 풀링 연산들이 특징 맵(130)에 대해 수행될 수 있다. 특징 맵(130)은 제2 커널(125)의 출력(예를 들어, 하나의 계층의 출력)일 수 있고 또한 제3 커널(135)에 제공되는 입력(예를 들어, 다른 후속 계층의 입력)일 수 있다. 제3 커널(135)은 특징 맵(130)(예를 들어, 입력 특징 맵)을 수신할 수 있고, 특징 맵(140)을 생성하기 위해 특징 맵(130)에 컨벌루션 연산을 적용할 수 있다. 위에서 논의된 바와 같이, 하나 이상의 풀링 연산들이 특징 맵(140)에 대해 수행될 수 있다. 특징 맵(140)은 제3 커널(135)의 출력(예를 들어, 하나의 계층의 출력)일 수 있고, 또한 제4 커널(145)에 제공되는 입력(예를 들어, 다른 후속 계층의 입력)일 수 있다.
[0019] 제4 커널(145)은 특징 맵(140)(예를 들어, 입력 특징 맵)을 수신할 수 있고, 특징 맵(150)을 생성하기 위해 특징 맵(140)에 컨벌루션 연산을 적용할 수 있다. 위에서 논의된 바와 같이, 하나 이상의 풀링 연산들이 특징 맵(150)에 대해 수행될 수 있다. 특징 맵(150)은 제4 커널(145)의 출력(예를 들어, 하나의 계층의 출력)일 수 있고, 또한 완전 연결 계층(160)에 제공되는 입력일 수 있다.
[0020] 도 1에 예시된 바와 같이, 신경망(100)은 또한 완전 연결 계층들(160 및 170)을 포함한다. 일 실시예에서, 완전 연결 계층들(160 및 170)은 이전 계층들의 출력들(예를 들어, 특징 맵들(120, 130, 140 및/또는 150))을 사용할 수 있고, 신경망(100)의 최종 출력(예를 들어, 최종 추론, 결정 등)을 생성할 수 있다.
[0021] 도 2는 본 개시의 하나 이상의 실시예들에 따른 예시적인 신경망(200)을 예시하는 도면이다. 신경망(200)은 (예를 들어, 복합) 입력들과 출력들 사이의 관계들을 모델링하거나 데이터에서 패턴들을 찾는 데 사용될 수 있으며, 여기서 입력들과 출력들 사이의 의존성은 쉽게 확인될 수 없다. 신경망(200)은 또한 다양한 컴퓨테이션들을 통해 입력 데이터의 특징을 결정하는 데 사용될 수 있는 컴퓨팅 모델일 수 있다. 예를 들어, 신경망(200)은 수행될 컴퓨테이션들의 시퀀스를 정의하는 구조에 따라 입력 데이터(예를 들어, 오디오 데이터, 이미지 데이터, 비디오 데이터 등)의 특징(예를 들어, 수, 형상, 패턴 등)을 결정할 수 있다.
[0022] 신경망(200)은 컨벌루션 신경망(CNN)일 수 있다. CNN은 피드 포워드(feed forward) 신경망일 수 있다. 피드 포워드 신경망은 노드들 사이의 연결들이 사이클을 형성하지 않는 신경망의 유형일 수 있다. 예를 들어, 신호들, 메시지들, 데이터, 정보 등은 입력 계층(210)으로부터(예를 들어, 입력 노드들로부터) 중간 계층(220)을 통해 신경망(200)의 출력 계층(220)으로(예를 들어, 출력 노드들로) 좌측으로부터 우측으로 전방으로 흐른다. 신호들, 메시지들, 데이터, 정보 등은 신경망을 통해 후방으로 갈 수 없다(예를 들어, 우측으로부터 좌측으로 갈 수 없음). CNN은 이미지 분석에 사용될 수 있다. 연결들 및/또는 연관된 가중치들은 입력에 적용될 수 있는(예를 들어, 이미지의 상이한 픽셀들에 적용될 수 있는) 컨벌루션 필터(및/또는 컨벌루션 커널)의 형태를 취할 수 있다. 본 개시가 CNN들에 대해 이미지 분석을 언급할 수 있지만, 다른 실시예들에서, CNN은 다른 유형의 데이터 및 입력들에 사용될 수 있다.
[0023] 신경망(200)은 입력 계층(210), 중간 계층(220) 및 출력 계층(220)을 포함한다. 입력 계층(210), 중간 계층(220) 및 출력 계층(220)의 각각은 하나 이상의 노드들(205)을 포함한다. 입력 계층(210), 중간 계층(220) 및 출력 계층(220)의 각각은 상이한 개수의 노드들(205)을 가질 수 있다. 신경망(200)은 심층 신경망(DNN) 또는 심층 CNN일 수 있다. 신경망은 하나 초과의 중간 계층(220)이 있는 경우(예를 들어, 4 개, 10 개 또는 일부 다른 적절한 개수의 중간 계층(220)이 있는 경우) 심층(예를 들어, 심층 신경망)일 수 있다. 도 2에 예시된 바와 같이, 신경망(200)은 2 개의 중간 계층(220)(예를 들어, 노드들(205)의 2 개의 열들)을 포함한다. 일 실시예에서, 중간 계층(220)은 노드들(205) 및 중간 계층(220)의 노드들(205)에 커플링된 연결들/가중치들을 포함할 수 있다. 중간 계층의 노드들은 중간 계층(220)에 대한 입력(예를 들어, 이전 계층에 의해 생성된 특징 맵과 같은 출력)을 수신할 수 있다. 가중치들(예를 들어, 커널/필터)이 현재 중간 계층의 출력(예를 들어, 특징 맵)을 생성하기 위해 입력들에 적용될 수 있다.
[0024] 계층의 노드들(205)의 각각은 노드들(205) 사이의 화살표들/라인들에 의해 나타낸 바와 같이, 다음 레벨(예를 들어, 다음 서브-계층)의 노드(205) 또는 다른 계층의 노드(205)에 연결된다. 예를 들어, 입력 계층의 노드들(205)은 각각 제1 중간 계층(220)의 적어도 하나의 노드(205)에 커플링된다. 신경망(200)은 완전 연결 신경망일 수 있다. 예를 들어, 각각의 계층 또는 레벨의 각각의 노드(205)는 후속 계층 또는 레벨이 있는 후속 계층 또는 레벨의 각각의 노드에 대한 커넥터이다(예를 들어, 출력 계층(220)의 노드(205)는 다른 노드들에 연결되지 않음).
[0025] 각각의 연결은 가중치 또는 가중 값과 연관될 수 있다(예를 들어, 가중치를 가질 수 있음). 가중치 또는 가중 값은 컴퓨테이션에 적용되는 계수들을 정의할 수 있다. 예를 들어, 가중치들 또는 가중 값들은 2 개 이상의 노드들(205) 사이의 스케일링 팩터(scaling factor)들일 수 있다. 각각의 노드(205)는 해당 입력들의 합을 나타낼 수 있고, 연결과 연관된 가중치 또는 가중 값은 해당 연결에서 노드(205)의 출력에 곱해진 계수 또는 스케일링 팩터를 나타낼 수 있다. 노드들(205) 사이의 가중치들은 신경망에 대한 훈련 프로세스 동안 결정, 계산, 생성, 할당, 학습 등이 될 수 있다. 예를 들어, 역전파(backpropagation)가 신경망(200)이 라벨링된 훈련 데이터의 대응 값들이 주어진 예상 출력 값들을 생성하도록 가중치들을 설정하는 데 사용될 수 있다. 따라서, 중간 계층(220)의 가중치들은 데이터에서 의미 있는 패턴들의 인코딩으로 간주될 수 있다. 노드들(205) 사이의 연결들의 가중치들은 추가적인 훈련에 의해 수정될 수 있다.
[0026] 신경망(200)이 특정 개수의 노드(205) 계층들 및 연결들로 묘사되어 있지만, 다양한 신경망 아키텍처들/구성들이 다른 실시예들에서 사용될 수 있다. 예를 들어, 상이하게 완전히 연결된 신경망들과 부분적으로 연결된 신경망들(예를 들어, 인접 계층들의 모든 노드들이 연결되지 않은 경우)이 사용될 수 있다.
[0027] 본 개시는 컨벌루션 신경망들을 언급할 수 있지만, 다른 유형들의 신경망들 및/또는 심층 신경망들이 다른 실시예들에서 사용될 수 있다. 예를 들어, 부분적으로 연결된 심층 신경망, 순환 신경망, 장단기 메모리(LSTM: long short-term memory) 신경망 등이 다른 실시예들에서 사용될 수 있다.
[0028] 위에서 논의된 바와 같이, 신경망(200)은 수천 또는 수백만 개의 노드들 및/또는 가중치들을 포함할 수 있다. 신경망(200)을 저장하는 것은 많은 개수의 노드들 및/또는 가중치들로 인해 많은 양의 저장 공간을 사용할 수 있다. 또한, 더 많은 양의 프로세싱/컴퓨테이션 자원들이 신경망(200)을 실행하기 위해(예를 들어, 신경망(200)을 사용하여 입력 데이터를 프로세싱/분석하기 위해) 사용될 수 있다. 따라서, 신경망(200)에서 가중치들/연결들 및/또는 노드들의 수를 줄이는 것이 유용할 수 있다. 이것은 신경망을 저장하는 데 사용되는 저장 공간의 양을 줄이고 사용되는 프로세싱/컴퓨테이션 자원들을 줄일 것이다.
[0029] 도 3은 본 개시의 하나 이상의 실시예들에 따른 예시적인 프루닝(pruning) 엔진(300)을 예시하는 도면이다. 프루닝 엔진(300)은 컴퓨팅 디바이스(380)에 위치될 수 있다. 컴퓨팅 디바이스(380)는 프로세싱 디바이스들(예를 들어, 프로세서들, 중앙 처리 장치(CPU: central processing unit)들, 프로그래밍 가능 로직 디바이스(PLD: programmable logic device)들 등), 메모리(예를 들어, 랜덤 액세스 메모리(예를 들어, RAM), 저장 디바이스들(예를 들어, 하드-디스크 드라이브(HDD: hard-disk drive), 솔리드-스테이트 드라이브(SSD: solid-state drive) 등) 및 다른 하드웨어 디바이스들(예를 들어, 사운드 카드, 비디오 카드 등)과 같은 하드웨어를 포함할 수 있다. 컴퓨팅 디바이스(380)는 예를 들어, 서버 컴퓨터들, 데스크탑 컴퓨터들, 랩탑 컴퓨터들, 태블릿 컴퓨터들, 스마트폰들, 셋-탑 박스들 등을 포함하는 프로그래밍 가능한 프로세서를 갖는 임의의 적절한 유형의 컴퓨팅 디바이스 또는 기계일 수 있다. 일부 예들에서, 컴퓨팅 디바이스(380)는 단일 기계를 포함할 수 있거나 복수의 상호 연결된 기계들(예를 들어, 클러스터에 구성된 복수의 서버들)을 포함할 수 있다. 컴퓨팅 디바이스(380)는 운영 체제(OS: operating system)를 실행하거나 이를 포함할 수 있다. OS는 다른 구성 요소들(예를 들어, 소프트웨어, 애플리케이션들 등)의 실행을 관리할 수 있고/있거나 컴퓨팅 디바이스(380)의 하드웨어(예를 들어, 프로세서들, 메모리, 저장 디바이스들 등)에 대한 액세스를 관리할 수 있다. 본 개시는 컴퓨팅 디바이스(380)를 언급할 수 있지만, 프루닝 엔진(300)은 다른 실시예들에서 가상 환경과 같은 다른 유형들의 컴퓨팅 환경에 위치될 수 있다. 예를 들어, 프루닝 엔진(300)은 다른 실시예들에서 가상 기계(VM: virtual machine), 컨테이너 등에 위치될 수 있다.
[0030] 위에서 논의된 바와 같이, 신경망(310)은 수천 또는 수백만 개의 노드들 및/또는 가중치들을 포함할 수 있다. 신경망(310)을 저장하는 것은 많은 수의 노드들 및/또는 가중치들로 인해 많은 양의 저장 공간을 사용할 수 있다. 또한, 더 많은 양의 프로세싱/컴퓨테이션 자원들이 신경망(310)을 실행하기 위해(예를 들어, 신경망(310)을 사용하여 입력 데이터를 프로세싱/분석하기 위해) 사용될 수 있다. 신경망에서 가중치들/연결들 및/또는 노드들의 수를 줄이는 것은(예를 들어, 신경망 프루닝, 신경망 희소화) 위에서 논의된 문제들을 완화시킬 수 있다.
[0031] 그러나, 신경망은 일반적으로 신경망이 프루닝된 후에 재학습된다. 위에서 논의한 바와 같이, 신경망 훈련은 시간-소모적, 프로세싱-집약적 및/또는 비용이 많이 드는 프로세스일 수 있다. 신경망을 훈련시키기 위해, 훈련 데이터(350)가 신경망의 노드들 사이의 연결들의 가중치들이 적절하게 설정되기 전에 수백 또는 수천회 신경망에 전달(예를 들어, 제공)될 수 있다. 훈련 데이터(350)를 신경망을 통해 수백회/수천회(또는 그 이상) 전달하는 것은 신경망을 훈련시키는 데 필요한 시간량(예를 들어, 며칠, 몇 주 등)을 크게 증가시킬 수 있다. 또한, 신경망을 통해 훈련 데이터(350)를 수백회/수천회 전달하는 것은 또한 상당한 양의 프로세싱 자원들 및/또는 전력을 사용할 수 있다.
[0032] 일 실시예에서, 프루닝 엔진(300)은 신경망(310)을 획득 및/또는 분석할 수 있다. 예를 들어, 프루닝 엔진(300)은 데이터 저장소(예를 들어, 메모리, 디스크 드라이브 등)로부터 신경망(310)을 검색 및/또는 액세스할 수 있다. 도 3에 예시된 바와 같이, 신경망(310)은 노드들의 세트(신경망(310)에서 원으로 예시) 및 노드들의 세트의 노드들을 상호 연결하는 연결들의 세트(노드들/원들 사이의 라인으로 예시)를 포함한다. 노드들 간의 연결들을 또한 가중치들이라 칭할 수 있다. 신경망(310)은 원래 신경망, 기준 신경망, 티처(teacher) 신경망 등으로 지칭할 수 있다.
[0033] 일 실시예에서, 프루닝 엔진(300)은 신경망(310)(예를 들어, 제1 신경망)에 기초하여 신경망(320)(예를 들어, 제2 신경망)을 생성할 수 있다. 신경망(320)은 신경망(310)에 있는 연결들의 서브세트를 포함할 수 있다. 예를 들어, 신경망(320)은 신경망(310)의 각각의 계층으로부터 연결들의 서브세트의 결정, 선택, 식별 등에 의해 생성될 수 있다. 신경망(310)의 각각의 계층으로부터의 연결들의 서브세트는 신경망(320)을 생성하는 데 사용될 수 있다. 신경망(320)은 또한 신경망(310)에 있는 노드들의 서브세트를 포함할 수 있다. 예를 들어, 신경망(310)으로부터 연결들의 서브세트를 선택한 후, 신경망(320)의 일부 노드들은 연결을 통해 임의의 다른 노드들에 연결되지 않을 수 있다. 이러한 노드들은 신경망(320)으로부터 제거될 수 있다. 신경망에서 연결들 및/또는 노드들의 서브세트의 결정, 선택, 식별 등은 신경망 프루닝, 신경망 희소화 등으로 지칭될 수 있다.
[0034] 일 실시예에서, 프루닝 엔진(300)은 신경망(310)의 중간 계층을 분석함으로써 제2 신경망을 생성할 수 있다. 신경망(310)의 중간 계층들의 각각에 대해, 프루닝 엔진(300)은 각각의 중간 계층에서 가중치들의 서브세트를 결정(예를 들어, 식별, 선택 등)할 수 있다. 프루닝 엔진(300)은 신경망(320)을 생성하기 위해 각각의 중간 계층으로부터의 연결들의 상이한 서브세트들을 사용할 수 있다. 예를 들어, 신경망(320)은 신경망(310)과 동일한 수의 계층들을 가질 수 있다. 그러나, 신경망(320)은 하나 이상의 계층들에서 연결들을 거의 갖지 않을 수 있다.
[0035] 일 실시예에서, 프루닝 엔진(300)은 신경망(320)을 훈련 및/또는 재훈련하지 않고 신경망(320)을 생성할 수 있다. 예를 들어, 프루닝 엔진(300)은 신경망(320)을 생성하기 위해 어떠한 훈련 데이터도 사용하지 않을 수 있다. 프루닝 엔진(300)은 아래에 더욱 상세하게 논의되는 바와 같이, 신경망(310)의 상이한 계층들에 제공된 입력들에 기초하고 신경망(310)의 상이한 계층들에 의해 생성된 기준에 기초하여 신경망(320)을 생성할 수 있다. 예를 들어, 신경망(310)의 각각의 계층은 입력(예를 들어, 입력 데이터, 특징 맵, 이전 계층의 출력 등)을 수신할 수 있고, 입력에 기초하여 출력(예를 들어, 특징 맵)을 생성할 수 있다. 프루닝 엔진은 신경망(320)의 계층들에서 사용될 연결들(예를 들어, 가중치들)의 서브세트들을 식별하기 위해 신경망(310)의 중간 계층의 입력들 및/또는 출력들을 사용할 수 있다. 신경망(310)의 중간 계층들에 제공되는 입력들은 기준 입력들이라 칭할 수 있고, 신경망(310)의 중간 계층들에 의해 생성된 출력들은 기준 출력들이라 칭할 수 있다.
[0036] 일 실시예에서, 프루닝 엔진(300)은 신경망(320)의 계층들의 각각에 대한 연결들의 서브세트를 동시에(또는 실질적으로 동시에) 결정할 수 있다. 위에 논의된 바와 같이, 프루닝 엔진(300)은 신경망(310)의 계층들의 모든 기준 입력들 및 기준 출력들에 액세스할 수 있다. 이는 프루닝 엔진(300)이 신경망(320)의 각각의 중간 계층에 대한 연결들의 서브세트들의 결정을 병렬화하게 할 수 있다.
[0037] 일 실시예에서, 프루닝 엔진(300)은 훈련 데이터(350)를 사용하여 신경망(320)을 생성할 수 있다. 그러나, 표준 신경망 훈련 프로세스와 비교할 때, 프루닝 엔진(300)은 신경망(320)에 훈련 데이터(350)를 수백회 또는 수천회 제공하지 않을 수 있다. 대신, 프루닝 엔진(300)이 훈련 데이터(350)를 신경망(320)에 전달할 수 있는 횟수는 훈련 데이터(350)가 신경망(310)을 훈련시키기 위해 신경망(310)에 제공된 횟수보다 적을 수 있다. 예를 들어, 훈련 데이터(350)는 신경망(320)에 1회 또는 2회 전달될 수 있다. 프루닝 엔진은 아래에 더 상세히 논의되는 바와 같이, 신경망(310)의 상이한 계층들에 의해 생성된 기준 출력들에 기초하여 신경망(320)을 생성할 수 있다.
[0038] 일 실시예에서, 신경망(320)은 계층별로 생성될 수 있다. 예를 들어, 프루닝 엔진(300)은 신경망(320)에 제공된 입력에 기초하여 제1 계층에 대한 커널/필터를 생성할 수 있다. 해당 입력은 제1 기준 출력 특징 맵(예를 들어, 신경망(310)에 의해 생성된 특징 맵)에 기초하여 제1 필터를 생성하는 데 사용될 수 있다. 입력은 훈련 데이터(350)일 수 있다. 제1 필터의 출력은 제2 필터를 생성하는 데 사용될 수 있다. 예를 들어, 프루닝 엔진(300)은 제2 기준 출력 특징 맵 및 제1 필터의 출력에 기초하여 제2 필터를 결정할 수 있다. 따라서, 신경망(320)의 필터들은 계층별로 순차적으로 생성될 수 있다.
[0039] 위에서 논의된 바와 같이, 신경망(320)은 신경망(310), 신경망(310)의 중간 계층들에 대한 기준 입력들 및 신경망(310)의 중간 계층들의 기준 출력들 중 하나 이상에 기초하여 생성될 수 있다. 일 실시예에서, 신경망(320)은 아래의 식 (1)에 기초하여 생성될 수 있다.
(1)
식 (1)은 신경망(320)의 중간 계층들의 각각을 결정(예를 들어, 선택, 식별, 계산 등)할 때 사용 및/또는 적용될 수 있다. 예를 들어, 식 (1)은 중간 계층(예를 들어, 컨벌루션 계층)의 연결들/가중치들을 계산하기 위해 적용/사용될 수 있다.
[0040] 일 실시예에서, 식(1)의 항 X는 신경망(310)의 중간 계층에 제공된 하나 이상의 특징 맵들(예를 들어, 하나 이상의 기준 입력들)을 나타낼 수 있다. 위에서 논의된 바와 같이, 신경망(320)은 신경망(310)과 동일한 수의 계층들을 가질 수 있다. 신경망(320)의 각각의 중간 계층은 신경망(310)의 계층에 대응할 수 있고/있거나 이와 연관될 수 있다. 신경망(310)의 계층에 제공된 동일한 특징 맵(예를 들어, X)이 신경망(320)의 대응하는 계층의 연결들/가중치들을 결정하는 데 사용될 수 있다. 하나 이상의 특징 맵들 X는 차원들(예를 들어, 형상)[N, H, W, C]을 가질 수 있으며, 여기서 H는 높이이고, W는 폭이고, C는 입력 채널들의 수이고, N은 샘플들의 수(예를 들어, 특징 맵들의 수)이다. 예를 들어, 복수의 특징 맵들(예를 들어, N 개의 특징 맵들)이 X에 포함될 수 있다. 특징 맵들의 각각은 3 개의 채널들(예를 들어, C = 3)을 가질 수 있으며, 하나는 적색에 대한 것이고, 하나는 청색에 대한 것이고, 하나는 녹색에 대한 것이다.
[0041] 일 실시예에서, Y는 신경망(310)의 대응 계층에 의해 생성된 기준 출력일 수 있다. 예를 들어, Y는 신경망(310)의 대응 계층에 제공된 특징 맵들 X에 기초하여, 신경망(310)의 대응 계층에 의해 생성된 하나 이상의 특징 맵들을 나타낼 수 있다. 하나 이상의 특징 맵들 Y는 차원들(예를 들어, 형상) [N, H, W, K]을 가질 수 있으며, 여기서 H는 높이이고 W는 폭이고, K는 출력 채널들의 수이고, N은 샘플들의 수(예를 들어, 특징 맵들의 수)이다.
[0042] 일 실시예에서, W는 신경망(320)의 계층에 대해 결정될 필터(예를 들어, 연결들/가중치들을 포함하는 하나 이상의 커널들)이다. 예를 들어, W는 신경망(320)의 대응 계층에 포함될 필터일 수 있다. 따라서, 식 (1)은 프루닝 엔진(300)이 필터 W가 입력 X에 적용될 때 Y(예를 들어, 기준 출력)과 결과 사이의 차이를 최소화하는 W(예를 들어, 필터)를 획득(예를 들어, 결정, 계산 등)하는 것을 나타낼 수 있다. W는 차원들(예를 들어, 형상)[R, S, C, K]을 가질 수 있으며, 여기서 R은 높이이고, S는 폭이고, C는 입력 채널들의 수이고, K는 출력 채널들의 수이다. 필터 W는 컨벌루션 연산(예를 들어, 식 (1)의 "*" 연산)에서 입력 X에 적용될 수 있다.
[0043] 식 (1)은 각각의 출력 채널 k에 대해 하나의 문제인 K 개의 독립적인 문제들로 표현(예를 들어, 분해, 해체, 변환, 단순화 등)될 수 있다. 아래의 식 (2)는 K 개의 독립적인 문제들 각각을 나타내는 데 사용될 수 있다.
(2)
위에 논의된 바와 같이, 식 (1)의 항 X는 신경망(310)의 중간 계층에 제공된 하나 이상의 특징 맵들(예를 들어, 하나 이상의 기준 입력들)을 나타낼 수 있다. 항 Yk는 신경망(310)의 대응 계층에 의해 생성된 출력 채널 k에 대한 기준 출력을 나타낼 수 있다. Wk는 신경망(320)의 계층에 대한 출력 채널 k에 대해 결정될 필터(예를 들어, 연결들/가중치들을 포함하는 하나 이상의 커널들)를 나타낼 수 있다. Wk는 차원들(예를 들어, 형상) [R, S, C]를 가질 수 있으며, 여기서 R은 높이이고, S는 폭이고, C는 입력 채널들의 수이다.
[0044] 컨벌루션 연산(예를 들어, "*")은 R x S 행렬 곱셈 문제로 축소될 수 있으며, C 변수들의 각각은 아래 식 (3)에 예시된 바와 같다.
(3)
Xr,s는 차원들 [N, H, W, C]를 갖는 특징 맵일 수 있다. 위에서 논의된 바와 같이, H는 높이이고, W는 폭이고, C는 입력 채널들의 수이고, N은 샘플들의 수(예를 들어, 특징 맵들의 수)이다. Xr,s는 H-축을 따라 X를 r만큼 시프트시키고 W-축을 따라 X를 s만큼 시프트시킴으로써 획득(예를 들어, 생성, 계산, 결정 등)될 수 있다.
[0045] 식 (3)의 항들은 수정되어 아래의 식 (4)를 생성할 수 있다.
(4)
식 (3)을 다시 참조하면, wr,s는 식 (4)의 벡터 w를 형성하기 위해 적층될 수 있다. 벡터 w는 크기 R x S x C를 가질 수 있다. 또한, 식 (3)의 Xr,s는 식 (4)의 행렬 를 획득(예를 들어, 생성)하기 위해 적층될 수 있다. 행렬 는 크기/차원들 [(N x H x W), (R x S x C)]를 가질 수 있다. 예를 들어, 행렬 는 상이한 특징 맵들 Xr,s 각각을 취하고 이를 서로의 위에 적층함으로써 획득될 수 있다(예를 들어, 제2 특징 맵 Xr,s는 제1 특징 맵 Xr,s 아래에 적층되고, 제3 특징 맵 Xr,s는 제2 특징 맵 Xr,s 아래에 적층되는 등). 식 (3)의 yk는 식 (4)의 벡터 yk를 획득하기 위해 평탄화될 수 있다. 식 (4)를 사용하면 식 (3)의 컨벌루션 연산이 행렬 곱셈 연산으로 변환되게 할 수 있다.
[0046] 식 (4)는 식 (5a), (5b) 및 (5c)에 예시되는 바와 같이 추가로 수정될 수 있다.
(5a)
(5b)
(5c)
식 (5a)에 예시된 바와 같이, 로 다시 쓰여질 수 있다. tr() 연산은 행렬의 주 대각선 상에 위치된 값들의 합을 결정하는 추적 연산을 지칭할 수 있다(예를 들어, 행렬의 좌측 상부로부터 출발하여 우측 하부로 가는 값들의 합). 식 (5a)의 "T"는 식 (5a)에서 하나 이상의 항의 전치(transpose)를 나타낸다. 식 (5a)의 좌측을 확장하면 식 (5b)가 된다. 예를 들어, 상이한 항들이 서로 곱해지고 더해지고/빼져서 식 (5a)의 좌측을 확장할 수 있다. 식 (5b)는 식 (5c)에 예시된 바와 같이 추가로 단순화될 수 있다.
[0047] 위의 식 (5c)를 참조하면, 항 는 차원들(예를 들어, 형상) [RSC, RSC]를 갖는 행렬일 수 있으며, 여기서 RSC는 행렬의 높이 및 폭이다(예를 들어, RSC x RSC 행렬). 항 는 w에 대해 풀 때 사용되지 않을 수 있는(예를 들어, 무시될 수 있는) 상수 항일 수 있다. 식 (5c)에서 항 는 항 를 치환할 수 있고, 항 bk는 항 를 치환할 수 있다.
[0048] 식 (1) 내지 (5c)에 기초하여, 프루닝 엔진(300)은 항 w에 대해 풀 수 있다. 예를 들어, 프루닝 엔진(300)은 항 w를 풀기 위해 회귀 분석, 선형 회귀 및/또는 다른 통계적 회귀를 수행할 수 있다. 항 w에 대해 푸는 것은 신경망(320)의 중간 계층에 대한 커널로 귀결될 것이다. 위에서 논의된 바와 같이, 프루닝 엔진(300)은 각각의 중간 계층에 대해 동시에 및/또는 순차적으로(예를 들어, 계층별로) 커널들(예를 들어, 하나 이상의 필터들, 컨벌루션 필터들 등)을 결정(예를 들어, 계산, 결정, 획득 등)할 수 있다.
[0049] 일 실시예에서, 식(1)은 프루닝 엔진(300)이 어떠한 훈련 데이터도 사용하지 않고 (예를 들어, 신경망(320)의 커널들/필터들에서 사용되는 가중치들을 결정하기 위해) 신경망(320)을 생성하게 할 수 있다. 예를 들어, 프루닝 엔진(300)은 신경망(310)(예를 들어, 기준 신경망, 티처 신경망 등)에 의해 생성된 입력들 및/또는 출력들을 사용하여 커널들/필터들을 생성할 수 있다. 다른 실시예에서, 프루닝 엔진(350)은 신경망(320)의 중간 계층들에 대한 커널들/필터들을 계층별로 순차적으로 생성할 수 있다(예를 들어, 제1 중간 계층에 대한 커널이 생성된 후, 제2 중간 계층에 대한 커널은 생성되는 등). 계층별로 커널들을 생성하는 것은 신경망을 통해 훈련 데이터를 수백회 또는 수천회 전달할 수 있는 일반적인 훈련 프로세스에 비해 프루닝 엔진(300)이 신경망(320)을 통해 훈련 데이터(350)를 더 적은 횟수(예를 들어, 1회 내지 2회)로 전달하게 할 수 있다.
[0050] 프루닝 엔진(300)은 프루닝된(예를 들어, 희소화된) 신경망(예를 들어, 신경망(320))을 생성하는 데 사용될 수 있는 시간, 노력 컴퓨테이션/프로세싱 자원 등을 감소시킬 수 있다. 훈련 데이터(350)의 사용을 자제함으로써(예를 들어, 훈련 데이터(350)를 전혀 사용하지 않음) 또는 더 적은 횟수로(예를 들어, 1회 내지 2회) 훈련 데이터(350)를 사용함으로써, 프루닝 엔진(300)은 신경망(320)을 생성할 때 시간 및/또는 자원들을 절약할 수 있다. 예를 들어, 프루닝 엔진(300)은 훈련 데이터(360)를 신경망(320)을 통해 수백회 또는 수천회 전달하지 않고 신경망(320)을 생성할 수 있다. 이것은 효율성을 크게 높이고/높이거나 신경망을 프루닝하는 데 걸리는 시간을 줄일 수 있다.
[0051] 도 4는 본 개시의 하나 이상의 실시예들에 따라 심층 신경망을 프루닝하기 위한 예시적인 프로세스(400)를 예시하는 흐름도이다. 프로세스(400)는 하드웨어(예를 들어, 회로, 전용 로직, 프로그래밍 가능 로직, 프로세서, 프로세싱 디바이스, 중앙 처리 장치(CPU: central processing unit), 시스템-온-칩(SoC: system-on-chip) 등), 소프트웨어(예를 들어, 프로세싱 디바이스 상에서 실시/실행되는 명령들), 펌웨어(예를 들어, 마이크로코드) 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 실시예들에서, 프로세스(400)는 컴퓨팅 디바이스(예를 들어, 도 3에 예시된 컴퓨팅 디바이스(380)) 및 프루닝 엔진(예를 들어, 도 3에 예시된 프루닝 엔진(300)) 중 하나 이상에 의해 수행될 수 있다.
[0052] 도 4를 참조하면, 프로세스(400)는 다양한 실시예들에 의해 사용되는 예시적인 기능들을 예시한다. 특정 기능 블록들("블록들")이 프로세스(400)에 개시되어 있지만, 이러한 블록들은 예들이다. 즉, 실시예들은 다양한 다른 블록들 또는 프로세스(400)에서 언급된 블록들의 변형들을 수행하는 데 매우 적합하다. 프로세스(400)의 블록들은 제시된 것과 상이한 순서로 수행될 수 있으며 프로세스(400)의 모든 블록들이 수행되지 않을 수 있음이 이해된다. 또한, 추가적인 다른 블록들(도 4에 예시되지 않음)이 도 4에 예시된 블록들 사이에 삽입될 수 있다.
[0053] 프로세스(400)는 프로세스(400)가 제1 신경망을 획득하는 블록(405)에서 개시된다. 제1 신경망은 신경망의 크기를 줄이고/줄이거나 사용되는 컴퓨테이션/프로세싱 자원들의 양을 줄이기 위해 프루닝(예를 들어, 희소화)되어야 하는 신경망일 수 있다. 블록 410에서, 프로세스(400)는 제1 신경망에 기초하여 제2 신경망을 생성할 수 있다.
[0054] 블록 410은 추가 블록들 411, 412 및 413을 포함한다. 블록 411에서, 프로세스(400)는 제1 신경망의 하나 이상의 중간 계층들을 분석할 수 있다. 예를 들어, 프로세스(400)는 중간 계층에 제공된 입력들(예를 들어, 기준 입력 특징 맵들) 및/또는 제1 신경망의 중간 계층들에 의해 생성된 출력들(예를 들어, 기준 출력 특징 맵들)을 획득할 수 있다. 블록 412에서, 프로세스(400)는 각각의 중간 계층에 대한 가중치들의 서브세트를 결정(예를 들어, 식별, 선택, 계산 등)할 수 있다. 예를 들어, 제1 신경망의 각각의 계층은 가중치들의 세트를 포함할 수 있다. 프로세스(400)는 제2 신경망의 대응하는 계층을 결정하기 위해 각각의 계층에서 가중치들의 서브세트를 식별할 수 있다. 프로세스(400)는 위에서 논의된 바와 같이, 각각의 계층에 대한 가중치들의 세트를 식별하기 위해 다양한 행렬들을 적층, 평탄화 및/또는 프로세싱할 수 있다. 가중치들의 서브세트를 선택하는 것은 계층에 대한 필터를 생성하는 것으로 칭해질 수 있다. 일 실시예에서, 프로세스(400)는 모든 계층에 대해 동시에 각각의 계층에 대한 가중치들의 서브세트들을 식별할 수 있다. 예를 들어, 프로세스(400)는 제1 신경망의 각각의 계층에 의해 생성된 입력들 및/또는 출력들에 액세스할 수 있다. 이것은 프로세스(400)가 (예를 들어, 모든 계층들에 대해 W를 동시에 풀기 위해) 제2 신경망의 각각의 대응 계층에 대한 필터를 동시에 생성하게 할 수 있다. 다른 실시예에서, 프로세스(400)는 각각의 계층에 대해 각각의 필터를 순차적으로 생성할 수 있다. 예를 들어, 프로세스(400)는 현재 계층에 대해 현재 필터를 생성한 후에 다음 계층에 대해 다음 필터를 생성할 수 있다. 블록 413에서, 프로세스(400)는 각각의 계층에 대해 식별된 가중치들의 서브세트에 기초하여 제2 신경망을 생성할 수 있다.
[0055] 도 5는 일부 실시예들에 따른 예시적인 컴퓨팅 디바이스(500)의 블록도이다. 컴퓨팅 디바이스(500)는 LAN, 인트라넷, 익스트라넷 및/또는 인터넷에서 다른 컴퓨팅 디바이스들에 연결될 수 있다. 컴퓨팅 디바이스는 클라이언트-서버 네트워크 환경에서 서버 기계의 능력으로 또는 피어-투-피어(peer-to-peer) 네트워크 환경에서 클라이언트의 능력으로 동작할 수 있다. 컴퓨팅 디바이스는 개인용 컴퓨터(PC: personal computer), 셋톱 박스(STB: set-top box), 서버, 네트워크 라우터, 스위치 또는 브릿지, 또는 해당 기계에 의해 취해질 액션들을 특정하는 명령들의 세트를 (순차적 또는 기타) 실행할 수 있는 임의의 기계에 의해 제공될 수 있다. 추가로, 단일 컴퓨팅 디바이스만이 예시되어 있지만, "컴퓨팅 디바이스"라는 용어는 또한 본원에서 논의된 방법들을 수행하기 위해 개별적으로 또는 공동으로 명령들의 세트(또는 복수의 세트들)를 실행하는 컴퓨팅 디바이스들의 임의의 집합을 포함하는 것으로 간주되어야 한다.
[0056] 예시적인 컴퓨팅 디바이스(500)는 프로세싱 디바이스(예를 들어, 범용 프로세서, 프로그래밍 가능 로직 디바이스(PLD: programmable logic device) 등)(502), 메인 메모리(504)(예를 들어, 동기식 동적 랜덤 액세스 메모리(DRAM: dynamic random access memory), 판독-전용 메모리(ROM: read-only memory), 정적 메모리(506)(예를 들어, 플래시 메모리) 및 데이터 저장 디바이스(518))를 포함할 수 있으며, 이는 버스(530)를 통해 서로 통신할 수 있다.
[0057] 프로세싱 디바이스(502)는 마이크로프로세서, 중앙 처리 장치 등과 같은 하나 이상의 범용 프로세싱 디바이스들에 의해 제공될 수 있다. 예시적인 예에서, 프로세싱 디바이스(502)는 복합 명령 세트 컴퓨팅(CISC: complex instruction set computing) 마이크로프로세서, 축소 명령 세트 컴퓨팅(RISC: reduced instruction set computing) 마이크로프로세서, 매우 긴 명령문(VLIW: very long instruction word) 마이크로프로세서, 또는 다른 명령 세트들을 구현하는 프로세서 또는 명령 세트들의 조합을 구현하는 프로세서들을 포함할 수 있다. 프로세싱 디바이스(502)는 또한 주문형 집적 회로(ASIC: application specific integrated circuit), 필드 프로그래밍 가능 게이트 어레이(FPGA: field programmable gate array), 디지털 신호 프로세서(DSP: digital signal processor), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 프로세싱 디바이스들을 포함할 수 있다. 프로세싱 디바이스(502)는 본원에서 논의된 동작들 및 단계들을 수행하기 위해 본 개시의 하나 이상의 양태들에 따라 본원에서 설명된 동작들을 실행하도록 구성될 수 있다.
[0058] 컴퓨팅 디바이스(500)는 네트워크(520)와 통신할 수 있는 네트워크 인터페이스 디바이스(508)를 추가로 포함할 수 있다. 컴퓨팅 디바이스(500)는 또한 비디오 디스플레이 유닛(510)(예를 들어, 액정 디스플레이(LCD: liquid crystal display) 또는 음극선관(CRT: cathode ray tube)), 영숫자 입력 디바이스(512)(예를 들어, 키보드), 커서 제어 장치(514)(예를 들어, 마우스) 및 음향 신호 생성 디바이스(516)(예를 들어, 스피커)를 포함할 수 있다. 일 실시예에서, 비디오 디스플레이 유닛(510), 영숫자 입력 디바이스(512) 및 커서 제어 디바이스(514)는 단일 구성 요소 또는 디바이스(예를 들어, LCD 터치 스크린)로 결합될 수 있다.
[0059] 데이터 저장 디바이스(518)는 본 개시의 하나 이상의 양태들에 따라, 프루닝 엔진 명령들(525), 예를 들어, 본원에 설명된 동작들을 수행하기 위한 명령들의 하나 이상의 세트들이 저장될 수 있는 컴퓨터-판독 가능 저장 매체(528)를 포함할 수 있다. 프루닝 엔진 명령들(525)은 또한 컴퓨팅 디바이스(500), 메인 메모리(504) 및 컴퓨터-판독 가능 매체를 또한 구성하는 프로세싱 디바이스(502)에 의한 실행 동안 메인 메모리(504) 및/또는 프로세싱 디바이스(502) 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 프루닝 엔진 명령들(525)은 추가로 네트워크 인터페이스 디바이스(508)를 통해 네트워크(520)를 통해 전송되거나 수신될 수 있다.
[0060] 컴퓨터-판독 가능 저장 매체(528)가 예시적인 예에서 단일 매체인 것으로 도시되어 있지만, "컴퓨터-판독 가능 저장 매체"라는 용어는 명령들의 하나 이상의 세트들을 저장하는 단일 매체 또는 복수의 매체들(예를 들어, 중앙 집중식 또는 분산형 데이터베이스 및/또는 연관된 캐시들 및 서버들)을 포함하는 것으로 간주되어야 한다. "컴퓨터-판독 가능 저장 매체"라는 용어는 또한 기계에 의한 실행을 위한 명령들의 세트를 저장, 인코딩 또는 운반할 수 있고 기계로 하여금 본원에 설명된 방법을 수행하게 하는 임의의 매체를 포함하는 것으로 간주되어야 한다. 따라서, "컴퓨터-판독 가능 저장 매체"라는 용어는 솔리드-스테이트 메모리들, 광학 매체 및 자기 매체를 포함하지만 이에 한정되지 않는 것으로 간주되어야 한다.
[0061] 달리 구체적으로 언급되지 않는 한, "획득하는", "생성하는", "분석하는", "결정하는", "적층하는", "평탄화하는" 등과 같은 용어들은 컴퓨팅 디바이스의 레지스터 및 메모리들 내의 물리적(전자적) 수량들로 표현되는 데이터를 컴퓨팅 디바이스 메모리들 또는 레지스터들 또는 이러한 다른 정보 저장, 전송 또는 디스플레이 디바이스들 내의 물리적 수량들로 유사하게 표현되는 다른 데이터로 조작 및 변환하는 컴퓨팅 디바이스들에 의해 수행 또는 구현되는 액션들 및 프로세스들을 지칭한다. 또한, 본원에서 사용되는 "제1", "제2", "제3", "제4" 등의 용어들은 상이한 요소들 간에 구별하기 위한 표지들로서 의미되고, 반드시 그 숫자의 지정에 따른 서수적 의미를 갖는 것은 아니다.
[0062] 본원에 설명된 예들은 또한 본원에 설명된 동작들을 수행하기 위한 장치에 관한 것이다. 이 장치는 필요한 목적들을 위해 특별히 구성될 수 있거나 컴퓨팅 디바이스에 저장된 컴퓨터 프로그램에 의해 선택적으로 프로그래밍된 범용 컴퓨팅 디바이스를 포함할 수 있다. 이러한 컴퓨터 프로그램은 컴퓨터-판독 가능 비일시적 저장 매체에 저장될 수 있다.
[0063] 본원에 설명된 방법들 및 예시적인 예들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치와 관련되지 않는다. 다양한 범용 시스템들이 본원에 설명된 교시들에 따라 사용될 수 있거나, 요구되는 방법 단계들을 수행하기 위해 보다 특수화된 장치를 구성하는 것이 편리할 수 있다. 이러한 다양한 시스템들에 필요한 구조는 위의 설명에 제시된 대로 나타날 것이다.
[0064] 위의 설명은 예시를 위해 의도된 것이며 제한적이지 않다. 본 개시가 특정한 예시적인 예들을 참조하여 설명되었지만, 본 개시가 설명된 예들에 한정되지 않는다는 것이 인식될 것이다. 본 개시의 범위는 청구항들이 부여받는 등가물들의 전체 범위와 함께 이하의 청구항들을 참조하여 결정되어야 한다.
[0065] 본원에서 사용된 바와 같이, 단수형 "어느(a)", "어떤(an)" 및 "그(the)"는 문맥상 명백하게 달리 나타내지 않는 한 복수형도 포함하는 것으로 의도된다. "포함하다(comprises)", "포함하는(comprising)", "포함하다(includes)" 및/또는 "포함하는(including)"이라는 용어들은 본원에서 사용될 때 명시된 특징들, 정수들, 단계들, 동작들, 요소들 및/또는 구성 요소들의 존재를 특정하지만, 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 구성 요소들 및/또는 이들의 그룹들의 존재 또는 추가를 배제하지 않는다는 것이 추가로 이해될 것이다. 따라서, 본원에서 사용되는 용어는 단지 특정한 실시예들을 설명하기 위한 것이지, 제한하려고 의도된 것이 아니다.
[0066] 일부 대안적인 구현들에서, 언급된 기능들/행위들은 도면에 언급된 순서를 벗어나 발생할 수 있음에 또한 유의해야 한다. 예를 들어, 연속적으로 도시된 2 개의 도면은 관련된 기능들/행위들에 따라 사실상 실질적으로 동시에 실행되거나 때로는 반대 순서로 실행될 수도 있다.
[0067] 방법의 동작들이 특정 순서로 설명되었지만, 설명된 동작들 사이에서 다른 동작들이 수행될 수 있고, 설명된 동작들이 약간 상이한 시간에 발생하도록 조정될 수 있거나 설명된 동작들이 프로세싱과 연관된 다양한 간격으로 프로세싱 동작들의 발생을 허용하는 시스템에서 분산될 수 있음을 이해해야 한다.
[0068] 다양한 유닛들, 회로들 또는 다른 구성 요소들이 작업 또는 작업들을 수행하도록 "구성되거나", "구성 가능한" 것으로 설명되거나 청구될 수 있다. 이러한 맥락에서, "~하도록 구성된" 또는 "~하도록 구성 가능한"이라는 문구는 유닛들/회로들/구성 요소들이 동작 중에 작업 또는 작업들을 수행하는 구조(예를 들어, 회로)를 포함함을 나타냄으로써 구조를 암시하는 데 사용된다. 이와 같이, 유닛/회로/구성 요소는 특정된 유닛/회로/구성 요소가 현재 동작하지 않는 경우(예를 들어, 켜져 있지 않은 경우)에도 작업을 수행하도록 구성되거나 작업을 수행하도록 구성 가능하다고 말할 수 있다. "~하도록 구성된" 또는 "~하도록 구성 가능한"과 같은 언어와 함께 사용되는 유닛들/회로들/구성 요소들은 하드웨어, 예를 들어, 회로들, 동작을 구현하기 위해 실행 가능한 프로그램 명령들을 저장하는 메모리 등을 포함한다. 유닛/회로/구성 요소가 하나 이상의 작업들을 수행하도록 "구성되거나" 하나 이상의 작업들을 수행하도록 "구성 가능하다는" 것은 해당 유닛/회로/구성 요소에 대해 35 U.S.C.112, 여섯 번째 단락을 적용하지 않는 것으로 명시적으로 의도된다. 추가로, "~하도록 구성된" 또는 "~하도록 구성 가능한"은 문제의 작업(들)을 수행할 수 있는 방식으로 동작하는 소프트웨어 및/또는 펌웨어(예를 들어, FPGA 또는 소프트웨어를 실행하는 범용 프로세서)에 의해 조작되는 일반 구조(예를 들어, 일반 회로)를 포함할 수 있다. "~하도록 구성되는"은 또한 하나 이상의 작업들을 구현하거나 수행하도록 구성되는 디바이스들(예를 들어, 집적 회로들)을 제조하기 위해 제조 프로세스(예를 들어, 반도체 제조 시설)를 구성하는 것을 포함할 수 있다. "~하도록 구성 가능한"은 개시된 기능(들)을 수행하도록 구성되는 프로그래밍되지 않은 디바이스에 해당 능력을 부여하는 프로그래밍된 매체를 수반하지 않는다면, 블랭크(blank) 매체, 프로그래밍되지 않은 프로세서 또는 프로그래밍되지 않은 일반 컴퓨터, 또는 프로그래밍되지 않은 프로그래밍 가능한 로직 디바이스, 프로그래밍 가능한 게이트 어레이 또는 다른 프로그래밍되지 않은 디바이스에 적용하지 않는 것으로 명시적으로 의도된다.
[0069] 상술한 설명은 설명의 목적으로 특정 실시예들을 참조하여 설명되었다. 그러나, 위의 예시적인 논의들은 본 발명을 개시된 정확한 형태들로 제한하거나 철저하게 하기 위한 것이 아니다. 위의 교시들의 관점에서 많은 수정들 및 변형들이 가능하다. 실시예들은 실시예들의 원리들 및 그 실제 적용들을 가장 잘 설명하기 위해 선택되고 설명되었으며, 이에 의해 본 기술 분야의 통상의 기술자가 고려되는 특정 용도에 적합할 수 있는 실시예들 및 다양한 수정들을 가장 잘 이용할 수 있게 한다. 따라서, 본 실시예들은 예시적인 것으로 간주되어야 하며 제한적이지 않으며, 본 발명은 본원에 제공된 상세 사항들에 제한되지 않고 첨부된 청구항들의 범위 및 등가물들 내에서 수정될 수 있다.

Claims (20)

  1. 방법으로서,
    제1 신경망을 획득하는 단계 ―
    상기 제1 신경망은 훈련 데이터의 제1 세트를 사용하여 훈련되고;
    상기 제1 신경망은 노드들의 제1 세트를 포함하고;
    상기 제1 신경망은 상기 노드들의 제1 세트를 상호 연결하는 연결들의 제1 세트를 포함함 ―;
    상기 제1 신경망에 기초하여 제2 신경망을 생성하는 단계를 포함하고,
    상기 제2 신경망은 노드들의 제2 세트를 상호 연결하는 연결들의 제2 세트를 포함하고, 상기 연결들의 제2 세트는 상기 연결들의 제1 세트의 서브세트를 포함하고;
    상기 제2 신경망은 상기 훈련 데이터의 제1 세트를 사용하지 않고 생성되는, 방법.
  2. 제1 항에 있어서,
    상기 제1 신경망에 기초하여 상기 제2 신경망을 생성하는 단계는,
    상기 제1 신경망의 중간 계층들의 세트를 분석하는 단계;
    각각의 중간 계층에 대한 가중치들의 서브세트들을 결정하는 단계; 및
    각각의 중간 계층에 대한 상기 가중치들의 서브세트들에 기초하여 상기 제2 신경망을 생성하는 단계를 포함하는, 방법.
  3. 제2 항에 있어서,
    각각의 중간 계층에 대한 상기 가중치들의 서브세트를 결정하는 단계는,
    각각의 중간 계층에 대해, 상기 중간 계층에 제공된 입력 및 기준 출력에 기초하여 개개의 필터를 생성하는 단계를 포함하고, 상기 개개의 필터는 가중치들의 서브세트를 포함하는, 방법.
  4. 제3 항에 있어서,
    상기 입력은,
    제1 결합 특징 맵을 생성하기 위해 입력 특징 맵들의 제1 세트를 적층하는 단계에 의해 생성되고, 상기 입력은 상기 제1 결합 특징 맵을 포함하는, 방법.
  5. 제4 항에 있어서,
    상기 입력 특징 맵들의 제1 세트는 상기 제1 신경망의 제1 필터에 의해 생성되는, 방법.
  6. 제3 항에 있어서,
    상기 기준 출력은,
    벡터를 생성하기 위해 출력 특징 맵을 평탄화하는 단계에 의해 생성되고, 상기 기준 출력은 상기 벡터를 포함하는, 방법.
  7. 제6 항에 있어서,
    상기 출력 특징 맵은 상기 제1 신경망의 제2 필터에 기초하여 생성되는, 방법.
  8. 제1 항에 있어서,
    각각의 중간 계층에 대한 가중치들의 서브세트들은 각각의 중간 계층에 대해 동시에 결정되는, 방법.
  9. 제1 항에 있어서,
    상기 제2 신경망을 생성하는 단계는,
    상기 제2 신경망을 훈련시키지 않고 상기 제2 신경망을 생성하는 단계를 포함하는, 방법.
  10. 제1 항에 있어서,
    상기 노드들의 제2 세트는 상기 노드들의 제1 세트의 서브세트를 포함하는, 방법.
  11. 방법으로서,
    제1 신경망을 획득하는 단계 ―
    상기 제1 신경망은 제1 횟수로 상기 제1 신경망을 통해 훈련 데이터의 세트를 전달함으로써 훈련되고;
    상기 제1 신경망은 노드들의 제1 세트를 포함하고;
    상기 제1 신경망은 상기 노드들의 제1 세트를 상호 연결하는 연결들의 제1 세트를 포함함 ―;
    상기 제1 신경망에 기초하여 제2 신경망을 생성하는 단계를 포함하고,
    상기 제2 신경망은 노드들의 제2 세트를 상호 연결하는 연결들의 제2 세트를 포함하고, 상기 연결들의 제2 세트는 상기 연결들의 제1 세트의 서브세트를 포함하고;
    상기 제2 신경망은 제2 횟수로 상기 제2 신경망을 통해 상기 훈련 데이터의 세트를 전달함으로써 생성되고, 상기 제2 횟수는 상기 제1 횟수보다 더 작은, 방법.
  12. 제11 항에 있어서,
    상기 제1 신경망에 기초하여 상기 제2 신경망을 생성하는 단계는,
    상기 제1 신경망의 중간 계층들의 세트를 분석하는 단계;
    각각의 중간 계층에 대한 가중치들의 서브세트들을 결정하는 단계; 및
    각각의 중간 계층에 대한 상기 가중치들의 서브세트들에 기초하여 상기 제2 신경망을 생성하는 단계를 포함하는, 방법.
  13. 제12 항에 있어서,
    각각의 중간 계층에 대한 상기 가중치들의 서브세트들을 결정하는 단계는,
    각각의 중간 계층에 대해, 상기 중간 계층에 제공된 입력 및 기준 출력에 기초하여 개개의 필터를 생성하는 단계를 포함하고, 상기 개개의 필터는 가중치들의 서브세트를 포함하는, 방법.
  14. 제13 항에 있어서,
    상기 입력은,
    제1 결합 특징 맵을 생성하기 위해 입력 특징 맵들의 제1 세트를 적층하는 단계에 의해 생성되고, 상기 입력은 상기 제1 결합 특징 맵을 포함하는, 방법.
  15. 제14 항에 있어서,
    상기 입력 특징 맵들의 제1 세트는 상기 제2 신경망의 이전 계층에 의해 생성되는, 방법.
  16. 제13 항에 있어서,
    상기 기준 출력은,
    벡터를 생성하기 위해 출력 특징 맵을 평탄화하는 단계에 의해 생성되고, 상기 기준 출력은 상기 벡터를 포함하는, 방법.
  17. 제16 항에 있어서,
    상기 출력 특징 맵은 상기 제1 신경망의 제2 필터에 기초하여 생성되는, 방법.
  18. 제11 항에 있어서,
    각각의 중간 계층에 대한 가중치들의 서브세트들은 계층별로 순차적으로 결정되는, 방법.
  19. 제1 항에 있어서,
    상기 노드들의 제2 세트는 상기 노드들의 제1 세트의 서브세트를 포함하는, 방법.
  20. 장치로서,
    데이터를 저장하도록 구성된 메모리;
    상기 메모리에 커플링된 프로세서를 포함하고, 상기 프로세서는,
    제1 신경망을 획득하고 ―
    상기 제1 신경망은 훈련 데이터의 제1 세트를 사용하여 훈련되고;
    상기 제1 신경망은 노드들의 제1 세트를 포함하고;
    상기 제1 신경망은 상기 노드들의 제1 세트를 상호 연결하는 연결들의 제1 세트를 포함함 ―;
    상기 제1 신경망에 기초하여 제2 신경망을 생성하도록 구성되고,
    상기 제2 신경망은 노드들의 제2 세트를 상호 연결하는 연결들의 제2 세트를 포함하고, 상기 연결들의 제2 세트는 상기 연결들의 제1 세트의 서브세트를 포함하고;
    상기 제2 신경망은 상기 훈련 데이터의 제1 세트를 사용하지 않고 생성되는, 장치.
KR1020237021798A 2020-11-30 2021-10-28 계층별 분석을 통한 신경망 프루닝 방법 및 시스템 KR20230110355A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/107,046 2020-11-30
US17/107,046 US20220172059A1 (en) 2020-11-30 2020-11-30 Neural network pruning method and system via layerwise analysis
PCT/US2021/057095 WO2022115202A1 (en) 2020-11-30 2021-10-28 Neural network pruning method and system via layerwise analysis

Publications (1)

Publication Number Publication Date
KR20230110355A true KR20230110355A (ko) 2023-07-21

Family

ID=81752611

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237021798A KR20230110355A (ko) 2020-11-30 2021-10-28 계층별 분석을 통한 신경망 프루닝 방법 및 시스템

Country Status (7)

Country Link
US (1) US20220172059A1 (ko)
EP (1) EP4252156A1 (ko)
JP (1) JP2023551865A (ko)
KR (1) KR20230110355A (ko)
CN (1) CN116868205A (ko)
TW (1) TW202223759A (ko)
WO (1) WO2022115202A1 (ko)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160293167A1 (en) * 2013-10-10 2016-10-06 Google Inc. Speaker recognition using neural networks

Also Published As

Publication number Publication date
JP2023551865A (ja) 2023-12-13
US20220172059A1 (en) 2022-06-02
CN116868205A (zh) 2023-10-10
WO2022115202A1 (en) 2022-06-02
TW202223759A (zh) 2022-06-16
EP4252156A1 (en) 2023-10-04

Similar Documents

Publication Publication Date Title
US11508146B2 (en) Convolutional neural network processing method and apparatus
US10096134B2 (en) Data compaction and memory bandwidth reduction for sparse neural networks
US11521039B2 (en) Method and apparatus with neural network performing convolution
KR102344473B1 (ko) 콘볼루셔널 뉴럴 네트워크들에 대한 슈퍼픽셀 방법들
Mahmoud et al. Diffy: A Déjà vu-free differential deep neural network accelerator
EP3340129B1 (en) Artificial neural network class-based pruning
US9886377B2 (en) Pipelined convolutional operations for processing clusters
WO2019152451A1 (en) Improving performance of neural network arrays
EP3528181B1 (en) Processing method of neural network and apparatus using the processing method
US20210182670A1 (en) Method and apparatus with training verification of neural network between different frameworks
JP2023541350A (ja) 表畳み込みおよびアクセラレーション
US20230051237A1 (en) Determining material properties based on machine learning models
EP3690757A1 (en) Method and apparatus with convolution neural network processing
CN116977265A (zh) 缺陷检测模型的训练方法、装置、计算机设备和存储介质
KR20230110355A (ko) 계층별 분석을 통한 신경망 프루닝 방법 및 시스템
US20220180187A1 (en) Method and apparatus for performing deep learning operations
Savchenkov et al. Generalized convolutional neural networks for point cloud data
JP2024502225A (ja) ワークロードが平準化された活性化スパース性を用いた畳込みのための方法およびシステム
CN116457794A (zh) 用于神经网络模型的组平衡式稀疏激活特征图
KR102311659B1 (ko) 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치 및 그 동작 방법
CN116186526B (zh) 一种基于稀疏矩阵向量乘的特征检测的方法、装置及介质
US20230102335A1 (en) Method and apparatus with dynamic convolution
US20240095493A1 (en) Desparsified convolution for sparse tensors
US20240046505A1 (en) Electronic device and method with pose prediction
US20230146493A1 (en) Method and device with neural network model

Legal Events

Date Code Title Description
A201 Request for examination