KR20190130443A - 뉴럴 네트워크의 양자화 방법 및 장치 - Google Patents

뉴럴 네트워크의 양자화 방법 및 장치 Download PDF

Info

Publication number
KR20190130443A
KR20190130443A KR1020180109197A KR20180109197A KR20190130443A KR 20190130443 A KR20190130443 A KR 20190130443A KR 1020180109197 A KR1020180109197 A KR 1020180109197A KR 20180109197 A KR20180109197 A KR 20180109197A KR 20190130443 A KR20190130443 A KR 20190130443A
Authority
KR
South Korea
Prior art keywords
weight
activation map
quantization parameter
activation
neural network
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
KR1020180109197A
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 US16/398,710 priority Critical patent/US11948074B2/en
Publication of KR20190130443A publication Critical patent/KR20190130443A/ko
Pending legal-status Critical Current

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/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • 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/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/092Reinforcement learning

Landscapes

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

Abstract

뉴럴 네트워크를 이용한 데이터 처리 방법이 개시된다. 데이터 처리 장치는 적어도 하나의 프로세서 및 상기 프로세서에 의해 실행될 인스트럭션들(instructions)및 뉴럴 네트워크를 저장하는 적어도 하나의 메모리를 포함하고, 상기 프로세서는, 상기 인스트럭션들을 이용하여, 상기 뉴럴 네트워크에 포함된 현재 레이어로 입력 액티베이션 맵을 입력하고, 상기 입력 액티베이션 맵과 상기 현재 레이어의 제1 표현 비트수로 양자화된 웨이트 간에 컨볼루션 연산을 수행하여 출력 액티베이션 맵을 출력하고, 액티베이션 양자화 파라미터를 이용하여 상기 출력 액티베이션 맵을 제2 표현 비트수로 양자화하여 양자화된 액티베이션 맵을 출력한다.

Description

뉴럴 네트워크의 양자화 방법 및 장치{METHOD AND APPARATUS FOR QUANTIZATION OF NEURAL NETWORK}
아래의 설명은 뉴럴 네트워크의 경량화 기술에 관한 것으로, 뉴럴 네트워크를 양자화하는 기술에 관한 것이다.
최근 들어, 입력 패턴을 특정 그룹으로 분류하는 문제를 해결하는 방안으로써, 인간이 지니고 있는 효율적인 패턴 인식 방법을 실제 컴퓨터에 적용시키려는 연구가 활발히 진행되고 있다. 이러한 연구 중 하나로, 인간의 생물학적 신경 세포의 특성을 수학적 표현에 의해 모델링한 인공 뉴럴 네트워크(artificial neural network)에 대한 연구가 있다. 입력 패턴을 특정 그룹으로 분류하는 문제를 해결하기 위해, 인공 뉴럴 네트워크는 인간이 가지고 있는 학습이라는 능력을 모방한 알고리즘을 이용한다. 이 알고리즘을 통하여 인공 뉴럴 네트워크는 입력 패턴과 출력 패턴들 간의 사상(mapping)을 생성해낼 수 있는데, 이를 인공 뉴럴 네트워크가 학습 능력이 있다고 표현한다. 또한, 인공 뉴럴 네트워크는 학습된 결과에 기초하여 학습에 이용되지 않았던 입력 패턴에 대하여 비교적 올바른 출력을 생성할 수 있는 일반화 능력을 가지고 있다.
일 실시예에 따른 데이터 처리 방법은, 뉴럴 네트워크를 이용한 데이터 처리 방법에 있어서, 현재 레이어로 입력 액티베이션 맵(Activation map)을 입력하는 단계, 상기 입력 액티베이션 맵과 상기 현재 레이어의 제1 표현 비트수로 양자화된 웨이트(weight) 간에 컨볼루션 연산을 수행하여 출력 액티베이션 맵을 출력하는 단계 및 액티베이션 양자화(quantization) 파라미터를 이용하여 상기 출력 액티베이션 맵을 제2표현 비트수로 양자화하여 양자화된 액티베이션 맵을 출력하는 단계를 포함한다.
상기 액티베이션 양자화 파라미터는 상기 출력 액티베이션 맵에 관한 제1 임계값 및 제2 임계값을 포함하고, 상기 제1 임계값은 상기 출력 액티베이션 맵에 대한 액티베이션 맵 구간의 상한을 나타내고, 상기 제2 임계값은 상기 액티베이션 맵 구간의 하한을 나타낼 수 있다.
상기 액티베이션 양자화 파라미터는 상기 출력 액티베이션 맵에 대한 제1중간값 및 제1차이값을 포함하고, 상기 제1차이값은 제1 임계값 및 제2 임계값의 차이의 반을 나타내고, 상기 제1 중간값은 상기 제1 임계값 및 상기 제2 임계값의 중간을 나타내고, 상기 제1 임계값은 상기 출력 액티베이션 맵에 대한 액티베이션 맵 구간의 상한을 나타내고, 상기 제2 임계값은 상기 액티베이션 맵 구간의 하한을 나타낼 수 있다.
상기 출력 액티베이션 맵을 출력하는 단계는, 상기 입력 액티베이션 맵과 상기 양자화된 웨이트에 대하여 멀티플리케이션(multiplication) 연산 및 어큐뮬레이션(accumulation) 연산을 수행하거나 또는 비트-와이즈(bit-wise) 연산을 수행함으로써 상기 컨벌루션 연산을 수행할 수 있다.
상기 제1 표현 비트수와 상기 제2표현 비트수는 동일할 수 있다.
일 실시예에 따른 뉴럴 네트워크의 학습 방법은, 뉴럴 네트워크를 구성하는 현재 레이어의 웨이트, 상기 웨이트에 관한 제1 표현 비트수 및 웨이트 양자화 파라미터, 상기 현재 레이어로부터 출력되는 출력 액티베이션 맵에 관한 제2 표현 비트수 및 액티베이션 양자화 파라미터를 초기화하는 단계, 학습 데이터를 이용하여 상기 웨이트, 상기 제1 표현 비트수, 상기 웨이트 양자화 파라미터, 상기 제2 표현 비트수 및 상기 액티베이션 양자화 파라미터를 기초로 손실값(Loss)을 계산하는 단계 및 상기 손실값을 기초로 상기 웨이트, 상기 제1 표현 비트수, 상기 웨이트 양자화 파라미터, 상기 제2 표현 비트수 및 상기 액티베이션 양자화 파라미터를 갱신하는 단계를 포함한다.
상기 손실값을 계산하는 단계는, 상기 제1 표현 비트수 및 상기 웨이트 양자화 파라미터를 기초로 상기 웨이트를 양자화하는 단계, 상기 양자화된 웨이트와 상기 현재 레이어로 입력되는 입력 액티베이션 맵에 대해 컨볼루션 연산을 수행하여 상기 출력 액티베이션 맵을 출력하는 단계, 상기 제2 표현 비트수 및 상기 액티베이션 양자화 파라미터를 이용하여 상기 출력 액티베이션 맵을 양자화하는 단계 및 상기 양자화된 액티베이션 맵을 기초로 손실값을 계산하는 단계를 포함할 수 있다.
상기 액티베이션 양자화 파라미터는 상기 출력 액티베이션 맵에 관한 제1 임계값 및 제2 임계값을 포함하고, 상기 웨이트 양자화 파라미터는 상기 웨이트의 절대값의 제3 임계값 및 제4 임계값을 포함하고, 상기 제1 임계값은 상기 출력 액티베이션 맵에 대한 액티베이션 맵 구간의 상한을 나타내고, 상기 제2 임계값은 상기 액티베이션 맵 구간의 하한을 나타내고, 상기 제3 임계값은 상기 웨이트의 절대값에 대한 웨이트 구간의 상한을 나타내고, 상기 제4 임계값은 상기 웨이트 구간의 하한을 나타낼 수 있다.
상기 액티베이션 양자화 파라미터는 상기 출력 액티베이션 맵에 대한 제1중간값 및 제1차이값을 포함하고, 상기 제1차이값은 제1 임계값 및 제2 임계값의 차이의 반을 나타내고, 상기 제1 중간값은 상기 제1 임계값 및 상기 제2 임계값의 중간을 나타내고, 상기 제1 임계값은 상기 출력 액티베이션 맵에 대한 액티베이션 맵 구간의 상한을 나타내고, 상기 제2 임계값은 상기 액티베이션 맵 구간의 하한을 나타내고, 상기 웨이트 양자화 파라미터는 상기 현재 레이어의 웨이트의 절대값의 제2중간값 및 제2차이값을 포함하고, 상기 제2 차이값은 제3 임계값 및 제4 임계값의 차이의 반을 나타내고, 상기 제2 중간값은 상기 제3 임계값 및 상기 제4 임계값의 중간을 나타내고, 상기 제3 임계값은 상기 웨이트의 절대값에 대한 웨이트 구간의 상한을 나타내고, 상기 제4 임계값은 상기 웨이트 구간의 하한을 나타낼 수 있다.
다른 실시예에 따른 뉴럴 네트워크의 학습 방법은, 제1 뉴럴 네트워크를 구성하는 현재 레이어의 웨이트, 상기 웨이트에 관한 제1 표현 비트수 및 웨이트 양자화 파라미터, 상기 현재 레이어로부터 출력되는 출력 액티베이션 맵에 관한 제2 표현 비트수 및 액티베이션 양자화 파라미터를 초기화하는 단계,
이전 이터레이션(iteration)에서 계산된 정확도를 기초로 상기 제1 표현 비트수 및 상기 제2 표현 비트수를 갱신하는 단계, 학습 데이터를 이용하여 상기 웨이트, 상기 갱신된 제1 표현 비트수, 상기 웨이트 양자화 파라미터, 상기 갱신된 제2 표현 비트수 및 상기 액티베이션 양자화 파라미터를 기초로 손실값을 계산하는 단계, 상기 손실값을 기초로 상기 웨이트, 상기 웨이트 양자화 파라미터 및 상기 액티베이션 양자화 파라미터를 갱신하는 단계 및 상기 갱신된 웨이트, 상기 갱신된 웨이트 양자화 파라미터 및 상기 갱신된 액티베이션 양자화 파라미터를 기초로 유효성 데이터를 이용하여 다음 이터레이션에서 사용될 정확도를 계산하는 단계를 포함할 수 있다.
상기 제1표현 비트수 및 상기 제2표현 비트수를 갱신하는 단계는, 상기 손실값을 기초로 상기 제1 표현 비트수 및 상기 제2표현 비트수를 미리 설정된 비트수만큼 증가시키거나 감소시킬 수 있다.
상기 제1표현 비트수 및 상기 제2표현 비트수를 갱신하는 단계는, 상기 손실값을 기초로 제2뉴럴 네트워크를 이용하여 상기 제1표현 비트수 및 상기 제2표현 비트수를 갱신할 수 있다.
상기 제1 표현 비트수 및 상기 제2 표현 비트수를 갱신하는 단계는, 이전 이터레이션(iteration)에서 계산된 정확도를 포함하는 보상(reward) 및 상태(state)를 기초로 상기 제1 표현 비트수 및 상기 제2 표현 비트수를 갱신하고, 상기 상태는 상기 액티베이션 양자화 파라미터및 상기 웨이트 양자화 파라미터 각각의 양자화 에러, 상기 웨이트의 분포 및 상기 출력 액티베이션 맵의 분포를 포함하고, 상기 보상은 상기 정확도를 포함할 수 있다.
상기 액티베이션 양자화 파라미터는 상기 출력 액티베이션 맵에 관한 제1 임계값 및 제2 임계값을 포함하고, 상기 웨이트 양자화 파라미터는 상기 웨이트의 절대값의 제3 임계값 및 제4 임계값을 포함하고, 상기 제1 임계값은 상기 출력 액티베이션 맵에 대한 액티베이션 맵 구간의 상한을 나타내고, 상기 제2 임계값은 상기 액티베이션 맵 구간의 하한을 나타내고, 상기 제3 임계값은 상기 웨이트의 절대값에 대한 웨이트 구간의 상한을 나타내고, 상기 제4 임계값은 상기 웨이트 구간의 하한을 나타낼 수 있다.
상기 액티베이션 양자화 파라미터는 상기 출력 액티베이션 맵에 대한 제1중간값 및 제1차이값을 포함하고, 상기 제1차이값은 제1 임계값 및 제2 임계값의 차이의 반을 나타내고, 상기 제1 중간값은 상기 제1 임계값 및 상기 제2 임계값의 중간을 나타내고, 상기 제1 임계값은 상기 출력 액티베이션 맵에 대한 액티베이션 맵 구간의 상한을 나타내고, 상기 제2 임계값은 상기 액티베이션 맵 구간의 하한을 나타내고, 상기 웨이트 양자화 파라미터는 상기 현재 레이어의 웨이트의 절대값의 제2중간값 및 제2차이값을 포함하고, 상기 제2 차이값은 제3 임계값 및 제4 임계값의 차이의 반을 나타내고, 상기 제2 중간값은 상기 제3 임계값 및 상기 제4 임계값의 중간을 나타내고, 상기 제3 임계값은 상기 웨이트의 절대값에 대한 웨이트 구간의 상한을 나타내고, 상기 제4 임계값은 상기 웨이트 구간의 하한을 나타낼 수 있다.
다른 실시예에 따른 뉴럴 네터워크의 학습 방법은, 기학습된 제1 뉴럴 네트워크를 구성하는 현재 레이어의 웨이트에 관한 제1 표현 비트수 및 상기 현재 레이어로부터 출력되는 출력 액티베이션 맵에 관한 제2 표현 비트수를 초기화하는 단계, 학습 데이터를 이용하여 기학습된 제1 뉴럴 네트워크, 상기 제1 표현 비트수 및 상기 제2 표현 비트수를 기초로 손실값을 계산하는 단계 및 상기 손실값을 기초로 상기 제1 표현 비트수 및 상기 제2 표현 비트수를 갱신하는 단계를 포함할 수 있다.
상기 제1표현 비트수 및 상기 제2표현 비트수를 갱신하는 단계는, 상기 손실값을 기초로 상기 제1 표현 비트수 및 상기 제2표현 비트수를 미리 설정된 비트수만큼 증가시키거나 감소시킬 수 있다.
상기 제1표현 비트수 및 상기 제2표현 비트수를 갱신하는 단계는, 상기 손실값을 기초로 제2뉴럴 네트워크를 이용하여 상기 제1표현 비트수 및 상기 제2표현 비트수를 갱신할 수 있다.
다른 실시예에 따른 뉴럴 네트워크의 학습 방법은, 뉴럴 네트워크를 구성하는 현재 레이어의 웨이트, 상기 웨이트에 관한 웨이트 양자화 파라미터 및 상기 현재 레이어로부터 출력되는 출력 액티베이션 맵에 관한 액티베이션 양자화 파라미터를 초기화하는 단계, 학습 데이터를 이용하여 상기 웨이트에 관한 기학습된 제1 표현 비트수, 상기 출력 액티베이션 맵에 관한 기학습된 제2 표현 비트수, 상기 웨이트, 상기 웨이트 양자화 파라미터 및 상기 액티베이션 양자화 파라미터를 기초로 손실값을 계산하는 단계 및 상기 손실값을 기초로 상기 웨이트, 상기 웨이트 양자화 파라미터 및 상기 액티베이션 양자화 파라미터를 갱신하는 단계를 포함할 수 있다.
상기 뉴럴 네트워크 학습 방법은 상기 갱신된 웨이트 양자화 파라미터 및 상기 기학습된 제1표현 비트수를 기초로 상기 웨이트를 양자화하는 단계 및 상기 양자화된 웨이트 및 상기 액티베이션 양자화 파라미터를 저장하는 단계를 포함할 수 있다.
일 실시예에 따르면, 컴퓨터 판독 가능한 저장 매체는 상기 방법을 실행하기 위한 인스트럭션들을 저장할 수 있다.
일 실시예에 따른 데이터 처리 장치는, 적어도 하나의 프로세서 및 상기 프로세서에 의해 실행될 인스트럭션들(instructions)및 뉴럴 네트워크를 저장하는 적어도 하나의 메모리를 포함하고, 상기 프로세서는, 상기 인스트럭션들을 이용하여, 상기 뉴럴 네트워크에 포함된 현재 레이어로 입력 액티베이션 맵을 입력하고, 상기 입력 액티베이션 맵과 상기 현재 레이어의 제1 표현 비트수로 양자화된 웨이트 간에 컨볼루션 연산을 수행하여 출력 액티베이션 맵을 출력하고, 액티베이션 양자화 파라미터를 이용하여 상기 출력 액티베이션 맵을 제2 표현 비트수로 양자화하여 양자화된 액티베이션 맵을 출력한다.
일 실시예에 따른 얼굴 인식 장치는 적어도 하나의 프로세서 및 상기 프로세서에 의해 실행될 인스트럭션들 및 뉴럴 네트워크를 저장하는 적어도 하나의 메모리를 포함하고, 상기 프로세서는, 상기 인스트럭션들을 이용하여, 사용자의 얼굴 영상을 포함하는 입력 영상으로부터 입력 액티베이션 맵을 출력하고, 상기 뉴럴 네트워크에 포함된 현재 레이어로 상기 입력 액티베이션 맵을 입력하고, 상기 입력 액티베이션 맵과 상기 현재 레이어의 제1 표현 비트수로 양자화된 웨이트 간에 컨볼루션 연산을 수행하여 출력 액티베이션 맵을 출력하고, 액티베이션 양자화 파라미터를 이용하여 상기 출력 액티베이션 맵을 제2 표현 비트수로 양자화하여 양자화된 액티베이션 맵을 출력하고, 상기 양자화된 액티베이션 맵을 처리하여 상기 사용자를 인식한다.
일 실시예에 따른 음성 인식 장치는 적어도 하나의 프로세서 및 상기 프로세서에 의해 실행될 인스트럭션들 및 뉴럴 네트워크를 저장하는 적어도 하나의 메모리를 포함하고, 상기 프로세서는, 상기 인스트럭션들을 이용하여, 단어를 나타내는 음성 데이터로부터 입력 액티베이션 맵을 출력하고, 상기 뉴럴 네트워크에 포함된 현재 레이어로 입력 액티베이션 맵을 입력하고, 상기 입력 액티베이션 맵과 상기 현재 레이어의 제1 표현 비트수로 양자화된 웨이트 간에 컨볼루션 연산을 수행하여 출력 액티베이션 맵을 출력하고, 액티베이션 양자화 파라미터를 이용하여 상기 출력 액티베이션 맵을 제2 표현 비트수로 양자화하여 양자화된 액티베이션 맵을 출력하고, 상기 양자화된 액티베이션 맵을 처리하여 상기 단어를 인식한다.
일 실시예에 따른 자율 주행 제어 장치는 적어도 하나의 프로세서 및 상기 프로세서에 의해 실행될 인스트럭션들 및 뉴럴 네트워크를 저장하는 적어도 하나의 메모리를 포함하고, 상기 프로세서는, 상기 인스트럭션들을 이용하여, 차량의 주행 환경 정보를 나타내는 입력 데이터로부터 입력 액티베이션 맵을 출력하고, 상기 뉴럴 네트워크에 포함된 현재 레이어로 입력 액티베이션 맵을 입력하고, 상기 입력 액티베이션 맵과 상기 현재 레이어의 제1 표현 비트수로 양자화된 웨이트 간에 컨볼루션 연산을 수행하여 출력 액티베이션 맵을 출력하고, 액티베이션 양자화 파라미터를 이용하여 상기 출력 액티베이션 맵을 제2 표현 비트수로 양자화하여 양자화된 액티베이션 맵을 출력하고, 상기 양자화된 액티베이션 맵을 처리하여 상기 차량의 주행을 제어한다.
일 실시예에 따른 로봇 제어 장치는, 적어도 하나의 프로세서 및 상기 프로세서에 의해 실행될 인스트럭션들(instructions) 및 뉴럴 네트워크를 저장하는 적어도 하나의 메모리를 포함하고, 상기 프로세서는, 상기 인스트럭션들을 이용하여, 로봇의 환경 정보를 나타내는 입력 데이터로부터 입력 액티베이션 맵을 출력하고, 상기 뉴럴 네트워크에 포함된 현재 레이어로 입력 액티베이션 맵을 입력하고, 상기 입력 액티베이션 맵과 상기 현재 레이어의 제1 표현 비트수로 양자화된 웨이트 간에 컨볼루션 연산을 수행하여 출력 액티베이션 맵을 출력하고, 액티베이션 양자화 파라미터를 이용하여 상기 출력 액티베이션 맵을 제2 표현 비트수로 양자화하여 양자화된 액티베이션 맵을 출력하고, 상기 양자화된 액티베이션 맵을 처리하여 상기 로봇을 제어한다.
도 1은 일 실시예에 따른 양자화된 뉴럴 네트워크를 이용하여 입력 데이터를 처리하는 상황을 도시한 도면이다.
도 2는 일 실시예에 따른 데이터 처리 장치의 전체 구성을 도시한 도면이다.
도 3a은 일 실시예에 따른 하나의 레이어에서 컨벌루션 연산 및 양자화가 수행되는 과정을 도시한 도면이다.
도 3b는 다른 실시예에 따른 하나의 레이어에서 AND 및 POP COUNT를 이용하여 컨벌루션 연산 및 양자화가 수행되는 과정을 도시한 도면이다.
도 3c는 다른 실시예에 따른 하나의 레이어에서 XNOR 및 POP COUNT를 이용하여 컨벌루션 연산 및 양자화가 수행되는 과정을 도시한 도면이다.
도 4는 일 실시예에 따른 데이터 처리 방법의 동작을 도시한 순서도이다.
도 5는 제1 실시예에 따라 표현 비트수와 양자화 파라미터를 단계적으로 학습시키는 뉴럴 네트워크의 학습 장치의 구성을 도시한 도면이다.
도 6은 제1 실시예에 따라 강화 학습을 이용하는 뉴럴 네트워크의 학습 장치의 구성을 도시한 도면이다.
도 7a는 제1 실시예에 따른 강화 학습을 이용하는 뉴럴 네트워크의 학습 장치의 비트 결정부가 제2뉴럴 네트워크를 포함하는 구성을 도시한 도면이다.
도 7b는 제1 실시예에 따른 강화 학습을 이용하는 뉴럴 네트워크의 학습 장치의 비트 결정부가 증감 함수를 이용하는 구성을 도시한 도면이다.
도 8은 제1 실시예에 따른 강화 학습을 이용하는 뉴럴 네트워크의 학습 장치의 뉴럴 네트워크 학습부의 전체 구성을 도시한 도면이다.
도 9는 일 실시예에 따른 뉴럴 네트워크 학습 장치에 의해 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트가 함께 학습되는 구조를 도시한 도면이다.
도 10은 제2 실시예에 따라 표현 비트수, 양자화 파라미터 및 웨이트를 함께 학습시키는 뉴럴 네트워크 학습 장치의 구조를 도시한 도면이다.
도 11a는 일 실시예에 따른 뉴럴 네트워크 학습 장치에 의한 웨이트 양자화에 사용되는 포워딩 함수를 도시한 그래프이다.
도 11b는 일 실시예에 따른 뉴럴 네트워크 학습 장치에 의한 웨이트 양자화에 사용되는 백워드 함수를 도시한 그래프이다.
도 12는 일 실시예에 따른 뉴럴 네트워크 학습 장치에 의한 액티베이션 맵의 양자화에 사용되는 함수를 도시한 그래프이다.
도 13a는 다른 실시예에 따른 뉴럴 네트워크 학습 장치에 의한 웨이트 양자화에 사용되는 포워딩 함수를 도시한 그래프이다.
도 13b는 다른 실시예에 따른 뉴럴 네트워크 학습 장치에 의한 웨이트 양자화에 사용되는 백워드 함수를 도시한 그래프이다.
도 14는 일 실시예에 따른 뉴럴 네트워크 학습 장치에 의한 액티베이션 맵의 양자화에 사용되는 백워드 함수를 도시한 그래프이다.
도 15는 제1 실시예에 따른 뉴럴 네트워크의 학습 방법의 동작을 도시한 순서도이다.
도 16은 제2 실시예에 따른 뉴럴 네트워크의 학습 방법의 동작을 도시한 순서도이다.
도 17은 제3 실시예에 따른 뉴럴 네트워크의 학습 방법의 일례의 동작을 도시한 순서도이다.
도 18은 제3 실시예에 따른 뉴럴 네트워크의 학습 방법의 다른 일례의 동작을 도시한 순서도이다.
도 19은 뉴럴 네트워크의 학습 방법의 알고리즘의 일례를 도시한 도면이다.
도 20은 일 실시예에 따른 뉴럴 네트워크의 학습 장치의 전체 구성을 도시한 도면이다.
도 21은 일 실시예에 따른 데이터 처리 장치의 용례를 설명하기 위한 도면이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 실시될 수 있다. 따라서, 실시예들은 특정한 개시형태로 한정되는 것이 아니며, 본 명세서의 범위는 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
한편, 어떤 실시예가 달리 구현 가능한 경우에 특정 블록 내에 명기된 기능 또는 동작이 순서도와 다르게 수행될 수 있다. 예를 들어, 연속하는 두 블록들이 실제로는 실질적으로 동시에 수행될 수도 있고, 관련된 기능 또는 동작에 따라서는 해당 블록들의 순서가 뒤바뀌어 수행될 수도 있다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
이하에서는, 설명의 편의를 위해 컨벌루셔널 뉴럴 네트워크를 예로 들어 설명하나, 일 실시예에 따른 데이터 처리 장치 및 학습 장치는 컨벌루셔널 레이어를 포함하지 않는 다양한 종류의 뉴럴 네트워크에도 적용될 수 있다.
도 1은 일 실시예에 따른 양자화된 뉴럴 네트워크를 이용하여 입력 데이터를 처리하는 상황을 도시한 도면이다.
일 실시예예 따르면, 데이터 처리 장치(100)는 뉴럴 네트워크(neural network)를 이용하여 입력 데이터(101)를 처리하고 출력 데이터(141)를 출력할 수 있다. 데이터 처리 장치(100)는 내부의 파라미터 및 각 레이어의 출력 데이터를 양자화할 수 있다.
데이터 처리 장치(100)는 내부의 파라미터및 각 레이어의 출력 데이터를 양자화함으로써 출력 데이터(141)의 정확도를 유지하면서도 데이터 처리 속도를 향상시킬 수 있다. 데이터 처리 장치(100)는 내부의 파라미터를 양자화함으로써 뉴럴 네트워크를 경량화하고, 필요한 데이터 저장 공간을 줄일 수 있다. 데이터 처리 장치(100)는 각 레이어의 출력 데이터를 양자화함으로써 데이터 처리에 소요되는 시간을 줄일 수 있다.
필요한 데이터 저장 공간이 줄어들고 데이터 처리에 소요되는 리소스가 감소될 수 있으므로, 데이터 처리 장치(100)는 각종 단말기에 적용될 수 있다. 예를 들어, 데이터 처리 장치(100)는 스마트폰(smart phone), 웨어러블 디바이스(wearable device), 데스크탑(desktop), 랩탑(laptop) 또는 차량용 프로세서 등을 포함할 수 있다.
데이터 처리 장치(100)는 뉴럴 네트워크를 이용하여 입력 데이터(101)를 처리할 수 있다. 입력 데이터(101)는 영상 데이터를 포함할 수 있다. 예를 들어, 데이터 처리 장치(100)는 영상 데이터인 입력 데이터(101)로부터 물체를 검출하거나 얼굴을 인식할 수 있다. 예를 들어, 데이터 처리 장치(100)는 영상 처리에 주로 사용되는 컨벌루셔널 뉴럴 네트워크(convolutional neural network, CNN)를 포함할 수 있다.
컨벌루셔널 뉴럴 네트워크는 일반적인 뉴럴 네트워크의 앞 단에 컨벌루셔널 레이어를 결합한 구조의 네트워크이다. 컨벌루셔널 뉴럴 네트워크는 영상 데이터로부터 특징(feature)를 추출하는데 유리할 수 있다. 영상 데이터로부터 추출된 특징을 기반으로 분류가 수행되는 경우, 보다 정확한 결과가 도출될 수 있다.
데이터 처리 장치(100)는 복수의 레이어로 구성된 뉴럴 네트워크를 포함할 수 있다. 예를 들어, 데이터 처리 장치(100)는 컨벌루셔널 레이어(convolutional layer)(110), 풀 커넥티드 레이어(fully connected layer)(120) 및 출력 레이어(130)를 포함할 수 있다.
컨벌루셔널 레이어(110)는 입력 데이터(101)로부터 특징을 추출할 수 있다. 컨벌루셔널 레이어(110)는 복수의 레이어(111, 113, 115)를 포함할 수 있다. 각각의 레이어(111, 113, 115)는 하나 이상의 필터(filter)와 액티베이션 함수(activation function)를 포함할 수 있다. 각각의 레이어(111, 113, 115)는 풀링 레이어(pooling layer)를 더 포함할 수 있다. 각각의 레이어(111, 113, 115)에서 필터와 액티베이션 함수가 교대로 반복되고, 마지막에 풀링 레이어가 배치될 수 있다. 필터는 커널(kernel)로 지칭될 수 있다.
필터는 하나의 특징에 대응되며, 입력 데이터(101)에 해당 필터와 대응하는 특징이 존재하는지 여부를 검출할 수 있다. 필터는 특징 맵(feature map)을 출력할 수 있다. 액티베이션 함수는 특징 맵을 입력 받고 액티베이션 맵(activation map)을 출력할 수 있다. 액티베이션 함수는 특징 맵을 구성하는 값을 비선형 값으로 변환함으로써 특징과 관련된 정도를 나타낼 수 있다. 컨벌루셔널 레이어(110)에 포함된 복수의 레이어(111, 113, 115) 각각은 필터 역할을 하는 레이어와 액티베이션 함수를 포함하는 레이어를 포함할 수 있다. 필터 역할을 하는 레이어는 웨이트를 파라미터로서 가질 수 있다.
예를 들어, 액티베이션 함수는 릴루(ReLu) 함수 또는 시그모이드(sigmoid) 함수를 포함할 수 있으나 이에 한정되지 않는다. 역전파 방식을 이용하여 학습을 수행하는 경우, 레이어의 깊이가 깊어지더라도, 릴루 함수는 그레디언트 베니싱(gradient vanishing) 현상을 완화할 수 있다.
풀링 레이어는 특징을 나타내는 특징 맵에 대해 서브 샘플링(sub sampling)을 수행할 수 있다. 풀링 레이어는 서브 샘플링을 통해 뉴럴 네트워크의 크기를 감소시키고 데이터 처리 속도를 향상시킬 수 있다. 예를 들어, 풀링 레이어는 최대 풀링(max pooling), 평균 풀링(average pooling) 또는 최소 풀링(min Pooling)을 수행할 수 있다.
풀 커넥티드 레이어(120)는 컨벌루셔널 레이어로부터 추출된 특징을 기초로 입력 데이터(101)를 분류할 수 있다. 풀 커넥티드 레이어(120)는 복수의 히든 레이어(hidden layer)를 포함할 수 있다. 각각의 히든 레이어는 웨이트(weight)를 파라미터로서 가질 수 있다.
출력 레이어(130)는 최종적인 분류 결과를 계산할 수 있다. 예를 들어, 출력 레이어(130)는 액티베이션 함수의 일종인 소프트맥스 함수(softmax function)을 포함할 수 있다. 소프트맥스 함수는 여러 개의 분류에 대한 확률을 계산할 수 있다.
본 발명은 다양한 심층신경망 기반 응용기술들이 스마트폰 등의 임베디드 단말기에서 성능 저하 없이 고속으로 구동 가능하도록 최적화된 표현 비트수와 경량화된 모델(Weight) 및 각 계층의 입력(Activation)을 양자화하는 파라미터를 추정하는 방법이다.
일 실시예예 따르면, 데이터 처리 장치(100)는 파라미터로서 각 레이어별로 표현 비트수를 가질 수 있다. 표현 비트수는 일정한 범위에 분포된 복수의 데이터를 양자화하는 데에 사용될 수 있다. 여기서, 데이터의 일정한 범위를 나타내는 파라미터는 양자화 파라미터로 지칭될 수 있다. 이하에서, 웨이트 양자화 파라미터는 웨이트의 범위를 나타내는 파라미터를 지칭할 수 있다. 액티베이션 양자화 파라미터는 액티베이션 맵의 범위를 나타내는 파라미터를 지칭할 수 있다.
데이터 처리 장치(100)의 각 레이어에 포함된 필터링을 수행하는 레이어는 파라미터로서 웨이트를 가질 수 있다. 데이터 처리 장치(100)는 웨이트의 표현 비트수를 포함할 수 있다. 데이터 처리 장치(100)는 각 레이어의 웨이트를 표현 비트수를 기초로 양자화된 웨이트를 저장함으로써 뉴럴 네트워크를 경량화할 수 있다. 이를 통해, 한정된 메모리 자원을 가지는 단말기에서 뉴럴 네트워크를 저장하는 데에 필요한 메모리를 줄일 수 있다.
데이터 처리 장치(100)는 각 레이어로부터 출력된 액티베이션 맵에 대응하는 표현 비트수 및 양자화될 액티베이션 맵의 범위를 나타내는 액티베이션 양자화 파라미터를 포함할 수 있다. 데이터 처리 장치(100)는 액티베이션 맵을 표현 비트수를 이용하여 양자화함으로써 데이터 처리 속도를 향상시킬 수 있다. 이를 통해, 한정된 연산 능력 및 전력을 가지는 단말기에서 데이터를 처리하는데 필요한 소비 전력 및 계산 시간을 줄일 수 있다.
데이터 처리 장치(100)는 양자화된 웨이트 및 양자화된 액티베이션 맵을 기초로 저-비트(low bits) 컨벌루션 연산을 수행할 수 있다. 예를 들어, 데이터 처리 장치(100)는 32 비트의 부동 소수점으로 표현되는 데이터의 컨벌루션 연산 대신8 비트 이하의 저-비트의 고정 소수점 연산을 수행할 수 있다.
컨벌루션 연산은 합성곱으로 지칭될 수 있다. 컨벌루션 연산은 멀티플리케이션(multiplication) 연산과 어큐뮬레이션(accumulation) 연산을 포함할 수 있다. 멀티플리케이션연산은 곱 연산으로, 어큐뮬레이션연산은 합 연산으로 지칭될 수 있다.
데이터 처리 장치(100)는 비트-와이즈(bit-wise) 연산을 통해 컨벌루션 연산을 수행할 수도 있다.컨벌루셔널 레이어의 웨이트의 표현 비트수와 컨벌루셔널 레이어로 입력되는 액티베이션 맵의 표현 비트수를 동일하게 설정될 필요는 없다. 이를 통해, 데이터 처리 장치(100)는 컨벌루션 연산의 속도를 향상시킬 수 있다.
각 레이어 마다 적합한 표현 비트수는 상이할 수 있다. 데이터 처리 장치(100)는 각 레이어 마다 웨이트 양자화 파라미터 및 액티베이션 양자화 파라미터를 최적화할 수 있다. 또한, 데이터 처리 장치(100)는 웨이트 양자화 파라미터와 액티베이션 양자화 파라미터를 동시에 최적화할 수 있다. 이를 통해, 데이터 처리 장치(100)는 웨이트 양자화 파라미터가 학습된 후에 액티베이션 양자화 파라미터가 학습되는 경우보다 더 좋은 성능을 보이는 웨이트 양자화 파라미터 및 액티베이션 양자화 파라미터를 획득할 수 있다.
도 2는 일 실시예에 따른 데이터 처리 장치의 전체 구성을 도시한 도면이다.
일 실시예에 따르면, 데이터 처리 장치(200)는 프로세서(201) 및 메모리(203)을 포함한다.
메모리(203)는 입력 데이터를 저장한다. 예를 들어, 입력 데이터는 영상 데이터를 포함할 수 있다. 메모리(203)는 프로세서(201)에 의해 실행될 인스트럭션들(instructions)를 저장할 수 있다. 메모리(203)는 제1 레이어 및 제2레이어를 포함하는 뉴럴 네트워크를 저장할 수 있다. 여기서, 제1레이어 및 제2레이어는 선후 관계에 있는 서로 다른 레이어를 지칭하기 위한 것일 뿐, 특정 레이어 또는 특정한 관계에 있는 복수의 레이어로 한정되지 않으며, 제1 레이어는 뉴럴 네트워크의 첫번째 레이어로 제한되지 않는다. 이하에서, 제1 레이어는 현재 레이어로 지칭될 수 있고, 제2 레이어는 다음 레이어로 지칭될 수 있다.
메모리(203)는 뉴럴 네트워크를 구성하는 각 레이어의 파라미터를 저장할 수 있다. 메모리(203)는 컨벌루셔널 레이어의 웨이트를 저장할 수 있다. 메모리(203)는 복수의 레이어 각각의 액티베이션 맵에 대한 제2 표현 비트수, 액티베이션 양자화 파라미터 및 제1 표현 비트수로 양자화된 웨이트를 저장할 수 있다.
메모리(203)는, DRAM, SRAM, DDR RAM 또는 기타의 랜덤 액세스 반도체 메모리(solid state memory) 장치와 같은 고속 랜덤 액세스 메모리를 포함할 수도 있으며, 하나 이상의 자기 디스크 저장 장치, 광학 디스크 저장 장치, 플래시 메모리 장치나 기타의 비휘발성 반도체 저장 장치와 같은 비휘발성 메모리를 포함할 수도 있다.
프로세서(201)는 인스트럭션들을 이용하여 현재 레이어인 제1레이어로부터 제1액티베이션 맵을 출력할 수 있다. 예를 들어, 제1레이어는 컨벌루셔널 레이어일 수 있다. 프로세서(201)는 이전 레이어로부터 출력된 입력 데이터를 제1레이어에 입력하여 제1액티베이션 맵을 출력할 수 있다.
프로세서(201)는 액티베이션 양자화 파라미터를 이용하여 제2표현 비트수로 제1액티베이션 맵을 양자화할 수 있다. 액티베이션 양자화 파라미터는 제1액티베이션 맵의 범위를 한정하는 파라미터를 포함할 수 있다. 프로세서(201)는 액티베이션 양자화 파라미터를 이용하여 제1액티베이션 맵의 범위를 한정하고, 제2표현 비트수로 제1액티베이션 맵을 양자화할 수 있다. 이를 통해, 프로세서(201)는 고-비트(high bit)의 부동 소수점 또는 고정 소수점으로 표현되는 제1액티베이션 맵을 저-비트의 고정 소수점으로 표현되는 양자화된 액티베이션 맵으로 변환할 수 있다.
프로세서(201)는 양자화된 제1액티베이션 맵을 다음 레이어인 제2레이어로 입력할 수 있다. 예를 들어, 제2레이어는 컨벌루셔널 레이어일 수 있다. 프로세서(201)는 양자화된 제1액티베이션 맵과 제1표현 비트수로 양자화된 웨이트를 기초로 제2액티베이션 맵을 출력할 수 있다. 프로세서(201)는 제1액티베이션 맵과 양자화된 웨이트를 기초로 컨벌루션 연산을 수행할 수 있다. 프로세서(201)는 양자화된 제1액티베이션 맵과 양자화된 웨이트에 대해 멀티플리케이션 연산과 어큐뮬레이션 연산을 기초로 컨벌루션 연산을 수행할 수 있다. 프로세서(201)는 비트-와이즈 연산을 이용하여 컨벌루션 연산을 수행할 수도 있다. 이 경우, 데이터 처리 속도는 향상될 수 있다. 비트-와이즈연산은AND 연산 및POP COUNT 연산을 포함하거나XNOR 연산 및POP COUNT 연산을 포함할 수 있다. 제1표현 비트수와 제2표현 비트수는 동일할 수도 있고 상이할 수도 있다.
도 3a은 일 실시예에 따른 하나의 레이어에서 컨벌루션 연산 및 양자화가 수행되는 과정을 도시한 도면이다. 도 3b는 다른 실시예에 따른 하나의 레이어에서 AND 및 POP COUNT를 이용하여 컨벌루션 연산 및 양자화가 수행되는 과정을 도시한 도면이다. 도 3c는 다른 실시예에 따른 하나의 레이어에서 XNOR 및 POP COUNT를 이용하여 컨벌루션 연산 및 양자화가 수행되는 과정을 도시한 도면이다.
데이터 처리 장치(100)는 양자화된 액티베이션 맵과 제1 표현 비트수로 양자화된 웨이트에 대하여 멀티플리케이션 연산 및 어큐뮬레이션 연산을 수행할 수 있다. 도 1의 컨벌루셔널 레이어(110)를 구성하는 적어도 하나의 레이어(111)에 포함된 필터링을 수행하는 레이어는 도 3a과 같은 동작을 수행할 수 있다. 도 3a을 참조하면, 컨벌루셔널 레이어의 양자화된 웨이트(301)의 제1표현 비트수와 컨벌루셔널 레이어로 입력되는 액티베이션 맵(303)의 제2 표현 비트수는 N 비트로 동일할 수 있다. 다만, 이는 예시에 불과하며 제1 표현 비트수와 제2 표현 비트수는 상이할 수도 있다.
데이터 처리 장치(100)는 양자화된 웨이트(301)와 양자화된 액티베이션 맵(303)에 대해 멀티플리케이션 연산(311)을 수행할 수 있다. 데이터 처리 장치(100)는 2N 비트의 출력 데이터를 출력할 수 있다. 여기서, 멀티플리케이션 연산(311)은 비트-와이즈 연산일 수 있으며, 컨벌루션 연산을 고속화될 수 있다.
데이터 처리 장치(100)는 2N 비트의 출력 데이터와 이전의 어큐뮬레이션의 출력 데이터에 대하여 어큐뮬레이션 연산(313)을 수행할 수 있다. 2N 비트의 출력 데이터에 대한 어큐뮬레이션 연산의 출력 데이터는 2N 비트를 넘을 수 있고, 데이터 처리 장치(100)는 여분의 M 비트를 출력 데이터에 추가할 수 있다. .
데이터 처리 장치(100)는 2N + M비트의 출력 데이터를 N 비트로 양자화(315)할 수 있다. 여기서, N은 제2표현 비트수일 수 있다. 데이터 처리 장치(100)는 2N + M비트의 출력 데이터를 액티베이션 양자화 파라미터로 표현되는 범위 내에서 N 비트의 데이터로 변환할 수 있다.
데이터 처리 장치(100)는 양자화의 결과로서 N 비트의 출력 데이터(321)를 출력할 수 있다. N 비트의 출력 데이터(321)는 다시 도 1의 컨벌루셔널 레이어(110)을 구성하는 다음 레이어(113)에 입력될 수 있다. 이처럼, 뉴럴 네트워크의 웨이트와 액티베이션 맵의 양자화를 통해 비트-와이즈 컨벌루션 연산이 수행될 수 있고, 컨벌루션 연산의 고속화가 달성될 수 있다.
도 3b 및 도 3c를 참조하면, 데이터 처리 장치(100)는 양자화된 웨이트(301)과 액티베이션 맵(303)에 대하여 비트-와이즈 연산을 이용하여 컨벌루션 연산 및 양자화를 수행할 수 있다. 데이터 처리 장치(100)는 AND 연산(317) 및 POP COUNT 연산(319)를 이용하여 컨벌루션 연산을 수행할 수 있다. 데이터 처리 장치(100)는 XNOR 연산(318) 및 POP COUNT 연산(319)를 이용하여 컨벌루션 연산을 수행할 수 있다.
도 3b 및 도 3c를 참조하면, 데이터 처리 장치(100)는 양자화된 웨이트(301)과 액티베이션 맵(303)에 대하여 비트-와이즈 연산을 이용하여 컨벌루션 연산 및 양자화를 수행할 수 있다. 데이터 처리 장치(100)는 AND 연산(317) 및 POP COUNT 연산(319)를 이용하여 컨벌루션 연산을 수행할 수 있다. 데이터 처리 장치(100)는 XNOR 연산(318) 및 POP COUNT 연산(319)를 이용하여 컨벌루션 연산을 수행할 수 있다.
비트-와이즈 컨벌루션 연산은 두 개의 벡터(vector)의 내적(inner product)으로 수행될 수 있다. 예를 들어, 다음의 수학식들을 이용하여 비트-와이즈 컨벌루션 연산이 수행될 수 있다.
Figure pat00001
수학식 35에서 x는 M 비트의 고정 소수점 정수(fixed-point integer) 벡터를 의미한다.
Figure pat00002
은 바이너리 벡터(binary vector)로서
Figure pat00003
의 각 요소는 x의 각 요소의
Figure pat00004
자리의 비트를 나타낸다.
Figure pat00005
수학식 36에서 y는 K 비트의 고정 소수점 정수 벡터를 의미한다.
Figure pat00006
x와 y에 의한 내적은 수학식 37과 같이 수행될 수 있다. 수학식 37은 x, y가 {0, 1}의 요소를 가지는 경우의 내적을 나타내며, AND 연산이 사용된다. 반면에, x, y가 {-1, 1}의 요소를 가지는 경우에 내적은 AND 연산 대신 XNOR 연산이 사용될 수 있다. 이 경우에, 수학식 37은 일부 수정될 수 있다.
도 4는 일 실시예에 따른 데이터 처리 방법의 동작을 도시한 순서도이다.
도 4를 참조하면, 뉴럴 네트워크는 현재 레이어 및 다음 레이어를 포함할 수 있다. 현재 레이어는 액티베이션 맵에 대한 제2 표현 비트수및 액티베이션 양자화 파라미터를 가질 수 있다. 다음 레이어는 제1 표현 비트수로 양자화된 웨이트를 가질 수 있다. 여기서, 현재 레이어와 다음 레이어는 현재 레이어 이후 다음 레이어가 연결되는 순서를 나타내며, 현재 레이어와 다음 레이어는 반드시 직접 연결될 필요는 없고 그 사이에 다른 동작을 수행하는 레이어가 포함될 수도 있다. 예를 들어, 현재 레이어와 다음 레이어 사이에 풀링 레이어가 포함될 수 있다.
각 레이어의 양자화된 웨이트는 학습 과정에서 도출된 제1표현 비트수 및 웨이트 양자화 파라미터를 기초로 계산될 수 있다. 양자화 파라미터는 웨이트 양자화 파라미터에 의해 설정된 범위 내에서 고-비트로부터 저-비트의 제1표현 비트수로 양자화될 수 있다.
일 실시예에 따르면, 단계(410)에서, 데이터 처리 장치(100)는 현재 레이어로 입력 액티베이션 맵을 입력할 수 있다. 이하의 과정은 다음 레이어에서도 동일하게 수행될 수 있다.
일 실시예에 따르면, 단계(420)에서, 데이터 처리 장치(100)는 입력 액티베이션 맵과 현재 레이어의 제1 표현 비트수로 양자화된 웨이트 간에 컨볼루션 연산을 수행하여 출력 액티베이션 맵을 출력할 수 있다. 제1액티베이션 맵은 컨벌루션 연산이 수행된 결과일 수 있다. 컨벌루션 연산의 어큐뮬레이션 연산으로 인해 제1 액티베이션 맵은 제2 표현 비트수 보다 더 큰 표현 비트수를 가질 수 있다.
일 실시예에 따르면, 단계(430)에서, 데이터 처리 장치(100)는 액티베이션 양자화 파라미터를 이용하여 출력 액티베이션 맵을 제2표현 비트수로 양자화하여 양자화된 액티베이션 맵을 출력할 수 있다. 데이터 처리 장치(100)는 액티베이션 양자화 파라미터에 의해 정의되는 범위 내에서 제1액티베이션 맵을 제2표현 비트수로 양자화할 수 있다. 양자화된 제1액티베이션 맵은 제2표현 비트수로 표현될 수 있다. 표현 비트수가 감소되므로 데이터 처리량은 감소될 수 있다. 이를 통해, 컨벌루션 연산의 고속화가 달성될 수 있다.
도 5는 제1 실시예에 따라 표현 비트수와 양자화 파라미터를 단계적으로 학습시키는 뉴럴 네트워크의 학습 장치의 구성을 도시한 도면이다.
뉴럴 네트워크의 학습 장치는 학습 데이터를 이용하여 뉴럴 네트워크의 손실값이 최소가 되도록 뉴럴 네트워크를 학습시킬 수 있다. 뉴럴 네트워크의 학습은 일종의 최적화의 문제 풀이 과정이며, 뉴럴 네트워크를 구성하는 파라미터들은 최적화될 수 있다.
표현 비트수 및 양자화 파라미터는 택일적(alternatively)으로 학습되거나 단계적으로 학습되거나 동시에 학습될 수 있다.
제1 실시예에 따르면, 뉴럴 네트워크의 학습 장치는 제1 표현 비트수 및 제2 표현 비트수의 학습과 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트의 학습을 단계적으로 수행할 수 있다. 예를 들어, 비트 결정부(510) 및 뉴럴 네트워크 학습부(520)는 강화학습(Reinforcement Learning)을 통하여 학습될 수 있다.
제2 실시예예 따르면, 뉴럴 네트워크의 학습 장치는 제1표현 비트수 및 제2표현 비트수와 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트를 함께 학습시킬 수 있다.
제3 실시예에 따르면, 뉴럴 네트워크의 학습 장치는 양자화 파라미터를 고정한 상태에서 제1표현 비트수 및 제2표현 비트수를 학습시킬 수 있다. 제4 실시예에 따르면, 뉴럴 네트워크의 학습 장치는 표현 비트수를 고정시킨 상태에서 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트를 학습시킬 수 있다.
도 5를 참조하면, 뉴럴 네트워크의 학습 장치는 제1표현 비트수 및 제2표현 비트수를 학습시키고 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트를 학습시킬 수 있다. 뉴럴 네트워크의 학습 장치는 복수의 레이어 각각에 대해 제1표현 비트수 및 제2표현 비트수를 각각 학습시킬 수 있다. 학습된 뉴럴 네트워크는 제1표현 비트수 및 웨이트 양자화 파라미터로 양자화된 웨이트를 파라미터로서 저장할 수 있다. 학습된 뉴럴 네트워크는 제2표현 비트수 및 액티베이션 양자화 파라미터 자체를 저장함으로써 데이터 처리 과정에서 각 레이어 별로 출력되는 액티베이션 맵을 실시간으로 양자화할 수 있다.
일 실시예예 따르면, 뉴럴 네트워크의 학습 장치는 비트 결정부(510) 및 뉴럴 네트워크 학습부(520)를 포함할 수 있다. 비트 결정부(510)는 비트 결정 시스템(Bit decision system)이라고 지칭될 수 있다. 뉴럴 네트워크 학습부(520)는 낮은 프리시젼 네트워크 학습 시스템(Low-precision network training system)으로 지칭될 수 있다.
비트 결정부(510)는 각 레이어의 웨이트에 대한 제1표현 비트수와 각 레이어로부터 출력되는 액티베이션 맵에 대한 제2표현 비트수를 결정할 수 있다. 비트 결정부(510)는 결정된 제1표현 비트수 및 제2표현 비트수를 뉴럴 네트워크 학습부(520)로 전송할 수 있다.
뉴럴 네트워크 학습부(520)는 이전 이터레이션에서 결정된 제1 표현 비트수 및 제2표현 비트수를 기초로, 학습 데이터를 이용하여 뉴럴 네트워크를 학습시킬 수 있다. 뉴럴 네트워크 학습부(520)는 제1표현 비트수로 웨이트를 양자화하기 위하여 설정되는 범위를 나타내는 웨이트 양자화 파라미터를 학습시킬 수 있다. 뉴럴 네트워크 학습부(520)는 제2 표현 비트수로 액티베이션 맵을 양자화하기 위하여 설정되는 범위를 나타내는 액티베이션 양자화 파라미터를 학습시킬 수 있다. 뉴럴 네트워크 학습부(520)는 학습된 웨이트 양자화 파라미터 및 액티베이션 양자화 파라미터를 비트 결정부(510)로 전송할 수 있다.
비트 결정부(510)는 학습된 웨이트 양자화 파라미터 및 액티베이션 양자화 파라미터를 기초로 다시 제1표현 비트수 및 제2표현 비트수를 결정할 수 있다. 이와 같은 과정은 일정한 조건을 만족할 때까지 반복될 수 있다. 예를 들어, 손실값이 미리 설정된 임계값 이하가 될 때까지 상기 과정은 반복될 수 있다.
도 6은 제1 실시예에 따라 강화 학습을 이용하는 뉴럴 네트워크의 학습 장치의 구성을 도시한 도면이다.
일 실시예예 따르면, 뉴럴 네트워크의 학습 장치는 상태(state) 및 보상(reward)을 기초로 강화학습에 의하여 제1뉴럴 네트워크를 학습시킬 수 있다. 일 실시예예 따르면, 상태는 웨이트 양자화 파라미터 및 액티베이션 양자화 파라미터 각각의 양자화 에러, 복수의 레이어 각각의 웨이트의 분포 및 액티베이션 맵의 분포를 포함하고, 보상은 손실값을 포함할 수 있다.
뉴럴 네트워크의 학습 장치는 비트 결정부(510) 및 뉴럴 네트워크 학습부(520)를 포함할 수 있다. 비트 결정부(510)는 각 레이어의 웨이트에 대한 제1표현 비트수와 각 레이어로부터 출력되는 액티베이션 맵에 대한 제2표현 비트수를 결정할 수 있다. 비트 결정부(510)는 결정된 제1표현 비트수 및 제2표현 비트수를 뉴럴 네트워크 학습부(520)로 전송할 수 있다.
뉴럴 네트워크 학습부(520)는 결정된 제1 표현 비트수 및 제2표현 비트수를 기초로, 학습 데이터를 이용하여 뉴럴 네트워크를 학습시킬 수 있다. 뉴럴 네트워크 학습부(520)는 제1표현 비트수로 웨이트를 양자화하기 위하여 설정되는 범위를 나타내는 웨이트 양자화 파라미터를 학습시킬 수 있다. 뉴럴 네트워크 학습부(520)는 제2 표현 비트수로 액티베이션 맵을 양자화하기 위하여 설정되는 범위를 나타내는 액티베이션 양자화 파라미터를 학습시킬 수 있다. 동시에, 뉴럴 네트워크 학습부(520)는 웨이트를 학습시킬 수 있다.
뉴럴 네트워크 학습부(520)는 웨이트 양자화 파라미터 및 액티베이션 양자화 파라미터 각각의 양자화 에러를 계산할 수 있다. 뉴럴 네트워크 학습부(520)는 복수의 레이어 각각의 웨이트의 분포 및 액티베이션 맵의 분포를 계산할 수 있다. 뉴럴 네트워크 학습부(520)는 손실값을 계산할 수 있다. 뉴럴 네트워크 학습부(520)는 유효성 데이터를 기초로 손실값을 계산할 수 있다.
뉴럴 네트워크 학습부(520)는 학습된 웨이트 양자화 파라미터 및 액티베이션 양자화 파라미터를 포함하는 상태 및 보상을 비트 결정부(510)로 전송할 수 있다. 비트 결정부(510)는 상태 및 보상을 기초로 다시 제1표현 비트수 및 제2표현 비트수를 결정할 수 있다. 이와 같은 과정은 일정한 조건을 만족할 때까지 반복될 수 있다. 예를 들어, 손실값이 미리 설정된 임계값 이하가 될 때까지 상기 과정은 반복될 수 있다.
도 7a는 제1 실시예에 따른 강화 학습을 이용하는 뉴럴 네트워크의 학습 장치의 비트 결정부가 제2뉴럴 네트워크를 포함하는 구성을 도시한 도면이다. 도 7b는 제1 실시예에 따른 강화 학습을 이용하는 뉴럴 네트워크의 학습 장치의 비트 결정부가 증감 함수를 이용하는 구성을 도시한 도면이다.
도 7a를 참조하면, 비트 결정부(510)는 제2뉴럴 네트워크를 포함할 수 있다. 비트 결정부(510)는 상태 및 보상을 기초로 제2뉴럴 네트워크를 이용하여 제1표현 비트수 및 제2표현 비트수를 갱신할 수 있다. 예를 들어, 비트 결정부(510)는 상태 및 보상을 제2뉴럴 네트워크의 입력 레이어에 입력하고, 최종 출력 값을 기초로 제1표현 비트수 및 제2표현 비트수를 갱신할 수 있다. 비트 결정부(510)는 제1뉴럴 네트워크의 각 레이어에 대한 제1표현 비트수 및 제2표현 비트수를 결정할 수 있다.
도 7b를 참조하면, 비트 결정부(510)는 각 레이어의 표현 비트수를 증가시키거나 감소시키는 함수로 구성될 수 있다. 비트 결정부(510)는 뉴럴 네트워크 학습부(520)로부터 상태/보상을 수신할 수 있다. 비트 결정부(510)는 상태/보상을 기초로 표현 비트수를 증가(711)시키거나, 표현 비트수를 감소(713)시킬 수 있다. 비트 결정부(510)는 손실값을 기초로 제1 표현 비트수 및 제2표현 비트수를 미리 설정된 비트수만큼 증가시키거나 감소시킬 수 있다. 비트 결정부(510)는 각 레이어별로 최적의 표현 비트수가 결정될 때까지 표현 비트수의 증가/감소를 반복할 수 있다. 단계(715)에서, 비트 결정부(510)는 각 레이어 별 표현 비트수를 결정할 수 있다.
도 8은 제1 실시예에 따른 강화 학습을 이용하는 뉴럴 네트워크의 학습 장치의 뉴럴 네트워크 학습부의 전체 구성을 도시한 도면이다.
비트 결정부(510)는 뉴럴 네트워크 학습부(520)로부터 수신한 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 손실값을 포함하는 상태/보상을 기초로 제1표현 비트수 및 제2표현 비트수를 결정할 수 있다. 비트 결정부(510)는 결정된 제1표현 비트수 및 제2표현 비트수를 뉴럴 네트워크 학습부(520)에 전달할 수 있다.
뉴럴 네트워크 학습부(520)는 결정된 제1 표현 비트수 및 제2표현 비트수를 기초로 웨이트 양자화 파라미터 및 액티베이션 양자화 파라미터를 갱신할 수 있다. 뉴럴 네트워크 학습부(520)는 제1표현 비트수 및 제2표현 비트수를 기초로 학습 데이터베이스(811)에 저장된 학습 데이터를 이용하여, 단계(813)에서 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트를 함께 학습시킬 수 있다. 여기서, 학습 데이터는 뉴럴 네트워크의 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트를 학습시키기 위한 데이터를 의미할 수 있다.
뉴럴 네트워크 학습부(520)는 학습된 양자화 파라미터 및 웨이트를 기초로 양자화된 웨이트를 출력할 수 있다. 뉴럴 네트워크 학습부(520)는 학습된 액티베이션 양자화 파라미터 및 양자화된 웨이트(817)를 기초로 유효성 데이터베이스(815)에 저장된 유효성 데이터를 이용하여 손실값(819)을 계산할 수 있다. 여기서, 유효성 데이터는 뉴럴 네트워크의 파라미터들을 기초로 에러 또는 정확도를 계산하기 위해 사용되는 데이터를 의미할 수 있다.
뉴럴 네트워크 학습부(520)는 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 손실값(819)을 포함하는 상태/보상을 비트 결정부(510)에 전달할 수 있다. 예를 들어, 상태는 웨이트 양자화 파라미터 및 액티베이션 양자화 파라미터 각각의 양자화 에러, 복수의 레이어 각각의 웨이트의 분포 및 액티베이션 맵의 분포를 포함하고, 보상은 손실값을 포함할 수 있다.
손실값(819)이 이전 이터레이션(iteration)에서 계산된 손실값보다 작은 경우에, 비트 결정부(510)는 손실값, 웨이트 양자화 파라미터 및 액티베이션 양자화 파라미터를 기초로 제1 표현 비트수 및 제2표현 비트수를 갱신할 수 있다. 이와 같은 학습 과정은 일정한 조건이 만족될 때까지 반복될 수 있다. 예를 들어, 손실값(819)이 임계값 이하인 조건이 만족될 때까지 학습 과정이 반복될 수 있다.
도 9는 일 실시예에 따른 뉴럴 네트워크 학습 장치에 의해 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트가 함께 학습되는 구조를 도시한 도면이다.
일 실시예에 따르면, 뉴럴 네트워크의 학습 장치는 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트를 함께 학습시킬 수 있다. 뉴럴 네트워크의 학습 장치는 웨이트 양자화 파라미터 및 액티베이션 양자화 파라미터를 함께 학습시킴으로써, 웨이트 양자화 파라미터와 액티베이션 양자화 파라미터를 별도로 학습시키는 경우 보다 고도의 최적화를 달성할 수 있다.
도 9를 참조하면, 단계(813)에서 뉴럴 네트워크 학습 장치는 학습 데이터베이스(811)를 이용하여 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트를 함께 학습할 수 있다. 제1표현 비트수 및 제2표현 비트수의 학습이 완료된 후에, 뉴럴 네트워크 학습 장치는 제1표현 비트수 및 제2표현 비트수를 기초로 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트를 함께 학습할 수 있다. 이처럼, 뉴럴 네트워크 학습 장치는 표현 비트수의 학습과 양자화 파라미터의 학습을 분리할 수 있다.
뉴럴 네트워크 학습 장치는 학습의 결과로서 웨이트 양자화 파라미터 및 액티베이션 양자화 파라미터를 출력할 수 있다. 단계(817)에서 뉴럴 네트워크 학습 장치는 웨이트 양자화 파라미터 및 웨이트를 기초로 양자화된 웨이트를 출력할 수 있다. 뉴럴 네트워크 학습 장치는 뉴럴 네트워크를 구성하는 레이어 별로 양자화된 웨이트 및 액티베이션 양자화 파라미터를 출력할 수 있다.
뉴럴 네트워크 학습 장치는 학습 데이터(901)를 이용하여 학습된 웨이트 양자화 파라미터 및 액티베이션 양자화 파라미터를 기초로 손실값(911)을 계산할 수 있다. 여기서, 손실값(911)은 정확도를 반영할 수 있다. 정확도는 뉴럴 네트워크가 유효성 데이터를 얼마나 정확하게 분류할 수 있는지를 나타내는 지표를 의미할 수 있다. 예를 들어, 정확도가 높을수록 손실값(911)이 작아지고 정확도가 낮을수록 손실값(911)이 높아질 수 있다. 뉴럴 네트워크 학습 장치는 정확도가 높아지는 방향으로 웨이트 양자화 파라미터 및 액티베이션 양자화 파라미터를 학습시킬 수 있다.
뉴럴 네트워크를 구성하는 레이어의 웨이트는 고-비트(high bit)로 표현될 수 있다. 예를 들어, 웨이트는 32 비트의 부동 소수점 방식 또는 고정 소수점 방식으로 표현될 수 있다. 웨이트는 32 비트의 부동 소수점으로 표현되는 범위 내의 특정 범위에 분포될 수 있다. 웨이트는 최대값과 최소값을 가질 수 있으며, 최대값과 최소값 사이의 특정 범위에 집중적으로 분포될 수 있다.
웨이트는 분포 상태 또는 정확도를 고려하여 저-비트로 변환될 수 있다. 여기서, 웨이트는 0보다 작을 수 있으므로 웨이트의 절대값이 고려된다. 예를 들어, 웨이트의 절대값은 상한 및 하한을 기초로 저-비트로 표현될 수 있다. 웨이트의 분포 상태를 고려하여 상한 및 하한이 결정된다면 저-비트 변환에도 불구하고 정확도 감소는 최소화될 수 있다. 반면에, 표현 비트수 감소로 인해 메모리 효율 및 계산 속도는 비약적으로 향상될 수 있다.
일 실시예에 따르면, 웨이트 양자화 파라미터는 복수의 레이어 각각의 웨이트의 절대값의 제3 임계값 및 제4 임계값을 포함할 수 있다. 여기서, 제1표현 비트수로 표현되는 웨이트의 웨이트 구간이 상한은 제3 임계값으로 지칭되고, 웨이트 구간의 하한은 제4 임계값으로 지칭될 수 있다.
액티베이션 맵은 분포 상태를 고려하여 저-비트로 변환될 수 있다. 웨이트와 달리 액티베이션 맵은 액티베이션 함수를 사용한다. 만일 액티베이션 함수로 릴루 함수를 사용한다면 액티베이션 값은 0이상이 된다. 액티베이션 맵의 분포 상태를 고려하여 액티베이션 맵 구간의 상한 및 하한이 결정된다면 저-비트 변환에도 불구하고 정확도 감소는 최소화될 수 있다. 반면에, 표현 비트수 감소로 인해 메모리 효율 및 계산 속도는 향상될 수 있다.
일 실시예에 따르면, 액티베이션 양자화 파라미터는 복수의 레이어 각각의 액티베이션 맵의 제1 임계값 및 제2 임계값을 포함할 수 있다. 여기서, 제2표현 비트수로 표현되는 액티베이션 맵의 구간의 상한은 제1 임계값으로 지칭되고, 액티베이션 맵의 구간의 하한은 제2 임계값으로 지칭될 수 있다.
다른 실시예에 따르면, 웨이트의 분포 상태는 구간의 상한 및 하한 대신에 구간의 중간값 과 구간의 간격으로 표현될 수도 있다. 여기서, 현재 레이어의 웨이트의 절대값의 제2중간값 및 제2차이값이 사용될 수 있다. 제2 차이값은 제3 임계값 및 제4 임계값의 차이의 반을 나타내고, 제2 중간값은 제3 임계값 및 상기 제4 임계값의 중간을 나타낼 수 있다.
다른 실시예에 따르면, 액티베이션 맵의 분포 상태는 구간의 상한 및 하한 대신에 구간의 중간값과 구간의 간격으로 표현될 수도 있다. 출력 액티베이션 맵에 대한 제1중간값 및 제1차이값이 사용될 수 있다. 제1차이값은 제1 임계값 및 제2 임계값의 차이의 반을 나타내고, 제1 중간값은 상기 제1 임계값 및 상기 제2 임계값의 중간을 나타낼 수 있다.
도 9를 참조하면, 뉴럴 네트워크 학습 장치는 결정된 제1표현 비트수 및 제2표현 비트수를 기초로 학습 데이터(901)를 이용하여 각 레이어 별로 웨이트 양자화 파라미터 및 액티베이션 양자화 파라미터를 함께 학습시킬 수 있다.
이전 이터레이션(iteration)에서 뉴럴 네트워크 학습 장치는 웨이트 W1를 경량화한 결과로서 양자화된 웨이트 W1을 표현하기 위한 하한 aw1, 상한bw1및 표현 비트수 Nw1을 저장할 수 있다. 단계(913)에서, 뉴럴 네트워크 학습 장치는 이전 이터레이션에서 결정된 제1레이어의 표현 비트수 Nw1, 제1레이어(903)의 웨이트 W1의 하한aw1및 상한bw1을 메모리로부터 불러올 수 있다. 여기서, 하한aw1및 상한bw1은 제1레이어의 웨이트 양자화 파라미터에 포함될 수 있다.
단계(923)에서 뉴럴 네트워크 학습 장치는 양자화된 웨이트 W1을 획득할 수 있다. 뉴럴 네트워크 학습 장치는 하한aw1및 상한bw1의 범위에서 이전 이터레이션에서 결정된 제1레이어의 표현 비트수 Nw1로 웨이트 W1을 양자화할 수 있다. 뉴럴 네트워크 학습 장치는 양자화된 웨이트 W1을 기초로 학습 데이터(901)로부터 액티베이션 맵 A1을 출력할 수 있다.
이전 이터레이션(iteration)에서 뉴럴 네트워크 학습 장치는 액티베이션 맵 A1의 제2 표현 비트수 NA1, 액티베이션 맵 A1의 하한 aA1및 상한bA1을 저장할 수 있다. 단계(915)에서 뉴럴 네트워크 학습 장치는 액티베이션 맵 A1의 제2 표현 비트수 NA1, 액티베이션 맵 A1의 하한aA1및 상한bA1을 메모리로부터 불러올 수 있다. 여기서, 하한aA1및 상한bA1은 제1레이어의 액티베이션 양자화 파라미터에 포함될 수 있다.
단계(905)에서, 뉴럴 네트워크 학습 장치는 액티베이션 맵 A1을 양자화할 수 있다. 뉴럴 네트워크 학습 장치는 제2 표현 비트수 NA1, 하한aA1및 상한bA1을 이용하여 액티베이션 맵 A1을 양자화할 수 있다. 양자화된 액티베이션 맵 A1은 제2레이어로 전달될 수 있다.
이전 이터레이션(iteration)에서 뉴럴 네트워크 학습 장치는 양자화된 웨이트 W2을 표현하기 위한 하한aw2, 최대값 bw2및 표현 비트수 Nw2을 저장할 수 있다. 단계(917)에서, 뉴럴 네트워크 학습 장치는 이미 결정된 제2레이어의 표현 비트수 Nw2, 제2 레이어(907)의 웨이트 W2의 하한 aw2및 상한 bw2을 메모리로부터 불러올 수 있다. 여기서, 하한 aw2및 상한 bw2은 제2레이어의 웨이트 양자화 파라미터에 포함될 수 있다.
단계(925)에서 뉴럴 네트워크 학습 장치는 양자화된 웨이트 W2을 획득할 수 있다. 뉴럴 네트워크 학습 장치는 하한 aw2및 상한 bw2의 범위에서 이미 결정된 제2레이어의 표현 비트수 Nw2로 웨이트 W2을 양자화할 수 있다.
뉴럴 네트워크 학습 장치는 양자화된 웨이트 W2을 기초로 양자화된 액티베이션 맵 A1로부터 액티베이션 맵 A2를 출력할 수 있다.
이전 이터레이션(iteration)에서 뉴럴 네트워크 학습 장치는 액티베이션 맵 A2의 제2 표현 비트수 NA2, 액티베이션 맵 A2의 하한 aA2및 상한 bA2을 메모리에 저장할 수 있다. 단계(919)에서 뉴럴 네트워크 학습 장치는 액티베이션 맵 A2의 제2 표현 비트수 NA2, 액티베이션 맵 A2의 하한 aA2및 상한 bA2을 메모리로부터 불러올 수 있다. 여기서, 하한 aA2및 상한 bA2은 제2레이어의 액티베이션 양자화 파라미터에 포함될 수 있다.
단계(909)에서, 뉴럴 네트워크 학습 장치는 액티베이션 맵 A2을 양자화할 수 있다. 뉴럴 네트워크 학습 장치는 제2 표현 비트수 NA2, 하한 aA2및 상한 bA2을 이용하여 액티베이션 맵 A2을 양자화할 수 있다. 양자화된 액티베이션 맵 A2은 제3레이어로 전달될 수 있다.
단계(911)에서 뉴럴 네트워크 학습 장치는 학습 데이터(901)를 이용하여 학습된 뉴럴 네트워크의 손실값을 출력할 수 있다. 여기서, 손실값은 학습된 양자화 파라미터의 정확도와 관련된 것일 수 있다. 뉴럴 네트워크 학습 장치는 손실값을 기초로 각 레이어 별로 양자화 파라미터를 갱신할 수 있다. 이와 같이, 뉴럴 네트워크의 복수의 레이어 각각에 대하여 웨이트 양자화 파라미터 및 액티베이션 양자화 파라미터가 학습될 수 있다.
도 10은 제2 실시예에 따라 표현 비트수, 양자화 파라미터 및 웨이트를 함께 학습시키는 뉴럴 네트워크 학습 장치의 구조를 도시한 도면이다.
도 10을 참조하면, 단계(1013)에서 뉴럴 네트워크 학습 장치는 학습 데이터베이스(811)를 이용하여 제1표현 비트수, 제2표현 비트수, 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트를 함께 학습할 수 있다. 이처럼, 뉴럴 네트워크 학습 장치는 표현 비트수의 학습과 양자화 파라미터의 학습을 동시에 수행할 수 있다. 비트 결정부는 뉴럴 네트워크 학습부에 정합될 수 있다.
단계(1017)에서 뉴럴 네트워크 학습 장치는 학습의 결과로서 제1표현 비트수, 제2표현 비트수, 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트를 출력할 수 있다. 뉴럴 네트워크 학습 장치는 뉴럴 네트워크를 구성하는 레이어 별로 제1표현 비트수, 제2표현 비트수, 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트를 출력할 수 있다.
뉴럴 네트워크 학습 장치는 유효성 데이터를 이용하여 학습된 제1표현 비트수, 제2표현 비트수, 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트를 기초로 손실값을 계산할 수 있다. 여기서, 손실값은 정확도 및 성능을 반영할 수 있다. 여기서, 성능은 계산 속도 또는 요구되는 메모리와 관련된 성능을 나타내는 지표를 의미할 수 있다. 예를 들어, 정확도가 높을수록 손실값이 작아지고 정확도가 낮을수록 손실값이 높아질 수 있다. 일반적으로 표현 비트수가 작을수록 정확도가 작아지는 관계에 있으므로, 성능과 정확도 사이에서 최적의 결과가 도출되도록 뉴럴 네트워크는 학습될 수 있다. 뉴럴 네트워크 학습 장치는 속도 대비 성능을 최적화하는 방향으로 파라미터들을 학습할 수 있다.
도10을 참조하면, 뉴럴 네트워크 학습 장치는 학습 데이터(1001)를 이용하여 각 레이어 별로 제1표현 비트수, 제2표현 비트수, 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트를 함께 학습시킬 수 있다.
이전 이터레이션(iteration)에서 뉴럴 네트워크 학습 장치는 양자화된 웨이트 W1을 표현하기 위한 하한 aw1, 상한 bw1및 표현 비트수 Nw1을 저장할 수 있다. 단계(1013)에서, 뉴럴 네트워크 학습 장치는 제1레이어의 표현 비트수 Nw1, 제1레이어(1003)의 웨이트 W1의 하한 aw1및 상한 bw1을 메모리로부터 불러올 수 있다.
단계(1023)에서 뉴럴 네트워크 학습 장치는 양자화된 웨이트 W1을 획득할 수 있다. 뉴럴 네트워크 학습 장치는 하한 aw1및 상한 bw1의 범위에서 제1레이어의 표현 비트수 Nw1로 웨이트 W1을 양자화할 수 있다. 뉴럴 네트워크 학습 장치는 양자화된 웨이트 W1을 기초로 학습 데이터(1001)로부터 액티베이션 맵 A1을 출력할 수 있다.
이전 이터레이션(iteration)에서 뉴럴 네트워크 학습 장치는 제2 표현 비트수 NA1, 액티베이션 맵 A1의 하한 aA1및 상한 bA1을 메모리에 저장할 수 있다. 단계(1015)에서 뉴럴 네트워크 학습 장치는 제2 표현 비트수 NA1, 액티베이션 맵 A1의 하한 aA1및 상한 bA1을 메모리로부터 불러올 수 있다.
단계(1005)에서, 뉴럴 네트워크 학습 장치는 액티베이션 맵 A1을 양자화할 수 있다. 뉴럴 네트워크 학습 장치는 제2 표현 비트수 NA1, 하한 aA1및 상한 bA1을 이용하여 액티베이션 맵 A1을 양자화할 수 있다. 양자화된 액티베이션 맵 A1은 제2레이어(1007)로 전달될 수 있다.
이전 이터레이션(iteration)에서 뉴럴 네트워크 학습 장치는 양자화된 웨이트 W2을 표현하기 위한 하한 aw2, 상한 bw2및 표현 비트수 Nw2을 메모리에 저장할 수 있다. 단계(1027)에서, 뉴럴 네트워크 학습 장치는 제2레이어의 표현 비트수 Nw2, 제2 레이어(1007)의 웨이트 W2의 하한 aw2및 상한 bw2을 메모리로부터 불러올 수 있다.
단계(1025)에서 뉴럴 네트워크 학습 장치는 양자화된 웨이트 W2을 획득할 수 있다. 뉴럴 네트워크 학습 장치는 하한 aw2및 상한 bw2의 범위에서 제2레이어의 표현 비트수 Nw2로 웨이트 W2을 양자화할 수 있다. 뉴럴 네트워크 학습 장치는 양자화된 웨이트 W2을 기초로 양자화된 액티베이션 맵 A1로부터 액티베이션 맵 A2를 출력할 수 있다.
이전 이터레이션(iteration)에서 뉴럴 네트워크 학습 장치는 제2 표현 비트수 NA2를 기초로 액티베이션 맵 A2의 하한 aA2및 상한 bA2을 메모리에 저장할 수 있다. 단계(1019)에서 뉴럴 네트워크 학습 장치는 제2 표현 비트수 NA2를 기초로 액티베이션 맵 A2의 하한 aA2및 상한 bA2을 메모리로부터 불러올 수 있다.
단계(1009)에서, 뉴럴 네트워크 학습 장치는 액티베이션 맵 A2을 양자화할 수 있다. 뉴럴 네트워크 학습 장치는 제2 표현 비트수 NA2, 하한 aA2및 상한 bA2을 이용하여 액티베이션 맵 A2을 양자화할 수 있다. 양자화된 액티베이션 맵 A2은 제3레이어로 전달될 수 있다.
이와 같이, 뉴럴 네트워크의 복수의 레이어 각각에 대하여 제1표현 비트수, 제2표현 비트수, 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트가 학습될 수 있다. 단계(1011)에서 뉴럴 네트워크 학습 장치는 학습 데이터(1001)를 이용하여 학습된 뉴럴 네트워크의 손실값을 출력할 수 있다. 여기서, 손실값은 학습된 양자화 파라미터의 정확도 및 성능과 관련된 지표일 수 있다.
도 11a는 일 실시예에 따른 뉴럴 네트워크 학습 장치에 의한 웨이트 양자화에 사용되는 포워딩 함수를 도시한 그래프이다.
일 실시예에 따르면, 웨이트 양자화 파라미터는 복수의 레이어 각각의 웨이트의 절대값의 제3 임계값 및 제4 임계값을 포함할 수 있다. 여기서, 제1표현 비트수로 표현되는 웨이트의 상한은 제3 임계값으로 지칭되고, 웨이트의 하한은 제4 임계값으로 지칭될 수 있다.
웨이트는 완전 정밀도 값(full-precision values)일 수 있다. 웨이트는 고-비트로 표현될 수 있다. 양자화에 의해, 웨이트는 고정 소수점 정수(fixed-point integer) 및 스케일 팩터(scale factor)로 표현되는 이산 값들의 집합으로 근사화될 수 있다. 예를 들어, 양의 실수 값
Figure pat00007
으로부터 양자화된 값
Figure pat00008
는 수학식 19에 따라 계산될 수 있다.
Figure pat00009
수학식 19에서,
Figure pat00010
은 양자화 레벨을 나타내고,
Figure pat00011
는 소수점 이하의 값을 버리는 연산을 나타낸다. 표현 비트수 Nw가 주어졌을 때, 양자화 레벨 qw
Figure pat00012
로 정의될 수 있다.
도 11a을 참조하면, Nw가 3인 경우 웨이트 양자화의 포워딩 과정이 도시된다. 웨이트 w로부터 점선으로 표시되는 함수
Figure pat00013
가 계산되고,
Figure pat00014
로부터 범위가 클리핑(clipping)된 함수
Figure pat00015
가 계산되고,
Figure pat00016
로부터 양자화된 웨이트
Figure pat00017
가 계산될 수 있다.
먼저, 인터벌 (a, b)가 결정된 경우,
Figure pat00018
는 수학식 1, 수학식 2 및 수학식 3에 의해 계산될 수 있다. 여기서, a는 제4 임계값을 나타내고, b는 제3 임계값을 나타낸다.
Figure pat00019
수학식 1은
Figure pat00020
의 기울기를 나타낸다.
Figure pat00021
수학식 2는
Figure pat00022
의 y절편을 나타낸다.
Figure pat00023
함수
Figure pat00024
는 수학식 3에 의해 계산될 수 있다.
Figure pat00025
Figure pat00026
Figure pat00027
를 인터벌
Figure pat00028
로 클리핑한 함수를 나타낸다.
Figure pat00029
양자화된 웨이트
Figure pat00030
는 수학식 5에 의해 계산될 수 있다. 여기서, qs는 양자화 레벨을 나타낸다.
도 11b는 일 실시예에 따른 뉴럴 네트워크 학습 장치에 의한웨이트 양자화에 사용되는 백워드 함수를 도시한 그래프이다.
양자화로 인해 백워드 과정 또는 역전파 과정에서 에러는 역전파되지 않는다. 이러한 문제를 해결하기 위해, 양자화 함수는 구간 선형 함수(piecewise linear function)로서 근사될 수 있다. 도 11b를 참조하면, 구간 선형 함수
Figure pat00031
는 점선으로 표시된다.
구간 선형 함수
Figure pat00032
의 기울기는 수학식 6에 의해 계산될 수 있다.
Figure pat00033
구간 선형 함수
Figure pat00034
의 y절편은 수학식 7에 의해 계산될 수 있다.
Figure pat00035
a에 대한 구간 선형 함수
Figure pat00036
의 기울기의 그레디언트는 수학식 8에 의해 계산될 수 있다.
Figure pat00037
a에 대한 구간 선형 함수
Figure pat00038
의 y절편의 그레디언트는 수학식 9에 의해 계산될 수 있다.
Figure pat00039
b에 대한 구간 선형 함수
Figure pat00040
의 기울기의 그레디언트는 수학식 10에 의해 계산될 수 있다.
Figure pat00041
b에 대한 구간 선형 함수
Figure pat00042
의 y절편의 그레디언트는 수학식 11에 의해 계산될 수 있다.
Figure pat00043
결과적으로, 구간 선형 함수
Figure pat00044
는 수학식 12로 표현될 수 있다.
Figure pat00045
수학식 12로 표현되는 구간 선형 함수
Figure pat00046
의 웨이트 W에 대한 그레디언트는 수학식 13과 같다.
Figure pat00047
구간 선형 함수
Figure pat00048
의 a에 대한 그레디언트는 수학식 14에 의해 계산될 수 있다.
Figure pat00049
구간 선형 함수
Figure pat00050
의 b에 대한 그레디언트는 수학식 15에 의해 계산될 수 있다.
Figure pat00051
수학식 13, 수학식 14 및 수학식 15에 의해 계산된 그레디언트들을 이용하여 양자화 과정에서 발생한 에러가 역전파될 수 있다. 이를 통해, 인터벌 (a, b)이 갱신될 수 있다.
도 12는 일 실시예에 따른 뉴럴 네트워크 학습 장치에 의한 액티베이션 맵의 양자화에 사용되는 함수를 도시한 그래프이다.
일 실시예에 따르면, 액티베이션 양자화 파라미터는 복수의 레이어 각각의 액티베이션 맵의 제1 임계값 및 제2 임계값을 포함할 수 있다. 여기서, 제2표현 비트수로 표현되는 액티베이션 맵의 상한은 제1 임계값으로 지칭되고, 액티베이션 맵의 하한은 제2 임계값으로 지칭될 수 있다.
액티베이션 맵의 양자화 과정은 웨이트의 양자화 과정과 유사하다. 도 12를 참조하면, Nw가 2인 경우 액티베이션 맵 양자화의 포워딩 과정이 도시된다. 수학식 16과 같이, 액티베이션 맵A로부터 함수
Figure pat00052
가 계산되고,
Figure pat00053
로부터 범위가 클리핑(clipping)된 함수
Figure pat00054
가 계산되고,
Figure pat00055
로부터 양자화된 액티베이션 맵
Figure pat00056
가 계산될 수 있다.
Figure pat00057
인터벌 (a', b')이 결정된 경우, 수학식 17에 따라
Figure pat00058
로부터 범위가 클리핑된 함수
Figure pat00059
가 계산될 수 있다. 여기서, a'은 제2 임계값을 나타내고, b'은 제1 임계값을 나타낸다.
Figure pat00060
수학식 18에 따라
Figure pat00061
로부터 양자화된 액티베이션 맵
Figure pat00062
가 계산될 수 있다.
Figure pat00063
액티베이션 맵의 양자화로 인한 에러의 역전파 과정도 웨이트의 역전파 과정과 유사하게 진행될 수 있다. 이를 통해, 인터벌 (a', b')가 갱신될 수 있다.
도 13a는 다른 실시예에 따른 뉴럴 네트워크 학습 장치에 의한 웨이트 양자화에 사용되는 포워딩 함수를 도시한 그래프이다.
다른 실시예에 따르면, 웨이트의 분포 상태는 상한 및 하한 대신에 중간값과 최대값 및 최소값의 차이의 반으로 표현될 수 있다. 여기서, 제1표현 비트수로 표현되는 웨이트의 절대값의 중간값은 제1중간값으로 지칭되고, 웨이트의 절대값의 최대값 및 최소값의 차이의 반은 제1차이값으로 지칭될 수 있다. 웨이트 양자화 파라미터는 제1 레이어의 액티베이션 맵의 제1중간값 및 제1차이값을 포함할 수 있다.
양자화된 웨이트
Figure pat00064
Figure pat00065
로부터 계산되고,
Figure pat00066
Figure pat00067
으로부터 계산될 수 있다. 먼저,
Figure pat00068
Figure pat00069
으로부터 수학식 20에 따라 계산될 수 있다. 도 13a를 참조하면, Nw가 3인 경우의
Figure pat00070
가 점선으로 도시된다.
Figure pat00071
웨이트의 양수 값들은 양의 인터벌 (cw-dw, cw+dw)을 가질 수 있다. 여기서, cw는 제1중간값을 의미하고, dw는 제1차이값을 의미할 수 있다. 0보다 큰 웨이트는 양의 인터벌 (cw-dw, cw+dw) 내에서 qw레벨로 균일하게 양자화될 수 있다. 0보다 작은 웨이트는 음의 인터벌 (-cw-dw, -cw+dw) 내에서 qw레벨로 균일하게 양자화될 수 있다. 여기서, m은 웨이트에 대한 인터벌의 하한을 의미하고, M은 웨이트에 대한 인터벌의 상한을 의미한다.
Figure pat00072
수학식 20의 m, M,
Figure pat00073
,
Figure pat00074
는 수학식 21에 따라 정의될 수 있다. 여기서,
Figure pat00075
Figure pat00076
의 기울기를 나타낸다. 양자화된 웨이트
Figure pat00077
는 수학식 22에 따라 계산될 수 있다.
Figure pat00078
도 13b는 다른 실시예에 따른 뉴럴 네트워크 학습 장치에 의한 웨이트 양자화에 사용되는 백워드 함수를 도시한 그래프이다.
도 13b를 참조하면, Nw가 3인 경우의구간 선형 함수
Figure pat00079
는 점선으로 표시된다. 구간 선형 함수
Figure pat00080
는 수학식 23에 의해 정의될 수 있다.
Figure pat00081
Figure pat00082
, cw및 dw각각에 대한 구간 선형 함수
Figure pat00083
의 그레디언트(gradient)는 수학식 24, 수학식 25 및 수학식 26에 의해 각각 계산될 수 있다.
Figure pat00084
Figure pat00085
Figure pat00086
도 14는 일 실시예에 따른 뉴럴 네트워크 학습 장치에 의한 액티베이션 맵의 양자화에 사용되는 백워드 함수를 도시한 그래프이다.
다른 실시예에 따르면, 액티베이션 맵의 분포 상태는 상한 및 하한 대신에 중간값과 상한 및 하한의 차이의 반으로 표현될 수 있다. 여기서, 제2표현 비트수로 표현되는 액티베이션 맵의 중간값은 제1중간값으로 지칭되고, 액티베이션 맵의 절대값의 상한 및 하한의 차이의 반은 제1차이값으로 지칭될 수 있다. 액티베이션 양자화 파라미터는 제2 레이어의 웨이트의 절대값의 제1중간값 및 제1차이값을 포함할 수 있다.
액티베이션 맵은 웨이트와 유사한 과정으로 양자화될 수 있다. 다만, 액티베이션 맵은 릴루 함수의 출력이므로 양의 값만 가질 수 있다. 각 레이어마다 액티베이션 맵에 대한 cx, dx가 결정될 수 있다. 여기서, cx는 제1중간값이고, dx는 제2차이값을 나타낼 수 있다. 액티베이션 맵의 포워딩 과정은 웨이트의 포워딩 과정과 동일하므로 생략한다.
도 14에 따르면, Nw가 2인 경우의 액티베이션 맵의 백워드 과정이 도시된다. 양자화된 액티베이션 맵의 에러를 역전파하기 위하여 근사 함수
Figure pat00087
가 수학식 30으로 정의된다. 근사 함수
Figure pat00088
은 도 14의 점선에 해당한다.
Figure pat00089
여기서, m, M,
Figure pat00090
,
Figure pat00091
는 수학식 31로 정의된다. 여기서, m은 액티베이션 맵에 대한 인터벌의 하한을 의미하고, M은 액티베이션 맵에 대한 인터벌의 상한을 의미한다.
Figure pat00092
Figure pat00093
에 대한 x, cx및 dx각각의 그레디언트는 수학식 32, 수학식 33 및 수학식 34와 같이 계산될 수 있다.
Figure pat00094
Figure pat00095
에 대한 x의 그레디언트는 수학식 32에 의해 계산될 수 있다.
Figure pat00096
Figure pat00097
에 대한 cx의 그레디언트는 수학식 33에 의해 계산될 수 있다.
Figure pat00098
Figure pat00099
에 대한 dx의 그레디언트는 수학식 34에 의해 계산될 수 있다.
도 15는 제1 실시예에 따른 뉴럴 네트워크의 학습 방법의 동작을 도시한 순서도이다.
제1 실시예예 따르면, 뉴럴 네트워크 학습 장치는 표현 비트수의 학습과 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트를 단계적으로 최적화할 수 있다. 일 실시예예 따르면, 뉴럴 네트워크 학습 장치는 표현 비트수의 학습을 수행한 후에, 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트를 학습할 수 있다.
일 실시예예 따르면, 단계(1510)에서 뉴럴 네트워크 학습 장치는 액티베이션 맵을 출력하는 복수의 레이어를 포함하는 제1 뉴럴 네트워크의 복수의 레이어 각각의 웨이트의 제1표현 비트수, 복수의 레이어 각각의 액티베이션 맵의 제2표현 비트수, 복수의 레이어 각각의 웨이트의 웨이트 양자화 파라미터 및 복수의 레이어 각각의 액티베이션 맵의 액티베이션 양자화 파라미터를 초기화할 수 있다.
일 실시예예 따르면, 단계(1520)에서 뉴럴 네트워크 학습 장치는 이전 이터레이션에서 계산된 정확도를 기초로 제1 표현 비트수 및 제2 표현 비트수를 갱신할 수 있다.
일 실시예예 따르면, 단계(1530)에서 뉴럴 네트워크 학습 장치는 학습 데이터를 이용하여 웨이트, 갱신된 제1 표현 비트수, 웨이트 양자화 파라미터, 갱신된 제2 표현 비트수 및 액티베이션 양자화 파라미터를 기초로 손실값을 계산할 수 있다.
일 실시예에 따르면, 단계(1540)에서 뉴럴 네트워크 학습 장치는 손실값을 기초로 웨이트, 웨이트 양자화 파라미터 및 액티베이션 양자화 파라미터를 갱신할 수 있다. 손실값이 이전에 계산된 손실값보다 작은 경우에, 뉴럴 네트워크 학습 장치는 웨이트 양자화 파라미터및 액티베이션 양자화 파라미터를 갱신할 수 있다. 뉴럴 네트워크 학습 장치는 손실값이 작아지는 방향으로 뉴럴 네트워크를 학습시킬 수 있다.
일 실시예에 따르면, 단계(1550)에서 뉴럴 네트워크 학습 장치는 갱신된 웨이트, 갱신된 웨이트 양자화 파라미터 및 갱신된 액티베이션 양자화 파라미터를 기초로 유효성 데이터를 이용하여 다음 이터레이션에서 사용될 정확도를 계산할 수 있다. 이런 과정이 반복됨으로써 표현 비트수, 웨이트 및 양자화 파라미터는 최적화될 수 있다.
도 16은 제2 실시예에 따른 뉴럴 네트워크의 학습 방법의 동작을 도시한 순서도이다.
제2 실시예에 따르면, 뉴럴 네트워크 학습 장치는 표현 비트수의 학습을 양자화 파라미터의 학습에 정합시킬 수 있다. 뉴럴 네트워크 학습 장치는 표현 비트수와 양자화 파라미터를 함께 학습시킬 수 있다. 뉴럴 네트워크 학습 장치는 한 번의 학습 이터레이션(iteration) 동안 표현 비트수와 양자화 파라미터를 함께 학습시킬 수 있다.
일 실시예에 따르면, 단계(1610)에서 뉴럴 네트워크 학습 장치는 뉴럴 네트워크를 구성하는 현재 레이어의 웨이트, 웨이트에 관한 제1 표현 비트수 및 웨이트 양자화 파라미터, 현재 레이어로부터 출력되는 출력 액티베이션 맵에 관한 제2 표현 비트수 및 액티베이션 양자화 파라미터를 초기화할 수 있다.
일 실시예에 따르면, 단계(1620)에서 뉴럴 네트워크 학습 장치는 학습 데이터를 이용하여 웨이트, 제1 표현 비트수, 웨이트 양자화 파라미터, 제2 표현 비트수 및 액티베이션 양자화 파라미터를 기초로 손실값(Loss)을 계산할 수 있다. 제1 표현 비트수, 제2 표현 비트수, 웨이트 양자화 파라미터 및 액티베이션 양자화 파라미터를 기초로 학습 데이터를 이용하여 정확도를 계산하고, 정확도, 제1표현 비트수 및 제2표현 비트수를 기초로 손실값을 계산할 수 있다. 여기서, 손실값은 정확도 및 성능을 반영할 수 있다. 성능은 계산 속도 또는 요구되는 메모리와 관련된 성능을 나타내는 지표를 의미할 수 있다.
일 실시예에 따르면, 단계(1630)에서 뉴럴 네트워크 학습 장치는 손실값을 기초로 웨이트, 제1 표현 비트수, 웨이트 양자화 파라미터, 제2 표현 비트수 및 액티베이션 양자화 파라미터를 갱신할 수 있다. 손실값이나 정확도가 조건을 만족하지 못하는 경우에, 상기 과정은 반복될 수 있다.
도 17은 제3 실시예에 따른 뉴럴 네트워크의 학습 방법의 일례의 동작을 도시한 순서도이다.
제3 실시예에 따르면, 뉴럴 네트워크 학습 장치는 양자화 파라미터를 고정한 상태에서 제1표현 비트수 및 제2표현 비트수를 학습시킬 수 있다.
단계(1710)에서, 뉴럴 네트워크 학습 장치는 기학습된 제1 뉴럴 네트워크를 구성하는 현재 레이어 의 웨이트에 관한 제1 표현 비트수 및 현재 레이어로부터 출력되는 출력 액티베이션 맵에 관한 제2 표현 비트수를 초기화할 수 있다.
단계(1720)에서, 뉴럴 네트워크 학습 장치는 학습 데이터를 이용하여 기학습된 제1 뉴럴 네트워크, 제1 표현 비트수 및 제2 표현 비트수를 기초로 손실값을 계산할 수 있다.
단계(1730)에서, 뉴럴 네트워크 학습 장치는 손실값을 기초로 제1 표현 비트수 및 제2 표현 비트수를 갱신할 수 있다.
도 18은 제4 실시예에 따른 뉴럴 네트워크의 학습 방법의 다른 일례의 동작을 도시한 순서도이다.
제4 실시예에 따르면, 뉴럴 네트워크 학습 장치는 표현 비트수를 고정시킨 상태에서 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트를 학습시킬 수 있다.
단계(1810)에서, 뉴럴 네트워크 학습 장치는 뉴럴 네트워크를 구성하는 현재 레이어의 웨이트, 웨이트에 관한 웨이트 양자화 파라미터 및 현재 레이어로부터 출력되는 출력 액티베이션 맵에 관한 액티베이션 양자화 파라미터를 초기화할 수 있다.
단계(1820)에서, 뉴럴 네트워크 학습 장치는 학습 데이터를 이용하여 웨이트에 관한 기학습된 제1 표현 비트수, 출력 액티베이션 맵에 관한 기학습된 제2 표현 비트수, 웨이트, 웨이트 양자화 파라미터 및 액티베이션 양자화 파라미터를 기초로 손실값을 계산할 수 있다.
단계(1830)에서, 뉴럴 네트워크 학습 장치는 손실값을 기초로 웨이트, 웨이트 양자화 파라미터 및 액티베이션 양자화 파라미터를 갱신할 수 있다.
도 19은 뉴럴 네트워크의 학습 방법의 알고리즘의 일례를 도시한 도면이다.
도 19를 참조하면, 뉴럴 네트워크 학습 장치는 표현 비트수와 양자화 파라미터를 단계적으로 학습하는 강화학습 알고리즘을 이용하여 뉴럴 네트워크를 학습시킬 수 있다.
일 실시예예 따르면, 단계(1910)에서 뉴럴 네트워크 학습 장치는 제1표현 비트수 및 제2표현 비트수를 초기화할 수 있다. 예를 들어, 제1표현 비트수와 제2표현 비트수는 뉴럴 네트워크의 각 레이어 별로 동일하게 초기화될 수 있다. 예를 들어, 제1표현 비트수 및 제2표현 비트수는 8 비트로 초기화될 수 있다. 다만, 이는 예시에 불과하며, 완전 정밀도 값에 대응하는 최초의 고-비트의 표현 비트수 보다 작은 임의의 표현 비트수로 제1표현 비트수 및 제2표현 비트수는 초기화될 수도 있다.
일 실시예예 따르면, 단계(1920)에서 뉴럴 네트워크 학습 장치는 웨이트 양자화 파라미터, 액티베이션 양자화 파라미터 및 웨이트를 함께 학습시킬 수 있다. 뉴럴 네트워크 학습 장치는 학습 데이터를 제1레이어에 입력하여 액티베이션 맵을 출력할 수 있다. 학습 데이터와 제1레이어의 양자화된 웨이트에 대하여 컨벌루션 연산이 수행될 수 있다. 출력된 액티베이션 맵은 제2표현 비트수 및 액티베이션 양자화 파라미터를 기초로 양자화될 수 있다.
일 실시예예 따르면, 단계(1930)에서 뉴럴 네트워크 학습 장치는 유효성 데이터를 이용하여 손실값을 계산할 수 있다. 일 실시예예 따르면, 단계(1940)에서 뉴럴 네트워크 학습 장치는 손실값이 임계값 미만인지를 판단할 수 있다.
일 실시예예 따르면, 손실값이 임계값 미만이라고 판단된 경우, 단계(1950)에서 뉴럴 네트워크 학습 장치는 뉴럴 네트워크의 상태 및 보상을 계산할 수 있다. 상태는 웨이트 양자화 파라미터및 액티베이션 양자화 파라미터 각각의 양자화 에러, 복수의 레이어 각각의 웨이트의 분포 및 액티베이션 맵의 분포를 포함하고, 보상은 손실값을 포함할 수 있다.
일 실시예예 따르면, 단계(1960)에서 뉴럴 네트워크 학습 장치는 제1표현 비트수 및 제2표현 비트수를 갱신할 수 있다. 뉴럴 네트워크 학습 장치는 상태 및 보상을 기초로 제1표현 비트수 및 제2표현 비트수를 갱신할 수 있다. 예를 들어, 뉴럴 네트워크 학습 장치는 보상에 포함된 손실값이 작아지는 방향으로 제1표현 비트수 및 제2표현 비트수를 최적화할 수 있다.
일 실시예예 따르면, 손실값이 임계값 이상이라고 판단된 경우, 단계(1940)에서 뉴럴 네트워크 학습 장치는 뉴럴 네트워크의 학습을 종료할 수 있다. 뉴럴 네트워크는 각 레이어에 대한 제1표현 비트수 및 웨이트 양자화 파라미터를 이용하여 각 레이어 별로 웨이트를 양자화할 수 있다. 뉴럴 네트워크는 양자화된 웨이트, 제2 표현 비트수 및 액티베이션 양자화 파라미터를 파라미터로서 저장할 수 있다.
도 20은 일 실시예에 따른 뉴럴 네트워크의 학습 장치의 전체 구성을 도시한 도면이다.
일 실시예예 따르면, 뉴럴 네트워크 학습 장치(2000)는 적어도 하나의 프로세서(2001) 및 프로세서(2001)에 의해 실행될 인스트럭션들(instructions)및 액티베이션 맵을 출력하는 복수의 레이어를 포함하는 제1뉴럴 네트워크를 저장하는 적어도 하나의 메모리(2003)를 포함할 수 있다. 도 5의 비트 결정부(510) 및 뉴럴 네트워크 학습부(520)는 프로세서(2001) 또는 메모리(2003)를 이용하여 구현될 수 있다. 예를 들어, 비트 결정부(510) 및 뉴럴 네트워크 학습부(520)는 범용 프로세서(2001) 및 하나의 메모리(2003)에 할당된 저장 공간에 의해 구축될 수 있다. 다른 예로, 비트 결정부(510) 및 뉴럴 네트워크 학습부(520)는 각각의 프로세서가 할당될 수 있다. 비트 결정부(510) 및 뉴럴 네트워크 학습부(520)는 각각 프로세서(2001)의 일종인FPGA(field programmable gate array)에 의해 하드웨어적으로 구축될 수도 있다.
프로세서(2001)는 인스트럭션들을 이용하여 제1 뉴럴 네트워크의 복수의 레이어 각각의 웨이트의 제1표현 비트수, 복수의 레이어 각각의 액티베이션 맵의 제2표현 비트수, 복수의 레이어 각각의 웨이트의 웨이트 양자화 파라미터및 복수의 레이어 각각의 액티베이션 맵의 액티베이션 양자화 파라미터를 초기화할 수 있다.
일 실시예예 따르면, 프로세서(2001)는 제1학습 데이터를 이용하여 제1표현 비트수 및 제2표현 비트수를 학습할 수 있다. 프로세서(2001)는 학습된 제1 표현 비트수 및 학습된 제2표현 비트수를 기초로 제2학습 데이터를 이용하여 웨이트 양자화 파라미터및 액티베이션 양자화 파라미터를 학습할 수 있다.
다른 실시예에 따르면, 프로세서(2001)는 학습 데이터를 이용하여 제1표현 비트수, 제2표현 비트수, 웨이트 양자화 파라미터및 액티베이션 양자화 파라미터를 동시에 학습할 수도 있다.
도 21은 일 실시예에 따른 데이터 처리 장치의 용례를 설명하기 위한 도면이다.
도 21에 따르면, 데이터 처리 장치(2100)는 뉴럴 네트워크(2110)를 위한 데이터를 저 비트 폭으로 경량화하여 표현하고, 경량화된 데이터를 이용하여 뉴럴 네트워크(2110)의 동작을 처리할 수 있다. 예를 들어, 뉴럴 네트워크(2110)의 동작은 입력 영상 내 객체를 인식하거나 인증하는 것을 포함할 수 있다. 예를 들어, 뉴럴 네트워크(2110)의 동작은 입력된 데이터로부터 음성 인식을 수행하는 것을 포함할 수 있다. 예를 들어, 뉴럴 네트워크(2110)의 동작은 입력 데이터를 기초로 자율 주행을 수행하거나 로봇 제어를 수행하는 것을 포함할 수 있다. 다만, 이들은 예시에 불과하며, 뉴럴 네트워크를 사용하는 다양한 분야에 데이터 처리 장치(2100)가 사용될 수 있다.
뉴럴 네트워크(2110)는 복수의 레이어들을 포함할 수 있다. 복수의 레이어들은 입력 레이어, 적어도 하나의 히든 레이어, 및 출력 레이어를 포함할 수 있다. 제1 레이어(2111) 및 제2 레이어(2112)는 상기 복수의 레이어들 중 적어도 일부일 수 있다. 도 21에는 두 레이어들(2111, 2112)이 도시되어 있으나, 이는 설명의 편의를 위한 것으로, 뉴럴 네트워크(2110)는 두 레이어들(2111, 2112) 외에 더 많은 레이어들을 포함할 수 있다.
도 21에서 그래프(2131)는 입력 영상(2130)의 픽셀 값들의 데이터 분포를 나타내고, 그래프(2141)는 입력 영상(2140)의 픽셀 값들의 데이터 분포를 나타내고, 그래프(2151)는 입력 영상(2150)의 픽셀 값들의 데이터 분포를 나타낸다. 입력 영상(2130)은 상대적으로 작은 값들의 데이터를 포함하고, 입력 영상(2150)은 상대적으로 큰 값들의 데이터를 포함한다. 데이터 처리 장치(2100)는 뉴럴 네트워크(2110)를 이용하여 입력 영상들(2130 내지 2150)을 각각 처리할 때, 입력 영상들(2130 내지 2150)에 관해 각각 다른 경량화 포맷을 적응적으로 설정할 수 있다. 예를 들어, 처리 장치(2100)는 입력 영상(2130)과 같이 작은 값의 데이터 집합에 관해서는 높은 경량화 포맷을 적용할 수 있고, 입력 영상(2150)과 같이 큰 값의 데이터 집합에 관해서는 낮은 경량화 포맷을 적용할 수 있다.
실시예들은 스마트폰 등의 제한된 임베디드 환경에서, 처리 속도나 메모리 활용을 극대화하여 인식 및 인증 기술을 효과적으로 구현할 수 있다. 실시예들은 차량 또는 로봇 등의 제한된 컴퓨팅 환경에서, 처리 속도 나 메모리 활용을 극대화하여 자율 주행 또는 로봇 제어 기술을 효과적으로 구현할 수 있다. 또한, 실시예들은 딥 뉴럴 네트워크의 성능 저하를 최소화하면서 딥 뉴럴 네트워크를 고속화할 수 있고, 효과적인 하드웨어 가속기의 구조를 설계하는데 활용될 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 컴퓨터 판독 가능 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.

Claims (26)

  1. 뉴럴 네트워크를 이용한 데이터 처리 방법에 있어서,
    현재 레이어로 입력 액티베이션 맵(Activation map)을 입력하는 단계;
    상기 입력 액티베이션 맵과 상기 현재 레이어의 제1 표현 비트수로 양자화된 웨이트(weight) 간에 컨볼루션 연산을 수행하여 출력 액티베이션 맵을 출력하는 단계;및
    액티베이션 양자화(quantization) 파라미터를 이용하여 상기 출력 액티베이션 맵을 제2표현 비트수로 양자화하여 양자화된 액티베이션 맵을 출력하는 단계
    를 포함하는, 데이터 처리 방법.
  2. 제1항에 있어서,
    상기 액티베이션 양자화 파라미터는 상기 출력 액티베이션 맵에 관한 제1 임계값 및 제2 임계값을 포함하고,
    상기 제1 임계값은 상기 출력 액티베이션 맵에 대한 액티베이션 맵 구간의 상한을 나타내고, 상기 제2 임계값은 상기 액티베이션 맵 구간의 하한을 나타내는,
    데이터 처리 방법.
  3. 제1항에 있어서,
    상기 액티베이션 양자화 파라미터는 상기 출력 액티베이션 맵에 대한 제1중간값 및 제1차이값을 포함하고, 상기 제1차이값은 제1 임계값 및 제2 임계값의 차이의 반을 나타내고, 상기 제1 중간값은 상기 제1 임계값 및 상기 제2 임계값의 중간을 나타내고, 상기 제1 임계값은 상기 출력 액티베이션 맵에 대한 액티베이션 맵 구간의 상한을 나타내고, 상기 제2 임계값은 상기 액티베이션 맵 구간의 하한을 나타내는,
    데이터 처리 방법.
  4. 제1항에 있어서,
    상기 출력 액티베이션 맵을 출력하는 단계는, -
    상기 입력 액티베이션 맵과 상기 양자화된 웨이트에 대하여 멀티플리케이션(multiplication) 연산 및 어큐뮬레이션(accumulation) 연산을 수행하거나 또는 비트-와이즈(bit-wise) 연산을 수행함으로써 상기 컨벌루션 연산을 수행하는,
    , 데이터 처리 방법.
  5. 제1항에 있어서,
    상기 제1 표현 비트수와 상기 제2표현 비트수는 동일한,
    데이터 처리 방법.
  6. 뉴럴 네트워크를 구성하는 현재 레이어의 웨이트, 상기 웨이트에 관한 제1 표현 비트수 및 웨이트 양자화 파라미터, 상기 현재 레이어로부터 출력되는 출력 액티베이션 맵에 관한 제2 표현 비트수 및 액티베이션 양자화 파라미터를 초기화하는 단계;
    학습 데이터를 이용하여 상기 웨이트, 상기 제1 표현 비트수, 상기 웨이트 양자화 파라미터, 상기 제2 표현 비트수 및 상기 액티베이션 양자화 파라미터를 기초로 손실값(Loss)을 계산하는 단계; 및
    상기 손실값을 기초로 상기 웨이트, 상기 제1 표현 비트수, 상기 웨이트 양자화 파라미터, 상기 제2 표현 비트수 및 상기 액티베이션 양자화 파라미터를 갱신하는 단계
    를 포함하는, 뉴럴 네트워크의 학습 방법.
  7. 제6항에 있어서,
    상기 손실값을 계산하는 단계는,
    상기 제1 표현 비트수 및 상기 웨이트 양자화 파라미터를 기초로 상기 웨이트를 양자화하는 단계;
    상기 양자화된 웨이트와 상기 현재 레이어로 입력되는 입력 액티베이션 맵에 대해 컨볼루션 연산을 수행하여 상기 출력 액티베이션 맵을 출력하는 단계;
    상기 제2 표현 비트수 및 상기 액티베이션 양자화 파라미터를 이용하여 상기 출력 액티베이션 맵을 양자화하는 단계; 및
    상기 양자화된 액티베이션 맵을 기초로 손실값을 계산하는 단계
    를 포함하는, 뉴럴 네트워크의 학습 방법.
  8. 제7항에 있어서,
    상기 액티베이션 양자화 파라미터는 상기 출력 액티베이션 맵에 관한 제1 임계값 및 제2 임계값을 포함하고,
    상기 웨이트 양자화 파라미터는 상기 웨이트의 절대값의 제3 임계값 및 제4 임계값을 포함하고,
    상기 제1 임계값은 상기 출력 액티베이션 맵에 대한 액티베이션 맵 구간의 상한을 나타내고, 상기 제2 임계값은 상기 액티베이션 맵 구간의 하한을 나타내고,
    상기 제3 임계값은 상기 웨이트의 절대값에 대한 웨이트 구간의 상한을 나타내고, 상기 제4 임계값은 상기 웨이트 구간의 하한을 나타내는,
    데이터 처리 방법.
  9. 제7항에 있어서,
    상기 액티베이션 양자화 파라미터는 상기 출력 액티베이션 맵에 대한 제1중간값 및 제1차이값을 포함하고, 상기 제1차이값은 제1 임계값 및 제2 임계값의 차이의 반을 나타내고, 상기 제1 중간값은 상기 제1 임계값 및 상기 제2 임계값의 중간을 나타내고, 상기 제1 임계값은 상기 출력 액티베이션 맵에 대한 액티베이션 맵 구간의 상한을 나타내고, 상기 제2 임계값은 상기 액티베이션 맵 구간의 하한을 나타내고,
    상기 웨이트 양자화 파라미터는 상기 현재 레이어의 웨이트의 절대값의 제2중간값 및 제2차이값을 포함하고, 상기 제2 차이값은 제3 임계값 및 제4 임계값의 차이의 반을 나타내고, 상기 제2 중간값은 상기 제3 임계값 및 상기 제4 임계값의 중간을 나타내고, 상기 제3 임계값은 상기 웨이트의 절대값에 대한 웨이트 구간의 상한을 나타내고, 상기 제4 임계값은 상기 웨이트 구간의 하한을 나타내는,
    데이터 처리 방법.
  10. 제1 뉴럴 네트워크를 구성하는 현재 레이어의 웨이트, 상기 웨이트에 관한 제1 표현 비트수 및 웨이트 양자화 파라미터, 상기 현재 레이어로부터 출력되는 출력 액티베이션 맵에 관한 제2 표현 비트수 및 액티베이션 양자화 파라미터를 초기화하는 단계;
    이전 이터레이션(iteration)에서 계산된 정확도를 기초로 상기 제1 표현 비트수 및 상기 제2 표현 비트수를 갱신하는 단계;
    학습 데이터를 이용하여 상기 웨이트, 상기 갱신된 제1 표현 비트수, 상기 웨이트 양자화 파라미터, 상기 갱신된 제2 표현 비트수 및 상기 액티베이션 양자화 파라미터를 기초로 손실값을 계산하는 단계;
    상기 손실값을 기초로 상기 웨이트, 상기 웨이트 양자화 파라미터 및 상기 액티베이션 양자화 파라미터를 갱신하는 단계; 및
    상기 갱신된 웨이트, 상기 갱신된 웨이트 양자화 파라미터 및 상기 갱신된 액티베이션 양자화 파라미터를 기초로 유효성 데이터를 이용하여 다음 이터레이션에서 사용될 정확도를 계산하는 단계
    를 포함하는, 뉴럴 네트워크의 학습 방법.
  11. 제10항에 있어서,
    상기 제1표현 비트수 및 상기 제2표현 비트수를 갱신하는 단계는,
    상기 손실값을 기초로 상기 제1 표현 비트수 및 상기 제2표현 비트수를 미리 설정된 비트수만큼 증가시키거나 감소시키는,
    뉴럴 네트워크의 학습 방법.
  12. 제10항에 있어서,
    상기 제1표현 비트수 및 상기 제2표현 비트수를 갱신하는 단계는,
    상기 손실값을 기초로 제2뉴럴 네트워크를 이용하여 상기 제1표현 비트수 및 상기 제2표현 비트수를 갱신하는,
    뉴럴 네트워크의 학습 방법.
  13. 제10항에 있어서,
    상기 제1 표현 비트수 및 상기 제2 표현 비트수를 갱신하는 단계는,
    이전 이터레이션(iteration)에서 계산된 정확도를 포함하는 보상(reward) 및 상태(state)를 기초로 상기 제1 표현 비트수 및 상기 제2 표현 비트수를 갱신하고,
    상기 상태는 상기 액티베이션 양자화 파라미터및 상기 웨이트 양자화 파라미터 각각의 양자화 에러, 상기 웨이트의 분포 및 상기 출력 액티베이션 맵의 분포를 포함하고, 상기 보상은 상기 정확도를 포함하는,
    뉴럴 네트워크의 학습 방법.
  14. 제10항에 있어서,
    상기 액티베이션 양자화 파라미터는 상기 출력 액티베이션 맵에 관한 제1 임계값 및 제2 임계값을 포함하고,
    상기 웨이트 양자화 파라미터는 상기 웨이트의 절대값의 제3 임계값 및 제4 임계값을 포함하고,
    상기 제1 임계값은 상기 출력 액티베이션 맵에 대한 액티베이션 맵 구간의 상한을 나타내고, 상기 제2 임계값은 상기 액티베이션 맵 구간의 하한을 나타내고,
    상기 제3 임계값은 상기 웨이트의 절대값에 대한 웨이트 구간의 상한을 나타내고, 상기 제4 임계값은 상기 웨이트 구간의 하한을 나타내는,
    뉴럴 네트워크의 학습 방법.
  15. 제10항에 있어서,
    상기 액티베이션 양자화 파라미터는 상기 출력 액티베이션 맵에 대한 제1중간값 및 제1차이값을 포함하고, 상기 제1차이값은 제1 임계값 및 제2 임계값의 차이의 반을 나타내고, 상기 제1 중간값은 상기 제1 임계값 및 상기 제2 임계값의 중간을 나타내고, 상기 제1 임계값은 상기 출력 액티베이션 맵에 대한 액티베이션 맵 구간의 상한을 나타내고, 상기 제2 임계값은 상기 액티베이션 맵 구간의 하한을 나타내고,
    상기 웨이트 양자화 파라미터는 상기 현재 레이어의 웨이트의 절대값의 제2중간값 및 제2차이값을 포함하고, 상기 제2 차이값은 제3 임계값 및 제4 임계값의 차이의 반을 나타내고, 상기 제2 중간값은 상기 제3 임계값 및 상기 제4 임계값의 중간을 나타내고, 상기 제3 임계값은 상기 웨이트의 절대값에 대한 웨이트 구간의 상한을 나타내고, 상기 제4 임계값은 상기 웨이트 구간의 하한을 나타내는,
    뉴럴 네트워크의 학습 방법.
  16. 기학습된 제1 뉴럴 네트워크를 구성하는 현재 레이어의 웨이트에 관한 제1 표현 비트수 및 상기 현재 레이어로부터 출력되는 출력 액티베이션 맵에 관한 제2 표현 비트수를 초기화하는 단계;
    학습 데이터를 이용하여 기학습된 제1 뉴럴 네트워크, 상기 제1 표현 비트수 및 상기 제2 표현 비트수를 기초로 손실값을 계산하는 단계; 및
    상기 손실값을 기초로 상기 제1 표현 비트수 및 상기 제2 표현 비트수를 갱신하는 단계
    를 포함하는, 뉴럴 네트워크의 학습 방법.
  17. 제16항에 있어서,
    상기 제1표현 비트수 및 상기 제2표현 비트수를 갱신하는 단계는,
    상기 손실값을 기초로 상기 제1 표현 비트수 및 상기 제2표현 비트수를 미리 설정된 비트수만큼 증가시키거나 감소시키는,
    뉴럴 네트워크의 학습 방법.
  18. 제16항에 있어서,
    상기 제1표현 비트수 및 상기 제2표현 비트수를 갱신하는 단계는,
    상기 손실값을 기초로 제2뉴럴 네트워크를 이용하여 상기 제1표현 비트수 및 상기 제2표현 비트수를 갱신하는,
    뉴럴 네트워크의 학습 방법.
  19. 뉴럴 네트워크를 구성하는 현재 레이어의 웨이트, 상기 웨이트에 관한 웨이트 양자화 파라미터 및 상기 현재 레이어로부터 출력되는 출력 액티베이션 맵에 관한 액티베이션 양자화 파라미터를 초기화하는 단계;
    학습 데이터를 이용하여 상기 웨이트에 관한 기학습된 제1 표현 비트수, 상기 출력 액티베이션 맵에 관한 기학습된 제2 표현 비트수, 상기 웨이트, 상기 웨이트 양자화 파라미터 및 상기 액티베이션 양자화 파라미터를 기초로 손실값을 계산하는 단계; 및
    상기 손실값을 기초로 상기 웨이트, 상기 웨이트 양자화 파라미터 및 상기 액티베이션 양자화 파라미터를 갱신하는 단계
    를 포함하는, 뉴럴 네트워크의 학습 방법.
  20. 제19항에 있어서,
    상기 갱신된 웨이트 양자화 파라미터 및 상기 기학습된 제1표현 비트수를 기초로 상기 웨이트를 양자화하는 단계;및
    상기 양자화된 웨이트 및 상기 액티베이션 양자화 파라미터를 저장하는 단계
    를 포함하는, 뉴럴 네트워크 학습 방법.
  21. 제1항 내지 제20항 중 어느 하나의 항의 방법을 실행하기 위한 인스트럭션들을 저장하는 컴퓨터 판독 가능한 저장매체.
  22. 적어도 하나의 프로세서; 및
    상기 프로세서에 의해 실행될 인스트럭션들(instructions) 및 뉴럴 네트워크를 저장하는 적어도 하나의 메모리를 포함하고,
    상기 프로세서는, 상기 인스트럭션들을 이용하여,
    상기 뉴럴 네트워크에 포함된 현재 레이어로 입력 액티베이션 맵을 입력하고,
    상기 입력 액티베이션 맵과 상기 현재 레이어의 제1 표현 비트수로 양자화된 웨이트 간에 컨볼루션 연산을 수행하여 출력 액티베이션 맵을 출력하고,
    액티베이션 양자화 파라미터를 이용하여 상기 출력 액티베이션 맵을 제2 표현 비트수로 양자화하여 양자화된 액티베이션 맵을 출력하는,
    데이터 처리 장치.
  23. 적어도 하나의 프로세서; 및
    상기 프로세서에 의해 실행될 인스트럭션들 및 뉴럴 네트워크를 저장하는 적어도 하나의 메모리를 포함하고,
    상기 프로세서는, 상기 인스트럭션들을 이용하여,
    사용자의 얼굴 영상을 포함하는 입력 영상으로부터 입력 액티베이션 맵을 출력하고,
    상기 뉴럴 네트워크에 포함된 현재 레이어로 상기 입력 액티베이션 맵을 입력하고,
    상기 입력 액티베이션 맵과 상기 현재 레이어의 제1 표현 비트수로 양자화된 웨이트 간에 컨볼루션 연산을 수행하여 출력 액티베이션 맵을 출력하고,
    액티베이션 양자화 파라미터를 이용하여 상기 출력 액티베이션 맵을 제2 표현 비트수로 양자화하여 양자화된 액티베이션 맵을 출력하고,
    상기 양자화된 액티베이션 맵을 처리하여 상기 사용자를 인식하는,
    얼굴 인식 장치.
  24. 적어도 하나의 프로세서; 및
    상기 프로세서에 의해 실행될 인스트럭션들 및 뉴럴 네트워크를 저장하는 적어도 하나의 메모리를 포함하고,
    상기 프로세서는, 상기 인스트럭션들을 이용하여,
    단어를 나타내는 음성 데이터로부터 입력 액티베이션 맵을 출력하고,
    상기 뉴럴 네트워크에 포함된 현재 레이어로 입력 액티베이션 맵을 입력하고,
    상기 입력 액티베이션 맵과 상기 현재 레이어의 제1 표현 비트수로 양자화된 웨이트 간에 컨볼루션 연산을 수행하여 출력 액티베이션 맵을 출력하고,
    액티베이션 양자화 파라미터를 이용하여 상기 출력 액티베이션 맵을 제2 표현 비트수로 양자화하여 양자화된 액티베이션 맵을 출력하고,
    상기 양자화된 액티베이션 맵을 처리하여 상기 단어를 인식하는,
    음성 인식 장치.
  25. 적어도 하나의 프로세서; 및
    상기 프로세서에 의해 실행될 인스트럭션들 및 뉴럴 네트워크를 저장하는 적어도 하나의 메모리를 포함하고,
    상기 프로세서는, 상기 인스트럭션들을 이용하여,
    차량의 주행 환경 정보를 나타내는 입력 데이터로부터 입력 액티베이션 맵을 출력하고,
    상기 뉴럴 네트워크에 포함된 현재 레이어로 입력 액티베이션 맵을 입력하고,
    상기 입력 액티베이션 맵과 상기 현재 레이어의 제1 표현 비트수로 양자화된 웨이트 간에 컨볼루션 연산을 수행하여 출력 액티베이션 맵을 출력하고,
    액티베이션 양자화 파라미터를 이용하여 상기 출력 액티베이션 맵을 제2 표현 비트수로 양자화하여 양자화된 액티베이션 맵을 출력하고,
    상기 양자화된 액티베이션 맵을 처리하여 상기 차량의 주행을 제어하는
    자율 주행 제어 장치.
  26. 적어도 하나의 프로세서; 및
    상기 프로세서에 의해 실행될 인스트럭션들(instructions) 및 뉴럴 네트워크를 저장하는 적어도 하나의 메모리를 포함하고,
    상기 프로세서는, 상기 인스트럭션들을 이용하여,
    로봇의 환경 정보를 나타내는 입력 데이터로부터 입력 액티베이션 맵을 출력하고,
    상기 뉴럴 네트워크에 포함된 현재 레이어로 입력 액티베이션 맵을 입력하고,
    상기 입력 액티베이션 맵과 상기 현재 레이어의 제1 표현 비트수로 양자화된 웨이트 간에 컨볼루션 연산을 수행하여 출력 액티베이션 맵을 출력하고,
    액티베이션 양자화 파라미터를 이용하여 상기 출력 액티베이션 맵을 제2 표현 비트수로 양자화하여 양자화된 액티베이션 맵을 출력하고,
    상기 양자화된 액티베이션 맵을 처리하여 상기 로봇을 제어하는,
    로봇 제어 장치.

KR1020180109197A 2018-05-14 2018-09-12 뉴럴 네트워크의 양자화 방법 및 장치 Pending KR20190130443A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/398,710 US11948074B2 (en) 2018-05-14 2019-04-30 Method and apparatus with neural network parameter quantization

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862671105P 2018-05-14 2018-05-14
US62/671,105 2018-05-14
US201862677348P 2018-05-29 2018-05-29
US62/677,348 2018-05-29

Publications (1)

Publication Number Publication Date
KR20190130443A true KR20190130443A (ko) 2019-11-22

Family

ID=68731078

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180109197A Pending KR20190130443A (ko) 2018-05-14 2018-09-12 뉴럴 네트워크의 양자화 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20190130443A (ko)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111461302A (zh) * 2020-03-30 2020-07-28 杭州嘉楠耘智信息科技有限公司 一种基于卷积神经网络的数据处理方法、设备及存储介质
CN112232491A (zh) * 2020-10-29 2021-01-15 深兰人工智能(深圳)有限公司 基于卷积神经网络模型的特征提取方法和装置
CN112786021A (zh) * 2021-01-26 2021-05-11 东南大学 一种基于分层量化的轻量级神经网络语音关键词识别方法
CN113128659A (zh) * 2020-01-14 2021-07-16 杭州海康威视数字技术股份有限公司 神经网络定点化方法、装置、电子设备及可读存储介质
KR20220051947A (ko) * 2020-10-20 2022-04-27 연세대학교 산학협력단 인공 신경망을 위한 양자화기 및 양자화 방법
CN114692814A (zh) * 2020-12-31 2022-07-01 合肥君正科技有限公司 一种优化神经网络模型激活的量化方法
KR20220169085A (ko) 2021-06-18 2022-12-27 에스케이하이닉스 주식회사 강화 학습 장치 및 그 동작 방법
KR20240008816A (ko) * 2022-07-12 2024-01-19 오픈엣지테크놀로지 주식회사 신경망 레이어의 출력 액티베이션을 산출하는 신경망연산방법 및 이를 위한 하드웨어 가속기
WO2024185924A1 (ko) * 2023-03-07 2024-09-12 주식회사 사피온코리아 외부환경의 변화를 고려한 딥러닝 신경망 모델의 양자화 방법 및 장치
WO2025100631A1 (ko) * 2023-11-09 2025-05-15 주식회사 사피온코리아 양자화된 딥러닝 신경망 모델의 캘리브레이션 방법 및 장치

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113128659A (zh) * 2020-01-14 2021-07-16 杭州海康威视数字技术股份有限公司 神经网络定点化方法、装置、电子设备及可读存储介质
CN111461302A (zh) * 2020-03-30 2020-07-28 杭州嘉楠耘智信息科技有限公司 一种基于卷积神经网络的数据处理方法、设备及存储介质
CN111461302B (zh) * 2020-03-30 2024-04-19 嘉楠明芯(北京)科技有限公司 一种基于卷积神经网络的数据处理方法、设备及存储介质
KR20220051947A (ko) * 2020-10-20 2022-04-27 연세대학교 산학협력단 인공 신경망을 위한 양자화기 및 양자화 방법
CN112232491A (zh) * 2020-10-29 2021-01-15 深兰人工智能(深圳)有限公司 基于卷积神经网络模型的特征提取方法和装置
CN114692814A (zh) * 2020-12-31 2022-07-01 合肥君正科技有限公司 一种优化神经网络模型激活的量化方法
CN112786021A (zh) * 2021-01-26 2021-05-11 东南大学 一种基于分层量化的轻量级神经网络语音关键词识别方法
CN112786021B (zh) * 2021-01-26 2024-05-14 东南大学 一种基于分层量化的轻量级神经网络语音关键词识别方法
KR20220169085A (ko) 2021-06-18 2022-12-27 에스케이하이닉스 주식회사 강화 학습 장치 및 그 동작 방법
KR20240008816A (ko) * 2022-07-12 2024-01-19 오픈엣지테크놀로지 주식회사 신경망 레이어의 출력 액티베이션을 산출하는 신경망연산방법 및 이를 위한 하드웨어 가속기
WO2024185924A1 (ko) * 2023-03-07 2024-09-12 주식회사 사피온코리아 외부환경의 변화를 고려한 딥러닝 신경망 모델의 양자화 방법 및 장치
WO2025100631A1 (ko) * 2023-11-09 2025-05-15 주식회사 사피온코리아 양자화된 딥러닝 신경망 모델의 캘리브레이션 방법 및 장치

Similar Documents

Publication Publication Date Title
KR20190130443A (ko) 뉴럴 네트워크의 양자화 방법 및 장치
US11948074B2 (en) Method and apparatus with neural network parameter quantization
US12131258B2 (en) Joint pruning and quantization scheme for deep neural networks
CN109754066B (zh) 用于生成定点型神经网络的方法和装置
KR102563752B1 (ko) 뉴럴 네트워크를 위한 트레이닝 방법, 뉴럴 네트워크를 이용한 인식 방법 및 그 장치들
TWI791610B (zh) 對人工神經網路及浮點神經網路進行量化的方法及裝置
US20210089925A1 (en) Training method for quantizing the weights and inputs of a neural network
US11657254B2 (en) Computation method and device used in a convolutional neural network
JP7240657B2 (ja) ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム
JP2020009444A (ja) ニューラルネットワークにおいてパラメータを処理する方法及び装置
WO2020154083A1 (en) Neural network activation compression with non-uniform mantissas
KR102655950B1 (ko) 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치
US20190354865A1 (en) Variance propagation for quantization
KR20180013674A (ko) 뉴럴 네트워크의 경량화 방법, 이를 이용한 인식 방법, 및 그 장치
US11669747B2 (en) Constraining function approximation hardware integrated with fixed-point to floating-point conversion
CN113222102A (zh) 用于神经网络模型量化的优化方法
US20220253709A1 (en) Compressing a Set of Coefficients for Subsequent Use in a Neural Network
CN112446888A (zh) 图像分割模型的处理方法和处理装置
KR20220052844A (ko) 뉴럴 네트워크의 제공
KR20210116182A (ko) 소프트맥스 연산 근사화 방법 및 장치
CN115668229A (zh) 用于经训练神经网络的低资源计算块
KR102384588B1 (ko) 신경망 연산방법 및 신경망 가중치 생성방법
CN113177627A (zh) 优化系统、重新训练系统及其方法及处理器和可读介质
Schindler et al. Towards efficient forward propagation on resource-constrained systems
US20220405561A1 (en) Electronic device and controlling method of electronic device

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20180912

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20210809

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20180912

Comment text: Patent Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20240726

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20250325