KR20210032140A - 뉴럴 네트워크에 대한 프루닝을 수행하는 방법 및 장치 - Google Patents
뉴럴 네트워크에 대한 프루닝을 수행하는 방법 및 장치 Download PDFInfo
- Publication number
- KR20210032140A KR20210032140A KR1020190113527A KR20190113527A KR20210032140A KR 20210032140 A KR20210032140 A KR 20210032140A KR 1020190113527 A KR1020190113527 A KR 1020190113527A KR 20190113527 A KR20190113527 A KR 20190113527A KR 20210032140 A KR20210032140 A KR 20210032140A
- Authority
- KR
- South Korea
- Prior art keywords
- pruning
- neural network
- data set
- layer
- weight threshold
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Image Analysis (AREA)
Abstract
뉴럴 네트워크에 대한 프루닝(pruning)을 수행하는 방법 및 장치는, 뉴럴 네트워크에 포함된 레이어들의 웨이트 분포에 기초하여 웨이트 임계값을 설정하고, 웨이트 임계값에 기초한 각 레이어의 프루닝이 뉴럴 네트워크의 추론 정확도의 변화에 미치는 영향을 예측하고, 뉴럴 네트워크에 포함된 레이어들 중 웨이트 임계값으로 프루닝될 현재 대상 레이어를 결정하고, 결정된 현재 대상 레이어를 프루닝한다.
Description
뉴럴 네트워크에 대한 프루닝을 수행하는 방법 및 장치에 관한다.
뉴럴 네트워크는 컴퓨터 과학적 아키텍처(computational architecture)를 참조하여 구현된 컴퓨팅 시스템이다. 최근 뉴럴 네트워크 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크를 이용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다.
뉴럴 네트워크를 처리하는 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 뉴럴 네트워크의 데이터, 학습량이 증가함에 따라, 뉴럴 네트워크를 구성하는 아키텍처의 연결성이 복잡해질 수 있고 과거의 학습 데이터에 대하여 정확도가 증가하는 대신 새로운 데이터에 대한 예측 값의 신뢰성이 저하되는 과적합(over fitting) 문제가 발생할 수 있다. 또한, 뉴럴 네트워크의 복잡도의 증가는 메모리 할당량의 과도한 증가를 초래하며, 소형화 및 상용화에 있어서의 비효율적인 성능이 초래될 수 있다. 따라서, 뉴럴 네트워크의 성능을 유지하면서 뉴럴 네트워크의 구현에 있어서 시스템 비용을 감소시키기 위한 압축 방법이 연구되고 있다.
뉴럴 네트워크에 대한 프루닝을 수행하는 방법 및 장치를 제공하는데 있다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따르면, 뉴럴 네트워크에 대한 프루닝(pruning)을 수행하는 방법은, 상기 뉴럴 네트워크에 포함된 레이어들의 웨이트 분포에 기초하여, 목표 프루닝 비율로 상기 뉴럴 네트워크를 프루닝하기 위한 웨이트 임계값을 설정하는 단계; 주어진 데이터 세트에 포함된 각 클래스에서 랜덤 추출된 소정 개수의 데이터 소스들로부터 마련된 프루닝 데이터 세트를 이용하여, 상기 웨이트 임계값에 기초한 각 레이어의 프루닝이 상기 뉴럴 네트워크의 추론 정확도의 변화에 미치는 영향을 예측하는 단계; 상기 예측된 영향에 기초하여 상기 뉴럴 네트워크에 포함된 상기 레이어들 중 상기 웨이트 임계값으로 프루닝될 현재 대상 레이어를 결정하는 단계; 및 상기 결정된 현재 대상 레이어를 프루닝하는 단계를 포함하고, 상기 뉴럴 네트워크에 대한 상기 프루닝은, 상기 현재 대상 레이어에 대한 프루닝이 완료된 경우, 상기 뉴럴 네트워크의 나머지 레이어에 대하여 반복적으로 수행된다.
다른 측면에 따르면, 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법을 실행하는 명령어들을 포함하는 하나 이상의 프로그램이 기록된 기록매체를 포함할 수 있다.
또 다른 측면에 따르면, 뉴럴 네트워크에 대한 프루닝(pruning)을 수행하는 장치는, 메모리; 및 프로그램을 실행함으로써 상기 뉴럴 네트워크에 대한 상기 프루닝을 수행하는 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는 상기 뉴럴 네트워크에 포함된 레이어들의 웨이트 분포에 기초하여, 목표 프루닝 비율로 상기 뉴럴 네트워크를 프루닝하기 위한 웨이트 임계값을 설정하고, 주어진 데이터 세트에 포함된 각 클래스에서 랜덤 추출된 소정 개수의 데이터 소스들로부터 마련된 프루닝 데이터 세트를 이용하여, 상기 웨이트 임계값에 기초한 각 레이어의 프루닝이 상기 뉴럴 네트워크의 추론 정확도의 변화에 미치는 영향을 예측하고, 상기 예측된 영향에 기초하여 상기 뉴럴 네트워크에 포함된 상기 레이어들 중 상기 웨이트 임계값으로 프루닝될 현재 대상 레이어를 결정하고, 상기 결정된 현재 대상 레이어를 프루닝하고, 상기 적어도 하나의 프로세서는 상기 현재 대상 레이어에 대한 프루닝이 완료된 경우, 상기 뉴럴 네트워크의 나머지 레이어에 대하여 반복적으로 상기 프루닝을 수행한다.
도 1은 일 실시예에 따른 뉴럴 네트워크(neural network)를 설명하기 위한 도면이다.
도 2a 및 도 2b는 일 실시예들에 따른 뉴럴 네트워크의 프루닝(pruning)을 설명하기 위한 도면들이다.
도 3은 일 실시예에 따른 뉴럴 네트워크 프루닝 장치의 하드웨어 구성을 도시한 블록도이다.
도 4는 일 실시예에 따른 프루닝 데이터 세트를 설명하기 위한 도면이다.
도 5a 내지 도 5c는 일 실시예들에 따른 프루닝 데이터 세트의 타입들을 설명하기 위한 도면들이다.
도 6은 일 실시예에 따른 뉴럴 네트워크 프루닝을 위한 웨이트 임계값을 설정하는 것을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 뉴럴 네트워크 프루닝이 수행되는 프로세스들을 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 뉴럴 네트워크에 대한 프루닝을 수행하는 방법의 흐름도이다.
도 2a 및 도 2b는 일 실시예들에 따른 뉴럴 네트워크의 프루닝(pruning)을 설명하기 위한 도면들이다.
도 3은 일 실시예에 따른 뉴럴 네트워크 프루닝 장치의 하드웨어 구성을 도시한 블록도이다.
도 4는 일 실시예에 따른 프루닝 데이터 세트를 설명하기 위한 도면이다.
도 5a 내지 도 5c는 일 실시예들에 따른 프루닝 데이터 세트의 타입들을 설명하기 위한 도면들이다.
도 6은 일 실시예에 따른 뉴럴 네트워크 프루닝을 위한 웨이트 임계값을 설정하는 것을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 뉴럴 네트워크 프루닝이 수행되는 프로세스들을 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 뉴럴 네트워크에 대한 프루닝을 수행하는 방법의 흐름도이다.
실시예들에서 사용되는 용어는 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 명세서에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 명세서의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 실시예들에서 사용되는 "구성된다" 또는 "포함한다" 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
아래에서는 첨부한 도면을 참고하여 실시예에 대하여 상세히 설명한다. 그러나 실시예는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 예에 한정되지 않는다.
도 1은 일 실시예에 따른 뉴럴 네트워크(neural network)를 설명하기 위한 도면이다.
뉴럴 네트워크란 사람의 두뇌가 정보를 처리하는 방식을 모방한 컴퓨팅 연산 시스템이다. 심층 뉴럴 네트워크(Deep Neural Network)는 뉴럴 네트워크를 구현하는 하나의 방식으로서, 뉴럴 네트워크에는 복수의 레이어들(layers)이 포함할 수 있다. 예를 들어, 심층 뉴럴 네트워크는, 입력 데이터가 인가되는 입력 레이어(Input Layer), 학습을 바탕으로 입력 데이터에 기반한 예측을 통해 도출된 결과를 출력하는 출력 레이어(Output Layer), 및 입력 레이어와 출력 레이어 사이에서 뉴럴 네트워크 연산을 수행하는 다중의 히든 레이어들(Hidden Layer)을 포함한다.
심층 뉴럴 네트워크는 정보를 처리하기 위해 이용되는 알고리즘에 따라, 컨볼루션 뉴럴 네트워크(Convolutional Neural Network), 리커런트 뉴럴 네트워크(Recurrent Neural Network) 등의 다양한 타입들로 분류될 수 있다.
이하, 뉴럴 네트워크 기술분야에서의 일반적인 관행과 마찬가지로 입력 레이어는 최하위 레이어, 출력 레이어는 최상위 레이어에 해당될 수 있다. 한편, 최상위 레이어인 출력 레이어부터 최하위 레이어인 입력 레이어까지 순서대로 레이어 순위가 지정되어 명명될 수 있다. 예를 들어, 히든 레이어 2는 히든 레이어 1 및 입력 레이어보다 상위 레이어이나, 출력 레이어보다는 하위 레이어에 해당할 수 있다.
심층 뉴럴 네트워크는 복수의 레이어들을 포함하고, 인접한 레이어들 사이에서 상대적 상위 레이어가, 상대적 하위 레이어의 출력 값에 웨이트를 곱하고 바이어스를 적용한 값을 인가 받아 소정의 연산 값을 출력하며, 해당 출력 값은 해당 상위 레이어의 인접한 상위 레이어에 유사한 방식으로 인가될 수 있다.
뉴럴 네트워크를 학습하는 방식을 딥러닝(deep learning)이라 하며, 상술한 바와 같이 딥러닝에는 컨볼루션 뉴럴 네트워크, 리커런트 뉴럴 네트워크 방식과 같이 다양한 알고리즘들이 이용될 수 있다.
이 때, 뉴럴 네트워크를 학습한다는 것은 레이어 간 웨이트 및 바이어스 또는 인접한 레이어 중 서로 다른 레이어들에 속하는 복수의 뉴런들(또는 노드들) 간의 웨이트 및 바이어스를 결정하고 갱신하는 것을 의미할 수 있다.
예를 들어, 레이어 구조, 레이어들, 뉴런들 간의 웨이트 및 바이어스를 총칭하여, 뉴럴 네트워크의 연결성(connectivity)이라 정의할 수 있다. 따라서, 뉴럴 네트워크를 학습한다는 것은 연결성을 구축하고 학습하는 것을 나타낼 수 있다.
도 1을 참조하면, 복수의 레이어들 각각은 복수의 노드들을 포함할 수 있다. 노드는 뉴럴 네트워크의 뉴런을 의미한다. 즉, 이하의 설명에서, 뉴런이라는 용어와 노드라는 용어는 동일한 의미를 나타낸다.
도 1을 살펴보면, 일 레이어의 복수의 노드들과 인접한 레이어의 복수의 노드들은 완전히 연결되어(fully-connected) 있다. 예를 들어, 히든 레이어 2의 노드 3-1은 히든 레이어 1의 모든 노드들, 즉, 노드 2-1 내지 노드 2-4 모두와 연결되어 각각의 노드들의 출력 값에 대하여 소정의 웨이트를 곱한 값을 입력 받는다.
입력 레이어에 입력된 데이터는 복수의 히든 레이어들을 거쳐 처리됨으로써, 출력 레이어에서 최종 출력 값이 출력된다. 이 때, 웨이트가 클수록 대응하는 두 개의 노드들 간의 연결성이 강화됨을 의미하며, 웨이트가 작을수록 두 개의 노드들 간의 연결성이 약화됨을 의미한다. 예를 들어, 웨이트는 0부터 1 사이의 값을 가질 수 있고, 웨이트가 0인 경우, 두 노드들 간의 연결성이 없음을 의미할 수 있다. 다만, 웨이트의 수치 범위는 이에 제한되지 않고, 뉴럴 네트워크의 구현 방식에 따라 다양할 수 있다.
한편, 웨이트를 통한 연결성이 증가할수록 뉴럴 네트워크의 연결성이 강화되며 복잡성이 증가할 수 있다. 이에 따라, 웨이트를 저장하기 위한 메모리 할당량이 증가하고, 뉴럴 네트워크 전체의 작업 수행 속도가 저하되어 효율성이 감소할 수 있다.
도 2a 및 도 2b는 일 실시예들에 따른 뉴럴 네트워크의 프루닝(pruning)을 설명하기 위한 도면들이다.
도 2a에서, 뉴럴 네트워크(210)는 프루닝이 수행되기 전 뉴럴 네트워크에 해당하고, 뉴럴 네트워크(220)는 프루닝이 수행된 후 뉴럴 네트워크에 해당한다.
구체적으로, 뉴럴 네트워크(210)에서 인접한 두 개의 서로 다른 레이어들에 포함된 모든 2 개의 뉴런 조합들 간에는 연결 관계가 형성되어 있다. 즉, 뉴럴 네트워크(210)는 완전 연결된(fully-connected) 뉴럴 네트워크이므로, 뉴럴 네트워크(210)에 포함된 인접한 서로 다른 레이어들에 속한 임의의 두 개의 뉴런들 간의 연결 강도를 나타내는 웨이트들은 0보다 큰 값들일 수 있다. 이와 같이, 모든 인접 레이어들의 뉴런들 간의 연결성이 존재하는 경우에는, 뉴럴 네트워크 전체의 복잡도가 증가될 수 있고, 이에 따라 뉴럴 네트워크의 예측 결과는 과적합(over fitting)으로 인해 정확도, 신뢰도가 감소될 수 있다.
뉴럴 네트워크의 복잡도를 감소시키기 위하여, 뉴럴 네트워크에 대한 프루닝이 수행될 수 있다.
뉴럴 네트워크 프루닝은, 예를 들어 도 2a에 도시된 바와 같이, 뉴럴 네트워크(210)에서 연결된 어느 노드들 간의 웨이트가 소정 임계값 이하인 경우, 해당 노드들 간의 연결성을 약화 또는 제거하는 처리를 수행하는 것을 의미할 수 있다. 예를 들어, 뉴럴 네트워크(210)에서 노드 1과 노드 2-3 간의 웨이트가 소정 임계값 이하인 경우, 프루닝은 뉴럴 네트워크(210)에서 노드 1과 노드 2-3 간의 웨이트를 0으로 설정함으로써, 프루닝된 뉴럴 네트워크(220)와 같이 노드 1과 노드 2-3 간의 연결성을 제거하는 처리이다. 마찬가지로, 프루닝된 뉴럴 네트워크(220)에서는 뉴럴 네트워크(210)에서의 일부 노드들 간의 연결성이 약화 또는 제거되었음이 예시되어 있다.
프루닝되기에 적절한 뉴럴 네트워크의 노드들의 결정을 위해, 뉴럴 네트워크의 각 레이어가 탐색될 수 있다. 이때, 뉴럴 네트워크의 추론 정확도, 즉 뉴럴 네트워크의 출력가 지나치게 감소되지 않는 선에서, 프루닝될 레이어들, 웨이트들이 탐색되는 것이 바람직할 수 있다.
프루닝 프로세스가 수행되는 동안, 뉴럴 네트워크에 포함된 레이어들의 웨이트들 중에서 미리 정의된 웨이트 임계값보다 작은 값을 갖는 뉴런들 간의 연결이 탐색될 수 있고, 이와 같은 웨이트를 갖는 뉴런들 간의 연결 관계는 제거되거나, 약화될 수 있다.
도 2b를 참고하면, 뉴럴 네트워크에서 n번째 레이어의 k번째 커널인 KERNELn_k (230)(n 및 k는 자연수)에 대하여 프루닝을 수행한 결과에 대해 도시되어 있다. 한편, 뉴럴 네트워크 프루닝을 위한 설정으로서, 예를 들어 웨이트 임계값 τ는 0.5인 것으로 가정하였다.
프루닝되기 전 KERNELn_k (230)은 다양한 값들의 웨이트들을 갖는다. 프루닝 프로세스에 의하여 KERNELn_k (230)의 웨이트들 중 웨이트 임계값 (τ= 0.5) 이하의 웨이트들은 모두 0으로 프루닝되고, 프루닝된 KERNELn_k (240)가 생성될 수 있다. 이와 같이, 프루닝된 KERNELn_k (240)는 KERNELn_k (230)에 비하여 인접한 노드들 간의 연결성을 약화시켰고, 이로 인해 0 값을 갖는 웨이트들로 인하여 인접한 노드들 간의 연산량은 감소될 수 있다.
도 3은 일 실시예에 따른 뉴럴 네트워크 프루닝 장치의 하드웨어 구성을 도시한 블록도이다.
도 3을 참고하면, 뉴럴 네트워크 프루닝 장치(100)는 프로세서(110) 및 메모리(120)를 포함한다. 도 3에 도시된 뉴럴 네트워크 프루닝 장치(100)에는 본 실시예들와 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴럴 네트워크 프루닝 장치(100)에는 도 3에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당업자에게 자명하다.
뉴럴 네트워크 프루닝 장치(100)는 뉴럴 네트워크에 대한 프루닝을 수행하는 컴퓨팅 디바이스에 해당된다. 예를 들어, 뉴럴 네트워크 양자화 장치(10)는 PC(personal computer), 서버 디바이스, 모바일 디바이스 등에 해당될 수 있고, 나아가서 뉴럴 네트워크를 이용한 음성 인식, 영상 인식 등을 수행하는 자율주행 자동차, 로보틱스, 스마트폰, 태블릿 디바이스, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스 등에 구비된 장치일 수 있으나, 이에 제한되지 않고 다양한 종류의 디바이스들에 해당될 수 있다.
프로세서(110)는 뉴럴 네트워크 프루닝 장치(100)의 동작들을 제어하기 위한 전반적인 제어 기능들을 수행하는 하드웨어 구성이다. 예를 들어, 프로세서(110)는 뉴럴 네트워크 프루닝 장치(100) 내의 메모리(120)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 프루닝 장치(100)를 전반적으로 제어할 수 있다. 프로세서(110)는 뉴럴 네트워크 프루닝 장치(100) 내에 구비된 CPU(central processing unit), GPU(graphics processing unit), AP(application processor), NPU(neural processing unit) 등으로 구현될 수 있으나, 이에 제한되지 않는다.
메모리(120)는 프로세서(110) 내에서 처리되는 각종 뉴럴 네트워크 데이터들을 저장하는 하드웨어로서, 예를 들어, 메모리(120)는 뉴럴 네트워크에 대한 프루닝 데이터들, 뉴럴 네트워크에 입력될 데이터 세트들 등을 저장할 수 있다. 또한, 메모리(120)는 프로세서(110)에 의해 구동될 다양한 애플리케이션들, 예를 들어 뉴럴 네트워크 프루닝을 위한 애플리케이션, 뉴럴 네트워크 구동 애플리케이션, 드라이버 등을 저장할 수 있다.
메모리(120)는 휘발성 메모리(volatile memory) 또는 불휘발성 메모리(nonvolatile memory) 중 적어도 하나를 포함할 수 있다. 불휘발성 메모리는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등을 포함한다. 휘발성 메모리는 DRAM (Dynamic RAM), SRAM (Static RAM), SDRAM (Synchronous DRAM), PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FeRAM (Ferroelectric RAM) 등을 포함한다. 나아가서, 메모리(120)는 HDD(Hard Disk Drive), SSD(Solid State Drive), CF(compact flash), SD(secure digital), Micro-SD(micro secure digital), Mini-SD(mini secure digital), xD(extreme digital) 또는 Memory Stick 중 적어도 하나를 포함할 수 있다.
프로세서(110)는 뉴럴 네트워크에 포함된 레이어들의 웨이트 분포에 기초하여, 목표 프루닝 비율로 뉴럴 네트워크를 프루닝하기 위한 웨이트 임계값을 설정한다. 이때, 프로세서(110)는 웨이트 분포가 표준정규분포(standard normal distribution)와 같은 가우시안 분포에 해당하는 것으로 가정한 상태에서, 목표 프루닝 비율에 대응하는 웨이트 값을 웨이트 임계값으로 설정할 수 있다. 다만, 프로세서(110)는 표준정규분포 외에도 다른 다양한 통계 분포들을 이용하여, 뉴럴 네트워크 프루닝에 적합한 웨이트 임계값을 설정할 수도 있다.
프로세서(110)는 뉴럴 네트워크에 프루닝 데이터 세트를 입력하여 프루닝 데이터 세트에 대한 뉴럴 네트워크의 추론 정확도를 반복적으로 측정 및 검증함으로써, 뉴럴 네트워크 프루닝을 수행할 수 있다. 프루닝 데이터 세트의 준비에 대해서는 이하 해당 도면들에서 구체적으로 설명하도록 한다.
프로세서(110)는 준비된 프루닝 데이터 세트를 이용하여, 웨이트 임계값에 기초한 각 레이어의 프루닝이 뉴럴 네트워크의 추론 정확도의 변화에 미치는 영향을 예측한다. 여기서, 영향 예측은, 각 레이어에 대한 프루닝이 수행되기 이전의 추론 정확도와 각 레이어에 대한 프루닝이 수행된 이후의 추론 정확도 간의 차이에 기초한 각 레이어 별 민감도(sensitivity)를 계산함으로써, 수행될 수 있다.
프로세서(110)는 예측된 영향에 기초하여 뉴럴 네트워크에 포함된 레이어들 중 웨이트 임계값으로 프루닝될 현재 대상 레이어(current subject layer)를 결정한다. 프로세서(110)는 이전에 프루닝된 레이어를 제외한 나머지 레이어들 중, 가장 낮은 민감도를 갖는 것으로 예측된 레이어를 현재 대상 레이어로 결정할 수 있다. 즉, 가장 낮은 민감도를 갖는 것으로 예측된 레이어는, 뉴럴 네트워크의 추론 정확도의 감소에 가장 적은 영향을 미치는 것으로 예측된 레이어를 의미할 수 있다.
프로세서(110)는 현재 대상 레이어가 결정된 경우, 결정된 현재 대상 레이어를 프루닝한다. 구체적으로, 프로세서(110)는 프루닝 데이터 세트에 대한 뉴럴 네트워크의 추론 정확도가 임계 정확도로 감소할 때까지 웨이트 임계값을 갱신하여 현재 대상 레이어의 웨이트들의 프루닝 비율을 조정함으로써, 현재 대상 레이어를 프루닝할 수 있다.
현재 대상 레이어에 대한 프루닝이 완료된 이후, 프로세서(110)는 뉴럴 네트워크의 나머지 레이어들 중에서 프루닝될 대상 레이어를 새로 탐색하고, 새로 탐색된 대상 레이어들에 대하여도 반복적으로 프루닝을 수행함으로써, 뉴럴 네트워크 전체에 대한 프루닝을 수행한다. 뉴럴 네트워크 전체에 대한 프루닝이 완료되는 조건은, 뉴럴 네트워크 프루닝이 초기 설정된 목표 프루닝 비율에 도달하는 경우이거나, 또는 뉴럴 네트워크에 포함된 모든 레이어들에 대하여 프루닝이 완료된 경우일 수 있다.
도 4는 일 실시예에 따른 프루닝 데이터 세트를 설명하기 위한 도면이다.
도 4를 참고하면, 프루닝 데이터 세트(420)는 뉴럴 네트워크의 프루닝이 수행되는 동안, 뉴럴 네트워크의 추론 정확도의 변화(예를 들어, 각 레이어 별 민감도)를 측정 및 검증하기 위하여 이용되는 데이터 세트일 수 있다.
프루닝 데이터 세트(420)는, 초기에 주어진 데이터 세트(410)로부터 준비될 수 있다. 여기서, 주어진 데이터 세트(410)는 ImageNet 데이터베이스, MNIST 데이터베이스 등과 같은 공개된(public) 데이터 세트일 수 있으나, 이에 제한되지 않고 다양한 종류의 데이터베이스가 활용될 수 있다.
프루닝 데이터 세트(420)는, 주어진 데이터 세트(410)를 그대로 이용할 때 발생될 수 있는 주어진 데이터 세트(410)에 과적합된 프루닝 현상을 줄이고, 뉴럴 네트워크 프루닝 시간을 단축시키기 위해 준비될 수 있다. 다만, 주어진 데이터 세트(410)의 타입에 따라 프루닝 데이터 세트(420)의 준비 과정은 다양할 수 있다.
도 5a 내지 도 5c는 일 실시예들에 따른 프루닝 데이터 세트의 타입들을 설명하기 위한 도면들이다.
도 5a를 참고하면, 프루닝 데이터 세트(512)(제 1 타입의 프루닝 데이터 세트)는 주어진 데이터 세트(511)와 동일한 데이터 세트에 해당할 수 있다. 앞서 설명된 바와 같이, 뉴럴 네트워크 프루닝에 있어서 주어진 데이터 세트(511)를 이용할 때 과적합의 문제가 발생되지 않을 것으로 예상되는 경우, 프루닝 데이터 세트(512)는 주어진 데이터 세트(511)와 동일한 것으로 준비될 수 있다. 예를 들어, 주어진 데이터 세트(511)가 ImageNet 데이터베이스에 해당하는 경우, 제 1 타입의 프루닝 데이터 세트는 ImageNet 데이터베이스의 수백~수천만장의 이미지들의 데이터 소스들일 수 있다.
도 5b를 참고하면, 프루닝 데이터 세트(522)(제 2 타입의 프루닝 데이터 세트)는 주어진 데이터 세트(521)에 포함된 다양한 클래스들 각각으로부터 소정 개수만큼의 데이터 소스들을 랜덤 추출함으로써 준비될 수 있다. 예를 들어, 주어진 데이터 세트(521)는 약 1,000개의 클래스들을 갖는 약 100만개 이상의 데이터 소스들을 포함하는 ImageNet 데이터베이스로부터 획득된 데이터 세트인 것으로 가정할 수 있다. 이와 같은 경우, 프루닝 데이터 세트(522)는 주어진 데이터 세트(521) 내 약 1,000개의 클래스들 각각에서 1~10개 정도의 데이터 소스들을 랜덤 추출하고, 추출된 데이터 소스들만을 포함하는 새로운 데이터 세트로 준비될 수 있다. 한편, 각 클래스 별로 랜덤 추출될 개수는 임의로 설정될 수 있으며, 각 클래스 별로 다양할 수 있다. 도 5b에서 설명된 준비 방식에 의하면, 데이터 세트의 크기가 상대적으로 많이 감소될 수 있으므로, 뉴럴 네트워크 프루닝의 처리 시간이 단축될 수 있으며, 프루닝된 뉴럴 네트워크가 특정 데이터베이스에만 과적합되는 현상을 방지할 수 있다.
한편, 'Inception-v3'와 같이 공지된 뉴럴 네트워크의 프루닝은, ImageNet 데이터베이스로부터 이미 알려진 각 클래스에 기초하여 도 5b에서 설명된 방식으로 마련된 제 2 타입의 프루닝 데이터 세트를 이용하여 수행될 수 있다.
하지만, 'Aic-classifier'와 같이 미지의 자체 데이터 세트로 학습하는 뉴럴 네트워크는 추론 알고리즘을 알 수 없으므로, ImageNet 데이터베이스에서 이미 정의된 클래스들 중에서 'Aic-classifier'와 같은 뉴럴 네트워크가 유효하게 추론 가능한 클래스들을 선별할 필요가 있다.
도 5c를 참고하면, 주어진 데이터 세트(531)(제 3 타입의 프루닝 데이터 세트)는 'Aic-classifier'와 같이 미지의 자체 데이터 세트로 학습하는 뉴럴 네트워크를 프루닝하기 위하여 마련될 수 있다. 프로세서(도 3의 110)는 프루닝 데이터 세트(533)를 다른 준비 방식에 따라 생성할 수 있다. 구체적으로 설명하면, 주어진 데이터 세트(531)는 뉴럴 네트워크에 입력되고, 프로세서(110)는 뉴럴 네트워크를 이용하여 주어진 데이터 세트(531)의 데이터 소스들(예를 들어, 이미지들)에 대한 추론을 수행한다. 프로세서(110)는 뉴럴 네트워크의 추론 결과로서, 주어진 데이터 세트(531)의 클래스 별로 데이터 소스들 각각의 레이블(label)을 결정할 수 있다. 여기서, 레이블은 해당 데이터 소스가 어떠한 분류에 속하는 것인지를 나타내는 식별자일 수 있다. 프로세서(110)는 일정 수준 이상의 정확도를 갖는 클래스들을 선별하고, 이 클래스들을 유효 클래스들(532)로 결정한다. 최종적으로, 프로세서(110)는 유효 클래스들(532) 각각에서 소정 개수, 예를 들어 1~10개 정도의 데이터 소스들을 랜덤 추출하고, 추출된 데이터 소스들만을 포함하는 새로운 데이터 세트를 프루닝 데이터 세트(533)로 준비할 수 있다. 다만, 도 5b에서 설명된 바와 마찬가지로, 각 유효 클래스(532) 별로 랜덤 추출될 개수는 임의로 설정될 수 있으며, 각 클래스 별로 다양할 수 있다.
도 5d는 도 5c의 프루닝 데이터 세트(제 3 타입의 프루닝 데이터 세트)를 마련하는 과정을 보다 상세하게 설명하기 위한 도면이다.
도 5d를 참고하면, 주어진 데이터 세트는 CLASS 1부터 CLASS 1000까지 총 1000개의 클래스들을 포함하는 것으로 가정한다. 프로세서(110)는 각 클래스별로 100개의 데이터 소스들의 샘플들을 랜덤으로 추출한다. 그리고 나서, 프로세서(110)는 뉴럴 네트워크를 이용하여 각 데이터 소스(예를 들어, 이미지)에 대한 추론을 수행하고, 데이터 소스들 각각에 대한 레이블(label)을 결정한다. 여기서, 레이블은 해당 데이터 소스가 어떠한 분류에 속하는 것인지를 나타내는 식별자일 수 있다.
프로세서(110)는 전체 클래스들 중에서 가장 빈번한 레이블의 비율이 소정 정확도(예를 들어, 60%) 이상인 클래스를 유효 클래스인 것으로 결정한다. 그 결과, 프로세서(110)는 이와 같은 조건을 만족하는 클래스들 CLASS 1, CLASS 3, ..., CLASS 999가 유효 클래스들인 것으로 선별할 수 있다.
프로세서(110)는 유효 클래스들 각각으로부터 소정 개수(예를 들어 1~50개) 정도의 데이터 소스들을 랜덤 추출하고, 추출된 데이터 소스들만을 포함하는 새로운 데이터 세트를 제 3 타입의 프루닝 데이터 세트로 준비할 수 있다. 한편, 각 클래스 별로 랜덤 추출될 샘플 개수, 유효 클래스를 선별하기 위한 소정 정확도의 수치, 유효 클래스로부터 랜덤 추출될 데이터 소스의 개수는 임의로 설정될 수 있으며, 각 클래스 별로 다양할 수 있다.
뉴럴 네트워크 프루닝 장치(도 3의 100)의 프로세서(110)는 도 5a 내지 도 5d에서 설명된 방식들에 의해 준비된 프루닝 데이터 세트를 이용함으로써, 해당 뉴럴 네트워크의 프루닝 프로세스에서 요구되는 추론 정확도의 측정 및 검증을 수행할 수 있다.
도 6은 일 실시예에 따른 뉴럴 네트워크 프루닝을 위한 웨이트 임계값을 설정하는 것을 설명하기 위한 도면이다.
도 6을 참고하면, 프로세서(110)는 뉴럴 네트워크에 포함된 레이어들의 웨이트 분포에 기초하여, 목표 프루닝 비율로 뉴럴 네트워크를 프루닝하기 위한 웨이트 임계값을 설정한다. 이때, 프로세서(110)는 웨이트 분포가 표준정규분포(standard normal distribution)와 같은 가우시안 분포에 해당하는 것으로 가정한 상태에서, 목표 프루닝 비율에 대응하는 웨이트 값을 웨이트 임계값으로 설정할 수 있다.
이하 수학식 1은 목표 프루닝 비율(α%)에 해당하는 웨이트 임계값 τ를 계산하기 위한 수학식이다.
구체적으로, 프로세서(110)는 먼저, 뉴럴 네트워크에 포함된 레이어들의 웨이트 분포에 대해 가정한 표준정규분포 상에서 목표 프루닝 비율(α%)에 해당하는 Z 값을 획득한다. 그리고 나서, 프로세서(110)는 웨이트들의 평균(μ)과 표준편차(σ)을 이용하여 웨이트 임계값(τ)를 계산한다.
예를 들어, 목표 프루닝 비율(α%)이 30%인 경우, Z = 0.39인 것으로 계산될 수 있고 웨이트들의 평균(μ)과 표준편차(σ)를 추가적으로 계산하고, 이를 통해 뉴럴 네트워크 프루닝을 위한 웨이트 임계값 τ가 설정될 수 있다.
다만, 프로세서(110)는 표준정규분포 외에도 다른 다양한 통계 분포들을 이용하여, 뉴럴 네트워크 프루닝에 적합한 웨이트 임계값을 설정할 수도 있다.
도 7은 일 실시예에 따른 뉴럴 네트워크 프루닝이 수행되는 프로세스들을 설명하기 위한 도면이다.
도 7을 참고하면, 701 단계에서, 프로세서(110)는 도 6에서 설명된 방식을 이용하여, 뉴럴 네트워크에 포함된 레이어들의 웨이트 분포에 기초하여 목표 프루닝 비율로 뉴럴 네트워크를 프루닝하기 위한 웨이트 임계값을 설정한다.
702 단계에서, 프로세서(110)는 뉴럴 네트워크의 각 레이어에 대한 민감도를 계산하고, 가장 낮은 민감도를 갖는 레이어를 현재 대상 레이어로 결정한다. 여기서, 가장 낮은 민감도를 갖는 것으로 결정된 레이어는, 뉴럴 네트워크 프루닝에 의한 뉴럴 네트워크의 추론 정확도의 감소에 가장 적은 영향을 미치는 것으로 예측된 레이어에 해당할 수 있다. 프로세서(110)는 민감도의 계산을 위하여, 앞서 도 5a 내지 도 5b에서 설명된 프루닝 데이터 세트들 중 적어도 어느 하나를 이용할 수 있고, 이와 같은 프루닝 데이터 세트를 이용함으로써, 웨이트 임계값에 기초한 각 레이어의 프루닝이 뉴럴 네트워크의 추론 정확도의 변화에 미치는 영향이 예측될 수 있다.
한편, 민감도는 이하의 수학식 2를 이용하여 계산될 수 있다.
수학식 2를 참고하면, τ는 웨이트 임계값이다. t는 뉴럴 네트워크의 레이어들에 대해 프루닝이 수행된 차수, k는 프루닝될 현재 대상 레이어의 인덱스를 나타낸다. 예를 들어, 프루닝될 현재 대상 레이어가 뉴럴 네트워크에서 3번째로 프루닝될 레이어에 해당하는 경우, t=3일 수 있다. Wt는 차수 t에서의 웨이트를 나타내고, 는 τ0를 기준으로 차수 t에서 프루닝된 k번째 레이어의 웨이트를 나타낸다. 와 각각은 Wt 를 이용한 뉴럴 네트워크의 추론 정확도 및 를 이용한 뉴럴 네트워크의 추론 정확도를 나타낸다.
즉, 수학식 2에 따르면, 민감도는 각 레이어에 대한 프루닝이 수행되기 이전의 추론 정확도와 각 레이어에 대한 프루닝이 수행된 이후의 추론 정확도 간의 차이에 기초하여 각 레이어 별로 계산될 수 있다.
703 단계에서, 프로세서(110)는 현재 대상 레이어에서, 웨이트 임계값 τ 이하의 웨이트를 프루닝한다.
704 단계에서, 프로세서(110)는 현재 대상 레이어의 프루닝 결과에 따른, 프루닝 데이터 세트에 대한 뉴럴 네트워크의 추론 정확도를 측정한다.
705 단계에서, 프로세서(110)는 측정된 추론 정확도와 임계 정확도를 비교하고, 측정된 추론 정확도가 임계 정확도보다 낮아졌는지 여부를 판단한다. 만약, 측정된 추론 정확도가 임계 정확도보다 낮아지지 않은 경우, 707 단계로 진행된다. 그러나, 측정된 추론 정확도가 임계 정확도보다 낮아진 경우, 706 단계로 진행된다.
706 단계에서, 프로세서(110)는 웨이트 임계값 τ에 의한 현재 대상 레이어의 프루닝에 의한 추론 정확도가 임계 정확도까지 감소되지 않은 경우, 웨이트 임계값 τ를 증가시킴으로써 웨이트 임계값 τ를 갱신한다. 예를 들어, 프로세서(110)는 τ = τ + δ와 같이, 웨이트 임계값 τ를 δ만큼 증가하여 갱신한다. 여기서, δ는 뉴럴 네트워크의 웨이트 분포, 현재 대상 레이어에 대한 프루닝 비율 등의 다양한 요소들을 고려하여 임의로 설정될 수 있는 값일 수 있다.
프로세서(110)는 갱신된 웨이트 임계값에 기초하여 다시 703 단계 내지 705 단계를 수행한다. 즉, 프로세서(110)는 프루닝 데이터 세트에 대한 뉴럴 네트워크의 추론 정확도가 임계 정확도로 감소할 때까지 웨이트 임계값을 갱신하여 현재 대상 레이어의 웨이트들의 프루닝 비율을 조정함으로써, 현재 대상 레이어를 프루닝한다.
한편, 703 단계 내지 706 단계는 이하의 수학식 3을 이용하여 수행될 수 있다.
수학식 3을 참고하면, β는 임계 정확도를 나타내고, 앞서 설명된 바와 같이 추론 정확도의 감소가 일정 수준 이하인 경우에는, 웨이트 임계값 τ를 증가시켜 현재 대상 레이어에 대한 프루닝 비율을 높이면서, 현재 대상 레이어에 대한 프루닝이 수행될 수 있다.
다시 705 단계에서의 판단 결과, 측정된 추론 정확도가 임계 정확도보다 낮아진 경우, 프로세서(110)는 현재 대상 레이어에 대한 프루닝을 종료하고 707 단계를 수행한다.
707 단계에서, 프로세서(110)는 뉴럴 네트워크의 모든 레이어들에 대한 프루닝이 완료되었는지 여부를 판단한다. 모든 레이어들에 대한 프루닝이 완료되지 않은 것으로 판단된 경우, 708 단계로 진행된다.
708 단계에서, 프로세서(110)는 직전에 수행되었던 현재 대상 레이어의 프루닝 결과를 메모리(120)에 저장하고, 다음 차수 (t+1)의 레이어에 대한 프루닝을 수행하기 위하여, 702 단계부터 다시 반복적으로 수행한다.
프로세서(110)는 707 단계에서의 판단 결과, 모든 레이어들에 대한 프루닝이 완료된 경우, 뉴럴 네트워크 프루닝을 종료한다.
한편, 뉴럴 네트워크 프루닝이 종료되기 위한 조건으로서, 707 단계에서 모든 레이어들에 대한 프루닝이 완료되었는지 여부가 판단되는 것으로 설명되었다. 하지만, 이에 제한되지 않고, 다른 실시예에 따르면, 프로세서(110)는 뉴럴 네트워크 프루닝을 종료하기 위한 조건으로서, 초기에 설정된 목표 프루닝 비율에 도달되었는지 여부를 판단할 수 있다. 즉, 프로세서(110)는 707 단계에서 뉴럴 네트워크의 레이어들에 대한 반복적인 프루닝 결과 초기에 설정된 목표 프루닝 비율에 도달된 경우, 뉴럴 네트워크 프루닝을 종료하도록 제어할 수 있다.
또 다른 실시예에 따르면, 프로세서(110)는 목표 프루닝 비율에 도달되거나, 또는 모든 레이어들에 대한 프루닝이 완료된 경우에, 뉴럴 네트워크 프루닝을 종료하기 위한 조건을 만족하는 것으로 판단할 수 있다.
한편, 종래에는 프루닝의 정확도 감소를 최소화하기 위하여 뉴럴 네트워크 재학습을 반복적으로 수행하였다. 하지만, 뉴럴 네트워크의 재학습이 진행되는 경우에는, 재학습에 많은 자원(예를 들어, 시간, GPU 등)이 요구될 수 있다. 구체적으로, Inception-v3 모델을 57% 프루닝하기 위한 시뮬레이션 결과, 6개의 GPU들을 이용하였을 때 7일 이상의 시간이 소요되고, 속도가 가장 빠른 ResNet-101의 경우에는 2~3일이 소요되는 것으로 측정되었다.
본 실시예에 따른 뉴럴 네트워크 프루닝 장치(100)에 의해 수행되는 뉴럴 네트워크 프루닝 방법에 의하면, 프루닝 데이터 세트를 이용한 뉴럴 네트워크의 재학습 없이 뉴럴 네트워크에 대한 프루닝이 수행될 수 있으므로, 보다 효율적인 뉴럴 네트워크의 프루닝이 가능해 질 수 있다.
도 8은 일 실시예에 따른 뉴럴 네트워크에 대한 프루닝을 수행하는 방법의 흐름도이다. 도 8의 방법은, 앞서 설명된 도면들에서 설명된 실시예들에 관련되므로, 이하 생략된 내용이라 할지라도, 앞서 도면들에서 설명된 내용들은 도 8의 방법에도 적용될 수 있다.
801 단계에서, 프로세서(110)는 뉴럴 네트워크에 포함된 레이어들의 웨이트 분포에 기초하여, 목표 프루닝 비율로 뉴럴 네트워크를 프루닝하기 위한 웨이트 임계값을 설정한다.
802 단계에서, 프로세서(110)는 프루닝 데이터 세트를 이용하여, 웨이트 임계값에 기초한 각 레이어의 프루닝이 뉴럴 네트워크의 추론 정확도의 변화에 미치는 영향을 예측한다.
803 단계에서, 프로세서(110)는 예측된 영향에 기초하여 뉴럴 네트워크에 포함된 레이어들 중 웨이트 임계값으로 프루닝될 현재 대상 레이어를 결정한다.
804 단계에서, 프로세서(110)는 결정된 현재 대상 레이어를 프루닝한다.
한편, 프로세서(110)는 현재 대상 레이어에 대한 프루닝이 완료된 경우, 뉴럴 네트워크의 나머지 레이어에 대하여 반복적으로 프루닝을 수행한다.
이하의 표 1은 재학습 없이 프루닝을 수행하는 경우, 종래의 방식들과 본 실시예의 방식의 정확도를 비교한 시뮬레이션 결과이다. 여기서, 본 실시예의 시뮬레이션 결과는, ImageNet 데이터베이스의 1000개의 클래스들 각각으로부터 1개씩의 데이터 소스를 랜덤 추출하여 총 1,000개의 데이터 소스들을 마련한 후, Inception-v3의 뉴럴 네트워크를 프루닝한 결과이다.
ThiNet | Threshold -based | 본 실시예 | |
재학습 여부 | X | X | X |
프루닝 비율(%) | 4.20 | 35.21 | 35.33 |
정확도(%) | 67.96 | 11.21 | 76.19 |
트레이닝 전(pre-trained) 뉴럴 네트워크의 정확도는 77.97%였다. 상기된 바에 따르면, 재학습 없이 프루닝을 수행하는 경우 종래 방식들은 정확도가 상당히 감소한 반면에, 본 실시예의 방식은 정확도가 불과 1.78%정도만이 감소될 뿐인 것으로 시뮬레이션되었다. 따라서, 본 실시예에 따른 프루닝 방식은 재학습 없이 뉴럴 네트워크를 프루닝하더라도, 정확도 손실을 줄이면서 높은 비율의 프루닝을 수행할 수 있다.
한편, 상술한 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 실시예들에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
본 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 실시예가 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예는 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 권리 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 실시예에 포함된 것으로 해석되어야 할 것이다.
Claims (22)
- 뉴럴 네트워크에 대한 프루닝(pruning)을 수행하는 방법에 있어서,
상기 뉴럴 네트워크에 포함된 레이어들의 웨이트 분포에 기초하여, 목표 프루닝 비율로 상기 뉴럴 네트워크를 프루닝하기 위한 웨이트 임계값을 설정하는 단계;
주어진 데이터 세트에 포함된 각 클래스에서 랜덤 추출된 소정 개수의 데이터 소스들로부터 마련된 프루닝 데이터 세트를 이용하여, 상기 웨이트 임계값에 기초한 각 레이어의 프루닝이 상기 뉴럴 네트워크의 추론 정확도의 변화에 미치는 영향을 예측하는 단계;
상기 예측된 영향에 기초하여 상기 뉴럴 네트워크에 포함된 상기 레이어들 중 상기 웨이트 임계값으로 프루닝될 현재 대상 레이어를 결정하는 단계; 및
상기 결정된 현재 대상 레이어를 프루닝하는 단계를 포함하고,
상기 뉴럴 네트워크에 대한 상기 프루닝은, 상기 현재 대상 레이어에 대한 프루닝이 완료된 경우, 상기 뉴럴 네트워크의 나머지 레이어에 대하여 반복적으로 수행되는, 방법. - 제 1 항에 있어서,
상기 현재 대상 레이어를 결정하는 단계는
상기 뉴럴 네트워크에서, 이전에 프루닝된 레이어를 제외한 나머지 레이어들 중 상기 영향에 가장 낮은 민감도를 갖는 것으로 예측된 레이어를 상기 현재 대상 레이어로 결정하는, 방법. - 제 2 항에 있어서,
상기 영향을 예측하는 단계는
각 레이어에 대한 프루닝이 수행되기 이전의 추론 정확도와 각 레이어에 대한 프루닝이 수행된 이후의 추론 정확도 간의 차이에 기초한 각 레이어 별 민감도(sensitivity)를 계산함으로써, 상기 영향을 예측하는, 방법. - 제 2 항에 있어서,
상기 가장 낮은 민감도를 갖는 것으로 예측된 레이어는
상기 뉴럴 네트워크의 추론 정확도의 감소에 가장 적은 영향을 미치는 것으로 예측된 레이어에 해당하는, 방법. - 제 1 항에 있어서,
상기 웨이트 임계값을 설정하는 단계는
상기 웨이트 분포가 표준정규분포에 해당하는 것으로 가정한 상태에서 상기 목표 프루닝 비율에 대응하는 웨이트 값을 상기 웨이트 임계값으로 설정하는, 방법. - 제 1 항에 있어서,
상기 현재 대상 레이어를 프루닝하는 단계는
상기 프루닝 데이터 세트에 대한 상기 뉴럴 네트워크의 추론 정확도가 임계 정확도로 감소할 때까지 상기 웨이트 임계값을 갱신하여 상기 현재 대상 레이어의 웨이트들의 프루닝 비율을 조정함으로써, 상기 현재 대상 레이어를 프루닝하는, 방법. - 제 6 항에 있어서,
상기 웨이트 임계값의 갱신은
현재 웨이트 임계값으로 프루닝된 웨이트들을 포함하는 상기 뉴럴 네트워크의 추론 정확도가 임계 정확도까지 감소되지 않은 경우, 상기 현재 웨이트 임계값을 증가시키는 것인, 방법. - 제 1 항에 있어서,
상기 뉴럴 네트워크에 대한 상기 프루닝은
상기 목표 프루닝 비율에 도달되거나, 또는 상기 뉴럴 네트워크의 모든 레이어들에 대한 프루닝이 완료된 경우에 종료되는, 방법. - 제 1 항에 있어서,
상기 프루닝 데이터 세트를 마련하는 단계를 더 포함하고,
상기 프루닝 데이터 세트는
상기 주어진 데이터 세트에 포함된 각 클래스마다 소정 개수의 데이터 소스들을 랜덤 추출하여 생성된 데이터 세트이거나, 또는 상기 주어진 데이터 세트로부터 유효 클래스들을 선별하고 선별된 각 유효 클래스마다 소정 개수의 데이터 소스들을 랜덤 추출하여 생성된 데이터 세트인, 방법. - 제 9 항에 있어서,
상기 프루닝 데이터 세트를 마련하는 단계는
상기 주어진 데이터 세트에 포함된 각 클래스로부터 소정 개수의 데이터 소스들의 샘플들을 랜덤 추출하는 단계;
상기 뉴럴 네트워크를 이용하여 상기 랜덤 추출된 샘플들에 대한 추론을 수행함으로써 각 샘플에 대응하는 레이블을 결정하는 단계;
상기 주어진 데이터 세트에 포함된 클래스들 중에서 가장 빈번한 레이블의 비율이 소정 정확도 이상인 클래스들을 유효 클래스들인 것으로 결정하는 단계; 및
상기 결정된 유효 클래스들 각각으로부터 소정 개수의 데이터 소스들을 랜덤 추출하는 단계를 포함하고,
상기 프루닝 데이터 세트는 상기 결정된 유효 클래스들로부터 랜덤 추출된 상기 소정 개수의 데이터 소스들에 기초하여 마련되는, 방법. - 제 1 항에 있어서,
상기 방법은 상기 프루닝 데이터 세트를 이용한 상기 뉴럴 네트워크의 재학습 없이, 상기 뉴럴 네트워크에 대한 상기 프루닝을 수행하는, 방법. - 제 1 항 내지 제 11 항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 비일시적인(non-transitory) 기록매체.
- 뉴럴 네트워크에 대한 프루닝(pruning)을 수행하는 장치에 있어서,
메모리; 및
프로그램을 실행함으로써 상기 뉴럴 네트워크에 대한 상기 프루닝을 수행하는 적어도 하나의 프로세서를 포함하고,
상기 적어도 하나의 프로세서는
상기 뉴럴 네트워크에 포함된 레이어들의 웨이트 분포에 기초하여, 목표 프루닝 비율로 상기 뉴럴 네트워크를 프루닝하기 위한 웨이트 임계값을 설정하고,
주어진 데이터 세트에 포함된 각 클래스에서 랜덤 추출된 소정 개수의 데이터 소스들로부터 마련된 프루닝 데이터 세트를 이용하여, 상기 웨이트 임계값에 기초한 각 레이어의 프루닝이 상기 뉴럴 네트워크의 추론 정확도의 변화에 미치는 영향을 예측하고,
상기 예측된 영향에 기초하여 상기 뉴럴 네트워크에 포함된 상기 레이어들 중 상기 웨이트 임계값으로 프루닝될 현재 대상 레이어를 결정하고,
상기 결정된 현재 대상 레이어를 프루닝하고,
상기 적어도 하나의 프로세서는
상기 현재 대상 레이어에 대한 프루닝이 완료된 경우, 상기 뉴럴 네트워크의 나머지 레이어에 대하여 반복적으로 상기 프루닝을 수행하는, 장치. - 제 13 항에 있어서,
상기 적어도 하나의 프로세서는
상기 뉴럴 네트워크에서, 이전에 프루닝된 레이어를 제외한 나머지 레이어들 중 상기 영향에 가장 낮은 민감도를 갖는 것으로 예측된 레이어를 상기 현재 대상 레이어로 결정하는, 장치. - 제 14 항에 있어서,
상기 적어도 하나의 프로세서는
각 레이어에 대한 프루닝이 수행되기 이전의 추론 정확도와 각 레이어에 대한 프루닝이 수행된 이후의 추론 정확도 간의 차이에 기초한 각 레이어 별 민감도(sensitivity)를 계산함으로써, 상기 영향을 예측하는, 장치. - 제 14 항에 있어서,
상기 가장 낮은 민감도를 갖는 것으로 예측된 레이어는
상기 뉴럴 네트워크의 추론 정확도의 감소에 가장 적은 영향을 미치는 것으로 예측된 레이어에 해당하는, 장치. - 제 13 항에 있어서,
상기 적어도 하나의 프로세서는
상기 웨이트 분포가 표준정규분포에 해당하는 것으로 가정한 상태에서 상기 목표 프루닝 비율에 대응하는 웨이트 값을 상기 웨이트 임계값으로 설정하는, 장치. - 제 13 항에 있어서,
상기 적어도 하나의 프로세서는
상기 프루닝 데이터 세트에 대한 상기 뉴럴 네트워크의 추론 정확도가 임계 정확도로 감소할 때까지 상기 웨이트 임계값을 갱신하여 상기 현재 대상 레이어의 웨이트들의 프루닝 비율을 조정함으로써, 상기 현재 대상 레이어를 프루닝하는, 장치. - 제 18 항에 있어서,
상기 웨이트 임계값의 갱신은
현재 웨이트 임계값으로 프루닝된 웨이트들을 포함하는 상기 뉴럴 네트워크의 추론 정확도가 임계 정확도까지 감소되지 않은 경우, 상기 현재 웨이트 임계값을 증가시키는 것인, 장치. - 제 13 항에 있어서,
상기 적어도 하나의 프로세서는
상기 뉴럴 네트워크에 대한 상기 프루닝이 상기 목표 프루닝 비율에 도달되거나 또는 상기 뉴럴 네트워크의 모든 레이어들에 대한 프루닝이 완료된 경우, 상기 뉴럴 네트워크에 대한 상기 프루닝을 종료하는, 장치. - 제 13 항에 있어서,
상기 프루닝 데이터 세트는
상기 주어진 데이터 세트에 포함된 각 클래스마다 소정 개수의 데이터 소스들을 랜덤 추출하여 생성된 데이터 세트이거나, 또는 상기 주어진 데이터 세트로부터 유효 클래스들을 선별하고 선별된 각 유효 클래스마다 소정 개수의 데이터 소스들을 랜덤 추출하여 생성된 데이터 세트인, 장치. - 제 21 항에 있어서,
상기 적어도 하나의 프로세서는
상기 주어진 데이터 세트에 포함된 각 클래스로부터 소정 개수의 데이터 소스들의 샘플들을 랜덤 추출하고 상기 뉴럴 네트워크를 이용하여 상기 랜덤 추출된 샘플들에 대한 추론을 수행함으로써 각 샘플에 대응하는 레이블을 결정하고 상기 주어진 데이터 세트에 포함된 클래스들 중에서 가장 빈번한 레이블의 비율이 소정 정확도 이상인 클래스들을 유효 클래스들인 것으로 결정하고 상기 결정된 유효 클래스들 각각으로부터 소정 개수의 데이터 소스들을 랜덤 추출함으로써, 상기 프루닝 데이터 세트를 마련하는, 장치.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190113527A KR20210032140A (ko) | 2019-09-16 | 2019-09-16 | 뉴럴 네트워크에 대한 프루닝을 수행하는 방법 및 장치 |
CN202010175255.7A CN112508186A (zh) | 2019-09-16 | 2020-03-13 | 训练用于图像识别的神经网络的方法和神经网络设备 |
US16/835,532 US12045723B2 (en) | 2019-09-16 | 2020-03-31 | Neural network method and apparatus |
EP20182765.6A EP3792840A1 (en) | 2019-09-16 | 2020-06-29 | Neural network method and apparatus |
JP2020146931A JP2021047854A (ja) | 2019-09-16 | 2020-09-01 | ニューラルネットワークに対するプルーニングを行う方法及びその装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190113527A KR20210032140A (ko) | 2019-09-16 | 2019-09-16 | 뉴럴 네트워크에 대한 프루닝을 수행하는 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210032140A true KR20210032140A (ko) | 2021-03-24 |
Family
ID=71266425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190113527A KR20210032140A (ko) | 2019-09-16 | 2019-09-16 | 뉴럴 네트워크에 대한 프루닝을 수행하는 방법 및 장치 |
Country Status (5)
Country | Link |
---|---|
US (1) | US12045723B2 (ko) |
EP (1) | EP3792840A1 (ko) |
JP (1) | JP2021047854A (ko) |
KR (1) | KR20210032140A (ko) |
CN (1) | CN112508186A (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023038159A1 (ko) * | 2021-09-07 | 2023-03-16 | 주식회사 노타 | 레이어 별 경량화를 통한 딥러닝 모델 최적화 방법 및 시스템 |
WO2023113548A1 (ko) * | 2021-12-16 | 2023-06-22 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
WO2024025386A1 (ko) * | 2022-07-28 | 2024-02-01 | 한국전자기술연구원 | 표준 정규분포 기반 양자화 기법을 이용한 딥러닝 네트워크 부호화/복호화 방법 및 장치 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200129457A (ko) * | 2019-05-08 | 2020-11-18 | 삼성전자주식회사 | 학습을 수행하는 뉴럴 네트워크 시스템, 그것의 학습 방법 및 뉴럴 네트워크 프로세서의 전이 학습 방법 |
KR20210039197A (ko) * | 2019-10-01 | 2021-04-09 | 삼성전자주식회사 | 데이터를 처리하는 방법 및 장치 |
US11935271B2 (en) * | 2020-01-10 | 2024-03-19 | Tencent America LLC | Neural network model compression with selective structured weight unification |
US20210334646A1 (en) * | 2020-04-28 | 2021-10-28 | International Business Machines Corporation | Robustness-aware quantization for neural networks against weight perturbations |
JP2023063944A (ja) | 2021-10-25 | 2023-05-10 | 富士通株式会社 | 機械学習プログラム、機械学習方法、及び、情報処理装置 |
CN114358254A (zh) * | 2022-01-05 | 2022-04-15 | 腾讯科技(深圳)有限公司 | 模型处理方法以及相关产品 |
WO2023220848A1 (en) * | 2022-05-16 | 2023-11-23 | Nvidia Corporation | Detecting robustness of a neural network |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7958063B2 (en) * | 2004-11-11 | 2011-06-07 | Trustees Of Columbia University In The City Of New York | Methods and systems for identifying and localizing objects based on features of the objects that are mapped to a vector |
US8301576B2 (en) | 2005-10-27 | 2012-10-30 | Ca, Inc. | Weighted pattern learning for neural networks |
US10262259B2 (en) | 2015-05-08 | 2019-04-16 | Qualcomm Incorporated | Bit width selection for fixed point neural networks |
US11423311B2 (en) * | 2015-06-04 | 2022-08-23 | Samsung Electronics Co., Ltd. | Automatic tuning of artificial neural networks |
US20170193361A1 (en) | 2015-12-31 | 2017-07-06 | Microsoft Technology Licensing, Llc | Neural network training performance optimization framework |
US10832136B2 (en) | 2016-05-18 | 2020-11-10 | Nec Corporation | Passive pruning of filters in a convolutional neural network |
US10762426B2 (en) | 2016-08-12 | 2020-09-01 | Beijing Deephi Intelligent Technology Co., Ltd. | Multi-iteration compression for deep neural networks |
US10175980B2 (en) | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
US10096134B2 (en) | 2017-02-01 | 2018-10-09 | Nvidia Corporation | Data compaction and memory bandwidth reduction for sparse neural networks |
US10832135B2 (en) | 2017-02-10 | 2020-11-10 | Samsung Electronics Co., Ltd. | Automatic thresholds for neural network pruning and retraining |
KR102413028B1 (ko) | 2017-08-16 | 2022-06-23 | 에스케이하이닉스 주식회사 | 중첩 신경망을 프루닝하는 방법 및 장치 |
US20190197406A1 (en) * | 2017-12-22 | 2019-06-27 | Microsoft Technology Licensing, Llc | Neural entropy enhanced machine learning |
JP2019139338A (ja) * | 2018-02-07 | 2019-08-22 | 富士通株式会社 | 情報処理装置、情報処理方法、およびプログラム |
US20190362235A1 (en) * | 2018-05-23 | 2019-11-28 | Xiaofan Xu | Hybrid neural network pruning |
KR20200070831A (ko) | 2018-12-10 | 2020-06-18 | 삼성전자주식회사 | 인공 신경망을 압축하기 위한 장치 및 방법 |
-
2019
- 2019-09-16 KR KR1020190113527A patent/KR20210032140A/ko unknown
-
2020
- 2020-03-13 CN CN202010175255.7A patent/CN112508186A/zh active Pending
- 2020-03-31 US US16/835,532 patent/US12045723B2/en active Active
- 2020-06-29 EP EP20182765.6A patent/EP3792840A1/en active Pending
- 2020-09-01 JP JP2020146931A patent/JP2021047854A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023038159A1 (ko) * | 2021-09-07 | 2023-03-16 | 주식회사 노타 | 레이어 별 경량화를 통한 딥러닝 모델 최적화 방법 및 시스템 |
WO2023113548A1 (ko) * | 2021-12-16 | 2023-06-22 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
WO2024025386A1 (ko) * | 2022-07-28 | 2024-02-01 | 한국전자기술연구원 | 표준 정규분포 기반 양자화 기법을 이용한 딥러닝 네트워크 부호화/복호화 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
JP2021047854A (ja) | 2021-03-25 |
US20210081798A1 (en) | 2021-03-18 |
US12045723B2 (en) | 2024-07-23 |
EP3792840A1 (en) | 2021-03-17 |
CN112508186A (zh) | 2021-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20210032140A (ko) | 뉴럴 네트워크에 대한 프루닝을 수행하는 방법 및 장치 | |
CN107679617B (zh) | 多次迭代的深度神经网络压缩方法 | |
JP6755849B2 (ja) | 人工ニューラルネットワークのクラスに基づく枝刈り | |
CN107729999B (zh) | 考虑矩阵相关性的深度神经网络压缩方法 | |
TWI689871B (zh) | 梯度提升決策樹(gbdt)模型的特徵解釋方法和裝置 | |
CN104869126B (zh) | 一种网络入侵异常检测方法 | |
CN108108762B (zh) | 一种用于冠心病数据的核极限学习机及随机森林分类方法 | |
CN111914253B (zh) | 一种入侵检测的方法、***、设备及可读存储介质 | |
CN110210625B (zh) | 基于迁移学习的建模方法、装置、计算机设备和存储介质 | |
CN111950810B (zh) | 一种基于自演化预训练的多变量时间序列预测方法和设备 | |
CN111275175A (zh) | 神经网络训练方法、装置、图像分类方法、设备和介质 | |
CN114358274A (zh) | 训练用于图像识别的神经网络的方法和设备 | |
CN113609337A (zh) | 图神经网络的预训练方法、训练方法、装置、设备及介质 | |
KR20210066545A (ko) | 반도체 소자의 시뮬레이션을 위한 전자 장치, 방법, 및 컴퓨터 판독가능 매체 | |
CN114168318A (zh) | 存储释放模型的训练方法、存储释放方法及设备 | |
CN112819151A (zh) | 用于识别图像的方法和设备以及训练方法 | |
CN113408802B (zh) | 能耗预测网络的训练、能耗预测方法、装置和计算机设备 | |
CN113222014A (zh) | 图像分类模型训练方法、装置、计算机设备和存储介质 | |
US20210312272A1 (en) | Neuromorphic circuit, neuromorphic array learning method, and program | |
CN111602145A (zh) | 卷积神经网络的优化方法及相关产品 | |
WO2022162839A1 (ja) | 学習装置、学習方法、及び、記録媒体 | |
CN114118411A (zh) | 图像识别网络的训练方法、图像识别方法及装置 | |
KR20200063904A (ko) | 다중 간선 라벨 그래프의 정점들 간 관련도를 측정하는 방법 및 장치 | |
CN116737607B (zh) | 样本数据缓存方法、***、计算机设备和存储介质 | |
CN113886579B (zh) | 行业资讯正负面模型构建方法和***、识别方法和*** |