KR20190044550A - 신경망에서의 무작위성 생성 - Google Patents

신경망에서의 무작위성 생성 Download PDF

Info

Publication number
KR20190044550A
KR20190044550A KR1020180125337A KR20180125337A KR20190044550A KR 20190044550 A KR20190044550 A KR 20190044550A KR 1020180125337 A KR1020180125337 A KR 1020180125337A KR 20180125337 A KR20180125337 A KR 20180125337A KR 20190044550 A KR20190044550 A KR 20190044550A
Authority
KR
South Korea
Prior art keywords
bit
result
execution unit
distribution
instruction
Prior art date
Application number
KR1020180125337A
Other languages
English (en)
Other versions
KR102181385B1 (ko
Inventor
스테판 펠릭스
코스타 고드프리 다
Original Assignee
그래프코어 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 그래프코어 리미티드 filed Critical 그래프코어 리미티드
Publication of KR20190044550A publication Critical patent/KR20190044550A/ko
Application granted granted Critical
Publication of KR102181385B1 publication Critical patent/KR102181385B1/ko

Links

Images

Classifications

    • 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/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • 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/58Random or pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • 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
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural 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/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

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

Abstract

본 발명은 미리결정된 확률 분포에 기초하여 난수를 발생시키는 컴퓨터 프로그램 명령어들을 실행하도록 구성된 실행 유닛과 관련된 발명에 관한 것이다. 상기 실행 유닛은 명령어의 실행시에 적어도 랜덤화된 비트 스트링을 생성하도록 구성된 하드웨어 의사난수 생성기와, 랜덤화된 비트 스트링으로부터 선택된 미리 결정된 비트 길이의 다수의 비트 시퀀스를 수신하고 이들을 합산하여 결과를 산출하도록 구성된 부가 회로를 포함한다.

Description

신경망에서의 무작위성 생성{GENERATING RANDOMNESS IN NEURAL NETWORKS}
본 발명은 신경망에서의 무작위성(randomness)을 생성하는 것에 관한 것이다.
신경망들은 기계 학습 및 인공 지능 분야에서 사용된다. 신경망들은 링크들에 의해 상호 연결되고 서로 상호 작용하는 노드들의 세트들의 배열을 포함한다. 컴퓨팅에서 신경망들의 원리는 전기 자극이 인간의 두뇌에서 어떻게 정보를 전달하는지에 대한 정보를 기반으로 한다. 이러한 이유로 노드들은 종종 뉴런으로 지칭된다. 이들은 정점(vertices)으로 지칭될 수도 있다. 상기 링크들은 때론 에지들로 지칭된다. 상기 망은 입력 데이터를 취할 수 있으며 특정 노드들은 데이터에 대한 연산을 수행한다. 이러한 연산의 결과는 다른 노드들로 전달된다. 각 노드의 출력을 활성화 또는 노드 값이라고 한다. 각 링크는 가중치와 연관된다. 가중치는 신경망의 노드들 사이의 연결성(connectivity)을 정의한다. 신경망이 학습할 수 있는 많은 다른 기술이 알려져 있는데, 이는 가중치의 값들을 변경함으로써 발생한다.
도 1은 신경망에서 노드들의 한 배열의 매우 단순화된 버전을 도시한다. 이러한 유형의 배열은 학습 또는 훈련에 종종 사용되며, 노드들의 입력 계층, 노드들의 은닉(hidden) 계층 및 노드들의 출력 계층으로 구성된다. 실제로, 각 계층에 많은 노드들이 있으며, 요즘에는 섹션 당 둘 이상의 계층이 있을 수 있다. 입력 계층(Ni)의 각 노드는 그 노드에 제공된 데이터에 대해 함수(function)를 수행함으로써 생성된 활성화 또는 노드 값을 출력에서 생성할 수 있다. 입력 계층으로부터의 노드 값들의 벡터는 은닉 계층 내의 각 노드의 입력에서 각각의 가중치들의 벡터에 의해 스케일링되고, 각각의 가중치는 은닉 계층에서의 특정 노드와 그 연결된 노드의 연결성을 정의한다. 실제로 망들은 수백만 개의 노드들을 갖고, 다차원적으로 연결될 수 있으므로 상기 벡터는 더 자주 텐서(tensor)이다. 노드(Nh)의 입력에 적용된 가중치는 w0 ... .w2로 표시된다. 상기 입력 계층의 각 노드는 적어도 은닉 계층의 각 노드에 처음 연결된다. 은닉 계층의 각 노드는 그들에 제공되는 데이터에 대한 활성화 함수를 수행할 수 있고, 출력 계층 0의 각 노드 N0에 공급되는 출력 벡터를 유사하게 생성할 수 있다. 각 노드는 예를 들어 노드의 입력 활성화와 각 인커밍 링크들에 대한 고유 가중치들의 내적(dot product)을 수행함으로써 인커밍 데이터에 대해 가중치를 부여한다. 그 다음 가중치가 부여된 데이터에 대해 활성화 함수를 수행한다. 상기 활성화 함수는 예를 들어 시그모이드(sigmoid)일 수 있다(도 1a 참조). 상기 망은 입력 계층에서 데이터 입력을 연산하고, 각 노드의 활성화에 가중치를 할당하고, 은닉 계층의 각 노드에 대한 데이터 입력에 따라 학습한다(가중치를 부여하고 활성화 함수를 수행하여). 따라서, 은닉 계층의 노드들은 가중치가 있는 데이터에 대해 연산하고 출력을 출력 계층의 노드들에 제공한다. 상기 출력 계층의 노드들은 또한 가중치를 할당할 수 있다. 각 가중치는 해당 에러 값으로 특정된다. 또한, 각 노드는 에러 조건과 연관될 수 있다. 각 노드에서의 에러 조건은 노드의 가중치에서의 에러가 특정 레벨 또는 허용 수준 이하인지의 측정치(measure)를 제공한다. 다양한 학습 방법이 있지만 각각의 경우에 망을 통해 도 1의 왼쪽에서 오른쪽으로의 정방향 전파(Forward Propagation), 전체 에러의 계산 및 에러의 망을 통해 도 1의 오른쪽에서 왼쪽으로의 역방향 전파(역 전파)가 있다. 다음 사이클에서, 각 노드는 역 전파 에러를 고려하여 수정된 가중치의 세트를 생성한다. 이러한 방식으로, 상기 망은 원하는 동작을 수행하도록 훈련될 수 있다.
신경망에서 발생할 수 있는 한 가지 문제는 "오버피팅(overfitting)"이다. 수백만 또는 수십억 개의 파라미터들(가중치들)이 있는 대규모 망은 쉽게 오버피팅될 수 있다. 오버피팅은 신경망이 적절한 방법으로 훈련된 후에 관련 기능을 추출하도록 훈련되지 않고 망에서 각 훈련 샘플(입력 노드들에 데이터를 제공하는 훈련 샘플)을 기억하도록 하여 애플리케이션이 샘플들에서 더 많은 특징들을 추출하도록 한다. 오버피팅/메모라이징(memorising)을 피하기 위해 신경망을 규칙화하여 이 문제를 해결하기 위한 광범위한 기술이 개발되었다.
신경망을 사용하여 대규모 데이터세트들을 처리할 때 성능을 향상시킬 수 있는 난수를 사용하는 기술이 있다. 한 가지 기술은 소위 몬테카를로 샘플링(Monte Carlo sampling)으로, 수치 결과를 얻기 위해 반복적인 무작위 샘플링에 의존하는 광범위한 계산 알고리즘에 사용되는 용어이다. 상기 몬테카를로 샘플링의 기본 아이디어는 무작위성(랜덤성)이 원칙적으로 결정성(deterministic)인 문제들을 해결할 수 있다는 것이다. 몬테카를로 샘플링을 사용할 때, 난수의 규정된 확률 분포가 바람직하다. 몬테카를로 샘플링은 예를 들어 생성 모델들(generative models)에서 사용될 수 있다. 최근에는 가중치 또는 활성화에 랜덤 잡음을 추가하여 신경망의 성능을 향상시키는 기술이 고안되었다. 이 점에서 가우시안(Gaussian) 잡음이 가능성으로 연구되었다.
알려진 컴퓨터 기술을 사용하여 신경망을 구현하는 것은 여러 가지 과제를 안고 있다. 예를 들어, CPU나 GPU를 사용하여 무작위 기술을 구현하는 것은 간단하지 않으며, 효율적인 구현으로 얻을 수 있는 모든 장점들에 영향을 미칠 수 있다.
본 발명자들은 프로그램 명령어의 실행에 응답하여 미리결정된 거의 가우시안 분포로부터의 랜덤 값들을 효율적으로 제공할 수 있는 프로세서용 실행 유닛을 개발했다.
본 발명의 일 양태에 따르면, 미리 결정된 확률 분포에 기초하여 난수를 생성하기 위한 컴퓨터 프로그램 명령어를 실행하도록 구성된 실행 유닛이 제공되며, 상기 실행 유닛은, 상기 명령어의 실행시 적어도 하나의 랜덤화된 비트 스트링을 생성하도록 구성된 하드웨어 의사난수(pseudorandom number) 생성기; 상기 랜덤화된 비트 스트링으로부터 선택된 미리 결정된 비트 길이의 다수의 비트 시퀀스들을 수신하고 이들을 합산하여 결과를 생성하도록 구성된 가산 회로(adding circuitry)를 포함한다.
상기 실행 유닛은 상기 결과를 수신하고, 미리결정된 확률 분포를 선택된 공지된 값으로 중심 맞추고 및/또는 상기 분포의 분산을 선택된 공지된 값으로 조정하기 위해 정규화된 결과를 생성하도록 구성된 정규화 회로를 포함할 수 있다.
상기 하드웨어 의사난수 생성기는 상기 명령어의 실행시 둘 이상의 랜덤화된 비트 스트링을 생성하도록 구성될 수 있고, 가산 회로는 둘 이상의 각각의 합산으로부터 둘 이상의 결과를 생성하도록 구성될 수 있다.
일 실시 예에서, 상기 정규화 회로는 각 결과를 수신하고 정규화된 결과를 제공하도록 구성된 룩업 테이블을 포함한다. 그러나, 임의의 구현이 이용될 수 있다. 상기 정규화 회로는 상기 결과로부터 미리결정된 수를 감산하는 함수들을 수행할 수 있고, 상기 미리결정된 수는 상기 가산 회로에 의해 생성된 결과의 가능한 총 수 범위의 절반으로 계산되고, 부동 소수점 포맷으로 변환되어 제수(divisor)로 제산된다. 상기 제수는 미리결정된 비트 길이를 갖는 균일하게 분포된 랜덤 변수들의 가능한 값들의 수일 수 있다.
일 실시 예에서, 비트 시퀀스의 수는 12이다. 상기 12는 필수 분포와 특정 애플리케이션에 대한 하드웨어 최적화를 고려한 비트 시퀀스 수에 적합한 것으로 확인되었다. 상기 분포는 "Irwin-Hall 분포"일 수 있다. 각 시퀀스는 임의의 적절한 비트 수를 가질 수 있다. 설명된 실시 예에서는 5이지만, 비제한적인 예일 뿐이다.
상기 정규화 회로는 결과로부터 186을 감산하도록 구성될 수 있다(여기서, 결과의 수치 범위는 372이다).
상기 실행 유닛은 미리결정된 확률 분포에 보다 정확하게 피팅(fit)하기 위해 복수의 컴퓨터 프로그램 명령어들로부터 결과들을 합산하는 합산 회로를 포함할 수 있다. 의사 난수 생성기로부터의 출력들을 컴퓨터 프로그램 명령어로부터의 결과들과 결합하기 위한 회로들을 더 포함할 수 있다.
해당 방법 및 컴퓨터 프로그램도 제공된다.
일 양태는 미리결정된 확률 분포에 기초하여 난수를 생성하도록 하는 컴퓨터 프로그램 명령어를 실행하는 방법을 제공하며, 상기 방법은, 상기 명령어의 실행시 적어도 하나의 랜덤화된 비트 스트링을 생성하는 단계; 상기 랜덤화된 비트 스트링으로부터 미리 결정된 비트 길이의 다수의 비트 시퀀스들을 선택 및 합산하여 결과를 생성하는 단계를 포함한다. 다른 양태는 실행될 때 전술한 방법을 수행하는 비 전달 매체상에 기록된 컴퓨터 프로그램 명령어를 포함하는 컴퓨터 프로그램을 포함하는 컴퓨터 프로그램 제품을 제공한다.
본 발명을 더 잘 이해하고 이를 나타낼 수 있도록 하기 위해, 이하의 도면만을 참고하여 예를 들어 설명할 것이다.
도 1은 신경망(뉴런 네트워크)의 매우 단순화된 개략도이다.
도 1a는 뉴런의 매우 단순화된 개략도이다.
도 2는 본 발명의 실시 예에 따른 프로세싱 유닛의 개략도이다.
도 3은 정규 가우시안 분포(normal Gaussian distribution)와 어윈 홀 분포(Irwin-Hall distribution)의 차이를 로그(log)와 정규 플롯(normal plot)에서 도시한다.
도 4는 마스킹(masking) 명령어를 구현하기 위한 실행 유닛의 블록도이다.
도 5는 다수의 그랜드(grand) 명령어의 결과들을 합산하여 성능이 향상되었음을 도시한다.
도 6은 f16 값에서 f32 값으로의 변환을 도시한다.
도 7과 8은 분포들을 비교한 그래프들이다.
도 2는 미리 결정된 확률 분포로부터 랜덤 값들을 생성하기 위한 단일 명령어를 실행하도록 구성된 실행 유닛의 개략적인 블록도를 도시한다. 상기 명령어는 본 명세서에서 그랜드 명령어로 지칭된다. 실행 유닛(2)은 프로세싱 유닛 내의 파이프라인(4)의 일부를 형성한다. 상기 프로세싱 유닛은 명령어 메모리(10)로부터 명령어를 페치(fetch)하는 명령어 페치 유닛(6)을 포함한다. 상기 프로세싱 유닛은 또한 메모리로부터 데이터를 로딩하거나 메모리에 데이터를 저장하기 위한 데이터 메모리(12)에 액세스하는 것을 담당하는 메모리 액세스 스테이지(8)를 포함한다. 임의의 경우에 파이프라인(4)에 의해 실행되는 명령어들에 대한 소스 및 목적지 피연산자들을 유지하기 위해 레지스터들의 세트(Reg)(14)가 제공된다. 파이프라인(4)은 예를 들어 수학적 연산들을 수행하기 위해 다양한 상이한 명령어들을 실행하기 위한 많은 다른 유형의 실행 유닛을 포함할 수 있다는 것을 쉽게 이해할 것이다. 본 발명에 유용할 수 있는 프로세싱 유닛의 일 유형은 배럴-스레드 타임 슬롯을 사용하는 프로세싱 유닛이며, 수퍼바이저 스레드는 상이한 워커 스레드들을 이들의 실행을 위해 상이한 시간 슬롯에 할당할 수 있다. 여기에 설명된 그랜드 명령어는 임의의 적절한 프로세싱 유닛 아키텍처와 함께 사용될 수 있다.
실행 유닛(2)은 명령어에 의해 요구될 때 의사 난수를 생성하는 하드웨어 의사 난수 생성기(PRNG)(22)를 포함한다. 숫자들은 각각 64비트의 무작위 순서의 형태를 취한다. 실행 유닛(2)은 또한 명령어의 실행 결과를 유지하기 위한 출력 버퍼(27) 및 그랜드 명령어 실행 모듈(23)을 포함한다.
두 가지 버전의 명령어가 있다. 첫 번째, 명령어 f16v2grand$aDST는 랜덤 값들의 미리결정된 확률 분포에서 두 개의 랜덤 16비트 값들을 레지스터 또는 메모리 위치 DST로 리턴한다. 명령어 f32v2grand$aDST의 두 번째 버전은 동일 분포에서 두 개의 32비트 값을 레지스터 또는 메모리 위치 DST로 리턴한다. 상기 그랜드 명령어 모듈(23)에 의해 구현되는 기술은 어윈-홀(Irwin-Hall) 분포에 가까운 분포를 제공한다. 본 명세서에서 설명하는 바와 같이, 어윈-홀 분포는 가우시안 분포와 매우 유사하다. 상기 어윈-홀 분포는 각각 균일한 분포를 갖는 다수의 독립 랜덤 변수들의 합으로 정의되는 랜덤 변수에 대한 확률 분포이다. 일부 가우시안 특성들을 가지지만 균일한 합 분포(uniform sum distribution)라고도 한다. 도 3은 양자화된(quantized) 어윈-홀 분포를 도시하며, 합산된 독립 랜덤 변수의 수는 양자화된 정규 분포와 비교하여 12이다. 이는 분산이 1이고 평균(mean)이 0인 가우시안 분포의 곡선과 매우 유사하다. 도 3의 상단 그래프는 로그 스케일이고, 하단 그래프는 일반 스케일이다. 확률 밀도 함수(PDF)는 가우시안의 20% 내에서 3 시그마(sigma)까지이다. 누적 분포 함수(CDF) 확률은 가우시안과 +/- 0.0024 (약 1%) 차이가 있다. 모든 의도와 목적을 위해, 매우 만족스러운 방식으로 신경망의 성능을 향상시키기 위해 위에서 설명한 목적을 달성하는 것은 난수 분포이다.
설명된 실시예에서, 상기 그랜드 명령어가 실행 유닛에 의해 실행될 때, PRNG(22)는 2개의 64 비트 폭 출력(res0, res1)을 생성한다. 단일 출력만이 생성되면서 본 발명의 원리를 이용하는 것이 가능할 것이라는 것을 이해할 수 있지만, 단일 명령어에 응답하는 두 개의 난수를 발생시키도록 두 개의 출력이 생성되는 것이 더 효율적이다. 중간(intermediate) 64비트 폭 PRNG 출력(res 0, res 1)은 아래에 표시된 것처럼 12개의 구성요소(constituent) 5비트 필드들을 합산하여 9비트로 압축된다. 도 4는 각각의 가산기가 각각의 랜덤화된 비트 스트링으로부터 입력 시퀀스들을 수신하는 2개의 가산기(40a, 40a)에 의해 구현되는 것처럼 아래(표1)에 나타낸 가산 함수를 개략적으로 도시한다. 각 가산기에는 12개의 입력이 있으며, 각 입력은 5비트 폭이다. 각 입력 스트링의 상위 4 비트는 버려진다.
assign rsum0[8:0] = res0[4:0] + res0[9:5] + res0[14:10] +
res0[19:15] + res0[24:20] + res0[29:25] +
res0[34:30] + res0[39:35] + res0[44:40] +
res0[49:45] + res0[54:50] + res0[59:55] +
assign rsum1[8:0] = res1[4:0] + res1[9:5] + res1[14:10] +
res1[19:15] + res1[24:20] + res1[29:25] +
res1[34:30] + res1[39:35] + res1[44:40] +
res1[49:45] + res1[54:50] + res1[59:55] +
결과적으로 부호없는 9비트 합(RESULT 1, RESULT 2)은 0에서 372 범위에 있다. 랜덤화된 비트 스트링으로부터 상이한 수의 비트 시퀀스들을 선택하고 또한 각 비트 시퀀스 내의 비트 수를 변경함으로써 상이한 수 범위들(different number ranges)이 생성될 수 있다는 것을 이해할 것이다. 임의의 특정 수의 시퀀스/시퀀스의 길이에 대해, 상기 가산기들은 정의된 수 범위의 결과들의 세트를 생성할 것이다.
편의상, 12개의 입력의 2개의 가산기가 도시되어 있지만, 다른 가산 회로 구성이 이용될 수도 있다. 균일하게 분포된 12개의 랜덤 변수를 합산하는 것은, 1) 정규(Gaussian) 분포와 하드웨어 비용 간의 합당한 트레이드-오프(trade-off); 그리고 2) 분수(awkward fraction)가 아닌 표준 편차가 1인 분포가 생성된다는 점(이는 정수를 표준 편차가 1인 부동 소수점 값으로 스케일하는 데 필요한 하드웨어가 간단해짐)에 기반한 최적화이다.
합산 결과들(RESULT 1, RESULT 2)은 정규화된 곡선을 제공하도록 정규화 회로 (42)에서 프로세싱된다. 이 정규화가 없으면 상기 결과들의 수 범위(number range)는 0에서 372까지 확장되고 0 주위에 집중되지 않는다. 상기 정규화 회로는 0의 범위에 가장 가까운도록 상기 결과에서 186을 감산하는 감산 함수를 수행한다. 상기 186은 372의 절반이다. 다른 수 범위가 있다면, 다른 감산 값(수 범위의 절반)이 존재할 것이다.
상기 결과들은 정규화 회로(42)의 f16 블록으로의 변환과 같이 필요한 정밀도에 해당하는 부동 소수점 형식이어야 한다.
제산 단계(divide stage)는 부동 소수점 수를 32로 제산함으로써 표준 정규 분포와 매우 유사한 속성을 가진 분포를 생성한다(특히 1에 가까울 정도로 표준 편차를 근사화하기 위해). 32로의 제산은 2의 거듭제곱이므로 고정된 시프트 또는 지수 조정이 필요하기 때문에 2진법에서 달성하기 쉽다. 32는 단일, 5비트 균일하게 분포된 확률 변수의 가능한 값의 수이다. 선택된 시퀀스들의 n개 수가 12가 아니면 32n/12로 스케일링해야 한다.
기술된 실시 예에서, 상기 정규화 회로는 룩업 테이블(42)에 의해 구현된다. 그러나, 임의의 적합한 형태로 구현될 수 있음을 이해할 것이다. 일 구성에서, 상기 룩업 테이블은 로직 게이트들로 합성(synthesised)될 수 있다.
위에서 언급했듯이 두 가지 버전의 명령어가 있다. 위에서 설명한 버전은 "f16v2grand"이다. 대체 버전인 "f32v2grand"에서 상기 출력은 두 개의 f16 값들 대신 두 개의 f32 값들이다.
변환 로직(44)에 의해 수행되는 이하의 조작에 따라, 요구된 f32 출력 값들의 비트들이 각각의 f16 결과들(V1, V2)로부터 도출될 수 있기 때문에, 다른 룩업 테이블 또는 그와 유사한 것은 필요하지 않다(표2).
assign f32result0[31:0] = {fpresult0[15:14],4'{fpresult0[13]},fpresult0[12:3],16'b0};
assign f32result1[31:0] = {fpresult1[15:14],4'{fpresult1[13]},fpresult1[12:3],16'b0};
assign aDst[63:0] - {f32result1,f32result0};
즉, 32비트 시퀀스는 VI(f16) 결과의 비트들 14 및 15를 가져 와서 비트 13을 4번 복제하고, 비트들 3에서 12로 가져와서 16개의 0으로 완료하여 파생된다. 이는 도 6에 도시된다.
도 3으로 돌아가서, 상기 그래프의 각 포인트는 12개의 5비트 값들을 합산하여 생성된 384개의 가능한 값들 중 하나를 나타낸다. 상기 확률 분포 함수는 정규 분포에서보다 분포의 테일들(tails)이 빠르게 사라지는 최대 3.5 시그마까지의 가우시안 분포를 유지한다. 가장 극단적인 출력들은 +/- 5.8125 시그마이지만 확률은 매우 낮다. 가장 가까운 알려진 분포는 연속적으로 양자화되지 않은 12번째의 어윈-홀 분포이지만, 아래의 특정 분포는 그것이 생성되는 방식에 따라 고유하다는 것을 이해할 수 있을 것이다.
다수의 그랜드 명령어들로부터 의사 가우시안 스칼라(pseudo Gaussian scalars)를 합산함으로써 정규 분포에 더 가깝게 접근하는 것이 가능하다. 이미 언급했듯이, 어윈-홀 확률 분포 함수의 테일은 이상적인 정규 분포보다 더 빠르게 크기를 감소한다. 이는 다수의 그랜드 명령어들에서 다수의 스칼라 출력들을 합산하면 해결할 수 있다. 도 5의 곡선은 최대 표준 편차 수(sigma)까지 1%, 10% 또는 2x 이내의 이상적인 정규 분포인 테일들을 갖는 확률 분포 함수(또는 누적 분포 함수)를 얻기 위해 얼마나 많은 스칼라가 합산되어야 하는지를 나타낸다. 예를 들어, f16v2 그랜드 명령어의 각 스칼라 출력은 12개의 균일하게 분포된 의사 랜덤 값들의 합이고, 상기 테일들은 2.8 시그마까지의 이상적인 정규 분포의 10% 이내이다.
12개의 그랜드 명령 스칼라 출력들(144번째 어윈-홀 분포)을 합산하기 위해, 상기 그랜드 명령어는 6번 실행되어야 하고, 결과 스칼라 값들의 총 12개가 합산되어야 한다. 최종 합은 1의 표준 편차를 유지하기 위해 sqrt(12)로 제산된 값이다.
상기 그랜드 명령어의 출력은 2- 시그마 또는 3- 시그마 절단 정규 분포(truncated normal distribution)를 생성하기 위해 균일하게 분포된 다른 랜덤 변수들의 합과 함께 사용될 수 있다. 2-시그마(2-sigma resp)(3-시그마)를 생성하는 알고리즘은 2개(resp.three) '유니폼들(uniforms)'을 생성하도록 동작할 수 있으며, 각 유니폼은 (PRNG로부터) -1에서 +1까지의 범위에 균일하게 분포된(정규 분포) 랜덤 변수들로부터의 난수이고, 이들을 합산한다. 그 다음, 2-시그마 분포의 경우 두 개의 정규 분포 값들(N1, N2)이 앞에서 설명한 그랜드 명령어를 사용하여 생성된다(3-시그마 분포의 경우, 단일 정규 분포 값(N1)이 생성된다). N1, N2는 앞에서 설명한 출력들(V1, V2)에 해당한다.
2-시그마 분포의 경우, |N1| 또는 |N2| 가 2보다 큰 경우, 유니폼들의 합이 출력으로 사용된다.
3-시그마 분포의 경우, |N1| 가 3보다 크면 상기 유니폼들의 합이 대신 사용된다.
두 개의 균일한 램덤 변수들의 합은 도 6의 곡선(a)으로 표시되는 PDF(확률 분포 함수)를가지며, 매우 대략적인 가우시안이지만 +/- 2 시그마로 제한된다. 상기 알고리즘이 매칭시키려는 상기 절단 가우시안 분포는 곡선(b)으로 표시된다.
두 가우시안 변수들이 범위를 벗어나는 경우(2 시그마 이상) 두 유니폼들의 합이 대신 사용된다.
두 가우시안이 모두 범위를 벗어날 가능성이 적기 때문에, 두 유니폼들의 합은 거의 사용되지 않으며(약 1/500 times) 평균 분포에 미치는 영향은 매우 미미하다.
3-시그마 절단 가우시안 값들을 생성하는 알고리즘은 약간 다르다. 이번에는 단 하나의 값이 3-시그마 범위를 초과할 가능성은 이미 거의 없기 때문에(약 1/500) 가우시안 변수가 하나만 필요하다.
3개의 유니폼 랜덤 변수들의 합은 도 7의 곡선(a)에 의해 표현된 PDF를 가진다. 이는 대략적인 가우시안(Gaussian)이며,
Figure pat00001
3 시그마로 제한된다. 상기 알고리즘이 매칭시키려는 절단 가우시안 분포는 곡선(b)로 표시된다. 상기 가우시안 변수가 범위를 벗어나면(3 시그마 이상) 3 유니폼들의 합이 대신 사용된다.
3 유니폼들의 합이 이미 3-시그마 절단 가우시안 분포의 상당히 양호한 근사치이며 약 1/500(1/500 times) 사용되기 때문에 상기 결과 분포의 에러는 매우 작다.
본 명세서에서 사용된 용어 '랜덤'은 '트루 무작위(truly random)' 또는 '의사난수'를 의미할 수 있다. 상기 그랜드 명령어는 의사난수 또는 트루 랜덤 비트 시퀀스 생성기를 사용할 수 있다.
의사 난수는 '의사 난수 생성기' 또는 'PRNG'에 의해 생성된다. PRNG는 소프트웨어 또는 하드웨어로 구현될 수 있다. 트루 난수는 '트루 난수 생성기' 또는 'TRNG'에 의해 생성된다. TRNG의 예는 "Transition Effect Ring Oscillator"이다. TRNG들보다 PRNG들의 장점은 결정론(determinism)이다(동일한 시작 조건으로 동일한 프로그램을 두 번 실행하면 항상 동일한 결과가 나타난다).
PRNG들보다 TRNG들이 갖는 장점은 출력이 트루 무작위(트루 랜덤)이라는 것이다(PRNG의 출력은 임의로 선택된 수학적 속성들의 유한 집합을 만족하지만, PRNG의 상태와 출력은 항상 현재 상태에서 예측 가능하므로 트루 랜덤이 아니다).
특정 실시예가 설명되었지만, 공개된 청문회가 주어진다면 개시된 기술의 다른 애플리케이션 및 변형이 당업자에게 명백해질 수 있다. 본 개시의 범위는 설명된 실시예에 의해 제한되지 않고 첨부된 청구 범위에 의해서만 제한된다.

Claims (20)

  1. 미리결정된 확률 분포에 기초하여 난수를 생성하도록 하는 컴퓨터 프로그램 명령어을 실행하도록 구성된 실행 유닛으로서, 상기 실행 유닛은,
    상기 명령어의 실행시에 적어도 랜덤화된 비트 스트링을 생성하도록 구성된 하드웨어 의사난수 생성기; 그리고
    상기 랜덤화된 비트 스트링으로부터 선택된 미리결정된 비트 길이의 다수의 비트 시퀀스들을 수신하고, 상기 다수의 비트 시퀀스들을 합산하여 결과를 생성하도록 구성된 가산 회로(circuitry)를 포함하는 것을 특징으로 하는 실행 유닛.
  2. 제1항에 있어서,
    상기 하드웨어 의사난수 생성기는 상기 명령어의 실행시 둘 이상의 랜덤화된 비트 스트링을 생성하도록 구성되며,
    상기 가산 회로는 2개 이상의 각각의 합산으로부터 2개 이상의 결과들을 생성하도록 구성되는 것을 특징으로 하는 실행 유닛.
  3. 제1항 또는 제2항에 있어서,
    상기 정규화 회로는 각 결과를 수신하고 그리고 상기 정규화된 결과를 제공하도록 구성된 룩업 테이블을 포함하는 것을 특징으로 하는 실행 유닛.
  4. 제1항 또는 제2항에 있어서,
    상기 정규화 회로는 상기 결과로부터 미리결정된 수를 감산하며, 상기 미리결정된 수는 상기 가산 회로에 의해 생성된 결과들의 가능한 총수 범위(total possible number range)의 절반으로 계산되는 것을 특징으로 하는 실행 유닛.
  5. 제1항 또는 제2항에 있어서, 상기 다수의 비트 시퀀스들은 12인 것을 특징으로 하는 실행 유닛.
  6. 제5항에 있어서, 상기 정규화 회로는 상기 결과로부터 186을 감산하도록 구성되는 것을 특징으로 하는 실행 유닛.
  7. 제1항 또는 제2항에 있어서, 상기 정규화 회로는 상기 미리결정된 비트 길이를 갖는 균일하게 분포된 랜덤 변수들의 가능한 값들의 수로 제산하도록 구성되는 것을 특징으로 하는 실행 유닛.
  8. 제1항 또는 제2항에 있어서, 각 시퀀스의 비트 길이는 5인 것을 특징으로 하는 실행 유닛.
  9. 제7항에 있어서, 상기 정규화 회로는 32로 제산하도록 구성되는 것을 특징으로 하는 실행 유닛.
  10. 제1항 또는 제2항에 있어서, 상기 미리결정된 확률 분포는, 스케일링되고 오프셋(offset)되고 양자화된 어윈-홀(Irwin-Hall) 분포를 근사화하는 것을 특징으로 하는 실행 유닛.
  11. 제1항 또는 제2항에 있어서, 상기 미리결정된 확률 분포에보다 정확하게 피팅(fit)하도록 복수의 상기 컴퓨터 프로그램 명령어들로부터의 결과들을 합산하는 합산 회로를 포함하는 것을 특징으로 하는 실행 유닛.
  12. 제1항 또는 제2항에 있어서, 상기 실행 유닛은 상기 랜덤화된 비트 스트링으로부터의 하나 이상의 비트 시퀀스를 하나 이상의 정규화된 결과들과 결합하도록 구성되는 것을 특징으로 하는 실행 유닛.
  13. 제1항 또는 제2항에 있어서,
    상기 결과를 수신하고, 상기 미리결정된 확률 분포를 선택된 공지된 값으로 중심 맞추고, 상기 분포의 분산을 선택된 공지된 값으로 조정하도록 정규화된 결과를 생성하는 정규화 회로를 포함하는 것을 특징으로 하는 실행 유닛.
  14. 미리결정된 확률 분포에 기초하여 난수를 생성하도록 하는 컴퓨터 프로그램 명령어를 실행하는 방법으로서, 상기 방법은,
    상기 명령어의 실행시 적어도 하나의 랜덤화된 비트 스트링을 생성하는 단계;
    상기 랜덤화된 비트 스트링으로부터 다수의 비트 시퀀스들을 선택하고, 상기 다수의 비트 시퀀스들을 합산하여 결과를 생성하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 명령어를 실행하는 방법.
  15. 제14항에 있어서, 상기 명령어에 응답하여, 2개 이상의 랜덤화된 비트 스트링이 생성되고, 2개 이상의 결과들이 2개 이상의 각각의 합산으로부터 생성되는 것을 특징으로 하는 컴퓨터 프로그램 명령어를 실행하는 방법.
  16. 제14항 또는 제15항에 있어서, 상기 정규화하는 단계는 룩업 테이블을 사용하여 수행되는 것을 특징으로 하는 컴퓨터 프로그램 명령어를 실행하는 방법.
  17. 제14항 또는 제15항에 있어서, 상기 다수의 비트 시퀀스들은 12인 것을 특징으로 하는 컴퓨터 프로그램 명령어를 실행하는 방법.
  18. 제14항 또는 제15항에 있어서, 각 시퀀스의 비트 길이는 5인 것을 특징으로 하는 컴퓨터 프로그램 명령어를 실행하는 방법.
  19. 제14항 또는 제15항에 있어서,
    상기 결과를 정규화하고, 상기 미리결정된 확률 분포를 선택된 공지된 값으로 중심 맞추고, 상기 분포의 분산을 선택된 공지된 값으로 조정하도록 정규화된 결과를 생성하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 명령어를 실행하는 방법.
  20. 컴퓨터 프로그램 제품으로서,
    실행될 때 미리결정된 확률 분포에 기초하여 난수를 생성하는 방법을 수행하는 비-전달(non transmissible) 매체에 기록된 컴퓨터 프로그램 명령어를 포함하는 컴퓨터 프로그램을 포함하며, 상기 방법은,
    상기 명령어의 실행시 적어도 하나의 랜덤화된 비트 스트링을 생성하는 단계;
    상기 랜덤화된 비트 스트링으로부터 미리결정된 비트 길이의 다수의 비트 시퀀스들을 선택하고 이를 합산하여 결과를 생성하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
KR1020180125337A 2017-10-20 2018-10-19 신경망에서의 무작위성 생성 KR102181385B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1717309.7 2017-10-20
GB1717309.7A GB2568660B (en) 2017-10-20 2017-10-20 Generating Random Numbers Based on a Predetermined Probaility Distribution in an Execution Unit

Publications (2)

Publication Number Publication Date
KR20190044550A true KR20190044550A (ko) 2019-04-30
KR102181385B1 KR102181385B1 (ko) 2020-11-20

Family

ID=60481696

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180125337A KR102181385B1 (ko) 2017-10-20 2018-10-19 신경망에서의 무작위성 생성

Country Status (8)

Country Link
US (2) US10613833B2 (ko)
EP (1) EP3474134B1 (ko)
JP (1) JP6744375B2 (ko)
KR (1) KR102181385B1 (ko)
CN (1) CN109697048B (ko)
CA (1) CA3021415C (ko)
GB (1) GB2568660B (ko)
TW (1) TWI717646B (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2568660B (en) * 2017-10-20 2020-10-14 Graphcore Ltd Generating Random Numbers Based on a Predetermined Probaility Distribution in an Execution Unit
US11533272B1 (en) * 2018-02-06 2022-12-20 Amesite Inc. Computer based education methods and apparatus
JP7177000B2 (ja) * 2019-05-16 2022-11-22 日立Astemo株式会社 演算装置および演算方法
CN110765111B (zh) * 2019-10-28 2023-03-31 深圳市商汤科技有限公司 存储和读取方法、装置、电子设备和存储介质
TWI754970B (zh) * 2020-06-22 2022-02-11 鴻海精密工業股份有限公司 加速啟動函數運算的裝置、方法及存儲介質
CN112580822B (zh) * 2020-12-16 2023-10-17 北京百度网讯科技有限公司 机器学习模型的对抗训练方法装置、电子设备和介质
JP7468938B2 (ja) 2021-01-22 2024-04-16 日本電気株式会社 乱数生成器、乱数生成方法、及びプログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05216630A (ja) * 1991-11-29 1993-08-27 Nec Corp 相関のある乱数発生器
JP2003323292A (ja) * 2002-04-30 2003-11-14 Ntt Docomo Inc 乱数列生成装置及び乱数列生成方法、並びに伝搬モデルシミュレーション装置及び方法
KR20070048641A (ko) * 2004-09-06 2007-05-09 소니 가부시끼 가이샤 셀 자동 장치 기반의 제어 가능한 주기를 갖는 의사 난수시퀀스의 생성 방법 및 장치
JP2016541038A (ja) * 2013-10-02 2016-12-28 クゥアルコム・インコーポレイテッドQualcomm Incorporated 擬似乱数のプログラム可能な確率分布関数を生成するための方法および装置

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE380696B (sv) 1974-03-20 1975-11-10 Philips Svenska Ab Sett att alstra en pseudoslumpbitfoljd och anordning for utforande av settet.
US4218749A (en) 1978-09-25 1980-08-19 Sangamo Weston, Inc. Apparatus and method for digital noise synthesis
GB2076570B (en) * 1980-05-14 1983-11-09 British Broadcasting Corp Random number generator
JPH03117209A (ja) * 1989-09-29 1991-05-20 Anritsu Corp デジタルガウス性雑音信号発生装置
JPH06132825A (ja) * 1992-10-16 1994-05-13 Nippon Precision Circuits Kk 信号生成回路
JP2000276459A (ja) 1999-03-26 2000-10-06 Fujitsu Ltd 学習による変換関数を用いた乱数発生装置,乱数発生方法および乱数発生システム
US20030177155A1 (en) * 2002-03-15 2003-09-18 Shackleford J. Barry Random number converter of distribution from uniform to gaussian-like
JP3807390B2 (ja) * 2003-07-16 2006-08-09 富士通株式会社 乱数発生装置
US7472148B2 (en) * 2004-07-23 2008-12-30 Qualcomm Incorporated Method and apparatus for random-number generator
US8389167B2 (en) * 2006-08-28 2013-03-05 GM Global Technology Operations LLC Detection of cell-to-cell variability in water holdup using pattern recognition techniques
JP2009049547A (ja) 2007-08-15 2009-03-05 Seiko Epson Corp 画像処理装置、画像処理方法、画像処理プログラム
US8255443B2 (en) * 2008-06-03 2012-08-28 International Business Machines Corporation Execution unit with inline pseudorandom number generator
US8601485B2 (en) * 2011-05-25 2013-12-03 Arm Limited Data processing apparatus and method for processing a received workload in order to generate result data
CN108199829A (zh) * 2011-12-29 2018-06-22 英特尔公司 用于不确定性随机位发生器(nrbg)的方法和装置
US8856198B2 (en) * 2012-03-30 2014-10-07 Freescale Semiconductor, Inc. Random value production methods and systems
US10061562B2 (en) * 2012-09-29 2018-08-28 Pivotal Software, Inc. Random number generator in a parallel processing database
US8873750B2 (en) * 2013-03-14 2014-10-28 International Business Machines Corporation Instruction for performing a pseudorandom number generate operation
CN105045561A (zh) * 2015-08-12 2015-11-11 中国电子科技集团公司第四十一研究所 一种伪随机数产生方法
US10922052B2 (en) * 2015-10-12 2021-02-16 Oracle International Corporation Generating pseudorandom number sequences by nonlinear mixing of multiple subsidiary pseudorandom number generators
US20170220322A1 (en) * 2016-01-28 2017-08-03 International Business Machines Corporation Generating gaussian random numbers using inverse sampling and recurrence relationship
CN110383206A (zh) * 2017-04-07 2019-10-25 英特尔公司 用于利用硬件加速来生成高斯随机数的系统和方法
GB2568660B (en) * 2017-10-20 2020-10-14 Graphcore Ltd Generating Random Numbers Based on a Predetermined Probaility Distribution in an Execution Unit

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05216630A (ja) * 1991-11-29 1993-08-27 Nec Corp 相関のある乱数発生器
JP2003323292A (ja) * 2002-04-30 2003-11-14 Ntt Docomo Inc 乱数列生成装置及び乱数列生成方法、並びに伝搬モデルシミュレーション装置及び方法
KR20070048641A (ko) * 2004-09-06 2007-05-09 소니 가부시끼 가이샤 셀 자동 장치 기반의 제어 가능한 주기를 갖는 의사 난수시퀀스의 생성 방법 및 장치
JP2016541038A (ja) * 2013-10-02 2016-12-28 クゥアルコム・インコーポレイテッドQualcomm Incorporated 擬似乱数のプログラム可能な確率分布関数を生成するための方法および装置

Also Published As

Publication number Publication date
CN109697048B (zh) 2024-03-22
EP3474134B1 (en) 2023-09-13
TW201931104A (zh) 2019-08-01
US20200192636A1 (en) 2020-06-18
KR102181385B1 (ko) 2020-11-20
TWI717646B (zh) 2021-02-01
US20190121616A1 (en) 2019-04-25
CN109697048A (zh) 2019-04-30
JP6744375B2 (ja) 2020-08-19
CA3021415C (en) 2021-05-25
GB2568660A (en) 2019-05-29
JP2019079523A (ja) 2019-05-23
GB201717309D0 (en) 2017-12-06
US10613833B2 (en) 2020-04-07
EP3474134A1 (en) 2019-04-24
CA3021415A1 (en) 2019-04-20
US11334320B2 (en) 2022-05-17
GB2568660B (en) 2020-10-14

Similar Documents

Publication Publication Date Title
KR102181385B1 (ko) 신경망에서의 무작위성 생성
Ullah et al. High-performance accurate and approximate multipliers for FPGA-based hardware accelerators
US11169778B2 (en) Converting floating point numbers to reduce the precision
US11449309B2 (en) Hardware module for converting numbers
US11294635B2 (en) Pseudo-random number generator
CN111936965A (zh) 随机舍入逻辑
US20210034327A1 (en) Apparatus and Method for Processing Floating-Point Numbers
US20220222086A1 (en) Processing core with operation suppression based on contribution estimate
KR102263694B1 (ko) 확률컴퓨팅 회로의 정확도를 높이기 위한 장치
Kiran et al. A Scalable Approach to Performing Multiplication and Matrix Dot-Products in Unary
Ghaffari et al. Efficient design space exploration of OpenCL kernels for FPGA targets using black box optimization
Christiani et al. Towards a scalable neuromorphic hardware for classification and prediction with stochastic no-prop algorithms
Ullah et al. Designing Resource-Efficient Hardware Arithmetic for FPGA-Based Accelerators Leveraging Approximations and Mixed Quantizations
Thall Fast Mersenne prime testing on the GPU
Barros et al. Implementation of a double-precision multiplier accumulator with exception treatment to a dense matrix multiplier module in FPGA
Das et al. Design of a Parallel Adder Circuit for a Heavy Computing Environment and the Performance Analysis of Multiplication Algorithm

Legal Events

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