KR102581471B1 - 분류를 위한 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치 - Google Patents

분류를 위한 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치 Download PDF

Info

Publication number
KR102581471B1
KR102581471B1 KR1020180077496A KR20180077496A KR102581471B1 KR 102581471 B1 KR102581471 B1 KR 102581471B1 KR 1020180077496 A KR1020180077496 A KR 1020180077496A KR 20180077496 A KR20180077496 A KR 20180077496A KR 102581471 B1 KR102581471 B1 KR 102581471B1
Authority
KR
South Korea
Prior art keywords
layer
neural network
precision
classes
processor
Prior art date
Application number
KR1020180077496A
Other languages
English (en)
Other versions
KR20190127510A (ko
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 US16/244,644 priority Critical patent/US11875251B2/en
Priority to JP2019075655A priority patent/JP7329352B2/ja
Priority to EP19169298.7A priority patent/EP3564868A1/en
Priority to CN201910315912.0A priority patent/CN110443347B/zh
Publication of KR20190127510A publication Critical patent/KR20190127510A/ko
Application granted granted Critical
Publication of KR102581471B1 publication Critical patent/KR102581471B1/ko
Priority to US18/529,620 priority patent/US20240112030A1/en

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
    • 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

Landscapes

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

Abstract

클래스들의 개수에 대한 정보에 기초하여, 입력 데이터가 각 클래스로 분류될 가능성에 대한 연산 결과를 출력하는 레이어를 위한 정밀도를 결정하는 방법 및 이를 위한 뉴럴 네트워크 장치를 제공한다.

Description

분류를 위한 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치 {Method and apparatus for processing parameter in neural network for classification}
본 개시는 분류를 위한 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치에 관한 것이다.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 최근 뉴럴 네트워크 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크 장치를 사용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다.
뉴럴 네트워크 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 뉴럴 네트워크 장치가 입력을 실시간으로 분석하고, 정보를 추출하기 위해서 뉴럴 네트워크 연산을 효율적으로 처리할 수 있는 기술이 요구된다. 예를 들어, 뉴럴 네트워크 장치의 복잡한 입력 데이터를 처리하는데 필요한 연산량을 감소시키면서도 정확도 손실을 최소화할 수 있는 기술이 요구된다.
분류를 위한 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치를 제공하는데 있다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따라, 분류(classification)를 위한 뉴럴 네트워크에서 파라미터를 처리하는 방법은, 입력 데이터가 분류될 수 있는 클래스들의 개수에 대한 정보를 획득하는 단계; 획득된 정보에 기초하여, 입력 데이터가 각 클래스로 분류될 가능성에 대한 연산 결과를 출력하는 레이어(layer)를 위한 정밀도(precision)를 결정하는 단계; 및 결정된 정밀도에 따라, 레이어에서 파라미터를 처리하는 단계를 포함할 수 있다.
다른 측면에 따라, 분류(classification)를 위한 뉴럴 네트워크에서 파라미터를 처리하는 장치는, 적어도 하나의 프로그램이 저장된 메모리; 및 적어도 하나의 프로그램을 실행함으로써, 입력 데이터가 분류될 수 있는 클래스들의 개수에 대한 정보를 획득하고, 획득된 정보에 기초하여, 입력 데이터가 각 클래스로 분류될 가능성에 대한 연산 결과를 출력하는 레이어(layer)를 위한 정밀도(precision)를 결정하고, 결정된 정밀도에 따라, 레이어에서 파라미터를 처리하는 프로세서를 포함할 수 있다.
또 다른 측면에 따라, 분류(classification)를 위한 뉴럴 네트워크에서 파라미터를 처리하는 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체가 제공된다.
본 실시예들에 따르면, 뉴럴 네트워크 장치는 뉴럴 네트워크 내 모든 레이어에 대해 일괄적으로 고정된 정밀도(precision)를 설정하는 것이 아니라, 마지막 FC 레이어(last FC layer)와 같은 출력 레이어에 대해서는 클래스들의 개수를 고려한 정밀도를 설정하는 바, 뉴럴 네트워크의 훈련/학습 과정에서의 정확도 손실을 최소화시킬 수 있다.
도 1은 일부 실시예에 따른 뉴럴 네트워크의 예시를 나타내는 도면이다.
도 2는 일 실시예에 따른 뉴럴 네트워크 장치의 하드웨어 구성을 도시한 블록도이다.
도 3은 분류를 위한 뉴럴 네트워크의 일 실시예를 나타낸다.
도 4는 일 실시예에 따라 분류를 위한 뉴럴 네트워크 내 각 레이어의 출력값들을 나타낸다.
도 5는 분류를 위한 뉴럴 네트워크에서 정밀도를 결정하는 실시예를 나타낸다.
도 6은 일 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 7은 일 실시예에 따라, 뉴럴 네트워크 장치의 동작 방법을 설명하기 위한 도면이다.
이하 첨부된 도면을 참조하면서 오로지 예시를 위한 실시예들을 상세히 설명하기로 한다. 하기 설명은 실시예들을 구체화하기 위한 것일 뿐 발명의 권리 범위를 제한하거나 한정하는 것이 아님은 물론이다. 상세한 설명 및 실시예로부터 당해 기술분야의 전문가가 용이하게 유추할 수 있는 것은 권리범위에 속하는 것으로 해석된다.
본 명세서에서 사용되는 '구성된다' 또는 '포함한다' 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 명세서에서 사용되는 '제 1' 또는 '제 2' 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용할 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다.
본 실시예들은 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치에 관한 것으로서 이하의 실시예들이 속하는 기술 분야에서 통상의 지식을 가진 자에게 널리 알려져 있는 사항들에 관해서는 자세한 설명을 생략한다.
도 1은 일부 실시예에 따른 뉴럴 네트워크의 예시를 나타내는 도면이다.
도 1을 참조하면, 일부 실시예에 따른 뉴럴 네트워크(10)가 도시되어 있다. 뉴럴 네트워크(10)는 입력 레이어, 히든 레이어들 및 출력 레이어를 포함하는 구조를 가지며, 수신되는 입력 데이터(예를 들어, 를 기초로 연산을 수행하고, 수행 결과를 기초로 출력 데이터(예를 들어, )를 생성할 수 있다.
뉴럴 네트워크(10)는 1개 이상의 히든 레이어를 포함하는 딥 뉴럴 네트워크(Deep Neural Network: DNN) 또는 n-계층 뉴럴 네트워크(n-layers neural networks)일 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 뉴럴 네트워크(10)는 입력 레이어(Layer 1), 2개의 히든 레이어들(Layer 2 및 Layer 3) 및 출력 레이어(Layer 4)를 포함하는 DNN일 수 있다. DNN은 Convolutional Neural Networks(CNN), Recurrent Neural Networks(RNN), Deep Belief Networks, Restricted Boltzman Machines 등을 포함할 수 있으나, 이에 제한되지 않는다.
뉴럴 네트워크(10)가 DNN 구조를 갖는 경우 유효한 정보를 추출할 수 있는 보다 많은 레이어들을 포함하므로, 뉴럴 네트워크(10)는 종래의 뉴럴 네트워크보다 복잡한 데이터 집합들을 처리할 수 있다. 한편, 뉴럴 네트워크(10)는 4개의 레이어들을 포함하는 것으로 도시되어 있으나, 이는 예시에 불과할 뿐 뉴럴 네트워크(10)는 더 적거나 많은 레이어들을 포함할 수 있다. 또한, 뉴럴 네트워크(10)는 도 1에 도시된 것과는 다른 다양한 구조의 레이어들을 포함할 수 있다. 예를 들어, 뉴럴 네트워크(10)는 딥 뉴럴 네트워크로써, 컨볼루션 레이어(convolution layer), 풀링 레이어(pooling layer), 및 풀리 커넥티드(fully connected) 레이어를 포함할 수 있다.
뉴럴 네트워크(10)에 포함된 레이어들 각각은 "뉴런(neuron)", "프로세싱 엘리먼트(Processing element: PE)", "유닛(unit)" 또는 이와 유사한 용어들로 알려진, 복수의 인공 노드(artificial node)들을 포함할 수 있다. 예를 들어, 도 1에 도시된 바와 같이, Layer 1은 2개의 노드들, Layer 2는 3개의 노드들을 포함할 수 있다. 다만, 이는 예시에 불과할 뿐 뉴럴 네트워크(10)에 포함된 레이어들 각각은 다양한 개수의 노드들을 포함할 수 있다.
뉴럴 네트워크(10)에 포함된 레이어들 각각에 포함된 노드들은 서로 연결되어 데이터를 교환할 수 있다. 예를 들어, 하나의 노드는 다른 노드들로부터 데이터를 수신하여 연산할 수 있고, 연산 결과를 또 다른 노드들로 출력할 수 있다.
노드들 각각의 출력 값은 액티베이션(activation)이라고 불릴 수 있다. 액티베이션은 한 노드의 출력 값이면서, 다음 레이어에 포함된 노드들의 입력 값일 수 있다. 한편, 노드들 각각은 이전 레이어에 포함된 노드들로부터 수신된 액티베이션들 및 웨이트(weight)들에 기초하여 자신의 액티베이션을 결정할 수 있다. 웨이트는 각 노드에서의 액티베이션을 계산하기 위해 이용되는 파라미터로서, 노드들 간의 연결관계에 할당되는 값일 수 있다.
노드들 각각은 입력을 받아 액티베이션을 출력하는 연산 유닛(computational unit)일 수 있고, 입력-출력을 매핑할 수 있다. 예를 들어, σ는 활성화 함수(activation function)이고, 는 (i-1) 번째 레이어에 포함된 k 번째 노드로부터 i 번째 레이어에 포함된 j번째 노드로의 웨이트이며, 는 i 번째 레이어에 포함된 j 번째 노드의 바이어스(bias) 값이고, 는 i 번째 레이어의 j 번째 노드의 액티베이션이라고 할 때, 액티베이션 는 다음과 같은 수학식 1을 따를 수 있다.
도 1에 도시된 바와 같이, 2번째 레이어(Layer 2)의 첫 번째 노드의 액티베이션은 로 표현될 수 있다. 또한, 은 수학식 1에 따라 의 값을 가질 수 있다. 다만, 앞서 설명한 수학식 1은 뉴럴 네트워크에서 데이터를 처리하기 위해 이용되는 액티베이션 및 웨이트를 설명하기 위한 예시일 뿐, 이에 제한되지 않는다. 액티베이션은 이전 레이어로부터 수신된 액티베이션들의 가중 합계(weighted sum)에 활성화 함수를 적용한 값을 Rectified Linear Unit (ReLU)을 통과시킴으로써 획득된 값일 수도 있다.
앞서 설명한 것과 같이, 뉴럴 네트워크(10)에서는 수많은 데이터 집합들이 상호 연결된 복수의 채널들 간에 교환되고, 레이어를 지나면서 수많은 연산 과정을 거친다. 따라서, 복잡한 입력 데이터를 처리하는데 필요한 연산량을 감소시키면서도 정확도 손실을 최소화할 수 있는 기술이 요구된다.
도 2는 일 실시예에 따른 뉴럴 네트워크 장치의 하드웨어 구성을 도시한 블록도이다.
뉴럴 네트워크 장치(100)는 프로세서(110) 및 메모리(120)를 포함한다. 도 2에 도시된 뉴럴 네트워크 장치(100)에는 본 실시예들와 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴럴 네트워크 장치(100)는 도 2에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당업자에게 자명하다.
뉴럴 네트워크 장치(100)는 뉴럴 네트워크를 생성하거나, 뉴럴 네트워크를 훈련(train)(또는 학습(learn))시키거나, 부동 소수점 타입의 뉴럴 네트워크를 고정 소수점 타입의 뉴럴 네트워크로 양자화하거나, 또는 뉴럴 네트워크를 재훈련(retrain)하는 기능들과 같은 다양한 프로세싱 기능들을 갖는 컴퓨팅 디바이스에 해당된다. 예를 들어, 뉴럴 네트워크 장치(100)는 PC(personal computer), 서버 디바이스, 모바일 디바이스 등의 다양한 종류의 디바이스들로 구현될 수 있다. 또한, 뉴럴 네트워크 장치(100)는 뉴럴 네트워크 구동을 위한 하드웨어 가속기를 포함할 수 있다. 하드웨어 가속기는 예를 들어, 뉴럴 네트워크 구동을 위한 전용 모듈인 NPU(neural processing unit), TPU(Tensor Processing Unit), Neural Engine 등에 해당될 수 있으나, 이에 제한되지 않는다.
프로세서(110)는 뉴럴 네트워크 장치(100)를 제어하기 위한 전반적인 기능을 수행하는 역할을 한다. 예를 들어, 프로세서(110)는 뉴럴 네트워크 장치(100) 내의 메모리(120)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(100)를 전반적으로 제어한다. 프로세서(110)는 뉴럴 네트워크 장치(100) 내에 구비된 CPU(central processing unit), GPU(graphics processing unit), AP(application processor) 등으로 구현될 수 있으나, 이에 제한되지 않는다.
메모리(120)는 뉴럴 네트워크 장치(100) 내에서 처리되는 각종 데이터들을 저장하는 하드웨어로서, 예를 들어, 메모리(120)는 뉴럴 네트워크 장치(100)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 메모리(120)는 뉴럴 네트워크 장치(100)에 의해 구동될 애플리케이션들, 드라이버들 등을 저장할 수 있다. 메모리(120)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리(1940)는 휘발성 메모리(volatile memory) 또는 불휘발성 메모리(nonvolatile memory) 중 적어도 하나를 포함할 수 있다.
프로세서(110)는 주어진 초기 뉴럴 네트워크를 반복적으로 훈련(학습)시킴으로써, 훈련된 뉴럴 네트워크를 생성할 수 있다. 이때, 프로세서(110)는 기 설정된 정밀도(precision)에 따라 뉴럴 네트워크를 훈련시킬 수 있다. 다시 말해, 프로세서(110)는 훈련 시 뉴럴 네트워크에서 처리되는 파라미터의 정밀도를 설정할 수 있다. 정밀도는 뉴럴 네트워크 내 파라미터를 얼마나 디테일하게 처리할 수 있는 정도를 의미한다. 정밀도는 뉴럴 네트워크 내 파라미터의 비트 폭(bitwidth)으로 설명될 수 있다. 예를 들어, 32비트 부동 소수점 정밀도(32bit floating point precision)의 파라미터와 같은 높은 정밀도(high precision)를 갖는 파라미터가 존재할 수 있고, 8비트 고정 소수점 정밀도(8bit fixed point precision)의 파라미터와 같은 낮은 정밀도(low precision)를 갖는 파라미터가 존재할 수 있다. 여기서, 파라미터들은 뉴럴 네트워크의 입/출력 액티베이션들, 웨이트들, 바이어스들 등 뉴럴 네트워크에 입/출력되는 다양한 종류의 데이터를 포함할 수 있다.
프로세서(110)는 낮은 정밀도(low precision)에 따라 뉴럴 네트워크의 파라미터를 처리할 수 있다. 다시 말해, 프로세서(110)는 종래의 뉴럴 네트워크보다 상대적으로 적은 비트 폭을 갖는 데이터를 파라미터로 이용함으로써, 정밀도(precision)를 낮추면서 연산량을 감소시킬 수 있다. 예를 들어, 32 비트 또는 64비트의 부동 소수점 또는 고정 소수점 데이터를 이용하는 종래의 뉴럴 네트워크와는 달리, 낮은 정밀도에 따라, 프로세서(110)는 뉴럴 네트워크에서 8 비트 또는 16 비트의 부동 소수점 또는 고정 소수점 데이터를 파라미터로 이용할 수 있다. 다만, 뉴럴 네트워크 내 모든 레이어들에 공통적으로 낮은 정밀도를 설정하는 경우, 뉴럴 네트워크 내 일부 레이어의 특성 상 정확도 손실이 크게 발생할 수 있는 바, 뉴럴 네트워크 내 일부 레이어에 대해서는 정밀도를 높게 설정하여 정확도 손실을 최소화시킬 필요가 있다.
프로세서(110)는 분류(classification)를 위한 뉴럴 네트워크를 생성할 수 있으며, 분류를 위한 뉴럴 네트워크를 훈련시킬 수 있다. 분류를 위한 뉴럴 네트워크는, 입력 데이터가 클래스들 중 어느 클래스에 해당하는 지에 대한 연산 결과를 출력할 수 있다. 구체적으로, 분류를 위한 뉴럴 네트워크는, 입력 데이터가 클래스들 각각에 해당할 가능성에 대한 연산 결과를, 클래스들 각각에 대한 결과값으로써 출력할 수 있다. 또한, 분류를 위한 뉴럴 네트워크는, 소프트맥스 레이어(softmax layer) 및 손실 레이어(loss layer)를 포함할 수 있다. 소프트맥스 레이어는, 클래스들 각각에 대한 결과값을 확률값으로 변환시킬 수 있고, 손실 레이어는 학습을 위한 목적함수(objective function)로서 손실을 연산할 수 있다.
도 3은 분류를 위한 뉴럴 네트워크의 일 실시예를 나타낸다.
분류를 위한 뉴럴 네트워크(300)는, 히든 레이어들(310), FC 레이어(fully-connected layer)(320), 소프트맥스 레이어(330), 및 손실 레이어(340)를 포함할 수 있다. 히든 레이어들(310) 중 일부는 FC 레이어가 될 수 있는 바, FC 레이어(320)는 뉴럴 네트워크(300)의 마지막(last) FC 레이어가 될 수 있다. 다시 말해, FC 레이어(320)는 뉴럴 네트워크(300)의 FC 레이어들 중에서 마지막 순서의 FC 레이어가 될 수 있다.
입력 데이터가 뉴럴 네트워크(300)에 입력되는 경우, 히든 레이어들(310) 및 FC 레이어(320)의 순차적인 연산 과정을 거친 후, FC 레이어(320)는 입력 데이터가 각 클래스로 분류될 가능성에 대한 연산 결과(s)를 출력할 수 있다. 다시 말해, FC 레이어(320)는, 클래스들 각각에 대한 연산 결과(s)로써, 입력 데이터가 해당 클래스로 분류될 가능성에 대한 결과값을 출력할 수 있다. 구체적으로, FC 레이어(320)는 클래스들 각각에 대응되는 노드들을 포함할 수 있고, FC 레이어(320)의 노드들 각각은 클래스들 각각으로 분류될 가능성에 대한 결과값을 출력할 수 있다. 예를 들어, 뉴럴 네트워크가 5개의 클래스들을 대상으로 하는 분류화 작업을 위해 구현되는 경우, FC 레이어의 제 1 내지 5 노드들 각각의 출력값은 입력 데이터가 제 1 클래스 내지 제 5 클래스 각각으로 분류될 가능성을 나타내는 결과값일 수 있다.
FC 레이어(320)는 연산 결과(s)를 소프트맥스 레이어(330)로 출력할 수 있고, 소프트맥스 레이어(330)는 연산 결과(s)을 확률값(y)으로 변환시킬 수 있다. 다시 말해, 소프트맥스 레이어(330)는, 입력 데이터가 각 클래스로 분류될 가능성에 대한 결과값을 정규화하여 확률값(y)을 생성할 수 있다. 이어서, 소프트맥스 레이어(330)는 확률값(y)을 손실 레이어(340)로 출력할 수 있고, 손실 레이어(340)는 확률값(y)에 기반하여 연산 결과(s)의 크로스 엔트로피 손실(cross entropy loss)을 계산할 수 있다. 다시 말해, 손실 레이어(340)는 연산 결과(s)의 에러(error)를 나타내는 크로스 엔트로피 손실을 계산할 수 있다.
예를 들어, 소프트맥스 레이어(330)는 하기 수학식 2를 이용하여 연산 결과(s)를 확률값(y)으로 변환시킬 수 있고, 손실 레이어(340)는 하기 수학식 3을 이용하여, 연산 결과(s)의 크로스 엔트로피 손실(L)을 계산할 수 있다.
수학식 2 및 3에서, si는 FC 레이어(320)의 i번째 노드의 출력값(즉, 클래스들 중 i번째 클래스에 대한 결과값)을 나타내고, yi는 소프트맥스 레이어(330)의 i번째 노드의 출력값(즉, 클래스들 중 i번째 클래스에 대한 확률값)을 나타내고, Nc는 클래스들의 개수를 나타내고, ti는 i번째 클래스에 대한 GT 라벨(Ground Truth label)이 될 수 있다.
이어서, 역 전파(back propagation) 학습 과정으로써, 손실 레이어(340)를 거쳐 소프트맥스 레이어(330)는 크로스 엔트로피 손실(L)의 그래디언트(gradient)를 계산할 수 있다.
예를 들어, 소프트맥스 레이어(330)는 하기 수학식 4을 이용하여 크로스 엔트로피 손실(L)의 그래디언트()를 계산할 수 있다.
수학식 4에서, si는 FC 레이어(320)의 i번째 노드의 출력값(즉, 클래스들 중 i번째 클래스에 대한 결과값)을 나타내고, yi는 소프트맥스 레이어(330)의 i번째 노드의 출력값(즉, 클래스들 중 i번째 클래스에 대한 확률값)을 나타내고, Nc는 클래스들의 개수를 나타내고, ti는 i번째 클래스에 대한 GT 라벨(Ground Truth label)이 될 수 있다.
이어서, FC 레이어(320)에서, 크로스 엔트로피 손실(L)의 그래디언트에 기초한 학습 과정이 수행될 수 있다. 예를 들어, 경사하강법(gradient decent algorithm)에 따라 FC 레이어(320)의 웨이트가 업데이트될 수 있다. 또한, 히든 레이어들(310)에서도 연쇄적인 학습 과정이 수행될 수 있다.
도 4는 일 실시예에 따라 분류를 위한 뉴럴 네트워크 내 각 레이어의 출력값들을 나타낸다.
뉴럴 네트워크 내 각 레이어에서는 기 설정된 정밀도에 따른 값들이 출력될 수 있다. 구체적으로, 도 4를 살펴보면, 뉴럴 네트워크 내 각 레이어의 출력값들은 양자화된 레벨들(quantized levels)에 분포될 수 있다. 예를 들어, 기 설정된 정밀도가 3비트의 비트폭인 경우, 출력값들은 23개의 양자화된 레벨들에 분포될 수 있다.
도 4의 상단 그래프를 살펴보면, 마지막 FC 레이어인 FC 레이어(320)의 출력값들(si)이 0을 중심으로 양자화된 레벨들에 분포되는 반면, 소프트맥스 레이어(330)의 출력값들(yi)은, 정규화된 확률값이기 때문에, 1/(클래스들의 개수 Nc)를 중심으로 양자화된 레벨들에 분포될 수 있다. 예를 들어, 클래스들의 개수가 2인 경우, 소프트맥스 레이어(330)의 출력값들은 1/2를 중심으로 양자화된 레벨들에 분포될 수 있고, 클래스들의 개수가 1000인 경우, 소프트맥스 레이어(330)의 출력값들은 1/1000을 중심으로 양자화된 레벨들에 분포될 수 있다.
도 4의 하단 그래프를 살펴보면, 소프트맥스 레이어(330)의 출력값인, FC 레이어(320)로 입력되는 크로스 엔트로피 손실의 그래디언트()가 도시된다. 수학식 4에 따른 그래디언트의 특성 상 GT 라벨에 해당하는 클래스에 대한 그래디언트는 -1과 0 사이의 값을 가질 수 있지만, 다른 클래스들에 대한 그래디언트는 0과 1 사이의 값을 가질 수 있다. 특히, 클래스들의 개수가 많을수록, 다른 클래스들에 대한 그래디언트는, 0에 밀접한 값을 가질 수 있다.
FC 레이어(320)로 입력되는 그래디언트는 기 설정된 정밀도에 따른 값을 갖도록 처리될 수 있다. 다시 말해, FC 레이어(320)로 입력되는 그래디언트는 기 설정된 비트폭에 따른 양자화된 레벨들로 조정될 수 있다. 다만, 클래스들의 개수가 많은 경우, 그래디언트가 양자화된 레벨들로 조정되는 과정에서, GT 라벨에 해당하는 클래스에 대한 그래디언트는 -1로 조정될 수 있지만, 다른 클래스들에 대한 그래디언트는 모두 0으로 조정될 수 있다. 예를 들어, 도 4의 우측 그래프를 살펴보면, 클래스의 개수가 2인 경우, GT 라벨에 해당하지 않는 클래스들에 대한 그래디언트가 0과 1 사이의 레벨들로 조정될 수 있지만, 클래스의 개수가 1000인 경우, GT 라벨에 해당하지 않는 클래스들에 대한 그래디언트는 모두 0으로 조정될 수 있다. 따라서, 클래스들의 개수가 많은 경우, 전체 클래스들에 대한 그래디언트의 총합이 음수 값으로 편향될(biased) 수 있고, 결과적으로, 뉴럴 네트워크(300)의 학습 또는 훈련에 부정적인 영향을 미칠 수 있다.
따라서, 뉴럴 네트워크(300) 내 모든 레이어에 일괄적으로 고정된 정밀도(특히, 낮은 정밀도)를 설정하는 것이 아니라, FC 레이어(320)에 대해서는 클래스들의 개수를 고려하여 정밀도를 설정하는 것이 요구된다.
다시 도 2를 참조하면, 프로세서(110)는, 클래스들의 개수에 대한 정보에 기초하여, 입력 데이터가 각 클래스로 분류될 가능성에 대한 연산 결과를 출력하는 레이어(이하, 설명의 편의를 위해 '출력 레이어'로 줄여서 지칭한다.)를 위한 정밀도를 결정할 수 있다. 예를 들어, 도 3을 참조하면, 출력 레이어는, 마지막 FC 레이어인 FC 레이어(320)가 될 수 있다. 또한, 출력 레이어는 소프트맥스 레이어 및 손실 레이어에 연결될 수 있다.
먼저, 프로세서(110)는, 입력 데이터가 분류될 수 있는 클래스들의 개수에 대한 정보를 획득할 수 있다. 일 실시예에 따라, 클래스들의 개수는, 출력 레이어의 노드들의 개수와 동일할 수 있는 바, 프로세서(110)는, 출력 레이어의 노드들의 개수를 확인하여, 클래스들의 개수에 대한 정보를 획득할 수 있다. 다른 실시예에 따라, 프로세서(110)는, 사용자 입력에 기초하여, 클래스들의 개수에 대한 정보를 획득할 수 있다.
이어서, 프로세서(110)는, 획득된 클래스들의 개수에 대한 정보에 기초하여, 출력 레이어를 위한 정밀도를 결정할 수 있다.
일 실시예에 따라, 프로세서(110)는 클래스들의 개수에 비례하게, 출력 레이어를 위한 정밀도를 결정할 수 있다. 다시 말해, 프로세서(110)는 클래스들의 개수가 많아질수록, 출력 레이어를 위한 정밀도가 더 높은 정밀도가 되도록 결정할 수 있다. 예를 들어, 클래스들의 개수가 10개인 경우, 프로세서(110)는 출력 레이어를 위한 정밀도를 8비트의 비트 폭으로 결정할 수 있고, 클래스들의 개수가 100개인 경우, 프로세서(110)는 출력 레이어를 위한 정밀도를 11비트의 비트 폭으로 결정할 수 있다.
다른 실시예에 따라, 프로세서(110)는, 하기 수학식 5에 따라, 출력 레이어를 위한 정밀도를 결정할 수 있다. 즉, 프로세서(110)는, 출력 레이어를 위한 정밀도로써, 출력 레이어에 적용되는 비트폭(bitwidth)을 결정할 수 있다.
수학식 5에서, 는 클래스의 크기(즉, 클래스의 개수)를 나타내고, 는 기 설정된 바이어스(bias)를 나타내고, 는 비례상수를 나타낸다. 예를 들어, 가 4로 설정되고, 가 1로 설정되고, 클래스의 개수가 10인 경우, 프로세서(110)는 출력 레이어를 위한 정밀도를 7.32 비트 이상의 비트 폭으로 결정할 수 있다. 또한, 가 4로 설정되고, 클래스의 개수가 100인 경우, 프로세서(110)는 출력 레이어를 위한 정밀도를 10.64 비트 이상의 비트 폭으로 결정할 수 있다. 또한, 가 4로 설정되고, 클래스의 개수가 1000인 경우, 프로세서(110)는 출력 레이어를 위한 정밀도를 14 비트 이상의 비트 폭으로 결정할 수 있다.
또 다른 실시예에 따라, 프로세서(110)는 클래스들의 개수가 기 설정된 임계치 이상인 경우, 출력 레이어를 위한 정밀도를 뉴럴 네트워크 내 다른 레이어를 위한 정밀도보다 높게 결정할 수 있다. 예를 들어, 클래스들의 개수가 10개 이상인 경우, 프로세서(110)는 출력 레이어를 위한 정밀도를, 뉴럴 네트워크 내 다른 레이어를 위한 정밀도인 8비트의 비트 폭보다 더 높게 결정할 수 있다.
프로세서(110)는 기 결정된 정밀도에 따라, 출력 레이어에서 파라미터를 처리할 수 있다. 프로세서(110)는, 출력 레이어의 파라미터가 기 결정된 정밀도를 갖도록 처리할 수 있고, 기 결정된 정밀도를 갖는 파라미터를 통해 뉴럴 네트워크의 훈련/학습 과정을 수행할 수 있다. 출력 레이어의 파라미터는, 출력 레이어로 입력되는 크로스 엔트로피 손실의 그래디언트를 포함할 수 있다. 따라서, 프로세서(110)는 출력 레이어로 입력되는 크로스 엔트로피 손실의 그래디언트를 기 결정된 비트 폭에 따른 양자화된 레벨로 조정할 수 있고, 조정된 그래디언트를 통해 뉴럴 네트워크의 훈련/학습 과정을 수행할 수 있다. 또한, 출력 레이어의 파라미터는, 출력 레이어의 웨이트 및 액티베이션을 더 포함할 수 있다.
따라서, 뉴럴 네트워크 장치(100)는 뉴럴 네트워크 내 모든 레이어에 대해 일괄적으로 고정된 정밀도를 설정하는 것이 아니라, 마지막 FC 레이어와 같은 출력 레이어에 대해서는 클래스들의 개수를 고려한 정밀도를 설정하는 바, 뉴럴 네트워크의 훈련/학습 과정에서의 정확도 손실을 최소화시킬 수 있다. 특히, 뉴럴 네트워크 장치(100)는 뉴럴 네트워크의 출력 레이어에 대해서는, 클래스들의 개수를 고려하여 높은 정밀도에 따라 파라미터를 처리할 수 있으면서도, 뉴럴 네트워크의 다른 레이어에 대해서는 낮은 정밀도에 따라 뉴럴 네트워크의 파라미터를 처리하는 바, 일괄적인 낮은 정밀도 설정에 따라 발생할 수 있는 정확도 손실을 최소화 시킬 수 있다.
도 5는 분류를 위한 뉴럴 네트워크에서 정밀도를 결정하는 실시예를 나타낸다.
뉴럴 네트워크 장치(100)는 분류를 위한 뉴럴 네트워크(300)의 클래스 크기(class size)에 대한 정보를 획득할 수 있다. 즉, 뉴럴 네트워크 장치(100)는 분류를 위한 뉴럴 네트워크(300) 내에서 입력 데이터가 분류될 수 있는 클래스들의 개수에 대한 정보를 획득할 수 있다. 뉴럴 네트워크 장치(100)는 마지막 FC 레이어인 FC 레이어(320)의 노드들의 개수를 확인하여, 클래스들의 개수에 대한 정보를 획득할 수 있다.
뉴럴 네트워크 장치(100)는 획득된 클래스들의 개수에 대한 정보에 기초하여, 출력 레이어인 FC 레이어(320)를 위한 정밀도를 결정할 수 있다. 뉴럴 네트워크 장치(100)는 클래스들의 개수에 비례하도록 FC 레이어(320)를 위한 정밀도를 결정할 수 있다. 예를 들어, 클래스들의 개수가 10개인 경우, 뉴럴 네트워크 장치(100)는 FC 레이어(320)를 위한 정밀도를 10비트의 비트 폭으로 결정할 수 있으며, 클래스들의 개수가 1000개인 경우, 뉴럴 네트워크 장치(100)는 FC 레이어(320)를 위한 정밀도를 16비트의 비트 폭으로 결정할 수 있다.
뉴럴 네트워크 장치(100)는 기 결정된 정밀도에 따라, FC 레이어(320)에서 파라미터를 처리할 수 있다. 일 실시예에 따라, 뉴럴 네트워크 장치(100)는 소프트맥스 레이어(330)로부터 출력되어 FC 레이어(320)로 입력되는 크로스 엔트로피 손실의 그래디언트가 기 결정된 정밀도를 갖도록 처리할 수 있고, 기 결정된 정밀도를 갖는 그래디언트를 통해 뉴럴 네트워크(300)의 학습/훈련을 진행시킬 수 있다.
도 6은 일 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 6을 참고하면, 전자 시스템(600)은 뉴럴 네트워크를 기초로 입력 데이터를 실시간으로 분석하여 유효한 정보를 추출하고, 추출된 정보를 기초로 상황 판단을 하거나 또는 전자 시스템(600)이 탑재되는 전자 디바이스의 구성들을 제어할 수 있다. 예컨대 전자 시스템(600)은 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 등과 같은 로봇 장치, 스마트 TV, 스마트폰, 의료 디바이스, 모바일 디바이스, 영상 표시 디바이스, 계측 디바이스, IoT 디바이스 등에 적용될 수 있으며, 이 외에도 다양한 종류의 전자 디바이스들 중 적어도 하나에 탑재될 수 있다.
전자 시스템(600)은 프로세서(610), RAM(620), 뉴럴 네트워크 장치(630), 메모리(640), 센서 모듈(650) 및 통신 모듈(660)을 포함할 수 있다. 전자 시스템(600)은 입출력 모듈, 보안 모듈, 전력 제어 장치 등을 더 포함할 수 있다. 전자 시스템(600)의 하드웨어 구성들 중 일부는 적어도 하나의 반도체 칩에 탑재될 수 있다. 뉴럴 네트워크 장치(630)는 앞서 설명된 뉴럴 네트워크 장치(100) 또는 뉴럴 네트워크 전용 하드웨어 가속기 자체 또는 이를 포함하는 장치일 수 있다.
프로세서(610)는 전자 시스템(600)의 전반적인 동작을 제어한다. 프로세서(610)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. 프로세서(610)는 메모리(640)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 일 실시예에 있어서, 프로세서(610)는 메모리(640)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(1930)의 기능을 제어할 수 있다. 프로세서(610)는 CPU, GPU, AP 등으로 구현될 수 있다.
RAM(620)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대 메모리(640)에 저장된 프로그램들 및/또는 데이터는 프로세서(1910)의 제어 또는 부팅 코드에 따라 RAM(1920)에 일시적으로 저장될 수 있다. RAM(1920)은 DRAM(Dynamic RAM) 또는 SRAM(Static RAM) 등의 메모리로 구현될 수 있다.
뉴럴 네트워크 장치(630)는 수신되는 입력 데이터를 기초로 뉴럴 네트워크의 연산을 수행하고, 수행 결과를 기초로 정보 신호를 생성할 수 있다. 뉴럴 네트워크는 Convolutional Neural Networks(CNN), Recurrent Neural Networks(RNN), Deep Belief Networks, Restricted Boltzman Machines 등을 포함할 수 있으나 이에 제한되지 않는다. 뉴럴 네트워크 장치(630)는 앞서 설명된 분류를 위한 뉴럴 네트워크를 구동하는 하드웨어로서, 뉴럴 네트워크 전용 하드웨어 가속기에 해당될 수 있다.
정보 신호는 음성 인식 신호, 사물 인식 신호, 영상 인식 신호, 생체 정보 인식 신호 등과 같은 다양한 종류의 인식 신호 중 하나를 포함할 수 있다. 예를 들어, 뉴럴 네트워크 장치(630)는 비디오 스트림에 포함되는 프레임 데이터를 입력 데이터로서 수신하고, 프레임 데이터로부터 프레임 데이터가 나타내는 이미지에 포함된 사물에 대한 인식 신호를 생성할 수 있다. 그러나, 이에 제한되는 것은 아니며, 전자 시스템(600)이 탑재된 전자 장치의 종류 또는 기능에 따라 뉴럴 네트워크 장치(630)는 다양한 종류의 입력 데이터를 수신할 수 있고, 입력 데이터에 따른 인식 신호를 생성할 수 있다.
메모리(640)는 데이터를 저장하기 위한 저장 장소로서, OS(Operating System), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다. 실시예에 있어서, 메모리(640)는 뉴럴 네트워크 장치(1930)의 연산 수행 과정에서 생성되는 중간 결과들, 예컨대 출력 피처 맵을 출력 피처 리스트 또는 출력 피처 매트릭스 형태로 저장할 수 있다. 실시예에 있어서, 메모리(640)에는 압축된 출력 피처 맵이 저장될 수 있다. 또한, 메모리(640)는 뉴럴 네트워크 장치(630)에서 이용되는 양자화된 뉴럴 네트워크 데이터, 예컨대, 파라미터들, 웨이트 맵 또는 웨이트 리스트를 저장할 수 있다.
메모리(640)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리(640)는 휘발성 메모리 또는 불휘발성 메모리 중 적어도 하나를 포함할 수 있다. 불휘발성 메모리는 ROM, PROM, EPROM, EEPROM, 플래시 메모리, PRAM, MRAM, RRAM, FRAM 등을 포함한다. 휘발성 메모리는 DRAM, SRAM, SDRAM, PRAM, MRAM, RRAM, FeRAM 등을 포함한다. 실시예에 있어서, 메모리(1940)는 HDD, SSD, CF, SD, Micro-SD, Mini-SD, xD 또는 Memory Stick 중 적어도 하나를 포함할 수 있다.
센서 모듈(650)은 전자 시스템(600)이 탑재되는 전자 장치 주변의 정보를 수집할 수 있다. 센서 모듈(650)은 전자 장치의 외부로부터 신호(예컨대 영상 신호, 음성 신호, 자기 신호, 생체 신호, 터치 신호 등)를 센싱 또는 수신하고, 센싱 또는 수신된 신호를 데이터로 변환할 수 있다. 이를 위해, 센서 모듈(650)은 센싱 장치, 예컨대 마이크, 촬상 장치, 이미지 센서, 라이더(LIDAR; light detection and ranging) 센서, 초음파 센서, 적외선 센서, 바이오 센서, 및 터치 센서 등 다양한 종류의 센싱 장치 중 적어도 하나를 포함할 수 있다.
센서 모듈(650)은 변환된 데이터를 뉴럴 네트워크 장치(630)에 입력 데이터로서 제공할 수 있다. 예를 들어, 센서 모듈(650)은 이미지 센서를 포함할 수 있으며, 전자 장치의 외부 환경을 촬영하여 비디오 스트림을 생성하고, 비디오 스트림의 연속하는 데이터 프레임을 뉴럴 네트워크 장치(630)에 입력 데이터로서 순서대로 제공할 수 있다. 그러나 이에 제한되는 것은 아니며 센서 모듈(650)은 다양한 종류의 데이터를 뉴럴 네트워크 장치(630)에 제공할 수 있다.
통신 모듈(660)은 외부 장치와 통신할 수 있는 다양한 유선 또는 무선 인터페이스를 구비할 수 있다. 예컨대 통신 모듈(660)은 유선 근거리통신망(Local Area Network; LAN), Wi-fi(Wireless Fidelity)와 같은 무선 근거리 통신망 (Wireless Local Area Network; WLAN), 블루투스(Bluetooth)와 같은 무선 개인 통신망(Wireless Personal Area Network; WPAN), 무선 USB (Wireless Universal Serial Bus), Zigbee, NFC (Near Field Communication), RFID (Radio-frequency identification), PLC(Power Line communication), 또는 3G (3rd Generation), 4G (4th Generation), LTE (Long Term Evolution) 등 이동 통신망(mobile cellular network)에 접속 가능한 통신 인터페이스 등을 포함할 수 있다.
도 7은 일 실시예에 따라, 뉴럴 네트워크 장치의 동작 방법을 설명하기 위한 도면이다.
도 7에 도시된 방법은, 도 2의 뉴럴 네트워크 장치(100) 또는 도 6의 전자 시스템의 각 구성요소에 의해 수행될 수 있고, 중복되는 설명에 대해서는 생략한다.
단계 s710에서, 뉴럴 네트워크 장치(100)는, 입력 데이터가 분류될 수 있는 클래스들의 개수에 대한 정보를 획득할 수 있다. 일 실시예에 따라, 뉴럴 네트워크 장치(100)는, 입력 데이터가 각 클래스로 분류될 가능성에 대한 연산 결과를 출력하는 레이어(layer)의 노드들의 개수를 확인하여, 클래스들의 개수에 대한 정보를 획득할 수 있다. 다른 실시예에 따라, 뉴럴 네트워크 장치(100)는, 사용자 입력에 기초하여, 클래스들의 개수에 대한 정보를 획득할 수 있다.
단계 s720에서, 뉴럴 네트워크 장치(100)는, s710에서 획득된 정보에 기초하여, 입력 데이터가 각 클래스로 분류될 가능성에 대한 연산 결과를 출력하는 레이어(layer)(이하, 출력 레이어)를 위한 정밀도(precision)를 결정할 수 있다. 일 실시예에 따라, 뉴럴 네트워크 장치(100)는 클래스들의 개수에 비례하게, 출력 레이어를 위한 정밀도를 결정할 수 있다. 다른 실시예에 따라, 뉴럴 네트워크 장치(100)는, 수학식 4에 따라, 출력 레이어를 위한 정밀도를 결정할 수 있다. 또 다른 실시예에 따라, 뉴럴 네트워크 장치(100)는 클래스들의 개수가 기 설정된 임계치 이상인 경우, 출력 레이어를 위한 정밀도를 뉴럴 네트워크 내 다른 레이어를 위한 정밀도보다 높게 결정할 수 있다.
단계 s730에서, 뉴럴 네트워크 장치(100)는, s720에서 결정된 정밀도에 따라, 레이어에서 파라미터를 처리할 수 있다. 뉴럴 네트워크 장치(100)는, 출력 레이어의 파라미터가 기 결정된 정밀도를 갖도록 처리할 수 있고, 기 결정된 정밀도를 갖는 파라미터를 통해 뉴럴 네트워크의 훈련/학습 과정을 수행할 수 있다.
상기 살펴 본 실시 예들에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
본 실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시 예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 실시 예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. "매커니즘", "요소", "수단", "구성"과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
본 실시 예에서 설명하는 특정 실행들은 예시들로서, 어떠한 방법으로도 기술적 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다.
본 명세서(특히 특허청구범위에서)에서 "상기"의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 포함하는 것으로서(이에 반하는 기재가 없다면), 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 한정되는 것은 아니다. 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 기술적 사상을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.

Claims (15)

  1. 분류(classification)를 위한 뉴럴 네트워크에서 파라미터를 처리하는 방법에 있어서,
    입력 데이터가 분류될 수 있는 클래스들의 개수에 대한 정보를 획득하는 단계;
    상기 획득된 정보에 기초하여, 상기 입력 데이터가 각 클래스로 분류될 가능성에 대한 연산 결과를 출력하는 레이어(layer)를 위한 정밀도(precision)를 결정하는 단계; 및
    상기 결정된 정밀도에 따라, 상기 레이어에서 파라미터를 처리하는 단계를 포함하고,
    상기 결정하는 단계는,
    상기 클래스들의 개수가 기 설정된 임계치 이상인 경우, 상기 레이어를 위한 정밀도를 상기 뉴럴 네트워크 내 다른 레이어를 위한 정밀도보다 높게 결정하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 결정하는 단계는,
    상기 클래스들의 개수에 비례하게, 상기 레이어를 위한 정밀도를 결정하는 단계를 포함하는, 방법.
  3. 삭제
  4. 제 1 항에 있어서,
    상기 정밀도는,
    상기 레이어에서 처리되는 파라미터의 비트폭(bitwidth)을 나타내는, 방법.
  5. 제 1 항에 있어서,
    상기 레이어는,
    상기 뉴럴 네트워크 내 마지막 FC 레이어(last Fully-Connected layer)인, 방법.
  6. 제 1 항에 있어서,
    상기 레이어는, 소프트맥스 레이어(softmax layer) 및 손실 레이어(loss layer)와 연결되고,
    상기 레이어는,
    상기 소프트맥스 레이어로부터 상기 연산 결과에 대한 크로스 엔트로피 손실(cross entropy loss)의 그래디언트(gradient)를 입력 받는, 방법.
  7. 제 1 항에 있어서,
    상기 파라미터는,
    상기 레이어로 입력되는 상기 연산 결과에 대한 크로스 엔트로피 손실의 그래디언트, 및 상기 레이어의 웨이트(weight)를 포함하는, 방법.
  8. 제 1 항 내지 제 2 항 및 제 4 항 내지 제 7 항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  9. 분류(classification)를 위한 뉴럴 네트워크에서 파라미터를 처리하는 장치에 있어서,
    적어도 하나의 프로그램을 저장하는 메모리; 및
    상기 적어도 하나의 프로그램을 실행함으로써, 입력 데이터가 분류될 수 있는 클래스들의 개수에 대한 정보를 획득하고, 상기 획득된 정보에 기초하여, 상기 입력 데이터가 각 클래스로 분류될 가능성에 대한 연산 결과를 출력하는 레이어(layer)를 위한 정밀도(precision)를 결정하고, 상기 결정된 정밀도에 따라, 상기 레이어에서 파라미터를 처리하는 프로세서를 포함하고,
    상기 프로세서는,
    상기 클래스들의 개수가 기 설정된 임계치 이상인 경우, 상기 레이어를 위한 정밀도를 상기 뉴럴 네트워크 내 다른 레이어를 위한 정밀도보다 높게 결정하는, 장치.
  10. 제 9 항에 있어서,
    상기 프로세서는,
    상기 클래스들의 개수에 비례하게, 상기 레이어를 위한 정밀도를 결정하는, 장치.
  11. 삭제
  12. 제 9 항에 있어서,
    상기 정밀도는,
    상기 레이어에서 처리되는 파라미터의 비트 폭(bitwidth)을 나타내는, 장치.
  13. 제 9 항에 있어서,
    상기 레이어는,
    상기 뉴럴 네트워크 내 마지막 FC 레이어(last Fully-Connected layer)인, 장치.
  14. 제 9 항에 있어서,
    상기 레이어는, 소프트맥스 레이어(softmax layer) 및 손실 레이어(loss layer)와 연결되고,
    상기 레이어는,
    상기 소프트맥스 레이어로부터 상기 연산 결과에 대한 크로스 엔트로피 손실(cross entropy loss)의 그래디언트(gradient)를 입력 받는, 장치.
  15. 제 9 항에 있어서,
    상기 파라미터는,
    상기 레이어로 입력되는 상기 연산 결과에 대한 크로스 엔트로피 손실의 그래디언트, 및 상기 레이어의 웨이트(weight)를 포함하는, 장치.
KR1020180077496A 2018-05-03 2018-07-04 분류를 위한 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치 KR102581471B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
US16/244,644 US11875251B2 (en) 2018-05-03 2019-01-10 Neural network method and apparatus
JP2019075655A JP7329352B2 (ja) 2018-05-03 2019-04-11 分類のためのニューラルネットワークにおいて、パラメータを処理する方法及び装置
EP19169298.7A EP3564868A1 (en) 2018-05-03 2019-04-15 Neural network method and apparatus
CN201910315912.0A CN110443347B (zh) 2018-05-03 2019-04-18 神经网络方法和装置
US18/529,620 US20240112030A1 (en) 2018-05-03 2023-12-05 Neural network method and apparatus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862666269P 2018-05-03 2018-05-03
US62/666,269 2018-05-03

Publications (2)

Publication Number Publication Date
KR20190127510A KR20190127510A (ko) 2019-11-13
KR102581471B1 true KR102581471B1 (ko) 2023-09-21

Family

ID=68534926

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180077496A KR102581471B1 (ko) 2018-05-03 2018-07-04 분류를 위한 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102581471B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220147398A (ko) * 2021-04-27 2022-11-03 삼성전자주식회사 인공 지능 모델에 기반하여 데이터를 처리하는 전자 장치 및 그 동작 방법
KR102601233B1 (ko) * 2021-09-07 2023-11-09 세종대학교산학협력단 Lstm 기반의 이상 인식 방법 및 시스템

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100683501B1 (ko) * 2005-02-23 2007-02-15 인천대학교 산학협력단 신경망 기법을 이용한 뉴스 비디오의 앵커 화면 추출 장치및 그 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Yiren Zhou et al., Adaptive Quantization for Deep Neural Network, The Thirty-Second AAAI Conference on Artificial Intelligence (AAAI-18), 4596-4604pages (2018. 4. 29.)*

Also Published As

Publication number Publication date
KR20190127510A (ko) 2019-11-13

Similar Documents

Publication Publication Date Title
KR102601604B1 (ko) 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
KR102526650B1 (ko) 뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치
JP7329455B2 (ja) ニューラルネットワーク量子化のための方法及び装置
CN109754066B (zh) 用于生成定点型神经网络的方法和装置
US11836603B2 (en) Neural network method and apparatus with parameter quantization
US11816557B2 (en) Method and apparatus with neural network parameter quantization
US20240112030A1 (en) Neural network method and apparatus
US11531893B2 (en) Method and apparatus with neural network parameter quantization
US11501166B2 (en) Method and apparatus with neural network operation
US20240086694A1 (en) Neuromorphic method and apparatus with multi-bit neuromorphic operation
JP7117280B2 (ja) ニューラルネットワークのパラメータを量子化する方法及びその装置
KR102581471B1 (ko) 분류를 위한 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치
US20220114453A1 (en) Method and apparatus with neural network pruning
KR20210121946A (ko) 뉴럴 네트워크 양자화를 위한 방법 및 장치
KR20200139071A (ko) 뉴럴 네트워크에서 파라미터를 양자화하는 방법 및 장치
US12026611B2 (en) Method and apparatus for quantizing parameters of neural network

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant