KR102598208B1 - 인공 지능을 위한 병렬 신경 프로세서 - Google Patents

인공 지능을 위한 병렬 신경 프로세서 Download PDF

Info

Publication number
KR102598208B1
KR102598208B1 KR1020217003616A KR20217003616A KR102598208B1 KR 102598208 B1 KR102598208 B1 KR 102598208B1 KR 1020217003616 A KR1020217003616 A KR 1020217003616A KR 20217003616 A KR20217003616 A KR 20217003616A KR 102598208 B1 KR102598208 B1 KR 102598208B1
Authority
KR
South Korea
Prior art keywords
sub
module
signal
output
value
Prior art date
Application number
KR1020217003616A
Other languages
English (en)
Other versions
KR20210018527A (ko
Inventor
로힛 세스
Original Assignee
로힛 세스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 로힛 세스 filed Critical 로힛 세스
Priority to KR1020237037603A priority Critical patent/KR20230154295A/ko
Publication of KR20210018527A publication Critical patent/KR20210018527A/ko
Application granted granted Critical
Publication of KR102598208B1 publication Critical patent/KR102598208B1/ko

Links

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/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • G06F18/24133Distances to prototypes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/243Classification techniques relating to the number of classes
    • G06F18/24323Tree-organised classifiers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • 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/047Probabilistic or stochastic networks
    • 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
    • G06N3/088Non-supervised learning, e.g. competitive learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Medical Informatics (AREA)
  • Multimedia (AREA)
  • Databases & Information Systems (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Neurology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Image Analysis (AREA)
  • Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)
  • Processing Of Solid Wastes (AREA)
  • Image Processing (AREA)
  • Feedback Control In General (AREA)

Abstract

병렬 AI 프로세싱을 위해 특별히 설계된 인공 신경 네트워크들을 구현하기 위한 효율적이고 직관적인 방법들을 위한 시스템들 및/또는 디바이스들이 본원에 제공된다. 다양한 구현들에서, 개시된 시스템들, 디바이스들 및 방법들은 (a) 더 복잡한 문제 세트들을 프로세싱하는데 필요한 신경 프로세싱 시간을 크게 감소시키고; (b) 자체 학습에 필요한 신경가소성을 구현하고; (c) 직관의 엘리먼트를 부여하는데 필요한 명시적 메모리에 추가로 묵시적 메모리의 개념 및 적용을 도입하는, 병렬 신경 프로세싱을 위한 종래의 시스템들, 디바이스들 및 방법들을 보완 또는 대체한다. 이러한 속성들로, 개시된 발명의 구현들은 인간의 의식 또는 인식을 에뮬레이트하는 것을 가능하게 한다.

Description

인공 지능을 위한 병렬 신경 프로세서{PARALLEL NEURAL PROCESSOR FOR ARTIFICIAL INTELLIGENCE}
[0002] 개시된 구현들은 일반적으로 인공 지능에 관한 것이고, 보다 구체적으로는 인공 지능을 위한 병렬 신경 프로세서를 구현하기 위한 방법, 시스템 및 디바이스에 관한 것이다.
[0003] AI(Artificial Intelligence) 애플리케이션들은 종래에 소프트웨어-구동 시스템들을 위해 그리고 소프트웨어-구동 시스템들로서 설계되었다. 이러한 시스템들에서, 프로세싱 엘리먼트들(AI "두뇌"에서 "뉴런들"로서 작용함)은 하드웨어 메모리에서 고정된 상태들을 점유하도록 프로그래밍된다. 뉴런들은 인공 신경 네트워크를 형성하기 위한 커플링 변수들의 대표적 값들에 의해 상호연결된다. 이러한 뉴런들의 상태들은, 이진 출력 값들(즉, 0 또는 1)을 생성하기 위해 가중치들, 바이어스들 및 입력 데이터를 프로세싱하는 활성화 함수들을 사용하여 반복적으로 평가된다. 뉴런의 결과적 상태는 메모리에 뉴런의 출력 상태로서 저장되고, 후속적으로 인공 신경 네트워크에서 연결된 뉴런에 대한 입력으로서 사용된다. 높은 레벨로, 몇몇 뉴런들의 입력 및 출력 상태들이 반복적 방식으로 평가된다. 일부 시스템들은 뉴런들의 몇몇 블록들을 동시에 평가하기 위해 멀티-스레딩 및 멀티-코어 프로세서들을 사용하지만, 시스템은 전체적으로 성질상 "직렬"로 남아 있다. 더 큰 신경 네트워크들은 더 작은 네트워크들보다 더 복잡하고 매우 다양한 문제들을 해결할 수 있다. 그러나, 더 큰 신경 네트워크들은 더 큰 코어 카운트들 및/또는 더 많은 수의 스레드들을 갖는 마이크로프로세서들을 요구한다. 따라서 AI 애플리케이션들은 이러한 종래의 프로세서들의 속도에 의해 제한된다.
[0004] 종래의 하드웨어의 제한들을 보상하기 위해, AI 시스템들은 다양한 지름길들 및 경계 조건들로 영리하게 설계되었으며 특정 문제 세트들에 대해 튜닝되었다. 경계 조건들이 미리 정의되어 있기 때문에, 이러한 시스템들은 매우 특정한 애플리케이션들로 제한된다. 예를 들어, 인간의 얼굴들을 인식하도록 트레이닝된 AI 시스템은 기린의 얼굴을 인식하는데 효과적이지 않을 수 있다.
[0005] 종래의 시스템들은 큰 오버헤드를 초래하고, 복잡한 문제 세트들에 대해 비용 효과적인 방식으로 신속한 응답을 달성하지 못하며, 인공 의식을 달성할 수 없다.
[0006] 따라서, 병렬적 AI 프로세싱을 위해 특별히 설계된 인공 신경 네트워크들을 구현하기 위한 더 효율적이고 직관적인 방법들을 갖는 시스템들 및/또는 디바이스들이 필요하다. 일부 구현들에서, 개시된 시스템들, 디바이스들 및 방법들은 (a) 더 복잡한 문제 세트들을 프로세싱하는데 필요한 신경 프로세싱 시간을 크게 감소시키고; (b) 자체 학습에 필요한 신경가소성을 구현하고; (c) 직관의 엘리먼트를 부여하는데 필요한 명시적 메모리에 추가로 묵시적 메모리의 개념 및 적용을 도입하는, 병렬 신경 프로세싱을 위한 종래의 시스템들, 디바이스들 및 방법들을 보완 또는 대체한다. 이러한 속성들로, 개시된 발명의 일부 구현들은 인간의 의식 또는 인식을 에뮬레이트(emulate)하는 것을 가능하게 한다.
[0007] (A1) 일 양상에서, 일부 구현들은 입력 신호를 프로세싱하도록 구성된 제1 서브-분류기를 포함한다. 제1 서브-분류기는 가중 입력 신호를 생성하기 위해 입력 신호에 가중치를 적용하도록 구성되는 가중 입력 모듈을 포함한다. 제1 서브-분류기는 또한 가중 입력 모듈에 커플링된 비교 모듈을 포함한다. 비교 모듈은 가중 입력 신호를 비교 모듈 입력 라인에서 수신하고; 제1 출력 신호를 비교 모듈 출력 라인에서 생성하도록 구성된다. 비교 모듈은 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이에 있는 값을 갖는지 여부를 결정하도록 추가로 구성된다. 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이의 값을 갖는다는 결정에 대한 응답으로, 비교 모듈은 제1 출력 신호가 비교 모듈 출력 라인에서 제1 값을 갖도록 설정하도록 구성된다. 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이에 있지 않은 값을 갖는다는 결정에 대한 응답으로, 비교 모듈은 제1 출력 신호가 비교 모듈 출력 라인에서 제1 값과 상이한 제2 값을 갖도록 설정하도록 구성된다.
[0008] (A2) A1의 제1 서브-분류기의 일부 구현들에서, 비교 모듈은 가중 입력 신호를 수신하고 제1 출력 신호를 설정하도록 구성된 적어도 하나의 연산 증폭기를 포함한다.
[0009] (A3) A1의 제1 서브-분류기의 일부 구현들에서, 가중 입력 신호를 생성하기 위해 입력 신호에 적용된 가중은 제2 서브-분류기로부터의 제2 출력 신호에 기초한다.
[0010] (A4) A1의 제1 서브-분류기의 일부 구현들에서, 제1 서브-분류기로부터의 제1 출력 신호는 제2 서브-분류기에 송신된다.
[0011] (A5) A4의 제1 서브-분류기의 일부 구현들에서, 가중 입력 모듈은 제어 그룹 신호를 수신하고, 제어 그룹 신호에 기초하여 가중 입력 신호를 생성하기 위해 입력 신호에 가중치를 적용하도록 구성된다.
[0012] (A6) A5의 제1 서브-분류기의 일부 구현들에서, 가중 입력 모듈은, 제어 그룹 신호를 수신하고, 제어 그룹 신호에 기초하여 가중 입력 신호를 조정하도록 구성된 변수 레지스터를 포함한다.
[0013] (A7) A1의 제1 서브-분류기의 일부 구현들에서, 제1 서브-분류기는 비교 모듈로부터 제1 출력 신호를 수신 및 저장하고 제1 출력 신호를 제2 서브-분류기에 제공하도록 구성된 메모리 모듈을 더 포함한다.
[0014] (A8) 다른 양상에서, 일부 구현들은 하나 이상의 클럭 사이클들 동안 하나 이상의 입력 신호들을 프로세싱하도록 구성된 분류기 시스템을 포함한다. 분류기 시스템은 복수의 서브-분류기들을 포함한다. 복수의 서브-분류기들 각각은, 가중 입력 신호를 생성하기 위해 개개의 클럭 사이클에 대한 개개의 입력 신호에 가중치를 적용하도록 구성된 가중 입력 모듈을 포함한다. 복수의 서브-분류기들 각각은 또한 가중 입력 모듈에 커플링된 비교 모듈을 포함한다. 비교 모듈은 가중 입력 신호를 비교 모듈 입력 라인에서 수신하고; 출력 신호를 비교 모듈 출력 라인에서 생성하도록 구성된다. 비교 모듈은 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이에 있는 값을 갖는지 여부를 결정하도록 추가로 구성된다. 비교 모듈은, 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이의 값을 갖는다는 결정에 대한 응답으로, 제1 출력 신호가 비교 모듈 출력 라인에서 미리 결정된 출력 임계치 초과의 값을 갖도록 설정하도록 추가로 구성된다. 비교 모듈은, 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이에 있지 않은 값을 갖는다는 결정에 대한 응답으로, 제1 출력 신호가 비교 모듈 출력 라인에서 미리 결정된 출력 임계치 미만의 값을 갖도록 설정하도록 추가로 구성된다. 분류기 시스템은 또한 복수의 서브-분류기들에 커플링된 마스터 분류기를 포함한다. 마스터 분류기는 하나 이상의 클럭 사이클들 동안 복수의 서브-분류기들 각각으로부터 개개의 출력 신호들 각각을 수신하고, 미리 결정된 출력 임계치 초과의 값을 갖는 개개의 출력 신호를 생성하는 복수의 서브-분류기들의 서브세트에 기초하여 분류기 응답을 결정하도록 구성된다.
[0015] (A9) (A8)의 분류기 시스템의 일부 구현들에서, 서브-분류기들 각각은 임의의 다른 서브-분류기의 임의의 다른 개개의 윈도우 범위와 중첩하지 않는, 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이의 개개의 윈도우 범위를 갖는다.
[0016] (A10) (A8)의 분류기 시스템의 일부 구현들에서, 분류기 시스템은 복수의 서브-분류기들에 커플링된 멀티플렉서를 더 포함하고, 멀티플렉서는 단일 클럭 사이클 동안 복수의 서브-분류기들에 입력 신호들 중 하나를 제공하도록 구성된다.
[0017] (A11) 다른 양상에서, 일부 구현들은 제1 서브-분류기를 사용하여 입력 신호를 프로세싱하는 방법을 포함한다. 제1 서브-분류기는 가중 입력 모듈 및 가중 입력 모듈에 커플링된 비교 모듈을 포함한다. 방법은, 가중 입력 모듈에서, 가중 입력 신호를 생성하기 위해 입력 신호에 가중치를 적용하는 단계를 포함한다. 방법은, 비교 모듈에서, 가중 입력 신호를 비교 모듈 입력 라인에서 수신하는 단계를 더 포함한다. 방법은, 비교 모듈에서, 전기적 프로세스에 의해 제1 출력 신호를 비교 모듈 출력 라인에서 생성하는 단계를 더 포함한다. 전기적 프로세스는, 비교 모듈에서, 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이에 있는 값을 갖는지 여부를 결정하는 단계를 포함하는 단계들의 시퀀스로서 내셔널라이즈(nationalize)될 수 있다. 단계들의 시퀀스는 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이의 값을 갖는다는 결정에 대한 응답으로, 비교 모듈에서, 제1 출력 신호가 비교 모듈 출력 라인에서 제1 값을 갖도록 설정하는 단계를 더 포함한다. 단계들의 시퀀스는 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이에 있지 않은 값을 갖는다는 결정에 대한 응답으로, 비교 모듈에서, 제1 출력 신호가 비교 모듈 출력 라인에서 제1 값과 상이한 제2 값을 갖도록 설정하는 단계를 더 포함한다.
[0018] (A12) (A11)의 방법의 일부 구현들에서, 비교 모듈은 적어도 하나의 연산 증폭기 모듈을 포함하고, 방법은, 적어도 하나의 연산 증폭기 모듈에서, 가중 입력 신호를 수신하고, 적어도 하나의 연산 증폭기 모듈에서, 제1 출력 신호를 설정하는 단계를 더 포함한다.
[0019] (A13) (A11)의 방법의 일부 구현들에서, 방법은 가중 입력 모듈에서, 제2 서브-분류기로부터 제2 출력 신호를 수신하는 단계를 더 포함한다.
[0020] (A14) (A11)의 방법의 일부 구현들에서, 방법은, 제1 서브-분류기로부터의 제1 출력 신호를 제2 서브-분류기에 송신하는 단계를 더 포함한다.
[0021] (A15) (A14)의 방법의 일부 구현들에서, 방법은 가중 입력 모듈에서, 제어 그룹 신호를 수신하는 단계, 및 가중 입력 모듈에서, 제어 그룹 신호에 기초하여 가중 입력 신호를 생성하기 위해 입력 신호에 가중치를 적용하는 단계를 더 포함한다.
[0022] (A16) (A15)의 방법의 일부 구현들에서, 가중 입력 모듈은 전류 흐름 또는 전압 제어기(가변 저항기 모듈, 저항기 래더(ladder), 저항기 네트워크 또는 전류 흐름을 제어하는 회로)를 포함하고, 방법은 가변 저항기 모듈에서, 제어 그룹 신호를 수신하고, 제어 그룹 신호에 기초하여 가중 입력 신호를 조정하는 단계를 더 포함한다.
[0023] (A17) (A13)의 방법의 일부 구현들에서, 제1 서브-분류기는 비교 모듈에 커플링된 메모리 모듈을 포함하고, 방법은, 메모리 모듈에서, 비교 모듈로부터 제1 출력 신호를 수신 및 저장하고 제1 출력 신호를 제2 서브-분류기에 제공하는 단계를 더 포함한다.
[0024] (A18) 또 다른 양상에서, 일부 구현들은 분류기 시스템을 사용하여 하나 이상의 클럭 사이클들 동안 하나 이상의 입력 신호들을 프로세싱하는 방법을 포함한다. 분류기 시스템은 복수의 서브-분류기들 및 복수의 서브-분류기들에 커플링된 마스터 분류기를 포함하고, 복수의 서브-분류기들 각각은 가중 입력 모듈 및 비교 모듈을 포함한다. 방법은 각각의 서브-분류기에서, 가중 입력 모듈에서, 가중 입력 신호를 생성하기 위해 개개의 클럭 사이클에 대한 개개의 입력 신호에 가중치를 적용하는 단계; 비교 모듈에서, 가중 입력 신호를 비교 모듈 입력 라인에서 수신하는 단계; 및 비교 모듈에서, 전기적 프로세스에 의해 출력 신호를 비교 모듈 출력 라인에서 생성하는 단계를 포함한다. 프로세스는, 비교 모듈에서, 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이에 있는 값을 갖는지 여부를 결정하는 단계를 포함하는 단계들의 시퀀스로서 내셔널라이즈될 수 있다. 단계들의 시퀀스는 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이의 값을 갖는다는 결정에 대한 응답으로, 비교 모듈에서, 출력 신호가 비교 모듈 출력 라인에서 미리 결정된 출력 임계치 초과의 값을 갖도록 설정하는 단계를 더 포함한다. 단계들의 시퀀스는 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이에 있지 않은 값을 갖는다는 결정에 대한 응답으로, 비교 모듈에서, 출력 신호가 비교 모듈 출력 라인에서 미리 결정된 출력 임계치 미만의 값을 갖도록 설정하는 단계를 더 포함한다. 방법은 마스터 분류기에서, 하나 이상의 클럭 사이클들 동안 복수의 서브-분류기들 각각으로부터 출력 신호들 각각을 수신하는 단계, 및 미리 결정된 출력 임계치 초과의 값을 갖는 개개의 출력 신호를 생성하는 복수의 서브-분류기들의 서브세트에 기초하여 분류기 응답을 결정하는 단계를 더 포함한다.
[0025] (A19) (A18)의 방법의 일부 구현들에서, 서브-분류기들 각각은 임의의 다른 서브-분류기의 임의의 다른 개개의 윈도우 범위와 중첩하지 않는, 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이의 개개의 윈도우 범위를 갖는다.
[0026] (A20) (A18)의 방법의 일부 구현들에서, 분류기 시스템은 복수의 서브-분류기들에 커플링된 멀티플렉서 모듈을 포함하고, 방법은 멀티플렉서 모듈에서, 단일 클럭 사이클 동안 복수의 서브-분류기들에 입력 신호들 중 하나를 제공하는 단계를 더 포함한다.
[0027] 다양한 설명된 구현들의 더 양호한 이해를 위해, 유사한 참조 부호들이 도면들 전반에 걸쳐 대응하는 부분들을 지칭하는 하기 도면들과 함께 아래의 구현들의 설명이 참조되어야 한다.
[0028] 도 1a 및 도 1b는 일부 구현들에 따른 PNP(parallel neural processing) AI 프로세서를 갖는 예시적인 시스템 아키텍처들을 예시하는 블록도들이다
[0029] 도 2a는 일부 구현들에 따른 PNP AI 프로세서의 컴포넌트인 아날로그 윈도우 비교기를 예시하고; 도 2b는 일부 구현들에 따른 비-반전 윈도우 비교기를 예시한다.
[0030] 도 3은 일부 구현들에 따른 신경 네트워크에서 일련의 윈도우 비교기 회로들을 예시한다.
[0031] 도 4는 일부 구현들에 따른 데이터 흐름 제어 스테이지들을 갖는 상호연결된 신경 네트워크에서 일련의 윈도우 비교기들을 예시한다.
[0032] 도 5는 일부 구현들에 따른, 신경 네트워크의 신경가소성 및 거동을 제어하는 추가된 CG(control group)를 갖는 도 4의 일련의 윈도우 비교기들을 예시한다.
[0033] 도 6은 일부 구현들에 따른, CG 및 신경 네트워크를 통해 어드레스가능한 추가된 묵시적 메모리 블록을 갖는 도 5의 일련의 윈도우 비교기들을 예시한다.
[0034] 도 7은 일부 구현들에 따른 도 1a 또는 도 1b의 병렬 신경 프로세서를 갖는 대표적인 시스템(700)을 예시하는 블록도이다.
[0035] 도 8a 내지 도 8d는 일부 구현들에 따른 가중 입력 모듈 및 가중 입력 모듈에 커플링된 비교 모듈을 포함하는 서브-분류기를 사용하여 입력 신호들을 프로세싱하는 방법의 흐름도 표현을 예시한다.
[0036] 도 9a 내지 도 9e는 일부 구현들에 따른 분류기를 사용하여 하나 이상의 클럭 사이클들 동안 하나 이상의 입력 신호들을 프로세싱하는 방법의 흐름도 표현을 예시하고, 분류기는 복수의 서브-분류기들 및 복수의 서브-분류기들에 커플링된 마스터 분류기를 포함하고, 복수의 서브-분류기들 각각은 가중 입력 모듈 및 비교 모듈을 포함한다.
[0037] 이제 구현들이 상세히 참조될 것이며, 그 예들은 첨부된 도면들에 예시되어 있다. 하기 상세한 설명에서, 다양한 설명된 구현들의 철저한 이해를 제공하기 위해 다수의 특정 세부사항들이 기술된다. 그러나, 이러한 특정 세부사항들 없이도 다양한 설명된 구현들이 실시될 수 있음은 당업자에게 자명할 것이다. 다른 경우들에서, 널리 공지된 방법들, 절차들, 컴포넌트들, 회로들 및 네트워크들은 구현들의 양상들을 불필요하게 모호하게 하지 않도록 상세히 설명되지 않았다.
[0038] 일부 경우들에서, 제1, 제2 등의 용어들이 본 명세서에서 다양한 엘리먼트들을 설명하기 위해 사용되지만, 이러한 엘리먼트들은 이러한 용어들에 의해 제한되어서는 안됨을 또한 이해할 것이다. 이러한 용어들은 하나의 엘리먼트를 다른 엘리먼트로부터 구별하기 위해서만 사용된다. 예를 들어, 다양한 설명된 구현들의 범위를 벗어남이 없이, 제1 전자 디바이스는 제2 전자 디바이스로 지칭될 수 있고, 유사하게, 제2 전자 디바이스는 제1 전자 디바이스로 지칭될 수 있다. 제1 전자 디바이스 및 제2 전자 디바이스는 둘 모두 전자 디바이스들이지만, 이들은 반드시 동일한 전자 디바이스인 것은 아니다.
[0039] 본 명세서에서 다양한 설명된 구현들의 설명에서 사용된 용어는 단지 특정 구현들을 설명하기 위한 것이지 제한하려는 의도가 아니다. 다양한 설명된 구현들 및 첨부된 청구항들의 설명에서 사용된 바와 같이, 단수형 형태들은, 문맥상 명확하게 달리 표시되지 않으면, 복수형 형태들을 또한 포함하도록 의도된다. 본 명세서에서 사용된 바와 같은 "및/또는"이라는 용어는 연관된 나열된 항목들 중 하나 이상의 임의의 및 모든 가능한 조합들을 지칭하고 포함함을 또한 이해할 것이다. 본 명세서에서 사용되는 경우, "포함하다", "포함하는", "구비하다" 및/또는 "구비하는"이라는 용어들은, 언급된 특징들, 정수들, 단계들, 오퍼레이션들, 엘리먼트들 및/또는 컴포넌트들의 존재를 특정하지만, 다른 특징들, 정수들, 단계들, 오퍼레이션들, 엘리먼트들, 컴포넌트들 및/또는 이들의 그룹들 중 하나 이상의 존재 또는 추가를 배제하지는 않음을 추가로 이해할 것이다.
[0040] 본 명세서에서 사용되는 바와 같이, "~라면"이라는 용어는 선택적으로, 문맥에 따라, "경우" 또는 "때" 또는 "결정하는 것에 대한 응답으로" 또는 "검출하는 것에 대한 응답으로" 또는 "결정에 따라"를 의미하는 것으로 해석된다. 유사하게, "결정되면" 또는 "[언급된 조건 또는 이벤트]가 검출되면"이라는 구문은, 선택적으로, 문맥에 따라, "결정할 때" 또는 "결정하는 것에 대한 응답으로" 또는 "[언급된 조건 또는 이벤트]를 검출할 때" 또는 "[언급된 조건 또는 이벤트]를 검출하는 것에 대한 응답으로" 또는 "[언급된 조건 또는 이벤트]가 검출된다는 결정에 따라"를 의미하는 것으로 해석된다.
[0041] 도 1a 및 도 1b는 일부 구현들에 따른 PNP(parallel neural processing) AI 프로세서를 갖는 예시적인 시스템 아키텍처들을 예시하는 블록도들이다 도 1a는, 일부 구현들에 따라, 미처리 데이터를 프로세싱하고, AI 작업들(예를 들어, 이미지 인식, 자연 언어 프로세싱)을 PNP AI 프로세서(102)에 송신하고, PNP AI 프로세서(102)의 출력을 평가하는 평가 시스템(116)과 PNP AI 프로세서(102)를 통합하는 예시적인 시스템 아키텍처(100)를 예시하는 블록도이다. 평가 시스템(116)은 AI 작업들을 PNP AI 프로세서(102)에 송신하여, 시스템이 의미있는 응답들(114)로 외부 자극들(112)에 신속하게 반응하도록 허용한다. 이러한 구성에서, PNP AI 프로세서(102)는 평가 시스템(116)으로부터 수신된 결정적 작업들을 실행하는 코-프로세서로서 기능한다. 일부 구현들에서, 평가 시스템(116)은 종래의 마이크로프로세서들, 소프트웨어, 임베디드 또는 모바일 애플리케이션들을 포함한다. 도 1b는, PNP AI 프로세서(102)가 입력 자극(112)에 대한 응답으로 독립적으로(도 1a의 평가 시스템(116)의 보조 없이) 동작하고, 입력 자극(112)을 프로세싱하고 응답들(114)을 생성하는 예시적인 시스템 아키텍처(120)를 예시하는 블록도이다. 이러한 구성에서, 파선들이 표시하는 바와 같이, PNP AI 프로세서(102)는 또한 기존의 마이크로프로세서들, 소프트웨어, 임베디드 또는 모바일 애플리케이션들로 이루어진 종래의 시스템과 함께 동작할 수 있다.
[0042] 도 1a에 도시된 바와 같이, PNP AI 프로세서(102)가 코-프로세서로서 작용할 때, 평가 시스템(116)(때때로 본원에서 프로세서 서브-시스템으로 지칭됨)은 일부 구현들에 따라, 외부 입력 디바이스들로부터의 미처리 데이터 입력(때때로 본원에서 자극으로 지칭됨)을 프리-프로세싱하는 것 및 미처리 데이터 입력을 PNP AI 프로세서(102)에 전송하는 것을 담당한다. 예를 들어, 프로세서 서브-시스템은 입력 데이터를 PNP AI 프로세서에 대한 대표적 전압 레벨 입력으로 변환한다. 다양한 구현들에서, 이러한 자극은 사용자(예를 들어, 키보드 또는 마우스)에 의해 입력된 데이터, 외부 디바이스(예를 들어, 카메라)로부터 입력된 이미지 또는 비디오, 오디오 입력, 센서들 및/또는 모터들로부터의 감각 데이터를 포함한다. 이러한 리스트는 예시적이고, 총망라하는 것으로 의도되지 않는다. 예시로서, 시스템 아키텍처(100)에 의해 제어되는 이동가능한 로봇 팔이 외부 물리적 제약(예를 들어, 벽에 의해 차단됨)에 의해 이동불가능할 때, 로봇 팔의 하나 이상의 센서들은 CG(control group) 모듈(108)에 영향을 미치는 시스템에 대한 피드백을 생성할 수 있다(도 6을 참조하여 아래에서 상세히 설명됨).
[0043] 도 1a에 도시된 평가 시스템(116)은 일부 구현들에 따라, PNP AI 프로세서와 조합된 대화형 지능 시스템을 구현한다. 일부 구현들에서, 평가 시스템은 일부 구현들에 따라, 저장된 경험들의 세트에 대한 자극에 대한 응답으로, PNP AI 프로세서(102)(때때로, 본원에서 분류기 또는 분류기 시스템으로 지칭됨)로부터 수신된 액션 옵션들을 평가한다. 일부 구현들에서, 평가 시스템(116)은 저장된 경험들의 세트에 기초하여 액션 옵션들의 성공 확률을 분류하고 최고 랭킹(ranking) 액션(즉, 최고 성공 확률을 갖는 액션)을 리턴한다. 후속적으로, 일부 구현들에서, 평가 시스템(116)은 최고 랭킹(자극된, 묵시적, 반사작용) 액션에 대응하는 액션 응답을 생성한다(예를 들어, 로봇 팔을 이동시키는 모터를 시작한다). 일부 구현들에서, 평가 시스템(116)은 메모리(110)의 IMEM 내에 저장된 데이터와 메모리(110)의 EMEM에 저장된 경험 데이터를 비교하고, 2개의 데이터 사이에 (평가된, 명시적, 인지적) 매칭이 존재하면 액션을 생성한다. 일부 이러한 구현들에서, 명시적 및 묵시적 응답들이 미스매칭하면, 평가 시스템은 (도 5를 참조하여 아래에서 설명되는) CG 모듈(108)에서 하나 이상의 팩터들 또는 변수들(신경가소성)을 조정한다. 아래에서 더 상세히 설명되는 바와 같이, CG 모듈(108)로부터의 팩터들 또는 변수는 프로세싱 클럭 사이클 동안 활용되는 뉴런들의 수 뿐만 아니라 뉴런들의 학습 레이트에 영향을 미친다. 추가로, 일부 구현들에서, 자극이 성공적 액션을 도출하면, 성공적 액션을 표시하는 정보는 후속 프로세싱 단계들에서 추가적 사용을 위해 (예를 들어, 메모리 블록(110) 및/또는 CG 모듈(108)로의 피드백 신호를 통해) PNP AI 프로세서에 피드백된다. 일부 구현들에서, 자극에 대응하여 취해진 액션은 추가적인 자극들을 도출한다.
[0044] 이제 PNP AI 프로세서(102)를 주목한다. 도 1a 및 도 1b에 도시된 바와 같이, 일부 구현들에서, PNP AI 프로세서(102)는 신경 네트워크들의 하나 이상의 계층들(예를 들어, 데이터 입력 또는 자극으로부터 정보를 추출하는 신경 네트워크(104)의 정보 계층 또는 1차 계층, 및/또는 1차 계층(104)의 정보 출력으로부터 개념들을 추출하는 신경 네트워크(106)의 개념 계층 또는 2차 계층), CG(control group) 모듈(108) 및 하나 이상의 메모리 블록들(110)(예를 들어, 묵시적 메모리 블록 IMEM, 명시적 메모리 블록 EMEM)을 포함한다. 일부 구현들에서, CG 모듈(108) 및/또는 메모리 블록들(110)은 선택적인 컴포넌트들이다.
[0045] 각각의 계층(104, 106)은 복수의 상호연결된 뉴런들(또한 본원에서 서브-분류기들로 지칭됨)을 포함할 수 있다. 일부 구현들에서, 뉴런들은 구성가능한 토폴로지에 기초하여 연결된다. 뉴런들(도 2 내지 도 6을 참조하여 아래에서 상세히 설명됨)은 신경 네트워크의 프로세싱 엘리먼트들 또는 엔진들이다. 인공 신경 네트워크에서 소프트웨어 뉴런들이 동작하는 방법과 유사하게, 병렬 신경 프로세서(102) 내의 하드웨어 뉴런들은 또한 데이터를 프로세싱하고 분류한다. 그러나, 소프트웨어 뉴런들과 달리, 하드웨어 뉴런들은 병렬로 동작하여, 때때로 한번에 수백만, 수십억, 또는 심지어 수 조 개의 세트들로 동작한다. 일부 구현들에서, 계층 내의 뉴런들의 네트워크는 스테이지들에서 체계화되며, 스테이지 내의 뉴런들의 각각의 세트는 주어진 클럭 사이클 동안 병렬로 동작한다. 예를 들어, 뉴런들의 제1 스테이지가 입력에 대해 동작하고, 후속하여 뉴런들의 하나 이상의 스테이지들(때때로 은닉 계층들로 지칭됨)이 연속하여 뉴런들의 제1 스테이지의 출력을 프로세싱하고, 마지막으로 뉴런들의 출력 스테이지에 공급한다. 각각의 스테이지는 일부 구현들에 따라, 동일한 입력에 대해 동작하는 스테이지 내의 모든 뉴런들로 완료하기 위해 하나의 클럭 사이클을 소요한다. 따라서, 이러한 구현들은 완전히 소프트웨어 구현된 시스템들에 비해 더 빠른 프로세싱 레이트들을 달성한다. 입력 스테이지의 경우, 신경 프로세서 외부 또는 내부에 있는 하드웨어(예를 들어, 멀티플렉서)는 일부 구현들에 따라 신경 네트워크에 걸쳐 미처리 데이터를 공급 또는 분배한다. 일부 구현들에서, 평가 시스템(116)은 미처리 데이터(예를 들어, 미처리 데이터(112))를 프리-프로세싱하고, PNP AI 프로세싱된 입력(예를 들어, 미리 결정된 전압 레벨들)을 프리프로세서에 공급한다. 뉴런의 네트워크가 특정 데이터 세트에 대해 트레이닝되면, 뉴런들의 상이한 그룹들은 일부 구현들에 따라 상이한 데이터 세트들에 대해 활성화한다. 예를 들어, (제1 위너(winner) 뉴런을 갖는) 뉴런들의 하나의 세트는 테니스 공의 이미지를 표현하는 입력 데이터를 수신하는 것에 대한 응답으로 활성화하는 반면, (제2 위너 뉴런을 갖는) 뉴런들의 다른 세트는 꽃의 이미지를 표현하는 입력 데이터를 수신하는 것에 대한 응답으로 활성화한다.
[0046] CG(control group) 모듈(108)은 일부 구현들에 따라 아래에서 도 5 및 도 6을 참조하여 상세히 설명된다. 메모리 블록(110)은 아래에서 도 6을 참조하여 설명된다. PNP AI 프로세서(102)의 모듈들과 PNP AI 프로세서(102)로부터의 외부 연결들 사이의 다양한 내부 연결들은 일부 구현들에 따라, 도 1a에서 검은 실선들로 표시된다.
[0047] 일부 구현들에서, 입력 자극(112)은 미처리 입력 데이터를 프리-프로세싱하기 위한 평가 시스템(116)의 필요없이 병렬 신경 프로세서(102)의 하나 이상의 신경 네트워크들에 직접 연결된다. 일부 구현들에서, PNP AI 프로세서(102)의 출력은 개입하는 평가 시스템(116) 없이 응답 모듈(114)에 직접 연결된다. 일부 구현들에서, 자극 수신 모듈(112) 및/또는 응답 모듈(114)은 PNP AI 프로세서 내에 통합되는데, 즉, PNP AI 프로세서(102)는 외부 소프트웨어/하드웨어없이 자극(예를 들어, 어떤 종류의 간섭)을 수신하고 그리고/또는 응답을 생성(예를 들어, 로봇 팔 이동)할 수 있다.
[0048] 여기 및 아래에서 설명된 회로들은 수백만, 수십억 또는 심지어 수 조 개의 뉴런들을 이용하는 신경 네트워크들의 병렬 하드웨어 구현을 가능하게 한다. 이러한 대규모 병렬 하드웨어 구현들은 복잡한 문제 세트들을 해결하는 AI 구현들을 가능하게 한다.
[0049] 일부 구현들에서, 신경 네트워크의 다양한 섹션들은 계층구조적으로 체계화되어, 스테이지들에서 서로 공급하는 뉴런들의 다차원 계층들을 생성한다. 예를 들어, 계층구조적 신경 네트워크는 인간의 눈에서 뉴런들의 네트워크가 체계화되는 방법과 유사하다. 다른 예로서, 신경 네트워크는 2개의 계층들로 체계화되며, 뉴런 데이터의 제1 계층(예를 들어, 도 1a 및 도 1b의 뉴런들의 계층(104))은 입력으로부터 정보를 추출하고, 뉴런 데이터의 제2 계층(예를 들어, 도 1a 및 도 1b의 뉴런들의 계층(106))은 제1 계층의 출력에 기초한 개념들을 인식한다. 일부 이러한 구현들에서, 낮은 레벨 정보(예를 들어, 패턴들을 포함하는 미처리 데이터)로부터 높은 레벨 개념들을 추출하고 유지하는 능력으로, 신경 네트워크는 새로운 자극들(즉, 트레이닝 동안 이전에는 보이지 않은 데이터)에 대한 응답을 프로세싱 및 생성한다. 예를 들어, 위에서 설명된 회로들을 사용하는 신경 네트워크는, "시력이 눈에 대한 것일 때 청력은 귀에 대한 것(감지들)"과 같은 관련된 높은 레벨의 개념들이 더 높은 연결된 계층들에서 추출되고, 새롭고 관련없는 그리고 아직 경험되지 않은 맛과 같은 자극 동안 적용될 수 있음을 인식할 수 있다.
[0050] 도 2a는 일부 구현들에 따른, 도 1a 및 도 1b의 PNP AI 프로세서(102)의 서브-분류기의 컴포넌트인 아날로그 윈도우 비교기(WC)(216)를 예시한다. 일부 구현들에서, 마이크로프로세서들, 랜덤 액세스 메모리, 운영 시스템/임베디드 시스템 및 소프트웨어의 사용을 통해 인공 뉴런들을 에뮬레이트하는 종래의 신경 네트워크들과는 달리, 여기에 개시된 시스템은 하드웨어 구현이다. 도 2a에 도시된 것과 같은 WC 회로(때때로 본원에서 비교기로 지칭됨)(216)는 일부 구현들에 따라 뉴런의 기초를 형성한다. 일부 구현들에서, WC 회로들은 다양한 기본 전자 컴포넌트들(예를 들어, 접합 트랜지스터들, FET들)을 사용하여 구성된다. 일부 구현들에서, WC 회로들은 집적 회로들(예를 들어, 연산 증폭기들)을 사용하여 구성된다. 도 2a에 도시된 바와 같이, WC 회로는, 일부 구현들에 따르면, 그 입력(IWC(206))에 적용된 전압이 로우 기준 전압(RL(208))과 하이 기준 전압(RH(210)) 사이에 속하면 하이 비트(1)를 출력하고(OWC(214)), 입력(IWC(206))이 하이 기준 전압들 및 로우 기준 전압들 외부에 속하면 로우 비트(0)를 출력한다(/OWC(212)). 일부 구현들에서, 단일 WC 회로는, 입력 전압이 소정 범위 내에 있으면 "발화"(또는 활성화)하는 개별적인 "하드웨어 뉴런"을 형성하여, 소프트웨어 애플리케이션들을 통해 달성되는 가상 뉴런의 응답과 유사한 올 오어 넌(all-or-none) 응답을 생성한다.
[0051] 도 2b는 일부 구현들에 따른 비-반전 WC(218)를 예시한다. 일부 구현들에서, WC(218)는 도 2a의 WC 회로(216)와 실질적으로 동일한 기능들을 수행한다. 일부 구현들에서, WC(218)는 2개의 연결된 연산 증폭기들(도 2a의 Op-Amp(202) 및 Op-Amp(204))를 사용하여 형성된다.
[0052] 일부 구현들에서, WC 회로들은 입력 조건에 대하여 반전되거나 비-반전되도록 구성된다. 간략화를 위해, WC의 비-반전 출력(OWC(214))만이 도 2a 및 도 2b에 도시되어 있다. 본원에 논의된 예들은 제한들이 아니라 예시들로서 고려되어야 한다.
[0053] 도 3은 일부 구현들에 따른 신경 네트워크(예를 들어, 도 1a 및 도 1b의 1차 계층(104) 또는 2차 계층(106))에서의 일련의 WC 회로들(WC1, WC2, WC3, ..., WCN)을 예시한다. 일부 구현들에서, 일련의 WC들은 소프트웨어 뉴런들이 소프트웨어 기반 종래의 신경 네트워크를 형성하는 방법과 유사한 신경 네트워크를 형성하도록 상호연결된다. WC들은 일부 구현들에 따라 신경 네트워크 토폴로지에 기초하여 상호연결된다. 신경 네트워크 토폴로지는 뉴런들이 연결되어 네트워크를 형성하는 방식을 표현한다. 신경 네트워크 토폴로지는 또한 뉴런들의 연결들을 통해 뉴런들 사이의 관계로서 보일 수 있다. WC들은 각각 동일한 입력 자극 IWC(318)에 대해 동작하여 대응하는 출력을 생성할 수 있다.
[0054] 일부 구현들에서, 각각의 WC는 입력이 WVR 내에 있으면 WC가 제1 값을 생성하고 입력이 WVR 외부에 있으면 제2 값을 생성하는 WVR(Window Voltage Range)을 갖는다. 일부 구현들에서, WVR은 로우 기준 전압과 하이 기준 전압의 차이이다. 일부 구현들에서, 각각의 WC는 고유한 WVR을 갖는다. 예를 들어, 도 3에서, 비교기 WC1(RL 1(302) 및 RH 1(304)), 비교기 WC2(RL 2(306) 및 RH 2(308)), 비교기 WC3(RL 3(310) 및 RH 3(312)) 및 비교기 WCN(RL N(314) 및 RH N(316))에 대한 기준 전압들 각각은 대응하는 WVR들 모두가 고유하도록 설정된다. 일부 구현들에서, WVR들은 비-중첩된다. 일부 구현들에서, WVR들은 하나 초과의 WC가 주어진 자극에 응답하도록 중첩된다. 예를 들어, 하나 초과의 WC들(예를 들어, OWC 1(322), OWC 2(324), OWC 3(326) 및 OWC N(328))의 출력은 주어진 입력 자극 IWC(318)에 대해 하이 값(1)과 동일할 수 있다. 각각의 WC의 기준 전압 입력들 RL 및 RH에는 RH> RL이 되도록 하는 전압이 로딩되어 각각의 WC에 대한 WVR을 생성한다. 일부 구현들에 따르면, 각각의 WC는 시작 시에 대응하는 WVR로 초기화된다. 일부 구현들에서, 각각의 WC는 랜덤 WVR로 초기화된다. 일부 다른 구현들에서, 각각의 WC는 WVR로 초기화되어 WVR들은 전체 신경 네트워크에 걸쳐 균일한 기울기를 형성한다.
[0055] 도 4는 일부 구현들에 따른 데이터 흐름 제어 스테이지들을 갖는 상호연결된 신경 네트워크(예를 들어, 도 1a 및 도 1b의 1차 계층(104) 또는 2차 계층(106)) 내의 일련의 WC들을 예시한다. 1차 스테이지(S1)는 데이터 입력 스테이지 또는 자극(예를 들어, IWC(402))이 시스템에 입력되는 장소이다. 일부 구현들에서, 가중치 전압(WV) 회로는 입력 데이터 전압(IWC)에 추가로 전압을 도입함으로써 WC에 대한 입력 가중치들을 제어하기 위해 사용된다. 상이한 WC들(예를 들어, WV(404), WV(406), 및 WV(408))에 대한 가중치 전압들은 다양한 구현들에서 동일하거나 상이한 전압 값들로 설정될 수 있다. 일부 구현들에서, 회로부(본원에서 가중 입력 모듈로 지칭될 수 있음)는 입력 자극을 가중치 전압과 조합하고 순 가중 입력을 각각의 WC에 공급하기 위해 사용된다. 예를 들어, 도 4에서, 회로부(440)는 WC(404)로부터의 가중치 전압을 입력 자극 IWC(402)와 조합하여 가중 입력을 비교기 WC1(450)에 공급하고, 회로부(442)는 WC(406)로부터의 가중치 전압을 입력 자극 IWC(402)와 조합하여 가중 입력을 비교기 WC2(452)에 공급하고, 회로부(444)는 WC(408)로부터의 가중치 전압을 입력 자극 IWC(402)와 조합하여 가중 입력을 비교기 WCN(454)에 공급한다. 일부 구현들에서, 서브-분류기는 비교기 모듈에 커플링된 가중 입력 모듈을 포함한다. 예를 들어, 도 4에서, 비교기 WC1(450)은 가중 입력 모듈(440)에 커플링되고, 비교기 WC2(452)는 가중 입력 모듈(442)에 커플링되고, 비교기 WCN(454)은 가중 입력 모듈(444)에 커플링된다
[0056] 일부 토폴로지들에 대해, 래치(latch)들 또는 임시 메모리 셀들의 2차 스테이지(S2) 회로(본원에서 때때로 메모리 모듈들, 예를 들어, 래치들(410, 412 및 414)로 지칭됨)는 일부 구현들에 따라 WC들의 출력(OWC)을 저장한다. 상이한 시퀀스들을 사용하여 데이터를 저장하는 다양한 래칭 기술들이 존재한다. 예를 들어, 단순화된 시퀀스에서, 래치들은 특정된 시간 기간 동안 한번에 하나의 자극에 대한 응답을 저장한다. 더 복잡한 시퀀스들에서, 입력 데이터는 데이터 청크(chunk)들로 분할되고 래치들은 한번에 하나의 데이터 청크에 대응하는 응답 데이터를 저장한다.
[0057] 일부 구현들에서, 개개의 WC의 출력(OWC) 데이터는 일부 구현들에 따라 신경 네트워크의 토폴로지 또는 상호연결 방법에 기초하여 다른 WC들에 입력된다. 일부 구현들에서, 2차 스테이지(S2) 메모리 래치들 이후에 배치된 신경 네트워크(예를 들어, 회로들(416, 418, 및 420)) 내의 회로들의 다른 세트는 이웃 뉴런들(WV)에 전압을 피드백하여, 도 4에 도시된 바와 같이, 스테이지 3(S3) 내의 WC들의 입력 스테이지의 WV를 조정한다. 일부 구현들에서, 신경 네트워크의 하나 이상의 뉴런들로부터의 추가적 연결들(예를 들어, 연결들(428, 430 및 432))은 토폴로지 버스 ONN(예를 들어, 토폴로지 버스(422, 424 또는 426))에 의해 표시된 바와 같이 WV 회로에 적용된다. 일부 구현들에서, 래치들의 2차 스테이지(S2) 회로없이, 뉴런들의 활성화를 위한 클럭 사이클 또는 펄스 폭은, 전류 피드백이 뉴런들의 네트워크를 포화시키지 않고 뉴런들이 단지 뉴런들의 출력에 기초하여 턴 온되도록 설정될 수 있다.
[0058] 토폴로지 버스들(예를 들어, 버스들(422, 424 및 426))은 도 4에서 동일한 이름 ONN으로 식별되지만, 다양한 구현들에서, 토폴로지 버스들은 상이하게 구성되는데; 예를 들어, 신경 네트워크의 상이한 부분들 또는 영역들은 로컬 토폴로지에 기초하여 상이하게 체계화 또는 상호연결될 수 있다. 인간의 두뇌가 매우 특수화된 영역들로 분할되는 방법과 유사하게, 일부 구현들에서, 단일 실리콘 웨이퍼(수백만 또는 심지어 수십억 개의 WC들을 가짐)는 신경 네트워크들의 영역들로 추가로 세분화될 수 있고, 개별적인 토폴로지들은 인공 두뇌를 형성하도록 스스로 상호연결된 특정 기능들(예를 들어, 말, 시각, 청각 등)에 대해 특수화된다.
[0059] 회로부 및 하드웨어 연결의 타입으로 인해, 모든 WC들은 병렬 컴퓨팅 방식으로 동시에 프로세싱되어 상당한 성능 이득들을 도출하면서 또한 완전히 소프트웨어-기반인 네트워크들에 비해 광범위한 애플리케이션을 제공할 수 있다. 예를 들어, 반도체 웨이퍼 상에 백만개의 WC가 에칭되면, 단일 클럭 사이클에서 백만개 이상의 WC들의 전체 세트가 평가될 수 있다. 예를 들어, 클럭 주파수가 2GHz라고 가정하면, 백만개 이상의 뉴런(WC)들의 신경 네트워크의 20억 회 이상의 반복들이 1초 내에 평가될 수 있다.
[0060] 도 2 내지 도 4를 참조하여 위에서 설명된 WC들의 네트워크가 신경 네트워크를 구축하기 위해 사용되는 방법을 추가로 예시하자면, 일부 구현들에 따라 감독되지 않은 학습 네트워크의 타입인 SOM(Self-Organizing Map)의 예시적인 구성을 고려한다. SOM의 자체 체계화 프로세스는 초기화, 경합, 협력 및 적응으로 구성된다. 초기에, 모든 뉴런의 가중치 벡터가 작은 랜덤 값들로 초기화된다. WC 하드웨어 뉴런들의 경우, 가중치 전압(WV)들이 랜덤 값들로 초기화된다. 뉴런들은 각각의 입력 패턴(예를 들어, 이미지의 모든 픽셀들)에 대한 판별 함수의 자신들 개개의 값들을 컴퓨팅한다. 종래의 가상 뉴런들에 일반적으로 이용되는 판별 함수는 각각의 뉴런에 대한 입력 벡터와 상호연결 가중치 벡터 사이의 제곱된 유클리드(Euclidean) 거리이다. WC 기반 하드웨어 뉴런들의 경우, 판별 함수는 입력 전압과 가중치 전압들 사이의 제곱된 유클리드 거리일 수 있다. 판별 함수의 값이 최소 값을 갖는 특정 뉴런이 결정 뉴런으로 고려된다. WC 기반 하드웨어 신경 네트워크의 경우, 전압 임계치들의 초기 구성 및 연관된 가중치들에 따라, 입력 패턴에 대한 응답으로 하나 이상의 WC 뉴런들이 결정 뉴런이 될 수 있다. 단순화를 위해, 예시적인 단일 결정 뉴런을 고려한다. 결정 뉴런은 토폴로지에 기초하여, (예를 들어, 이웃 내의 가중치들을 조정하기 위해) 협력하는 활성화된 뉴런들의 이웃의 공간적 위치를 결정한다. 하나의 뉴런이 활성화될 때, 그에 가장 가까운 이웃들인 더 멀리 위치된 그러한 이웃들보다 더 영향을 미치는 응답을 갖는 경향이 있다. WC 기반 하드웨어 신경 네트워크에서, 결정 뉴런으로부터 출력되는 전압은 그의 이웃들에 연결되기 때문에, 출력은 이웃들의 가중치 전압들에 영향을 미친다. 영향을 받은 뉴런들은 연관된 연결 가중치의 조정을 통해 입력 패턴과 관련하여 판별 기능의 개별적인 값들을 업데이트한다. WC 기반 신경 네트워크에서, 가중치들은 연속적으로 적응된다. 따라서 유사한 입력 패턴의 후속 적용에 대한 결정 뉴런의 응답은 향상된다.
[0061] WC 기반 신경 네트워크의 자체 체계화 프로세스를 시각화하는 방법으로서, 연속적인 2차원 입력 공간에 입력된 데이터의 세트가 WC 기반 뉴런들의 세트 상에 맵핑되는 방법을 고려한다. WC-기반 뉴런들은 토폴로지(예를 들어, 모든 뉴런이 다른 모든 뉴런에 연결됨)에 따라 체계화 또는 연결된다. WC-기반 뉴런들은 랜덤 할당들(예를 들어, 전압 값들)에서 시작할 수 있고, 가중치들은 랜덤 초기 값들로 또는 그라데이션(gradation)에 따라 초기화된다. 뉴런들 각각은 대응하는 전압 값으로 변환되는 제1 입력을 (예를 들어, 프리-프로세서에 의해) 판독한다. 뉴런들 중 하나인 "결정 뉴런"은 하이 값 출력으로 응답할 것이다. 다양한 구성들에서 하나 초과의 뉴런이 입력에 응답할 수 있다. 결정 뉴런의 가중치들의 초기 값이 입력 전압에 응답하여 결정 뉴런 및 그 이웃들이 입력 전압에 응답하게 하도록 조정되기 때문에 결정 뉴런은 데이터 입력을 향해 이동하는 것으로 지칭된다. 이웃 뉴런들이 또한 데이터 입력을 향해, 그러나 더 작은 양만큼 이동한다. 모든 뉴런들이 하나 이상의 결정 뉴런들 및/또는 연관된 이웃들을 선택하기 위해 각각의 단계에서 동일한 입력을 공급하기 때문에, 프로세스는 병렬적이다(즉, WC 기반 뉴런들은 일제히 동작한다). 이러한 단계의 종료 시에 가중치들(모든 WC 기반 뉴런들의 전압 값들)이 조정된다. 다음으로, 트레이닝을 위해 제2 데이터 입력이 선택된다. 이러한 제2 라운드에서 제1 "결정 뉴런"과 상이한 뉴런이 결정자이다. 그리고 새로운 결정 뉴런 다음에 있는 뉴런들은 더 작은 양만큼 제2 데이터 입력을 향해 이동함으로써 응답한다. 이러한 단계의 종료 시에 가중치들은 다시 조정된다. 프로세스는 모든 뉴런들의 가중치들이 안정 상태에 도달할 때까지(예를 들어, 신경 네트워크에서 뉴런들의 가중치 전압들에서 더 이상 큰 변형들이 없을 때까지), 그리고 적어도 모든 입력 데이터가 프로세싱될 때까지 계속된다. 예를 들어, 주어진 데이터 세트를 사용하여 프로세스는 여러 번 반복된다. 결국, WC 기반 뉴런들의 전체 출력 그리드는 입력 공간을 표현한다.
[0062] 도 5는 CG 모듈(도시되지 않음)로부터 추가된 CG 신호(502)를 갖는 (도 4에서와 같은) 일련의 WC들을 예시한다. 일부 구현들에 따르면, CG 모듈은 신경 네트워크의 신경가소성 및 거동을 제어한다. 신경가소성을 이용하여, 신경 네트워크는 자체 학습을 수행한다. 종래의 네트워크들은 데이터세트에 대한 반복된 노출을 통해 트레이닝되고 소정 시간 기간에 걸쳐 수렴하며, 연결들의 가중치들은 데이터세트에 매칭하도록 조정되어 의미있는 출력이 생성된다. 트레이닝 기간은 학습 레이트에 의존한다. 예로서, SOM(Self Organizing Maps)의 경우, 트레이닝 기간은 또한 학습 반경 또는 트레이닝의 영향을 받는 뉴런들의 수에 의존한다. 학습 반경은 특정 입력에 대해 활성화하는 뉴런(때때로 본원에서 "결정 뉴런"으로 지칭됨)인 BMU(Best Matching Unit)로부터의 거리를 표시한다. 이러한 파라미터들은 신경 네트워크가 원하는 방식으로 자극에 반응하도록 완전히 트레이닝될 때까지 점진적으로 감소된다. 그러나, 초기 트레이닝 동안 고려되지 않은 임의의 새로운 데이터세트는 트레이닝된 신경 네트워크의 범위를 벗어난다. 이것은 신경가소성을 달성하는 신경 네트워크의 능력을 제한하며, 신경 네트워크는 새로운 데이터세트들을 처리하도록 다시 트레이닝되거나 새로운 데이터를 수용하도록 다시 설계되어야 한다.
[0063] 도 5에 도시된 바와 같이, 일부 구현들에서, 종래의 신경 네트워크들에 대한 이러한 제한들을 해결하기 위해, CG 신호들(예를 들어, 신호(502))은 입력 자극에 대한 응답을 향상시키거나 억제하고, 학습 레이트 및/또는 뉴런들의 수를 수정한다. 일부 구현들에서, CG 신호들은 신경 네트워크의 거동에 영향을 미치기 위해 신경 네트워크에 연속적으로 및/또는 간헐적으로 적용된다. 이러한 거동 변화들은 자극에 대한 응답으로 신경 네트워크가 얼마나 주의를 끌고, 완화되고 그리고/또는 응답하는지를 포함한다. 일부 구현들에서, CG 신호들은 신경 네트워크의 초점을 특정 자극 및/또는 신경 네트워크의 전체 학습 능력으로 제한한다. 따라서 CG 신호들은 신경 네트워크가 자극을 프로세싱하는 경우에도 적응적 학습을 구현한다. 일부 구현들에서, 하나 초과의 CG 변수가 동시에 사용되어, 복잡한 거동 패턴들을 커버한다. 일부 구현들에서, CG 신호들은 WC 뉴런들의 그룹의 로컬 거동/가소성 및/또는 전역 거동/가소성에 영향을 미칠 수 있다. 일부 구현들에서, CG 신호는 비교 모듈의 감도에 영향을 미칠 수 있다. 일부 구현들에서, CG 신호는 가중치 모듈 이전에 입력 신호에 영향을 미칠 수 있다. 예를 들어, 도 5에서, CG 신호(502)는 뉴런들 또는 비교기들 WC1, WC2 및 WCN에 대한 입력에 영향을 미친다. 일부 구현들에서, 상이한 CG 신호들은 신경 네트워크 거동에 영향을 미치기 위해 WC 뉴런들의 상이한 영역들 또는 이웃들에 적용된다.
[0064] WV 회로부(예를 들어, WV(504), WV(506), WV(508))는 일부 구현에 따라, CG 신호(예를 들어, 신호(502))를 수신하고 CG 신호에 기초하여 개개의 WC들에 대한 가중 입력을 조정한다. 다양한 구현들에서, WV 회로부는 CG 신호에 따라 WC에 의한 입력 자극과 비교하여 가중 출력을 제어하는 VCR(voltage control resistors) 및/또는 가변 저항기들(예를 들어, 전위차계 또는 디지털 전위차계, 전계 효과 트랜지스터, 저항기 래더, 저항기 브리지, 저항기 네트워크, 접합 트랜지스터 또는 다른 전류 또는 전압 제어 회로부)를 사용하여 구성된다.
[0065] 도 6은 일부 구현들에 따라, 도 5의 CG 신호 및 추가적인 메모리(604)(또한 본원에서 IMEM(Implicit Memory)로 지칭됨)를 갖는 일련의 WC를 예시한다. IMEM(604)은 서브-영역들로의 메모리 포인터들의 빠른 재지향을 허용할 수 있고/있거나 자극에 응답하는데 필요한 데이터를 포함하는 메모리 영역들에 대한 메모리 어드레스들을 제공한다. IMEM(604)을 이용하여, 도 1a 및 도 1b의) 평가 시스템(116)은 특정 데이터를 평가하고 응답(114)을 제공하기 위해 주어진 입력 자극에 특정한 데이터를 검색하기 위해 큰 메모리 공간을 판독하는 것을 회피한다.
[0066] 묵시적 메모리는 일부 구현에 따르면, 예를 들어, 입력 자극이 이전 경험과 단지 유사한(그리고 정확히 매칭하지는 않는) 경우에도 응답을 트리거링함으로써, 자극에 대한 직관적 응답들을 갖도록 신경 네트워크를 향상시킬 수 있다. IMEM과 비교하여, 명시적 메모리 블록들(예를 들어, EMEM 블록들(606, 608 및 610))은 일부에 구현들에 따르면 입력 자극에 대한 응답으로 리트리브될 정확한 데이터(예를 들어, 과거 입력에 대한 과거 응답들)를 저장하도록 구성될 수 있다. 예를 들어, PNP AI 프로세서(102)는 현재 입력을 이전 입력(예를 들어, 방을 방문하거나 비디오 또는 이미지를 본 사람과 동등함)에 매칭할 수 있고, EMEM으로부터 이전에 생성된 가상 이미지를 리트리브할 수 있고, 이를 현재 입력과 비교하여 매칭하는 응답을 생성할 수 있다. 더 상세한 데이터는 EMEM을 통해 액세스가능한 반면, IMEM은 데이터로부터 추출된 정보 및 개념들의 일반적인 패턴들을 저장 및 표현한다.
[0067] 일부 구현들에서, 메모리(604)는 하나 이상의 메모리 블록들의 세트로서 시각화될 수 있으며, 각각의 메모리 블록은 리트리브될 데이터를 표현한다. 일부 구현들에 따르면, 메모리 블록은 IMEM 블록 뿐만 아니라 EMEM 블록 둘 모두로서 참조될 수 있다. 일부 구현들에서, IMEM은 하나 이상의 WC 출력들(예를 들어, 신경 네트워크의 뉴런들의 주어진 블록으로부터의 출력) 및/또는 CG 상태들의 조합을 사용하여 어드레스가능하다. 예를 들어, 도 6에서, IMEM(604)은 제어 신호(602)(각각 대응하는 EMEM 블록들(606, 608 및 610)과 연결되는 신호들(618, 620 및 622)에 의해 도시됨) 및/또는 WC 출력(612, 614 및 616)을 통해 직접 어드레스가능하다. 일부 이러한 구현들에서, CG 신호들은 메모리 블록들의 크기, 또는 자극에 응답하기 위해 액세스되는 메모리 블록들의 수에 영향을 미친다. IMEM 블록들과 반대로, EMEM 블록들은 WC 출력을 통해 어드레스된다. 예를 들어, 일부 구현들에 따르면, 연결 라인들(예를 들어, 라인들(612, 614 및 616))은 도 6의 EMEM 블록들에 어드레스하기 위해 사용된다.
[0068] 도 6에 표시된 바와 같이, 상이한 메모리 블록들(예를 들어, 블록들(624, 626 및 628))로부터의 데이터는 일부 구현들에 따라, 입력 자극(예를 들어, 응답 프로세스들(624, 626, 및 628)로의 출력)에 응답하기 위해 평가 시스템(116)(도 1a 및 도 1b에 도시됨)에 의해 사용된다.
[0069] 캐시 메모리 아키텍처들이 더 신속한 액세스를 위해 이전에 및/또는 자주 사용되는 기능들 또는 데이터를 저장함으로써 메모리 액세스를 개선하는 방법과 유사하게, IMEM 아키텍처는 자극의 친숙성에 기초하여 메모리 액세스를 개선한다. 예를 들어, 반복적으로 관찰되는 자극은, 메모리 위치들을 특정하기 위해 신경 네트워크의 출력에 매칭하는 패턴에 의존할 필요 없이 하나 이상의 제어 그룹 신호들이 메모리의 하나 이상의 객체들에 직접 액세스하기 위해 사용될 수 있도록 시스템에 피드백을 제공할 수 있다. 그러나 캐시들과는 달리, IMEM은 여분의 저장소를 요구하거나 정확한 메모리 위치를 분석 및 발견하기 위해 반복적 검색 반복들을 수행하지 않고 메모리 액세스를 (예를 들어, CG 및 WC 출력을 사용한 직접 액세스들을 통해) 개선한다.
[0070] 도 6은 개개의 EMEM 블록이 단일 서브-분류기에 연결된 것처럼 EMEM 블록들을 예시하지만(예를 들어, 제1 서브-분류기를 EMEM 블록 1에 연결하는 라인(612)), 서브-분류기들은 하나 초과의 EMEM 블록에 액세스할 수 있다. 연결 라인들(예를 들어, 라인들(612, 614 및 616))은 비교기들의 출력을 통해 EMEM 블록들의 어드레스 능력을 나타내도록 의도된다.
[0071] 블록(630)에 의해 표시된 바와 같이, 일부 구현들에서, 마스터 분류기는 복수의 서브-분류기들, IMEM 블록들 및/또는 CG 신호들을 포함한다. 일부 구현들에서, 마스터 분류기(630)는 복수의 서브-분류기들, IMEM 블록들 및/또는 CG 신호들에 커플링된 독립적인 모듈(도 6에 도시되지 않음)이다. 일부 이러한 구현들에서, 마스터 분류기(630)는 하나 이상의 클럭 사이클들 동안 (예를 들어, 메모리(604)를 통해) 복수의 서브-분류기들 각각으로부터 개개의 출력 신호들 각각을 수신하고, 미리 결정된 출력 임계치 초과의 값을 갖는 개개의 출력 신호를 생성하는 복수의 서브-분류기들의 서브세트에 기초하여 분류기 응답을 결정한다.
[0072] 도 7은 일부 구현들에 따른 병렬 신경 프로세서(예를 들어, PNP AI 프로세서(102))를 갖는 대표적인 시스템(700)을 예시하는 블록도이다. 일부 구현들에서, 시스템(700)(예를 들어, 도 1a의 시스템 아키텍처(100)를 갖는 임의의 디바이스)는 하나 이상의 프로세싱 유닛들(예를 들어, CPU들, ASIC들, FPGA들, 마이크로프로세서들 등)(702), 하나 이상의 통신 인터페이스들(714), 메모리(718), 외부 센서들(704), 오디오/비디오 입력(706), 및 이러한 컴포넌트들을 상호접속시키기 위한 하나 이상의 통신 버스들(720)(때때로 칩셋으로 지칭됨)을 포함한다.
[0073] 일부 구현들에서, 시스템(700)은 사용자 인터페이스(708)를 포함한다. 일부 구현들에서, 사용자 인터페이스(708)는 하나 이상의 스피커들 및/또는 하나 이상의 시각적 디스플레이들을 포함하는, 미디어 콘텐츠의 프리젠테이션을 가능하게 하는 하나 이상의 출력 디바이스들(710)을 포함한다. 일부 구현들에서, 사용자 인터페이스(708)는 또한 키보드, 마우스, 음성-커맨드 입력 유닛 또는 마이크로폰, 터치 스크린 디스플레이, 터치-감응 입력 패드, 제스처 캡처 카메라 또는 다른 입력 버튼들 또는 제어들과 같이, 사용자 입력을 용이하게 하는 사용자 인터페이스 컴포넌트들을 포함하는 하나 이상의 입력 디바이스들(712)을 포함한다. 또한, 일부 시스템들은 키보드를 보완하거나 대체하기 위해 마이크로폰 및 음성 인식 또는 카메라 및 제스처 인식을 사용한다.
[0074] 일부 구현들에서, 시스템(700)은 하나 이상의 이미지/비디오 캡처 또는 오디오/비디오 입력 디바이스들(706)(예를 들어, 카메라들, 비디오 카메라들, 스캐너들, 포토 센서 유닛들)을 포함한다. 선택적으로, 시스템(700)은 시스템 디바이스(700)의 위치를 결정하기 위한 위치 검출 디바이스(미도시)를 포함한다.
[0075] 일부 구현들에서, 시스템(700)은 하나 이상의 빌트인 센서들(718)을 포함한다. 일부 구현들에서, 빌트인 센서들(718)은 예를 들어, 하나 이상의 열 방사 센서들, 주변 온도 센서들, 습도 센서들, IR 센서들, 점유 센서들(예를 들어, RFID 센서들을 사용함), 주변 광 센서들, 모션 검출기들, 가속도계들 및/또는 자이로스코프들을 포함한다.
[0076] 일부 구현들에서, 시스템(700)은 하나 이상의 외부 센서들(704)을 포함한다. 일부 구현들에서, 외부 센서들(704)은 예를 들어, 하나 이상의 열 방사 센서들, 주변 온도 센서들, 습도 센서들, IR 센서들, 점유 센서들(예를 들어, RFID 센서들을 사용함), 주변 광 센서들, 모션 검출기들, 가속도계들 및/또는 자이로스코프들을 포함한다.
[0077] 시스템(700)은 일부 구현들에 따라, 도 1 내지 도 6을 참조하여 전술된 AI 작업들을 수행/분담하기 위한 하나 이상의 병렬 신경 프로세서들(716)(예를 들어, 도 1a 또는 도 1b의 PNP AI 프로세서들(102))을 포함한다.
[0078] 통신 인터페이스들(720)은 예를 들어, 임의의 다양한 커스텀 또는 표준 무선 프로토콜들(예를 들어, IEEE 802.15.4, Wi-Fi, ZigBee, 6LoWPAN, Thread, Z-Wave, Bluetooth Smart, ISA100.11a, Wireless HART, MiWi, 등) 및/또는 임의의 다양한 커스텀 또는 표준 유선 프로토콜들(예를 들어, Ethernet, Home Plug 등) 또는 본 문헌의 출원일에 아직 개발되지 않은 통신 프로토콜을 포함하는 임의의 다른 적절한 통신 프로토콜을 사용하여 데이터 통신할 수 있는 하드웨어를 포함한다.
[0079] 메모리(721)는 고속 랜덤 액세스 메모리, 예를 들어, DRAM, SRAM, DDR RAM, 또는 다른 랜덤 액세스 솔리드 스테이트 메모리 디바이스들을 포함하고; 선택적으로, 비휘발성 메모리, 예를 들어, 하나 이상의 자기 디스크 저장 디바이스들, 하나 이상의 광 디스크 저장 디바이스들, 하나 이상의 플래시 메모리 디바이스들 또는 하나 이상의 다른 비휘발성 솔리드 스테이트 저장 디바이스들을 포함한다. 메모리(721) 또는 선택적으로 메모리(721) 내의 비휘발성 메모리는 비일시적 컴퓨터 판독가능 저장 매체를 포함한다. 일부 구현들에서, 메모리(721) 또는 메모리(721)의 비일시적 컴퓨터 판독가능 저장 매체는 하기 프로그램들, 모듈들 및 데이터 구조들 또는 이들의 서브세트 또는 수퍼세트를 저장한다:
다양한 기본 시스템 서비스들을 처리하고 하드웨어 의존적 작업들을 수행하기 위한 절차들을 포함하는 운영 로직(722);
하나 이상의 통신 인터페이스들(720)(유선 또는 무선)을 통해 하나 이상의 네트워크들에 접속된 다른 네트워크 디바이스들(예를 들어, 네트워크 인터페이스, 예를 들어, 인터넷 접속성을 제공하는 라우터, 네트워킹된 저장 디바이스들, 네트워크 라우팅 디바이스들, 서버 시스템 등)에 접속하고 그와 통신하기 위한 디바이스 통신 모듈(724);
하나 이상의 입력 디바이스들(712)로부터 하나 이상의 사용자 입력들 또는 상호작용들을 검출하고 검출된 입력들 또는 상호작용들을 해석하기 위한 입력 프로세싱 모듈(726);
세팅들, 캡처된 데이터 및/또는 하나 이상의 디바이스들(도시되지 않음)에 대한 다른 데이터가 구성 및/또는 뷰잉될 수 있는 사용자 인터페이스를 제공하고 디스플레이하기 위한 사용자 인터페이스 모듈(728);
디바이스들을 제어하기 위해 그리고 디바이스들에 의해 캡처된 데이터(예를 들어, 디바이스 상태, 세팅들, 캡처된 데이터 또는 시스템(700) 및/또는 다른 클라이언트/전자 디바이스들에 관한 다른 정보)를 검토하기 위해 시스템(700)에 의한 실행을 위한 하나 이상의 애플리케이션 모듈들(730);
PNP AI 프로세서(들)(716)에 대한 데이터를 프리-프로세싱하기 위한 기능들을 제공하며, 다음을 포함하는(이에 제한되는 것은 아님) PNP 프리-프로세싱 모듈(732):
o PNP AI 프로세서(들)(716)에 의해 프로세싱될 하나 이상의 입력 디바이스들(712), 외부 센서들(704), 빌트인 센서들(718) 및/또는 오디오/비디오 입력(706)으로부터의 데이터를 수신하기 위한 데이터 수신 모듈(7320);
o 데이터 수신 모듈(7320)에 의해 캡처 또는 수신된 데이터를 프로세싱하고, 프로세싱된 데이터를 준비(예를 들어, 미처리 데이터 입력으로부터 벡터들의 세트를 생성하고, 벡터들을 표로 체계화하고 그리고/또는 미처리 데이터를 전압 값들로 변환)하고 PNP AI 프로세서(들)(716)에 전송(예를 들어, 전류를 적용함으로써 데이터를 로딩)하기 위한 데이터 프리-프로세싱 모듈(7322);
PNP 프리-프로세싱 모듈(732) 및/또는 PNP 피드백 및 응답 모듈(734)(아래 설명됨)과 협력하여 하나 이상의 PNP AI 프로세서(들)(716)를 트레이닝(예를 들어, 전압 값들/임계치들을 셋업하고, 신경 네트워크(들)를 초기화하고, 학습 레이트 및 진행을 모니터링)하는 PNP 트레이닝 모듈(734); 및
다음을 포함하는(그러나 이에 제한되는 것은 아님) PNP 피드백 및 응답 모듈(734):
o PNP AI 프로세서(들)(716)로부터 데이터를 수신하기 위한(예를 들어, 윈도우 비교기 회로들의 출력으로부터 전압 값들을 수신하기 위한) 데이터 수신 모듈(7360);
o PNP AI 프로세서(들)(716)로부터 수신된 데이터를 포스트-프로세싱하기 위한(예를 들어, 전압 값들 또는 신경 네트워크 출력을 시스템에 의한 추가적 프로세싱에 유용한 다른 포맷으로 변환하기 위한) 데이터 포스트-프로세싱 모듈(7362);
o 자신의 출력에 기초하여(예를 들어, 제어 값들을 재조정하기 위해), 또는 시스템 내의 다른 디바이스들로부터의 입력에 기초하여(변하는 환경을 포함함) PNP AI 프로세서(들)(716)에 대한 피드백을 생성하기 위한 피드백 모듈(7364); 및
o PNP AI 프로세서(들)의 출력에 기초하여 시스템 응답(예를 들어, 로봇 팔을 이동시키는 것, 카메라의 위치를 변경하는 것 또는 경보를 시그널링하는 것)을 생성하기 위한 응답 모듈(7366).
[0080] 상기 식별된 엘리먼트들 각각은 이전에 언급된 메모리 디바이스들 중 하나 이상에 저장될 수 있고, 앞서 설명된 기능을 수행하기 위한 명령들의 세트에 대응한다. 상기 식별된 모듈들 또는 프로그램들(즉, 명령들의 세트)은 별개의 소프트웨어 프로그램들, 절차들 또는 모듈들로서 구현될 필요가 없고, 따라서 이러한 모듈들의 다양한 서브세트들은 다양한 구현들에서 조합되거나 달리 재배열될 수 있다. 일부 구현들에서, 메모리(606)는 선택적으로 앞서 식별된 모듈들 및 데이터 구조들의 서브세트를 저장한다. 또한, 메모리(606)는 선택적으로 앞서 설명되지 않은 추가적인 모듈들 및 데이터 구조들을 저장한다.
[0081] 도 8a 내지 도 8d는 일부 구현들에 따른 가중 입력 모듈 및 가중 입력 모듈에 커플링된 비교 모듈을 포함하는 서브-분류기를 사용하여 입력 신호들을 프로세싱(802)하는 방법(800)의 흐름도 표현을 예시한다. 서브-분류기들은 도 4를 참조하여 전술되었다. 일부 구현들에서, 비교 모듈은 (예를 들어, 도 2a 및 도 2b를 참조하여 전술된 아날로그 WC에 대한) 적어도 하나의 연산 증폭기 모듈을 포함한다(804). 제1 서브-분류기는, 가중 입력 모듈에서, 가중 입력 신호를 생성하기 위해 입력 신호에 가중치를 적용한다(806). 예를 들어, 도 4에서, 가중 입력 모듈(440)은 입력 신호(402)에 가중(404)을 적용하여 비교기 WC1(450)에 대한 가중 입력 신호를 생성한다. 일부 구현들에서, 가중 입력 모듈은 제2 서브-분류기로부터 제2 출력 신호를 수신한다(808). 예를 들어, 도 4에서, 가중 입력 모듈(442)은 다른 서브-분류기들로부터(예를 들어, 메모리 래치(410)로부터의 서브-분류기 출력으로부터) 출력 신호들(418)을 수신한다.
[0082] 방법(800)은, 비교 모듈에서, 가중 입력 신호를 비교 모듈 입력 라인에서 수신하는 단계(810)를 더 포함한다. 예를 들어, 도 4에서, 비교기 WC1(450)은 모듈(440)을 비교기(450)와 연결하는 것으로 도시된 라인 상에서 가중 입력 모듈(440)로부터 가중 입력 신호를 수신한다. 일부 구현들에서, 비교기 모듈은 (804를 참조하여 전술된) 적어도 하나의 연산 증폭기 모듈을 포함하고, 가중 입력 신호를 수신하는 단계는 적어도 하나의 연산 증폭기 모듈에서, 가중 입력 신호를 수신하는 단계(812)를 포함한다.
[0083] 도 8b에 도시된 바와 같이, 방법(800)은, 일부 구현들에 따라, 비교 모듈에서, 제1 출력 신호를 비교 모듈 출력 라인에서 생성하는 단계(814)를 더 포함한다. 예를 들어, 도 4에서, 비교기 WC1(450)은 비교기 WC1(450)을 메모리 래치(410)와 연결하는 라인 상에서 출력 신호 O1WC를 생성한다. 제1 출력 신호를 생성하는 단계(814)는 비교 모듈에서, 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이에 있는 값을 갖는지 여부를 결정하는 단계(816)를 포함한다. 비교 동작은 일부 구현들에 따라, 도 2a, 도 2b, 도 3 및 도 4를 참조하여 전술되었다. 예를 들어, 도 2a에서, Op-Amp(202) 및 Op-Amp(204)는 입력 전압 IWC(206)가 하위 전압 임계치 RL(208)과 상위 전압 임계치 RH(210) 사이에 있는지 여부를 결정한다. 제1 출력 신호를 생성하는 단계(814)는 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이의 값을 갖는다는 결정에 대한 응답으로, 비교 모듈에서, 제1 출력 신호가 비교 모듈 출력 라인에서 제1 값을 갖도록 설정하는 단계(818)를 더 포함한다. 예를 들어, 도 2a에서, Op-Amp(204)는 입력 전압 IWC(206)가 하위 전압 임계치 RL(208)과 상위 전압 임계치 RH(210) 사이에 있으면 출력 OWC를 설정한다. 다른 예로서, 도 4에서, 비교기 WC1(450)은, 입력 전압 IWC(402)가 하위 전압 임계치 RL 1과 상위 전압 임계치 RH 1 사이에 있으면 비교기를 메모리 래치(410)와 연결하는 라인에서 출력 O1WC를 (하이 전압 값으로) 설정한다. 제1 출력 신호를 생성하는 단계(814)는 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이에 있지 않은 값을 갖는다는 결정에 대한 응답으로, 비교 모듈에서, 제1 출력 신호가 비교 모듈 출력 라인에서 제1 값과 상이한 제2 값을 갖도록 설정하는 단계(820)를 더 포함한다. 예를 들어, 도 2a에서, Op-Amp(202)는 입력 전압 IWC(206)가 하위 전압 임계치 RL(208)과 상위 전압 임계치 RH(210) 사이에 있지 않으면 출력 /OWC를 설정한다. 다른 예로서, 도 4에서, 비교기 WC1(450)은, 입력 전압 IWC(402)가 하위 전압 임계치 RL 1과 상위 전압 임계치 RH 1 사이에 있으면 비교기를 메모리 래치(410)와 연결하는 라인에서 출력 O1WC를 (로우 전압 값으로) 설정한다. 일부 구현들에서, 비교기 모듈은 (예를 들어, 도 2a에서 설명된 바와 같이) 적어도 하나의 연산 증폭기를 포함하고, 제1 출력 신호를 생성하는 단계(814)는 적어도 하나의 연산 증폭기 모듈에서, 제1 출력 신호를 설정하는 단계(822)를 더 포함한다.
[0084] 일부 구현들에서, 방법(800)은 도 8c에 도시된 바와 같이, 제1 서브-분류기로부터의 제1 출력 신호를 제2 서브-분류기에 송신하는 단계(824)를 더 포함한다. 예를 들어, 도 4에서, 메모리 래치(410)에서 래치된 비교기 WC1(450)로부터의 출력 신호는 비교기 WC2(452) 및 가중 입력 모듈(442)을 포함하는 제2 서브-분류기에 송신된다(파선 입력(418)으로서 도시됨).
[0085] 일부 구현들에서, 방법(800)은 가중 입력 모듈에서, 제어 그룹 신호를 수신하는 단계(826)를 더 포함한다. 일부 이러한 구현들에서, 가중 입력 모듈은 가변 저항기 모듈을 포함하고, 방법은 가변 저항기 모듈에서, 제어 그룹 신호를 수신하고, 제어 그룹 신호에 기초하여 가중 입력 신호를 조정하는 단계(828)를 포함한다. 일부 구현들에서, 방법(800)은 가중 입력 모듈에서, 제어 그룹 신호에 기초하여 가중 입력 신호를 생성하기 위해 입력 신호에 가중치를 적용하는 단계(830)를 더 포함한다. 제어 그룹 신호들을 수신 및 프로세싱하는 것은 도 5를 참조하여 전술되었다. 예를 들어, 도 5에서, 제어 그룹 신호(502)가 적용되고, 대응하는 가중 입력 모듈들에 의해 소비되기 전에 회로부들(504, 506, 508) 내의 가중치 값들을 조정한다.
[0086] 일부 구현들에서, 도 8d에 도시된 바와 같이, 제1 서브-분류기는 비교 모듈에 커플링된 메모리 모듈을 포함한다(832). 일부 구현들에서, 메모리 래치, 비교기 및 가중 입력 모듈은 서브-분류기를 포함한다. 일부 이러한 구현들에서, 제1 서브-분류기는 메모리 모듈에서, 비교 모듈로부터 제1 출력 신호를 수신 및 저장하고, 제1 출력 신호를 제2 서브-분류기에 제공한다(834). 예를 들어, 도 4에서, 일부 구현들에 따라, 메모리 래치(410)는 비교기 WC1(450)에 커플링되고, 메모리 래치(412)는 비교기 WC2(452)에 커플링되고, 메모리 래치(414)는 비교기 WCN(454)에 커플링된다.
[0087] 도 9a 내지 도 9e는 분류기 시스템을 사용하여 하나 이상의 클럭 사이클들 동안 하나 이상의 입력 신호들을 프로세싱하는 방법(900)의 흐름도 표현을 예시한다. 분류기 시스템은 일부 구현들에 따라, 복수의 서브-분류기들 및 복수의 서브-분류기들에 커플링된 마스터 분류기를 포함하고, 복수의 서브-분류기들 각각은 가중 입력 모듈 및 비교 모듈을 포함한다(902). 복수의 서브-분류기들에 커플링된 예시적인 마스터 분류기는 도 6을 참조하여 앞서 논의되었다. 방법(900)의 일부 구현들에서, 도 9b의 920에 도시된 바와 같이, 서브-분류기들 각각은 임의의 다른 서브-분류기의 임의의 다른 개개의 윈도우 범위와 중첩하지 않는, 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이의 개개의 윈도우 범위를 갖는다. 예를 들어, 도 3에서, 비교기 WC1(RL 1(302) 및 RH 1(304)), 비교기 WC2(RL 2(306) 및 RH 2(308)), 비교기 WC3(RL 3(310) 및 RH 3(312)) 및 비교기 WCN(RL N(314) 및 RH N(316))에 대한 기준 전압들 각각은 대응하는 WVR들 모두가 고유하도록 설정된다. 일부 구현들에서, WVR들은 비-중첩된다. 방법(900)의 일부 구현들에서, 도 9c의 922에 도시된 바와 같이, 분류기 시스템은 복수의 서브-분류기들에 커플링된 멀티플렉서 모듈을 포함한다. 일부 이러한 구현들에서, 방법(900)은 멀티플렉서 모듈에서, 단일 클럭 사이클 동안 복수의 서브-분류기들에 입력 신호들 중 하나를 제공하는 단계(924)를 포함한다. 멀티플렉서 및/또는 프리-프로세싱 모듈들의 예들은 도 1a를 참조하여 전술되었다.
[0088] 일부 구현들에서, 방법(900)은 각각의 서브-분류기에서, 가중 입력 모듈에서, 가중 입력 신호를 생성하기 위해 개개의 클럭 사이클에 대한 개개의 입력 신호에 가중치를 적용하는 단계(908)를 포함한다(906). 일부 이러한 구현들에서, 방법(900)은, 각각의 서브-분류기에서, 비교 모듈에서, 가중 입력 신호를 비교 모듈 입력 라인에서 수신하는 단계(910)를 더 포함한다. 일부 이러한 구현들에서, 방법(900)은, 비교 모듈에서, 출력 신호를 비교 모듈 출력 라인에서 생성하는 단계(912)를 더 포함한다. 예시적인 가중 입력 모듈은 일부 구현들에 따라 도 4를 참조하여 전술되었다.
[0089] 일부 구현들에서, 도 9d에 도시된 바와 같이, 비교 모듈에서 출력 신호를 생성하는 단계(912)는, 비교 모듈에서, 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이에 있는 값을 갖는지 여부를 결정하는 단계(926); 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이의 값을 갖는다는 결정에 대한 응답으로, 비교 모듈에서, 출력 신호가 비교 모듈 출력 라인에서 미리 결정된 출력 임계치 초과의 값을 갖도록 설정하는 단계(928); 및 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이에 있지 않은 값을 갖는다는 결정에 대한 응답으로, 비교 모듈에서, 출력 신호가 비교 모듈 출력 라인에서 미리 결정된 출력 임계치 미만의 값을 갖도록 설정하는 단계(930)를 포함한다. 비교기 모듈의 동작들은 상기 도 8b를 참조하여 전술되었고, 일부 구현들에 따라 도 9d에 도시된 동작들에 적용된다.
[0090] 도 9a를 다시 참조하면, 일부 구현들에서, 방법(900)은 마스터 분류기에서, 하나 이상의 클럭 사이클들 동안 복수의 서브-분류기들 각각으로부터 출력 신호들 각각을 수신하는 단계(916)를 포함한다(914). 일부 이러한 구현들에서, 방법(900)은 마스터 분류기에서, 미리 결정된 출력 임계치 초과의 값을 갖는 개개의 출력 신호를 생성하는 복수의 서브-분류기들의 서브세트에 기초하여 분류기 응답을 결정하는 단계(918)를 더 포함한다.
[0091] 방법(900)의 일부 구현들에서, 분류기는 마스터 분류기 및/또는 복수의 서브-분류기들에 커플링된 메모리 블록을 포함한다(932). 일부 이러한 구현들에서, 방법은, 복수의 서브-분류기들 각각의 가중 입력 모듈에서(934), 제어 그룹 신호를 수신하는 단계(936) 및 제어 그룹 신호에 기초하여 가중 입력 신호를 생성하기 위해 입력 신호에 가중치를 적용하는 단계(938)를 더 포함한다. 방법은 메모리 블록에서 분류기의 하나 이상의 응답들을 저장하는 단계(940)를 더 포함하고, 메모리 블록은 복수의 서브-분류기들의 하나 이상의 서브-분류기들의 출력 신호 및 제어 그룹 신호를 사용하여 어드레스가능한 하나 이상의 메모리 서브-블록들을 포함한다. 방법은 마스터 분류기에서, 하나 이상의 메모리 서브-블록들에 기초하여 분류기 응답을 결정하는 단계(942)를 더 포함한다. 마스터 분류기의 세부사항들은 일부 구현들에 따라 도 6을 참조하여 앞서 논의되었다. 추가로, 도 6과 관련된 논의들에 표시된 바와 같이, EMEM 블록들의 출력(예를 들어, 출력(624, 626 및 628))은 일부 구현들에 따라 분류기 응답을 결정하기 위해 사용된다.
[0092] 도 8a 내지 도 8d 및 도 9a 내지 도 9e에서의 동작들이 설명된 특정 순서는 단지 예일 뿐이고, 설명된 순서는 동작들이 수행될 수 있는 유일한 순서임을 표시하도록 의도되지 않음을 이해해야 한다. 당업자는 본원에 설명된 동작들을 재순서화하는 다양한 방식들을 인식할 것이다. 추가적으로, 방법(800)과 관련하여 설명된 다른 프로세스들의 세부사항들은 또한 도 9a 내지 도 9e와 관련하여 전술된 방법(900)과 유사한 방식으로 적용가능하다는 것을 주목해야 한다.
[0093] 다양한 도면들 중 일부는 특정 순서로 다수의 로직 스테이지들을 예시하지만, 순서 의존적이 아닌 스테이지들은 재순서화될 수 있고 다른 스테이지들이 조합되거나 분리될 수 있다. 일부 재순서화 또는 다른 그룹화들이 구체적으로 언급되지만, 다른 것들이 당업자들에게 자명할 것이어서, 본 명세서에 제시된 순서화 및 그룹화들은 대안들에 대해 총망라하는 리스트가 아니다. 또한, 스테이지들은 하드웨어, 펌웨어, 소프트웨어 또는 이들의 임의의 조합으로 구현될 수 있음을 인식해야 한다.
[0094] 상기 설명은 설명의 목적을 위해 특정 구현들을 참조하여 설명되었다. 그러나, 상기 예시적인 논의들은, 포괄적인 것으로, 또는 본 청구항들의 범위를 개시된 바로 그 형태들로 제한하는 것으로 의도되지 않는다. 상기 교시들의 관점에서 많은 변형들 및 변화들이 가능하다. 구현들은 청구항들 및 이들의 실제 적용들에 내재하는 원리들을 가장 잘 설명하기 위해 선택되었고, 따라서 당업자들이 구현들을 고려된 특정 사용들에 적합하도록 다양한 수정들로 가장 잘 사용할 수 있게 한다.

Claims (23)

  1. 입력 신호를 프로세싱하도록 구성된 제1 서브-분류기로서,
    가중 입력 모듈 ― 상기 가중 입력 모듈은 제어 그룹 신호를 수신하고, 상기 제어 그룹 신호에 기초하여 가중 입력 신호를 생성하기 위해 상기 입력 신호에 가중치를 적용하도록 구성되고, 상기 제어 그룹 신호는 상기 입력 신호에 대한 상기 제1 서브-분류기를 포함하는 복수의 서브-분류기들의 응답을 제어함 ―;
    상기 가중 입력 모듈에 커플링된 비교 모듈을 포함하고, 상기 비교 모듈은,
    상기 가중 입력 신호를 비교 모듈 입력 라인에서 수신하고; 그리고
    비교 모듈 출력 라인에서 제1 출력 신호를 생성하도록 구성되고; 상기 비교 모듈은,
    상기 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이에 있는 값을 갖는지 여부를 결정하고;
    상기 가중 입력 신호가 상기 하위 윈도우 범위 값과 상기 상위 윈도우 범위 값 사이의 값을 갖는다는 결정에 대한 응답으로, 상기 제1 출력 신호가 상기 비교 모듈 출력 라인에서 제1 값을 갖도록 설정하고; 그리고
    상기 가중 입력 신호가 상기 하위 윈도우 범위 값과 상기 상위 윈도우 범위 값 사이에 있지 않은 값을 갖는다는 결정에 대한 응답으로, 상기 제1 출력 신호가 상기 비교 모듈 출력 라인에서 상기 제1 값과 상이한 제2 값을 갖도록 설정하도록 추가로 구성되고,
    상기 가중 입력 모듈은, 상기 제어 그룹 신호를 수신하고 상기 제어 그룹 신호에 기초하여 상기 가중 입력 신호를 조정하거나 비교 모듈의 자극 감도에 영향을 미치도록 구성된 가변 저항기 또는 가변 전류 또는 전압 조절기를 포함하는, 제1 서브-분류기.
  2. 제1 항에 있어서,
    상기 비교 모듈은 상기 가중 입력 신호를 수신하고 상기 제1 출력 신호를 설정하도록 구성된 적어도 하나의 연산 증폭기를 포함하는, 제1 서브-분류기.
  3. 제1 항 또는 제2 항에 있어서,
    상기 가중 입력 신호를 생성하기 위해 상기 입력 신호에 적용된 가중치는 제2 서브-분류기로부터의 제2 출력 신호에 기초하는, 제1 서브-분류기.
  4. 제1 항 또는 제2 항에 있어서,
    상기 제1 서브-분류기로부터의 상기 제1 출력 신호는 제2 서브-분류기에 송신되는, 제1 서브-분류기.
  5. 삭제
  6. 삭제
  7. 제1 항 또는 제2 항에 있어서,
    상기 비교 모듈로부터 상기 제1 출력 신호를 수신 및 저장하고 상기 제1 출력 신호를 제2 서브-분류기에 제공하도록 구성된 메모리 모듈을 더 포함하는, 제1 서브-분류기.
  8. 하나 이상의 클럭 사이클들 동안 하나 이상의 입력 신호들을 프로세싱하도록 구성된 분류기 시스템으로서,
    복수의 서브-분류기들;
    묵시적 메모리 영역; 및
    명시적 메모리 영역을 포함하고,
    상기 복수의 서브-분류기들 각각은,
    가중 입력 모듈 ― 상기 가중 입력 모듈은 가중 입력 신호를 생성하기 위해 개개의 클럭 사이클에 대한 개개의 입력 신호에 가중치를 적용하도록 구성됨 ―;
    상기 가중 입력 모듈에 커플링된 비교 모듈을 포함하고, 상기 비교 모듈은,
    상기 가중 입력 신호를 비교 모듈 입력 라인에서 수신하고; 그리고
    비교 모듈 출력 라인에서 출력 신호를 생성하도록 구성되고; 상기 비교 모듈은,
    상기 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이에 있는 값을 갖는지 여부를 결정하고;
    상기 가중 입력 신호가 상기 하위 윈도우 범위 값과 상기 상위 윈도우 범위 값 사이의 값을 갖는다는 결정에 대한 응답으로, 제1 출력 신호가 상기 비교 모듈 출력 라인에서 미리 결정된 출력 임계치 초과의 값을 갖도록 설정하고; 그리고
    상기 가중 입력 신호가 상기 하위 윈도우 범위 값과 상기 상위 윈도우 범위 값 사이에 있지 않은 값을 갖는다는 결정에 대한 응답으로, 상기 제1 출력 신호가 상기 비교 모듈 출력 라인에서 상기 미리 결정된 출력 임계치 미만의 값을 갖도록 설정하도록 추가로 구성되고;
    상기 묵시적 메모리 영역은, 상기 복수의 서브-분류기들의 출력에 기초하여, 데이터로부터 추출된 정보 및/또는 개념들의 클러스터 패턴들을 나타내는 묵시적 메모리 출력을 생성하도록 구성되고,
    상기 명시적 메모리 영역은, 상기 복수의 서브-분류기들의 출력에 기초하여, 개개의 입력 신호들에 대한 이전 분류기 응답들을 나타내는 명시적 메모리 출력을 생성하도록 구성되는, 분류기 시스템.
  9. 제8 항에 있어서,
    상기 서브-분류기들 각각은 임의의 다른 서브-분류기의 임의의 다른 개개의 윈도우 범위와 중첩하지 않는, 상기 하위 윈도우 범위 값과 상기 상위 윈도우 범위 값 사이의 개개의 윈도우 범위를 갖는, 분류기 시스템.
  10. 제8 항 또는 제9 항에 있어서,
    상기 복수의 서브-분류기들에 커플링된 멀티플렉서를 더 포함하고, 상기 멀티플렉서는 단일 클럭 사이클 동안 상기 복수의 서브-분류기들에 상기 입력 신호들 중 하나를 제공하도록 구성되는, 분류기 시스템.
  11. 제1 서브-분류기를 사용하여 입력 신호를 프로세싱하는 방법으로서,
    상기 제1 서브-분류기는 가중 입력 모듈 및 상기 가중 입력 모듈에 커플링된 비교 모듈을 포함하고,
    상기 방법은,
    상기 가중 입력 모듈에서, 제어 그룹 신호를 수신하는 단계;
    상기 가중 입력 모듈에서, 상기 제어 그룹 신호에 기초하여 가중 입력 신호를 생성하기 위해 상기 입력 신호에 가중치를 적용하는 단계 ― 상기 제어 그룹 신호는 상기 입력 신호에 대한 상기 제1 서브-분류기를 포함하는 복수의 서브-분류기들의 응답을 제어함 ―;
    상기 비교 모듈에서는, 상기 가중 입력 신호를 비교 모듈 입력 라인에서 수신하는 단계;
    상기 비교 모듈에서는, 제1 출력 신호를 비교 모듈 출력 라인에서 생성하는 단계를 포함하고,
    상기 생성하는 단계는,
    상기 비교 모듈에서, 상기 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이에 있는 값을 갖는지 여부를 결정하는 단계;
    상기 가중 입력 신호가 상기 하위 윈도우 범위 값과 상기 상위 윈도우 범위 값 사이의 값을 갖는다는 결정에 대한 응답으로, 상기 비교 모듈에서는, 상기 제1 출력 신호가 상기 비교 모듈 출력 라인에서 제1 값을 갖도록 설정하는 단계; 및
    상기 가중 입력 신호가 상기 하위 윈도우 범위 값과 상기 상위 윈도우 범위 값 사이에 있지 않은 값을 갖는다는 결정에 대한 응답으로, 상기 비교 모듈에서는, 상기 제1 출력 신호가 상기 비교 모듈 출력 라인에서 상기 제1 값과 상이한 제2 값을 갖도록 설정하는 단계를 포함하고,
    상기 가중 입력 모듈은, 상기 제어 그룹 신호를 수신하고 상기 제어 그룹 신호에 기초하여 상기 가중 입력 신호를 조정하거나 비교 모듈의 자극 감도에 영향을 미치도록 구성된 가변 저항기 또는 가변 전류 또는 전압 조절기를 포함하는, 입력 신호를 프로세싱하는 방법.
  12. 제11 항에 있어서,
    상기 비교 모듈은 적어도 하나의 연산 증폭기 모듈을 포함하고,
    상기 방법은,
    상기 적어도 하나의 연산 증폭기 모듈에서, 상기 가중 입력 신호를 수신하고, 상기 적어도 하나의 연산 증폭기 모듈에서, 상기 제1 출력 신호를 설정하는 단계를 더 포함하는, 입력 신호를 프로세싱하는 방법.
  13. 제11 항 또는 제12 항에 있어서,
    상기 가중 입력 모듈에서, 제2 서브-분류기로부터 제2 출력 신호를 수신하는 단계를 더 포함하는, 입력 신호를 프로세싱하는 방법.
  14. 제11 항 또는 제12 항에 있어서,
    상기 제1 서브-분류기로부터의 상기 제1 출력 신호를 제2 서브-분류기에 송신하는 단계를 더 포함하는, 입력 신호를 프로세싱하는 방법.
  15. 삭제
  16. 제11 항에 있어서,
    상기 가중 입력 모듈은 가변 저항기 모듈을 포함하고,
    상기 방법은,
    상기 가변 저항기 모듈에서, 상기 제어 그룹 신호를 수신하고, 상기 제어 그룹 신호에 기초하여 상기 가중 입력 신호를 조정하는 단계를 더 포함하는, 입력 신호를 프로세싱하는 방법.
  17. 제11 항 또는 제12 항에 있어서,
    상기 제1 서브-분류기는 상기 비교 모듈에 커플링된 메모리 모듈을 포함하고,
    상기 방법은,
    상기 메모리 모듈에서, 상기 비교 모듈로부터 상기 제1 출력 신호를 수신 및 저장하고 상기 제1 출력 신호를 제2 서브-분류기에 제공하는 단계를 더 포함하는, 입력 신호를 프로세싱하는 방법.
  18. 분류기 시스템을 사용하여 하나 이상의 클럭 사이클들 동안 하나 이상의 입력 신호들을 프로세싱하는 방법으로서,
    상기 분류기 시스템은 복수의 서브-분류기들 및 상기 복수의 서브-분류기들에 커플링된 묵시적 메모리 영역 및 명시적 메모리 영역을 포함하고, 상기 복수의 서브-분류기들 각각은 가중 입력 모듈 및 비교 모듈을 포함하고,
    상기 방법은,
    각각의 서브-분류기에서,
    상기 가중 입력 모듈에서, 가중 입력 신호를 생성하기 위해 개개의 클럭 사이클에 대한 개개의 입력 신호에 가중치를 적용하는 단계;
    상기 비교 모듈에서는, 상기 가중 입력 신호를 비교 모듈 입력 라인에서 수신하는 단계; 및
    상기 비교 모듈에서는, 출력 신호를 비교 모듈 출력 라인에서 생성하는 단계를 포함하고,
    상기 생성하는 단계는,
    상기 비교 모듈에서, 상기 가중 입력 신호가 하위 윈도우 범위 값과 상위 윈도우 범위 값 사이에 있는 값을 갖는지 여부를 결정하는 단계;
    상기 가중 입력 신호가 상기 하위 윈도우 범위 값과 상기 상위 윈도우 범위 값 사이의 값을 갖는다는 결정에 대한 응답으로, 상기 비교 모듈에서는, 출력 신호가 상기 비교 모듈 출력 라인에서 미리 결정된 출력 임계치 초과의 값을 갖도록 설정하는 단계; 및
    상기 가중 입력 신호가 상기 하위 윈도우 범위 값과 상기 상위 윈도우 범위 값 사이에 있지 않은 값을 갖는다는 결정에 대한 응답으로, 상기 비교 모듈에서는, 상기 출력 신호가 상기 비교 모듈 출력 라인에서 상기 미리 결정된 출력 임계치 미만의 값을 갖도록 설정하는 단계를 포함하고;
    상기 방법은,
    상기 묵시적 메모리 영역에서, 상기 복수의 서브-분류기들의 출력에 기초하여, 데이터로부터 추출된 정보 및/또는 개념들의 클러스터 패턴들을 나타내는 묵시적 메모리 출력을 생성하는 단계; 및
    상기 명시적 메모리 영역에서, 상기 복수의 서브-분류기들의 출력에 기초하여, 개개의 입력 신호들에 대한 이전 분류기 응답들을 나타내는 명시적 메모리 출력을 생성하는 단계를 포함하는, 하나 이상의 입력 신호들을 프로세싱하는 방법.
  19. 제18 항에 있어서,
    상기 서브-분류기들 각각은 임의의 다른 서브-분류기의 임의의 다른 개개의 윈도우 범위와 중첩하지 않는, 상기 하위 윈도우 범위 값과 상기 상위 윈도우 범위 값 사이의 개개의 윈도우 범위를 갖는, 하나 이상의 입력 신호들을 프로세싱하는 방법.
  20. 제18 항 또는 제19 항에 있어서,
    상기 분류기 시스템은 상기 복수의 서브-분류기들에 커플링된 멀티플렉서 모듈을 포함하고,
    상기 멀티플렉서 모듈에서, 단일 클럭 사이클 동안 상기 복수의 서브-분류기들에 상기 입력 신호들 중 하나를 제공하는 단계를 더 포함하는, 하나 이상의 입력 신호들을 프로세싱하는 방법.
  21. 제8 항에 있어서,
    평가 시스템을 더 포함하고,
    상기 평가 시스템은,
    상기 묵시적 메모리 출력을 상기 명시적 메모리 출력과 비교하고;
    상기 묵시적 메모리 출력과 상기 명시적 메모리 출력 사이에 불일치가 있다는 결정에 대한 응답으로, 후속 프로세싱에 사용되는 서브-분류기들의 수를 수정하기 위해, 상기 복수의 서브-분류기들로 전송된 제어 그룹 신호의 하나 이상의 특성들을 조정하도록 구성되는, 분류기 시스템.
  22. 제21 항에 있어서,
    상기 묵시적 메모리 영역은,
    상기 복수의 서브-분류기들의 하나 이상의 출력으로 표현되는 묵시적 메모리 어드레스 신호와 상기 제어 그룹 신호를 수신하고;
    수신된 묵시적 메모리 어드레스 신호에 대응하는 묵시적 메모리 출력 신호를 출력하도록 구성되고, 그리고
    상기 명시적 메모리 영역은,
    상기 제어 그룹 신호 없이, 상기 복수의 서브-분류기들의 하나 이상의 출력으로 표현되는 명시적 메모리 어드레스 신호를 수신하고;
    수신된 명시적 메모리 어드레스 신호에 대응하는 명시적 메모리 출력 신호를 출력하도록 구성되는, 분류기 시스템.
  23. 제8 항에 있어서,
    상기 복수의 서브-분류기들에 커플링되는 마스터 분류기를 더 포함하고,
    상기 마스터 분류기는,
    상기 하나 이상의 클럭 사이클들 동안 상기 복수의 서브-분류기들 각각으로부터 상기 개개의 출력 신호들 각각을 수신하고,
    상기 미리 결정된 출력 임계치 초과의 값을 갖는 개개의 출력 신호를 생성하는 상기 복수의 서브-분류기들의 서브세트에 기초하여 분류기 응답을 결정하도록 구성되는, 분류기 시스템.
KR1020217003616A 2017-09-08 2018-09-07 인공 지능을 위한 병렬 신경 프로세서 KR102598208B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237037603A KR20230154295A (ko) 2017-09-08 2018-09-07 인공 지능을 위한 병렬 신경 프로세서

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201762556312P 2017-09-08 2017-09-08
US62/556,312 2017-09-08
US16/124,104 2018-09-06
US16/124,104 US11507806B2 (en) 2017-09-08 2018-09-06 Parallel neural processor for Artificial Intelligence
KR1020207006759A KR102215619B1 (ko) 2017-09-08 2018-09-07 인공 지능을 위한 병렬 신경 프로세서
PCT/IB2018/000994 WO2019048922A1 (en) 2017-09-08 2018-09-07 PARALLEL NEURONAL PROCESSOR FOR ARTIFICIAL INTELLIGENCE

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020207006759A Division KR102215619B1 (ko) 2017-09-08 2018-09-07 인공 지능을 위한 병렬 신경 프로세서

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237037603A Division KR20230154295A (ko) 2017-09-08 2018-09-07 인공 지능을 위한 병렬 신경 프로세서

Publications (2)

Publication Number Publication Date
KR20210018527A KR20210018527A (ko) 2021-02-17
KR102598208B1 true KR102598208B1 (ko) 2023-11-02

Family

ID=65631231

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020237037603A KR20230154295A (ko) 2017-09-08 2018-09-07 인공 지능을 위한 병렬 신경 프로세서
KR1020217003616A KR102598208B1 (ko) 2017-09-08 2018-09-07 인공 지능을 위한 병렬 신경 프로세서
KR1020207006759A KR102215619B1 (ko) 2017-09-08 2018-09-07 인공 지능을 위한 병렬 신경 프로세서

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020237037603A KR20230154295A (ko) 2017-09-08 2018-09-07 인공 지능을 위한 병렬 신경 프로세서

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020207006759A KR102215619B1 (ko) 2017-09-08 2018-09-07 인공 지능을 위한 병렬 신경 프로세서

Country Status (9)

Country Link
US (3) US11507806B2 (ko)
EP (1) EP3679522A4 (ko)
JP (1) JP7114694B2 (ko)
KR (3) KR20230154295A (ko)
CN (2) CN111033522B (ko)
AU (2) AU2018330840B2 (ko)
CA (1) CA3112064A1 (ko)
TW (1) TWI789423B (ko)
WO (1) WO2019048922A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10592450B2 (en) * 2016-10-20 2020-03-17 Micron Technology, Inc. Custom compute cores in integrated circuit devices
JP6866762B2 (ja) * 2017-05-18 2021-04-28 いすゞ自動車株式会社 車両用情報処理システム
US11443185B2 (en) * 2018-10-11 2022-09-13 Powerchip Semiconductor Manufacturing Corporation Memory chip capable of performing artificial intelligence operation and method thereof
US11074344B2 (en) * 2018-12-19 2021-07-27 Intel Corporation Methods and apparatus to detect side-channel attacks
US11783917B2 (en) * 2019-03-21 2023-10-10 Illumina, Inc. Artificial intelligence-based base calling
US11210554B2 (en) 2019-03-21 2021-12-28 Illumina, Inc. Artificial intelligence-based generation of sequencing metadata
US11593649B2 (en) 2019-05-16 2023-02-28 Illumina, Inc. Base calling using convolutions
AU2021224871A1 (en) 2020-02-20 2022-09-08 Illumina, Inc. Artificial intelligence-based many-to-many base calling
CN115836346A (zh) * 2020-09-07 2023-03-21 阿里巴巴集团控股有限公司 存内计算设备及其数据处理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040162796A1 (en) * 2002-03-12 2004-08-19 Alex Nugent Application of Hebbian and anti-Hebbian learning to nanotechnology-based physical neural networks
US20070011118A1 (en) * 2005-06-28 2007-01-11 Snook James A Addressing Scheme for Neural Modeling and Brain-Based Devices using Special Purpose Processor
US20080319933A1 (en) 2006-12-08 2008-12-25 Medhat Moussa Architecture, system and method for artificial neural network implementation
KR101510991B1 (ko) 2014-05-09 2015-04-10 포항공과대학교 산학협력단 저항변화 메모리를 이용한 신경회로망 형태 분류기 및 형태 분류 방법
US9195934B1 (en) * 2013-01-31 2015-11-24 Brain Corporation Spiking neuron classifier apparatus and methods using conditionally independent subsets

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2460078B1 (fr) * 1979-06-25 1986-12-12 Trt Telecom Radio Electr Joncteur d'abonne electronique
US5253328A (en) 1989-11-17 1993-10-12 Microelectronics & Computer Technology Corp. Neural-network content-addressable memory
US5167008A (en) * 1990-12-14 1992-11-24 General Electric Company Digital circuitry for approximating sigmoidal response in a neural network layer
JP3088171B2 (ja) * 1991-02-12 2000-09-18 三菱電機株式会社 自己組織型パタ−ン分類システム及び分類方法
JP3090550B2 (ja) * 1992-09-03 2000-09-25 フィガロ技研株式会社 ガス検出システム
US5444796A (en) * 1993-10-18 1995-08-22 Bayer Corporation Method for unsupervised neural network classification with back propagation
WO1997029437A1 (en) * 1996-02-09 1997-08-14 Sarnoff Corporation Method and apparatus for training a neural network to detect and classify objects with uncertain training data
US6028956A (en) * 1997-04-04 2000-02-22 Kofile Inc. Object location and span determination method and apparatus which determines a location and span of an object in an image
US6294926B1 (en) * 1999-07-16 2001-09-25 Philips Electronics North America Corporation Very fine-grain field programmable gate array architecture and circuitry
DE102009029519A1 (de) * 2009-09-16 2011-03-24 Robert Bosch Gmbh Digital-Analog-Wandlerschaltung und Verfahren zur Fehlererkennung
US20110098963A1 (en) 2009-10-23 2011-04-28 Cisco Technology, Inc. Context based testing
US9082078B2 (en) 2012-07-27 2015-07-14 The Intellisis Corporation Neural processing engine and architecture using the same
US9672464B2 (en) 2014-02-28 2017-06-06 Qualcomm Incorporated Method and apparatus for efficient implementation of common neuron models
US9224091B2 (en) 2014-03-10 2015-12-29 Globalfoundries Inc. Learning artificial neural network using ternary content addressable memory (TCAM)
US9373058B2 (en) * 2014-05-29 2016-06-21 International Business Machines Corporation Scene understanding using a neurosynaptic system
CN108351985A (zh) * 2015-06-30 2018-07-31 亚利桑那州立大学董事会 用于大规模机器学习的方法和装置
KR20170028629A (ko) * 2015-09-04 2017-03-14 부산대학교 산학협력단 신호패턴의 반복횟수 검출방법 및 장치
CN106599991B (zh) * 2015-10-08 2019-04-09 上海兆芯集成电路有限公司 具有神经存储器的神经网络单元和集体将来自神经存储器的数据列移位的神经处理单元阵列
US10296846B2 (en) * 2015-11-24 2019-05-21 Xerox Corporation Adapted domain specific class means classifier
US10373019B2 (en) * 2016-01-13 2019-08-06 Ford Global Technologies, Llc Low- and high-fidelity classifiers applied to road-scene images
KR102565273B1 (ko) * 2016-01-26 2023-08-09 삼성전자주식회사 뉴럴 네트워크에 기초한 인식 장치 및 뉴럴 네트워크의 학습 방법
US10423876B2 (en) 2016-12-01 2019-09-24 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either victim cache or neural network unit memory
KR102434726B1 (ko) * 2017-10-20 2022-08-19 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 처리방법 및 장치
KR20200020545A (ko) * 2018-08-17 2020-02-26 삼성전자주식회사 전자 장치 및 그 제어 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040162796A1 (en) * 2002-03-12 2004-08-19 Alex Nugent Application of Hebbian and anti-Hebbian learning to nanotechnology-based physical neural networks
US20070011118A1 (en) * 2005-06-28 2007-01-11 Snook James A Addressing Scheme for Neural Modeling and Brain-Based Devices using Special Purpose Processor
US20080319933A1 (en) 2006-12-08 2008-12-25 Medhat Moussa Architecture, system and method for artificial neural network implementation
US9195934B1 (en) * 2013-01-31 2015-11-24 Brain Corporation Spiking neuron classifier apparatus and methods using conditionally independent subsets
KR101510991B1 (ko) 2014-05-09 2015-04-10 포항공과대학교 산학협력단 저항변화 메모리를 이용한 신경회로망 형태 분류기 및 형태 분류 방법

Also Published As

Publication number Publication date
JP2020533668A (ja) 2020-11-19
JP7114694B2 (ja) 2022-08-08
US11138496B2 (en) 2021-10-05
KR102215619B1 (ko) 2021-02-15
CN111033522B (zh) 2023-09-19
AU2021240266A1 (en) 2021-10-28
CN117151177A (zh) 2023-12-01
EP3679522A1 (en) 2020-07-15
TW201921296A (zh) 2019-06-01
US20190080228A1 (en) 2019-03-14
EP3679522A4 (en) 2021-06-09
TW202328982A (zh) 2023-07-16
US20230316056A1 (en) 2023-10-05
AU2018330840B2 (en) 2021-07-01
AU2021240266B2 (en) 2024-02-29
KR20230154295A (ko) 2023-11-07
TWI789423B (zh) 2023-01-11
CA3112064A1 (en) 2019-03-14
US11507806B2 (en) 2022-11-22
US20190080227A1 (en) 2019-03-14
AU2018330840A1 (en) 2020-02-27
WO2019048922A1 (en) 2019-03-14
KR20200057707A (ko) 2020-05-26
CN111033522A (zh) 2020-04-17
KR20210018527A (ko) 2021-02-17

Similar Documents

Publication Publication Date Title
KR102598208B1 (ko) 인공 지능을 위한 병렬 신경 프로세서
US11676024B2 (en) Low precision neural networks using subband decomposition
US9436909B2 (en) Increased dynamic range artificial neuron network apparatus and methods
KR20210136706A (ko) 전자 장치 및 이의 제어 방법
KR20190004429A (ko) 신경망 모델에서 입력값에 대한 재학습 여부 결정 방법 및 장치
KR20210061146A (ko) 전자 장치 및 그 제어 방법
KR20230048614A (ko) 도메인 불변 정규화를 사용한 이미지 분류를 위한 시스템, 방법 및 장치
US20220198782A1 (en) Edge device having a heterogenous neuromorphic computing architecture
KR102562052B1 (ko) 전자 장치 및 그 제어 방법
US11664044B2 (en) Sound event detection learning
US20210090410A1 (en) Haptic control interface for detecting content features using machine learning to induce haptic effects
CN116547675A (zh) 用于声音事件分类的迁移学习
KR102668181B1 (ko) 영상의 회전 특성 학습 방법 및 디바이스
Vlontzos The rnn-elm classifier
WO2023019210A1 (en) Improved head tracking for three-dimensional audio rendering
KR20210032247A (ko) 디스플레이 장치 및 이의 영상 처리 방법
CN117011623A (zh) 数据处理方法和装置
KR20230072353A (ko) 사용자가 의도한 순간의 이미지를 획득하는 전자 장치 및 이의 제어 방법
AU2023203018A1 (en) Image enhancement
KR20210150233A (ko) 이미지 처리 알고리즘의 최적화 방법 및 이를 구비한 전자 장치

Legal Events

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