KR20160143548A - 인공 신경 네트워크를 자동으로 조정하는 방법 및 장치 - Google Patents

인공 신경 네트워크를 자동으로 조정하는 방법 및 장치 Download PDF

Info

Publication number
KR20160143548A
KR20160143548A KR1020160068839A KR20160068839A KR20160143548A KR 20160143548 A KR20160143548 A KR 20160143548A KR 1020160068839 A KR1020160068839 A KR 1020160068839A KR 20160068839 A KR20160068839 A KR 20160068839A KR 20160143548 A KR20160143548 A KR 20160143548A
Authority
KR
South Korea
Prior art keywords
neural network
convolution kernel
convolution
network analyzer
selected portion
Prior art date
Application number
KR1020160068839A
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 KR20160143548A publication Critical patent/KR20160143548A/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/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • G06N3/0454
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Abstract

신경 네트워크를 조정하는 것은 연산 효율을 증가시키기 위한 변경을 위해, 제 1 신경 네트워크의 일부를 선택하고, 프로세서를 사용해서 오프라인 동안 제 1 신경 네트워크의 선택된 일부를 변경함으로써, 제 1 신경 네트워크에 기초하여 제 2 신경 네트워크를 생성한다.

Description

인공 신경 네트워크를 자동으로 조정하는 방법 및 장치{METHOD AND APPARATUS FOR AUTOMATIC TUNING OF ARTIFICIAL NEURAL NETWORKS}
본 개시는 인공 신경 네트워크 및 더 구체적으로는 인공 신경 네트워크의 자동 조정에 관한 것이다.
인공 신경 네트워크(Artificial neural networks) 또는 간단히 "신경 네트워크(neural networks)"는 생물학적 두뇌를 모델로 하는 연산 아키텍처를 의미한다. 뉴런으로 언급되는, 신경 네트워크 내의 노드들은 상호 연결될 수 있고, 입력 데이터를 처리하기 위해 단체로 동작할 수 있다. 신경 네트워크들의 다른 유형들은, CNNs(Convolutional Neural Networks), RNNs(Recurrent Neural Networks), DBNs(Deep Belief Networks), RBM(Restricted Boltzman Machine) 등을 포함할 수 있으나, 이에 제한되지 않는다. 피드포워드 신경 네트워크(feedforward neural network)에서, 신경 네트워크의 뉴런들은 다른 뉴런들에 대한 링크들을 갖는다. 링크들은 신경 네트워크를 통해서, 전진 방향과 같이 오직 한 방향으로만 확장한다.
신경 네트워크는 복잡한 입력 데이터로부터 "특징들(features)"을 추출하는 데 사용될 수 있다. 신경 네트워크는 복수의 층들을 포함할 수 있다. 각 층은 입력 데이터를 수신하고, 층에서 입력 데이터를 처리함으로써 출력 데이터를 생성할 수 있다. 출력 데이터는, 입력 이미지 또는 특징 맵(feature map)을 컨볼루션 커널들(convolution kernels)과 함께 엮음으로써, 신경 네트워크가 생성하는 입력 데이터의 특징 맵일 수 있다. 신경 네트워크의 초기 층들은 이미지와 같은 입력으로부터, 모서리(edge) 및/또는 변화도(gradient)와 같은 낮은 레벨 특징들을 추출하도록 동작할 수 있다. 신경 네트워크의 차후 층들은 눈, 코와 같이 점점 더 복잡한 특징들을 추출할 수 있다.
신경 네트워크를 자동으로 조정하는 방법 및 장치를 제공하는 데 있다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따른, 신경 네트워크를 조정하는 방법은 연산 효율을 증가시키는 변경을 위해, 제 1 신경 네트워크의 일부를 선택하는 단계 및 프로세서를 이용하여, 오프라인에서 상기 제 1 신경 네트워크의 선택된 일부를 변경함으로써, 상기 제 1 신경 네트워크에 기초하여, 제 2 신경 네트워크를 생성하는 단계를 포함할 수 있다.
다른 일 측면에 따라, 신경 네트워크를 조정하는 장치는 프로그램 코드를 저장하는 메모리, 상기 프로그램 코드를 실행하고 동작들을 수행하는 프로세서를 포함하고, 상기 동작들은, 연산 효율을 증가시키는 변경을 위해, 제 1 신경 네트워크의 일부를 선택하고, 오프라인 동안 상기 제 1 신경 네트워크의 선택된 일부를 변경함으로써, 상기 제 1 신경 네트워크에 기초하여, 제 2 신경 네트워크를 생성하는 것을 포함할 수 있다.
또 다른 측면에 따르면, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 비일시적(non-transitory) 기록매체를 제공한다.
상기된 바에 따르면, 신경 네트워크를 조정하여 성능 요건들을 충족하면서 신경 네트워크의 연산 효율이 개선되는 효과를 얻을 수 있다.
도 1은 신경 네트워크의 파라미터들을 자동으로 조정하기 위한 프레임워크의 일 실시예를 설명하기 위한 도면이다.
도 2는 도 1의 신경 네트워크 분석기의 일 실시예를 설명하기 위한 도면이다.
도 3은 일 실시예에 따른, 신경 네트워크를 조정하는 방법을 도시한 흐름도이다.
도 4는 컨볼루션 커넬 교체(convolution kernel substitution)의 일 실시예를 설명하기 위한 도면이다.
도 5는 활성 함수 교체(activation function substitution)의 일 실시예를 설명하기 위한 도면이다.
도 6는 특이값 분해(singular value decomposition)의 일 실시예를 설명하기 위한 도면이다
도 7 및 도 8은 신경 네트워크 층을 가지치기(pruning)하는 일 실시예를 설명하기 위한 도면이다.
도 9는 스케일링(scaling)의 일 실시예를 설명하기 위한 도면이다.
도 10은 신경 네트워크의 컨볼루션 커넬들을 스케일링하는 방법의 일 실시예를 설명하기 위한 흐름도이다.
도 11은 컨볼루션 커넬들의 그룹들을 결정하는 방법의 일 실시예를 설명하기 위한 흐름도이다.
아래에서는 첨부한 도면을 참조하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 개시의 실시예를 상세히 설명한다. 그러나 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 또한, 도면에서 본 개시를 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
본 개시에서 사용되는 용어는, 본 개시에서 언급되는 기능을 고려하여 현재 사용되는 일반적인 용어로 기재되었으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 다양한 다른 용어를 의미할 수 있다. 따라서 본 개시에서 사용되는 용어는 용어의 명칭만으로 해석되어서는 안되며, 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 해석되어야 한다.
본 개시는 인공 신경 네트워크(Artificial Neural Networks, ANNs) 및 구체적으로는 인공 신경 네트워크(이하에서는 "신경 네트워크"로 언급한다.)의 자동 조정에 관한 것이다. 신경 네트워크들은 광 범위의 어플리케이션들을 위해 설계되고 있다. 대상 하드웨어를 위해 최적화된 신경 네트워크를 설계하는 것은 많은 어려움이 있다. 설계 프로세스는 어플리케이션의 깊은 지식과 신경 네트워크를 실행하기 위해 사용되는 하드웨어 아키텍처 및 네트워크 파라미터들에 관한 통찰력을 요구한다. 예를 들어, 층 토폴로지(layer topology), 컨볼루션 커넬 차원들(dimensions), 활성 함수 및 수학 동작들에 요구되는 수치 정확도를 알아내는 수동 프로세스는 비용이 많이 들 수 있다.
본 개시의 신경 네트워크들을 변경 및/또는 최적화하기 위한 방법들 및 장치들은, 요구되는 성능을 달성하기 위해 신경 네트워크 파라미터들을 자동으로 조정하는 것으로 기술된다. 여기서 "성능(performance)"이라는 용어는, 대상 하드웨어에서 대상 어플리케이션이 실행 및/또는 구현될 때 신경 네트워크의 정확도, 신경 네트워크의 작동 시간(runtime), 신경 네트워크의 연산 효율, 처리량(throughput), 및/또는 신경 네트워크의 전력 소비와 같이 신경 네트워크의 동작의 특정 측면들을 설명하기 위해 사용될 수 있다. 신경 네트워크의 동작에 대한 성능 목표들은 하나 이상의 성능 요건들로 표현될 수 있다. 예를 들어, 특정 모바일 하드웨어 코어에서 실행될 운전 보조 장치(Advanced Driver Assistance System, ADAS) 어플리케이션을 위한 신경 네트워크는, 초당 수 프레임(예를 들어, 초당 10, 60 또는 120 프레임)을 실행하고, 2 [W] 이하 전력을 소비하는 어플리케이션이라는 성능 요건들을 가질 수 있다.
일 실시예들은 자동으로 입력 신경 네트워크의 파라미터를 조정하고, 변경된(예를 들어, 최적화된) 신경 네트워크를 출력하는 프레임 워크를 포함한다. 또한, 일 실시예들은 신경 네트워크에서 조정되는 파라미터들을 결정하는 방법을 포함한다. 일 실시예에서, 신경 네트워크를 변경하는 기회들은 식별될 수 있다. 신경 네트워크는 식별된 기회들에 기초하여 변경될 수 있다. 신경 네트워크에 적용될 수 있는 다른 변경들의 예들에는 가지치기, 분해, 정확도 및/또는 수치 형태 변경, 컨볼루션 커넬 교체, 활성 함수 교체, 커넬 융합 및/또는 스케일링이 포함될 수 있으나, 이에 제한되지 않는다. 변경된 신경 네트워크는, 변경된 신경 네트워크가 성능 요건을 충족하였는지 여부를 판단하기 위해 검증될 수 있다.
일 실시예에서, 변경된 신경 네트워크는 재훈련(retrained)될 수 있다. 다른 일 실시예에서, 신경 네트워크를 재훈련하는 것은 생략될 수 있다. 또 다른 일 실시예에서, 변경된 신경 네트워크의 피드백 네트워크 분석 결과는 자동화 도구(automated tool)를 배타적으로 사용하는 것이 아닌, 원 신경 네트워크를 개정하기 위해 생성될 수 있다. 또 다른 일 실시예에서, 피드백 네트워크 분석 결과의 생성은 생략될 수 있다. 또 다른 실시예에서, 신경 네트워크는 반복적으로 변경되거나, 재훈련될 수 있다. 또 다른 일 실시예에서, 신경 네트워크를 반복적으로 변경하거나 및/또는 재훈련하는 것은 생략될 수 있다. 본 개시의 다른 측면들은 이하 도면들을 참조하여 보다 상세하게 설명된다.
도 1은 신경 네트워크의 파라미터들을 자동으로 조정하기 위한 프레임워크(100)의 일 실시예를 설명하기 위한 도면이다. 프레임워크(100)는 신경 네트워크(102)(예를 들어, 제 1 신경 네트워크), 신경 네트워크 분석기(104) 및 신경 네트워크(106)(예를 들어, 제 2 또는 "변경된" 신경 네트워크)를 포함한다. 신경 네트워크 분석기(104)는, 입력으로써 신경 네트워크(102)를 수신 또는 접근하고, 출력으로써 신경 네트워크(106)를 생성한다. 신경 네트워크들(102, 106)은, 통신 채널을 통해서 전자 신호로서 수신되거나 및/또는 기능적인 데이터 구조로서 파일 또는 메모리에 저장될 수 있다. 신경 네트워크(106)는, 신경 네트워크(102)의 변경된 또는 최적화된 버전을 나타낼 수 있다. 일 실시예에서, 신경 네트워크(102)의 파라미터들은, 신경 네트워크 분석기(104)에 의해, 본 개시에 기재된 예시적인 방법들을 사용하여 자동으로 조정될 수 있다. 신경 네트워크 분석기(104)는, 신경 네트워크(106)를 생성하기 위해 신경 네트워크(102)에서 오프라인 프로세스로 동작할 수 있다. 예를 들어, "오프라인" 프로세스는 신경 네트워크를 실행하지 않는 동안, 신경 네트워크를 이용하는 어플리케이션에서 시스템의 한 부분으로서, 서비스, 사용자 또는 클라이언트 장치를 위해 수행되는 것이다. 다른 예를 들어, 오프라인 프로세스는 실시간 환경에서 실행되지 않는 프로세스에 해당할 수 있다.
본 개시에서 사용되는 "신경 네트워크"라는 용어는 신경 네트워크의 프로그램에 따른 명세(programmatic description) 또는 정의를 말한다. 신경 네트워크는 프로그램에 따라서, 파라미터들, 연결 가중치들(connection weights) 또는 신경 네트워크에 포함된 뉴런들의 수 또는 뉴런들간 연결성과 같은 다른 특성들을 정의한다. 일 측면에서, 신경 네트워크는 컴퓨터 판독 가능 프로그램 명령들을 사용하여, 프로그램 코드 및 컴퓨터 판독 가능 저장 매체에 저장된 기능적인 데이터 구조로 체계화된 데이터로 구체화된다. 신경 네트워크는 다수의 층들에서 체계화될 수 있고, 이때 제 1 층의 출력은 다음 층의 입력으로 공급될 수 있다.
일 측면에서, 신경 네트워크(102)는 사전 훈련된다(pre-trained). 예를 들어, 신경 네트워크(102)는 신경 네트워크의 가중치들이 수렴되거나 실질적으로 수렴되는 지점으로 훈련될 수 있다. 구체적으로, 훈련 프로세스는 원하는 입출력 관계와 함께 신경 네트워크를 제공하는, 가중치들의 세트(예를 들어, 컨볼루션 커넬들)를 결정했다. 예를 들어, 학습 프로세스는 입출력 정확도 비용 함수가 최적화되도록 입출력 관계를 변경하기 위해, 신경 네트워크의 가중치들을 반복적으로 조정할 수 있다. 이러한 방식으로, 훈련 프로세스의 목적은 신경 네트워크의 입출력 관계를 변경하는 것이다. 훈련 프로세스 동안, 연산 효율 및/또는 전력 효율은 고려되지 않을 수 있다. 본 개시에서 사용되는 "연산 효율"이라는 용어는 시간 또는 에너지 낭비 없이 신경 네트워크를 실행하는 것의 일부로서 동작을 수행하는 능력을 의미하며, 여기서 동작은 연산(예를 들어, 곱셈, 덧셈 등) 및 메모리 접근을 포함하지만, 이에 제한되지 않는다. 전력 효율은 연산 효율과 독립적으로 고려될 수 있고, 증가된 전력 효율은 증가된 연산 효율로 인한 것일 수 있다.
대조적으로, 본 개시에 기재된 실시예들은 적어도 설정된 성능 요구들에 관해, 훈련된 신경 네트워크의 입출력 관계를 실질적으로 동일하게 유지하면서, 훈련된 신경 네트워크의 연산 효율을 개선 및/또는 최적화하는 것을 촉진한다. 어떤 경우에, 실시예들은 설정된 성능 요구 조건들에 따라, 더 나은 연산 효율을 위해 입출력 정확도를 희생할 수 있다. 예를 들어, 개선된 연산 효율은, 신경 네트워크의 개선되거나 감소된 작동 시간 및/또는 감소된 전력 소비를 야기할 수 있다.
도 2는 도 1의 신경 네트워크 분석기(104)의 일 실시예를 설명하기 위한 도면이다. 도 2와 같이, 신경 네트워크 분석기(104)는 시스템 버스(215) 또는 입출력 시스템과 같은 다른 적절한 회로를 통해 메모리 요소들(210)과 연결된 적어도 하나의 프로세서(205)를 포함한다. 신경 네트워크 분석기(104)는 메모리 요소들(210)에 프로그램 코드를 저장한다. 프로세서(205)는 시스템 버스(215)를 통해 메모리 요소들(210)에서 불러들인 프로그램 코드를 수행한다. 메모리 요소들(210)은 로컬 메모리(220) 및 하나 이상의 대용량 저장 장치들(bulk storage devices)(225)과 같은 하나 이상의 물리적 메모리 장치들을 포함한다. 로컬 메모리(220)는 RAM(Random Access Memory) 또는 프로그램 코드를 실제로 실행하는 동안 일반적으로 사용되는 다른 휘발성 메모리 장치를 의미한다. 대용량 저장 장치들(225)은 HDD(Hard Disk Drive), SSD(Solid State Drive) 또는 다른 비휘발성 메모리 장치로 구현될 수 있다. 또한, 신경 네트워크 분석기(104)는 실행 동안에 대용량 저장 장치들(225)에서 프로그램 코드를 검색하는 횟수를 줄이기 위해, 적어도 일부 프로그램 코드의 임시 저장 공간을 제공하는, 하나 이상의 캐시 메모리들(미도시)을 포함한다.
신경 네트워크 분석기(104)는 키보드(230), 디스플레이 장치(235), 포인팅 장치(240) 및/또는 하나 이상의 네트워크 어댑터(245)와 같은 하나 이상의 입출력 장치와 연결될 수 있다. 신경 네트워크 분석기(104)는 예시에 기재되지 않은 하나 이상의 추가적인 입출력 장치를 포함할 수 있다. 본 개시에 기재된 입출력 장치들은 신경 네트워크 분석기(104)와 직접 또는 중개 입출력 제어기를 통해서 연결될 수 있다. 어떤 경우에, 터치 디스플레이 장치(예를 들어, 터치 스크린)가 사용되는 경우와 같이, 하나 이상의 입출력 장치들은 서로 결합될 수 있다. 이러한 경우, 디스플레이 장치(235)는 키보드(230) 및/또는 포인팅 장치(240)를 구현할 수 있다.
네트워크 어댑터(245)는 다른 장치들과 유선 및/또는 무선 통신 링크들을 개설하기 위해 구성된 통신 회로이다. 통신 링크들은 네트워크를 통해서 개설되거나, P2P 통신(peer-to-peer communication) 링크들로 개설될 수 있다. 따라서, 네트워크 어댑터(245)는 신경 네트워크 분석기(104)를 다른 시스템들, 컴퓨터 시스템들, 원격 프린터들 및/또는 원격 저장 장치들과 연결시킬 수 있다. 예를 들어, 네트워크 어댑터(245)는 모뎀들, 케이블 모뎀들, 이더넷 카드들, 버스 어댑터들, 커넥터들, 무선 송수신기들, 단거리 및/또는 장거리 무선 송수신기들(예를 들어, 셀룰러 송수신기들, 802.11x(Wi-Fi), 호환 송수신기들(compatible transceivers), 블루투스 호환 트랜시버 등)을 포함하지만, 이에 제한되지 않는다.
도 2와 같이, 메모리 요소들(210)은 운영 체제(250) 및 하나 이상의 어플리케이션들(255)을 저장할 수 있다. 일 측면에서, 운영 체제(250)와 어플리케이션들(255)은 실행 가능한 프로그램 코드의 형태로 구현되고, 신경 네트워크 분석기(104)에 의해 실행되며, 더 구체적으로 프로세서(205)에 의해 본 개시에 기재된 다양한 동작들을 수행한다. 예를 들어, 운영 체제(250)와 어플리케이션들(255)은 신경 네트워크 분석기(104)의 통합된 부분으로 고려될 수 있다. 신경 네트워크 분석기(104)에 의해 사용 또는 생성되거나, 및/또는 신경 네트워크(102, 106)에서 동작되는 운영 체제(250), 어플리케이션들(255) 및 데이터 아이템들은, 신경 네트워크 분석기(104)의 일부로 사용되거나, 구현 및/또는 실행을 위한 신경 네트워크 엔진 및/또는 다른 프로세서에 제공될 때, 기능성(functionality)을 전달하는 기능적인 데이터 구조들이다. 예를 들어, 어플리케이션들(255)은 본 개시에 기재된 하나 이상의 방법(300, 1000 또는 1100) 및/ 또는 도 4 내지 도 9에 기재된 하나 이상의 동작을 수행하기 위한 프로세서(205)를 야기하는 프로그램 코드를 포함할 수 있다. 이러한 방식에서, 프로세서(205)는 하나 이상의 어플리케이션들에 의해 정의된 기능들을 수행하는 특수 목적의 프로세서이다.
구현되는 장치의 특정 유형에 따라, 신경 네트워크(104)는 도시된 구성 요소보다 적은 구성 요소들 또는 도 2에 도시되지 않은 추가적인 구성 요소들을 포함할 수 있다. 또한, 포함된 네트워크 어댑터의 유형들이 있는 것처럼, 특정 운영 체제 및/또는 포함된 어플리케이션(들)은 장치 유형에 따라 달라질 수 있다. 또한, 하나 이상의 예시적인 구성 요소들은 다른 구성 요소에 포함될 수 있고, 그렇지 않으면 다른 구성 요소의 일부를 형성할 수 있다. 예를 들어, 프로세서는 적어도 여러 메모리를 포함 할 수 있다.
일 실시예에서, 신경 네트워크 분석기(104)는 통신 링크(270)를 통해서 플랫폼(260)과 연결될 수 있다. 예를 들어, 신경 네트워크 분석기(104)는 네트워크 어댑터(245)를 통해서 플랫폼(260)과 연결될 수 있다. 다른 예를 들어, 신경 네트워크 분석기(104)는 USB 인터페이스 또는 신경 네트워크 분석기(104)와 플랫폼(260)을 연결하는 데 사용될 수 있는 다른 통신 포트와 같은, 하나 이상의 입출력 장치들을 포함할 수 있다.
플랫폼(260)은 회로 보드 또는 카드일 수 있고, 플랫폼(260)에 연결된 신경 네트워크 가속기(neural network accelerator)(265)와 같은 대상 하드웨어(target hardware)를 가질 수 있다. 일 실시예에서, 신경 네트워크 가속기(265)는 집적회로(integrated circuit, IC) 또는 상호 연결된 복수의 IC칩으로 구현될 수 있다. 예를 들어, 신경 네트워크 가속기(265)는 프로그래밍이 가능한 반도체(field programmable gate arrays, FPGAs), 하나 이상의 어플리케이션 전용 통합 회로(application-specific ICs, ASICs), 프로세서 등과 같은 하나 이상의 프로그래밍이 가능한 집적회로들로 구현될 수 있다. 신경 네트워크 가속기(265)는 신경 네트워크 가속기(265)에 다운로드되거나, 그렇지 않으면 거기에 제공된 신경 네트워크를 실행하거나, 구현하기 위해 구성된다.
신경 네트워크 분석기(104)는 제 2 신경 네트워크(예를 들어, 제 1 신경 네트워크의 변경된 버전)를 생성하기 위해 제 1 신경 네트워크에 명세된 동작들을 수행하도록 구성될 수 있다. 또한, 신경 네트워크 분석기(104)는, 신경 네트워크 분석기(104)에서 구현 또는 실행을 위해, 변경된 신경 네트워크의 정의를 제 2 신경 네트워크에 전달할 수 있다.
일 실시예에서, 변경된 신경 네트워크는 신경 네트워크 분석기(104)에서 작동하기 위해 최적화될 수 있다. 예를 들어, 제 1 신경 네트워크의 변경들은 신경 네트워크 분석기(104)의 구조에 국한될 수 있다. 다른 실시예에서, 제 1 신경 네트워크의 변경들은 일반적일 수 있고, 신경 네트워크 분석기(104)의 구조에 국한되지 않을 수 있다.
도 3은 일 실시예에 따른, 신경 네트워크를 조정하는 방법(300)을 도시한 흐름도이다. 방법(300)은 도 1 및 도 2의 신경 네트워크 분석기(104)에 의해 구현될 수 있다. 도 1 및 도 2를 참조하면, 신경 네트워크 분석기(104)는 신경 네트워크(102)에 접근하거나, 신경 네트워크(102)를 수신할 수 있다. 오프라인 프로세스의 일부로, 신경 네트워크 분석기(104)는 출력으로 신경 네트워크(106)를 생성할 수 있다.
단계 305에서, 신경 네트워크 분석기는 입력으로 제 1 신경 네트워크를 수신할 수 있다. 일 측면에서, 신경 네트워크 분석기는 사용자 요청에 응답하여 제 1 신경 네트워크에 접근하거나, 제 1 신경 네트워크를 받아들일 수 있다.
단계 310에서, 신경 네트워크 분석기는 하나 이상의 성능 요건들을 나타내는 데이터를 결정한다. 예를 들어, 신경 네트워크 분석기는 구성 파일(configuration file)로부터 성능 요건들을 획득할 수 있다. 다른 예를 들면, 신경 네트워크 분석기는 사용자로부터 하나 이상의 입력들(예를 들어, 사용자 인터페이스를 통해서)로 성능 요건들을 수신할 수 있다. 성능 요건들은 변경된 신경 네트워크의 허용 가능하거나 예상되는 목표들을 특정한다. 예를 들어, 성능 요건들은 정확도, 작동 시간, 전력 소비, 및/또는 이들의 조합에 관한, 변경된 신경 네트워크의 하나 이상의 필요한 목표들을 특정할 수 있다. 성능 요건들은, 처리를 위해 단계 305에서 수신된 제 1 신경 네트워크와 비교하여 변경된 신경 네트워크의 최소 및/또는 최대 임계값 및/또는 정확도의 수용 가능한 증가 및/또는 감소 정도, 작동 시간, 및/또는 소비 전력에 관한 목표들을 특정할 수 있다.
데이터는 하나 이상의 성능 요건들의 다른 유형들을 특정할 수 있다. 일 실시예에서, 데이터는 수용 가능한 낮은 정확도 요건이 상쇄될 수 있는, 소비 전력 요건 및/또는 작동 시간 요건을 특정할 수 있다. 다른 일 실시예에서, 데이터는 성능 요건들 중에서 우선 순위를 나타낼 수 있다. 예를 들어, 하나 이상의 성능 요건들은 "hard"로 특정될 수 있다. "hard" 성능 요건은 변경된 신경 네트워크를 평가할 때 반드시 충족해야 하는 요건이다. 또한, 하나 이상의 성능 요건들은 "soft"일 수 있다. " soft" 성능 요건은 충족되지 않거나, 특정된 soft 성능 요건의 소정의 허용 범위 이내에서 충족될 수 있거나, hard 성능 요건을 충족하면서 달성할 수 있는 정도로 감소(예를 들어, 최소화)될 수 있는 요건이다. 따라서, 신경 네트워크 분석기는 다른 성능 요건들을 최소화하면서, 선택된 성능 요건들의 하나 이상의 임계값들을 충족하도록, 입력 신경 네트워크를 변경할 수 있다.
또 다른 측면에서, 단계 310의 일부로서, 데이터는 수행되기 위한 변경들에서, 적극성의 정도(a level of aggressiveness)을 특정할 수 있다. 일 실시예에서, 데이터는 신경 네트워크 분석기가 변경들을 적용함에 있어 적극적인지, 중간인지 또는 소극적인지 여부를 특정할 수 있다. 도 3에서 신경 네트워크 분석기의 적극 설정(aggressive setting)은, 제 1 신경 네트워크에 비해 변경된 신경 네트워크의 성능의 다른 측면이 개선되기 위해, 제 1 신경 네트워크에 비해 변경된 신경 네트워크의 정확도의 저하를 허용할 수 있다. 예를 들어, 동작 시간, 처리량, 및/또는 전력 효율이 최소 개선(minimum improvement)된 경우, 적극 설정은 변경된 신경 네트워크의 정확도의 저하를 허용할 수 있다. 또한, 제 1 신경 네트워크에 비해 변경된 신경 네트워크의 성능의 하나 이상의 다른 측면들이 개선된 경우, 중간 설정(medium setting)은 제 1 신경 네트워크에 비해 변경된 신경 네트워크의 정확도 저하를 허용할 수 있다. 정확도 저하의 정도 및 성능의 다른 측면들의 개선 정도는 적극 설정시보다 낮을 수 있다. 소극 설정(conservative setting)은 제 1 신경 네트워크에 비해 변경된 신경 네트워크의 성능의 하나 이상의 다른 측면들에서 개선되는 동안, 제 1 신경 네트워크의 성능에 비해 변경된 신경 네트워크의 정확도가 감소되지 않을 것을 필요로 할 수 있다. 소극 설정을 구현하기 위해, 신경 네트워크 분석기에 의해 적용될 수 있는 처리 기술의 예는 커넬 융합(kernel fusion)이 있다. 일 실시예에서, 커넬 융합은 불필요한 메모리 접근을 제거하기 위해, 신경 네트워크 분석기가 두 커넬들(컨볼루션 커넬과 활성 커넬)을 함께 결합하거나 융합하는 처리 기술을 의미한다.
또한, 적극성의 정도는 변경 유형별로 특정될 수 있음을 알아야 한다. 예를 들어, 데이터는 컨볼루션 커넬에서 가중치를 변경하기 위한 임계값(예를 들어, 적극 설정에서는 적용될 수 없고, 중간 또는 소극 설정을 사용하여 적용될 수 있는 스케일링과 같은 변경들이 수행되는 동안, 가중치 영점 맞추기(zeroing weights)는 적극 설정에서 적용될 수 있다.)을 특정할 수 있다.
단계 315에서, 신경 네트워크 분석기는 현재의 양식에서, 제 1 신경 네트워크 성능을 추정할 수 있다. 일 실시예에서, 신경 네트워크 분석기는 수신된 프로그램의 명세(programmatic description)와 신경 네트워크를 실행하기 위해 사용되는 대상 하드웨어에 기초하여, 신경 네트워크의 전력 소비, 신경 네트워크의 작동 시간과 같은 메트릭들(metrics)을 추정할 수 있다. 예를 들어, 신경 네트워크 분석기는 신경 네트워크의 각 뉴런의 전체 실행을 가정한 최악 조건 해석(worst-case analysis)을 사용할 수 있다.
일 실시예에서, 신경 네트워크 분석기는 단계 315에서 추정된 성능이 단계 305(미도시)에서 결정된 요건들을 만족하는지 여부를 결정한다. 만약, 요건들을 만족하면 방법(300)은 종료된다.
단계 320에서, 신경 네트워크 분석기는 변경을 위한 제 1 신경 네트워크의 일부를 식별한다. 신경 네트워크 분석기는 제 1 신경 네트워크를 분석할 수 있고 변경하는 기회들을 식별할 수 있다. 예를 들어, 신경 네트워크 분석기는 제 1 신경 네트워크를 분석할 수 있고, 성능을 개선시키기 위해 변경하는 제 1 신경 네트워크의 일부를 식별할 수 있다. 제 1 신경 네트워크를 분석하는 데 있어, 신경 네트워크 분석기는 분석 및/또는 변경들의 하나 이상의 다른 유형들을 사용할 수 있다. 제 1 신경 네트워크에 적용될 수 있는 다른 변경 유형들의 예는 가치지기, 분해, 정밀도 및/또는 수치 형태 변형, 컨볼루션 커넬 교체, 활성 함수 교체 및/또는 스케일링을 포함하지만, 이에 제한되지 않는다. 변경을 위한 제 1 신경 네트워크의 일부들을 식별하는 데 사용되는 분석의 다양한 유형들 및 단계 320 및/또는 단계 325를 수행하는 동안 신경 네트워크 분석기에 의해 구현될 수 있는 변경들의 유형들은 도 4 내지 도 11에서 상세하게 기술된다.
일 실시예에서, 신경 네트워크 분석기는 하나의 변경 유형을 선택할 수 있고, 선택된 변경 유형을 사용하여, 변경될 수 있는 제 1 신경 네트워크의 일부(들)을 위한, 제 1 신경 네트워크를 분석할 수 있다. 이에 관하여, 방법(300)은 신경 네트워크 분석기가 다른 반복들에서 다른 변경 유형들을 사용하여 변경되기 위한 일부를 위해 제 1 신경 네트워크를 분석할 때, 반복적으로 수행될 수 있다. 예를 들어, 제 1 반복에서, 신경 네트워크 분석기는 가지치기를 수행하고, 선택된 일부에 가지치기를 적용하기 위해 제 1 신경 네트워크를 분석할 수 있고, 제 2 반복에서, 신경 네트워크 분석기는 컨볼루션 커넬 교체를 수행하고 선택된 일부에 교체된 컨볼루션 커넬을 적용하기 위해 (제 2) 신경 네트워크를 분석할 수 있고, 스케일링 등에 관해서도 반복해서 수행될 수 있다.
일 실시예에서, 신경 네트워크 분석기는 변경 유형들 및 변경 유형들을 적용하기 위한 규칙들을 결정한다. 예를 들어, 구성 데이터 파일(configuration data file)은 방법(300)이 수행되는 동안 적용되기 위한 변경 명령을 나타낼 수 있다.
단계 325에서, 신경 네트워크 분석기는 단계 305에서 수신된 제 1 신경 네트워크에 기초하여, 제 2 신경 네트워크를 생성할 수 있다. 일 실시예에서, 신경 네트워크 분석기는 제 1 신경 네트워크의 하나 이상의 부분 또는 제 1 신경 네트워크 전체를 변경함으로써, 변경된 신경 네트워크를 생성한다. 예를 들어, 신경 네트워크 분석기는 단계 320에서 식별된 제 1 신경 네트워크의 일부를 변경할 수 있다. 신경 네트워크 분석기는 제 2 신경 네트워크를 발생시키는 단계 320에서 식별된, 제 1 신경 네트워크의 일부에, 선택된 변경 유형을 적용할 수 있다. 논의된 바와 같이, 제 2 신경 네트워크는 출력이고, 제 1 신경 네트워크의 변경된 버전으로 간주될 수 있다.
단계 330에서, 신경 네트워크 분석기는 제 2 신경 네트워크의 성능을 검증할 수 있다. 신경 네트워크 분석기는 성능의 다양한 다른 측면들 중 하나를 검증할 수 있다. 예를 들어, 신경 네트워크 분석기는 특정될 수 있는 성능 요건들을 모두 검증할 수 있다. 일 실시예에서, 신경 네트워크 분석기는 검증 테스트 세트들을 앞으로 전달함으로써(forward propagating validation test sets), 검증을 수행한다. 신경 네트워크 분석기는 자동으로 검증을 수행하도록 구성될 수 있다.
단계 335에서, 신경 네트워크 분석기는 제 2 신경 네트워크의 성능이 수용 가능한지 여부를 결정할 수 있다. 일 실시예에서, 신경 네트워크 분석기는 제 2 신경 네트워크의 성능과 제 1 신경 네트워크의 성능을 비교할 수 있다. 예를 들어, 신경 네트워크 분석기는 자동으로 동일한 검증 테스트 세트를 제 1 신경 네트워크와 제 2 신경 네트워크에서 작동시킬 수 있다. 신경 네트워크 분석기는 두 신경 네트워크간 차이를 계산하기 위해, 예측값, 전력 소비 및/또는 작동 시간과 같은, 본 개시에 기술된 메트릭들 중 하나를 비교할 수 있다. 만약, 소정의 임계값(예를 들어, 하나 이상의 성능 요건들에 의해 특정된 임계값)보다 차이가 큰 경우, 변경된 신경 네트워크의 성능은 허용되지 않는다.
방법(300)을 반복할 때, 신경 네트워크 분석기는 현재 변경의 이전에 존재하던 신경 네트워크(예를 들어, 방법(300)의 바로 직전의 반복으로부터 변경된 신경 네트워크)의 성능과 변경된 신경 네트워크의 성능을 비교할 수 있다. 신경 네트워크 분석기는 제 2 신경 네트워크의 성능이 타협될 수 없을 정도이거나, 허용할 수 있는 정도(예를 들어, 특정된 성능 요건들을 충족하는지 여부)보다 더 많이 감소된 것임을 확실하게 하기 위한 비교를 수행할 수 있다.
다른 일 실시예에서, 신경 네트워크 분석기는 하나 이상의 메트릭들의 개선 정도가 충분한지 여부를 결정할 수 있다. 변경된 신경 네트워크의 성능이 개선되지 않거나 소정의 양만큼 개선되지 않은 경우, 신경 네트워크 분석기는 변경된 신경 네트워크의 성능이 허용되지 않을 정도인 것으로 결정할 수 있다.
만약, 변경된 신경 네트워크의 성능이 허용되지 않을 경우, 방법(300)은 단계 340을 진행할 수 있다. 만약, 변경된 신경 네트워크의 성능이 허용 가능한 경우, 방법(300)은 단계 360을 진행할 수 있다.
단계 340을 진행할 때, 신경 네트워크 분석기는 제 2 신경 네트워크를 재훈련할 수 있다. 일 측면에서, 신경 네트워크 분석기는 사용자가 지정한 설정에 기초하여, 제 2 신경 네트워크를 재훈련하거나, 재훈련하지 않을 수 있다. 다른 일 측면에서, 신경 네트워크 분석기는 성능 메트릭을 충족하지 못하는 것과 같은 재훈련 조건을 감지하는 것에 응답하여, 제 2 신경 네트워크를 재훈련할 수 있다. 단계 345에서, 신경 네트워크 분석기는 변경된 신경 네트워크의 성능을 검증할 수 있다. 단계 350에서, 신경 네트워크 분석기는 변경된 신경 네트워크의 성능이 허용 가능한지 여부를 결정할 수 있다. 만약, 허용 가능하다면, 신경 네트워크의 변경은 유지될 수 있고, 방법(300)은 단계 360을 진행할 수 있다. 만약 그렇지 않으면, 방법(300)은 신경 네트워크 분석기가 단계 325에서 구현된 변경을 되돌리도록 단계 355를 진행할 수 있다.
단계 360에서, 신경 네트워크 분석기는 또 다른 변경 유형이 적용될 수 있는지 여부를 결정할 수 있다. 만약, 또 다른 변경 유형이 적용될 수 있다면, 방법(300)은 변경을 위한 신경 네트워크의 다른 부분을 식별하기 위해, 단계 320으로 되돌릴 수 있다. 이때 차후 변경은 이전 변경을 기반으로 계속될 수 있음은 이해되어야 한다. 예를 들어, 방법(300)을 통한 후속 반복에서, 차후 변경은, 후속 반복에서 구현된 변경이 이전 반복 동안 생성된 신경 네트워크에 적용될 수 있기 위해, 가장 최신 상태의 신경 네트워크에 적용될 수 있다.
다른 측면에서, 방법(300)은 하나 이상의 후속 반복들에서 동일한 변경 유형을 적용하기 위해 반복적으로 수행될 수 있다. 예를 들어, 신경 네트워크 분석기는 주어진 반복에서 신경 네트워크가 소정의 양보다 더 이상 변경되지 않도록 구성될 수 있다. 이러한 경우, 신경 네트워크 분석기는 신경 네트워크에 주어진 변경 유형(예를 들어, 컨볼루션 커넬 교체)을 적용하기 위해 방법(300)을 한번 이상 반복할 수 있다. 예를 들어, 제 1 반복 동안, 신경 네트워크 분석기는 교체를 위한 컨볼루션 커넬의 제 1 서브 세트를 식별할 수 있고, 후속 반복 동안, 교체를 위한 컨볼루션 커넬의 제 2 및 다른 세트를 식별할 수 있다. 후속 반복 동안에, 다른 분석 유형들이 적용될 수 있다.
도 3은 단지 예시 목적으로 제공되며, 본 개시는 기재된 순서에 제한되지 않는다. 다른 구현 예에서, 변경의 하나 이상의 유형들은 단일 반복으로 적용될 수 있다.
또한, 방법(300)의 단계들에 의해 표현되는 하나 이상의 동작들은 선택될 수 있고, 생략될 수 있다. 예를 들어, 단계 315, 330, 335, 340, 345, 350 및 355 중 하나 이상 또는 전체는 신경 네트워크 분석기에 의해 수행되거나, 수행되지 않을 수 있다. 예를 들어, 방법(300)은 단계 325를 수행하고, 단계 335 내지 355를 생략하고 단계 360을 바로 진행할 수 있다. 다른 예를 들어, 신경 네트워크 분석기가 재훈련을 수행하지 않을 때, 방법(300)은 단계 330을 수행하고, 단계 330 내지 345를 생략하고 단계 350을 바로 진행할 수 있다. 단계 315, 330, 335, 340, 345, 350 및 355의 다양한 조합들은 검증, 재훈련, 변경 되돌림(reversing modifications) 등과 같은 특징들을 구현하기 위해 방법(300)에 포함될 수 있음은 이해되어야 한다.
다음 단락들에서, 다른 변경 유형들은 신경 네트워크 분석기가 단계 320 및/또는 325를 수행할 때, 신경 네트워크에 적용할 수 있는 것이 명세된다. 하나의 변경 유형의 예는 컨볼루션 커넬 교체이다. 심층 컨볼루션 신경 네트워크들(Deep Convolutional Neural Networks, DCNNs)은 컨볼루션 커넬들의 크기가 다른 다수의 컨볼루션 층들을 가질 수 있다. 각 컨볼루션 커넬은 입력 특징 맵들(input feature maps)에 이웃하는 데이터에 적용되고, 신경 네트워크 실행을 위한 연산 시간의 상당한 양을 소비할 수 있다(예를 들어, 80% 내지 90%). 이러한 컨볼루션 커넬들은 최적화를 위한 후보들로서 선택될 수 있다.
본 개시에 기재된, "컨볼루션 커넬 교체(convolution kernel substitution)"란 용어는 신경 네트워크의 커넬을 적어도 하나의 값(예를 들어, 가중치)에 의해 교체된, 컨볼루션 커넬과 다른 교체 컨볼루션 커넬로 교체하는 것을 의미한다. 교체 컨볼루션 커넬(replacement convolution kernel)은 선택된 컨볼루션 커넬 또는 선택된 컨볼루션 커넬의 근사치에 해당될 수 있다. 교체 컨볼루션 커넬은 적은 연산을 이용하거나 및/또는 선택된 컨볼루션 커넬보다 적은 메모리를 소비한다. 일 측면에서, 컨볼루션 커넬 교체는 신경 네트워크의 일부의 하나 이상의 가중치들을 조정하는 변경의 일례일 수 있다.
신경 네트워크 분석기는 컨볼루션 커넬 교체를 위한 후보들인 하나 이상의 컨볼루션 커넬들을 식별하기 위해, 신경 네트워크 층들을 탐색할 수 있다. 예를 들어, 교체 컨볼루션 커넬은 교체를 위해 선택된 컨볼루션 커넬의 변경된 버전일 수 있다. 신경 네트워크 분석기는 선택된 컨볼루션 커넬을 평가할 수 있고, 선택된 컨볼루션 커넬의 가중치들이 임계값보다 작을 때, 가중치들을 영(제로)으로 변경한다. 이러한 경우, 신경 네트워크 분석기는, 제 1 신경 네트워크와 비교하여 변경된 신경 네트워크를 실행하기 위해 필요한 다수의 연산을 감소시킴으로써, 선택된 컨볼루션 커넬보다 더 많은 영점 가중치들을 포함하는 교체 컨볼루션 커넬을 생성한다.
도 4는 컨볼루션 커넬 교체의 일 실시예를 설명하기 위한 도면이다. 도 4는 다수의 가중치들을 갖는 콘볼루션 커넬(402)의 일례를 나타낸다. 신경 네트워크 분석기는 컨볼루션 커넬(402)을 교체 컨볼루션 커넬(404)로 교체할 수 있다. 그러므로, 교체 컨볼루션 커넬은 교체되는 컨볼루션 커넬의 가중치들과 다른 하나 이상의 가중치들을 갖는다. 도 4에서, 컨볼루션 커넬(402)의 하단 행 중간에 있는 가중치 0.07은 교체 컨볼루션 커넬(404)에서 0 으로 변경된다.
도 4는 임계값이 초과하지 않는 가중치들이 영점으로 설정되도록 임계값이 특정될 수 있는 일례를 나타낸다. 도 4에서, 임계값은 0.1로 설정될 수 있다. 만약 가중치가 임계값 0.1을 초과하지 않는 경우, 신경 네트워크 분석기는 컨볼루션 커넬 교체를 위해 선택된 컨볼루션 커넬의 모든 가중치를 영(제로)으로 설정할 수 있다. 신경 네트워크 분석기는 컨볼루션 커넬 교체를 하나 이상의 컨볼루션 커넬들, 하나 이상의 특정 층들에 있는 컨볼루션 커넬들, 모든 컨볼루션 커넬들에 적용하거나, 다른 선택 기준을 적용할 수 있다. 언급된 바와 같이, 임계값은 사용자의 입력 또는 구성 파일로부터 획득된 데이터에 따라 설정될 수 있다. 이에 관하여, 컨볼루션 커넬 교체를 위해 가중치들을 영(제로)으로 설정하는 것에 있어서, 신경 네트워크 분석기의 적극성은 임계값의 조정을 통해 조절될 수 있다.
또 다른 변경의 일례는 활성 함수 교체이다. 도 5는 활성 함수 교체의 일 실시예를 설명하기 위한 도면이다. 신경 네트워크 분석기는 교체를 위한 후보가 되는 뉴런들의 하나 이상의 활성 함수들을 결정하기 위해, 신경 네트워크를 탐색할 수 있다. 신경 네트워크 분석기는 신경 네트워크의 선택된 활성 함수를 신경 네트워크의 성능의 하나 이상의 측면들을 개선하는, 제 2 또는 다른 활성 함수로 교체할 수 있다. 도 5를 참조하면, 신경 네트워크 분석기는 뉴런(502)의 제 1 활성 함수를, 뉴런(504)으로 도시된 뉴런(502)의 변경된 버전을 야기하는 제 2 활성 함수로 교체한다.
설명을 위해, 제 1 신경 네트워크가 정류된 선형 유닛(Rectified Linear Unit, ReLU) 활성 함수를 사용하는 예를 고려한다. 훈련 동안, 정류된 선형 유닛은 단순한 연산과 빠른 확률 기울기 하강(Stochastic Gradient Descent, SGD)) 수렴을 제공한다. 그러나, 정류된 선형 유닛은 가장 최적의 활성 함수가 아닐 수 있다. 일 실시예에서, 신경 네트워크 분석기는 신경 네트워크 내에서 정류된 선형 유닛 활성 함수의 인스턴스들(instances)을 식별할 수 있고, 변경된 신경 네트워크를 생성함으로써 정류된 선형 유닛 활성 함수 대신, 매개 변수화된 정류된 선형 유닛(Parameterized ReLU, PReLU) 활성 함수로 교체할 수 있다.
또 다른 변경의 일례는 분해(decomposition)이다. 신경 네트워크 분석기는 저밀도 분해(sparse decomposition), 특이값 분해(singular value decomposition)와 같은 동작들을 수행할 수 있다. 신경 네트워크 분석기는 선택된 컨볼루션 커넬을 다수의 분리된 행렬 곱셈 동작들로 분해할 수 있다. 분해 후, 다수의 행렬 곱셈 동작들의 수는, 분해 전 컨볼루션 커넬을 구현하기 위해 필요한 곱셈-누산(multiply-accumulate, MAC) 동작들의 전체 수보다 적다. 분해는, 특정된 허용 오차 이내에서, 원래의 컨볼루션을 정확한 복제하거나, 원래의 컨볼루션에 근접하기 위해 수행될 수 있다. 또 다른 일례에서, 신경 네트워크 분석기는 요구되는 동작들의 수를 줄이기 위해, 특이값 분해를 이용하여 낮은 랭크 행렬 근사치(low rank matrix approximation)를 적용할 수 있다. 일 측면에서, 분해는 신경 네트워크 일부의 하나 이상의 가중치들을 조정하는 변경의 일례일 수 있다.
도 6는 신경 네트워크 분석기에 의해 수행되는 특이값 분해의 일례를 설명하기 위한 도면이다. 도 6에서, 컨볼루션 커넬(K)은 RR T와 거의 동일하고, 여기서 R은 n x r 행렬이고, r < n 이다. 컨볼루션 커넬(K)은 제 2 신경 네트워크에서 수행되고, 더 적은 곱셈-누산 동작들을 야기하는 두 행렬들(R)로 분해된다.
또 다른 변경의 일례는 커넬 융합(kernel fusion)이다. 일 실시예에서, 신경 네트워크 분석기는 풀링 층(pooling layer) 또는 활성 층 이전의 컨볼루션 층을 식별할 수 있다. 컨볼루션 층 및 후속 층을 식별하는 것에 응답하여, 신경 네트워크 분석기는 컨볼루션 층과 후속 층(예를 들어, 풀링 층 또는 활성 층 중 한 층)을 하나의 컨볼루션 커넬로 결합할 수 있다. 하나의 컨볼루션 커넬로 층들을 결합하는 것은, 새로 결합된 층들을 통해 데이터를 처리하기 위해 요구되는 메모리 접근의 수를 감소시킨다. 연산 효율을 개선하고, 전력 소비를 감소시킴으로써 신경 네트워크 실행 시스템에 의해 수행되는 메모리 접근의 수를 줄이면서, 융합된 컨벌루션 커넬에 의해 정확한 연산이 유지될 때, 커넬 융합은 보수적인 최적화의 일례가 된다.
또 다른 변경의 일례는 가지치기(pruning)이다. 신경 네트워크 분석기는 가지치기될 수 있는 신경 네트워크의 일부를 결정하기 위해, 신경 네트워크를 탐색할 수 있다. 예를 들어, 신경 네트워크 분석기는, 신경 네트워크의 정확도를 실질적으로 손상시키지 않는 신경 네트워크 파라미터들의 부분들 또는 층들을, 제거하거나 감소시킴으로써 신경 네트워크를 가지치기할 수 있다. 신경 네트워크 분석기는 다수의 방식들로 가지치기할 수 있다.
일 실시예에서, 신경 네트워크 분석기는 신경 네트워크의 출력에 실질적으로 영향을 주지 않는 신경 네트워크 층을 가지치기할 수 있다. 신경 네트워크 분석기는 층에 의해 생성된 출력 특징 맵(out feature map)에 실질적으로 영향을 주지 않는, 층의 하나 이상의 입력 특징 맵들을 가지치기(제거)할 수 있다.
일 실시예에서, 신경 네트워크 분석기는 컨볼루션 커넬 내의 모든 구성 요소들(예를 들어, 가중치들)이 특정된 임계값보다 작은 값을 갖는 컨볼루션 커넬을 검색할 수 있다. 모든 구성 요소들이 임계값보다 작은 값을 갖는 것으로 식별된 모든 컨벌루션 커넬은 제거될 수 있다(예를 들어, 완전히 영(제로)에 맞춰지거나 그렇지 않으면 무시될 수 있다). 일반적으로, 영(제로)에 맞춰지거나, 무시되거나 제거된 컨벌루션 커넬들은 생성된 출력 특징 맵들에 있더라도 극히 적은 영향이 있기 때문에, 신경 네트워크 분석기에 의해 결정될 수 있다.
예를 들어, 신경 네트워크 분석기는 가중치들이 작을 때(예를 들어, 특정된 임계값보다 작을 때), 신경 네트워크 층을 감지하도록 구성될 수 있다. 임계값은 사용자 입력 등을 통해, 구성 파일로부터 획득된 데이터에 의해 특정될 수 있다. 예를 들어, 감지된 층은 식별 층(identity layer)일 수 있다. 어떤 경우에는, 신경 네트워크 분석기는 감지된 층을 가지치기(예를 들어, 신경 네트워크에서 제거)하기 위한 후보로서 선택할 수 있다.
일 실시예에서, 가지치기는 신경 네트워크의 하나 이상의 수치값들의 수치 형태의 정밀도를 저하시키는 것을 포함할 수 있다. 예를 들어, 신경 네트워크 분석기는 가중치들을 위해 사용된 수치 형태의 정밀도가 감소될 수 있는지 여부를 결정하기 위해, 신경 네트워크의 다수의 층들에서 하나 이상의 가중치를 분석할 수 있다. 사용된 수치 형태들의 정밀도가 감소됨으로써, 낮은 정밀도 연산 하드웨어(lower precision arithmetic hardware)가 차례대로 사용될 수 있다. 낮은 정밀도 연산 하드웨어는 높은 정밀도 연산 하드웨어보다 전력 효율이 좋고, 조밀하게 내장될 수 있다. 설명을 위해, 파라미터들의 정밀도와 범위를 표시하기 위해 필요한 최소 수의 비트들을 사용하는 신경 네트워크는, 필요한 비트보다 더 많은 비트를 사용하는 신경 네트워크보다 높은 성능(예를 들어, 빠른 작동 시간 및/또는 낮은 소비 전력)을 달성할 수 있다.
이전 수치 형태보다 더 효율적인, 가중치를 위한 다른 수치 형식의 교체를 통해 정밀도를 감소시킴으로써, 신경 네트워크 분석기는 가중치를 위해 필요한 저장 용량을 감소시킬 수 있다. 일 실시예에서, 신경 네트워크 분석기는 훈련된 가중치들을 분석한다. 다수의 경우에서, 신경 네트워크 훈련은 CPU 및/또는 GPUs를 레버리징(leveraging)하는 대규모 서버 클러스터를 사용하여 수행된다. CPU 및/또는 GPUs는 32 비트 또는 16 비트 부동 소수점 연산을 수행하도록 설계될 수 있다. 이와 같이, 훈련된 신경 네트워크 파라미터들은 32 비트 또는 16 비트 부동 소수점 형식으로 저장될 수 있다. 신경 네트워크 분석기는 모든 가중치들 또는 일부 가중치들을 통해 탐색할 수 있고, 가중치들의 최소 및 최대 값을 결정할 수 있고, 범위를 결정할 수 있다. 추가적으로, 신경 네트워크 분석기는 가중치들의 범위를 나타내는데 충분한, 선택된 가중치들의 정밀도 레벨을 결정하기 위해, 가중치 값들의 분포를 결정할 수 있다.
다수의 예시들에서, 다수의 가중치들(예를 들어, 가중치 값들의 대부분)은 영점 근처로 조정될 수 있으므로, 다수의 가중치들은 더 압축된 숫자 표현 형식을 사용하기 위한 기회를 제공할 수 있다. 예를 들어, 12 비트 고정 소수점 수는 실질적인 정보 손실 없이 모든 훈련된 가중치들을 충분히 나타낼 수 있다. 일 실시예에서, 데이터 유형의 정밀도를 감소시키는 것은 신경 네트워크의 정확도를 감소시키는 것이 아닐 수 있다. 예를 들어, 숫자를 나타내는 데 필요하지 않은 여분의 비트들은 제 2 신경 네트워크의 정밀도를 감소시키지 않고 제거될 수 있다. 그러나 다른 경우들에서 데이터 유형의 정밀도를 감소시키면, 제 2 신경 네트워크의 정확도가 감소될 수 있다. 일 측면에서, 가지치기, 또는 가중치들 또는 가중치 표현이 변경되는 정도까지 가지치기하는 것에 포함될 수 있는, 적어도 하나 이상의 동작들은 신경 네트워크 일부의 하나 이상의 가중치들을 조정하는 변경의 일례일 수 있다.
도 7 및 도 8은 변경된 신경 네트워크를 생성하기 위해, 신경 네트워크(700)의 선택된 일부를 가지치기하는 일례를 전체적으로 설명하기 위한 도면이다. 구체적으로, 도 7 및 도 8은 변경된 신경 네트워크를 생성하기 위한 신경 네트워크(700) 층의 가지치기를 나타낸다. 도 7의 예시적인 신경 네트워크(700)를 참고하면, 신경 네트워크 분석기는 가지치기를 위한 후보로 하위 프로세스 또는 층(702)을 식별하였다. 따라서, 신경 네트워크 분석기는 신경 네트워크(700)로부터 하위 프로세스(702)를 제거할 수 있다.
도 8은 도 7에 도시된 신경 네트워크와 비교하여, 가지치기 이후에 변경된 신경 네트워크를 설명하기 위한 도면이다. 도 8에서, 하위 프로세스(702)는 제 2 신경 네트워크로 인해 제거되었다. 일 실시예에서, 신경 네트워크 분석기는 가지치기 프로세스를 수행하고, 신경 네트워크의 출력에 실질적인 영향이 적거나 없다는 판단에 기초하여, 가지치기를 위한 하위 프로세스(702)를 선택한다. 예를 들어, 신경 네트워크 분석기는 가지치기 이전의 신경 네트워크(700)과 비교하여, 가지치기 이후의 신경 네트워크(800)의 손실 또는 정확도가 성능 요건들에 의해 특정된 허용 가능한 손실 또는 허용 가능한 정확도 이내인지 판단할 수 있다.
또 다른 변경의 일례는 스케일링(scaling)이다. 일반적으로 알려진 바와 같이, 신경 네트워크는 다수의 특징 맵들을 연산하여 입력 데이터를 처리한다. 신경 네트워크 분석기는 다른 특징 맵들의 연산이 유사한 특징 맵 연산들을 사용하는지 여부를 판단할 수 있다. 신경 네트워크 분석기는 다른 특징 맵들의 연산이 동일하거나, 실질적으로 동일한지 여부를 판단할 수 있다. 예를 들어, 다른 특징 맵들의 연산은 스케일링 계수(scaling factor)에 의해 달라질 수 있다. 이러한 경우, 신경 네트워크 분석기는 하나의 동작을 수행하고, 제 2 동작의 결과의 근사치를 얻기 위해 결과를 스케일링함으로써 별도 동작들을 대체할 수 있다. 일 측면에서, 스케일링 또는 스케일링에 포함된 적어도 하나 이상의 동작들은 신경 네트워크 일부의 하나 이상의 가중치들을 조정하는 변경의 일례일 수 있다.
설명을 위해, 변경될 신경 네트워크가 R 평면, G 평면 및 B 평면 각각에 대한 특징 맵들을 연산함으로써, 입력 RGB(Red, Green, Blue) 영상 데이터를 처리하는 예를 고려한다. 일 실시예에서, 신경 네트워크 분석기는 R 평면, G 평면 및 B 평면에 대한 특징 맵 연산들이 실질적으로 유사한지 여부(예를 들어, 스케일링 계수에 의해 실질적으로 다른지 여부)를 판단할 수 있다. 특징 맵 연산들이 실질적으로 유사하다는 판단에 기초하여, 신경 네트워크 분석기는 RGB 평면의 스케일링된 버전들을 결합하고, 결합된 RGB 영상에 특징 맵 동작들을 수행함으로써, 별도 RGB 동작들을 교체할 수 있다.
도 9는 신경 네트워크 분석기에 의해 수행되는 스케일링의 일 실시예를 설명하기 위한 도면이다. 설명을 위해, 제 1 신경 네트워크(102)가 192개 컨볼루션 커넬들의 두 세트들의 적어도 일부를 포함하는 예를 고려한다. 컨볼루션 커넬들은 3 x 3이다. 이러한 예에서, 제 1 신경 네트워크(102)는 다른 컨볼루션 커넬들과의 상관 관계를 결정하기 위해 어느 제약도 없이 훈련된다. 신경 네트워크 분석기에 의해 생성된 제 2 신경 네트워크(106)는 192개 컨볼루션 커넬들의 두 세트들과 동일한 것을 포함하지 않을 것이다. 더 정확하게, 제 2 신경 네트워크(106)는 하나 이상의 기준 컨볼루션 커넬들(base convolution kernels) 및 스케일링 계수들을 포함할 것이다.
일 실시예에서, 신경 네트워크 분석기는 제 1 신경 네트워크(102)로부터, 예를 들어 유사성 기준에 기초하여, 유사하다고 판단되는 컨볼루션 커넬들의 그룹들을 식별한다. 구체적으로, 신경 네트워크 분석기는 제 1 신경 네트워크(102)의 하나 이상의 컨볼루션 층들로부터 유사한 컨볼루션 커넬들의 하나 이상의 그룹들을 식별할 수 있다.
도 9의 예에서, 제 1 신경 네트워크(102)는 각 컨볼루션 커넬들(K1, K2, K3 및 K4)에 의해 처리되는 각 입력 특징 맵들(A, B, C 및 D)이 있는 컨볼루션 층을 포함한다. 신경 네트워크 분석기는 컨볼루션 커넬들(K1, K2, K3 및 K4)이 유사하다고 판단하고, 그룹(920)을 형성한다. 컨볼루션 커넬들(K1, K2, K3 및 K4)을 적용한 결과들은 출력 특징 맵(925)을 생성하기 위해 합산된다. 예를 들어, 출력 특징 맵(925)은 다음 수학식으로 나타낼 수 있다: A*K1 + B*K2 + C*K3 + D*K4.
또한, 제 1 신경 네트워크(102)에 대해 동일하게 명세된 컨볼루션 층은, 신경 네트워크 분석기에 의해 제 2 신경 네트워크(106) 후처리를 위해 표시된다. 도시된 바와 같이, 컨볼루션 층은, 그룹(920)에 속하는 각 입력 특징 맵(A, B 및 C)이 스케일링 계수(SF1, SF2 및 SF3)와 각각 곱해지도록, 변경된다. 합성 입력 특징 맵(composite input feature map)(935)을 생성하기 위해, 스케일링된 계수들은 합산된다. 합성 입력 특징 맵(935)은 SF1(A)+SF2(B)+SF3(C)로 표현될 수 있다. 합성 입력 특징 맵(935)은 기준 컨볼루션 커넬(930)에 제공된다.
기준 컨볼루션 커넬(930)은 부분 특징 맵(940)을 생성하기 위해, 합성 입력 특징 맵(935)에 적용된다. 부분 특징 맵(940)은 [SF1(A)+SF2(B)+SF3(C)]*BK로 표현될 수 있으며, 여기서 "BK"는 기준 컨볼루션 커넬(930)이다. 컨볼루션 커넬들(K1, K2 및 K3)과 유사하지 않은 컨볼루션 커넬(K4)은 그대로 유지되고, 부분 특징 맵(945)을 생성하기 위해 입력 특징 맵(D)에 독립적으로 적용된다. 부분 특징 맵(945)은 D*K4로 표현될 수 있다. 부분 특징 맵(945)은 출력 특징 맵(925')를 생성하기 위해, 부분 특징 맵(940)과 합산되거나, 가산기에 제공될 수 있다.
컨볼루션 커넬들(K1, K2 및 K3)이 유사하고 기준 컨볼루션 커넬(930)의 스케일링된 등가물 또는 변환들(이하에서는 "스케일링된 등가물"로 언급한다.)인 경우, 출력 특징 맵(925')은 출력 특징 맵(925)과 동일하다. 하나 이상 또는 전체 컨볼루션 커넬들(K1, K2 및 K3)이 유사하지만, 기준 컨볼루션 커넬(930)의 등가물에 근접하거나, 근접한 변환들(이하에서는 "대략적인 등가물"로 언급한다.)인 경우, 출력 특징 맵(925')은 출력 특징 맵(925)과 대략적으로 동일하다. 어떠한 경우에, 각 입력 특징 맵(A, B 및 C)을 위한 별도의 컨볼루션 동작을 수행하기 보다는, 입력 특징 맵들은 스케일링되고, 합성 입력 특징 맵(935)을 생성하기 위해 합산되고, 그 후 기준 컨볼루션 커넬(930)과 엮일 수 있다. 일반적으로, 신경 네트워크 분석기는 그룹의 컨볼루션 커넬들(예를 들어, 그룹(920)의 컨볼루션 커넬들(K1, K2 및 K3)) 각각을 그룹의 기준 컨볼루션 커넬의 단일 인스턴스(single instance)로 대체할 수 있다.
많은 경우들에서, 신경 네트워크는 컨볼루션 커넬들의 이전 층으로부터 여러 특징 맵들을 엮음으로써 다음 층을 위한 특징 맵을 생성한다. 그리고 나서, 그 결과들은 합산된다. 각 입력 특징 맵은 다음 층에서 여러 또는 모든 특징 맵들을 생성하기 위해 여러 번 사용될 수 있다. 각 입력 특징 맵의 상대적 중요성(relative importance)은 소정의 출력 특징 맵을 위해, 각 입력 특징 맵에 적용된 컨볼루션 행렬에 효율적으로 포개져 있다. 이와 같이, 소정의 특징 맵에 적용된 컨볼루션들은 종종 서로 다른 버전들로 스케일링되거나, 대략적으로 서로 다른 버전들로 스케일링된다.
신경 네트워크 분석기는 유사한 컨볼루션 커넬들의 이러한 인스턴스들을 감지하고, 제 2 신경 네트워크(106)가 실행되는 동안 수행된 곱셈-누산(multiply-accumulate, MAC) 동작들의 수가 크게 감소하는, 최적화를 적용함으로써, 이 특성을 활용(leverage)할 수 있다. 예를 들어, 제 1 신경 네트워크(102)를 참고하면, 컨볼루션 커넬들이 3 x 3 컨볼루션 행렬을 사용할 때, 컨볼루션 커넬들(K1, K2 및 K3)을 적용하는 것은 27번(3x3x3번)의 곱셈 및 덧셈을 수반한다. 제 2 신경 네트워크(106)의 경우, 변경된 컨볼루션 층을 통해 입력 특징 맵들(A, B 및 C)를 처리하는 것은 12번(1+1+1+3x3번)의 곱셈 및 덧셈을 수반한다. 일반적으로, 입력 맵들의 수가 더 크거나, 및/또는 컨볼루션 행렬의 차원들이 커지면, 동작들이 더 많이 감소한다. 제 2 신경 네트워크(106)는 동일하거나 거의 동일한 정확도에서, 제 1 신경 네트워크(102)보다 적은 전력을 소비할 수 있고, 더 빠르게 실행할 수 있다.
일반적으로, 도 9는 신경 네트워크가 훈련되고, 컨볼루션 가중치들이 결정된 후, 유사한 컨볼루션 커넬들의 그룹들이 식별되는 것을 나타낸다. 또한, 하나 이상의 기준 컨볼루션 커넬들과 스케일링 계수들은 계산될 수 있다. 원래 훈련된 신경 네트워크의 근사치로서, 스케일링 계수들 및 기준 컨볼루션 커넬들은 신경 네트워크를 실행하기 위해 직접적으로 사용될 수 있다. 다른 측면에서, 재훈련은 다시 매개 변수화된(re-parameterized) 신경 네트워크에서 수행될 수 있다. 재훈련의 일부로서, 신경 네트워크는 기준 컨볼루션 커넬들, 스케일링 계수들 및 컨볼루션 가중치들에 관해 재정의될 수 있다. 기준 컨볼루션 커넬들의 가중치들은 재훈련의 결과로서 재정의될 수 있다. 또한, 완전히 연결된 층들의 가중치들과 같은, 다른 네트워크 파라미터들은 재정의될 수 있다. 재훈련의 결과는 원래 신경 네트워크에 가까운 근사치인 신경 네트워크일 수 있다. 생성된 신경 네트워크는 약간 덜 정확하거나, 더 정확할 수 있으나, 원래 별도 컨볼루션 커넬들을 사용하는 대신, 기준 컨볼루션 커넬(들) 및 스케일링 계수들을 사용하면 연산 효율들을 지속할 수 있다.
도 10은 신경 네트워크의 컨볼루션 커넬들을 스케일링하는 방법(1000)의 일 실시예를 설명하기 위한 흐름도이다. 방법(1000)은 도 1 및 도 2을 참조로 기재된 신경 네트워크 분석기에 의해 수행될 수 있다. 예를 들어, 일 실시예에서, 방법(1000)은 도 3의 단계 320 및/또는 단계 325를 구현하는 신경 네트워크 분석기에 의해 수행될 수 있다.
단계 1005에서, 신경 네트워크 분석기는 제 1 신경 네트워크의 컨볼루션 커넬들의 세트로부터 유사한 컨볼루션 커넬들의 하나 이상의 그룹들을 결정할 수 있다. 예를 들어, 신경 네트워크 분석기는 제 1 신경 네트워크의 특정 컨볼루션 층을 위한, 유사한 컨볼루션 커넬들의 하나 이상의 그룹들을 결정할 수 있다. 그러나, 유사한 컨볼루션 커넬들의 그룹들을 결정하기 위해, 신경 네트워크 분석기가 제 1 신경 네트워크의 하나 이상 또는 모든 컨볼루션 층들을 처리할 수 있음은 이해되어야 한다. 컨볼루션 커넬들의 각 그룹은 제 1 신경 네트워크의 동일한 컨볼루션 층의 컨볼루션 커넬들만 포함한다.
일 측면에서, 신경 네트워크 분석기는 형성되기 위한 그룹들의 수가 초기에 알려지지 않은 경우를 위해 사용되는, 공지된 클러스터링 기술들 중 어느 하나를 사용하여 유사한 신경 네트워크 분석기의 그룹들을 형성할 수 있다. 일반적으로, 특정 컨볼루션 커넬과 그룹 또는 클러스터의 중심간 거리는 유사성 메트릭으로서 사용될 수 있다. 단계 1005를 구현하는 예시적인 방법은 도 11에서 보다 상세하게 설명한다.
단계 1010에서, 신경 네트워크 분석기는 유사한 컨볼루션 커넬들의 각 그룹을 위한 기준 컨볼루션 커넬을 결정할 수 있다. 일 측면에서, 기준 컨볼루션 커넬은 그룹의 한 컨볼루션 커넬일 수 있다. 예를 들어, 컨볼루션 커넬들은 그룹에 있는 각 컨볼루션 커넬들의 기준 선택 메트릭(base selection metric)을 계산할 수 있다. 신경 네트워크 분석기는 그룹의 컨볼루션 커넬들 중에서 그룹을 위한 기준 컨볼루션 커넬을 선택하기 위해, 기준 선택 메트릭을 사용할 수 있다.
예를 들어, 기준 선택 메트릭은 그룹에 있는 컨볼루션 커넬들의 가중치들의 크기의 척도일 수 있다. 그룹의 각 컨볼루션 커넬이 그룹의 서로 다른 그룹원과 동등하게 스케일링되거나, 대략적으로 동등할 수 있기 때문에, 신경 네트워크 분석기는 가장 작은 가중치들의 컨볼루션 커넬, 가장 큰 가중치들의 컨볼루션 커넬, 또는 그룹의 기준 컨볼루션 커넬과 같은 중간 수준의 가중치들의 다른 컨볼루션 커넬을 선택할 수 있다.
설명에 있어, 컨볼루션 커넬들(K1, K2 및 K3)을 포함하는 그룹을 예로 고려한다. 이 예에서, 컨볼루션 커넬(K1)은 가장 작은 가중치들을 가질 수 있다. 컨볼루션 커넬(K2)은 컨볼루션 커넬(K1)의 가중치의 2.3 배 가중치를 가질 수 있다. 컨볼루션 커넬(K3)은 컨볼루션 커넬(K1)의 가중치의 3배 가중치를 가질 수 있다. 신경 네트워크 분석기는 기준 선택 메트릭에 따라, 컨볼루션 커넬(K1), 컨볼루션 커넬(K2) 또는 컨볼루션 커넬(K3)을 기준 컨볼루션 커넬로 선택할 수 있다.
다른 예에서, 신경 네트워크 분석기는 기준 선택 메트릭으로, 평균 가중치를 사용할 수 있다. 예를 들어, 신경 네트워크 분석기는 기준 컨볼루션 커넬로 가장 큰 평균 가중치를 갖는 컨볼루션 커넬을 선택할 수 있다. 이전 예에서, 컨볼루션 커넬(K1)은 평균 성분 가중치 0.462를 가질 수 있다. 컨볼루션 커넬(K3)은 평균 성분 가중치 0.237를 가질 수 있다. 이 예에서, 신경 네트워크 분석기는 컨볼루션 커넬(K1)을 기준 컨볼루션 커넬로 선택할 수 있다.
다른 측면에서, 기준 컨볼루션 커넬은 그룹의 컨볼루션 커넬들의 함수로서 결정될 수 있다. 예를 들어, 신경 네트워크 분석기는 그룹에 있는 컨볼루션 커넬들의 평균 또는 가중된 평균을 결정할 수 있다. 컨볼루션 커넬들(K1, K2 및 K3)을 포함하는 예시적인 그룹에서, 신경 네트워크 분석기는 기준 컨볼루션 커넬로 컨볼루션 커넬들(K1, K2 및 K3)의 평균을 계산할 수 있다. 다양한 기술들은 기준 컨볼루션 커넬을 결정하는 데 사용될 수 있다. 예를 들어, 유사한 컨볼루션 커넬들의 그룹의 기준 컨볼루션 커넬은 오차를 최소화하기 위해 결정될 수 있다. 예를 들어, 그룹의 기준 컨볼루션 커넬은, 원래 별도 컨볼루션들을 적용하는 결과에 관한 소정의 범위 이내에 결과가 있는 것으로 결정될 수 있다. 본 개시는 그룹들을 위한 기준 컨볼루션 커넬들을 결정하기 위해 제공되는 특정 예들에 의해 한정되지 않는다.
단계 1015에서, 신경 네트워크 분석기는 그룹들에 있는 컨볼루션 커넬들을 위한 스케일링 계수들을 결정할 수 있다. 그룹에 있는 각 컨볼루션 커넬을 위해, 신경 네트워크 분석기는 스케일링 계수를 계산할 수 있다. 스케일링 계수는, 스케일링 계수가 결정된 컨볼루션 커넬에 제공되는 입력 특징 맵에 적용될 수 있다. 합성 입력 특징 맵을 생성하기 위해, 스케일링 계수 어플리케이션은 전반적으로 도 9를 참조하여 설명된다.
그룹이 컨볼루션 커넬들(K1, K2 및 K3)을 포함하는 예를 고려한다. 컨볼루션 커넬(K1)은 가장 작은 가중치를 가진다. 컨볼루션 커넬(K2)은 컨볼루션 커넬(K1)의 가중치들의 2.3 배 가중치들을 가진다. 컨볼루션 커넬(K3)은 컨볼루션 커넬(K1)의 가중치의 3배 가중치들을 가진다. 컨볼루션 커넬들은 컨볼루션 커넬(K1)을 기준 컨볼루션 커넬로 선택할 수 있다. 이러한 경우, 신경 네트워크 분석기는 컨볼루션 커넬(K1)이 1이 되기 위한 스케일링 계수를 결정한다(또는 스케일링 계수를 적용하지 않는다). 신경 네트워크 분석기는 컨볼루션 커넬(K2)의 스케일링 계수를 2.3으로 결정한다. 컨볼루션 커넬들은 컨볼루션 커넬(K3)의 스케일링 계수를 3으로 결정한다. 기준 컨볼루션 커넬로 컨볼루션 커넬(K3)을 선택하는 예에서, 신경 네트워크 분석기는 컨볼루션 커넬들(K1, K2 및 K3)에 제공되는 입력 특징 맵들에 적용되기 위한 스케일링 계수가 각각 1/3, 1/2.3 및 1일 수 있음을 결정할 수 있다.
다른 예에서, 신경 네트워크 분석기는 컨볼루션 커넬들(K1, K2 및 K3)의 평균 또는 가중된 평균으로 기준 컨볼루션 커넬을 결정할 때, 신경 네트워크 분석기는 평균 오차를 줄이기 위해, 몇몇 컨볼루션 커넬 가중치들을 증가시키거나, 다른 컨볼루션 커넬 가중치들을 감소시키는 조정을 위해 스케일링 계수를 결정할 수 있다.
단계 1020에서, 신경 네트워크 분석기는 제 2 또는 변경된, 신경 네트워크를 생성할 수 있다. 예를 들어, 단계 1020은 도 3의 단계 325와 대응될 수 있다. 신경 네트워크 분석기는 그룹 단위로, 스케일링 계수를 사용하는 입력 합성 특징 맵들을 생성하기 위해, 컨볼루션 층들을 변경할 수 있고, 그룹을 위한 기준 컨볼루션 커넬의 단일 인스턴스로 그룹의 컨볼루션 커넬들을 대체할 수 있다. 그룹의 복수의 컨볼루션 커넬들을 적용하는 것 대신, 스케일링 계수를 사용하여 생성된 합성 입력 특징 맵에 기준 컨볼루션 커넬이 적용될 수 있음은 이해되어야 한다. 기준 컨볼루션 커넬의 단일 인스턴스는 합성 입력 특징 맵에 적용될 수 있다. 개시된 바와 같이, 신경 네트워크 분석기는 특정 컨볼루션 층, 복수의 컨볼루션 층들 또는 제 1 신경 네트워크의 모든 컨볼루션 층들을 위해, 단계 1005, 1010, 1015 및 1020에 기재된 동작들을 수행할 수 있다. 제 2 신경 네트워크는 출력될 수 있고, 다음에 사용하기 위해 저장될 수 있다.
도 3을 참조하면, 신경 네트워크 분석기는 선택적으로 변경된 신경 네트워크를 재훈련할 수 있다. 스케일링의 어플리케이션에 관하여, 신경 네트워크 분석기는 도 10에 기재된 대로 설정된 그룹들의 변경을 방지하는 곳에서, 하나 이상의 제약들과 함께, 제 2 신경 네트워크를 재훈련한다. 예를 들어, 제약들은 유사한 컨볼루션 커넬들의 설정된 그룹들을 그대로 유지할 수 있다. 이에 관하여, 다양한 그룹들에 있는 컨볼루션 커넬들 관점에서, 그룹들의 그룹원은 변하지 않을 수 있다. 그러나, 기준 컨볼루션 커넬들(예를 들어, 가중치들) 및/또는 스케일링 계수들과 같은 그룹들의 몇 측면들이 그룹들에서 그룹원의 변화없이 변경될 수 있음은 이해되어야 한다. 이와 같이, 재훈련 프로세스 동안, 기준 컨볼루션 커넬들의 가중치들 및/또는 스케일링 계수들은 조정될 수 있다.
재훈련 프로세스는 순방향 전파(forward propagation) 및 오차 역방향 전파(error back-propagation)를 포함할 수 있다. 예를 들어, 신경 네트워크 분석기는 컨볼루션 커넬들의 변경된 세트를 위한 기준 컨볼루션 커넬을 사용하는 순방향 전파를 구현함으로써, 제약을 시행(enforce)할 수 있다. 신경 네트워크 분석기는 다른 컨볼루션 커넬들을 업데이트 하는 동안 기울기 하강이 제약(예를 들어, 기준 컨볼루션 커넬)에 영향을 받지 않기 위해, 역방향 전파를 수행할 수 있다.
일 실시예에서, 스케일링 프로세스의 적극성은, 동일한 그룹 내와 같은, 컨볼루션 커넬들이 유사한지 여부를 결정하기 위해 사용되는 임계값의 조정을 통해 제어될 수 있다. 예를 들어, 임계값을 증가시킴으로써, 신경 네트워크 분석기는 적은 수의 그룹들을 생성할 수 있다. 또한, 컨볼루션들을 계산하는 데 필요한 동작들의 수는 비례적으로 감소할 것이다.
예를 들어, 128개 입력 특징 맵들이 제 1 신경 네트워크의 다음 컨볼루션 층에서 128개 출력 특징 맵들에 기여하는 경우를 고려한다. 특정 출력 특징 맵에 기여하는 입력 특징 맵들은 그룹화될 수 있다. 입력 특징 맵들을 그룹화하는 것은 각 출력 특징 맵마다 다를 수 있다. 예를 들어, 이러한 경우, 입력 특징 맵들의 그룹들은 128개가 될 수 있다(예를 들어, 각 출력 특징 맵마다 하나의 그룹인 경우). 예를 들어, 신경 네트워크의 컨볼루션 층에 있는 128개 컨볼루션 커넬들은 32개 그룹들로 그룹화될 수 있다. 이러한 경우, 변경된 신경 네트워크에 있는 컨볼루션 층을 위해 필요한 컨볼루션들의 수는 32/128 또는 1/4로 감소될 수 있다. 제 1 신경 네트워크에 있는 수학적 동작들의 약 80%가 컨볼루션들과 관련되어 있기 때문에, 상술한 최적화는 제 2 신경 네트워크의 특징 맵을 처리하기 위해 수행되는 수학적 동작들의 약 60%의 감소를 야기할 수 있다.
도 11은 컨볼루션 커넬들의 그룹들을 결정하는 방법(1100)의 일 실시예를 설명하기 위한 흐름도이다. 논의된 바와 같이, 일 실시예에서, 도 11은 도 10의 단계 1005의 일 실시예일 수 있다. 도 11은 단일 컨볼루션 층의 컨볼루션 커넬들을 처리하는 관점에서 기술된다. 그러나, 그룹들을 결정하기 위해, 신경 네트워크의 하나 이상의 컨볼루션 층들이 처리되기 위한 방법(1100)이 반복적으로 수행될 수 있음은 이해되어야 한다.
단계 1105에서, 신경 네트워크 분석기는 하나의 컨볼루션 커넬을 1차 컨볼루션 커넬(primary convolution kernel)로 선택할 수 있다. 신경 네트워크 분석기는 1차 컨볼루션 커넬이 되기 위한 컨볼루션 층의 컨볼루션 커넬들로부터, 컨볼루션 커넬을 선택할 수 있다. "1차"라는 용어는 동일한 컨볼루션 층 내에서 다른 컨볼루션 커넬로부터 하나의 컨볼루션 커넬을 차별화하는 데에만 사용된다. 일 측면에서, 신경 네트워크 분석기는 구성 요소 크기에 따라 컨볼루션 커넬을 선택할 수 있다. 예를 들어, 컨볼루션 층에 있는 컨볼루션 커넬들의 주어진 세트를 위해, 신경 네트워크 분석기는 구성 요소 크기에 따라 세트로부터 하나의 컨볼루션 커넬을 선택할 수 있다. 1차 컨볼루션 커넬은 그룹화 및 컨볼루션 커넬 유사성을 검토하는 목적으로 사용될 수 있다.
예를 들어, 신경 네트워크의 컨볼루션 층은, 제 1 신경 네트워크의 다음 컨볼루션 층을 위한 출력 특징 맵을 생성하기 위해 적용되는, 3개 컨볼루션 커넬들(K1, K2 및 K3)을 포함할 수 있다. 컨볼루션 커넬들(K1, K2 및 K3)은 각각 표 1 내지 표 3에 도시된 바와 같다. 이 예에서, 컨볼루션 커넬들은 3 x 3이다.
Figure pat00001
Figure pat00002
Figure pat00003
일 실시예에서, 신경 네트워크 분석기는 제일 큰 구성 요소 크기를 갖는 컨볼루션 커넬을 선택할 수 있다. 이 예에서, 구성 요소 0.937이 컨볼루션 커넬들(K2 및 K3)의 어떤 구성 요소보다 크기 때문에, 신경 네트워크 분석기는 컨볼루션 커넬(K1)을 선택할 수 있다. 따라서, 이 예에서, 컨볼루션 커넬(K1)은 1차 컨볼루션 커넬로 선택된다.
단계 1110에서, 신경 네트워크 분석기는 1차 컨볼루션 커넬과 함께 그룹을 형성할 수 있다. 신경 네트워크 분석기는, 적어도 초기에, 1차 컨볼루션 커넬만을 포함하는 새로운 그룹을 생성할 수 있다. 이 예에서, 신경 네트워크 분석기는 컨볼루션 커넬(K1)을 포함하는 그룹을 형성할 수 있다. 단계 1115에서, 신경 네트워크 분석기는 1차 컨볼루션 커넬과 아직 비교되지 않은 하나 이상의 컨볼루션 커넬들이 있는지 여부를 판단할 수 있다. 만약 1차 컨볼루션 커넬과 아직 비교되지 않은 하나 이상의 컨볼루션 커넬들이 있다면, 방법(1100)은 단계 1120로 계속될 수 있다. 만약 그렇지 않으면, 방법(1100)은 단계 1145로 진행될 수 있다.
단계 1120에서, 신경 네트워크 분석기는 2차 컨볼루션 커넬(secondary convolution kernel)을 선택할 수 있다. "2차"란 용어는 다른 컨볼루션 커넬 및 1차 컨볼루션 커넬로부터 하나의 컨볼루션 커넬을 차별화하는 데에만 사용된다. 설명을 위해, 신경 네트워크 분석기는 컨볼루션 커넬(K2)을 2차 컨볼루션 커넬로 선택할 수 있다. 그러나, 신경 네트워크 분석기가 1차 컨볼루션 커넬과 아직 비교되지 않고 그룹에 아직 속하지 않은, 컨볼루션 층의 다른 컨볼루션 커넬을 선택할 수 있음은 이해되어야 한다.
단계 1125에서, 신경 네트워크 분석기는 1차 컨볼루션 커넬 및 2차 컨볼루션 커넬을 비교할 수 있다. 예를 들어, 신경 네트워크 분석기는 2차 컨볼루션 커넬에 대한 1차 컨벌루션 커넬의 비율 (ratio)을 계산할 수 있다. 이전 예를 계속하면, 신경 네트워크 분석기는 컨볼루션 커넬(K1)을 컨볼루션 커넬(K2)로 나눔으로써, 컨볼루션 커넬(K2)(2차)에 대한 컨볼루션 커넬(K1)(1차)의 비율을 계산할 수 있다. 계산 결과는 표 4와 같다.
Figure pat00004
단계 1130에서, 신경 네트워크 분석기는 단계 1125에서 수행된 비교를 통해 유사성 메트릭을 계산할 수 있다. 예를 들어, 신경 네트워크 분석기는 단계 1125에서 결정된 비율에 기초하여 유사성 메트릭을 결정할 수 있다. 유사성 메트릭은 1차 및 2차 컨볼루션 커넬들이 유사한지 여부를 결정하기 위한 유사성 기준과 비교될 수 있다. 예를 들어, 평균, 최소값, 최대값, 표준 편차 등과 같은 하나 이상의 메트릭들은 비율을 통해 계산될 수 있으며, 유사성 메트릭으로 사용될 수 있다. 다른 예를 들어, 메트릭들의 조합이 유사성 메트릭으로 사용될 수 있다. 신경 네트워크 분석기는 두 컨볼루션 커넬들이 유사한지 여부를 판단하기 위해, 다양한 다른 메트릭들 및/또는 메트릭들의 조합들 중 하나를 사용할 수 있다. 표 5는 컨볼루션 커넬(K1)을 컨볼루션 커넬(K2)로 나눈 비율을 통해 계산될 수 있는 유사성 메트릭들의 예시를 나타낸다.
Figure pat00005
단계 1135에서, 신경 네트워크 분석기는 비율을 계산하기 위해 사용된 1차 및 2차 컨볼루션 커넬들이 유사한지 여부를 결정할 수 있다. 신경 네트워크 분석기는 컨볼루션 커넬들이 유사한지 여부를 결정하기 위한 유사성 기준과, 비율로부터 결정된 유사성 메트릭을 비교할 수 있다. 신경 네트워크 분석기는 유사성 기준을 충족하는 유사성 메트릭을 갖는 컨볼루션 커넬들의 각 세트들이 유사하다고 판단할 수 있다.
설명을 위해, 신경 네트워크 분석기는 표준 편차를 유사성 메트릭으로 사용할 수 있고, 임계값을 유사성 기준으로 사용할 수 있다. 신경 네트워크 분석기는 비율의 표준 편차가 임계값과 동일하거나 작을 때, 유사성 메트릭들이 유사성 기준을 만족한다고 판단할 수 있다. 이전 예를 계속하면, 임계값은 0.2로 설정될 수 있다. 따라서, 컨볼루션 커넬(K2)에 대한 컨볼루션 커넬(K1)의 비율의 표준 편차가 0.19로, 0.2보다 작기 때문에, 신경 네트워크 분석기는 1차 컨볼루션 커넬(K1)과 2차 컨볼루션 커넬(K2)이 관련되었다고 판단할 수 있다.
만약, 신경 네트워크 분석기가 컨볼루션 커넬들이 유사하다고 판단한다면, 방법(1100)은 단계 1140로 계속될 수 있다. 만약 그렇지 않으면, 방법(1100)은 현재 1차 컨볼루션 커넬과 컨볼루션 층의 다른 컨볼루션 커넬들간 비교하는 것을 계속하기 위해, 단계(1115)로 되돌아갈 수 있다. 단계 1140에서, 신경 네트워크 분석기는 1차 컨볼루션 커넬을 포함하는 그룹인 현재 그룹에 2차 컨볼루션 커넬을 추가할 수 있다. 따라서, 신경 네트워크 분석기는 컨볼루션 커넬(K1)을 포함하는 그룹에 컨볼루션 커넬(K2)을 추가할 수 있다. 단계 1140 이후에, 방법(1100)은 처리를 진행하기 위해 단계 1115로 되돌아 갈 수 있다.
단계 1115에서, 신경 네트워크 분석기는 1차 컨볼루션 커넬과 비교되지 않은 컨볼루션 커넬들이 더 있는지 여부를 다시 판단할 수 있다. 이 예에서, 컨볼루션 커넬(K3)이 2차 컨볼루션 커넬로 선택되지 않았을 때, 신경 네트워크 분석기는 컨볼루션 커넬(K3)이 아직 컨볼루션 커넬(K1)과 비교되지 않은 것으로 판단할 수 있고, 단계 1120을 진행할 수 있다.
단계 1125에서, 신경 네트워크 분석기는 컨볼루션 커넬(K1)을 컨볼루션 커넬(K3)로 나눈 비율을 계산할 수 있다. 계산된 비율은 표 6과 같다.
Figure pat00006
단계 1130에서, 신경 네트워크 분석기는 비율에 관한 유사성 메트릭을 계산할 수 있다. 예를 들어, 신경 네트워크 분석기는 컨볼루션 커넬(K3)에 대한 컨볼루션 커넬(K1)의 비율이 표준 편차 1.09인 것을 판단할 수 있고, 단계 1135에서 두 컨볼루션 커넬들이 유사하지 않은 것으로 판단할 수 있다. 따라서, 신경 네트워크 분석기는 현재 그룹(예를 들어, 컨볼루션 커넬(K1) 및 컨볼루션 커넬(K2)이 포함된 그룹)에 컨볼루션 커넬(K3)을 추가하지 않는다.
단계 1115를 통한 다음 반복에서, 신경 네트워크 분석기는 1차 컨볼루션 커넬과 비교가 가능한 컨볼루션 커넬들이 더 없다고 판단할 수 있다. 따라서, 방법(1100)은 단계 1145를 진행할 수 있다. 단계 1145에서, 신경 네트워크 분석기는 아직 그룹에 할당되지 않은 컨볼루션 층의 컨볼루션 커넬들이 있는지 여부를 판단할 수 있다. 만약, 아직 그룹에 할당되지 않은 컨볼루션 층의 컨볼루션 커넬들이 있다면, 방법(1100)은 그룹에 있는 한 컨볼루션 커넬을 1차 컨볼루션 커넬로 선택하기 위해 단계 1105로 되돌아 갈 수 있다. 만약, 그룹들에 컨볼루션 층의 컨볼루션 커넬들이 모두 있다면, 방법(1100)은 종료될 수 있다.
단계 1105로 되돌아갈 때, 이 예를 계속하면, 신경 네트워크 분석기는 컨볼루션 커넬(K3)을 1차 컨볼루션 커넬로 선택할 수 있다. 일 실시예에서, 신경 네트워크 분석기는 1차 컨볼루션 커넬을 선택하기 위해 이전에 사용된 선택 기준과 동일한 선택 기준을 사용할 수 있다. 예를 들어, 신경 네트워크 분석기는 그룹에서 아직 속하지 않고, 가장 큰 구성요소를 갖는 컨볼루션 커넬을 선택할 수 있다.
단계 1110에서, 신경 네트워크 분석기는 컨볼루션 커넬(K3)을 포함하는 그룹을 형성할 수 있다. 단계 1115에서, 신경 네트워크 분석기는 1차 컨볼루션 커넬과 비교되지 않은 다른 컨볼루션 커넬들은 없다고 판단할 수 있고, 단계 1145를 진행할 수 있다. 단계 1145에서, 모든 컨볼루션 커넬들이 그룹들에 할당되면, 방법(1100)은 종료될 수 있다.
표 1 내지 표2의 컨볼루션 커넬들(K1 및 K2)의 가중치들을 예로 사용할 때, 신경 네트워크 분석기는 도 10의 단계 1015를 참조하여 기재된 것과 같이, 스케일링 계수들을 계산할 수 있다. 예를 들어, 컨볼루션 커넬(K1)이 기준 컨볼루션 커넬로 사용될 때, 신경 네트워크 분석기는 컨볼루션 커넬(K2)을 위한 스케일링 계수를 계산할 필요가 있다. 신경 네트워크 분석기는 컨볼루션 커넬(K2)의 스케일링 계수 (0.3513)를 계산할 수 있다. 예시의 목적으로, 기준 컨볼루션 커넬(K1) 및 스케일링 계수(0.3513)를 사용하는 구성 요소들을 스케일링 하는 것을 취하는 것은, 표 7에 도시된 컨볼루션 커넬(K2)의 근사값을 야기한다.
Figure pat00007
컨볼루션 커넬(K2)에 제공된 입력 특징 맵에 스케일링 계수를 적용함으로써, 컨볼루션 커넬(K2)의 기여도는 합성 입력 특징 맵에서 설명될 수 있다. 그룹을 위한 기준 컨볼루션 커넬과 컨볼루션 커넬(K2)의 스케일링 계수를 사용한 근사값의 정확도는 표 8과 같다.
Figure pat00008
언급된 바와 같이, 그룹들은 클러스터링 기술을 사용해 형성될 수 있다. 도 11에 제공된 예는 본 개시의 클러스터링 기술의 특정 예로 제한되지 않는다. 다른 예를 들어, 신경 네트워크 분석기는 1차 커넬(primary kernel) 대신에 새로운 후보 컨볼루션 커넬들을 기존 그룹의 가중된 평균과 비교할 수 있다. 도 11의 예를 참고하면, 1차 커넬은 클러스터의 논리적 중심(logical centroid)일 가능성이 높다. 따라서, 2차 컨볼루션 커넬과 1차 컨볼루션 커넬의 비교는 유사성 기준을 사용하는 것 및/또는 그룹 중심과의 거리 메트릭을 사용하는 것의 일례이다.
또한, 본 개시에서 사용된 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것이며, 본 개시를 한정하려는 의도로 사용되는 것이 아니다.
본 개시에 기재된, 단수의 표현은 문맥상 명백하게 단수를 뜻하지 않는 한, 복수의 의미를 포함한다.
본 개시에 기재된, "또 다른"은 적어도 2 이상을 의미한다.
본 개시에 기재된, "적어도 하나", "하나 이상" 및 "및/또는"이란 용어들은 다른 언급이 없는 한, 개방형 표현이다. 예를 들어, "A, B 및 C 중 적어도 하나", "A, B 또는 C 중 적어도 하나", "A, B 및 C 중 하나 이상", "A, B 또는 C 중 하나 이상" 및 "A, B 및/또는 C"는 A 단독, B 단독, C 단독, A 및 B, A 및 C, B 및 C 또는, A, B 및 C를 의미한다.
본 개시에 기재된, "자동으로"라는 용어는 사용자의 개입이 없는 것을 의미한다.
본 개시에 기재된, "컴퓨터 판독 가능 매체"는 컴퓨터에 의해 액세스될 수 있는 임의의 기록 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 포함할 수 있다. 컴퓨터 판독 가능 매체는 마그네틱 저장매체, 예를 들면, 롬, 플로피 디스크, 하드 디스크 등을 포함하고,) 광학적 판독 매체, 예를 들면, 시디롬, DVD 등과 같은 저장 매체를 포함할 수 있으나, 이에 제한되지 않는다. 또한, 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다
또한, 명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다.
본 개시에 기재된, "실행 가능한 동작(executable operations)" 또는 "동작(operations)"은 문맥상 달리 표시되지 않는 한, 데이터 처리 시스템 또는 데이터 처리 시스템에 있는 프로세서에 의해 수행되는 임무(task)이다. 실행 가능한 동작은 "processing", "computing", "calculating", "determining", "displaying", "comparing" 등을 포함할 수 있으나, 이에 제한되지 않는다.
본 실시예들에서 사용되는 "구성된다" 또는 "포함한다" 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
본 명세서에서 다양한 곳에 등장하는 "일부 실시예에서" 또는 "일 실시예에서" 등의 어구는 반드시 모두 동일한 실시예를 가리키는 것은 아니다.
본 개시에 기재된, "출력"은 물리적 메모리 요소들(예를 들어, 디스플레이 또는 다른 외부 출력 장치에 쓰거나, 다른 시스템에 전송하는 장치들 및 이와 유사한 장치들)에 저장되는 것을 의미한다.
본 개시에 기재된, "프로세서"는 프로그램 코드에 포함된 명령들을 수행하기 위해 구성되는 하나 이상의 하드웨어 회로를 의미한다. 하드웨어 회로는 IC(Integrated Circuit)일 수 있다. 프로세서는 CPU(central processing unit), GPU(graphics processing unit), 배열 프로세서, 벡터 프로세서, DSP(digital signal processor), FPGA(field-programmable gate array), PLA(programmable logic array), ASIC(application specific integrated circuit), 프로그램 가능한 논리 회로, 컨트롤러 등을 포함할 수 있으나, 이에 제한되지 않는다.
본 개시에 기재된, "실시간(real-time)"은, 사용자 또는 시스템이 특정 프로세스 또는 프로세서가 어느 외부 프로세스를 인식하기 위한 판단을 위해, 충분히 빨리 감지하는, 처리 반응성의 정도를 의미한다.
또한, 제1, 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 구성 요소들은 이 용어들에 의해 한정되어서는 안 된다. 이 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로 사용된다.
본 실시예의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 포함되는 것으로 해석되어야 한다.

Claims (18)

  1. 신경 네트워크를 조정하는 방법에 있어서,
    연산 효율을 증가시키는 변경을 위해, 제 1 신경 네트워크의 일부를 선택하는 단계; 및
    프로세서를 이용하여, 오프라인에서 상기 제 1 신경 네트워크의 선택된 일부를 변경함으로써, 상기 제 1 신경 네트워크에 기초하여, 제 2 신경 네트워크를 생성하는 단계;
    를 포함하는 방법.
  2. 신경 네트워크를 조정하는 방법에 있어서,
    연산 효율을 증가시키는 변경을 위해, 제 1 신경 네트워크의 일부를 선택하는 단계; 및
    프로세서를 이용하여, 오프라인에서 상기 제 1 신경 네트워크의 선택된 일부를 변경함으로써, 상기 제 1 신경 네트워크에 기초하여, 제 2 신경 네트워크를 생성하는 단계;
    를 포함하는 방법.
  3. 제 1 항에 있어서,
    상기 제 1 신경 네트워크를 나타내는 데이터를 수신하는 단계; 및
    상기 제 1 신경 네트워크를 변경하는 요청을 수신한 것에 응답하여, 상기 제 1 신경 네트워크의 일부를 선택하는 것을 자동으로 수행하고, 상기 제 2 신경 네트워크를 생성하는 단계;
    를 더 포함하는, 방법.
  4. 제 1 항에 있어서,
    상기 제 2 신경 네트워크를 재훈련하는 단계;
    를 더 포함하는, 방법.
  5. 제 1 항에 있어서,
    적어도 하나 이상의 성능 요건에 기초하여, 상기 제 2 신경 네트워크의 동작을 검증하는 단계;
    를 더 포함하는, 방법.
  6. 제 1 항에 있어서,
    상기 제 1 신경 네트워크의 선택된 일부는, 가중치들 및 상기 제 1 신경 네트워크의 선택된 일부를 변경하는 것을 포함하고, 상기 변경은,
    상기 제 1 신경 네트워크의 선택된 일부의 가중치들 중 선택된 하나를 조정하는 단계;
    를 포함하는, 방법.
  7. 제 6 항에 있어서,
    상기 제 1 신경 네트워크의 선택된 일부의 가중치들 중 선택된 하나를 조정하는 단계는,
    제 1 신경 네트워크 층의 컨볼루션 커넬을 교체 컨볼루션 커넬로 교체하는 단계;
    를 포함하는, 방법.
  8. 제 6 항에 있어서,
    상기 제 1 신경 네트워크의 선택된 일부의 가중치들 중 선택된 하나를 조정하는 단계는,
    제 1 신경 네트워크의 컨볼루션 커넬을 스케일링하는 단계;
    를 포함하는, 방법.
  9. 제 1 항에 있어서,
    상기 제 1 신경 네트워크의 선택된 일부를 변경하는 단계는,
    컨볼루션 커넬 교체, 가지치기, 분해 및 스케일링 중에서, 그룹에서 선택된 동작을 수행하는, 방법.
  10. 제 1 항에 있어서,
    상기 제 1 신경 네트워크의 선택된 일부를 변경하는 단계는,
    상기 제 1 신경 네트워크의 선택된 일부를 가지치기하는 단계;
    를 포함하는, 방법.
  11. 제 10 항에 있어서,
    상기 제 1 신경 네트워크의 선택된 일부를 가지치기하는 단계는,
    상기 제 1 신경 네트워크의 가중치들을 위한 각각 다른 수치 형태 중에서, 그룹에서 선택된 수치 형태를 적용하는 단계;
    제 1 신경 네트워크 층의 특징 맵을 제거하는 단계;
    상기 제 1 신경 네트워크의 컨볼루션 커넬을 영(제로)으로 맞추는 단계; 및
    상기 제 1 신경 네트워크 층을 제거하는 단계;
    를 포함하는, 방법.
  12. 제 1 항에 있어서,
    상기 제 1 신경 네트워크의 선택된 일부를 변경하는 단계는,
    상기 제 1 신경 네트워크의 선택된 일부의 뉴런의 활성 함수를 다른 활성 함수로 교체하는 단계;
    를 포함하는, 방법.
  13. 제 1 항에 있어서,
    상기 제 1 신경 네트워크의 선택된 일부를 변경하는 단계는,
    상기 제 1 신경 네트워크의 선택된 일부의 컨볼루션 커넬을 분해하는 단계;
    를 포함하는, 방법.
  14. 제 1 항에 있어서,
    상기 제 1 신경 네트워크의 선택된 일부를 변경하는 단계는,
    커넬 융합을 수행하는 단계;
    를 포함하는, 방법.
  15. 신경 네트워크를 조정하는 장치에 있어서,
    프로그램 코드를 저장하는, 메모리;
    상기 프로그램 코드를 실행하고 동작들을 수행하는, 프로세서;
    를 포함하고, 상기 동작들은,
    연산 효율을 증가시키는 변경을 위해, 제 1 신경 네트워크의 일부를 선택하고,
    오프라인 동안 상기 제 1 신경 네트워크의 선택된 일부를 변경함으로써, 상기 제 1 신경 네트워크에 기초하여, 제 2 신경 네트워크를 생성하는 것을 포함하는, 장치.
  16. 제 15 항에 있어서,
    상기 동작들은,
    성능 요건을 나타내는 데이터를 수신하는 것을 더 포함하고,
    상기 제 1 신경 네트워크의 선택된 일부를 변경하는 것은, 상기 성능 요건을 충족하기 위해 수행되는 것인, 장치.
  17. 제 15 항에 있어서,
    상기 동작들은,
    상기 제 1 신경 네트워크를 나타내는 데이터를 수신하고,
    상기 제 1 신경 네트워크를 변경하는 요청을 수신한 것에 응답하여, 상기 제 1 신경 네트워크의 일부를 선택하는 것을 자동으로 수행하고, 상기 제 2 신경 네트워크를 생성하는 것을 더 포함하는, 장치.
  18. 제1항 내지 제14항 중 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 비일시적(non-transitory) 기록매체.
KR1020160068839A 2015-06-04 2016-06-02 인공 신경 네트워크를 자동으로 조정하는 방법 및 장치 KR20160143548A (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201562171172P 2015-06-04 2015-06-04
US62/171,172 2015-06-04
US201562174472P 2015-06-11 2015-06-11
US62/174,472 2015-06-11
US201562196699P 2015-07-24 2015-07-24
US62/196,699 2015-07-24
US15/154,650 US11423311B2 (en) 2015-06-04 2016-05-13 Automatic tuning of artificial neural networks
US15/154,650 2016-05-13

Publications (1)

Publication Number Publication Date
KR20160143548A true KR20160143548A (ko) 2016-12-14

Family

ID=57451295

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160068839A KR20160143548A (ko) 2015-06-04 2016-06-02 인공 신경 네트워크를 자동으로 조정하는 방법 및 장치

Country Status (2)

Country Link
US (1) US11423311B2 (ko)
KR (1) KR20160143548A (ko)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180092810A (ko) * 2017-02-10 2018-08-20 삼성전자주식회사 신경망 프루닝 및 재훈련을 위한 자동 임계값들
KR20190018885A (ko) 2017-08-16 2019-02-26 에스케이하이닉스 주식회사 중첩 신경망을 프루닝하는 방법 및 장치
WO2019231064A1 (ko) * 2018-06-01 2019-12-05 아주대학교 산학협력단 대용량 네트워크를 압축하기 위한 방법 및 장치
KR20200023695A (ko) * 2018-08-21 2020-03-06 재단법인 아산사회복지재단 연산량을 줄이는 학습 시스템
KR20200037700A (ko) * 2018-10-01 2020-04-09 인하대학교 산학협력단 엔트로피 기반 신경망(Neural Networks) 가지치기 방법 및 시스템
US10679618B2 (en) 2016-11-03 2020-06-09 Samsung Electronics Co., Ltd. Electronic device and controlling method thereof
KR20200072588A (ko) * 2018-11-30 2020-06-23 서울대학교산학협력단 Cnn기반의 딥러닝 모델 학습장치 및 그 방법
WO2021080149A1 (ko) * 2019-10-22 2021-04-29 삼성전자 주식회사 스케일러블 딥 러닝 네트워크를 구동하는 전자 장치, 사용자 단말 및 방법
US11144290B2 (en) 2019-09-13 2021-10-12 Huawei Technologies Co., Ltd. Method and apparatus for enabling autonomous acceleration of dataflow AI applications
US11295195B2 (en) * 2017-03-03 2022-04-05 Samsung Electronics Co., Ltd. Neural network devices and methods of operating the same
KR20220045882A (ko) * 2020-10-06 2022-04-13 한국전자통신연구원 특징 맵 부호화 및 복호화 장치 및 이를 이용한 방법
US11521039B2 (en) 2017-10-30 2022-12-06 Samsung Electronics Co., Ltd. Method and apparatus with neural network performing convolution
US11521038B2 (en) 2018-07-19 2022-12-06 Samsung Electronics Co., Ltd. Electronic apparatus and control method thereof
US11521046B2 (en) 2017-11-08 2022-12-06 Samsung Electronics Co., Ltd. Time-delayed convolutions for neural network device and method
US11681899B2 (en) 2018-12-07 2023-06-20 Samsong Electronics Co., Ltd. Dividing neural networks

Families Citing this family (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10317930B2 (en) * 2015-09-30 2019-06-11 International Business Machines Corporation Optimizing core utilization in neurosynaptic systems
JP6750203B2 (ja) * 2015-10-20 2020-09-02 富士通株式会社 畳み込みニューラルネットワークの演算方法及び演算プログラム、情報処理装置
JP6516025B2 (ja) * 2016-02-12 2019-05-22 ソニー株式会社 情報処理方法および情報処理装置
EP3427192A4 (en) * 2016-03-11 2019-03-27 Magic Leap, Inc. STRUCTURAL LEARNING IN NEURAL FOLDING NETWORKS
US11755913B2 (en) * 2016-03-11 2023-09-12 Telecom Italia S.P.A Convolutional neural networks, particularly for image analysis
US10832136B2 (en) * 2016-05-18 2020-11-10 Nec Corporation Passive pruning of filters in a convolutional neural network
US10380480B2 (en) * 2016-05-31 2019-08-13 Microsoft Technology Licensing, Llc Changeover from one neural network to another neural network
US11188823B2 (en) 2016-05-31 2021-11-30 Microsoft Technology Licensing, Llc Training a neural network using another neural network
DE102016216951A1 (de) * 2016-09-07 2018-03-08 Robert Bosch Gmbh Modellberechnungseinheit und Steuergerät zur wahlweisen Berechnung eines RBF-Modells, eines Gauß-Prozess-Modells und eines MLP-Modells
US10338629B2 (en) * 2016-09-22 2019-07-02 International Business Machines Corporation Optimizing neurosynaptic networks
US11315018B2 (en) 2016-10-21 2022-04-26 Nvidia Corporation Systems and methods for pruning neural networks for resource efficient inference
KR102631381B1 (ko) * 2016-11-07 2024-01-31 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
CN108133223B (zh) * 2016-12-01 2020-06-26 富士通株式会社 确定卷积神经网络cnn模型的装置和方法
CN108243216B (zh) 2016-12-26 2020-02-14 华为技术有限公司 数据处理的方法、端侧设备、云侧设备与端云协同系统
CN108242046B (zh) * 2016-12-27 2022-02-18 阿里巴巴集团控股有限公司 图片处理方法及相关设备
US11195094B2 (en) * 2017-01-17 2021-12-07 Fujitsu Limited Neural network connection reduction
CN108319988B (zh) * 2017-01-18 2021-12-24 华南理工大学 一种用于手写汉字识别的深度神经网络的加速方法
CN106919942B (zh) * 2017-01-18 2020-06-26 华南理工大学 用于手写汉字识别的深度卷积神经网络的加速压缩方法
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
US10997502B1 (en) * 2017-04-13 2021-05-04 Cadence Design Systems, Inc. Complexity optimization of trainable networks
US10592725B2 (en) * 2017-04-21 2020-03-17 General Electric Company Neural network systems
US20180307987A1 (en) * 2017-04-24 2018-10-25 Intel Corporation Hardware ip optimized convolutional neural network
US20180314945A1 (en) * 2017-04-27 2018-11-01 Advanced Micro Devices, Inc. Graph matching for optimized deep network processing
CN107256424B (zh) * 2017-05-08 2020-03-31 中国科学院计算技术研究所 三值权重卷积网络处理系统及方法
US10318317B2 (en) 2017-05-12 2019-06-11 Tenstorrent Inc. Processing core with operation suppression based on contribution estimate
US10796169B2 (en) * 2017-05-16 2020-10-06 Nec Corporation Pruning filters for efficient convolutional neural networks for image recognition of environmental hazards
DE112018002572T5 (de) 2017-05-19 2020-06-04 Movidius Ltd. Verfahren, systeme und vorrichtungen zur optimierung der pipeline-ausführung
WO2018211129A1 (en) * 2017-05-19 2018-11-22 Movidius Ltd. Methods, systems and apparatus to improve convolution efficiency
CN109389218B (zh) * 2017-08-09 2021-09-03 上海寒武纪信息科技有限公司 数据压缩方法及压缩装置
WO2018216207A1 (ja) * 2017-05-26 2018-11-29 楽天株式会社 画像処理装置、画像処理方法、および画像処理プログラム
KR102548718B1 (ko) * 2017-06-07 2023-06-28 삼성전자주식회사 전자 장치 및 그 제어 방법
US10268951B2 (en) 2017-06-14 2019-04-23 International Business Machines Corporation Real-time resource usage reduction in artificial neural networks
KR102419136B1 (ko) * 2017-06-15 2022-07-08 삼성전자주식회사 다채널 특징맵을 이용하는 영상 처리 장치 및 방법
US11275996B2 (en) * 2017-06-21 2022-03-15 Arm Ltd. Systems and devices for formatting neural network parameters
US11321604B2 (en) 2017-06-21 2022-05-03 Arm Ltd. Systems and devices for compressing neural network parameters
KR101880901B1 (ko) * 2017-08-09 2018-07-23 펜타시큐리티시스템 주식회사 기계 학습 방법 및 장치
US11200495B2 (en) * 2017-09-08 2021-12-14 Vivante Corporation Pruning and retraining method for a convolution neural network
US11270188B2 (en) * 2017-09-28 2022-03-08 D5Ai Llc Joint optimization of ensembles in deep learning
US10943039B1 (en) * 2017-10-17 2021-03-09 Xilinx, Inc. Software-driven design optimization for fixed-point multiply-accumulate circuitry
WO2019082859A1 (ja) * 2017-10-23 2019-05-02 日本電気株式会社 推論装置、畳み込み演算実行方法及びプログラム
US11651223B2 (en) 2017-10-27 2023-05-16 Baidu Usa Llc Systems and methods for block-sparse recurrent neural networks
US10902318B2 (en) 2017-11-06 2021-01-26 Neuralmagic Inc. Methods and systems for improved transforms in convolutional neural networks
US11715287B2 (en) 2017-11-18 2023-08-01 Neuralmagic Inc. Systems and methods for exchange of data in distributed training of machine learning algorithms
US11120338B2 (en) * 2017-11-20 2021-09-14 Colossio, Inc. Genetic generation of tools for convolutional neural network
WO2019096754A1 (en) * 2017-11-20 2019-05-23 Koninklijke Philips N.V. Training first and second neural network models
US11693989B2 (en) * 2017-12-21 2023-07-04 Koninklijke Philips N.V. Computer-implemented methods and nodes implementing performance estimation of algorithms during evaluation of data sets using multiparty computation based random forest
TWI653605B (zh) 2017-12-25 2019-03-11 由田新技股份有限公司 利用深度學習的自動光學檢測方法、設備、電腦程式、電腦可讀取之記錄媒體及其深度學習系統
CN112836792A (zh) 2017-12-29 2021-05-25 华为技术有限公司 一种神经网络模型的训练方法及装置
WO2019136449A2 (en) * 2018-01-08 2019-07-11 Darya Frolova Error correction in convolutional neural networks
WO2019134753A1 (en) * 2018-01-08 2019-07-11 Siemens Healthcare Gmbh Biologically-inspired network generation
US11586924B2 (en) * 2018-01-23 2023-02-21 Qualcomm Incorporated Determining layer ranks for compression of deep networks
US11294747B2 (en) 2018-01-31 2022-04-05 Advanced Micro Devices, Inc. Self-regulating power management for a neural network system
US20210056426A1 (en) * 2018-03-26 2021-02-25 Hewlett-Packard Development Company, L.P. Generation of kernels based on physical states
DE102018205869A1 (de) * 2018-04-18 2019-10-24 Robert Bosch Gmbh Verfahren, Computersystem und Computerprogramm zum Steuern eines Aktors
US11537838B2 (en) 2018-05-04 2022-12-27 Apple Inc. Scalable neural network processing engine
US11120327B2 (en) 2018-05-04 2021-09-14 Apple Inc. Compression of kernel data for neural network operations
US11580353B2 (en) 2018-05-04 2023-02-14 Apple Inc. Neural network processor for handling differing datatypes
US10963787B2 (en) 2018-05-31 2021-03-30 Neuralmagic Inc. Systems and methods for generation of sparse code for convolutional neural networks
US11216732B2 (en) 2018-05-31 2022-01-04 Neuralmagic Inc. Systems and methods for generation of sparse code for convolutional neural networks
US10832133B2 (en) 2018-05-31 2020-11-10 Neuralmagic Inc. System and method of executing neural networks
US11449363B2 (en) 2018-05-31 2022-09-20 Neuralmagic Inc. Systems and methods for improved neural network execution
WO2020072274A1 (en) 2018-10-01 2020-04-09 Neuralmagic Inc. Systems and methods for neural network pruning with accuracy preservation
US11568235B2 (en) * 2018-11-19 2023-01-31 International Business Machines Corporation Data driven mixed precision learning for neural networks
RU2697613C9 (ru) * 2018-11-20 2022-04-15 Хуавей Текнолоджис Ко., Лтд. Способ распознавания объектов с помощью нейронных сетей
US11526746B2 (en) 2018-11-20 2022-12-13 Bank Of America Corporation System and method for incremental learning through state-based real-time adaptations in neural networks
US11144788B2 (en) * 2018-12-04 2021-10-12 Here Global B.V. Method and apparatus for providing a low-power perception architecture
CN109800859B (zh) * 2018-12-25 2021-01-12 深圳云天励飞技术有限公司 一种神经网络批归一化的优化方法及装置
US11544559B2 (en) 2019-01-08 2023-01-03 Neuralmagic Inc. System and method for executing convolution in a neural network
US11829888B2 (en) * 2019-03-27 2023-11-28 International Business Machines Corporation Modifying artificial intelligence models using model fragments
US20220016846A1 (en) * 2019-04-10 2022-01-20 Hewlett-Packard Development Company, L.P. Adaptive thermal diffusivity
US11410016B2 (en) 2019-04-26 2022-08-09 Alibaba Group Holding Limited Selective performance of deterministic computations for neural networks
US11580399B2 (en) 2019-04-30 2023-02-14 Samsung Electronics Co., Ltd. System and method for convolutional layer structure for neural networks
KR20200129458A (ko) 2019-05-08 2020-11-18 삼성전자주식회사 인공 신경망 모델을 트레이닝하는 컴퓨팅 장치, 인공 신경망 모델을 트레이닝하는 방법 및 이를 저장하는 메모리 시스템
EP3973468A4 (en) 2019-05-21 2022-09-14 Magic Leap, Inc. HANDPOSITION ESTIMATING
US11164032B2 (en) * 2019-07-11 2021-11-02 Arm Limited Method of performing data processing operation
US20210027151A1 (en) * 2019-07-25 2021-01-28 Samsung Electronics Co., Ltd. Methods and systems with convolutional neural network (cnn) performance
US11195095B2 (en) 2019-08-08 2021-12-07 Neuralmagic Inc. System and method of accelerating execution of a neural network
CN114341825A (zh) * 2019-08-29 2022-04-12 阿里巴巴集团控股有限公司 用于在神经网络中提供向量稀疏化的方法及系统
KR20210032140A (ko) * 2019-09-16 2021-03-24 삼성전자주식회사 뉴럴 네트워크에 대한 프루닝을 수행하는 방법 및 장치
WO2021064292A1 (en) * 2019-10-02 2021-04-08 Nokia Technologies Oy High-level syntax for priority signaling in neural network compression
US20210117799A1 (en) * 2019-10-17 2021-04-22 EMC IP Holding Company LLC Monitoring performance of a storage system using paired neural networks
KR20210053384A (ko) * 2019-11-01 2021-05-12 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US20210142171A1 (en) * 2019-11-13 2021-05-13 Samsung Electronics Co., Ltd. Electronic apparatus and method of controlling thereof
US20210150306A1 (en) * 2019-11-14 2021-05-20 Qualcomm Incorporated Phase selective convolution with dynamic weight selection
US11741397B2 (en) * 2019-11-25 2023-08-29 Advanced Micro Devices, Inc. Artificial neural network emulation of hotspots
US11681922B2 (en) * 2019-11-26 2023-06-20 Numenta, Inc. Performing inference and training using sparse neural network
CN111126617B (zh) * 2019-12-02 2024-03-29 东软集团股份有限公司 一种选择融合模型权重参数的方法、装置及设备
US20210295175A1 (en) * 2020-03-18 2021-09-23 Fair Isaac Corporation Training artificial neural networks with constraints
US20210357730A1 (en) * 2020-05-12 2021-11-18 Alibaba Group Holding Limited Multi-size convolutional layer background
EP3945470A1 (en) * 2020-07-31 2022-02-02 Aptiv Technologies Limited Methods and systems for reducing the complexity of a computational network
US20220075669A1 (en) * 2020-09-08 2022-03-10 Technion Research And Development Foundation Ltd. Non-Blocking Simultaneous MultiThreading (NB-SMT)
KR20220064054A (ko) * 2020-11-11 2022-05-18 포항공과대학교 산학협력단 행렬곱 연산량 감소 방법 및 장치
US11556757B1 (en) 2020-12-10 2023-01-17 Neuralmagic Ltd. System and method of executing deep tensor columns in neural networks
CN112329744B (zh) * 2021-01-04 2021-04-06 太极计算机股份有限公司 一种图片文字识别方法和装置
JPWO2022224330A1 (ko) * 2021-04-20 2022-10-27
CN113657421A (zh) * 2021-06-17 2021-11-16 中国科学院自动化研究所 卷积神经网络压缩方法和装置、图像分类方法和装置
US11960982B1 (en) 2021-10-21 2024-04-16 Neuralmagic, Inc. System and method of determining and executing deep tensor columns in neural networks
US20240005158A1 (en) * 2022-06-30 2024-01-04 Qualcomm Incorporated Model performance linter
US20240086709A1 (en) * 2022-09-12 2024-03-14 Gm Cruise Holdings Llc Deep learning compute paths for faster vehicle reaction times

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6850252B1 (en) 1999-10-05 2005-02-01 Steven M. Hoffberg Intelligent electronic appliance system and method
US6125194A (en) 1996-02-06 2000-09-26 Caelum Research Corporation Method and system for re-screening nodules in radiological images using multi-resolution processing, neural network, and image processing
US6546378B1 (en) 1997-04-24 2003-04-08 Bright Ideas, L.L.C. Signal interpretation engine
US7395170B2 (en) 2001-05-24 2008-07-01 Test Advantage, Inc. Methods and apparatus for data analysis
US7089592B2 (en) * 2001-03-15 2006-08-08 Brighterion, Inc. Systems and methods for dynamic detection and prevention of electronic fraud
EP1393196A4 (en) 2001-05-07 2007-02-28 Health Discovery Corp CORES AND METHODS FOR SELECTING CORES FOR USE IN TEACHING MACHINES
EP1262907B1 (en) 2001-05-28 2007-10-03 Honda Research Institute Europe GmbH Pattern recognition with hierarchical networks
US9269043B2 (en) 2002-03-12 2016-02-23 Knowm Tech, Llc Memristive neural processor utilizing anti-hebbian and hebbian technology
US7490071B2 (en) 2003-08-29 2009-02-10 Oracle Corporation Support vector machines processing system
US7526463B2 (en) * 2005-05-13 2009-04-28 Rockwell Automation Technologies, Inc. Neural network using spatially dependent data for controlling a web-based process
WO2007137047A2 (en) 2006-05-16 2007-11-29 Greer Douglas S Modeling the neocortex
US8024193B2 (en) * 2006-10-10 2011-09-20 Apple Inc. Methods and apparatus related to pruning for concatenative text-to-speech synthesis
JP5376920B2 (ja) 2008-12-04 2013-12-25 キヤノン株式会社 コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
EP2233069B1 (fr) 2009-03-25 2013-04-24 Sorin CRM SAS Dispositif médical actif comprenant des moyens de filtrage non-linéaire pour la reconstruction d'un électrocardiogramme de surface à partir d'un électrogramme endocavitaire
US8452109B2 (en) 2010-01-11 2013-05-28 Tandent Vision Science, Inc. Image segregation system with method for handling textures
US8532360B2 (en) 2010-04-20 2013-09-10 Atheropoint Llc Imaging based symptomatic classification using a combination of trace transform, fuzzy technique and multitude of features
US8872909B2 (en) 2010-06-10 2014-10-28 The Hong Kong Polytechnic University Method and apparatus for personal identification using finger imaging
EP2631872A4 (en) * 2010-10-18 2015-10-28 Univ Osaka CHARACTER EXTRACTION DEVICE, CHARACTER EXTRACTION METHOD AND PROGRAM THEREFOR
US9484046B2 (en) 2010-11-04 2016-11-01 Digimarc Corporation Smartphone-based methods and systems
US9367798B2 (en) 2012-09-20 2016-06-14 Brain Corporation Spiking neuron network adaptive control apparatus and methods
US8873838B2 (en) 2013-03-14 2014-10-28 Google Inc. Method and apparatus for characterizing an image
US9858529B2 (en) 2013-05-30 2018-01-02 President And Fellows Of Harvard College Systems and methods for multi-task Bayesian optimization
US20150019468A1 (en) 2013-07-09 2015-01-15 Knowmtech, Llc Thermodynamic computing
US9269012B2 (en) 2013-08-22 2016-02-23 Amazon Technologies, Inc. Multi-tracker object tracking
US10055013B2 (en) 2013-09-17 2018-08-21 Amazon Technologies, Inc. Dynamic object tracking for user interfaces
US10095917B2 (en) 2013-11-04 2018-10-09 Facebook, Inc. Systems and methods for facial representation
US10360901B2 (en) 2013-12-06 2019-07-23 Nuance Communications, Inc. Learning front-end speech recognition parameters within neural network training
US20150242747A1 (en) * 2014-02-26 2015-08-27 Nancy Packes, Inc. Real estate evaluating platform methods, apparatuses, and media
US9747573B2 (en) 2015-03-23 2017-08-29 Avatar Merger Sub II, LLC Emotion recognition for workforce analytics

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10679618B2 (en) 2016-11-03 2020-06-09 Samsung Electronics Co., Ltd. Electronic device and controlling method thereof
US11908465B2 (en) 2016-11-03 2024-02-20 Samsung Electronics Co., Ltd. Electronic device and controlling method thereof
KR20180092810A (ko) * 2017-02-10 2018-08-20 삼성전자주식회사 신경망 프루닝 및 재훈련을 위한 자동 임계값들
US11295195B2 (en) * 2017-03-03 2022-04-05 Samsung Electronics Co., Ltd. Neural network devices and methods of operating the same
US11397894B2 (en) 2017-08-16 2022-07-26 SK Hynix Inc. Method and device for pruning a neural network
KR20190018885A (ko) 2017-08-16 2019-02-26 에스케이하이닉스 주식회사 중첩 신경망을 프루닝하는 방법 및 장치
US11521039B2 (en) 2017-10-30 2022-12-06 Samsung Electronics Co., Ltd. Method and apparatus with neural network performing convolution
US11521046B2 (en) 2017-11-08 2022-12-06 Samsung Electronics Co., Ltd. Time-delayed convolutions for neural network device and method
WO2019231064A1 (ko) * 2018-06-01 2019-12-05 아주대학교 산학협력단 대용량 네트워크를 압축하기 위한 방법 및 장치
US11521038B2 (en) 2018-07-19 2022-12-06 Samsung Electronics Co., Ltd. Electronic apparatus and control method thereof
KR20200023695A (ko) * 2018-08-21 2020-03-06 재단법인 아산사회복지재단 연산량을 줄이는 학습 시스템
KR20200037700A (ko) * 2018-10-01 2020-04-09 인하대학교 산학협력단 엔트로피 기반 신경망(Neural Networks) 가지치기 방법 및 시스템
KR20200072588A (ko) * 2018-11-30 2020-06-23 서울대학교산학협력단 Cnn기반의 딥러닝 모델 학습장치 및 그 방법
US11681899B2 (en) 2018-12-07 2023-06-20 Samsong Electronics Co., Ltd. Dividing neural networks
US11144290B2 (en) 2019-09-13 2021-10-12 Huawei Technologies Co., Ltd. Method and apparatus for enabling autonomous acceleration of dataflow AI applications
US11573777B2 (en) 2019-09-13 2023-02-07 Huawei Technologies Co., Ltd. Method and apparatus for enabling autonomous acceleration of dataflow AI applications
WO2021080149A1 (ko) * 2019-10-22 2021-04-29 삼성전자 주식회사 스케일러블 딥 러닝 네트워크를 구동하는 전자 장치, 사용자 단말 및 방법
KR20220045882A (ko) * 2020-10-06 2022-04-13 한국전자통신연구원 특징 맵 부호화 및 복호화 장치 및 이를 이용한 방법

Also Published As

Publication number Publication date
US11423311B2 (en) 2022-08-23
US20160358070A1 (en) 2016-12-08

Similar Documents

Publication Publication Date Title
KR20160143548A (ko) 인공 신경 네트워크를 자동으로 조정하는 방법 및 장치
US10460230B2 (en) Reducing computations in a neural network
US20210390416A1 (en) Variable parameter probability for machine-learning model generation and training
US20200210847A1 (en) Ensembling of neural network models
US11853893B2 (en) Execution of a genetic algorithm having variable epoch size with selective execution of a training algorithm
JP7091209B2 (ja) 情報処理方法及び情報処理システム
US20110029469A1 (en) Information processing apparatus, information processing method and program
US20230196202A1 (en) System and method for automatic building of learning machines using learning machines
CN112513886A (zh) 信息处理方法、信息处理装置和信息处理程序
CN113255873A (zh) 一种聚类天牛群优化方法、系统、计算机设备和存储介质
US11048852B1 (en) System, method and computer program product for automatic generation of sizing constraints by reusing existing electronic designs
CN112257751A (zh) 神经网络剪枝方法
US20240095535A1 (en) Executing a genetic algorithm on a low-power controller
WO2020195940A1 (ja) ニューラルネットワークのモデル縮約装置
CN110097184B (zh) 信息处理方法以及信息处理系统
WO2022242471A1 (en) Neural network configuration parameter training and deployment method and apparatus for coping with device mismatch
CN115438575A (zh) 一种用于高精度翼型流场预测的分析方法
CN115879536A (zh) 一种基于因果效应的学习认知分析模型鲁棒性优化方法
CN112488319B (zh) 一种具有自适应配置生成器的调参方法和系统
CN110097183B (zh) 信息处理方法以及信息处理系统
JP7107797B2 (ja) 情報処理方法及び情報処理システム
CN111913685A (zh) 运算处理装置、运算处理方法和非暂态计算机可读介质
US20220121922A1 (en) System and method for automated optimazation of a neural network model
US20240005160A1 (en) Methods and systems for optimizing a peak memory usage of an artificial neural network graph
US20220405599A1 (en) Automated design of architectures of artificial neural networks

Legal Events

Date Code Title Description
A201 Request for examination