KR20230143041A - 다중 모드 활성화 함수를 위한 가속기 장치 - Google Patents

다중 모드 활성화 함수를 위한 가속기 장치 Download PDF

Info

Publication number
KR20230143041A
KR20230143041A KR1020220041846A KR20220041846A KR20230143041A KR 20230143041 A KR20230143041 A KR 20230143041A KR 1020220041846 A KR1020220041846 A KR 1020220041846A KR 20220041846 A KR20220041846 A KR 20220041846A KR 20230143041 A KR20230143041 A KR 20230143041A
Authority
KR
South Korea
Prior art keywords
output
function
result
multiplexer
selection signal
Prior art date
Application number
KR1020220041846A
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 KR1020220041846A priority Critical patent/KR20230143041A/ko
Publication of KR20230143041A publication Critical patent/KR20230143041A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • G06F1/0307Logarithmic or exponential functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/556Logarithmic or exponential functions

Landscapes

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

Abstract

다중 모드 활성화 함수를 위한 가속기 장치가 제공된다. 가속기 장치는, 복수의 활성화 함수 각각에 대응하는 연산을 수행하는 모드에 따라 복수의 선택 신호를 생성하도록 구성된 선택 신호 생성부를 포함한다. 입력 처리부는 선택 신호에 따라 입력 데이터를 그대로 출력하거나, 또는 입력 데이터에서 입력 데이터 중 최대값을 감산한 값의 부호를 반전시켜 출력한다. 지수 함수 연산부는 입력 처리부로부터의 출력에 지수 함수 연산을 수행하며, 분수 연산부는 지수 함수 연산 결과에 기반한 분자값 및 분모값을 이용한 분수 연산을 수행한다. 설정값 연산부는 분수 연산부의 출력 또는 입력 처리부의 출력에 대해 선택적으로 설정값을 곱하는 연산을 수행한다. 출력 처리부는 선택 신호에 따라, 설정값 연산부의 출력 또는 입력 처리부의 출력을 해당 활성화 함수에 따른 출력 데이터로서 출력한다.

Description

다중 모드 활성화 함수를 위한 가속기 장치{Accelerator device for multimode activation function}
본 개시는 가속기에 관한 것으로, 더욱 상세하게 말하자면, 다중 모드 활성화 함수를 위한 가속기 장치에 관한 것이다.
인공지능의 학습을 위해서는 많은 시간, 높은 컴퓨팅 성능 그리고 전력을 필요로 하며, 이에 비해 추론 단계는 프로세싱 성능을 덜 필요로 하고 전력도 덜 소모한다. 그런데 중앙의 클라우드에서 처리하는 전통적인 방식은 IoT(Internet of Things) 디바이스를 위해 과도하게 자원이 집중되어, 최근에는 모든 프로세싱을 처리하기 위해 클라우드 기반의 서버에 의존하는 것이 아니라, 에지 컴퓨팅을 사용해서 대부분의 처리를 하고 꼭 필요한 데이터만 클라우드로 전송하도록(또는 그 반대로) 할 수 있다. 이를 실현하기 위한 IoT 디바이스는 전력 면에서 효율적이어야 하는데, 이것은 학습과 추론에 요구되는 높은 수준의 프로세싱 성능과는 상충된다. 이 문제를 해결하기 위해 최근에는 인공지능 가속화기를 구현하여 이를 사용하는 있는 추세이다.
한편, 활성화 함수(activation function)는 신경망의 출력을 결정하는 식인데, 각 뉴런은 가중치(weight)를 가지고 있으며 이것은 입력과 곱해져서 다음 계층(layer)으로 전달된다. 이때, 활성화 함수는 현재 뉴런의 입력에 의해 생성된 출력이 다음 계층으로 전해지는 과정에서 역할을 수행하는 수학적인 게이트(gate)라고 할 수 있다.
활성화 함수는 이진 활성화 함수, 선형 활성화 함수, 비선형 활성화 함수와 같이 세 가지 종류가 있는데, 이진 활성화 함수, 선형 활성화 함수 모두 큰 문제점이 존재하여 현재는 비선형 활성화 함수만 사용되는 추세이다.
그러나 비선형 활성화 함수는 함수 내부에 지수 연산과 같은 비선형 함수들이 포함되어 있고 미분과 연관되어 있어서, 하드웨어로 구현하기가 쉽지 않다. 또한, 함수 전체를 룩업 테이블(Look-Up Table)로 구현하는 방법도 있으나 이는 정밀하게 구현할수록 많은 하드웨어를 필요로 하고, 하드웨어를 줄이면 정밀도가 감소하는 문제가 발생하게 된다.
본 개시가 해결하고자 하는 과제는 비선형 활성화 함수를 하드웨어로 구현함에 있어서 높은 정밀도로 여러가지 비선형 활성화 함수를 지원하는 하드웨어 가속기 장치를 제공하는 것이다.
일 실시예에 따르면, 다중 모드 활성화 함수를 위한 가속기 장치가 제공되며, 상기 가속기 장치는, 복수의 활성화 함수 각각에 대응하는 연산을 수행하는 모드에 따라 복수의 선택 신호를 생성하도록 구성된 선택 신호 생성부; 상기 복수의 선택 신호 중 적어도 하나의 선택 신호에 따라 입력 데이터를 그대로 출력하거나, 또는 입력 데이터에서 입력 데이터 중 최대값을 감산한 값의 부호를 반전시켜 출력하도록 구성된 입력 처리부; 상기 복수의 선택 신호 중 적어도 하나의 선택 신호에 따라 상기 입력 처리부로부터의 출력에 지수 함수 연산을 수행하도록 구성된 지수 함수 연산부; 상기 복수의 선택 신호 중 적어도 하나의 선택 신호에 따라, 상기 지수 함수 연산 결과에 기반한 분자값 및 분모값을 이용한 분수 연산을 수행하여 출력하도록 구성된 분수 연산부; 상기 복수의 선택 신호 중 적어도 하나의 선택 신호에 따라, 상기 분수 연산부의 출력 또는 상기 입력 처리부의 출력에 대해 선택적으로 설정값을 곱하는 연산을 수행하도록 구성된 설정값 연산부; 및 상기 복수의 선택 신호 중 적어도 하나의 선택 신호에 따라, 상기 설정값 연산부의 출력 또는 상기 입력 처리부의 출력을 해당 활성화 함수에 따른 출력 데이터로서 출력하도록 구성된 출력 처리부를 포함한다.
일 구현에서, 상기 복수의 활성화 함수는 시그모이드(Sigmoid) 함수, 하이퍼볼릭 탄젠트(Hyperbolic Tangent) 함수, ReLU (Rectified Linear Unit) 함수, Leaky ReLU 함수, ELU(Exponential LU) 함수 및 소프트맥스(SoftMax) 함수를 포함할 수 있다.
일 구현에서, 상기 입력 처리부는 연산을 수행하고자 하는 활성화 함수가 소프트맥스 함수인 경우에만 입력 데이터에서 입력 데이터 중 최대값을 감산한 값의 부호를 반전시켜 출력하고, 나머지 활성화 함수에 대해서는 입력 데이터를 그대로 출력할 수 있다.
일 구현에서, 상기 입력 처리부는, 하나의 선택 신호에 따라 0 또는 최대값을 출력하도록 구성된 멀티플렉서; 상기 입력 데이터에서 상기 멀티플렉서로부터의 출력을 감산하도록 구성된 뺄셈기; 상기 뺄셈기의 출력의 부호를 반전시키도록 구성된 부호 반전기; 및 상기 선택 신호에 따라 상기 뺄셈기의 출력 또는 상기 부호 반전기의 출력을 출력하도록 구성된 멀티플렉서를 포함할 수 있다.
일 구현에서, 상기 지수 함수 연산부와 상기 분수 연산부는 ReLU 함수, Leaky ReLU 함수에 대한 연산 수행시에는 동작하지 않을 수 있다.
일 구현에서, 상기 지수 함수 연산부는 상기 입력 처리부로부터의 출력에 상수 를 곱하고 지수 연산을 수행하여 지수 연산 함수 값으로 출력하거나 상기 가 곱해진 값을 2배 처리한 다음에 지수 연산을 수행하여 지수 연산 함수 값으로 출력할 수 있다.
일 구현에서, 상기 지수 함수 연산부는 하이퍼볼릭 탄젠트 함수의 경우에만, 상기 가 곱해진 값을 2배 처리한 다음에 지수 연산을 수행하여 지수 연산 함수 값으로 출력할 수 있다.
일 구현에서, 상기 지수 함수 연산부는, 상기 입력 처리부의 결과에 상수 를 곱하도록 구성된 곱셈기; 상기 곱셈기의 출력을 2배 처리하도록 구성된 2배 모듈; 하나의 선택 신호에 따라 상기 곱셈기의 출력 또는 상기 2배 모듈의 출력을 출력하도록 구성된 멀티플렉서; 및 상기 멀티플렉서로부터 출력되는 결과에 지수 연산을 수행하여 지수 연산 함수 값으로 출력하도록 구성된 지수 함수 연산기를 포함할 수 있다.
일 구현에서, 상기 분수 연산부는 연산을 수행하고자 하는 활성화 함수에 따라 선택적으로, 상기 지수 함수 연산부의 지수 함수 결과에 대해 1을 감산하는 뺄셈 또는 1을 더하는 덧셈을 선택적으로 수행하여 분자값 및 분모값을 획득하고, 상기 분자값 및 분모값에 기반한 나눗셈을 수행하여 이용한 분수 연산을 수행하여 출력할 수 있다.
일 구현에서, 연산을 수행하고자 하는 활성화 함수가 시그모이드 함수 또는 하이퍼볼릭 탄젠트 함수일 때, 상기 분수 연산부가 상기 분자값 및 분모값에 기반한 나눗셈을 수행하여 이용한 분수 연산을 수행하여 출력하며, 상기 활성화 함수가 ReLU 함수 또는 Leaky ReLU 함수일 때, 상기 분수 연산부가 동작하지 않으며, 상기 활성화 함수가 ELU 함수일 때, 상기 분수 연산부가 상기 지수 함수 결과에서 1을 감산한 값을 그대로 출력하며, 그리고, 상기 활성화 함수가 소프트맥스 함수일 때, 상기 분수 연산부는 분자값을 1로 하고 상기 지수 함수 결과를 분모값으로 사용하여 분수 연산을 수행할 수 있다.
일 구현에서, 상기 분수 연산부는, 제1 선택 신호에 따라 0 또는 1을 출력하도록 구성된 제1 멀티플렉서; 제2 선택 신호에 따라 0 또는 1을 출력하도록 구성된 제2 멀티플렉서; 상기 지수 함수 연산부의 지수 함수 결과에서 상기 제1 멀티플렉서의 출력을 감산하도록 구성된 뺄셈기; 상기 지수 함수 연산부의 지수 함수 결과에서 상기 제2 멀티플렉서의 출력을 더하도록 구성된 덧셈기; 상기 제2 선택 신호에 따라 상기 뺄셈기의 출력 또는 1을 출력하도록 구성된 제3 멀티플렉서; 상기 제3 선택 신호에 따라 상기 덧셈기의 출력 또는 1을 출력하도록 구성된 제4 멀티플렉서; 및 상기 제3 멀티플렉서의 출력을 분자값으로 사용하고 상기 제4 멀티플렉서의 출력을 분모값으로 사용해서 나눗셈을 수행하도록 구성된 나눗셈기를 포함할 수 있다.
일 구현에서, 연산을 수행하고자 하는 활성화 함수가 Leaky ReLU 함수 또는 ELU 함수일 때, 상기 설정값 연산부가 상기 분수 연산부의 출력 또는 상기 입력 처리부의 출력에 대해 상기 설정값을 곱하여 출력할 수 있다.
일 구현에서, 상기 출력 처리부는, 상기 입력 처리부의 결과의 MSB(Most Significant Bit)를 취하여 선택 신호로 출력하도록 구성된 선택기를 포함할 수 있다.
일 구현에서, 상기 출력 처리부는, 연산을 수행하고자 하는 활성화 함수가 ReLU 함수일 때, 상기 선택기의 선택 신호에 따라 0 또는 상기 입력 처리부의 결과를 출력하며, 연산을 수행하고자 하는 활성화 함수가 Leaky ReLU 함수 또는 ELU 함수일 때, 상기 선택기의 선택 신호에 따라 상기 입력 처리부의 결과 또는 상기 설정값 연산부의 결과를 출력하고, 연산을 수행하고자 하는 활성화 함수가 다른 함수일 때, 상기 선택 신호 생성부로부터의 선택 신호에 따라 상기 입력 처리부의 결과를 출력할 수 있다.
일 구현에서, 상기 출력 처리부는, 제1 선택 신호에 따라 0 또는 상기 설정값 연산부의 결과를 출력하도록 구성된 제1 멀티플렉서; 상기 선택기의 선택 신호에 따라 상기 입력 처리부의 결과 또는 상기 제1 멀티플렉서의 출력을 출력하도록 구성된 제2 멀티플렉서; 및 제2 선택 신호에 따라 상기 설정값 연산부의 결과 또는 상기 제2 멀티플렉서의 출력을 출력 데이터로서 출력하도록 구성된 제3 멀티플렉서를 포함할 수 있다.
일 구현에서, 상기 지수 함수 연산부는 입력 데이터에 상수 를 곱하도록 구성된 곱셈기; 상기 곱셈기의 결과 중 소수부를 입력으로 하여 연산을 수행하도록 구성된 소수부 룩업 테이블; 및 상기 소수부 룩업 테이블의 결과를 상기 곱셈기의 결과 중 정수부의 지수만큼 시프트하여 지수 함수 연산 결과로 출력하도록 구성된 시프터를 포함할 수 있다.
일 구현에서, 상기 시프터에 의해 실제 시프트되는 값의 최대값은 이며, 상기 는 상기 정수부의 지수일 수 있다.
일 구현에서, 상기 소수부 룩업 테이블은, 상기 소수부의 입력 비트의 자릿수에 따른 지수 함수 결과를 각각 출력하도록 구성된 복수의 룩업 테이블; 상기 소수부의 하나의 입력 비트를 선택 신호로 사용하여, 복수의 룩업 테이블 중 상기 입력 비트의 자릿수에 대응하는 룩업 테이블의 지수 함수 결과 또는 1을 출력하도록 구성된 복수의 멀티플렉서; 및 상기 복수의 멀티플렉서의 출력을 곱하여 출력하도록 구성된 곱셈기를 포함할 수 있다.
일 구현에서, 상기 복수의 룩업 테이블 각각은, 상기 소수부의 입력 비트의 자릿수에 대한 2의 지수승 값을 연산하여 곱하여 지수 함수 결과로서 출력할 수 있다.
일 구현에서, 상기 가속기 장치는 신경망 학습을 수행하는 신경망 장치의 가속기 장치로 사용될 수 있다.
실시 예들에 따르면, 비선형 활성화 함수를 하드웨어로 구현함에 있어서 높은 정밀도로 여러가지 비선형 활성화 함수를 지원하는 하드웨어 가속 장치를 제공할 수 있다. 이러한 가속 장치를 신경망 장치에 적용함으로써, 인공지능의 학습 및 추론에 다양한 방법을 적용하여 보다 빠르게 수행할 수 있다.
도 1은 비선형 활성화 함수의 예를 나타낸 도이다.
도 2a 내지 도 2f는 본 개시의 실시 예에 따른 비활성화 함수를 구현하는 연산기의 기본 구조를 나타낸 도이다.
도 3은 본 개시의 실시 예에 따른 다중 모드 활성화 함수를 위한 가속기 장치의 구조를 나타낸 블록도이다.
도 4는 본 개시의 실시 예에 따른 다중 모드 활성화 함수를 위한 가속기 장치의 구체적인 하드웨어 구조를 나타낸 도이다.
도 5a 내지 도 5f는 본 개시의 실시 예에 따른 가속기 장치의 활성화 함수에 따른 연산 수행에 따른 동작 상태를 나타낸 도이다.
도 6은 본 개시의 실시 예에 따른 가속기 장치의 지수 함수 연산기의 구조를 나타낸 도이다.
도 7은 본 개시의 실시 예에 따른 지수 함수 연산기의 소수부 룩업 테이블의 구조를 나타낸 도이다.
도 8은 본 개시의 실시 예에 따른 가속 장치가 적용되는 신경망 장치의 구조를 나타낸 도이다.
아래에서는 첨부한 도면을 참고로 하여 본 개시의 실시 예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 개시를 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 명세서에서 단수로 기재된 표현은 "하나" 또는 "단일" 등의 명시적인 표현을 사용하지 않은 이상, 단수 또는 복수로 해석될 수 있다.
또한, 본 개시의 실시 예에서 사용되는 제1, 제2 등과 같이 서수를 포함하는 용어는 구성 요소들을 설명하는데 사용될 수 있지만, 구성 요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 개시의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.
이하, 도면을 참조하여 본 개시의 실시 예에 따른 다중 모드 활성화 함수를 위한 가속기 장치 및 방법에 대하여 설명한다.
도 1은 비선형 활성화 함수의 예를 나타낸 도이다.
신경망의 출력을 결정하는 활성화 함수(activation function)는 신경망의 각 뉴런(neuron)에 붙어 있으며, 뉴런의 입력이 모델의 예측과 관련이 있는지 없는지를 근거로 이것을 활성화할지 활성화하지 않을지를 결정한다. 또한, 활성화 함수는 각 뉴런의 출력을 정규화 하여 모델이 복잡한 데이터를 학습하는 데 도움을 준다.
이러한 활성화 함수는 이진 활성화 함수, 선형 활성화 함수, 비선형 활성화 함수를 포함하지만, 비선형 활성화 함수가 주로 사용된다. 비선형 활성화 함수는 도 1에서와 같이, 시그모이드(Sigmoid)(도 1의 (a)), 하이퍼볼릭 탄젠트(Hyperbolic Tangent) (도 1의 (b)), ReLU (Rectified Linear Unit) (도 1의 (c)), Leaky ReLU, ELU(Exponential LU) (도 1의 (d)) 및 소프트맥스(SoftMax) (도 1의 (e)) 등이 있다.
이러한 비선형 활성화 함수를 수식으로 표현하면 다음과 같다.
1) 시그모이드:
2) 하이퍼볼릭 탄젠트:
3) ReLU :
4) Leaky ReLU :
5) Exponential LU:
6) 소프트맥스:
이러한 수식들 중 1), 2), 5), 6) 수식에는 지수 함수가 포함되어 있어 하드웨어로 구현하기가 어려우므로, 아래와 같은 관계를 이용하여 다음과 같이 수식을 변형한다.
즉, 밑 수가 인 지수 함수 는 밑 수가 2인 지수 함수로 변형될 수 있으므로, 입력 에 상수 를 곱하면 된다. 이 관계를 이용하여 지수 함수가 포함된 위 수식 1), 2), 5), 6)를 변형하면 다음과 같다.
1') 시그모이드:
2') 하이퍼볼릭 탄젠트:
5') Exponential LU:
6') 소프트맥스:
위 수식은 지수의 음수를 제거하고 모두 양의 지수로 표현한 것이다.
위의 변형된 수식 1'), 2'), 5'), 6')을 기반으로, 대응하는 비활성화 함수를 구현하기 위한 연산기의 기본 구조를 도출할 수 있다.
도 2a 내지 도 2f는 본 개시의 실시 예에 따른 비활성화 함수를 구현하는 연산기의 기본 구조를 나타낸 도이다.
도 2a는 본 개시의 실시 예에 따른 시그모이드를 구현하는 연산기의 기본 구조를 나타낸다.
본 개시의 실시 예에 따른 시그모이드를 구현하는 연산기(설명의 편의상, 시그모이드 연산기라고 명명함)(Operator 1, O1)는, 도 2a에서와 같이, 밑 수가 2인 지수 함수 연산기(201)와, 덧셈기(203) 및 나눗셈기(204)를 포함한다.
입력 가 입력되면 지수 함수 연산기(201)에서 입력 에 상수 를 곱해서 지수 함수 값을 연산하고, 변형된 수식 1')에서와 같이, 덧셈기(203)가 지수 함수 연산기(201)의 연산 결과(202)에 '1'을 더하여 출력하고, 나눗셈기(204)가 연산 결과(202)를 덧셈기(203)의 출력으로 나누어서 최종 결과()를 출력한다.
도 2b는 본 개시의 실시 예에 따른 하이퍼볼릭 탄젠트를 구현하는 연산기의 기본 구조를 나타낸다.
본 개시의 실시 예에 따른 하이퍼볼릭 탄젠트를 구현하는 연산기(설명의 편의상, 하이퍼볼릭 탄젠트 연산기라고 명명함)(O2)는, 도 2b에서와 같이, 밑 수가 2인 지수 함수 연산기(301), 뺄셈기(303), 덧셈기(304) 및 나눗셈기(305)를 포함한다.
지수 함수 연산기(301)는 변형된 수식 2')에서와 같이, 지수 함수의 지수에 2가 곱해져 있으므로, 시그모이드 연산기의 지수 함수 연산기(201)와는 달리, 지수를 2배 처리하는 2배 모듈(302)을 더 포함한다. 이 2배 모듈(302)는 따로 연산하지 않고 지수의 [MSB(Most Significant Bit):LSB(Least Significant Bit)]를 [MSB:LSB-1]까지 취하는 방식으로 배선(wiring) 만으로 구현될 수 있다.
변형된 수식 2')에서와 같이, 입력 가 입력되면 지수 함수 연산기(301)에서 입력 에 상수 를 곱하고 2배 모듈(302)이 이를 2배하여 지수 함수 값을 연산하고, 이 지수 함수 연산 결과에서 '1'을 뺀 결과를 '1'을 더한 결과로 나누어서 최종 결과를 얻는다. 즉, 뺄셈기(303)가 지수 함수 연산 결과에서 '1'을 빼고, 덧셈기(304)가 지수 함수 연산 결과에서 '1'을 더하며, 나눗셈기(204)가 뺄셈기(303)의 출력을 덧셈기(304)의 출력으로 나누어서 최종 결과()를 출력한다.
도 2c는 본 개시의 실시 예에 따른 ReLU를 구현하는 연산기의 기본 구조를 나타낸다.
본 개시의 실시 예에 따른 ReLU를 구현하는 연산기(설명의 편의상, ReLU 연산기라고 명명함)(O3)는, 도 2c에서와 같이, MSB 선택기(401) 및 멀티플렉서(MUX)(402)를 포함한다.
ReLU 연산은 입력이 '0'보다 크면 입력이 출력되고, 입력이 '0'보다 작으면 '0'이 출력된다. 이를 위해 비교기를 사용하지 않고, 입력 가 입력되면 MSB 선택기(401)가 입력 의 MSB를 취하여 멀티플렉서(402)로 출력하며, 멀티플렉서(402)는 입력 의 MSB를 선택 신호로 사용하여 최종 결과()를 출력한다.
도 2d는 본 개시의 실시 예에 따른 Leaky ReLU를 구현하는 연산기의 기본 구조를 나타낸다.
본 개시의 실시 예에 따른 Leaky ReLU를 구현하는 연산기(설명의 편의상, Leaky ReLU 연산기라고 명명함)(O4)는, 도 2d에서와 같이, MSB 선택기(501), 곱셈기(502) 및 멀티플렉서(MUX)(503)를 포함한다.
Leaky ReLU 연산기의 구조는 ReLU 연산기 구조와 유사한데, 입력이 '0'보다 크면 입력이 출력되고, 입력이 '0'보다 작으면 입력에 를 곱한 결과가 출력된다. 이에 따라 입력 가 입력되면 MSB 선택기(501)가 입력 의 MSB를 취하여 멀티플렉서(503)로 출력하며, 곱셈기(502)가 입력 를 곱하여 멀티플렉서(503)로 출력한다. 멀티플렉서(503)는 입력 의 MSB를 선택 신호로 사용하여, 가 곱해진 입력 또는 '0'을 최종 결과()를 출력한다.
도 2e는 본 개시의 실시 예에 따른 Exponential LU를 구현하는 연산기의 기본 구조를 나타낸다.
본 개시의 실시 예에 따른 Exponential LU를 구현하는 연산기(설명의 편의상, Exponential LU 연산기라고 명명함)(O5)는, 도 2e에서와 같이, 밑 수가 2인 지수 함수 연산기(601), 뺄셈기(602), 곱셈기(603), MSB 선택기(604) 및 멀티플렉서(MUX)(605)를 포함한다.
변형된 수식 5')에서와 같이, 입력 가 입력되면 지수 함수 연산기(601)에서 입력 에 상수 를 곱하여 지수 함수 값을 연산하고, 그 결과에서 1을 빼고, 그 결과에 를 곱한 결과와, 입력의 MSB를 선택 신호로 사용하여, 입력 값과 연산 값 중 하나를 선택하여 최종 결과로 사용한다. 즉, 뺄셈기(602)가 지수 함수 연산기(601)의 지수 함수 연산 결과에서 '1'을 빼고, 곱셈기(603)가 뺄셈기(602)의 결과에 를 곱하여 멀티플렉서(605)로 출력하며, MSB 선택기(604)가 입력 의 MSB를 취하여 멀티플렉서(605)로 출력한다. 멀티플렉서(605)는 입력 의 MSB를 선택 신호로 사용하여, 곱셈기(603)의 출력(연산 값)과 입력 중 하나를 최종 결과()로 출력한다.
도 2f는 본 개시의 실시 예에 따른 소프트맥스를 구현하는 연산기의 기본 구조를 나타낸다.
본 개시의 실시 예에 따른 소프트맥스를 구현하는 연산기(설명의 편의상, 소프트맥스 연산기라고 명명함)(O6)는, 도 2f에서와 같이, 뺄셈기(701), 밑 수가 2인 지수 함수 연산기(702) 및 나눗셈기(703)를 포함한다.
변형된 수식 6')에서와 같이, 입력 가 입력되면, 뺄셈기(701)가 모든 입력들 중 최대값인 에서 현재 입력 를 빼는 뺄셈을 수행하고, 지수 함수 연산기(702)는 뺄셈기(701)의 결과에 상수 를 곱하여 지수 함수 값을 연산하며, 나눗셈기(703)가 지수 함수 결과에서 1을 나누어 최종 결과()를 출력한다.
본 개시의 실시 예에서는 위에 기술된 바와 같은 활성화 함수를 위한 연산기(O1~O6)를 기반으로 다중 모드 활성화 함수를 위한 가속기 장치를 제공한다.
도 3은 본 개시의 실시 예에 따른 다중 모드 활성화 함수를 위한 가속기 장치의 구조를 나타낸 블록도이고, 도 4는 본 개시의 실시 예에 따른 다중 모드 활성화 함수를 위한 가속기 장치의 구체적인 하드웨어 구조를 나타낸 도이다.
본 개시의 실시 예에 따른 다중 모드 활성화 함수를 위한 가속기 장치(설명의 편의상 '가속기 장치'라고도 명명함)(1)는, 도 3에서와 같이, 선택 신호 생성부(10), 입력 처리부(20), 지수 함수 연산부(30), 분수 연산부(40), 설정값 연산부(50) 및 출력 처리부(60)를 포함한다.
선택 신호 생성부(10)는 가속기 장치(1)가 활성화 함수에 대응하는 모드로 동작하도록 선택 신호를 생성하도록 구성된다. 구체적으로, 선택 신호 생성부(10)는 복수의 선택 신호(S0 ~S5)를 생성하며, 활성화 함수에 따라 복수의 선택 신호(S0 ~S5)의 상태를 변경(0 또는 1로 변경)하거나 임의의 선택 신호를 출력하지 않는 방식을 통해, 가속기 장치(1)가 임의의 활성화 함수에 대응하는 모드로 동작하여 해당 활성화 함수에 따른 연산을 수행하도록 한다.
각 활성화 함수에 대한 선택 신호(S0, S1, S2, S3, S4, S5)의 관계는 다음 표 1과 같다.
활성화 함수 S0 S1 S2 S3 S4 S5
시그모이드 0 0 0 0 0 0
하이퍼볼릭 탄젠트 1 1 0 0 0 0
ReLU - - 0 - 1 0
Leaky ReLU - - 1 1 1 0
Exponential LU 0 1 1 0 1 0
소프트맥스 0 - 0 0 0 1
위의 표 1에서와 같이, 선택 신호(S0, S1, S2, S3, S4, S5)가 "000000"의 상태로 출력되면, 가속기 장치(1)는 제1 모드로 동작하여 시그모이드 활성화 함수에 따른 연산을 수행한다. 선택 신호(S0, S1, S2, S3, S4, S5)가 "110000"의 상태로 출력되면, 가속기 장치(1)는 제2 모드로 동작하여 하이퍼볼록 탄젠트 활성화 함수에 따른 연산을 수행한다. 선택 신호(S0, S1, S2, S3, S4, S5)가 "- - 0 - 10"의 상태로 출력되면, 가속기 장치(1)는 제3 모드로 동작하여 ReLU 활성화 함수에 따른 연산을 수행한다. 선택 신호(S0, S1, S2, S3, S4, S5)가 "- - 1110"의 상태로 출력되면, 가속기 장치(1)는 제4 모드로 동작하여 Leaky ReLU 활성화 함수에 따른 연산을 수행한다. 선택 신호(S0, S1, S2, S3, S4, S5)가 "011010"의 상태로 출력되면, 가속기 장치(1)는 제5 모드로 동작하여 Exponential LU 활성화 함수에 따른 연산을 수행한다. 선택 신호(S0, S1, S2, S3, S4, S5)가 "0-0001"의 상태로 출력되면, 가속기 장치(1)는 제6 모드로 동작하여 소프트맥스 활성화 함수에 따른 연산을 수행한다.
이러한 선택 신호(S0, S1, S2, S3, S4, S5)는 입력 처리부(20), 지수 함수 연산부(30), 분수 연산부(40) 및 출력 처리부(60)로 제공되어, 각 부(20~60)가 활성화 함수에 따른 대응하는 동작을 수행하게 된다.
입력 처리부(20)는 입력 데이터를 그대로 출력하거나, 또는 입력 데이터에서 입력 데이터 중 최대값을 감산한 값의 부호를 반전시켜 출력하도록 구성된다. 이를 위해, 입력 처리부(20)는 도 3에서와 같이, 뺄셈기(21), 멀티플렉서(22), 부호 반전기(23) 및 멀티플렉서(24)를 포함한다. 멀티플렉서(22)는 선택 신호 S5에 따라 0 또는 입력 데이터들 중 최대값() 중 하나를 출력하도록 구성된다. 뺄셈기(21)는 입력 데이터에서 멀티플렉서(22)로부터 출력되는 데이터(0 또는 최대값)을 감산하는 뺄셈을 수행하도록 구성된다. 부호 반전기(23)는 뺄셈기(21)로부터의 결과의 부호를 반전시키도록 구성된다. 멀티플렉서(22)는 선택 신호 S5에 따라 뺄셈기(21)로부터의 결과를 입력 연산 결과로서 지수 함수 연산부(30)로 출력하거나 부호 반전기(23)로부터 제공되는 뺄셈기(21)로부터의 결과의 부호를 반전시킨 것을 입력 연산 결과로서 지수 함수 연산부(30)로 출력하도록 구성된다.
지수 함수 연산부(30)는 입력 처리부(20)로부터 제공되는 입력 연산 결과에 대해 지수 함수 연산을 수행하도록 구성된다. 이를 위해, 지수 함수 연산부(30)는 도 3에서와 같이, 곱셈기(31), 2배 모듈(32), 멀티플렉서(33) 및 밑 수가 2인 지수 함수 연산기(34)를 포함한다.
곱셈기(31)는 입력 연산 결과에 상수 를 곱하도록 구성된다. 2배 모듈(32)은 곱셈기(31)의 결과를 2배 처리하도록 구성된다. 위에서 설명된 바와 같이, 2배 모듈(32)은 배선(wiring) 만으로 구현될 수 있다.
멀티플렉서(33)는 선택 신호 S0에 따라 곱셈기(31)로부터의 결과 또는 2배 모듈(32)로부터의 결과를 지수 함수 연산기(34)로 출력하도록 구성된다. 지수 함수 연산기(34)는 곱셈기(31)로부터의 결과 또는 2배 모듈(32)로부터의 결과에 대해 지수 함수 값(지수 함수 연산 결과)을 연산하도록 구성된다.
한편, 분수 연산부(40)는 지수 함수 연산 결과를 기반으로 활성화 함수에 대응하는 수식(위의 수식 1', 수식 2', 수식 3, 수식 4, 수식 5', 수식 6')에 따라, 분자값 및 분모값을 각각 연산하여 분수 연산 결과를 출력하도록 구성된다. 이를 위해, 분수 연산부(40)는 도 3에서와 같이, 뺄셈기(41), 덧셈기(42), 나눗셈기(43) 및 멀티플렉서(44, 45, 46, 47)을 포함한다.
멀티플렉서(44)는 선택 신호 S1에 따라 0 또는 1을 출력하도록 구성되며, 멀티플렉서(45)는 선택 신호 S5에 따라 0 또는 1을 출력하도록 구성된다.
뺄셈기(41)는 지수 함수 연산 결과에서 멀티플렉서(44)로부터 출력되는 값(0 또는 1)을 감산하도록 구성되며, 멀티플렉서(46)는 선택 신호 S5에 따라 뺄셈기(41)로부터의 결과(분자값 또는 분모값) 또는 1을 나눗셈기(43)로 출력하도록 구성된다.
덧셈기(42)는 지수 함수 연산 결과에서 멀티플렉서(45)로부터 출력되는 값(0 또는 1)을 더하도록 구성되며, 멀티플렉서(47)는 선택 신호 S5에 따라 덧셈기(42)로부터의 결과(분자값 또는 분모값) 또는 1을 나눗셈기(43)로 출력하도록 구성된다.
나눗셈기(43)는 멀티플렉서(46)로부터 출력되는 결과와 멀티플렉서(47)로부터 출력되는 결과의 나눗셈을 수행하여 분수 연산 결과로서 출력하도록 구성된다.
한편, 설정값 연산부(50)는 분수 연산부(40)로부터의 분수 연산 결과 또는 입력 처리부(20)로부터의 입력 연산 결과를 선택하고, 선택된 결과에 대해 선택적으로 설정값()을 곱하여 출력하도록 구성된다. 이를 위해, 설정값 연산부(50)는 도 3에서와 같이, 멀티플렉서(51), 멀티플렉서(52) 및 곱셈기(53)을 포함한다.
멀티플렉서(51)는 선택 신호 S3에 따라 분수 연산 결과 또는 입력 연산 결과를 출력하도록 구성된다. 멀티플렉서(52)는 선택 신호 S4에 따라 설정값() 또는 1을 출력하도록 구성된다. 곱셈기(53)는 멀티플렉서(51)로부터 출력되는 결과에 설정값() 또는 1을 출력하도록 구성된다. 이에 따라 분수 연산 결과 또는 입력 연산 결과에 설정값()이 곱해진 결과가 연산 처리 결과로서 출력되거나 분수 연산 결과 또는 입력 연산 결과가 값의 변환 없이 그대로 연산 처리 결과로서 출력된다.
한편, 출력 처리부(60)는 설정값 연산부(50)로부터 연산 처리 결과 또는 입력 처리부(20)로부터의 입력 연산 결과를 대응하는 활성화 함수에 따른 출력 데이터로서 출력하도록 구성된다. 이를 위해, 출력 처리부(60)는 도 3에서와 같이, 멀티플렉서(61), MSB 선택기(62), 멀티플렉서(63), 및 멀티플렉서(64)를 포함한다.
멀티플렉서(61)는 선택 신호 S2에 따라 설정값 연산부(50)로부터의 연산 처리 결과 또는 0을 출력하도록 구성된다. MSB 선택기(62)는 입력 처리부(20)로부터의 입력 연산 결과의 MSB를 취하여 선택 신호로서 멀티플렉서(63)로 출력하도록 구성된다. 멀티플렉서(63)는 MSB 선택기(62)의 출력을 선택 신호로 사용하여 멀티플렉서(61)로부터 제공되는 연산 처리 결과 또는 0 중 하나와 입력 처리부(20)로부터의 입력 연산 결과 중 하나를 멀티플렉서(64)로 출력하도록 구성된다. 멀티플렉서(64)는 설정값 연산부(50)로부터의 연산 처리 결과 또는 멀티플렉서(63)로부터 제공되는 결과를 출력 데이터로서 출력하도록 구성된다. 이러한 출력 데이터는 활성화 함수에 대응하는 최종 출력으로 사용된다.
이러한 가속기 장치를 기반으로, 본 개시의 실시 예에 따른 활성화 함수에 따른 연산 과정을 설명한다.
도 5a 내지 도 5f는 본 개시의 실시 예에 따른 가속기 장치의 활성화 함수에 따른 연산 수행에 따른 동작 상태를 나타낸 도이다.
먼저, 가속기 장치(1)가 시그모이드 함수에 따른 연산을 수행하는 과정에 대해 설명한다.
도 5a는 본 개시의 실시 예에 따른 가속기 장치가 시그모이드 함수에 따른 연산을 수행하는 동작 상태를 나타낸 도이다.
시그모이드 함수는 먼저 입력에 대한 뺄셈 연산을 수행해야 하는데, 실제 유의미한 뺄셈은 소프트맥스 함수에서만 이루어지므로, 시그모이드 함수에서는 입력에서 0을 뺀다. 이를 위해, 입력 처리부(20)의 멀티플렉서(22)의 선택 신호 S5를 '0'으로 하며, 이에 따라, 멀티플렉서(22)는 선택 신호 S5에 따라 '0'과 입력들 중 최대값인 중 '0'을 출력하며, 뺄셈기(21)는 현재 입력 에서 '0'을 뺀다. 멀티플렉서(24)는 선택 신호 S5에 따라 뺄셈기(21)의 출력을 지수 함수 연산부(30)로 출력한다.
지수 함수 연산부(30)의 곱셈기(31)는 뺄셈기(21)의 출력 결과에 밑 수가 2인 지수 함수 연산을 위해 상수 를 곱한다. 이러한 결과를 그대로 지수 함수 연산기(34)에 입력하기 위해 멀티플렉서(33)의 선택 신호 S0를 '0'으로 선택한다. 이에 따라 멀티플렉서(33)는 선택 신호 S0에 따라 곱셈기(31)의 출력 결과를 지수 함수 연산기(34)로 출력하며, 지수 함수 연산기(34)는 밑 수가 2인 지수 함수 값을 출력한다.
이 때, 수식 1')에 기반하여 분자에는 아무 항도 가산되거나 감산 되지 않아야 하므로, 선택 신호 S1을 '0'으로 한다. 이에 따라 분수 연산부(40)의 멀티플렉서(44)는 '0'을 출력하고, 뺄셈기(41)는 지수 함수 연산기(34)로부터 출력되는 지수 함수 값에서 '0'을 감산하므로, 분자 값에는 변화가 없다. 이 결과가 그대로 출력되어야 하므로, 멀티플렉서(46)의 선택 신호 S5가 '0'이 되어, 분자 값 즉, 뺄셈기(41)의 출력이 그대로 출력된다. 반면, 분모에는 '1'이 더해져야 하므로, 멀티플렉서(45)의 선택 신호 S5를 '0'으로 한다. 이에 따라 분수 연산부(40)의 멀티플렉서(45)가 '1'을 출력하며, 덧셈기(42)는 지수 함수 연산기(34)로부터 출력되는 지수 함수 값에 1을 더한다. 이 결과가 그대로 출력되어야 하므로, 멀티플렉서(47)의 선택 신호 S2가 '0'이 되어, 분모 값 즉, 덧셈기(42)의 출력이 출력된다. 이후, 나눗셈기(43)는 멀티플렉서(46)로부터 출력되는 분자 값을 멀티플렉서(47)로부터 출력되는 분모 값으로 나누어 분수 연산 결과를 출력한다.
이후, 이러한 분수 연산부(40)의 분수 연산 결과가 그대로 출력 데이터로 출력되도록, 설정값 연산부(50)의 멀티플렉서(51)의 선택 신호 S3를 '0'으로 하고, 멀티플렉서(52)의 선택 신호 S4를 '0'으로 한다. 이에 따라 나눗셈기(43)의 나눗셈 결과(분수 연산 결과)가 그대로 출력되고, 곱셈기(53)는 분수 연산부(40)의 나눗셈기(43)의 나눗셈 결과에 멀티플렉서(52)로부터 제공되는 '1'을 곱한다. 이에 따라 나눗셈 결과의 값에는 변화가 없게 된다. 그다음, 출력 처리부(60)의 멀티플렉서(64)의 선택 신호가 S4가 '0'이 되어, 곱셈기(53)의 출력이 시그모이드 함수에 대한 출력 데이터(y)로서 출력되며, 실질적으로 분수 연산 결과가 시그모이드 함수에 대한 출력 데이터(y)로서 출력된다.
도 5b는 본 개시의 실시 예에 따른 가속기 장치가 하이퍼볼릭 탄젠트 함수에 따른 연산을 수행하는 동작 상태를 나타낸 도이다.
하이퍼볼릭 탄젠트 함수 역시 먼저 입력에 대한 뺄셈 연산을 수행해야 하는데, 실제 유의미한 뺄셈은 소프트맥스 함수에서만 이루어지므로, 하이퍼볼릭 탄젠트 함수에서는 입력에서 0을 뺀다. 이를 위해, 입력 처리부(20)의 멀티플렉서(22)의 선택 신호 S5를 '0'으로 하며, 이에 따라, 멀티플렉서(22)는 선택 신호 S5에 따라 '0'과 입력들 중 최대값인 중 '0'을 출력하며, 뺄셈기(21)는 현재 입력 에서 '0'을 뺀다. 멀티플렉서(24)는 선택 신호 S5에 따라 뺄셈기(21)의 출력을 지수 함수 연산부(30)로 출력한다.
지수 함수 연산부(30)의 곱셈기(31)는 뺄셈기(21)의 출력 결과에 밑 수가 2인 지수 함수 연산을 위해 상수 를 곱한다. 그리고 그 결과를 2배 하기 위하여 배선(wiring)으로 구현되는 2배 모듈(32)을 통해, 곱셈기(31)의 결과를 2배 처리한다. 이러한 2배 처리된 결과를 그대로 지수 함수 연산기(34)에 입력하기 위해 멀티플렉서(33)의 선택 신호 S0를 '1'로 선택한다. 이에 따라 멀티플렉서(33)는 선택 신호 S0에 따라 모듈(32)의 출력 결과를 지수 함수 연산기(34)로 출력하며, 지수 함수 연산기(34)는 밑 수가 2인 지수 함수 값을 출력한다.
이 때, 수식 2')에 기반하여 분자에서 '1'을 감산해야 하기 때문에 선택 신호 S1을 '1'로 한다. 이에 따라 분수 연산부(40)의 멀티플렉서(44)는 '1'을 출력하고, 뺄셈기(41)는 지수 함수 연산기(34)로부터 출력되는 지수 함수 값에서 '1'을 감산하여 출력한다. 이 결과가 그대로 출력되어야 하므로, 멀티플렉서(46)의 선택 신호 S5가 '0'이 되어, 분자 값 즉, 뺄셈기(41)의 출력이 그대로 출력된다. 반면, 분모에는 '1'이 더해져야 하므로, 멀티플렉서(45)의 선택 신호 S5를 '0'으로 한다. 이에 따라 분수 연산부(40)의 멀티플렉서(45)가 '1'을 출력하며, 덧셈기(42)는 지수 함수 연산기(34)로부터 출력되는 지수 함수 값에 1을 더한다. 이 결과가 그대로 출력되어야 하므로, 멀티플렉서(47)의 선택 신호 S2가 '0'이 되어, 분모 값이 즉, 덧셈기(42)의 출력이 출력된다. 이후, 나눗셈기(43)는 멀티플렉서(46)로부터 출력되는 분자 값을 멀티플렉서(47)로부터 출력되는 분모 값으로 나눈다.
이후, 이러한 분수 연산부(40)의 분수 연산 결과가 그대로 출력 데이터로 출력되도록, 설정값 연산부(50)의 멀티플렉서(51)의 선택 신호 S3를 '0'으로 하고, 멀티플렉서(52)의 선택 신호 S4를 '0'으로 한다.
이에 따라 나눗셈기(43)의 나눗셈 결과(분수 연산 결과)가 그대로 출력되고, 곱셈기(53)는 분수 연산부(40)의 나눗셈기(43)의 나눗셈 결과에 멀티플렉서(52)로부터 제공되는 '1'을 곱한다. 이에 따라 나눗셈 결과의 값에는 변화가 없게 된다. 그다음, 출력 처리부(60)의 멀티플렉서(64)의 선택 신호가 S4가 '0'이 되어, 곱셈기(53)의 출력이 하이퍼볼릭 탄젠트 함수에 대한 출력 데이터(y)로서 출력되며, 실질적으로 분수 연산 결과가 하이퍼볼릭 탄젠트 함수에 대한 출력 데이터(y)로서 출력된다.
도 5c는 본 개시의 실시 예에 따른 가속기 장치가 ReLU 함수에 따른 연산을 수행하는 동작 상태를 나타낸 도이다.
ReLU 함수 역시 먼저 입력에 대한 뺄셈 연산을 수행해야 하는데, 실제 유의미한 뺄셈은 소프트맥스 함수에서만 이루어지므로, ReLU 함수에서는 입력에서 0를 뺀다. 이를 위해, 입력 처리부(20)의 멀티플렉서(22)의 선택 신호 S5를 '0'으로 하며, 이에 따라, 멀티플렉서(22)는 선택 신호 S5에 따라 '0'과 입력들 중 최대값인 중 '0'을 출력하며, 뺄셈기(21)는 현재 입력 에서 '0'을 뺀다. 멀티플렉서(24)는 선택 신호 S5에 따라 뺄셈기(21)의 출력을 출력 처리부(60)로 출력한다.
ReLU 함수는 입력이 '0'보다 크면 입력이 출력되고, 입력이 '0'보다 작으면 '0'이 출력되어야 한다. 이를 위해, 출력 처리부(60)의 멀티플렉서(61)의 선택 신호 S2를 '0'으로 하며, MSB 선택기(62)는 입력 처리부(20)의 입력 연산 결과(뺄셈기(21)의 출력)에서 MSB를 취하여 이를 멀티플렉서(63)의 선택 신호로서 출력한다. 이 때, 지수 함수 연산부(30), 분수 연산부(40) 및 설정값 연산부(50)는 동작하지 않는다.
이에 따라 멀티플렉서(63)는 MSB 선택기(62)로부터의 선택 신호에 따라 동작하여, 멀티플렉서(61)로부터 출력되는 '0'과 입력 연산 결과(뺄셈기(21)의 출력) 중 하나를 멀티플렉서(64)로 출력한다. 그다음, 멀티플렉서(64)의 선택 신호가 S4가 '1'이 되어, 멀티플렉서(63)의 출력이 ReLU 함수에 대한 출력 데이터(y)로서 출력된다.
도 5d는 본 개시의 실시 예에 따른 가속기 장치가 Leaky ReLU 함수에 따른 연산을 수행하는 동작 상태를 나타낸 도이다.
Leaky ReLU 함수도 먼저 입력에 대한 뺄셈 연산을 수행해야 하는데, 실제 유의미한 뺄셈은 소프트맥스 함수에서만 이루어지므로, Leaky ReLU 함수에서는 입력에서 0를 뺀다. 이를 위해, 입력 처리부(20)의 멀티플렉서(22)의 선택 신호 S5를 '0'으로 하며, 이에 따라, 멀티플렉서(22)는 선택 신호 S5에 따라 '0'과 입력들 중 최대값인 중 '0'을 출력하며, 뺄셈기(21)는 현재 입력 에서 '0'을 뺀다. 멀티플렉서(22)는 선택 신호 S5에 따라 뺄셈기(21)의 출력을 출력 처리부(60)로 출력한다.
Leaky ReLU 함수는 입력이 '0'보다 크면 입력이 출력되고, 입력이 '0'보다 작으면 입력에 를 곱한 결과가 출력되어야 한다. 이를 위해, 설정값 연산부(50)의 멀티플렉서(51)의 선택 신호 S3를 '1'로 하고, 멀티플렉서(52)의 선택 신호 S4를 '1'로 한다. 이에 따라, 멀티플렉서(51)가 입력 처리부(20)의 입력 연산 결과(뺄셈기(21)의 출력)를 출력하고, 멀티플렉서(52)가 를 출력하며, 곱셈기(53)가 멀티플렉서(51)의 출력에 를 곱하고, 그 결과(입력에 를 곱한 결과)가 설정 연산 결과로서 출력 처리부(60)로 제공된다. 이 때, 지수 함수 연산부(30) 및 분수 연산부(40)는 동작하지 않는다.
출력 처리부(60)의 멀티플렉서(61)의 선택 신호 S2를 '1'로 하며, 이에 따라 멀티플렉서(61)는 입력에 를 곱한 결과에 대응하는 설정 연산 결과를 멀티플렉서(63)로 출력한다. 한편, MSB 선택기(62)는 입력 처리부(20)의 입력 연산 결과(뺄셈기(21)의 출력)에서 MSB를 취하여 이를 멀티플렉서(63)의 선택 신호로서 출력한다. 이에 따라 멀티플렉서(63)는 MSB 선택기(62)로부터의 선택 신호에 따라 동작하여, 멀티플렉서(61)로부터 출력되는 설정 연산 결과(입력에 를 곱한 결과)와 입력 연산 결과(뺄셈기(21)의 출력) 중 하나를 멀티플렉서(64)로 출력한다. 그다음, 멀티플렉서(64)의 선택 신호가 S4가 '1'이 되어, 멀티플렉서(63)의 출력이 Leaky ReLU 함수에 대한 출력 데이터(y)로서 출력된다.
도 5e는 본 개시의 실시 예에 따른 가속기 장치가 Exponential LU 함수에 따른 연산을 수행하는 동작 상태를 나타낸 도이다.
Exponential LU 함수도 먼저 입력에 대한 뺄셈 연산을 수행해야 하는데, 실제 유의미한 뺄셈은 소프트맥스 함수에서만 이루어지므로, Exponential LU 함수에서는 입력에서 0를 뺀다. 이를 위해, 입력 처리부(20)의 멀티플렉서(22)의 선택 신호 S5를 '0'으로 하며, 이에 따라, 멀티플렉서(22)는 선택 신호 S5에 따라 '0'과 입력들 중 최대값인 중 '0'을 출력하며, 뺄셈기(21)는 현재 입력 에서 '0'을 뺀다. 멀티플렉서(24)는 선택 신호 S5에 따라 뺄셈기(21)의 출력을 지수 함수 연산부(30)로 출력한다.
지수 함수 연산부(30)의 곱셈기(31)는 뺄셈기(21)의 출력 결과에 밑 수가 2인 지수 함수 연산을 위해 상수 를 곱한다. 이러한 결과를 그대로 지수 함수 연산기(34)에 입력하기 위해 멀티플렉서(33)의 선택 신호 S0를 '0'으로 선택한다. 이에 따라 멀티플렉서(33)는 선택 신호 S0에 따라 곱셈기(31)의 출력 결과를 지수 함수 연산기(34)로 출력하며, 지수 함수 연산기(34)는 밑 수가 2인 지수 함수 값을 출력한다.
이 때, 수식 5')에 기반하여 분자에서 '1'을 감산해야 하기 때문에 선택 신호 S1을 '1'로 한다. 이에 따라 분수 연산부(40)의 멀티플렉서(44)는 '1'을 출력하고, 뺄셈기(41)는 지수 함수 연산기(34)로부터 출력되는 지수 함수 값에서 '1'을 감산하여 출력한다. 이 결과가 그대로 출력되어야 하므로, 멀티플렉서(46)의 선택 신호 S5가 '0'이 되어, 분자 값 즉, 뺄셈기(41)의 출력이 그대로 출력된다. 이 값이 그대로 출력되도록, 멀티플렉서(47)의 선택 신호 S2를 '1'로 한다. 이에 따라 나눗셈기(43)는 멀티플렉서(46)를 통해 출력되는 뺄셈기(41)의 출력을 '1'로 나누며, 그 결과 뺄셈기(41)의 출력이 그대로 출력된다.
설정값 연산부(50)의 멀티플렉서(51)의 선택 신호 S3를 '0'으로 하고, 멀티플렉서(52)의 선택 신호 S4를 '1'로 하며, 멀티플렉서(61)의 선택 신호 S2를 '1'로 한다. 이에 따라, 멀티플렉서(51)가 분수 연산부(40)의 분수 연산 결과(뺄셈기(41)의 출력)를 출력하고, 멀티플렉서(52)가 를 출력하며, 곱셈기(53)가 멀티플렉서(51)의 출력에 를 곱하고, 그 결과(분수 연산 결과에 를 곱한 결과)가 설정 연산 결과로서 출력 처리부(60)로 제공된다.
출력 처리부(60)의 멀티플렉서(61)의 선택 신호 S2를 '1'로 하며, 이에 따라 멀티플렉서(61)는 분수 연산 결과에 를 곱한 결과에 대응하는 설정 연산 결과를 멀티플렉서(63)로 출력한다. 한편, MSB 선택기(62)는 입력 처리부(20)의 입력 연산 결과(뺄셈기(21)의 출력)에서 MSB를 취하여 이를 멀티플렉서(63)의 선택 신호로서 출력한다. 이에 따라 멀티플렉서(63)는 MSB 선택기(62)로부터의 선택 신호에 따라 동작하여, 멀티플렉서(61)로부터 출력되는 분수 연산부(40)의 연산 결과에 를 곱한 결과와 입력 연산 결과(뺄셈기(21)의 출력) 중 하나를 멀티플렉서(64)로 출력한다. 그다음, 멀티플렉서(64)의 선택 신호가 S4가 '1'이 되어, 멀티플렉서(63)의 출력이 Exponential LU 함수에 대한 출력 데이터(y)로서 출력된다.
도 5f는 본 개시의 실시 예에 따른 가속기 장치가 소프트맥스 함수에 따른 연산을 수행하는 동작 상태를 나타낸 도이다.
소프트맥스 함수 역시 입력에 대한 뺄셈 연산을 수행하는데, 이 경우, 입력 의 최대값()에서 입력을 빼야 한다. 이를 위해, 멀티플렉서(22)의 선택 신호 S5를 '1'로 한다. 따라서, 멀티플렉서(22)는 선택 신호 S5에 따라 '0'과 입력들의 최대값인 중에서, ''를 출력하며, 뺄셈기(21)는 현재 입력 에서 ''를 뺀다. 그 결과가 이므로, 이의 부호를 반전시켜야 한다. 이를 위해, 멀티플렉서(24)의 선택 신호 S5를 '1'로 한다. 이후, 부호 반전기(23)가 뺄셈기(21)의 출력()의 부호를 반전시켜 출력하며, 멀티플렉서(24)는 선택 신호 S5에 따라 부호 반전기(23)의 출력을 지수 함수 연산부(30)로 출력한다.
지수 함수 연산부(30)의 곱셈기(31)는 뺄셈기(21)의 출력 결과에 밑 수가 2인 지수 함수 연산을 위해 상수 를 곱한다. 이러한 결과를 그대로 지수 함수 연산기(34)에 입력하기 위해 멀티플렉서(33)의 선택 신호 S0를 '0'으로 선택한다. 이에 따라 멀티플렉서(33)는 선택 신호 S0에 따라 곱셈기(31)의 출력 결과를 지수 함수 연산기(34)로 출력하며, 지수 함수 연산기(34)는 밑 수가 2인 지수 함수 값을 출력한다.
이 때, 수식 6')에 기반하여 1을 수식의 분모 값으로 나누어야 하기 때문에, 분수 연산부(40)의 멀티플렉서(45)의 선택 신호 S5를 '1'로 하여 분모 값에 변화가 없도록 하고, 멀티플렉서(46)의 선택 신호 S5를 '1'로 한다. 이에 따라 분수 연산부(40)의 멀티플렉서(45)가 '0'을 출력하며, 덧셈기(42)는 지수 함수 연산기(34)로부터 출력되는 지수 함수 값에 0을 더한다. 이 결과가 그대로 출력되어야 하므로, 멀티플렉서(47)의 선택 신호 S2가 '0'이 되어, 분모 값 즉, 덧셈기(42)의 출력이 출력된다. 이후, 나눗셈기(43)는 멀티플렉서(46)로부터 출력되는 '1'을 멀티플렉서(47)로부터 출력되는 분모 값으로 나눈다.
이후, 이러한 분수 연산부(40)의 분수 연산 결과가 그대로 출력 데이터로 출력되도록, 설정값 연산부(50)의 멀티플렉서(51)의 선택 신호 S3를 '0'으로 하고, 멀티플렉서(52)의 선택 신호 S4를 '0'으로 한다. 이에 따라 나눗셈기(43)의 나눗셈 결과(분수 연산 결과)가 그대로 출력되고, 곱셈기(53)는 분수 연산부(40)의 나눗셈기(43)의 나눗셈 결과에 멀티플렉서(52)로부터 제공되는 '1'을 곱한다. 이에 따라 나눗셈 결과의 값에는 변화가 없게 된다.
그다음, 출력 처리부(60)의 멀티플렉서(64)의 선택 신호가 S4가 '0'이 되어, 곱셈기(53)의 출력이 소프트맥스 함수에 대한 출력 데이터(y)로서 출력되며, 실질적으로 분수 연산 결과가 소프트맥스 함수에 대한 출력 데이터(y)로서 출력된다.
한편, 위에 기술된 바와 같이 동작하는 가속기 장치(1)에서, 밑 수가 2인 지수 함수 연산기의 구조를 다음과 같이 구현할 수 있다.
도 6은 본 개시의 실시 예에 따른 가속기 장치의 지수 함수 연산기의 구조를 나타낸 도이다.
위에서 살펴본 바와 같이, 밑 수가 인 자연 상수를 이용한 지수 함수는 밑 수가 2인 지수 함수로 아래 수학식과 같이 변형될 수 있다.
이 때, 밑 수가 2인 지수 함수 는 다시 아래와 같이 변형된다.
여기서 는 입력 의 정수부(integer part)이고, 는 입력 의 소수부(fraction part)이다. 따라서, 밑 수가 2인 지수 함수는 값을 구한 후 이를 만큼 시프트하면 된다. 이에 따라, 밑 수가 2인 지수 함수 연산기(위의 가속기 장치(1)에서, 지수 함수 연산부(30)의 지수 함수 연산기(34)에 대응함)는 도 에서와 같이, 소수부 룩업 테이블(Look-Up Table, 904) 그리고 시프터(Shifter)(SFT)(905)를 포함하며, 상수 곱셈기(901)는 위의 가속기 장치(1)에서, 지수 함수 연산부(30)의 곱셈기(31)에 대응한다.
입력 가 입력되면, 곱셈기(901)는 입력 에 상수 를 곱하고, 이 결과를 다시 정수부(903)와 소수부(902)로 나눈다. 소수부(902)는 소수부 룩업 테이블(904)에 입력되어 연산되며, 그 결과가 시프터(905)로 출력된다.
시프터(905)는 정수부(903)의 지수인 만큼 소수부 룩업 테이블(904)의 출력을 시프트하여, 지수 함수의 출력 데이터로서 출력한다. 여기서, 소수부 룩업 테이블(904)에서 소수부(902)가 최대 1이 연산되어 출력될 수 있으므로, 실제 시프트되는 값의 최대값은 이 된다.
한편, 소수부 룩업 테이블(904)는 다음과 같이 구성될 수 있다.
먼저, 밑 수가 2인 지수 함수에서 소수부의 지수를 이진수로 표현했을 때 연산의 예는 아래와 같다.
즉, 소수부를 자리수에 따라 나누고 각 자릿수에 대한 2의 지수승 값을 연산하여 곱해주면, 입력에 대한 지수승 값을 연산할 수 있다. 본 개시의 실시 예에서는 각 자리수에 따른 2의 지수승 값을 룩업 테이블로 구성하고 그 결과를 곱하는 방식을 제안한다.
도 7은 본 개시의 실시 예에 따른 지수 함수 연산기의 소수부 룩업 테이블의 구조를 나타낸 도이다.
본 개시의 실시 예에 따른 지수 함수 연산기의 소수부 룩업 테이블(904)는 소수부 레지스터(1001), 룩업 테이블(1003, 1004, 1005, 1006), 멀티플렉서(1007~1010) 및 곱셈기(1011~1013)를 포함한다. 도 6에서 '1002'는 가상의 소수점을 나타낸다.
소수부 레지스터(1001)의 첫 번째 비트 이 '1'이면, 이는 이진수 소수 입력 0.1이 입력된 것을 나타내고, 두번째 비트인 가 '1'이면 이는 이진수 소수 입력 0.01이 입력된 것을 나타낸다. 이에 따라 소수부 레지스터(1001)의 각 이진수 소수 입력의 비트에 따라 대응하는 룩업 테이블(1003, 1004, 1005, 1006)이 멀티플렉서(1007~1010)를 통해 출력된다.
소수부 비트가 '0'인 경우 해당 자리의 입력이 없기 때문에, 그 경우 멀티플렉서는 '1'을 출력한다. 이는 출력 데이터가 모두 곱해지기 때문에 곱셈에 영향을 주지 않기 위해서 '1'을 출력한다. 각 자릿수에 따른 룩업 테이블의 결과는 곱셈기(1011~1013)에서 곱해진 후 출력 데이터를 출력된다. 이와 같이 이진수의 소수부 입력에 따라 룩업 테이블을 구성하고 연산하는 경우, 밑 수가 인 지수 함수 전체를 룩업 테이블로 구성하는 것보다 높은 정밀도의 연산을 수행할 수 있다.
다음 표 2는 소수부 입력이 4자리인 경우의 소수부 룩업 테이블의 각 자릿수에 따른 입력과 해당하는 실수 입력을 나타낸다.
이러한 표 2는 소수부 입력이 4비트인 경우의 실수 입력과 해당 자릿수의 계산 결과를 나타낸다.
위의 실시 예에 따른 가속기 장치를 기반으로 비선형 활성화 함수를 하드웨어로 구현하여 보다 빠르게 대응하는 연산을 수행할 수 있다.
도 8은 본 개시의 실시 예에 따른 가속 장치가 적용되는 신경망 장치의 구조를 나타낸 도이다.
신경망 장치(2)는 신경망 가속 장치(2a) 및 메모리 장치(2b)를 포함할 수 있다. 일 구현 예로, 신경망 장치(2)는 YOLO, ResNet, ResNeXt, DenseNet, GCN(Graph Convolutional Network) 등과 같은 다양한 심층 신경망(DNN; Deep Neural Network)을 구동하도록 구성될 수 있다. 일 구현 예로, 신경망 장치(2)는 개인용 컴퓨터, 노트북, 태블릿, 스마트폰, 서버, 워크스테이션, 블랙박스, 자동차 전장 시스템 등과 같은 다양한 컴퓨팅 시스템 또는 정보 처리 시스템을 포함할 수 있다.
신경망 가속 장치(2a)는 외부로부터 수신된 입력 정보를 기반으로 심층 신경망 학습을 수행하도록 구성될 수 있으며, 특히, 위에 기술된 실시 예에 따른 활성화 함수에 따른 연산을 수행하도록 구성될 수 있다. 예를 들어, 신경 가속 장치(2a)는 외부로부터 수신된 입력 정보 및 메모리 장치(2b)로부터의 가중치 정보를 기반으로 심층 신경망 학습을 수행할 수 있다. 메모리 장치(2b)는 심층 신경망 학습에 사용되는 가중치 정보를 저장하거나 또는 신경망 가속 장치(2a)에 의해 수행된 심층 신경망 학습의 결과를 저장하도록 구성될 수 있다.
예시적인 실시 예에서, 신경망 가속 장치(2a)의 심층 신경망 학습은 컨볼루션 신경망(CNN; convolution neural network)을 기반으로 수행될 수 있으나, 본 개시는 이에 한정되지 않는다.
이상에서 본 개시의 실시 예에 대하여 상세하게 설명하였지만 본 개시의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 개시의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 개시의 권리범위에 속하는 것이다.

Claims (20)

  1. 다중 모드 활성화 함수를 위한 가속기 장치로서,
    복수의 활성화 함수 각각에 대응하는 연산을 수행하는 모드에 따라 복수의 선택 신호를 생성하도록 구성된 선택 신호 생성부;
    상기 복수의 선택 신호 중 적어도 하나의 선택 신호에 따라 입력 데이터를 그대로 출력하거나, 또는 입력 데이터에서 입력 데이터 중 최대값을 감산한 값의 부호를 반전시켜 출력하도록 구성된 입력 처리부;
    상기 복수의 선택 신호 중 적어도 하나의 선택 신호에 따라 상기 입력 처리부로부터의 출력에 지수 함수 연산을 수행하도록 구성된 지수 함수 연산부;
    상기 복수의 선택 신호 중 적어도 하나의 선택 신호에 따라, 상기 지수 함수 연산 결과에 기반한 분자값 및 분모값을 이용한 분수 연산을 수행하여 출력하도록 구성된 분수 연산부;
    상기 복수의 선택 신호 중 적어도 하나의 선택 신호에 따라, 상기 분수 연산부의 출력 또는 상기 입력 처리부의 출력에 대해 선택적으로 설정값을 곱하는 연산을 수행하도록 구성된 설정값 연산부; 및
    상기 복수의 선택 신호 중 적어도 하나의 선택 신호에 따라, 상기 설정값 연산부의 출력 또는 상기 입력 처리부의 출력을 해당 활성화 함수에 따른 출력 데이터로서 출력하도록 구성된 출력 처리부
    를 포함하는 가속기 장치.
  2. 제1항에 있어서,
    상기 복수의 활성화 함수는 시그모이드(Sigmoid) 함수, 하이퍼볼릭 탄젠트(Hyperbolic Tangent) 함수, ReLU (Rectified Linear Unit) 함수, Leaky ReLU 함수, ELU(Exponential LU) 함수 및 소프트맥스(SoftMax) 함수를 포함하는, 가속기 장치.
  3. 제1항에 있어서,
    상기 입력 처리부는 연산을 수행하고자 하는 활성화 함수가 소프트맥스 함수인 경우에만 입력 데이터에서 입력 데이터 중 최대값을 감산한 값의 부호를 반전시켜 출력하고, 나머지 활성화 함수에 대해서는 입력 데이터를 그대로 출력하는, 가속기 장치.
  4. 제3항에 있어서,
    상기 입력 처리부는,
    하나의 선택 신호에 따라 0 또는 최대값을 출력하도록 구성된 멀티플렉서;
    상기 입력 데이터에서 상기 멀티플렉서로부터의 출력을 감산하도록 구성된 뺄셈기;
    상기 뺄셈기의 출력의 부호를 반전시키도록 구성된 부호 반전기; 및
    상기 선택 신호에 따라 상기 뺄셈기의 출력 또는 상기 부호 반전기의 출력을 출력하도록 구성된 멀티플렉서
    를 포함하는, 가속기 장치.
  5. 제1항에 있어서,
    상기 지수 함수 연산부와 상기 분수 연산부는 ReLU 함수, Leaky ReLU 함수에 대한 연산 수행시에는 동작하지 않는, 가속기 장치.
  6. 제1항에 있어서,
    상기 지수 함수 연산부는 상기 입력 처리부로부터의 출력에 상수 를 곱하고 지수 연산을 수행하여 지수 연산 함수 값으로 출력하거나 상기 가 곱해진 값을 2배 처리한 다음에 지수 연산을 수행하여 지수 연산 함수 값으로 출력하는, 가속기 장치.
  7. 제6항에 있어서,
    상기 지수 함수 연산부는 하이퍼볼릭 탄젠트 함수의 경우에만, 상기 가 곱해진 값을 2배 처리한 다음에 지수 연산을 수행하여 지수 연산 함수 값으로 출력하는, 가속기 장치.
  8. 제6항에 있어서,
    상기 지수 함수 연산부는
    상기 입력 처리부의 결과에 상수 를 곱하도록 구성된 곱셈기;
    상기 곱셈기의 출력을 2배 처리하도록 구성된 2배 모듈;
    하나의 선택 신호에 따라 상기 곱셈기의 출력 또는 상기 2배 모듈의 출력을 출력하도록 구성된 멀티플렉서; 및
    상기 멀티플렉서로부터 출력되는 결과에 지수 연산을 수행하여 지수 연산 함수 값으로 출력하도록 구성된 지수 함수 연산기
    를 포함하는, 가속기 장치.
  9. 제1항에 있어서,
    상기 분수 연산부는 연산을 수행하고자 하는 활성화 함수에 따라 선택적으로, 상기 지수 함수 연산부의 지수 함수 결과에 대해 1을 감산하는 뺄셈 또는 1을 더하는 덧셈을 선택적으로 수행하여 분자값 및 분모값을 획득하고, 상기 분자값 및 분모값에 기반한 나눗셈을 수행하여 이용한 분수 연산을 수행하여 출력하는, 가속기 장치.
  10. 제9항에 있어서,
    연산을 수행하고자 하는 활성화 함수가 시그모이드 함수 또는 하이퍼볼릭 탄젠트 함수일 때, 상기 분수 연산부가 상기 분자값 및 분모값에 기반한 나눗셈을 수행하여 이용한 분수 연산을 수행하여 출력하며,
    상기 활성화 함수가 ReLU 함수 또는 Leaky ReLU 함수일 때, 상기 분수 연산부가 동작하지 않으며,
    상기 활성화 함수가 ELU 함수일 때, 상기 분수 연산부가 상기 지수 함수 결과에서 1을 감산한 값을 그대로 출력하며, 그리고,
    상기 활성화 함수가 소프트맥스 함수일 때, 상기 분수 연산부는 분자값을 1로 하고 상기 지수 함수 결과를 분모값으로 사용하여 분수 연산을 수행하는, 가속기 장치.
  11. 제10항에 있어서,
    상기 분수 연산부는
    제1 선택 신호에 따라 0 또는 1을 출력하도록 구성된 제1 멀티플렉서;
    제2 선택 신호에 따라 0 또는 1을 출력하도록 구성된 제2 멀티플렉서;
    상기 지수 함수 연산부의 지수 함수 결과에서 상기 제1 멀티플렉서의 출력을 감산하도록 구성된 뺄셈기;
    상기 지수 함수 연산부의 지수 함수 결과에서 상기 제2 멀티플렉서의 출력을 더하도록 구성된 덧셈기;
    상기 제2 선택 신호에 따라 상기 뺄셈기의 출력 또는 1을 출력하도록 구성된 제3 멀티플렉서;
    상기 제3 선택 신호에 따라 상기 덧셈기의 출력 또는 1을 출력하도록 구성된 제4 멀티플렉서; 및
    상기 제3 멀티플렉서의 출력을 분자값으로 사용하고 상기 제4 멀티플렉서의 출력을 분모값으로 사용해서 나눗셈을 수행하도록 구성된 나눗셈기
    를 포함하는, 가속기 장치.
  12. 제1항에 있어서,
    연산을 수행하고자 하는 활성화 함수가 Leaky ReLU 함수 또는 ELU 함수일 때, 상기 설정값 연산부가 상기 분수 연산부의 출력 또는 상기 입력 처리부의 출력에 대해 상기 설정값을 곱하여 출력하는, 가속기 장치.
  13. 제1항에 있어서,
    상기 출력 처리부는,
    상기 입력 처리부의 결과의 MSB(Most Significant Bit)를 취하여 선택 신호로 출력하도록 구성된 선택기
    를 포함하는, 가속기 장치.
  14. 제13항에 있어서,
    상기 출력 처리부는,
    연산을 수행하고자 하는 활성화 함수가 ReLU 함수일 때, 상기 선택기의 선택 신호에 따라 0 또는 상기 입력 처리부의 결과를 출력하며,
    연산을 수행하고자 하는 활성화 함수가 Leaky ReLU 함수 또는 ELU 함수일 때, 상기 선택기의 선택 신호에 따라 상기 입력 처리부의 결과 또는 상기 설정값 연산부의 결과를 출력하고,
    연산을 수행하고자 하는 활성화 함수가 다른 함수일 때, 상기 선택 신호 생성부로부터의 선택 신호에 따라 상기 입력 처리부의 결과를 출력하는, 가속기 장치.
  15. 제14항에 있어서,
    상기 출력 처리부는,
    제1 선택 신호에 따라 0 또는 상기 설정값 연산부의 결과를 출력하도록 구성된 제1 멀티플렉서;
    상기 선택기의 선택 신호에 따라 상기 입력 처리부의 결과 또는 상기 제1 멀티플렉서의 출력을 출력하도록 구성된 제2 멀티플렉서; 및
    제2 선택 신호에 따라 상기 설정값 연산부의 결과 또는 상기 제2 멀티플렉서의 출력을 출력 데이터로서 출력하도록 구성된 제3 멀티플렉서
    를 포함하는, 가속기 장치.
  16. 제1항에 있어서,
    상기 지수 함수 연산부는
    입력 데이터에 상수 를 곱하도록 구성된 곱셈기;
    상기 곱셈기의 결과 중 소수부를 입력으로 하여 연산을 수행하도록 구성된 소수부 룩업 테이블; 및
    상기 소수부 룩업 테이블의 결과를 상기 곱셈기의 결과 중 정수부의 지수만큼 시프트하여 지수 함수 연산 결과로 출력하도록 구성된 시프터
    를 포함하는, 가속기 장치.
  17. 제16항에 있어서,
    상기 시프터에 의해 실제 시프트되는 값의 최대값은 이며, 상기 는 상기 정수부의 지수인, 가속기 장치.
  18. 제16항에 있어서,
    상기 소수부 룩업 테이블은
    상기 소수부의 입력 비트의 자릿수에 따른 지수 함수 결과를 각각 출력하도록 구성된 복수의 룩업 테이블;
    상기 소수부의 하나의 입력 비트를 선택 신호로 사용하여, 복수의 룩업 테이블 중 상기 입력 비트의 자릿수에 대응하는 룩업 테이블의 지수 함수 결과 또는 1을 출력하도록 구성된 복수의 멀티플렉서; 및
    상기 복수의 멀티플렉서의 출력을 곱하여 출력하도록 구성된 곱셈기
    를 포함하는, 가속기 장치.
  19. 제18항에 있어서,
    상기 복수의 룩업 테이블 각각은, 상기 소수부의 입력 비트의 자릿수에 대한 2의 지수승 값을 연산하여 곱하여 지수 함수 결과로서 출력하는, 가속기 장치.
  20. 제1항에 있어서,
    상기 가속기 장치는 신경망 학습을 수행하는 신경망 장치의 가속기 장치로 사용되는, 가속기 장치.













KR1020220041846A 2022-04-04 2022-04-04 다중 모드 활성화 함수를 위한 가속기 장치 KR20230143041A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220041846A KR20230143041A (ko) 2022-04-04 2022-04-04 다중 모드 활성화 함수를 위한 가속기 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220041846A KR20230143041A (ko) 2022-04-04 2022-04-04 다중 모드 활성화 함수를 위한 가속기 장치

Publications (1)

Publication Number Publication Date
KR20230143041A true KR20230143041A (ko) 2023-10-11

Family

ID=88295161

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220041846A KR20230143041A (ko) 2022-04-04 2022-04-04 다중 모드 활성화 함수를 위한 가속기 장치

Country Status (1)

Country Link
KR (1) KR20230143041A (ko)

Similar Documents

Publication Publication Date Title
Mohan et al. Residue Number Systems
TWI701612B (zh) 用於神經網路中激勵函數的電路系統及其處理方法
Lotrič et al. Applicability of approximate multipliers in hardware neural networks
Lin et al. A digital circuit design of hyperbolic tangent sigmoid function for neural networks
JPH02196328A (ja) 浮動小数点演算装置
Qin et al. A novel approximation methodology and its efficient vlsi implementation for the sigmoid function
CN109634558B (zh) 可编程的混合精度运算单元
CN112051980B (zh) 一种基于牛顿迭代法的非线性激活函数计算装置
Hung et al. Fast division algorithm with a small lookup table
Prabhu et al. A delay efficient vedic multiplier
Zhu et al. Design of approximate radix-256 booth encoding for error-tolerant computing
Chen et al. Approximate softmax functions for energy-efficient deep neural networks
CN111882050B (zh) 基于fpga的用于提高bcpnn速度的设计方法
JP4273071B2 (ja) 除算・開平演算器
Chandra A novel method for scalable VLSI implementation of hyperbolic tangent function
US20230086090A1 (en) Methods and Apparatus for Quotient Digit Recoding in a High-Performance Arithmetic Unit
KR20230143041A (ko) 다중 모드 활성화 함수를 위한 가속기 장치
Murillo et al. PLAUs: Posit logarithmic approximate units to implement low-cost operations with real numbers
WO2022164678A1 (en) Digital circuitry for normalization functions
Villalba-Moreno Digit recurrence floating-point division under HUB format
CN113672196A (zh) 一种基于单数字信号处理单元的双乘法计算装置和方法
Lotrič et al. Logarithmic multiplier in hardware implementation of neural networks
Saha et al. High speed multiplier using high accuracy floating point logarithmic number system
Kim et al. Applying piecewise linear approximation for DNN non-linear activation functions to Bfloat16 MACs
Pazhani et al. High-Speed and Area-Efficient Modified Binary Divider