KR20210130470A - 활성화 함수 처리 방법, 활성화 함수 처리 회로, 및 그것을 포함하는 신경망 시스템 - Google Patents

활성화 함수 처리 방법, 활성화 함수 처리 회로, 및 그것을 포함하는 신경망 시스템 Download PDF

Info

Publication number
KR20210130470A
KR20210130470A KR1020200048732A KR20200048732A KR20210130470A KR 20210130470 A KR20210130470 A KR 20210130470A KR 1020200048732 A KR1020200048732 A KR 1020200048732A KR 20200048732 A KR20200048732 A KR 20200048732A KR 20210130470 A KR20210130470 A KR 20210130470A
Authority
KR
South Korea
Prior art keywords
function
activation function
value
activation
lookup table
Prior art date
Application number
KR1020200048732A
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 KR1020200048732A priority Critical patent/KR20210130470A/ko
Priority to US17/087,135 priority patent/US11928575B2/en
Priority to DE102020134052.4A priority patent/DE102020134052A1/de
Priority to CN202110037227.3A priority patent/CN113537451A/zh
Priority to JP2021054622A priority patent/JP2021174536A/ja
Publication of KR20210130470A publication Critical patent/KR20210130470A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • H03K19/17728Reconfigurable logic blocks, e.g. lookup tables
    • 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/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • G06N5/025Extracting rules from data

Landscapes

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

Abstract

활성화 함수 처리 방법은 공유 룩업 테이블을 참조하여, 제1 모드일 때 제1 활성화 함수를 처리하고, 제2 모드일 때 제2 활성화 함수를 처리하는 단계를 포함하되, 상기 제2 모드일 때 상기 제2 활성화 함수를 처리하는 단계는, 제2 활성화 함수의 입력 값을 제1 활성화 함수의 입력 값으로 변환하는 단계; 상기 공유 룩업 테이블을 참조하여 상기 제1 활성화 함수의 상기 입력 값에 대응하는 상기 제1 활성화 함수의 함수 값을 결정하는 단계; 및 상기 제1 활성화 함수의 상기 함수 값을 상기 제2 활성화 함수의 함수 값으로 변환하는 단계를 포함한다.

Description

활성화 함수 처리 방법, 활성화 함수 처리 회로, 및 그것을 포함하는 신경망 시스템{ACTIVATION FUNCTION PROCESSING METHOD, ACTIVATION FUNCTION PROCESSING CIRCUIT, AND NEURAL NETWORK SYSTEM INCLUDING THE SAME}
본 발명은 신경망 시스템에 관한 것으로, 더욱 상세하게는 활성화 함수를 처리하는 신경망 시스템에 관한 것이다.
빅 데이터 또는 대용량의 자료들을 처리하여 유용한 정보를 추출해 내는 딥 러닝 기술은 최첨단 기술로서 더 많은 데이터를 더 빠르게 처리할 수 있도록 나날이 발전하고 있다. 딥 러닝 기반의 심층 신경망은 활성화 함수가 적용됨으로써 비선형성을 가지게 될 수 있다. 활성화 함수를 보다 적은 비용으로 효율적으로 처리하는 것은 신경망 시스템의 개발 과제 중 하나일 수 있다.
본 발명의 실시 예는 활성화 함수를 처리하기 위한 메모리 비용이 감소된 활성화 함수 처리 방법, 활성화 함수 처리 회로, 및 그것을 포함하는 신경망 시스템을 제공하는 데 있다.
본 발명의 실시 예에 따른 활성화 함수 처리 방법은 공유 룩업 테이블을 참조하여, 제1 모드일 때 제1 활성화 함수를 처리하고, 제2 모드일 때 제2 활성화 함수를 처리하는 단계를 포함하되, 상기 제2 모드일 때 상기 제2 활성화 함수를 처리하는 단계는, 제2 활성화 함수의 입력 값을 제1 활성화 함수의 입력 값으로 변환하는 단계; 상기 공유 룩업 테이블을 참조하여 상기 제1 활성화 함수의 상기 입력 값에 대응하는 상기 제1 활성화 함수의 함수 값을 결정하는 단계; 및 상기 제1 활성화 함수의 상기 함수 값을 상기 제2 활성화 함수의 함수 값으로 변환하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 활성화 함수 처리 회로는 공유 룩업 테이블을 참조하여 제1 활성화 함수의 입력 값에 대응하는 상기 제1 활성화 함수의 함수 값을 결정하도록 구성된 룩업 테이블 액세스부; 소정 모드에서 입력 값 관계식에 근거하여 제2 활성화 함수의 입력 값을 상기 제1 활성화 함수의 상기 입력 값으로 변환하도록 구성된 입력 값 변환부; 및 상기 모드에서 함수 값 관계식에 근거하여 상기 제1 활성화 함수의 상기 함수 값을 상기 제2 활성화 함수의 함수 값으로 변환하도록 구성된 함수 값 변환부를 포함할 수 있다.
본 발명의 실시 예에 따른 신경망 시스템은 제1 활성화 함수의 함수 값들을 포함하는 공유 룩업 테이블을 참조하여 상기 제1 활성화 함수의 함수 값을 결정하도록 구성된 활성화 함수 처리부를 포함하되, 상기 활성화 함수 처리부는 상기 제1 활성화 함수의 상기 함수 값에 근거하여 제2 활성화 함수의 함수 값을 결정할 수 있다.
본 발명의 실시 예에 따른 활성화 함수 처리 방법, 활성화 함수 처리 회로, 및 그것을 포함하는 신경망 시스템은 활성화 함수를 처리하기 위한 메모리 비용을 감소시킬 수 있다.
도1은 복수의 층들로 구성된 심층 신경망(Deep Neural Network)을 도시하는 도면,
도2는 LUT를 참조하여 하이퍼볼릭 탄젠트(Hyperbolic tangent) 함수의 함수 값을 결정하는 방법을 예시적으로 도시하는 도면,
도3은 본 발명의 실시 예에 따른 신경망 시스템을 도시하는 블록도,
도4는 본 발명의 실시 예에 따라 활성화 함수 처리부가 하이퍼볼릭 탄젠트 함수 및 시그모이드(Sigmoid) 함수를 공유 LUT를 참조하여 처리하는 방법을 도시한 도면,
도5는 본 발명의 실시 예에 따라 하이퍼볼릭 탄젠트 함수 및 시그모이드 함수를 선택적으로 처리할 수 있는 활성화 함수 처리부를 도시한 블록도,
도6은 본 발명의 실시 예에 따라 활성화 함수 처리부가 시그모이드 함수 및 하이퍼볼릭 탄젠트 함수를 공유 LUT를 참조하여 처리하는 방법을 도시한 도면,
도7은 본 발명의 실시 예에 따라 시그모이드 함수 및 하이퍼볼릭 탄젠트 함수를 선택적으로 처리할 수 있는 활성화 함수 처리부를 도시한 블록도,
도8a 및 도8b는 본 발명의 실시 예에 따라 공유 LUT들를 통해 해상도(Resolution)가 향상되는 효과를 설명하기 위한 도면들,
도9는 본 발명의 실시 예에 따른 도3의 활성화 함수 처리부의 동작 방법을 도시하는 순서도,
도10은 본 발명의 실시 예에 따른 도3의 LUT 액세스부의 동작 방법을 도시하는 순서도이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
도면들에 있어서, 본 발명의 실시 예들은 도시된 특정 형태로 제한되는 것이 아니며 명확성을 기하기 위하여 과장된 것이다. 본 명세서에서 특정한 용어들이 사용되었으나. 이는 본 발명을 설명하기 위한 목적에서 사용된 것이며, 의미 한정이나 특허 청구 범위에 기재된 본 발명의 권리 범위를 제한하기 위하여 사용된 것은 아니다.
본 명세서에서 '및/또는'이란 표현은 전후에 나열된 구성요소들 중 적어도 하나를 포함하는 의미로 사용된다. 또한, '연결되는/결합되는'이란 표현은 다른 구성 요소와 직접적으로 연결되거나 다른 구성 요소를 통해서 간접적으로 연결되는 것을 포함하는 의미로 사용된다. 본 명세서에서 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 또한, 명세서에서 사용되는 '포함한다' 또는 '포함하는'으로 언급된 구성 요소, 단계, 동작 및 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및 소자의 존재 또는 추가를 의미한다.
이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.
도1은 복수의 층들로 구성된 심층 신경망(Deep Neural Network)을 도시하는 도면이다.
심층 신경망은 복수의 층들로 구성될 수 있다. 활성화 함수(ACT)는 심층 신경망의 각 층에 비선형성(Nonlinearity)을 부여할 수 있다. 활성화 함수(ACT)는, 예를 들어, ReLU(Rectified Linear Unit) 함수, 시그모이드 함수, 및 하이퍼볼릭 탄젠트 함수 등을 포함할 수 있다. 처리 속도를 향상시키기 위해 활성화 함수(ACT)는 룩업 테이블(이하, LUT)를 사용하여 처리될 수 있다.
예를 들어, LSTM(Long Short-Term Memory) 알고리즘은 시그모이드 함수 및 하이퍼볼릭 탄젠트 함수를 사용하여, 아래 식들(E1~E6)에 근거하여 동작할 수 있다. 아래에서, σ는 시그모이드 함수이고, tanh는 하이퍼볼릭 탄젠트 함수이고, W U는 가중치 행렬들이고, x는 데이터 값이고, b는 바이어스 벡터를 의미할 수 있다.
Figure pat00001
(E1)
Figure pat00002
(E2)
Figure pat00003
(E3)
Figure pat00004
(E4)
Figure pat00005
(E5)
Figure pat00006
(E6)
위에서 보이는 바와 같이, LSTM 알고리즘은 식들(E1, E2, E4)에서 시그모이드 함수 및 식(E3)에서 하이퍼볼릭 탄젠트 함수를 동시에 사용할 수 있다. 따라서, 후술될 바와 같이 시그모이드 함수 및 하이퍼볼릭 탄젠트 함수를 LUT를 참조하여 처리할 경우, 처리 속도가 향상될 수 있다.
도2는 LUT를 참조하여 하이퍼볼릭 탄젠트 함수의 함수 값을 결정하는 방법을 예시적으로 도시하는 도면이다.
도2를 참조하면, 그래프(GTANH)는 하이퍼볼릭 탄젠트 함수의 그래프일 수 있다. x축은 하이퍼볼릭 탄젠트 함수의 입력 값이고, y축은 각 입력 값에 대응하는 하이퍼볼릭 탄젠트 함수의 함수 값일 수 있다.
LUT(LUTTANH)는 하이퍼볼릭 탄젠트 함수의 치역에서 선택된 함수 값들을 포함할 수 있다. LUT(LUTTANH)의 뎁스가, 예를 들어, 256일 때, LUT(LUTTANH)의 엔트리들은 0부터 255까지의 어드레스들에 대응하고, 엔트리들은 256개의 선택된 함수 값들을 각각 포함할 수 있다.
이 경우, 어떤 입력 값에 대응하는 하이퍼볼릭 탄젠트 함수의 함수 값은, 입력 값이 소정의 어드레스 변환 규칙에 따라 LUT(LUTTANH)의 어드레스로 변환된 뒤 LUT(LUTTANH)에서 해당 어드레스에 대응하는 엔트리의 값으로 결정될 수 있다.
예를 들어, 입력 값(IV5)은 LUT(LUTTANH)의 어드레스 "255"로 변환되고, LUT(LUTTANH)에서 어드레스 "255"에 대응하는 값(FV5)이 입력 값(IV5)에 대응하는 하이퍼볼릭 탄젠트 함수의 함수 값이 될 수 있다. 이러한 방식으로 입력 값들(IV1~IV4)의 함수 값들도 LUT(LUTTANH)에서 값들(FV1~FV4)로 각각 결정될 수 있다.
즉, LUT(LUTTANH)를 사용하는 것은, 어떤 입력 값에 대해 하이퍼볼릭 탄젠트 함수의 실제 함수 값을 복잡하게 계산할 필요 없이 미리 정해진 함수 값을 사용하는 것을 의미할 수 있다. 어드레스 변환 규칙은 모든 입력 값들 각각이 LUT(LUTTANH)의 대응하는 어느 하나의 어드레스로 변환되도록 정해질 수 있다.
시그모이드 함수에 대해서도 도2를 참조하여 하이퍼볼릭 탄젠트 함수에 대해 설명한 바와 유사하게 소정의 LUT를 사용하여 함수 값이 결정될 수 있다. 시그모이드 함수와 하이퍼볼릭 탄젠트 함수는 동일하거나 서로 다른 어드레스 변환 규칙들을 사용할 수 있다.
실시 예에 따라, 성능 향상을 위해 각 활성화 함수마다 복수의 LUT들이 사용될 수 있다. 예를 들어, 하이퍼볼릭 탄젠트 함수에 대해 8개의 LUT들이 사용될 수 있다. 이 경우 8개의 LUT들은 동시에 액세스될 수 있으므로, 8개의 서로 다른 입력 값들에 대응하는 하이퍼볼릭 탄젠트 함수의 함수 값들이 동시에 출력될 수 있다. 다만, 각 활성화 함수마다 복수의 LUT들을 사용하는 것은 메모리 비용의 증가를 유발할 수 있다.
비슷한 이유로 시그모이드 함수와 하이퍼볼릭 탄젠트 함수가 서로 다른 LUT들을 각각 사용하는 것도 메모리 비용의 증가를 유발할 수 있다. 후술될 바와 같이, 본 발명의 실시 예에 따르면, 서로 다른 활성화 함수들이 동일한 LUT를 공유함으로써 메모리 비용이 효과적으로 절감될 수 있다.
도3은 본 발명의 실시 예에 따른 신경망 시스템(100)을 도시하는 블록도이다.
도3을 참조하면, 신경망 시스템(100)은 제1 및 제2 활성화 함수들에 근거하여 심층 신경망의 학습 동작을 처리할 수 있다. 신경망 시스템(100)은 제1 및 제2 활성화 함수들을 처리하도록 구성된 활성화 함수 처리부(110)를 포함할 수 있다.
활성화 함수 처리부(110)는 제1 모드에서 제1 활성화 함수를 처리하고, 제2 모드에서 제2 활성화 함수를 처리할 수 있다. 다른 말로 하면, 활성화 함수 처리부(110)는 제1 모드에서 입력 값에 대응하는 제1 활성화 함수의 함수 값을 결정하고, 제2 모드에서 입력 값에 대응하는 제2 활성화 함수의 함수 값을 결정할 수 있다. 이때, 활성화 함수 처리부(110)는 제1 및 제2 활성화 함수들 모두에 대해 공유 LUT(SLUT)를 사용할 수 있다.
활성화 함수 처리부(110)는 LUT 액세스부(111), 입력 값 변환부(112), 및 함수 값 변환부(113)를 포함할 수 있다.
제1 모드에서 제1 활성화 함수를 처리하는 과정은 LUT 액세스부(111)의 함수 값 결정 단계를 포함할 수 있다.
구체적으로, LUT 액세스부(111)는 제1 모드에서 입력 값을 소정의 어드레스 변환 규칙에 따라 공유 LUT(SLUT)의 어드레스로 변환하고, 공유 LUT(SLUT)에서 해당 어드레스에 대응하는 값을 입력 값에 대응하는 제1 활성화 함수의 함수 값으로 출력할 수 있다.
즉, 공유 LUT(SLUT)는 제1 활성화 함수에 근거하여 생성된 것일 수 있다. 다른 말로 하면, 제1 활성화 함수의 모든 입력 값들 각각은 소정의 어드레스 변환 규칙에 따라 공유 LUT(SLUT)의 모든 어드레스들 중 대응하는 어느 하나로 변환되고, 공유 LUT(SLUT)는 제1 활성화 함수의 모든 함수 값들 중 선택된 함수 값들을 포함할 수 있다. 공유 LUT(SLUT)를 참조하여 제1 활성화 함수를 처리하는 방식은 도2에서 LUT(LUTTANH)를 참조하여 하이퍼볼릭 탄젠트 함수를 처리하는 방식과 실질적으로 동일할 수 있다. 공유 LUT(SLUT)는 LUT 액세스부(111)의 메모리(미도시됨)에 저장될 수 있다.
제2 모드에서 제2 활성화 함수를 처리하는 과정은 입력 값 변환부(112)의 입력 값 변환 단계, LUT 액세스부(111)의 함수 값 결정 단계, 및 함수 값 변환부(113)의 함수 값 변환 단계를 포함할 수 있다.
구체적으로, 입력 값 변환부(112)는 제2 모드에서 입력 값 관계식에 근거하여 제2 활성화 함수의 입력 값을 제1 활성화 함수의 입력 값으로 변환할 수 있다. 제2 모드에서 변환된 입력 값은 LUT 액세스부(111)로 전송될 수 있다.
LUT 액세스부(111)는 제2 모드에서 제1 모드에서와 동일하게 동작할 수 있다. 즉, LUT 액세스부(111)는 제2 모드에서, 입력 값 변환부(112)로부터 전송된 입력 값을 소정의 어드레스 변환 규칙에 따라 공유 LUT(SLUT)의 어드레스로 변환하고 공유 LUT(SLUT)에서 해당 어드레스에 대응하는 값을 입력 값에 대응하는 제1 활성화 함수의 함수 값으로 출력할 수 있다. 제2 모드에서 출력된 함수 값은 함수 값 변환부(113)로 전송될 수 있다.
함수 값 변환부(113)는 제2 모드에서 LUT 액세스부(111)로부터 제1 활성화 함수의 함수 값을 수신하고, 함수 값 관계식에 근거하여 제1 활성화 함수의 함수 값을 제2 활성화 함수의 함수 값으로 변환할 수 있다.
정리하면, 공유 LUT(SLUT)는 제1 활성화 함수를 기반으로 생성되더라도 제2 활성화 함수를 처리하기 위해서도 사용될 수 있다. 즉, 제1 활성화 함수와 제2 활성화 함수를 처리하기 위해 서로 다른 LUT들을 각각 유지하지 않고 동일한 공유 LUT(SLUT)를 사용함으로써, 메모리 비용이 크게 감소될 수 있다.
실시 예에 따라, 제1 활성화 함수는 하이퍼볼릭 탄젠트 함수이고 제2 활성화 함수는 시그모이드 함수일 수 있다. 이때, 공유 LUT(SLUT)는 하이퍼볼릭 탄젠트 함수에 기반하여 생성될 수 있다. 이와 관련한 상세한 설명은 도4 및 도5를 참조하여 후술될 것이다.
실시 예에 따라, 제1 활성화 함수는 시그모이드 함수이고 제2 활성화 함수는 하이퍼볼릭 탄젠트 함수일 수 있다. 이때, 공유 LUT(SLUT)는 시그모이드 함수에 기반하여 생성될 수 있다. 이와 관련한 상세한 설명은 도6 및 도7을 참조하여 후술될 것이다.
도4는 본 발명의 실시 예에 따라 도3의 활성화 함수 처리부(110)가 공유 LUT(SLUT1)를 참조하여 하이퍼볼릭 탄젠트 함수 및 시그모이드 함수를 처리하는 방법을 도시한 도면이다.
도4를 참조하면, 공유 LUT(SLUT1)는 도3의 공유 LUT(SLUT)의 실시 예일 수 있다. 공유 LUT(SLUT1)는 하이퍼볼릭 탄젠트 함수를 기준으로 생성될 수 있다. 다른 말로 하면, 하이퍼볼릭 탄젠트 함수의 모든 입력 값들 각각은 소정의 어드레스 변환 규칙에 따라 공유 LUT(SLUT1)의 모든 어드레스들 중 대응하는 어느 하나로 변환되고, 공유 LUT(SLUT1)는 하이퍼볼릭 탄젠트 함수의 모든 함수 값들 중 선택된 함수 값들을 포함할 수 있다.
과정(P11)은 공유 LUT(SLUT1)를 사용한 하이퍼볼릭 탄젠트 함수의 처리 과정이다. 과정(P11)은 활성화 함수 처리부(110)가 제1 모드에 있을 때 진행될 수 있다. 과정(P11)을 참조하면, LUT 액세스부(111)는 입력 값(x)을 공유 LUT(SLUT1)의 어드레스로 변환하고, 공유 LUT(SLUT1)에서 어드레스에 대응하는 값을 함수 값(tanh(x))으로서 결정할 수 있다. 과정(P11)은 도2에서 설명된 하이퍼볼릭 탄젠트 함수의 처리 과정과 실질적으로 동일할 수 있다.
과정(P12)은 공유 LUT(SLUT1)를 사용한 시그모이드 함수의 처리 과정이다. 과정(P12)은 활성화 함수 처리부(110)가 제2 모드에 있을 때 진행될 수 있다.
우선, 시그모이드 함수를 하이퍼볼릭 탄젠트 함수로 표현한 관계식(R1)은 아래와 같다.
Figure pat00007
(R1)
상기 관계식(R1)에 근거하여, 아래와 같은 입력 값 관계식(IR1) 및 함수 값 관계식(FR1)이 도출될 수 있다.
Figure pat00008
(IR1)
Figure pat00009
(FR1)
따라서, 과정(P12)을 참조하면, 단계(S11)에서, 입력 값 변환부(112)는 입력 값 관계식(IR1)에 근거하여 입력 값(x)을 2로 나눔으로써 값(i)을 결정할 수 있다. 즉, 단계(S11)에서 시그모이드 함수의 입력 값(x)은 하이퍼볼릭 탄젠트 함수의 입력 값(i)으로 변환될 수 있다.
이어서 단계(S12)에서, LUT 액세스부(111)는 입력 값(i)을 공유 LUT(SLUT1)의 어드레스로 변환하고, 공유 LUT(SLUT1)에서 어드레스에 대응하는 값을 함수 값(tanh(i))으로서 결정할 수 있다.
이어서 단계(S13)에서, 함수 값 변환부(113)는 함수 값 관계식(FR1)에 근거하여 함수 값(tanh(i))에 1을 더한 뒤 2로 나눔으로써 함수 값(σ(x))을 결정할 수 있다. 즉, 단계(S13)에서 하이퍼볼릭 탄젠트 함수의 함수 값(tanh(i))은 시그모이드 함수의 함수 값(σ(x))으로 변환될 수 있다.
도5는 본 발명의 실시 예에 따라 하이퍼볼릭 탄젠트 함수 및 시그모이드 함수를 선택적으로 처리할 수 있는 활성화 함수 처리부(110A)를 도시한 블록도이다. 활성화 함수 처리부(110A)는 도3의 활성화 함수 처리부(110)의 실시 예일 수 있다. 활성화 함수 처리부(110A)는 제1 모드 및 제2 모드에서 도4의 과정(P11) 및 과정(P12)을 각각 수행할 수 있다.
도5를 참조하면, 활성화 함수 처리부(110A)는 공유 LUT(SLUT1)를 참조하여, 제1 모드(M1)에서 입력 값(x)에 대한 함수 값(tanh(x))을 결정하고, 제2 모드(M2)에서 입력 값(x)에 대한 함수 값(σ(x))을 결정할 수 있다. 공유 LUT(SLUT1)는 하이퍼볼릭 탄젠트 함수를 기준으로 생성된 것일 수 있다.
구체적으로, 활성화 함수 처리부(110A)는 LUT 액세스부(111A), 입력 값 변환부(112A), 함수 값 변환부(113A), 및 선택부들(SL1, SL2)을 포함할 수 있다.
입력 값 변환부(112A)는 입력 값 관계식(IR1)에 근거하여 시그모이드 함수의 입력 값을 하이퍼볼릭 탄젠트 함수의 입력 값으로 변환할 수 있다. 입력 값 변환부(112A)는 나눗셈부(DV1)를 포함할 수 있다. 나눗셈부(DV1)는 입력 값(x)을 2로 나누는 연산을 수행할 수 있다. 예를 들어, 나눗셈부(DV1)는 입력 값(x)의 최하위 비트를 제외한 나머지 비트들을 선택하고 선택된 비트들의 최상위 비트에 0을 패딩할 수 있다.
선택부(SL1)는 입력 값(x) 및 나눗셈부(DV1)의 출력을 수신하고, 모드에 따라 선택된 어느 하나를 출력할 수 있다. 구체적으로 선택부(SL1)는 제1 모드(M1)에서 입력 값(x)을 선택하고, 제2 모드(M2)에서 나눗셈부(DV1)의 출력을 선택할 수 있다.
LUT 액세스부(111A)는 선택부(SL1)의 출력을 공유 LUT(SLUT1)의 어드레스로 변환하고, 공유 LUT(SLUT1)에서 어드레스에 대응하는 값을 출력할 수 있다.
함수 값 변환부(113A)는 함수 값 관계식(FR1)에 근거하여 하이퍼볼릭 탄젠트 함수의 함수 값을 시그모이드 함수의 함수 값으로 변환할 수 있다. 함수 값 변환부(113A)는 덧셈부(AD) 및 나눗셈부(DV2)를 포함할 수 있다.
덧셈부(AD)는 LUT 액세스부(111A)의 출력에 1을 더하는 연산을 수행할 수 있다.
나눗셈부(DV2)는 덧셈부(AD)의 출력을 2로 나누는 연산을 수행할 수 있다. 예를 들어, 나눗셈부(DV2)는 덧셈부(AD)의 출력의 최하위 비트를 제외한 나머지 비트들을 선택하고 선택된 비트들의 최상위 비트에 0을 패딩할 수 있다.
선택부(SL2)는 LUT 액세스부(111A)의 출력 및 나눗셈부(DV2)의 출력을 수신하고, 모드에 따라 선택된 어느 하나를 출력할 수 있다. 구체적으로 선택부(SL2)는 제1 모드(M1)에서 LUT 액세스부(111A)의 출력을 선택하고, 제2 모드(M2)에서 나눗셈부(DV2)의 출력을 선택할 수 있다.
결국, 제1 모드(M1)에서 활성화 함수 처리부(110A)는 도4의 과정(P11)을 수행하고, 선택부(SL2)로부터 출력된 값은 입력 값(x)에 대응하는 하이퍼볼릭 탄젠트 함수의 함수 값(tanh(x))일 수 있다. 그리고, 제2 모드(M2)에서 활성화 함수 처리부(110A)는 도4의 과정(P12)을 수행하고, 선택부(SL2)로부터 출력된 값은 입력 값(x)에 대응하는 시그모이드 함수의 함수 값(σ(x))일 수 있다.
한편, 공유 LUT(SLUT1)를 사용할 때, 시그모이드 함수의 입력 값(x)의 범위는 하이퍼볼릭 탄젠트 함수의 입력 값(x)의 범위의 2배일 수 있다. 예를 들어, 하이퍼볼릭 탄젠트 함수의 입력 값(x)의 범위가 [-5, 5]일 때, 시그모이드 함수의 입력 값(x)의 범위는 [-10, 10]일 수 있다.
정리하면, 시그모이드 함수 및 하이퍼볼릭 탄젠트 함수는 서로 다른 LUT들을 사용하지 않고 하이퍼볼릭 탄젠트 함수에 근거하여 생성된 공유 LUT(SLUT1)를 사용하여 처리됨으로써, 메모리 비용이 크게 감소될 수 있다.
도6은 본 발명의 실시 예에 따라 도3의 활성화 함수 처리부(110)가 공유 LUT(SLUT2)를 참조하여 시그모이드 함수 및 하이퍼볼릭 탄젠트 함수를 처리하는 방법을 도시한 도면이다.
도6을 참조하면, 공유 LUT(SLUT2)는 도3의 공유 LUT(SLUT)의 실시 예일 수 있다. 공유 LUT(SLUT2)는 시그모이드 함수를 기준으로 생성될 수 있다. 다른 말로 하면, 시그모이드 함수의 모든 입력 값들 각각은 소정의 어드레스 변환 규칙에 따라 공유 LUT(SLUT2)의 모든 어드레스들 중 대응하는 어느 하나로 변환되고, 공유 LUT(SLUT2)는 시그모이드 함수의 모든 함수 값들 중 선택된 함수 값들을 포함할 수 있다.
과정(P21)은 공유 LUT(SLUT2)를 사용한 시그모이드 함수의 처리 과정이다. 과정(P21)은 활성화 함수 처리부(110)가 제1 모드에 있을 때 진행될 수 있다. 과정(P21)을 참조하면, LUT 액세스부(111)는 입력 값(x)을 공유 LUT(SLUT2)의 어드레스로 변환하고, 공유 LUT(SLUT2)에서 어드레스에 대응하는 값을 함수 값(σ(x))으로서 결정할 수 있다.
과정(P22)은 공유 LUT(SLUT2)를 사용한 하이퍼볼릭 탄젠트 함수의 처리 과정이다. 과정(P22)은 활성화 함수 처리부(110)가 제2 모드에 있을 때 진행될 수 있다.
우선, 하이퍼볼릭 탄젠트 함수를 시그모이드 함수로 표현한 관계식(R2)은 아래와 같다.
Figure pat00010
(R2)
상기 관계식(R2)에 근거하여, 아래와 같은 입력 값 관계식(IR2) 및 함수 값 관계식(FR2)이 도출될 수 있다.
Figure pat00011
(IR2)
Figure pat00012
(FR2)
따라서, 과정(P22)을 참조하면, 단계(S21)에서, 입력 값 변환부(112)는 입력 값 관계식(IR2)에 근거하여 입력 값(x)에 2를 곱함으로써 값(i)을 결정할 수 있다. 즉, 단계(S21)에서 하이퍼볼릭 탄젠트 함수의 입력 값(x)은 시그모이드 함수의 입력 값(i)으로 변환될 수 있다.
이어서 단계(S22)에서, LUT 액세스부(111)는 입력 값(i)을 공유 LUT(SLUT2)의 어드레스로 변환하고, 공유 LUT(SLUT2)에서 어드레스에 대응하는 값을 함수 값(σ(i))으로서 결정할 수 있다.
이어서 단계(S23)에서, 함수 값 변환부(113)는 함수 값 관계식(FR2)에 근거하여 함수 값(σ(i))에 2를 곱한 뒤, 1을 뺌으로써 함수 값(tanh(x))을 결정할 수 있다. 즉, 단계(S23)에서 시그모이드 함수의 함수 값(σ(x))은 하이퍼볼릭 탄젠트 함수의 함수 값(tanh(x))으로 변환될 수 있다.
도7은 본 발명의 실시 예에 따라 시그모이드 함수 및 하이퍼볼릭 탄젠트 함수를 선택적으로 처리할 수 있는 활성화 함수 처리부(110B)를 도시한 블록도이다. 활성화 함수 처리부(110B)는 도3의 활성화 함수 처리부(110)의 실시 예일 수 있다. 활성화 함수 처리부(110B)는 제1 모드 및 제2 모드에서 도6의 과정(P21) 및 과정(P22)을 각각 수행할 수 있다.
도7을 참조하면, 활성화 함수 처리부(110B)는 공유 LUT(SLUT2)를 참조하여, 제1 모드(M1)에서 입력 값(x)에 대한 함수 값(σ(x))을 결정하고, 제2 모드(M2)에서 입력 값(x)에 대한 함수 값(tanh(x))을 결정할 수 있다. 공유 LUT(SLUT2)는 시그모이드 함수를 기준으로 생성된 것일 수 있다.
구체적으로, 활성화 함수 처리부(110B)는 LUT 액세스부(111B), 입력 값 변환부(112B), 함수 값 변환부(113B), 및 선택부들(SL3, SL4)을 포함할 수 있다.
입력 값 변환부(112B)는 입력 값 관계식(IR2)에 근거하여 하이퍼볼릭 탄젠트 함수의 입력 값을 시그모이드 함수의 입력 값으로 변환할 수 있다. 입력 값 변환부(112B)는 곱셈부(MT1)를 포함할 수 있다. 곱셈부(MT1)는 입력 값(x)에 2를 곱하는 연산을 수행할 수 있다. 예를 들어, 곱셈부(MT1)는 입력 값(x)의 최하위 비트에 0을 패딩할 수 있다.
선택부(SL3)는 입력 값(x) 및 곱셈부(MT1)의 출력을 수신하고, 모드에 따라 선택된 어느 하나를 출력할 수 있다. 구체적으로 선택부(SL3)는 제1 모드(M1)에서 입력 값(x)을 선택하고, 제2 모드(M2)에서 곱셈부(MT1)의 출력을 선택할 수 있다.
LUT 액세스부(111B)는 선택부(SL3)의 출력을 공유 LUT(SLUT2)의 어드레스로 변환하고, 공유 LUT(SLUT2)에서 어드레스에 대응하는 값을 출력할 수 있다.
함수 값 변환부(113B)는 함수 값 관계식(FR2)에 근거하여 시그모이드 함수의 함수 값을 하이퍼볼릭 탄젠트 함수의 함수 값으로 변환할 수 있다. 함수 값 변환부(113B)는 곱셈부(MT2) 및 뺄셈부(SB)를 포함할 수 있다.
곱셈부(MT2)는 LUT 액세스부(111B)의 출력에 2를 곱하는 연산을 수행할 수 있다. 예를 들어, 곱셈부(MT2)는 LUT 액세스부(111B)의 출력의 최하위 비트에 0을 패딩할 수 있다.
뺄셈부(SB)는 곱셈부(MT2)의 출력으로부터 1을 빼는 연산을 수행할 수 있다.
선택부(SL4)는 LUT 액세스부(111B)의 출력 및 뺄셈부(SB)의 출력을 수신하고, 모드에 따라 선택된 어느 하나를 출력할 수 있다. 구체적으로 선택부(SL4)는 제1 모드(M1)에서 LUT 액세스부(111B)의 출력을 선택하고, 제2 모드(M2)에서 뺄셈부(SB)의 출력을 선택할 수 있다.
결국, 제1 모드(M1)에서 활성화 함수 처리부(110B)는 도6의 과정(P21)을 수행하고, 선택부(SL4)로부터 출력된 값은 입력 값(x)에 대응하는 시그모이드 함수의 함수 값(σ(x))일 수 있다. 그리고, 제2 모드(M2)에서 활성화 함수 처리부(110B)는 도6의 과정(P22)을 수행하고, 선택부(SL4)로부터 출력된 값은 입력 값(x)에 대응하는 하이퍼볼릭 탄젠트 함수의 함수 값(tanh(x))일 수 있다.
정리하면, 시그모이드 함수 및 하이퍼볼릭 탄젠트 함수는 서로 다른 LUT들을 사용하지 않고 시그모이드 함수에 근거하여 생성된 공유 LUT(SLUT2)를 사용하여 처리됨으로써, 메모리 비용이 크게 감소될 수 있다.
도8a 및 도8b는 본 발명의 실시 예에 따라 공유 LUT들(SLUT3, SLUT4)를 통해 해상도(Resolution)가 향상되는 효과를 설명하기 위한 도면들이다.
도8a를 참조하면, 하이퍼볼릭 탄젠트 함수와 시그모이드 함수를 처리하기 위해 뎁스가 256인 2개의 공유 LUT들(SLUT3, SLUT4)이 사용될 수 있다. 예를 들어, 공유 LUT들(SLUT3, SLUT4)이 시그모이드 함수를 기준으로 생성되었을 때, 공유 LUT(SLUT3)는 시그모이드 함수의 범위 [-10, 0]의 입력 값을 위한 것이고, 공유 LUT(SLUT4)는 시그모이드 함수의 범위 (0, 10]의 입력 값을 위한 것일 수 있다.
이 경우, 도8b를 참조하면, 관계식(R2)에 따라 공유 LUT(SLUT3)는 하이퍼볼릭 탄젠트 함수의 범위 [-5, 0]의 입력 값을 위한 것이고, 공유 LUT(SLUT4)는 하이퍼볼릭 탄젠트 함수의 범위 (0, 5]의 입력 값을 위한 것일 수 있다.
이와 같이 공유 LUT들(SLUT3, SLUT4)을 사용하는 것은, 하이퍼볼릭 탄젠트 함수에 대해 뎁스가 256인 하나의 LUT를 사용하고 시그모이드 함수에 대해 뎁스가 256인 하나의 LUT를 사용하는 경우와 비교하여, 동일한 메모리 용량을 필요로 하지만 LUT 해상도를 하이퍼볼릭 탄젠트 함수와 시그모이드 함수 모두에 대해 2배로 향상시킬 수 있다. 즉, 본 발명에 따르면, 공유 LUT들(SLUT3, SLUT4)을 사용함으로써, 메모리 용량에 변화가 없더라도 LUT 해상도가 향상될 수 있다.
한편, 본 발명의 실시 예에 따르면, 공유 LUT를 참조하여 처리되는 활성화 함수들은 시그모이드 함수 및 하이퍼볼릭 탄젠트 함수로 제한되지 않고, 일정한 관계를 가지는 서로 다른 활성화 함수들에도 적용될 수 있다.
도9는 본 발명의 실시 예에 따른 도3의 활성화 함수 처리부(110)의 동작 방법을 도시하는 순서도이다.
도9를 참조하면, 단계(S110)에서, 활성화 함수 처리부(110)는 제1 모드로 동작할 것인지 또는 제2 모드로 동작할 것인지를 결정할 수 있다. 활성화 함수 처리부(110)는 제1 및 제2 활성화 함수들 중 현재 어떤 활성화 함수가 처리되어야 하는지 결정하여 제1 모드 또는 제2 모드를 결정할 수 있다. 제1 모드로 결정될 때 절차는 단계(S120)로 진행될 수 있다. 제2 모드로 결정될 때 절차는 단계(S130)로 진행될 수 있다.
단계(S120)에서, LUT 액세스부(111)는 공유 LUT(SLUT)를 참조하여 제1 활성화 함수의 입력 값에 대응하는 제1 활성화 함수의 함수 값을 결정할 수 있다.
단계(S130)에서, 입력 값 변환부(112)는 입력 값 관계식에 근거하여 제2 활성화 함수의 입력 값을 제1 활성화 함수의 입력 값으로 변환할 수 있다.
단계(S140)에서, LUT 액세스부(111)는 공유 LUT(SLUT)를 참조하여 제1 활성화 함수의 입력 값에 대응하는 제1 활성화 함수의 함수 값을 결정할 수 있다.
단계(S150)에서, 함수 값 변환부(113)는 함수 값 관계식에 근거하여 제1 활성화 함수의 함수 값을 제2 활성화 함수의 함수 값으로 변환할 수 있다.
도10은 본 발명의 실시 예에 따른 도3의 LUT 액세스부(111)의 동작 방법을 도시하는 순서도이다. 도10에 도시된 절차는 도9의 단계들(S120, S140)의 구체적인 실시 예일 수 있다.
도10을 참조하면, 단계(S210)에서, LUT 액세스부(111)는 제1 활성화 함수의 입력 값을 공유 LUT(SLUT)의 어드레스로 변환할 수 있다.
단계(S220)에서, LUT 액세스부(111)는 공유 LUT(SLUT)에서 어드레스에 대응하는 값을 제1 활성화 함수의 함수 값으로 결정할 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 신경망 시스템
110: 활성화 함수 처리부
111: 룩업 테이블 액세스부
SLUT: 공유 룩업 테이블
112: 입력 값 변환부
113: 함수 값 변환부

Claims (17)

  1. 공유 룩업 테이블을 참조하여, 제1 모드일 때 제1 활성화 함수를 처리하고, 제2 모드일 때 제2 활성화 함수를 처리하는 단계를 포함하되,
    상기 제2 모드일 때 상기 제2 활성화 함수를 처리하는 단계는,
    제2 활성화 함수의 입력 값을 제1 활성화 함수의 입력 값으로 변환하는 단계;
    상기 공유 룩업 테이블을 참조하여 상기 제1 활성화 함수의 상기 입력 값에 대응하는 상기 제1 활성화 함수의 함수 값을 결정하는 단계; 및
    상기 제1 활성화 함수의 상기 함수 값을 상기 제2 활성화 함수의 함수 값으로 변환하는 단계를 포함하는 활성화 함수 처리 방법.
  2. 제1항에 있어서,
    상기 제1 모드일 때 상기 제1 활성화 함수를 처리하는 단계는,
    상기 공유 룩업 테이블을 참조하여 상기 제1 활성화 함수의 입력 값에 대응하는 상기 제1 활성화 함수의 함수 값을 결정하는 단계를 포함하는 활성화 함수 처리 방법.
  3. 제1항에 있어서,
    상기 제1 활성화 함수의 상기 함수 값을 결정하는 단계는,
    어드레스 변환 규칙에 따라 상기 제1 활성화 함수의 상기 입력 값을 상기 공유 룩업 테이블의 어드레스로 변환하는 단계; 및
    상기 공유 룩업 테이블에서 상기 어드레스에 대응하는 값을 상기 제1 활성화 함수의 상기 함수 값으로 결정하는 단계를 포함하고,
    상기 어드레스 변환 규칙은 상기 제1 활성화 함수의 모든 입력 값들 각각이 상기 공유 룩업 테이블의 모든 어드레스들 중 대응하는 어느 하나로 변환되도록 설정되는 활성화 함수 처리 방법.
  4. 제1항에 있어서,
    상기 제1 활성화 함수는 시그모이드 함수이고,
    상기 제2 활성화 함수는 하이퍼볼릭 탄젠트 함수이고,
    상기 공유 룩업 테이블은 상기 시그모이드 함수의 함수 값들을 포함하는 활성화 함수 처리 방법.
  5. 제1항에 있어서,
    상기 제1 활성화 함수는 하이퍼볼릭 탄젠트 함수이고,
    상기 제2 활성화 함수는 시그모이드 함수이고,
    상기 공유 룩업 테이블은 상기 하이퍼볼릭 탄젠트 함수의 함수 값들을 포함하는 활성화 함수 처리 방법.
  6. 공유 룩업 테이블을 참조하여 제1 활성화 함수의 입력 값에 대응하는 상기 제1 활성화 함수의 함수 값을 결정하도록 구성된 룩업 테이블 액세스부;
    소정 모드에서 입력 값 관계식에 근거하여 제2 활성화 함수의 입력 값을 상기 제1 활성화 함수의 상기 입력 값으로 변환하도록 구성된 입력 값 변환부; 및
    상기 모드에서 함수 값 관계식에 근거하여 상기 제1 활성화 함수의 상기 함수 값을 상기 제2 활성화 함수의 함수 값으로 변환하도록 구성된 함수 값 변환부를 포함하는 활성화 함수 처리 회로.
  7. 제6항에 있어서,
    상기 룩업 테이블 액세스부는 상기 모드에서 상기 입력 값 변환부로부터 상기 제1 활성화 함수의 상기 입력 값을 수신하고, 상기 수신된 입력 값에 대응하는 상기 제1 활성화 함수의 상기 함수 값을 상기 함수 값 변환부로 전송하는 활성화 함수 처리 회로.
  8. 제6항에 있어서,
    상기 룩업 테이블 액세스부는 상기 제1 활성화 함수의 상기 입력 값을 상기 공유 룩업 테이블의 어드레스로 변환하고, 상기 공유 룩업 테이블에서 상기 어드레스에 대응하는 값을 상기 제1 활성화 함수의 상기 함수 값으로 결정하는 활성화 함수 처리 회로.
  9. 제8항에 있어서,
    상기 룩업 테이블 액세스부는 어드레스 변환 규칙에 따라 상기 제1 활성화 함수의 상기 입력 값을 상기 어드레스로 변환하고,
    상기 어드레스 변환 규칙은 상기 제1 활성화 함수의 모든 입력 값들 각각이 상기 공유 룩업 테이블의 모든 어드레스들 중 대응하는 어느 하나로 변환되도록 설정되고,
    상기 공유 룩업 테이블은 상기 제1 활성화 함수의 모든 함수 값들 중 선택된 함수 값들을 포함하는 활성화 함수 처리 회로.
  10. 제6항에 있어서,
    상기 제1 활성화 함수는 시그모이드 함수이고,
    상기 제2 활성화 함수는 하이퍼볼릭 탄젠트 함수이고,
    상기 공유 룩업 테이블은 상기 시그모이드 함수의 함수 값들을 포함하는 활성화 함수 처리 회로.
  11. 제6항에 있어서,
    상기 제1 활성화 함수는 하이퍼볼릭 탄젠트 함수이고,
    상기 제2 활성화 함수는 시그모이드 함수이고,
    상기 공유 룩업 테이블은 상기 하이퍼볼릭 탄젠트 함수의 함수 값들을 포함하는 활성화 함수 처리 회로.
  12. 제1 활성화 함수의 함수 값들을 포함하는 공유 룩업 테이블을 참조하여 상기 제1 활성화 함수의 함수 값을 결정하도록 구성된 활성화 함수 처리부를 포함하되,
    상기 활성화 함수 처리부는 상기 제1 활성화 함수의 상기 함수 값에 근거하여 제2 활성화 함수의 함수 값을 결정하는 신경망 시스템.
  13. 제12항에 있어서,
    상기 활성화 함수 처리부는, 상기 제1 활성화 함수의 입력 값을 상기 공유 룩업 테이블의 어드레스로 변환하고, 상기 공유 룩업 테이블에서 상기 어드레스에 대응하는 값을 상기 입력 값에 대응하는 상기 제1 활성화 함수의 상기 함수 값으로 결정하도록 구성된 룩업 테이블 액세스부를 포함하는 신경망 시스템.
  14. 제13항에 있어서,
    상기 활성화 함수 처리부는, 소정 모드에서 입력 값 관계식에 근거하여 상기 제2 활성화 함수의 입력 값을 상기 제1 활성화 함수의 상기 입력 값으로 변환하도록 구성된 입력 값 변환부를 더 포함하는 신경망 시스템.
  15. 제14항에 있어서,
    상기 활성화 함수 처리부는, 상기 모드에서 함수 값 관계식에 근거하여 상기 제1 활성화 함수의 상기 함수 값을 상기 제2 활성화 함수의 상기 함수 값으로 변환하도록 구성된 함수 값 변환부를 더 포함하는 신경망 시스템.
  16. 제12항에 있어서,
    상기 제1 활성화 함수는 시그모이드 함수이고,
    상기 제2 활성화 함수는 하이퍼볼릭 탄젠트 함수이고,
    상기 공유 룩업 테이블은 상기 시그모이드 함수의 함수 값들을 포함하는 신경망 시스템.
  17. 제12항에 있어서,
    상기 제1 활성화 함수는 하이퍼볼릭 탄젠트 함수이고,
    상기 제2 활성화 함수는 시그모이드 함수이고,
    상기 공유 룩업 테이블은 상기 하이퍼볼릭 탄젠트 함수의 함수 값들을 포함하는 신경망 시스템.
KR1020200048732A 2020-04-22 2020-04-22 활성화 함수 처리 방법, 활성화 함수 처리 회로, 및 그것을 포함하는 신경망 시스템 KR20210130470A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020200048732A KR20210130470A (ko) 2020-04-22 2020-04-22 활성화 함수 처리 방법, 활성화 함수 처리 회로, 및 그것을 포함하는 신경망 시스템
US17/087,135 US11928575B2 (en) 2020-04-22 2020-11-02 Activation function processing method, activation function processing circuit, and neural network system including the same
DE102020134052.4A DE102020134052A1 (de) 2020-04-22 2020-12-17 Verarbeitungsverfahren für Aktivierungsfunktionen, Verarbeitungsschaltung für Aktivierungsfunktionen und neuronales Netzwerksystem mit diesen
CN202110037227.3A CN113537451A (zh) 2020-04-22 2021-01-12 激活函数处理方法、激活函数处理电路及神经网络系统
JP2021054622A JP2021174536A (ja) 2020-04-22 2021-03-29 活性化関数処理方法、活性化関数処理回路及びそれを含むニューラルネットワークシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200048732A KR20210130470A (ko) 2020-04-22 2020-04-22 활성화 함수 처리 방법, 활성화 함수 처리 회로, 및 그것을 포함하는 신경망 시스템

Publications (1)

Publication Number Publication Date
KR20210130470A true KR20210130470A (ko) 2021-11-01

Family

ID=78124263

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200048732A KR20210130470A (ko) 2020-04-22 2020-04-22 활성화 함수 처리 방법, 활성화 함수 처리 회로, 및 그것을 포함하는 신경망 시스템

Country Status (5)

Country Link
US (1) US11928575B2 (ko)
JP (1) JP2021174536A (ko)
KR (1) KR20210130470A (ko)
CN (1) CN113537451A (ko)
DE (1) DE102020134052A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230063791A (ko) * 2021-11-02 2023-05-09 리벨리온 주식회사 인공지능 코어, 인공지능 코어 시스템 및 인공지능 코어 시스템의 로드/스토어 방법
CN117631751B (zh) * 2024-01-25 2024-05-03 北京壁仞科技开发有限公司 人工智能芯片、特殊函数计算方法和计算机可读存储介质

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018092294A (ja) * 2016-12-01 2018-06-14 ソニーセミコンダクタソリューションズ株式会社 演算装置、演算方法及びコンピュータプログラム
US11256978B2 (en) * 2017-07-14 2022-02-22 Intel Corporation Hyperbolic functions for machine learning acceleration
US11341400B1 (en) * 2017-08-30 2022-05-24 Marvell Asia Pte, Ltd. Systems and methods for high-throughput computations in a deep neural network
US10949766B2 (en) 2017-10-15 2021-03-16 Gsi Technology Inc. Precise exponent and exact softmax computation
US11182666B1 (en) * 2017-11-07 2021-11-23 Amazon Technologies, Inc. Artificial neural network architecture based on lookup table
KR102409505B1 (ko) * 2017-12-22 2022-06-14 에스케이하이닉스 주식회사 비휘발성 메모리 소자를 포함하는 lut, lut를 포함하는 fpga 및 fpga 디자인 방법
US11687762B2 (en) * 2018-02-27 2023-06-27 Stmicroelectronics S.R.L. Acceleration unit for a deep learning engine
US11049013B1 (en) * 2018-04-20 2021-06-29 Perceive Corporation Encoding of weight values stored on neural network inference circuit
US11481612B1 (en) * 2018-04-20 2022-10-25 Perceive Corporation Storage of input values across multiple cores of neural network inference circuit
US11568227B1 (en) * 2018-04-20 2023-01-31 Perceive Corporation Neural network inference circuit read controller with multiple operational modes
US10997510B1 (en) * 2018-05-22 2021-05-04 Marvell Asia Pte, Ltd. Architecture to support tanh and sigmoid operations for inference acceleration in machine learning
KR20200048732A (ko) 2018-10-30 2020-05-08 한국전력공사 감시, 점검 및 진단용 이동 로봇
US20220004856A1 (en) * 2018-11-06 2022-01-06 Genesys Logic, Inc. Multichip system and data processing method adapted to the same for implementing neural network application
US10733498B1 (en) * 2018-12-10 2020-08-04 Amazon Technologies, Inc. Parametric mathematical function approximation in integrated circuits
US11423313B1 (en) * 2018-12-12 2022-08-23 Amazon Technologies, Inc. Configurable function approximation based on switching mapping table content
KR20200111939A (ko) * 2019-03-20 2020-10-05 에스케이하이닉스 주식회사 신경망 가속 장치 및 그것의 동작 방법
CN110147879A (zh) * 2019-04-03 2019-08-20 中国科学院计算技术研究所 一种用于神经网络处理器的激活装置及方法
CN110688088B (zh) * 2019-09-30 2023-03-28 南京大学 一种面向神经网络的通用非线性激活函数计算装置和方法
US11327713B2 (en) * 2019-10-01 2022-05-10 SambaNova Systems, Inc. Computation units for functions based on lookup tables
US11327717B2 (en) * 2019-11-19 2022-05-10 SambaNova Systems, Inc. Look-up table with input offsetting
US11328038B2 (en) * 2019-11-25 2022-05-10 SambaNova Systems, Inc. Computational units for batch normalization
US11150872B2 (en) * 2019-12-17 2021-10-19 SambaNova Systems, Inc. Computational units for element approximation
US20210295134A1 (en) * 2020-03-18 2021-09-23 Infineon Technologies Ag Artificial neural network activation function
US20210397596A1 (en) * 2020-06-19 2021-12-23 Apple Inc. Lookup table activation functions for neural networks

Also Published As

Publication number Publication date
DE102020134052A1 (de) 2021-10-28
US11928575B2 (en) 2024-03-12
US20210334631A1 (en) 2021-10-28
CN113537451A (zh) 2021-10-22
JP2021174536A (ja) 2021-11-01

Similar Documents

Publication Publication Date Title
KR20210130470A (ko) 활성화 함수 처리 방법, 활성화 함수 처리 회로, 및 그것을 포함하는 신경망 시스템
EP3699826A1 (en) Operation device and related products
US4999801A (en) Floating point operation unit in division and square root operations
CN109308520B (zh) 实现softmax函数计算的FPGA电路及方法
CN114429195A (zh) 混合专家模型训练的性能优化方法和装置
CN117196000A (zh) 一种容器化部署的边缘侧模型推理加速方法
JP2020166674A (ja) 情報処理装置、情報処理方法、情報処理プログラム
JP7142665B2 (ja) ストレージ管理のための方法、装置、機器、コンピュータ読み取り可能な記憶媒体及びコンピュータプログラム
EP4363812A1 (en) Filtering method and filtering control apparatus for load cell
JP2906814B2 (ja) 色信号変換装置
CN111340216A (zh) 网络融合方法、网络融合装置、电子设备及存储介质
CN114118358A (zh) 图像处理方法、装置、电子设备、介质及程序产品
CN112532346A (zh) 一种基于用户时间需求的链路自适应方法及装置
CN112307014A (zh) 用于减少参数表存储空间的方法、装置、设备和计算机可读存储介质
KR102629731B1 (ko) 그래프 임베딩 기반의 가상 네트워크 매핑 방법
US20220398413A1 (en) Quantization method and device for neural network model, and computer-readable storage medium
JP6242555B1 (ja) 尤度生成回路および尤度算出方法
US10789531B2 (en) Operation device and related products
US11907680B2 (en) Multiplication and accumulation (MAC) operator
CN116980423B (zh) 模型调度方法、装置、计算系统、设备及可读存储介质
CN117435200B (zh) 同态加密业务代码转译方法、装置、设备及可读存储介质
CN116318046A (zh) 补偿衰减器、移相器的方法
KR20230067027A (ko) 고정확도 딥러닝 연산 장치
US20240070401A1 (en) Detecting out-of-domain text data in dialog systems using artificial intelligence
KR20170098472A (ko) 전력 관리 기능을 갖는 프로세서 및 프로세서의 전력 관리 방법