KR20200132627A - 신경망 모델 장치 및 신경망 모델의 압축 방법 - Google Patents

신경망 모델 장치 및 신경망 모델의 압축 방법 Download PDF

Info

Publication number
KR20200132627A
KR20200132627A KR1020190112019A KR20190112019A KR20200132627A KR 20200132627 A KR20200132627 A KR 20200132627A KR 1020190112019 A KR1020190112019 A KR 1020190112019A KR 20190112019 A KR20190112019 A KR 20190112019A KR 20200132627 A KR20200132627 A KR 20200132627A
Authority
KR
South Korea
Prior art keywords
neural network
network model
training data
input value
output value
Prior art date
Application number
KR1020190112019A
Other languages
English (en)
Inventor
김재덕
박치연
손영철
최인권
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to EP20804770.4A priority Critical patent/EP3935578A4/en
Priority to CN202080009630.9A priority patent/CN113316795A/zh
Priority to PCT/KR2020/005686 priority patent/WO2020231049A1/en
Priority to US16/868,136 priority patent/US11657284B2/en
Publication of KR20200132627A publication Critical patent/KR20200132627A/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

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

Abstract

전자 장치가 개시된다. 본 전자 장치는, 적어도 하나의 인스트럭션(instruction)이 저장된 메모리, 메모리와 연결되어 전자 장치를 제어하는 프로세서를 포함하고, 프로세서는, 적어도 하나의 인스트럭션을 실행함으로써, 훈련된 신경망 모델에 기초하여 훈련 데이터 쌍을 획득하고, 상기 획득된 훈련 데이터 쌍에 기초하여 상기 훈련된 신경망 모델이 압축된 압축 신경망 모델을 훈련시킨다.

Description

신경망 모델 장치 및 신경망 모델의 압축 방법 { NEURAL NETWORK MODEL APPARATUS AND COMPRESSING METHOD OF NEURAL NETWORK MODEL }
본 개시는 신경망 모델을 압축하는 전자 장치 및 그 압축 방법에 관한 것이다. 보다 상세하게는, 이미 훈련된 원본 신경망(Neural Network) 모델이 압축되는 과정에서 발생하는 성능 저하를 회복하기 위한 신경망 모델 전자 장치 및 압축 방법에 관한 것이다.
인공 신경망은 광범위한 기능을 수행하도록 설계되고 훈련될 수 있으며, 그 응용 기술은 이미지 처리, 음성 인식, 추론/예측, 지식 표현 및 동작 제어 등을 포함한다. 예컨데 심층 신경망(Deep Neural Network) 모델들에는 많은 수의 레이어들(layer)과 파라미터들(가중치들)이 포함될 수 있다.
이러한 심층 신경망은 일반적으로 대형 데이터베이스로부터 많은 양의 훈련 데이터로 레이어 수가 많은 대형 모델을 사용할수록 더욱 양호한 성능을 나타내는 경향이 있다.
따라서, 스마트폰, 로봇, 가전제품, IoT 기기 등 디바이스 제품들이 이러한 신경망 모델을 온 디바이스 형태로 적용하게 될 경우에는, 메모리 사용량, 연산의 복잡도, 소비 전력 등을 최소화하기 위해, 신경망 모델을 디바이스 자원의 한계를 고려하여 압축하여 탑재할 필요가 있다.
또한, 데이터 센터와 같이 수백만의 프로세스를 처리해야 하는 클라우드 응용 서버에서도 신경망 모델을 압축하는 것이 필요하다.
도 1은 일반적인 신경망 모델 압축 프로세서를 설명하기 위한 도면이다
도 1을 참조하면, 신경망 모델 압축 파이프라인(10)은 모델 압축(11)과 파인 튜닝(Fine Tuning, 12) 과정을 수행하도록 구성된다.
원본 모델(1)은 모델 압축 모듈(101)을 통해 Weight Pruning, Channel Pruning, Matrix Factorization, Quantization 등의 과정을 거쳐 1차 압축 모델(2)로 출력된다. 1차 압축 모델(2)은 원본 모델(1)보다 성능이 저하될 수도 있다.
이때, 성능 회복을 위해, 1차 압축 모델(2)은 파인 튜닝 모듈(103)을 통해 훈련 데이터(예를 들어, 원본 모델을 생성할 때 사용했던 실제 훈련 데이터)를 기반으로 훈련될 수 있고, 그 결과 1차 압축 모델 대비 성능이 회복된 최종 압축 모델(3)이 얻어진다.
이와 같이, 모델 압축 과정에서 원본 모델(1)의 일부를 제거/변경하였기 때문에 원본에 비해 성능이 저하되는 문제가 발생하고, 저하된 성능을 복구(recover)하기 위해 실제 훈련 데이터를 이용하여 파인 튜닝하는 과정이 필수적으로 필요하다. 파인 튜닝은 모델 압축 뿐만 아니라 증분식 훈련(incremental learning), 및 전이 훈련(transfer learning)등에서도 수행되고 있다.
이와 같이, 파인 튜닝을 위해서는 실제 훈련 데이터셋이 필요하나, 대부분의 압축 과정에서는 원본 모델을 생성할 때 사용했던 실제 훈련 데이터셋을 보유하고 있지 않거나, 사적인 혹은 법적인 이유로 실제 훈련 데이터셋을 공유하기 어려운 문제가 있을 수 있다.
본 개시는 훈련된 신경망 모델로부터 훈련 데이터셋을 생성하는 신경망 모델의 압축 방법을 제공한다.
또한, 본 개시는, 원본 신경망 모델을 훈련시키는 데에 이용된 훈련 데이터셋이 없음에도, 정확도 높은 성능을 갖는 압축 신경망 모델을 획득하는 전자 장치 를 제공한다.
또한, 본 개시는 훈련 데이터셋 없이도 압축 모델을 제공할 수 있는 서비스 서버 및 그 압축 방법을 제공한다.
또한, 본 개시는 신경망 모델이 포함된 어플리케이션을 디바이스 스펙에 맞게 압축하여 제공하는 AI앱 서비스 서버 장치 및 방법을 제공한다.
본 개시의 일 실시 예에 따른 전자 장치는, 적어도 하나의 인스트럭션(instruction)이 저장된 메모리, 상기 메모리와 연결되어 상기 전자 장치를 제어하는 프로세서를 포함하고, 상기 프로세서는, 상기 적어도 하나의 인스트럭션을 실행함으로써, 훈련된 신경망 모델에 기초하여 훈련 데이터 쌍을 획득하고, 상기 획득된 훈련 데이터 쌍에 기초하여 상기 훈련된 신경망 모델이 압축된 압축 신경망 모델을 훈련시키는 것을 특징으로 한다.
본 개시의 일 실시 예에 따른 전자 장치의 신경망 모델 압축 방법은, 원본 신경망 모델로부터 압축 알고리즘을 통해 1차 압축 신경망 모델을 생성하는 단계, 상기 원본 신경망 모델에 기초하여 훈련 데이터 쌍을 생성하는 단계, 및 상기 생성된 훈련 데이터 쌍을 기초로 상기 1차 압축 신경망 모델에 대한 파인 튜닝(Fine Tuning)을 수행하여 최종 압축된 신경망 모델을 생성하는 단계를 포함한다.
이때, 훈련 데이터 쌍을 생성하는 단계는, 원본 신경망 모델을 이용하여 하나 이상의 목적함수를 생성하는 단계, 상기 생성된 목적 함수를 이용하여 출력값이 최소가 되는 입력값을 획득하는 단계, 및 상기 획득된 입력값을 상기 원본 신경망 모델에 입력하여 출력값을 획득함으로써, 상기 획득된 입력값에 대응되는 출력값을 훈련 데이터 쌍으로 저장하는 단계를 포함할 수 있다.
본 개시의 일 실시예에 따른 신경망 모델 압축 방법은, 원본 신경망 모델로부터 훈련 데이터 쌍을 생성하는 단계, 및 상기 생성된 훈련 데이터상을 이용하여 원본 신경망 모델을 압축하는 단계를 포함하는 것을 특징으로 한다.
본 개시의 일 실시 예에 따른 신경망 모델 압축 방법은, 원본 신경망 모델로부터 훈련 데이터 쌍을 생성하는 단계, 압축 알고리즘을 이용하여 원본 신경망 모델을 압축하는 단계, 및 상기 압축된 모델을 상기 생성된 훈련 데이터 쌍을 이용하여 파인 튜닝 하는 단계를 포함한다.
본 개시의 일 실시 예에 따른 서버의 신경망 모델 압축 서비스 제공 방법은, 원본 신경망 모델과 상기 원본 신경망 모델에 대한 압축 요청을 수신하는 단계, 상기 수신된 원본 신경망 모델을 이용하여 복수개의 훈련 데이터 쌍을 생성하는 단계, 상기 수신된 원본 신경망 모델을 1차적으로 압축하는 단계, 상기 생성된 훈련 데이터 쌍을 이용하여 상기 압축된 신경망 모델을 파인 튜닝하는 단계, 및 상기 파인 튜닝된 최종 압축 모델을 제공하는 단계를 포함한다.
본 개시의 일 실시 예에 따른 서버의 신경망 모델 압축 서비스 제공 방법은, 인공지능 모델이 포함된 적어도 하나의 AI앱(AI Application)을 수신하는 단계, 상기 수신된 AI앱을 애플리케이션 스토어에 등록하는 단계, 상기 등록된 AI앱에서 분리된 인공지능 모델을 디바이스 요구 조건에 맞게 압축 알고리즘을 수행하여 압축하는 단계, 상기 인공지능 모델로부터 훈련 데이터를 생성하는 단계, 및 상기 생성된 훈련데이터를 이용하여 상기 압축된 인공지능 모델을 파인 튜닝하고, 파인 튜닝된 인공지능 모델이 결합된 AI앱을 제공하는 단계를 포함하는 것을 특징으로 한다.
본 개시의 일 실시 예에 따른 서버의 신경망 모델 압축 서비스 제공 방법은, 훈련된 신경망 모델이 포함된 적어도 하나의 AI앱(AI Application)을 수신하는 단계, 상기 수신된 AI앱에서 상기 훈련된 신경망 모델을 분리하여 디바이스 요구 조건에 맞게 압축하는 단계, 상기 신경망 모델로부터 훈련 데이터를 생성하는 단계, 상기 생성된 훈련 데이터를 이용하여 상기 압축된 신경망 모델을 파인 튜닝하는 단계, 및 상기 파인 튜닝된 신경망 모델을 기초로 상기 AI앱을 재구성하여 애플리케이션 스토어에 등록하는 단계를 포함하는 것을 특징으로 한다.
본 개시의 일 실시 예에 따른 서버 장치는, 적어도 하나의 인스트럭션이 저장된 메모리, 통신부, 상기 메모리 및 통신부와 연결되어 상기 서버 장치를 제어하는 프로세서를 포함하고, 상기 프로세서는, 상기 적어도 하나의 인스트럭션을 실행함으로써, 상기 통신부를 통해 외부 장치로부터 훈련된 원본 신경망 모델 및 상기 원본 신경망 모델에 대한 압축 요청이 수신되면, 상기 원본 신경망 모델을 압축하여 압축 신경망 모델을 획득하고, 상기 원본 신경망 모델에 기초하여 훈련 데이터 쌍을 획득하며, 상기 획득된 훈련 데이터 쌍에 기초하여 상기 압축 신경망 모델을 훈련시키고, 상기 훈련된 압축 신경망 모델을 상기 통신부를 통해 상기 외부 장치로 전송한다.
본 개시의 일 실시 예에 따른 서버 장치는, 적어도 하나의 인스트럭션이 저장된 메모리, 통신부, 상기 메모리 및 통신부와 연결되어 상기 서버 장치를 제어하는 프로세서를 포함하고, 상기 프로세서는, 상기 적어도 하나의 인스트럭션을 실행함으로써, 상기 통신부를 통해 외부 장치로부터 상기 외부 장치에 대한 정보 및 훈련된 원본 신경망 모델이 수신되면, 상기 훈련된 원본 신경망 모델을 상기 수신된 외부 장치에 대한 정보를 기초로 압축하여 압축 신경망 모델을 획득하고, 상기 훈련된 원본 신경망 모델에 기초하여 훈련 데이터 쌍을 획득하며, 상기 획득된 훈련 데이터 쌍에 기초하여 상기 압축 신경망 모델을 훈련시키고, 상기 훈련된 압축 신경망 모델을 상기 통신부를 통해 상기 외부 장치로 전송함을 특징으로 한다.
본 개시에 따른 전자 장치는, 이미 훈련된 원본 신경망 모델로부터 훈련 데이터의 분포와 요약된 지식을 추출해냄으로써, 원본 신경망 모델의 훈련에 이용된 실제 훈련 데이터를 대체할 수 있는 신규 훈련 데이터셋을 생성할 수 있다는 효과가 있다.
또한, 이와 같이 원본 신경망 모델로부터 생성된 훈련 데이터 셋을 모델 압축시 파인 튜닝 과정에서 이용하게 되면, 실제 원본 훈련 데이터 없이도 정확도 높은 신경망 모델의 압축이 가능하다는 장점이 있다.
도 1은 일반적인 신경망 모델 압축 프로세스를 설명하기 위한 도면,
도 2는 본 개시의 일 실시 예에 따른 전자 장치의 구성을 설명하기 위한 블록도,
도 3은 본 개시의 일 실시 예에 따른 전자 장치의 압축 프로세스를 설명하기 위한 도면,
도 4는 본 개시의 전자 장치가 목적 함수를 만족하는 입력 값을 찾는 과정의 일 예를 설명하기 위한 도면,
도 5는 본 개시의 전자 장치가 목적 함수를 만족하는 복수의 입력 값을 찾는 과정의 일 예를 설명하기 위한 도면,
도 6은 본 개시의 전자 장치가 각 출력 값에 대하여 복수의 입력 값을 획득하는 일 예를 설명하기 위한 도면,
도 7a 및 도 7b는 본 개시에 따른 훈련 데이터 생성 모듈의 구체적인 동작 과정의 예들을 설명하기 위한 블록도,
도 8a, 도 8b 및 도 8c는 신규 훈련 데이터를 생성하여 이용하는 본 개시의 전자 장치의 효과를 설명하기 위한 실험 결과를 나타내는 표 및 그래프들,
도 9는 본 개시의 전자 장치가 타겟 장치의 성능에 따라 압축된 모델의 크기나 규격을 달리하는 일 예를 설명하기 위한 표,
도 10은 본 개시의 다양한 실시 예에 따른 전자 장치의 상세한 구성을 설명하기 위한 블록도,
도 11a 및 11b는 서버인 전자 장치가 사용자 장치의 요청에 따라 '훈련된 압축 신경망 모델'을 제공하는 예를 설명하기 위한 도면 및 블록도,
도 12a 및 도 12b는 서버인 전자 장치가 외부로부터 제공받은 AI 앱 내 신경망 모델을 압축하여 AI 앱을 재구성하고, 재구성된 AI 앱을 애플리케이션 스토어를 통해 제공하는 예를 설명하기 위한 도면 및 블록도,
도 13은 사용자 장치인 전자 장치가 서버로부터 수신된 원본 신경망 모델로부터 훈련된 압축 신경망 모델을 획득하는 예를 설명하기 위한 도면,
도 14는 본 개시의 일 실시 예에 따른 전자 장치의 모델 압축 방법을 설명하기 위한 순서도
도 15는 본 개시의 모델 압축 방법이 훈련 데이터 쌍을 획득하는 구체적인 예를 설명하기 위한 도면,
도 16은 서버인 전자 장치의 모델 압축 방법이 외부 장치의 요청에 따라 '훈련된 압축 신경망 모델'을 제공하는 예를 설명하기 위한 순서도, 그리고
도 17은 서버인 전자 장치의 모델 압축 방법이 신경망 모델을 압축하여 AI 앱을 재구성하고, 재구성된 AI 앱을 제공하는 예를 설명하기 위한 순서도이다.
본 개시에 대하여 구체적으로 설명하기에 앞서, 본 명세서 및 도면의 기재 방법에 대하여 설명한다.
먼저, 본 명세서 및 청구범위에서 사용되는 용어는 본 개시의 다양한 실시 예들에서의 기능을 고려하여 일반적인 용어들을 선택하였다 하지만, 이러한 용어들은 당해 기술 분야에 종사하는 기술자의 의도나 법률적 또는 기술적 해석 및 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 일부 용어는 출원인이 임의로 선정한 용어도 있다. 이러한 용어에 대해서는 본 명세서에서 정의된 의미로 해석될 수 있으며, 구체적인 용어 정의가 없으면 본 명세서의 전반적인 내용 및 당해 기술 분야의 통상적인 기술 상식을 토대로 해석될 수도 있다.
또한, 본 명세서에 첨부된 각 도면에 기재된 동일한 참조번호 또는 부호는 실질적으로 동일한 기능을 수행하는 부품 또는 구성요소를 나타낸다. 설명 및 이해의 편의를 위해서 서로 다른 실시 예들에서도 동일한 참조번호 또는 부호를 사용하여 설명한다. 즉, 복수의 도면에서 동일한 참조 번호를 가지는 구성요소를 모두 도시되어 있다고 하더라도, 복수의 도면들이 하나의 실시 예를 의미하는 것은 아니다.
또한, 본 명세서 및 청구범위에서는 구성요소들 간의 구별을 위하여 "제1", "제2" 등과 같이 서수를 포함하는 용어가 사용될 수 있다. 이러한 서수는 동일 또는 유사한 구성요소들을 서로 구별하기 위하여 사용하는 것이며 이러한 서수 사용으로 인하여 용어의 의미가 한정 해석되어서는 안 된다. 일 예로, 이러한 서수와 결합된 구성요소는 그 숫자에 의해 사용 순서나 배치 순서 등이 제한되어서는 안 된다. 필요에 따라서는, 각 서수들은 서로 교체되어 사용될 수도 있다.
본 명세서에서 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "구성되다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
본 개시의 실시 예에서 "모듈", "유닛", "부(part)" 등과 같은 용어는 적어도 하나의 기능이나 동작을 수행하는 구성요소를 지칭하기 위한 용어이며, 이러한 구성요소는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다. 또한, 복수의 "모듈", "유닛", "부(part)" 등은 각각이 개별적인 특정한 하드웨어로 구현될 필요가 있는 경우를 제외하고는, 적어도 하나의 모듈이나 칩으로 일체화되어 적어도 하나의 프로세서로 구현될 수 있다.
또한, 본 개시의 실시 예에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적인 연결뿐 아니라, 다른 매체를 통한 간접적인 연결의 경우도 포함한다. 또한, 어떤 부분이 어떤 구성요소를 포함한다는 의미는, 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
압축 신경망 모델을 획득하기 위해 원본 신경망 모델을 압축하는 동작은, 신경망 모델의 적어도 일부분을 제거/변경하여 데이터 크기를 줄이는 제1 과정 및 데이터 크기가 줄어든 신경망 모델을 훈련시키는 제2 과정(Fine Tuning)을 모두 포함할 수 있다.
다만, 상술한 제1 및 제2 과정들 중, 제1 과정 자체를 신경망 모델의 '압축'으로 볼 수도 있으며, 따라서 제2 과정은 제1 과정을 통해 압축된 '압축 신경망 모델'(또는 1차 압축 신경망 모델)을 훈련시키는 과정으로 설명될 수도 있다.
그리고, 설명의 편의 및 혼동 방지를 위해, 본 개시의 이하 실시 예들에서 '압축', '압축한다', '1차 압축한다'는 표현은, 원본 신경망 모델의 적어도 일부분을 제거/변경하여 모델의 크기를 줄이는 제1 과정만을 지칭하도록 기재되었다. 그리고, 원본 신경망 모델이 압축된 '압축 신경망 모델'(또는 1차 압축 신경망 모델)은, 아직 제2 과정까지는 수행되지 않은 상태를 지칭하도록 기재되었다.
이하, 첨부된 도면을 이용하여 본 개시에 대해 구체적으로 설명한다.
도 2는 본 개시의 일 실시 예에 따른 전자 장치(100)의 구성을 설명하기 위한 블록도이다.
전자 장치(100)는, 스마트폰, 서버 장치, 데스크탑 PC, 노트북 PC, 태블릿 PC, TV, 셋탑박스, 키오스크, 웨어러블 디바이스 등 다양한 기기에 해당할 수 있으며, 서로 통신 가능한 복수의 기기를 포함하는 시스템 형태일 수도 있다.
도 2를 참조하면, 전자 장치(100)는 메모리(110) 및 프로세서(120)를 포함할 수 있다.
메모리(110)는 전자 장치(100)의 구성요소들의 전반적인 동작을 제어하기 위한 운영체제(OS: Operating System) 및 전자 장치(100)의 구성요소와 관련된 다양한 데이터를 저장하기 위한 구성이다. 메모리(110)는 전자 장치(100)의 하나 이상의 구성요소와 관련된 적어도 하나의 명령어(instruction)를 포함할 수도 있다.
이를 위해, 메모리(110)는 비휘발성 메모리(ex: 하드 디스크, SSD(Solid state drive), 플래시 메모리), 휘발성 메모리 등으로 구현될 수 있다.
프로세서(120)는 전자 장치(100)의 전반적인 동작을 제어한다. 이를 위해, 프로세서(120)는 하드웨어적으로 CPU(central processing unit), GPU(Graphic processing unit), NPU(neural processing unit) 등을 포함할 수 있으며, 전자 장치(100)에 포함된 다른 구성요소들의 제어에 관한 연산이나 데이터 처리를 실행할 수 있다.
프로세서(120)는 MPU(Micro Processing Unit)로 구현되거나, 또는 RAM(Random Access Memory) 및 ROM(Read Only Memory) 등이 CPU 등과 시스템 버스를 통해 연결된 컴퓨터에 해당할 수도 있다.
프로세서(120)는 전자 장치(100)에 포함된 하드웨어적 구성요소뿐만 아니라, 전자 장치(100)에 포함되는 하나 이상의 소프트웨어 모듈을 제어할 수도 있으며, 프로세서(120)가 소프트웨어 모듈을 제어한 결과가 하드웨어 구성들의 동작으로 도출될 수도 있다.
구체적으로, 프로세서(120)는, 통신 인터페이스(110) 및 메모리(120)와 연결되어 메모리(120)에 저장된 적어도 하나의 명령어를 실행함으로써 전자 장치(100)를 제어할 수 있다.
이하에서는 도 2의 구성요소들을 포함하는 전자 장치(100)의 동작을 보다 상세하게 설명한다.
프로세서(120)는 이미 훈련된 신경망 모델에 기초하여 훈련 데이터 쌍을 획득할 수 있다. 신경망 모델은 원본 훈련 데이터를 이용하여 훈련된 모델이고, 훈련 데이터 쌍은 원본 훈련 데이터를 대체하기 위해 프로세서(120)가 별도로 생성하는 신규 훈련 데이터에 해당한다.
신경망 모델은 입력 값에 대응되는 출력 값을 식별하도록 훈련된 것일 수 있다. 구체적으로, 신경망 모델은 입력된 이미지에 대응되는 동물의 종류(ex. 개, 고양이 등) 또는 사람을 인식하도록 훈련된 신경망 모델일 수 있다. 또는, 신경망 모델은 입력된 음성/텍스트 데이터를 음성 인식, 번역한 결과를 출력하도록 훈련된 신경망 모델일 수도 있다. 다만, 신경망 모델의 예가 상술한 예들에만 한정되는 것도 아니다.
즉, 신경망 모델은 주어진 입력 값에 대응되는 출력 값을 식별하는 것이라면 무엇이든 가능하며, 본 개시에 따른 신경망 모델의 입력 값 및 출력 값이 특정한 형태의 데이터에만 한정되는 것은 아니다.
신경망 모델은, 입력 값과 출력 값 간의 관계를 정의하기 위한 하나 이상의 노드 내지는 하나 이상의 레이어를 포함할 수 있다. 신경망 모델의 훈련 과정에서, 노드 간의 관계(ex. weight) 내지는 레이어 간의 관계가 달라질 수 있다.
입력 값 및 출력 값을 포함하는 원본 훈련 데이터에 기초하여 훈련된 신경망 모델은, 메모리(110)에 저장되어 있을 수 있다. 다만, 원본 훈련 데이터 자체는 메모리(110)에 저장되어 있지 않을 수 있다.
프로세서(120)는, 훈련된 신경망 모델의 특정 출력 값에 기초하여 목적 함수를 획득하고, 목적 함수에 기초하여, 훈련된 신경망 모델로부터 입력 값을 획득할 수 있다.
특정 출력 값은, 신경망 모델로부터 출력될 수 있는 출력 값 중 어느 하나일 수 있다.
특정 출력 값은, 예를 들어 신경망 모델이 입력 값에 기초하여 복수의 클래스 중 어느 하나를 선택하도록 훈련된 분류기 모델인 경우, 복수의 클래스 중 제1 클래스인 경우에 해당하는 출력 값, 복수의 클래스 중 제2 클래스인 경우에 해당하는 출력 값, 또는 복수의 클래스 중 어느 클래스로도 보기 어려운 경우에 해당하는 출력 값 중 하나일 수 있다. 다만, 이에 한정되는 것은 아니다.
목적 함수는, 특정 출력 값에 대응되는 출력 값이 출력되도록 하는 신경망 모델의 입력 값을 찾기 위한 함수로 정의될 수 있다.
목적 함수는, (임의의) 입력 값을 신경망 모델에 입력한 결과인 출력 값과 특정 출력 값을 포함하는 함수일 수 있다. 구체적으로, 목적 함수는 (임의의) 입력 값을 신경망 모델에 입력한 결과와 출력 값 간의 관계를 나타내기 위한 것일 수 있다.
목적 함수를 이용하는 이유는, 출력 값에 대응되는 입력 값이 하나가 아닌 경우 역함수 관계가 형성되지 않기 때문에, 입력 값을 변경시켜가면서 목적 함수에 적용하는 과정을 반복하여 목적 함수가 기설정된 조건을 만족하도록 하는 입력 값을 찾아내기 위함이다. 또한, 도 8a 내지 도 8c와 관련하여 후술할 본 개시에 따른 전자 장치의 효과로, 동일한 출력 값에 대응되는 입력 값을 복수 개 획득하여 (신규) 훈련 데이터로 이용하는 것이 훈련 결과의 향상에 기여할 수 있다는 점에서도 목적 함수를 사용하는 의미가 있다.
기설정된 조건은 목적 함수의 값이 최소 또는 최대가 되는 조건을 포함할 수 있다. 이는, 입력 값을 변경해가면서 순차적으로 목적 함수에 적용한 결과인 목적 함수의 값이 최소/최대인 지점의 입력 값을 구하기 위한 것일 수 있다.
예로, 목적 함수가 'L(x) = | M(x) - y |'이고, 기설정된 조건은 L(x)가 최소값 또는 최대값인 조건일 수 있다. 이 경우, 프로세서(120)는 점차 변경되는 입력 값들(x1, x2, x3, ...)에 대한 목적 함수의 순차적인 값들(L(x1), L(x2), L(x3), ...)을 비교하여 목적 함수의 값이 최소 또는 최대가 되는 입력 값을 판단할 수 있다. 또는, 프로세서(120)는 점차 변경되는 입력 값에 대한 목적 함수의 값의 1차 이상의 미분 값을 이용하여, 목적 함수의 값(: L(x))이 최소 또는 최대가 되는 입력 값을 판단할 수도 있다.
기설정된 조건은 목적 함수의 값이 특정 범위 내의 값인 조건을 포함할 수도 있다. 예를 들어, 목적 함수가 'L(x) = | M(x) - y |' 인 경우(x는 입력 값, M(x)는 입력 값을 신경망 모델에 넣은 결과 출력 값, y는 특정 출력 값), 목적 함수의 값(L(x))이 0.995보다 크고 1.005보다 작은 조건이 기설정된 조건일 수 있다.
프로세서(120)는 임의의 입력 값에 기초하여, 훈련된 신경망 모델의 출력 값을 획득할 수 있다. 그리고, 훈련된 신경망 모델의 출력 값을 목적 함수에 적용하여 목적 함수의 출력 값을 획득하고, 목적 함수의 출력 값이 기설정된 조건을 만족하는지 여부에 기초하여 입력 값을 획득할 수 있다.
이때, 상술한 임의의 입력 값에 따른 목적 함수의 값이 기설정된 조건을 만족하는 경우, 프로세서(120)는 상술한 임의의 입력 값 및 상술한 임의의 입력 값에 기초하여 훈련된 신경망 모델로부터 획득된 출력 값을 신규 훈련 데이터로서 획득할 수 있다.
반면, 상술한 임의의 입력 값에 따른 목적 함수의 값이 기설정된 조건을 만족하지 않는 경우, 프로세서(120)는 상술한 임의의 입력 값을 변경하고, 변경된 입력 값에 기초하여 훈련된 신경망 모델의 출력 값을 획득할 수 있다.
이 경우, 프로세서(120)는 변경된 입력 값에 따른 신경망 모델의 출력 값을 목적 함수에 적용하여 다시금 목적 함수의 출력 값을 획득할 수 있다.
그리고, 프로세서(120)는 변경된 입력 값에 따른 목적 함수의 값이 기설정된 조건을 만족하는 경우, 변경된 입력 값 및 변경된 입력 값에 기초하여 신경망 모델로부터 획득된 출력 값을 신규 훈련 데이터로서 획득할 수 있다.
일 예로, 목적 함수가 L(x) = | M(x) - y |로 정의된 경우를 가정한다. x는 입력 값, M(x)는 입력 값 x를 신경망 모델에 넣은 결과 출력 값, y는 특정 출력 값에 해당한다.
이때, 만약 기설정된 조건은 목적 함수의 값(: L(x))이 최소값인 조건이라면, 입력 값인 x를 임의의 입력 값으로부터 점차적으로 변경시켜가면서 | M(x) - y |가 최소값이 되는 x를 찾을 수 있다.
이 경우, 다양한 수치해석적 방법을 사용할 수 있는데, 임의의 입력 값에서 출발하여 목적 함수의 출력이 최대/최소가 되도록 하는 방향으로 입력 값을 변경하는 것을 반복하는 Gradient Descent, 2차 편미분 값을 이용하여 보다 적은 단계의 변경을 적용하는 Newton's Method, Newton's Method의 변형으로 2차 미분값을 추정하면서 입력 값을 변경하는 BFGS/L-BFGS(Broyden-Fletcher-Goldfarb-Shanno 알고리즘), Hessian Free Optimization 등이 이용될 수 있으나 이에 한정되는 것은 아니다.
한편, 목적 함수는 상술한 예들 외에도 입력 값(x)에 대한 원본 신경망 모델의 출력 값(M(x)) 및 특정 출력 값(y)을 포함하는 다양한 함수로 정의될 수 있으며, 예를 들어, L(x) = cross-entropy(M(x), y), L(x) = | M(x) - y | 등을 포함하여 다양한 예가 가능하다.
도 3은 본 개시의 일 실시 예에 따른 전자 장치의 압축 프로세스를 설명하기 위한 도면이다. 도 3을 참조하면, 전자 장치(100)는 모델 압축 모듈(310) 및 파인 튜닝 모듈(Fine Tuning, 320) 외에 훈련 데이터 생성 모듈(330)을 추가로 포함할 수 있다. 본 모듈들은, 프로세서(120)에 의해 제어될 수 있으며, 본 모듈들 각각은 전자 장치(100)의 메모리(110)에 소프트웨어 형태로 저장되거나 또는 하드웨어적인 회로 형태로 구현될 수 있다. 또한, 본 모듈들 각각은 소프트웨어 및 하드웨어가 결합한 형태로 구현될 수도 있다.
도 3을 참조하면, 프로세서(120)는 모델 압축 모듈(310)을 이용하여 원본 신경망 모델(301)을 압축(데이터 크기 줄임)하여 1차 압축 모델(302)을 획득할 수 있다.
모델 압축 모듈(310)은 원본 신경망 모델의 구조, 복잡도, 각 레이어의 중요도 등을 분석할 수 있다. 그리고, 모델 압축 모듈(310)은 전체 모델 구조에서 어떤 부분(node, layer, weight 등)에 압축 알고리즘을 적용할 것인지 선택한 뒤, 선택된 압축 범위에 대하여 가장 효과적인 압축 알고리즘을 채택할 수 있다.
이 경우, 모델 압축 모듈(310)은 Fine Tuning이 완료된 (최종) 압축 신경망 모델이 이용될 타겟 장치의 성능에 따른 타겟 압축률을 고려하여, 압축 범위 및 압축 알고리즘을 선정할 수 있는데, 이와 관련하여서는 도 9를 통해 후술한다.
압축 알고리즘에는 Weight Pruning, Channel Pruning, Matrix Factorization, Quantization 등이 있으나 이것들에만 한정되는 것은 아니다.
그리고, 모델 압축 모듈(310)은 선택된 압축 범위에 대하여 채택된 압축 알고리즘을 적용하여 원본 신경망 모델의 데이터 크기를 줄일 수 있다.
한편, 상술한 예는 모델 압축 모듈(310)이 원본 신경망 모델을 압축하는 일 예에 해당하며, 최적의 압축 범위 및 방식을 선정하기 위해 일부 다른 방식이 적용될 수도 있다. 예를 들어, Simulated Annealing 등을 통해 여러 가지 방식을 적용해본 뒤, 그 중에서 가장 효과적인 압축 범위와 방법을 선택할 수도 있다.
훈련 데이터 생성 모듈(330)은, 도 1의 경우와 달리 원본 신경망 모델을 훈련시킨 훈련 데이터(5)가 없는 경우, 훈련 데이터(5)를 대체할 수 있을만한 신규 훈련 데이터(305), 즉 훈련 데이터 쌍을 생성하기 위한 모듈이다.
훈련 데이터 생성 모듈(330)을 통해 신규 훈련 데이터(305)가 생성되면, Fine Tuning 모듈(320)은 신규 훈련 데이터(305)를 이용하여 1차 압축 모델(302)을 훈련시킬 수 있다. 그 결과, 1차 압축 모델(302)보다 성능이 어느 정도 회복된 최종 압축 모델(303)이 획득될 수 있다(원본 훈련 데이터를 이용하지 않는 Dataless Compression).
관련하여, 도 4는 본 개시의 일 실시 예에 따른 프로세서(120)가 훈련 데이터 생성 모듈(330)을 통해 목적 함수가 기설정된 조건을 만족하도록 하는 입력 값을 찾는 과정의 일 예를 설명하기 위한 도면이다.
도 4는 목적 함수 L(x) = | M(x) - y|이고, 기설정된 조건은 L(x) 값이 최소값이 되는 조건인 경우를 가정한다.
도 4를 참조하면, 훈련 데이터 생성 모듈(330)은 입력 벡터 공간(410)상의 임의의 입력 값 '401'을 최초의 x로 하여 목적 함수에 적용한 뒤, x 값을 401', 401'' 등으로 바꿔가면서 목적 함수의 값이 기설정된 조건(최소값)을 만족하는 입력 값을 획득할 수 있다. 이 경우, 훈련 데이터 생성 모듈(330)은 목적 함수 값이 임계치 이하로 될 때까지 입력 값을 변경 및 목적 함수에 적용하는 과정을 반복할 수 있다. 또한, 훈련 데이터 생성 모듈(330)은 입력 값의 변경 횟수가 기설정된 횟수에 도달할 때까지 입력 값을 변경 및 목적 함수에 적용한 뒤 그 중 목적 함수 값이 가장 작은 입력 값을 획득할 수도 있다.
한편, 프로세서(120)는 특정 출력 값에 대하여, 복수의 입력 값을 획득할 수 있다.
구체적으로, 프로세서(120)는 복수의 입력 값 각각에 기초한 목적 함수의 출력 값이 기설정된 조건을 만족하는지 여부에 기초하여, 복수의 입력 값 각각에 대응되는 입력 값을 획득할 수 있다. 즉, 임의의 입력 값 복수 개를 각각 목적 함수에 적용해가면서, 각각에 대해 기설정된 조건을 만족하게 하는 입력 값을 획득할 수 있다.
관련하여, 도 5는 본 개시의 일 실시 예에 따른 프로세서(120)가 훈련 데이터 생성 모듈(330)을 통해 목적 함수를 만족하는 복수의 입력 값을 찾는 과정의 일 예를 설명하기 위한 도면이다.
도 5를 참조하면, 훈련 데이터 생성 모듈(330)은 특정 출력 값(y)에 대한 목적 함수를 만족하는 입력 값을 복수 개 획득하기 위해, 임의의 입력 값 401뿐만 아니라 502, 503, 504, 505, 506 등에 대해서도 각각 입력 값을 변경시켜가면서 목적 함수에 적용할 수 있다.
그리고, 훈련 데이터 생성 모듈(330)은, 임의의 입력 값들(401, 502, 503, 504, 505, 506) 각각으로부터 변경된 것으로, 목적 함수의 기설정된 조건을 만족하는 복수의 입력 값을 획득할 수 있다.
한편, 목적 함수의 형태는 상술한 예들에만 국한되는 것이 아니다. 목적 함수는 특정 출력 값(y), (임의의) 입력 값에 따라 신경망 모델로부터 획득되는 출력 값(M(x))이 포함되어 있다면 다양한 형태가 가능하다.
프로세서(120)는 특정 출력 값을 복수 개 이용하여 복수의 입력 값을 획득할 수도 있다. 즉, 프로세서(120)는 (훈련된) 신경망 모델의 복수의 특정 출력 값에 기초하여 복수의 목적 함수를 획득하고, 복수의 목적 함수 각각에 기초하여 신경망 모델로부터 입력 값을 획득할 수 있다.
이 경우, 프로세서(120)가 복수의 목적 함수 각각에 대하여 복수의 입력 값을 획득할 수도 있음은 물론이다.
관련하여, 도 6은 프로세서(120)가 훈련 데이터 생성 모듈(330)을 통해 복수의 출력 값 각각에 대응되는 복수의 입력 값을 획득하는 일 예를 설명하기 위한 도면이다.
도 6의 출력 값 및 입력 값과 관련된 신경망 모델은 입력된 이미지 데이터(:입력 값)가 개인지 고양이인지 식별하도록 훈련된 신경망 모델이다.
도 6에서, y1은 입력된 이미지가 개일 확률, y2는 입력된 이미지가 고양이일 확률, y3은 입력된 이미지가 개도 고양이도 아닐 확률에 해당하는 것으로, (y1, y2, y3)는 신경망 모델로부터 출력될 수 있는 출력 값들에 해당한다.
도 6을 참조하면, 훈련 데이터 생성 모듈(330)은 개일 확률이 0.8, 고양이일 확률이 0.1, 둘 다 아닐 확률이 0.1인 경우의 출력 값들(610)에 대응되는 복수의 이미지(660. 아마도 개와 닮거나 개인 객체를 포함하는 이미지들)를 획득할 수 있다.
이때, 복수의 이미지(660) 각각은 서로 다른 시작점(:목적 함수에 최초로 적용되는 임의의 입력 값)으로부터 기인한 것일 수 있다. 또는, 복수의 이미지(660) 각각에 대해, 시작점은 동일하되, 목적 함수가 만족해야 하는 기설정된 조건이 서로 다르거나 기설정된 조건을 만족하는 입력 값(이미지)을 찾는 방식이 다를 수도 있다.
훈련 데이터 생성 모듈(330)이 획득하는 복수의 이미지의 수는 수백, 수천에서 수만 장 이상에 이를 수도 있다. 더 많은 수의 이미지(입력 값)를 획득할수록 이후 Fine Tuning에 도움이 될 수 있다.
이 경우, 훈련 데이터 생성 모듈(330)은 y1 = 0.8, y2 = 0.1, y3 = 0.1 각각에 대해 별도의 목적 함수를 이용할 수 있다. 이때, 복수의 이미지(660) 각각은 y1(=0.8), y2(=0.1), y3(=0.1) 각각에 대한 목적 함수들의 조건을 모두 만족하는 입력 값에 해당한다.
또는, 훈련 데이터 생성 모듈(330)은 y1(=0.8), y2(=0.1), y3(=0.1) 중 두 개 이상을 한 번에 포함하는 목적 함수를 이용할 수도 있다.
도 6을 참조하면, 훈련 데이터 생성 모듈(330)은 개일 확률이 0.05, 고양이일 확률이 0.85, 둘 다 아닐 확률이 0.1인 경우의 출력 값들(620)에 대응되는 복수의 이미지(670. 아마도 고양이와 닮거나 고양이인 객체를 포함하는 이미지들)를 획득할 수 있다.
마찬가지로, 도 6을 참조하면, 훈련 데이터 생성 모듈(330)은 개일 확률이 0.05, 고양이일 확률이 0.05, 둘 다 아닐 확률이 0.9인 경우의 출력 값들(630)에 대응되는 복수의 이미지(680. 아마도 고양이 및 개와 모두 닮지 않은 객체를 포함하는 이미지들)를 획득할 수 있다.
한편, 비록 도 6에서는 설명의 편의를 위해 입력 값으로 획득된 복수의 이미지(660, 670, 680)를 각각 선명한 이미지로만 도시하였으나, 실제 훈련 데이터 생성 모듈(330)을 통해 생성되는 복수의 이미지는 다소 흐릿한 이미지, 노이즈가 많은 이미지, 포함된 객체가 육안으로는 명확하게 식별되지 않는 이미지 등을 포함할 수 있다.
상술한 실시 예들에 의해 하나 이상의 입력 값을 획득한 뒤, 프로세서(120)는 획득된 입력 값을 포함하는 훈련 데이터 쌍을 획득할 수 있다.
구체적으로, 프로세서(120)는 획득된 입력 값 및 획득된 입력 값에 기초하여 획득된 신경망 모델의 출력 값을 포함하는 훈련 데이터 쌍을 생성할 수 있다. 이 경우, 프로세서(120)는 (입력 값, 출력 값) 형태의 데이터 쌍 형태로, 획득된 입력 값 및 그에 대응되는 출력 값을 메모리(110)에 저장할 수 있다. 한편, 프로세서(120)는 획득된 입력 값 및 획득된 입력 값의 기초가 된 특정 출력 값을 포함하는 훈련 데이터 쌍을 생성할 수도 있다.
그 결과, 메모리(110)에는 하나 이상의 입력 값에 각각 대응되는 하나 이상의 훈련 데이터 쌍, 즉 신규 훈련 데이터가 저장될 수 있다.
한편, 프로세서(120)는 상술한 예들을 통해 획득된 입력 값들을 통해, 추가적인 입력 값을 획득하여, 신규 훈련 데이터에 포함될 훈련 데이터 쌍을 추가로 생성할 수도 있다.
구체적으로, 훈련 데이터 쌍이 제1 입력 값 및 제1 입력 값에 기초하여 획득된 신경망 모델의 제1 출력 값을 포함하는 경우, 프로세서(120)는 제1 입력 값에 기초하여 제2 입력 값을 획득하고, 제2 입력 값 및 제2 입력 값에 기초하여 획득된 신경망 모델의 제2 출력 값을 추가적인 훈련 데이터 쌍으로 획득할 수 있다.
이때, 프로세서(120)는 제1 입력 값을 후처리하여 제2 입력 값을 획득할 수 있다. 예로, 만약 제1 입력 값이 일 이미지에 해당하는 경우, 프로세서(120)는 일 이미지 내 적어도 일부 영역의 크기 변경, 좌우 반전, 색상 변경, 위치 변경을 통해 제2 입력 값을 획득할 수 있다. 다만, 입력 값의 형태는 신경망 모델에 따라 천차만별인 것이므로, 이미지에 대응되는 입력 값을 후처리하는 상술한 실시 예는 단지 일 예일뿐 본 개시의 기술적 사상이 이에 한정되는 것이 아니다.
또는, 프로세서(120)는 생성된 신규 훈련 데이터에 포함된 두 개의 입력 값에 대해 Interpolation을 적용하여 추가적인 입력 값을 획득할 수도 있다.
그리고, 프로세서(120)는 하나 이상의 훈련 데이터 쌍에 기초하여, (훈련된) 신경망 모델이 압축된 압축 신경망 모델을 훈련시킬(: Fine Tuning) 수 있다. 이 경우, Fine Tuning이 완료된 '훈련된 압축 신경망 모델'에 대해, 압축 및 Fine Tuning이 추가로 수행될 수도 있다.
한편, (1차 압축된) 압축 신경망 모델은, 전자 장치(100)의 프로세서(120)가 모델 압축 모듈(310) 등을 통해 원본 신경망 모델을 압축한 결과 생성된 것일 수도 있고, 또는 외부 장치에서 압축을 수행한 결과 생성된 것일 수도 있다.
만약, 외부 장치에서 압축 신경망 모델이 생성된 경우, 생성된 압축 신경망 모델은 외부 장치로부터 전자 장치(100)로 수신될 수 있으며, 이 경우 전자 장치(100)는 모델 압축 모듈(310)을 포함하지 않을 수 있다.
도 7a 및 도 7b는, 본 개시의 실시 예에 따른 훈련 데이터 생성 모듈(330)의 동작 과정의 일 예를 순서에 따라 설명하기 위한 블록도이다.
도 7a를 참조하면, 훈련 데이터 생성 모듈(330)은 먼저 원본 신경망 모델(301) 및 특정 출력 값(y)을 이용하여 목적 함수를 생성한다(S710). 예로, L(x) = | M(x) - y |와 같은 목적 함수를 생성할 수 있다. 이때, y는 고정된 타겟 출력 값이다.
그리고, 훈련 데이터 생성 모듈(330)은 (임의의) 입력 값을 목적 함수에 적용할 수 있다(S720). 이 경우, 만약 해당 입력 값을 목적 함수에 적용한 결과가 기설정된 조건을 만족한다면, 해당 입력 값을 저장하고, 반면, 만약 해당 입력 값이 목적 함수의 기설정된 조건을 만족하지 않는다면, 해당 입력 값을 변경하고(S730), 변경된 입력 값을 다시 목적 함수에 적용할 수 있다(S720). 이때, 변경된 입력 값을 목적 함수에 적용한 결과가 기설정된 조건을 만족한다면, 변경된 입력 값을 저장할 수 있다.
예로, 훈련 데이터 생성 모듈(330)은 최초의 (임의의) 입력 값(X0)를 목적 함수에 입력하여 L(X0)를 획득하고, 획득된 L(X0) 값이 기설정된 조건(ex. 임계치보다 작은 경우)을 만족하는지 식별할 수 있다. L(X0) 값이 기설정된 조건을 만족하는 경우, X0를 최종 입력 값으로 획득할 수 있다.
반면, L(X0) 값이 기설정된 조건을 만족하지 않는 경우, 훈련 데이터 생성 모듈(330)은 입력 값을 X0에서 X1으로 변경할 수 있다. 여기서, 훈련 데이터 생성 모듈(330)은 L(X0)와 마찬가지로, L(X1) 값이 기설정된 조건(ex. 임계치보다 작은 경우 또는 입력 값의 변경 횟수가 기설정된 횟수 이상이 경우 등)을 만족하는지 식별하고, 만족하는 경우 X1을 최종 입력 값으로 획득할 수 있다.
만약, L(X1) 값이 기설정된 조건을 만족하지 않는 경우, 훈련 데이터 생성 모듈(330)은 입력 값을 X1에서 X2로 변경할 수 있다. 예로, Gradient Descent 방식 등을 이용하는 경우, 앞선 X0 -> X1 의 변화값 및 L(X0) -> L(X1) 의 변화값을 고려하여 X2 값을 획득할 수 있다. 그리고, 마찬가지로 L(X2)가 기설정된 조건을 만족하는지 식별하여, 만족하는 경우, X2를 최종 입력 값으로 획득할 수 있다.
이와 같이, 훈련 데이터 생성 모듈(330)은 최초의 X0로부터 입력 값을 변경/적용해가면서 최종 입력 값을 획득할 수 있다. 그리고, 획득된 최종 입력 값 'X'를 원본 신경망 모델에 입력한 결과인 출력 'Y'를 획득하고, (X, Y)를 훈련 데이터 쌍으로 저장할 수 있다.
한편, 훈련 데이터 생성 모듈(330)은 다른 임의의 입력 값(X0')을 시작으로 하여서도 상술한 변경/적용 과정을 반복하여 다른 최종 입력 값 X'를 획득할 수 있다. 이 경우, 훈련 데이터 생성 모듈(330)은 X'에 대한 원본 신경망 모델의 출력 값 Y'를 획득하며, 훈련 데이터 쌍(X', Y')을 저장할 수 있다.
이렇듯, 훈련 데이터 생성 모듈(330)은, 저장된 입력 값 및 저장된 입력 값에 따라 신경망 모델로부터 획득되는 출력 값을 훈련 데이터 쌍으로 포함하는 신규 훈련 데이터(305)를 생성 및 저장할 수 있다(S740).
한편, 훈련 데이터 생성 모듈(330)은 특정 출력 값 y뿐만 아니라, 하나 이상의 다른 출력 값에 대해서도 S710 내지 S740 과정을 반복함으로써, 다량의 훈련 데이터(305)를 생성 및 저장할 수 있다. 이 경우, 출력 값이 서로 다르기 때문에 S710 과정을 통해 생성되는 목적 함수들 역시 서로 다를 수 있다.
한편, 도 7b를 참조하면, 훈련 데이터 생성 모듈(330)은 S720 및 S730 과정을 통해 저장된 입력 값에 대해 후처리(S735)를 하여 입력 값을 추가로 생성한 뒤, 추가 생성된 입력 값 및 추가 생성된 입력 값을 통해 신경망 모델로부터 획득되는 출력 값을 포함하는 훈련 데이터 쌍을 생성하여 저장할 수 있다.
즉, 훈련 데이터 생성 모듈(330)은 앞서 S720 및 S730 과정을 통해 획득된 입력 값을 포함하는 훈련 데이터 쌍뿐만 아니라 추가 생성된 입력 값을 포함하는 훈련 데이터 쌍도 신규 훈련 데이터로 저장할 수 있다.
예를 들면, 앞서 획득된 최종 입력 값 X 및 X'의 중간 값을 새로운 입력 값(X'')으로 생성하고, X''을 원본 신경망 모델에 입력한 결과 출력 값 Y''를 획득한 뒤, (X'', Y'') 역시 훈련 데이터로 저장할 수 있다.
도 8a, 도 8b 및 도 8c는, 신규 훈련 데이터를 생성하여 이용하는 본 개시의 전자 장치의 효과를 설명하기 위한 실험 결과를 설명하기 위한 표 및 그래프들이다.
실험에 사용된 도 8a의 '실험 모델'은 주어진 입력 값(이미지)에 대응되는 숫자('0'부터 '9'까지 10개 클래스)를 판단하기 위한 신경망 모델이다.
도 8a를 참조하면, '실험 모델'(원본 모델)은, 'filter size'가 5이고 filter의 수가 20인 Convolution Layer, Max Pooling Layer, 'filter size'가 5이고 filter의 수가 50인 Convolution Layer, Max Pooling Layer, 'hidden unit'의 수가 500인 Fully-connected Layer, 'hidden unit'의 수가 10인 Fully-connected Layer가 순차적으로 연결된 구조를 가지고 있다.
도 8b는, 압축된 '실험 모델'의 압축률에 따른 압축된 '실험 모델'의 정확도(주어진 (입력) 이미지에 대응되는 숫자를 정확히 맞히는 확률)를 나타내는 그래프이다. 가로축에 해당하는 압축률은, 압축 후 모델 크기가 원본 대비 얼마인지를 나타내는 비율이다. 예를 들어, 원본 모델의 크기가 10M이었던상태에서 압축률이 0.3이라면, 압축된 모델의 크기는 3M가 된다.
도 8b는, 원본 모델인 '실험 모델'이 MNIST dataset을 기초로 훈련된 경우의 실험데이터이다.
구체적으로, 도 8b는, 압축된 '실험 모델'이 별도로 훈련되지(Fine-Tuned) 않은 경우(810-1), 압축된 '실험 모델'이 임의의 입력 값 및 임의의 입력 값에 따른 원본 모델('실험 모델')의 출력 값을 통해 훈련된 경우(810-2), 본 개시의 실시 예처럼 훈련 데이터 생성 모듈(330)을 통해 획득된 복수의 훈련 데이터 쌍을 통해 훈련된 경우(810-3), 원본 모델을 훈련시킨 원본 훈련 데이터(MNIST dataset)를 통해 훈련된 경우(810-4) 각각에 대해 압축률에 따른 정확도 변화를 나타낸 그래프이다.
도 8b를 통해 확인할 수 있듯, 본 개시의 실시 예와 같이 훈련 데이터 생성 모듈(330)을 통해 획득된 복수의 훈련 데이터 쌍을 통해 훈련된 경우(810-3), 원본 훈련 데이터를 이용하는 경우(810-4)에 거의 근접한 우수한 훈련 정확도를 보인다는 점을 확인할 수 있다. 특히, Fine Tuning을 수행하지 않은 경우(810-1) 및 임의의 훈련 데이터를 이용하여 Fine Tuning을 수행한 경우(810-2)보다 훨씬 뛰어난 정확도를 보여준다는 점을 확인할 수 있다.
한편, 도 8b를 참조하면, 압축을 더 많이 할수록(4.41% -> 1.50% -> 0.38%) 정확도가 떨어지는 것은 당연하지만, 810-3의 경우, 압축률 변화에 따른 정확도 저하의 정도 역시 810-1 및 810-2의 경우보다 훨씬 적다는 효과도 확인할 수 있다.
도 8c 역시, 압축된 '실험 모델'의 압축률에 따른 압축된 '실험 모델'의 정확도를 나타내는 그래프이다. 다만 도 8c는 도 8b와 달리 원본 모델인 '실험 모델'이 Fashion MNIST dataset을 기초로 훈련된 경우의 실험 데이터이다.
도 8c는, 압축된 '실험 모델'이 별도로 훈련되지(Fine-Tuned) 않은 경우(820-1), 압축된 '실험 모델'이 임의의 입력 값 및 임의의 입력 값에 따른 원본 모델('실험 모델')의 출력 값을 통해 훈련된 경우(820-2), 본 개시의 실시 예처럼 훈련 데이터 생성 모듈(330)을 통해 획득된 복수의 입력 값을 포함하는 복수의 훈련 데이터 쌍을 통해 훈련된 경우(820-3), 원본 모델을 훈련시킨 원본 훈련 데이터(Fashion MNIST dataset)를 통해 훈련된 경우(820-4) 각각에 대해 압축률에 따른 정확도 변화를 나타낸 그래프이다.
도 8c를 참조하면, 본 개시의 실시 예들과 같이 특정 출력 값으로부터 획득된 복수의 입력 값을 포함하는 복수의 훈련 데이터 쌍을 기초로 훈련된 경우(820-3), 원본 훈련 데이터를 이용하는 경우(820-4)에 거의 근접한 우수한 훈련 정확도를 보이며, 820-1 및 820-2의 경우보다 훨씬 더 우수한 정확도를 보인다는 점을 확인할 수 있다.
한편, 전자 장치(100)가 원본 신경망 모델의 압축(: 1차 압축. 데이터 크기 줄임)을 수행하는 경우, 전자 장치(100)는 훈련된(Fine Tuning된) 압축 신경망 모델이 사용될 타겟 장치의 성능에 따라 압축된 모델의 크기나 규격, 기타 조건 등이 달라지도록 원본 신경망 모델을 압축할 수 있다.
구체적으로, 프로세서(120)는 타겟 장치의 성능 내지는 종류에 따라 압축 정도(압축 범위, 압축 알고리즘 등)를 달리할 수 있다.
도 9는 타겟 장치의 성능에 따라 압축된 모델의 크기나 규격을 달리하는 일 예를 설명하기 위한 표이다.
도 9는, 이어폰 'a'의 메모리 용량이 스마트폰 'c'의 메모리 용량보다 작은 경우를 전제로 한다. 도 9를 참조하면, 이어폰 'a'의 메모리 용량이 스마트폰 'c'의 메모리 용량보다 작기 때문에, 프로세서(120)는 타겟 장치가 이어폰 'a'인 경우 압축 신경망 모델의 크기가 5 MB이하가 되도록 원본 신경망 모델을 압축하는 반면, 타겟 장치가 스마트폰 'c'인 경우 압축 신경망 모델의 크기가 100 MB 이하로 되도록 원본 신경망 모델을 압축한다는 점을 알 수 있다.
한편, 동일한 원본 신경망 모델을 많이 압축할수록 (훈련된) 압축 신경망 모델의 성능 자체는 떨어질 수밖에 없기 때문에, 전자 장치(100)는 이어폰 'a'가 타겟 장치인 경우 10% 이내의 정확도 오차를 목표로 하는 반면 스마트폰 'c'가 타겟 장치인 경우 5% 이내의 정확도 오차를 목표로 하여 압축 및 Fine Tuning을 수행하는 것을 확인할 수 있다.
도 9를 참조하면, 전자 장치(100)는 타겟 장치의 RAM 성능 등을 고려하여, 훈련된 압축 신경망 모델의 연산량 및 반응 속도에 대한 목표를 달리 설정하여, 압축 및 Fine Tuning을 수행할 수도 있다.
도 10은 본 개시의 다양한 실시 예에 따른 전자 장치(100)의 상세한 구성을 설명하기 위한 블록도이다.
도 10을 참조하면, 전자 장치(100)는 메모리(110) 및 프로세서(120) 외에도 통신 인터페이스(130), 입출력 포트(140), 사용자 인터페이스(150) 등을 포함할 수 있다.
통신 인터페이스(130)는, 전자 장치(100)가 적어도 하나의 외부 장치와 통신을 수행하여 신호/데이터를 주고받기 위한 구성이다. 이를 위해 통신 인터페이스(110) 회로를 포함할 수 있다.
통신 인터페이스(130)는 무선 통신 모듈, 유선 통신 모듈 등을 포함할 수 있다.
무선 통신 모듈은 외부 서버 또는 외부 장치로부터 컨텐츠를 수신하기 위하여 와이파이 (WIFI) 통신 모듈, 블루투스(bluetooth)모듈, 적외선 통신(IrDA, infrared data association)모듈, 3G(3세대) 이동통신 모듈, 4G(4세대) 이동통신 모듈, 4세대 LTE(Long Term Evolution) 통신 모듈 중 적어도 하나를 포함을 포함할 수 있다.
유선 통신 모듈은 썬더볼트 포트, USB 포트 등의 유선 포트로 구현될 수 있다.
프로세서(120)는, 외부 장치로부터 통신 인터페이스(130)를 통해 훈련된 압축 신경망 모델에 대한 요청이 수신되면, 훈련된 압축 신경망 모델을 통신 인터페이스(130)를 통해 외부 장치 또는 다른 외부 장치로 전송할 수 있다.
사용자 인터페이스(140)를 통해 입력된 사용자 명령에 따라, 프로세서(120)는 압축 및/또는 Fine Tuning을 수행하거나 또는 훈련된(Fine Tuned) 압축 신경망 모델을 외부 장치로 전송할 수 있다.
구체적으로, 프로세서(120)는 사용자 인터페이스(140)를 통해 입력된 사용자 명령에 따라 선택된 원본 신경망 모델에 대해 압축 및/또는 Fine Tuning을 수행할 수 있다. 또한, 프로세서(120)는 사용자 명령에 따라 선택된 데이터 크기, 연산 속도 등에 맞도록 원본 신경망 모델에 대한 압축 및 Fine Tuning을 수행하여 훈련된 압축 신경망 모델을 획득할 수도 있다.
또한, 프로세서(120)는 사용자 인터페이스(140)를 통해 입력된 사용자 명령에 따라 선택된 타겟 장치로 훈련된 압축 신경망 모델을 전송하도록 통신 인터페이스(130)를 제어할 수도 있다.
이를 위해, 사용자 인터페이스(140)는 하나 이상의 버튼, 키보드, 마우스 등을 포함할 수 있다. 또한, 사용자 인터페이스(140)는 디스플레이(도시되지 않음)와 함께 구현된 터치 패널 또는 별도의 터치 패드(도시되지 않음)를 포함할 수 있다.
사용자 인터페이스(140)는 사용자의 명령 또는 정보를 음성으로 입력 받기 위해 마이크를 포함할 수도 있고, 사용자의 명령 또는 정보를 모션 형태로 인식하기 위한 카메라를 포함할 수도 있다.
도 11a 및 도 11b는 전자 장치가 서버 장치로 구현된 경우, 전자 장치가 사용자 장치로부터 요청된 압축 신경망 모델을 제공하는 예를 설명하기 위한 도면 및 블록도이다.
도 11a를 참조하면, 서버 장치인 전자 장치(100-1)는 다양한 사용자 장치들(200, 300)과 통신을 수행할 수 있다. 사용자 장치들 중 어느 하나로부터 모델 압축 요청이 수신되면, 전자 장치(100-1)는 훈련된 압축 모델을 압축 요청을 전송한 사용자 장치로 제공할 수 있다.
구체적으로, 전자 장치(100-1)는, 사용자 장치(200)로부터 원본 신경망 모델 및 원본 신경망 모델에 대한 압축 요청을 수신할 수 있다. 이때, 원본 신경망 모델은 특정한 훈련 데이터에 의해 이미 훈련된 모델일 수 있으며, 훈련 데이터는 전자 장치(100-1)에 수신되지 않을 수 있다.
이 경우, 전자 장치(100-1)는 수신된 원본 신경망 모델을 이용하여 복수 개의 훈련 데이터 쌍을 생성할 수 있다.
여기서, 전자 장치(100-1)는 수신된 원본 신경망 모델을 1차적으로 압축한 뒤, 생성된 훈련 데이터 쌍을 이용하여 압축된 신경망 모델을 파인 튜닝할 수 있다. 그리고, 파인 튜닝된 신경망 모델을 최종 압축 모델로 사용자 장치(200)에 전송할 수 있다.
한편, 서버 장치인 전자 장치(100-1)는 훈련된 원본 신경망 모델 외에 사용자 장치에 대한 정보를 사용자 장치(200)로부터 추가로 수신할 수 있다. 이 경우, 훈련된 원본 신경망 모델을 1차 압축하는 과정 및/또는 파인 튜닝하는 과정에서, 전자 장치(100-1)의 프로세서(120)는 수신된 사용자 장치에 대한 정보를 이용할 수 있다.
구체적으로, 프로세서(120)는 사용자 장치에 대한 정보에 포함된 사용자 장치(200)의 성능(사용자 장치(200)의 메모리 용량, 연산 속도, 배터리 규격/상황 등)에 대한 정보를 식별하고, 사용자 장치(200)의 성능에 적합한 압축률 및 정확도를 판단하며, 판단된 압축률 및 정확도를 가지도록 1차 압축 및 Fine Tuning을 수행할 수 있다.
관련하여, 도 11b를 참조하면, 전자 장치(100-1)는 모델 압축 모듈(310), Fine Tuning 모듈(320) 및 훈련 데이터 생성 모듈(330) 외에 제약 조건 검색 모듈(340)을 더 포함할 수 있다.
도 11b는, 사용자 장치(200)의 기기 타입에 대한 정보(306)가 서버 장치인 전자 장치(100-1)로 수신된 경우를 가정한다. 이 경우, 제약 조건 검색 모듈(340)은, 전자 장치(100-1)의 메모리(110)에 기저장된 기기별 제약 조건 DB(Database)를 통해 사용자 장치(200)의 기기 타입에 대한 정보(306)와 매칭되는 압축 조건을 식별할 수 있다. 이때, 압축 조건은 압축률, 신경망 모델 중 압축 과정에서 제거 또는 변경될 범위, 압축 알고리즘, 압축 결과에 대한 목표 용량 등을 포함할 수 있다.
그리고, 모델 압축 모듈(310)은 식별된 압축 조건에 따라 (원본) 신경망 모델을 1차 압축하여 1차 압축 모델(302)을 생성할 수 있다. 이후, Fine Tuning 모듈(320)이 훈련 데이터 생성 모듈(330)에 의해 생성된 신규 훈련 데이터(305)를 이용하여 1차 압축 모델(302)을 훈련시킨 결과, 최종 압축 모델(303)이 생성될 수 있다.
그리고, 프로세서(120)는 생성된 최종 압축 모델(303)을 사용자 장치(200)로 전송할 수 있다.
다만, 상술한 바와 같이 제약 조건 검색 모듈(340)을 이용하는 실시 예는 일 예일 뿐이고, 그밖에 다양한 실시 예가 가능하다. 일 예로, 모델 압축 모듈(310)이 수신된 사용자 장치(200)에 대한 정보에 포함된 사용자 장치(200)의 잔여 메모리 용량에 대한 정보를 이용하여, 잔여 메모리 용량보다 작은 크기로 원본 모델(301)을 압축하여 1차 압축 모델(302)을 생성할 수도 있다.
한편, 서버 장치인 전자 장치(100-1)는 사용자 장치(200)의 성능에 적합한 압축률 및 정확도를 가지는 '최종 압축 모델'을 획득하기 전에, '최종 압축 모델'에 대한 정보를 사용자 장치(200)에 선제적으로 제공한 뒤, 사용자 장치(200)로부터 '최종 압축 모델'을 수신하기 위한 요청이 수신되면, 이를 획득(: 원본 모델을 1차 압축 및 Fine Tuning)하여 사용자 장치(200)에 전송할 수도 있다. 이때, 사용자 장치(200)의 성능에 적합한 압축률 및 정확도를 가지는 '최종 압축 모델'의 동작에 대한 시뮬레이션 결과(ex. 원본 모델과의 성능 비교 등)에 대한 정보를 사용자 장치(200)에 제공할 수도 있다.
한편, 도 12a 및 도 12b는 서버 장치로 구현된 전자 장치가 외부로부터 제공 받은 AI 앱을 재구성하고, 재구성된 AI 앱을 애플리케이션 스토어를 통해 하나 이상의 사용자장치로 제공하는 예를 설명하기 위한 도면 및 블록도이다. AI 앱은 인공지능 신경망 모델을 포함하는 애플리케이션이다.
도 12a를 참조하면, 서버 장치인 전자 장치(100-2)는 앱 제공자(1210)로부터 AI 앱을 수신할 수 있다. 앱 제공자(1210)는 AI 앱을 개발 내지는 제공하는 주체의 장치 내지는 서버 등을 의미할 수 있다.
도 12a의, 애플리케이션 스토어(1220)는 다양한 애플리케이션을 다양한 사용자 장치에게 제공하기 위한 웹 서비스로, 전자 장치(100-2)를 통해 구현되거나, 또는 별도의 외부 서버 장치를 통해 구현될 수 있다. 애플리케이션 스토어(1220)가 외부 서버 장치를 통해 구현된 경우, 도 12a와 달리, 전자 장치(100-2)는 애플리케이션 스토어(1220)에 이미 등록된 AI 앱을 외부 서버 장치로부터 수신할 수도 있다.
이때, 전자 장치(100-2)는 수신된 AI 앱에서 훈련된 (원본) 신경망 모델을 분리할 수 있다. 이 경우, 전자 장치(100-2)상에 기저장된 AI 앱 내 신경망 모델의 어드레스를 이용하거나 또는 신경망 모델의 파일 형식을 기설정된 파일 형식과 매칭시켜 AI 앱 내에서 신경망 모델을 포함하는 파일을 식별할 수도 있다.
이 경우, 전자 장치(100-2)는 하나 이상의 제품명 또는 제품군(스마트폰, TV, 대용량 스마트폰 등) 각각에 맞는 요구 조건에 따라, 분리된 신경망 모델을 1차 압축하여 1차 압축된 신경망 모델을 하나 이상 획득할 수 있다.
그리고, 전자 장치(100-2)는 1차 압축된 하나 이상의 신경망 모델을 각각 Fine Tuning하여 복수의 최종 압축 모델을 획득한 뒤, 최종 압축 모델 각각을 AI 앱(신경망 모델과 분리된)에 결합하여 재구성된 AI 앱을 하나 이상 획득할 수 있다.
그리고, 전자 장치(100-2)는 재구성된 AI 앱을 애플리케이션 스토어(1220)에 등록할 수 있다. 만약, 애플리케이션 스토어(1220)가 외부 서버 장치를 통해 구현된 경우, 전자 장치(100-2)는 외부 서버 장치에 재구성된 AI 앱을 전송할 수 있다.
더하여, 전자 장치(100-2)는 재구성된 AI 앱을 앱 제공자(1210)에 전송할 수도 있다.
재구성된 AI 앱이 등록된 애플리케이션 스토어(1220)에 접속한 사용자 장치는, 사용자 입력에 따라 재구성된 AI 앱을 다운로드할 수 있다. 구체적으로, 도 12a와 같이 애플리케이션 스토어(1220)상에 제품군(스마트폰, TV, 대용량 스마트폰 등) 별로 복수의 (재구성된) AI 앱이 구분되어 등록되어 있는 경우, 사용자 장치는 사용자 장치가 포함되는 제품군에 맞는 (재구성된) AI 앱을 애플리케이션 스토어(1220)를 통해 전자 장치(100-2)(또는외부 서버 장치)로부터 수신(다운로드)할 수 있다.
한편, 전자 장치(100-2)는 복수의 재구성된 AI 앱 각각의 성능을 나타내기 위한 시뮬레이션 정보를 앱 제공자(1210)에 전송하거나 및/또는 애플리케이션 스토어(1220)에 등록할 수도 있다. 일 예로, 사용자 장치는 애플리케이션 스토어(1220)를 통해 시뮬레이션 정보를 수신하고, 수신된 시뮬레이션 정보를 사용자에게 제공할 수 있으며, 이 경우, 사용자 장치는 사용자 장치의 제품군에 맞는 (재구성된) AI 앱을 다운로드하기 위한 사용자 입력에 따라 해당 AI 앱을 전자 장치(100-2)(또는 외부 서버 장치)로부터 다운로드할 수 있다.
도 12b는 도 12a와 같이 동작하는 전자 장치(100-2)의 소프트웨어 구조를 설명하기 위한 블록도이다. 도 12b를 참조하면, 전자 장치(100-2)는 모델 압축 모듈(310), Fine Tuning 모듈(320), 훈련 데이터 생성 모듈(330) 외에도 모델 추출 모듈(350), AI 앱 재구성 모듈(360) 등을 더 포함할 수 있다.
도 12b를 참조하면, 외부로부터 AI 앱(1201)이 수신되는 경우, 모델 추출 모듈(350)은 AI 앱을 구성하는 데이터로부터 원본 신경망 모델(1202)을 분리 추출할 수 있다. 이를 위해, 모델 추출 모델(350)은 신경망 모델에 대해 기설정된 파일 형식(ex. 확장자명 등)을 AI 앱을 구성하는 복수의 파일과 비교하여, 신경망 모델의 파일을 복수의 파일로부터 분리 추출할 수 있다.
한편, 도 12b를 참조하면, 모델 압축 모듈(310)은, 서로 다른 압축률에 따라 신경망 모델을 압축하는 복수의 압축 모듈(제1 압축 모듈, 제2 압축 모듈)을 포함할 수도 있다. 복수의 압축 모듈은 각기 서로 다른 제품군 또는 제품 사양에 따 른 조건으로 신경망 모델을 1차 압축할 수 있다. 그 결과, 모델 압축 모듈(310)을 통해 하나 이상의 1차 압축 모델(1204)이 획득될 수 있다.
구체적으로, 모델 압축 모듈(310)은 복수의 압축 모듈 중 앱 제공자(1210)가 요청한 압축률에 따라 신경망 모델을 압축할 수 있는 제1 압축 모듈을 이용하여 신경망 모델을 압축할 수 있다. 또는, 모델 압축 모듈(310)은 복수의 압축 모듈을 각각 이용하여 신경망 모델을 압축한 결과, 복수의 1차 압축 모델을 획득할 수도 있다.
그리고, Fine Tuning 모듈(320)은 훈련 데이터 생성 모듈(330)을 통해 원본 신경망 모델(1202)로부터 생성된 훈련 데이터(1205)를 이용하여, 1차 압축 모델(1204)을 Fine Tuning하고, 그 결과 최종 압축 모델을 획득할 수 있다.
이때, AI 앱 재구성 모듈(360)은 신경망 모델이 분리된 AI 앱(1203)에 Fine 최종 압축 모델을 결합하여 재구성된 AI 앱(1207)을 획득하고, 이를 애플리케이션 스토어(1220)에 등록하여 사용자 장치에 전송할 수 있다.
도 13은 전자 장치가 스마트폰, 개인 PC 등의 사용자 장치로 구현된 경우를 설명하기 위한 도면이다.
도 13을 참조하면, 스마트폰으로 구현된 전자 장치(100-3)는 서버(1310)와 통신을 수행함에 따라 원본 신경망 모델로부터 훈련 데이터 쌍을 포함하는 신규 훈련 데이터를 생성하고, 훈련된 압축 신경망 모델을 획득할 수 있다.
일 예로, 전자 장치(100-3)는 서버(1310)로부터 원본 신경망 모델을 수신한 뒤, 원본 신경망 모델로부터 신규 훈련 데이터를 생성하는 한편 원본 신경망 모델을 전자 장치(100-3)의 성능에 맞도록 압축할 수 있다.
그리고, 전자 장치(100-3)는 압축된 신경망 모델을 신규 훈련 데이터를 통해 Fine Tuning하여 훈련된 압축 신경망 모델을 획득하고, 이를 이용하여 전자 장치(100-3)의 기능을 수행할 수 있다.
다만, 전자 장치(100-3)의 성능에 대응되는 목표 압축률 또는 목표 정확도가 기설정된 임계 범위를 벗어나는 경우, 전자 장치(100-3)는 신경망 모델을 압축하지 않고, 압축이 불가능함을 사용자에게 시각적/청각적으로 알릴 수 있다.
이하 도 14 내지 도 15를 통해서는, 본 개시에 따른 전자 장치의 모델 압축방법을 설명한다.
도 14는 본 개시의 일 실시 예에 따른 전자 장치의 모델 압축 방법을 설명하기 위한 순서도이다.
도 14를 참조하면, 본 압축 방법은, 원본 신경망 모델로부터 압축 알고리즘을 통해 1차 압축 신경망 모델을 생성할 수 있다(S1410). 원본 신경망 모델은, 원본 훈련 데이터에 기초하여 훈련된 것일 수 있으며, 1차 압축 신경망 모델의 데이터 크기는 원본 신경망 모델의 데이터 크기보다 작을 수 있다.
압축 알고리즘은, Weight Pruning, Channel Pruning, Matrix Factorization, Quantization 등이 있으나 이것들에만 한정되는 것은 아니다.
그리고, 본 압축 방법은, 원본 신경망 모델에 기초하여 훈련 데이터 쌍을 획득할 수 있다(S1420).
이때, 원본 신경망 모델의 특정 출력 값에 기초하여 목적 함수를 획득하고, 목적 함수에 기초하여, 원본 신경망 모델로부터 입력 값을 획득할 수 있다.
구체적으로, 임의의 입력 값에 기초하여 원본 신경망 모델의 출력 값을 획득하고, 원본 신경망 모델의 출력 값을 목적 함수에 적용하여 목적 함수의 출력 값을 획득할 수 있다. 그리고, 목적 함수의 출력 값이 기설정된 조건을 만족하는지 여부에 기초하여 입력 값을 획득할 수 있다.
이때, 만약 목적 함수의 출력 값이 기설정된 조건을 만족하는 경우, 상술한 임의의 입력 값을 곧바로 입력 값으로 획득하고, 획득된 입력 값 및 획득된 입력 값에 기초하여 원본 신경망 모델로부터 획득된 출력 값을 포함하는 훈련 데이터 쌍을 획득할 수 있다.
반면, 목적 함수의 출력 값이 기설정된 조건을 만족하지 않는 경우, 상술한 임의의 입력 값을 변경하고, 변경된 입력 값에 기초하여 원본 신경망 모델의 출력 값을 획득할 수 있다. 그리고, 변경된 입력 값에 따른 원본 신경망 모델의 출력 값을 목적 함수에 적용하여 목적 함수의 출력 값을 획득한 결과, 목적 함수의 출력 값이 기설정된 조건을 만족하는 경우, 변경된 입력 값을 입력 값으로 획득할 수 있다.
이렇듯, 목적 함수가 기설정된 조건을 만족하도록 하는 입력 값을 찾을 때까지, 입력 값을 변경해가면서 목적 함수에 적용할 수 있다.
한편, 복수의 입력 값 각각에 기초한 목적 함수의 출력 값이 기설정된 조건을 만족하는지 여부에 기초하여, 복수의 입력 값 각각에 대응되는 입력 값을 획득할 수도 있다.
또는, 원본 신경망 모델의 복수의 특정 출력 값에 기초하여 복수의 목적 함수를 획득하고, 복수의 목적 함수 각각에 기초하여, 원본 신경망 모델로부터 입력 값을 획득할 수도 있다.
그리고, 획득된 입력 값을 포함하는 훈련 데이터 쌍을 신규 훈련 데이터로서 획득할 수 있다.
훈련 데이터 쌍은, 획득된 입력 값 및 획득된 입력 값에 따른 원본 신경망 모델의 출력 값을 포함할 수 있다. 또는, 훈련 데이터 쌍은 획득된 입력 값 및 상술한 특정 출력 값(획득된 입력 값을 구하는 데에 사용된 목적 함수에 대응되는 특정 출력 값)을 포함할 수도 있다.
또한, 획득된 입력 값을 이용하여 추가적인 입력 값을 생성하고, 추가적인 입력 값에 따른 훈련 데이터 쌍을 추가로 생성하여 신규 훈련 데이터의 양을 증가시킬 수도 있다.
구체적인 예로, 획득된 훈련 데이터 쌍이 제1 입력 값 및 제1 입력 값에 기초하여 획득된 신경망 모델의 제1 출력 값을 포함하는 경우, 제1 입력 값에 기초하여 제2 입력 값을 획득할 수 있다. 그리고, 제2 입력 값 및 제2 입력 값에 기초하여 획득된 원본 신경망 모델의 제2 출력 값을 추가적인 훈련 데이터 쌍으로 획득하여 신규 훈련 데이터에 포함시킬 수 있다.
그리고, 본 압축 방법은, 생성된 하나 이상의 훈련 데이터 쌍을 기초로 1차 압축 신경망 모델에 대한 Fine Tuning을 수행하여 최종 압축된 신경망 모델을 생성할 수 있다(S1430).
도 15는 본 개시의 압축 방법이 훈련 데이터 쌍(신규 훈련 데이터)을 생성하는 구체적인 일 예를 설명하기 위한 순서도이다.
훈련 데이터 쌍을 생성하기 위해, 본 압축 방법은 먼저 신경망 모델로부터 출력될 수 있는 값 중 특정 출력 값에 대한 목적 함수를 생성할 수 있다(S1510).
그리고, 생성된 목적 함수의 출력이 최소가 되게 하는 입력 값을 획득할 수 있다(S1520). 이 경우, 임의의 입력 값을 시작으로 입력 값을 점차 변경시켜 가면서 목적 함수에 적용한 결과, 목적 함수의 출력이 최소가 되게 하는 입력 값을 찾을 수 있다.
그리고, 시작이 되는 임의의 입력 값을 매번 달리 설정하여 S1520 과정을 여러 번 반복한 결과, 특정 출력 값에 대하여 다수의 입력 값을 획득할 수 있다(S1530).
그리고, 획득된 입력 값에 후처리를 적용하여 추가적인 입력 값을 획득할 수 있다(S1540). 구체적으로, 획득된 입력 값의 일부 데이터 값을 변경하거나 또는 획득된 두 개 이상의 입력 값을 다양한 방법으로 조합하여 새로운 입력 값을 획득할 수 있다.
그리고, 획득된 입력 값(x) 및 획득된 입력 값을 원본 신경망 모델에 입력한 결과 출력 값(y)을 포함하는 훈련 데이터 쌍을 신규 훈련 데이터로서 저장할 수 있다(S1550).
도 16은 서버로 구현된 전자 장치의 모델 압축 방법의 일 예를 설명하기 위한 순서도이다.
도 16을 참조하면, 본 압축 방법은, 외부의 사용자 장치로부터 훈련된 신경망 모델(원본 모델) 및 그에 대한 압축 요청을 수신할 수 있다(S1610). 그리고, 훈련된 신경망 모델로부터 훈련 데이터를 생성할 수 있다(S1620). 이 경우, 특정 출력 값을 통해 획득된 목적 함수를 이용하여 하나 이상의 입력 값을 획득하고, 획득된 입력 값 및 획득된 입력 값에 대한 신경망 모델의 출력 값을 데이터 쌍으로 하여 훈련 데이터를 생성/저장할 수 있다.
그리고, 본 압축 방법은 훈련된 신경망 모델의 크기를 줄이기 위해 훈련된 신경망 모델을 1차적으로 압축할 수 있다(S1630). 이 경우, 생성된 훈련 데이터를 이용하여 1차 압축된 모델을 훈련시켜 훈련된 압축 모델(최종 압축 모델)을 획득하고(S1640), 이를 압축 요청을 전송한 사용자 장치로 전송할 수 있다(S1650).
도 17은 서버로 구현된 전자 장치가 AI 앱을 재구성하여 제공하는 AI 앱 제공 방법의 예를 설명하기 위한 순서도이다. 도 17을 참조하면, 본 AI 앱 제공 방법은, Third Party 제공자 또는 외부 서버(애플리케이션 스토어) 등으로부터 AI 앱을 수신하고(S1710), AI 앱에서 신경망 모델을 분리할 수 있다(S1720). 이때, 신경망 모델은 원본 훈련 데이터를 통해 훈련된 모델일 수 있다. 예를 들어, AI 앱이 이미지 내 객체에 대한 정보를 제공하는 애플리케이션인 경우, AI 앱에 포함된 신경망 모델은, 입력된 이미지 내에 포함된 객체를 인식하도록 학습된 인공지능 모델일 수 있다.
그리고, 본 AI 앱 제공 방법은, 분리된 신경망 모델로부터 훈련 데이터를 생성하는(S1730) 한편, 해당 신경망 모델을 압축할 수 있다(S1740). 이때, 제품명, 제품군 또는 제품의 성능 별로 조건을 달리하여 신경망 모델을 압축함으로써, 압축 모델을 복수 개 획득할 수도 있다.
그리고, 압축된 신경망 모델을 생성된 훈련 데이터를 통해 훈련시켜(Fine Tuning) '훈련된 압축 모델'을 획득하고, '훈련된 압축 모델'을 신경망 모델이 분리된 AI 앱에 결합하여 AI 앱을 재구성할 수 있다(S1760). 만약, S1740에서 복수의 압축 모델이 획득된 경우, 복수의 압축 모델 각각에 대응되는 복수의 AI 앱을 획득할 수 있다.
그리고, 재구성된 AI 앱을 Third Party 제공자로 전송하거나 및/또는 애플리케이션 스토어에 등록할 수 있다(S1770). 일 예로, 재구성된 AI 앱을 애플리케이션 스토어에 등록하여, 사용자가 재구성된 AI 앱을 자유롭게 다운로드하도록 할 수 있다. 특히, 제품군에 따라 압축률이 다르게 재구성된 복수의 AI 앱을 애플리케이션 스토어에 등록함으로써, 사용자가 재구성된 복수의 AI 앱 중 사용자 장치에 맞는 AI 앱을 선택적으로 다운로드하도록 할 수 있다.
한편, 도 14 내지 도 17을 통해 상술한 전자 장치의 압축 방법은, 도 2 및 도 10을 통해 도시 및 설명한 전자 장치(100)를 통해 수행될 수 있다.
또는, 도 14 내지 도 17를 통해 상술한 전자 장치의 압축 방법은, 전자 장치(100) 및 하나 이상의 외부 장치를 포함하는 시스템을 통해 수행될 수도 있다.
한편, 이상에서 설명된 다양한 실시 예들은 소프트웨어(software), 하드웨어(hardware) 또는 이들의 조합된 것을 이용하여 컴퓨터(computer) 또는 이와 유사한 장치로 읽을 수 있는 기록 매체 내에서 구현될 수 있다.
하드웨어적인 구현에 의하면, 본 개시에서 설명되는 실시 예들은 ASICs(Application Specific Integrated Circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays), 프로세서(processors), 제어기(controllers), 마이크로 컨트롤러(micro-controllers), 마이크로 프로세서(microprocessors), 기타 기능 수행을 위한 전기적인 유닛(unit) 중 적어도 하나를 이용하여 구현될 수 있다.
일부의 경우에 본 명세서에서 설명되는 실시 예들이 프로세서(120) 자체로 구현될 수 있다. 소프트웨어적인 구현에 의하면, 본 명세서에서 설명되는 절차 및 기능과 같은 실시 예들은 별도의 소프트웨어 모듈들로 구현될 수 있다. 상술한 소프트웨어 모듈들 각각은 본 명세서에서 설명되는 하나 이상의 기능 및 작동을 수행할 수 있다.
한편, 상술한 본 개시의 다양한 실시 예들에 따른 전자 장치(100)에서의 처리동작을 수행하기 위한 컴퓨터 명령어(computer instructions)는 비일시적 컴퓨터 판독 가능 매체(non-transitory computer-readable medium) 에 저장될 수 있다. 이러한 비일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 명령어는 특정 기기의 프로세서에 의해 실행되었을 때 상술한 다양한 실시 예에 따른 전자 장치(100)에서의 처리 동작을 상술한 특정 기기가 수행하도록 한다.
비일시적 컴퓨터 판독 가능 매체란 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 비일시적 컴퓨터 판독 가능 매체의 구체적인 예로는, CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등이 있을 수 있다.
이상에서는 본 개시의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 개시는 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 개시의 요지를 벗어남이 없이 당해 개시에 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 개시의 기술적 사상이나 전망으로부터 개별적으로 이해되어서는 안될 것이다.
100, 100-1, 100-2, 100-3: 전자 장치 110: 메모리
120: 프로세서 130: 통신 인터페이스
140: 사용자 인터페이스

Claims (20)

  1. 전자 장치에 있어서,
    적어도 하나의 인스트럭션(instruction)이 저장된 메모리; 및
    상기 메모리와 연결되어 상기 전자 장치를 제어하는 프로세서;를 포함하고,
    상기 프로세서는, 상기 적어도 하나의 인스트럭션을 실행함으로써,
    훈련된 신경망 모델에 기초하여 훈련 데이터 쌍을 획득하고,
    상기 훈련된 신경망 모델로부터 소정의 압축 알고리즘에 따라 압축된 압축 신경망 모델을 획득하고,
    상기 획득된 훈련 데이터 쌍을 이용하여 상기 압축 신경망 모델을 훈련시키는 것을 특징으로 하는, 전자 장치.
  2. 제1항에 있어서,
    상기 프로세서는,
    상기 훈련된 신경망 모델의 특정 출력 값에 기초하여 목적 함수를 획득하고, 상기 목적 함수에 기초하여 상기 훈련된 신경망 모델로부터 입력 값을 획득하며,
    상기 획득된 입력 값을 포함하는 상기 훈련 데이터 쌍을 획득하는, 전자 장치.
  3. 제2항에 있어서,
    상기 프로세서는,
    임의의 입력 값에 기초하여 상기 훈련된 신경망 모델의 출력 값을 획득하고, 상기 훈련된 신경망 모델의 출력 값을 상기 목적 함수에 적용하여 상기 목적 함수의 출력 값을 획득하고, 상기 목적 함수의 출력 값이 기설정된 조건을 만족하는지 여부에 기초하여 상기 입력 값을 획득하는, 전자 장치.
  4. 제3항에 있어서,
    상기 프로세서는,
    상기 목적 함수의 출력 값이 상기 기설정된 조건을 만족하는 경우, 상기 임의의 입력 값 및 상기 임의의 입력 값에 기초하여 상기 훈련된 신경망 모델로부터 획득된 출력 값을 상기 훈련 데이터 쌍으로 획득하는, 전자 장치.
  5. 제3항에 있어서,
    상기 프로세서는,
    상기 목적 함수의 출력 값이 상기 기설정된 조건을 만족하지 않는 경우, 상기 임의의 입력 값을 변경하고, 상기 변경된 입력 값에 기초하여 상기 훈련된 신경망 모델의 출력 값을 획득하고, 상기 변경된 입력 값에 따른 상기 훈련된 신경망 모델의 출력 값을 상기 목적 함수에 적용하여 상기 목적 함수의 출력 값을 획득하고, 상기 목적 함수의 출력 값이 기설정된 조건을 만족하는 경우, 상기 변경된 입력 값 및 상기 변경된 입력 값에 기초하여 상기 훈련된 신경망 모델로부터 획득된 출력 값을 상기 훈련 데이터 쌍으로 획득하는, 전자 장치.
  6. 제3항에 있어서,
    상기 기설정된 조건은,
    상기 목적 함수의 출력 값이 최소 또는 최대가 되는 조건을 포함하는 전자 장치.
  7. 제3항에 있어서,
    상기 프로세서는,
    복수의 입력 값 각각에 기초한 상기 목적 함수의 출력 값이 기설정된 조건을 만족하는지 여부에 기초하여, 상기 복수의 입력 값 각각에 대응되는 입력 값을 획득하는, 전자 장치.
  8. 제1항에 있어서,
    상기 프로세서는,
    상기 훈련된 신경망 모델의 복수의 특정 출력 값에 기초하여 복수의 목적 함수를 획득하고, 상기 복수의 목적 함수 각각에 기초하여 상기 훈련된 신경망 모델로부터 입력 값을 획득하는, 전자 장치.
  9. 제2항에 있어서,
    상기 훈련 데이터 쌍은, 제1 입력 값 및 상기 제1 입력 값에 기초하여 획득된 상기 훈련된 신경망 모델의 제1 출력 값을 포함하고,
    상기 프로세서는,
    상기 제1 입력 값에 기초하여 제2 입력 값을 획득하고,
    상기 제2 입력 값 및 상기 제2 입력 값에 기초하여 획득된 상기 훈련된 신경망 모델의 제2 출력 값을 포함하는 다른 훈련 데이터 쌍을 획득하며,
    상기 훈련 데이터 쌍 및 상기 다른 훈련 데이터 쌍에 기초하여 상기 압축 신경망 모델을 훈련시키는, 전자 장치.
  10. 제1항에 있어서,
    통신 인터페이스;를 더 포함하고,
    상기 프로세서는,
    외부 장치로부터 상기 통신 인터페이스를 통해 상기 훈련된 압축 신경망 모델에 대한 요청이 수신되면, 상기 훈련된 압축 신경망 모델을 상기 통신 인터페이스를 통해 상기 외부 장치로 전송하는, 전자 장치.
  11. 전자 장치의 신경망 모델 압축 방법에 있어서,
    원본 신경망 모델로부터 압축 알고리즘을 통해 1차 압축 신경망 모델을 생성하는 단계;
    상기 원본 신경망 모델에 기초하여 훈련 데이터 쌍을 생성하는 단계; 및
    상기 생성된 훈련 데이터 쌍을 기초로 상기 1차 압축 신경망 모델에 대한 Fine Tuning을 수행하여 최종 압축된 신경망 모델을 생성하는 단계;를 포함하는, 압축 방법.
  12. 제11항에 있어서,
    상기 훈련 데이터 쌍을 생성하는 단계는,
    상기 원본 신경망 모델의 특정 출력 값에 기초하여 목적 함수를 획득하고, 상기 목적 함수에 기초하여 상기 원본 신경망 모델로부터 입력 값을 획득하며, 상기 획득된 입력 값을 포함하는 상기 훈련 데이터 쌍을 획득하는, 압축 방법.
  13. 제12항에 있어서,
    상기 훈련 데이터 쌍을 생성하는 단계는,
    임의의 입력 값에 기초하여 상기 원본 신경망 모델의 출력 값을 획득하고, 상기 원본 신경망 모델의 출력 값을 상기 목적 함수에 적용하여 상기 목적 함수의 출력 값을 획득하고, 상기 목적 함수의 출력 값이 기설정된 조건을 만족하는지 여부에 기초하여 상기 입력 값을 획득하는, 압축 방법.
  14. 제13항에 있어서,
    상기 훈련 데이터 쌍을 생성하는 단계는,
    상기 목적 함수의 출력 값이 상기 기설정된 조건을 만족하는 경우, 상기 임의의 입력 값을 상기 입력 값으로 획득하고, 상기 획득된 입력 값 및 상기 획득된 입력 값에 기초하여 상기 원본 신경망 모델로부터 획득된 출력 값을 포함하는 상기 훈련 데이터 쌍을 획득하는, 전자 장치.
  15. 제13항에 있어서,
    상기 훈련 데이터 쌍을 생성하는 단계는,
    상기 목적 함수의 출력 값이 상기 기설정된 조건을 만족하지 않는 경우, 상기 임의의 입력 값을 변경하고, 상기 변경된 입력 값에 기초하여 상기 원본 신경망 모델의 출력 값을 획득하고, 상기 변경된 입력 값에 따른 상기 원본 신경망 모델의 출력 값을 상기 목적 함수에 적용하여 상기 목적 함수의 출력 값을 획득하고, 상기 목적 함수의 출력 값이 기설정된 조건을 만족하는 경우, 상기 변경된 입력 값을 포함하는 상기 훈련 데이터 쌍을 획득하는, 압축 방법.
  16. 제12항에 있어서,
    상기 훈련 데이터 쌍을 생성하는 단계는,
    복수의 입력 값 각각에 기초한 상기 목적 함수의 출력 값이 기설정된 조건을 만족하는지 여부에 기초하여, 상기 복수의 입력 값 각각에 대응되는 입력 값을 획득하고, 상기 획득된 입력 값을 포함하는 상기 훈련 데이터 쌍을 획득하는, 압축 방법.
  17. 제11항에 있어서,
    상기 훈련 데이터 쌍을 생성하는 단계는,
    상기 원본 신경망 모델의 복수의 특정 출력 값에 기초하여 복수의 목적 함수를 획득하고, 상기 복수의 목적 함수 각각에 기초하여 상기 원본 신경망 모델로부터 입력 값을 획득하고, 상기 획득된 입력 값을 포함하는 상기 훈련 데이터 쌍을 획득하는, 압축 방법.
  18. 제12항에 있어서,
    상기 훈련 데이터 쌍은, 제1 입력 값 및 상기 제1 입력 값에 기초하여 획득된 상기 원본 신경망 모델의 제1 출력 값을 포함하고,
    상기 압축 방법은,
    상기 제1 입력 값에 기초하여 제2 입력 값을 획득하는 단계;
    상기 제2 입력 값 및 상기 제2 입력 값에 기초하여 획득된 상기 원본 신경망 모델의 제2 출력 값을 포함하는 다른 훈련 데이터 쌍을 획득하는 단계; 및
    상기 훈련 데이터 쌍 및 상기 다른 훈련 데이터 쌍을 기초로 상기 1차 압축 신경망 모델에 대한 Fine Tuning을 수행하는 단계;를 더 포함하는, 압축 방법.
  19. 제11항에 있어서,
    외부 장치로부터 상기 최종 압축된 신경망 모델에 대한 요청이 수신되면, 상기 최종 압축된 신경망 모델을 상기 외부 장치로 전송하는 단계;를 더 포함하는, 압축 방법.
  20. 서버 장치에 있어서,
    적어도 하나의 인스트럭션이 저장된 메모리;
    통신부; 및
    상기 메모리 및 통신부와 연결되어 상기 서버 장치를 제어하는 프로세서;를 포함하고,
    상기 프로세서는, 상기 적어도 하나의 인스트럭션을 실행함으로써,
    상기 통신부를 통해 외부 장치로부터 훈련된 원본 신경망 모델 및 상기 원본 신경망 모델에 대한 압축 요청이 수신되면, 상기 원본 신경망 모델을 압축하여 압축 신경망 모델을 획득하고,
    상기 원본 신경망 모델에 기초하여 훈련 데이터 쌍을 획득하며,
    상기 획득된 훈련 데이터 쌍에 기초하여 상기 압축 신경망 모델을 훈련시키고,
    상기 훈련된 압축 신경망 모델을 상기 통신부를 통해 상기 외부 장치로 전송하는, 서버 장치.
KR1020190112019A 2019-05-16 2019-09-10 신경망 모델 장치 및 신경망 모델의 압축 방법 KR20200132627A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP20804770.4A EP3935578A4 (en) 2019-05-16 2020-04-29 NERVE NETWORK MODEL APPARATUS AND NERVE NETWORK MODEL COMPRESSION METHOD
CN202080009630.9A CN113316795A (zh) 2019-05-16 2020-04-29 神经网络模型装置和神经网络模型的压缩方法
PCT/KR2020/005686 WO2020231049A1 (en) 2019-05-16 2020-04-29 Neural network model apparatus and compressing method of neural network model
US16/868,136 US11657284B2 (en) 2019-05-16 2020-05-06 Neural network model apparatus and compressing method of neural network model

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962848763P 2019-05-16 2019-05-16
US62/848,763 2019-05-16

Publications (1)

Publication Number Publication Date
KR20200132627A true KR20200132627A (ko) 2020-11-25

Family

ID=73645848

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190112019A KR20200132627A (ko) 2019-05-16 2019-09-10 신경망 모델 장치 및 신경망 모델의 압축 방법

Country Status (3)

Country Link
EP (1) EP3935578A4 (ko)
KR (1) KR20200132627A (ko)
CN (1) CN113316795A (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102390553B1 (ko) * 2020-11-24 2022-04-27 한국과학기술원 연합 학습 방법 및 시스템
KR20220073600A (ko) * 2020-11-26 2022-06-03 주식회사 노타 최적 파라미터 결정 방법 및 시스템
WO2022145551A1 (ko) * 2020-12-29 2022-07-07 엘지전자 주식회사 지능적 신호 송수신 방법 및 이를 위한 장치
KR20220109826A (ko) * 2021-01-29 2022-08-05 주식회사 노타 인공지능 추론모델을 경량화하는 방법 및 시스템
KR102525122B1 (ko) * 2022-02-10 2023-04-25 주식회사 노타 신경망 모델을 압축하는 방법 및 이를 수행하는 전자 장치
KR102661026B1 (ko) * 2022-12-21 2024-04-25 한국과학기술원 동적 리소스 적응형 딥러닝 모델 추론 방법 및 상기 방법을 수행하는 딥러닝 모델 추론 장치

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230252292A1 (en) 2022-02-10 2023-08-10 Nota, Inc. Method of providing information on neural network model and electronic apparatus for performing the same
CN116072096B (zh) * 2022-08-10 2023-10-20 荣耀终端有限公司 模型训练方法、声学模型、语音合成系统和电子设备
WO2024098373A1 (en) * 2022-11-11 2024-05-16 Nvidia Corporation Techniques for compressing neural networks

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2017230184B2 (en) * 2016-03-11 2021-10-07 Magic Leap, Inc. Structure learning in convolutional neural networks

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102390553B1 (ko) * 2020-11-24 2022-04-27 한국과학기술원 연합 학습 방법 및 시스템
KR20220073600A (ko) * 2020-11-26 2022-06-03 주식회사 노타 최적 파라미터 결정 방법 및 시스템
KR20230024950A (ko) * 2020-11-26 2023-02-21 주식회사 노타 최적 파라미터 결정 방법 및 시스템
WO2022145551A1 (ko) * 2020-12-29 2022-07-07 엘지전자 주식회사 지능적 신호 송수신 방법 및 이를 위한 장치
KR20220109826A (ko) * 2021-01-29 2022-08-05 주식회사 노타 인공지능 추론모델을 경량화하는 방법 및 시스템
KR102525122B1 (ko) * 2022-02-10 2023-04-25 주식회사 노타 신경망 모델을 압축하는 방법 및 이를 수행하는 전자 장치
WO2023153821A1 (en) * 2022-02-10 2023-08-17 Nota, Inc. Method of compressing neural network model and electronic apparatus for performing the same
KR20230121588A (ko) * 2022-02-10 2023-08-18 주식회사 노타 신경망 모델을 압축하는 방법 및 이를 수행하는 전자 장치
US11775806B2 (en) 2022-02-10 2023-10-03 Nota, Inc. Method of compressing neural network model and electronic apparatus for performing the same
KR102691118B1 (ko) * 2022-02-10 2024-08-05 주식회사 노타 신경망 모델을 제공하는 방법 및 이를 수행하는 장치
KR102661026B1 (ko) * 2022-12-21 2024-04-25 한국과학기술원 동적 리소스 적응형 딥러닝 모델 추론 방법 및 상기 방법을 수행하는 딥러닝 모델 추론 장치

Also Published As

Publication number Publication date
CN113316795A (zh) 2021-08-27
EP3935578A4 (en) 2022-06-01
EP3935578A1 (en) 2022-01-12

Similar Documents

Publication Publication Date Title
KR20200132627A (ko) 신경망 모델 장치 및 신경망 모델의 압축 방법
US11657284B2 (en) Neural network model apparatus and compressing method of neural network model
CN111062495B (zh) 机器学习方法及相关装置
JP7322044B2 (ja) レコメンダシステムのための高効率畳み込みネットワーク
Bui et al. Federated user representation learning
KR102596644B1 (ko) 메모리 대역폭 활용을 감소시키기 위해 활성화 데이터의 압축 및 압축 해제를 사용하는 신경망 프로세서
JP7046181B2 (ja) マルチ・タスク学習を用いた特徴抽出方法、コンピュータ・システム、およびコンピュータ・プログラム製品(マルチ・タスク学習を用いた特徴抽出)
WO2020140403A1 (zh) 文本分类方法、装置、计算机设备及存储介质
EP3483791A1 (en) Computation system using hierarchical network
CN111178507B (zh) 图谱卷积神经网络数据处理方法及装置
JP2018129033A5 (ko)
CN112771544A (zh) 重构人工智能模型的电子装置及其控制方法
WO2017112291A1 (en) Technologies for distributed machine learning
CN111357051B (zh) 语音情感识别方法、智能装置和计算机可读存储介质
CN111523324B (zh) 命名实体识别模型的训练方法及装置
EP3767549A1 (en) Delivery of compressed neural networks
CN111104954A (zh) 一种对象分类的方法与装置
US20210279589A1 (en) Electronic device and control method thereof
CN106169961B (zh) 基于人工智能的神经网络的网络参数处理方法及装置
Huu et al. Proposing a Recognition System of Gestures Using MobilenetV2 Combining Single Shot Detector Network for Smart‐Home Applications
CN114071141A (zh) 一种图像处理方法及其设备
CN111914987A (zh) 基于神经网络的数据处理方法及装置、设备和可读介质
CN117033600A (zh) 用于认知实体合成的生成性角色引擎
CN115499635B (zh) 数据压缩处理方法及装置
KR20180028610A (ko) 관련도 벡터 머신을 이용한 기계학습방법, 이를 구현하는 컴퓨터 프로그램 및 이를 수행하도록 구성되는 정보처리장치

Legal Events

Date Code Title Description
A201 Request for examination