KR20220088943A - 멤리스터 기반 신경망 병렬 가속 방법, 프로세서 및 장치 - Google Patents

멤리스터 기반 신경망 병렬 가속 방법, 프로세서 및 장치 Download PDF

Info

Publication number
KR20220088943A
KR20220088943A KR1020227019213A KR20227019213A KR20220088943A KR 20220088943 A KR20220088943 A KR 20220088943A KR 1020227019213 A KR1020227019213 A KR 1020227019213A KR 20227019213 A KR20227019213 A KR 20227019213A KR 20220088943 A KR20220088943 A KR 20220088943A
Authority
KR
South Korea
Prior art keywords
memristor
functional layer
neural network
parallel
layer
Prior art date
Application number
KR1020227019213A
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 칭화대학교
Publication of KR20220088943A publication Critical patent/KR20220088943A/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/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/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
    • G06N3/065Analogue means
    • 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
    • G06N3/0454
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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/09Supervised learning
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0004Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

멤리스터 기반 신경망 병렬 가속 방법, 프로세서 및 장치가 개시되어 있다. 상기 신경망은 순차적으로 제공된 복수의 기능적 계층들을 포함하며, 상기 복수의 기능적 계층들은 제1 기능적 계층 및 상기 제1 기능적 계층에 이어지는 제2 기능적 계층을 포함하고, 상기 제1 기능적 계층은 병렬로 이루어지는 복수의 제1 멤리스터 어레이들을 포함하며, 상기 복수의 제1 멤리스터 어레이들은 상기 제1 기능적 계층의 동작들을 실행하고 상기 동작의 결과를 상기 제2 기능적 계층으로 출력하는데 사용된다. 상기 병렬 가속 방법은 복수의 제1 멤리스터 어레이들을 사용하여 제1 기능적 계층의 동작을 병렬로 실행하고 그 동작의 결과를 제2 기능적 계층으로 출력하는 단계를 포함한다.

Description

멤리스터 기반 신경망 병렬 가속 방법, 프로세서 및 장치
본원은 발명의 명칭이 "멤리스터 기반 신경망의 병렬 가속 방법, 멤리스터 기반 신경망을 기반으로 하는 병렬 가속 프로세서 및 멤리스터 기반 신경망을 기반으로 하는 병렬 가속 장치(Parallel Acceleration Method for Memristor-based Neural Network, Parallel Acceleration Processor based on Memristor-Based Neural Network and Parallel Acceleration Device based on Memristor-Based Neural Network)"이며 2019년 11월 7일자 출원된 중국 특허출원 제201911082236.3호를 기초로 우선권을 주장한 것이며, 상기 중국 특허출원의 전체 개시내용은 본원의 일부로서 인용에 의해 본원 명세서에 모두 보완된다.
기술분야
본 개시내용의 실시 예들은 멤리스터 기반 신경망의 병렬 가속 방법, 멤리스터 기반 신경망을 기반으로 하는 병렬 가속 프로세서, 및 멤리스터 기반 신경망을 기반으로 하는 병렬 가속 장치에 관한 것이다.
심층 신경망(deep neural network) 알고리즘들의 부상은 정보 기술의 지능적인 혁명을 가져왔다. 다양한 심층 신경망 알고리즘들을 기반으로 하여, 이미지 인식 및 분할, 객체 감지, 음성 및 텍스트의 번역 및 생성 등이 구현될 수 있다. 심층 신경망 알고리즘을 사용하여 다양한 작업량을 처리하는 것은 일종의 데이터 중심 컴퓨팅이며, 상기 알고리즘을 구현하기 위한 하드웨어 플랫폼은 고성능 및 저전력 소비 처리 능력을 지녀야 한다. 그러나 상기 알고리즘을 구현하기 위한 기존의 하드웨어 플랫폼은 저장과 계산을 분리하는 폰 노이만(von Neumann) 아키텍처를 기반으로 한다. 이러한 아키텍처는 계산하는 동안 저장 요소와 컴퓨팅 요소 사이에서 데이터가 전후로 전송되는 것을 요구한다. 그러므로 이러한 아키텍처의 에너지 효율은 많은 매개변수를 포함하는 심층 신경망의 계산 프로세스에서 상대적으로 낮다. 그러므로 심층 신경망 알고리즘들을 실행하는 새로운 유형의 컴퓨팅 하드웨어를 개발하는 것이 시급한 문제이다.
본 개시내용의 적어도 하나의 실시 예에는 멤리스터 기반 신경망(memristor-based neural network)을 위한 병렬 가속 방법이 제공되며, 상기 신경망은 순차적으로 제공된 복수의 기능적 계층들을 포함하고, 상기 복수의 기능적 계층들은 제1 기능적 계층 및 상기 제1 기능적 계층에 이어지는 제2 기능적 계층을 포함하며, 상기 제1 기능적 계층은 병렬로 복수의 제1 멤리스터 어레이들을 포함하고, 상기 복수의 제1 멤리스터 어레이들은 병렬로 상기 제1 기능적 계층의 동작을 실행하도록 그리고 상기 동작의 결과를 상기 제2 기능에 출력하도록 구성되며, 상기 병렬 가속 방법은, 상기 복수의 제1 멤리스터 어레이들을 통해 병렬로 상기 제1 기능적 계층의 동작을 실행하고 상기 제2 기능적 계층으로 상기 동작의 결과를 출력하는 단계를 포함한다.
예를 들어, 본 개시내용의 일부 실시 예들에 의해 제공되는 병렬 가속 방법에서, 상기 복수의 제1 멤리스터 어레이들을 통해 병렬로 상기 제1 기능적 계층의 동작을 실행하고 상기 동작의 결과를 상기 제2 기능적 계층으로 출력하는 단계는, 상기 제1 기능적 계층에 의해 수신된 입력 데이터를 상기 복수의 제1 멤리스터 어레이들과 일대일 대응하여 복수의 서브-입력 데이터로 분할하는 단계; 및 상기 복수의 제1 멤리스터 어레이들을 통해 상기 복수의 서브-입력 데이터에 대한 제1 기능적 계층의 동작을 병렬로 실행하여 그에 상응하게 복수의 서브-동작 결과들을 생성하는 단계를 포함한다.
예를 들어, 본 개시내용의 일부 실시 예들에 의해 제공되는 병렬 가속 방법은, 상기 복수의 서브-동작 결과들을 연결하고, 상기 제2 기능적 계층을 통해 연결 결과에 대한 제2 기능적 계층의 동작을 실행하는 단계를 더 포함한다.
예를 들어, 본 개시내용의 일부 실시 예들에 의해 제공되는 병렬 가속 방식에서는, 상기 복수의 서브-입력 데이터의 크기들이 실질적으로 서로 동일하다.
예를 들어, 본 개시내용의 일부 실시 예들에 의해 제공되는 병렬 가속 방법에서는, 상기 복수의 제1 멤리스터 어레이들을 통해 상기 제1 기능적 계층의 동작을 병렬로 실행하고 상기 동작의 결과를 상기 제2 기능적 계층으로 출력하는 단계는, 상기 복수의 제1 멤리스터 어레이들에 각각 상기 제1 기능적 계층에 의해 수신된 복수의 입력 데이터를 제공하는 단계; 및 상기 복수의 제1 멤리스터 어레이들을 통해 상기 복수의 입력 데이터에 대한 제1 기능적 계층의 동작을 적어도 부분적으로 병렬로 실행하여, 그에 상응하게 복수의 서브-동작 결과들을 생성하는 단계를 포함한다.
예를 들어, 본 개시내용의 일부 실시 예들에 의해 제공되는 병렬 가속 방법은 상기 제2 기능적 계층을 통해 상기 복수의 서브-동작 결과들에 대한 제2 기능적 계층의 동작을 실행하는 단계를 더 포함한다.
예를 들어, 본 개시내용의 일부 실시 예들에 의해 제공되는 병렬 가속 방식에서는, 상기 복수의 입력 데이터가 서로 상이하다.
예를 들어, 본 개시내용의 일부 실시 예들에 의해 제공되는 병렬 가속 방법에서는, 상기 신경망이 콘볼루션 신경망(convolutional neural network)이다.
예를 들어, 본 개시내용의 일부 실시 예들에 의해 제공되는 병렬 가속 방법에서는, 상기 제1 기능적 계층이 상기 신경망의 초기 콘볼루션 계층이다.
예를 들어, 본 개시내용의 일부 실시 예들에 의해 제공되는 병렬 가속 방법에서는, 상기 복수의 기능적 계층들은 제3 기능적 계층을 더 포함하고, 상기 제3 기능적 계층의 출력은 상기 제1 기능적 계층에 제공된다.
예를 들어, 본 개시내용의 일부 실시 예들에 의해 제공되는 병렬 가속도 방법에서는, 상기 신경망의 가중치 매개변수들은 현장외 트레이닝(ex-situ training)을 통해 획득되고, 상기 신경망의 가중치 매개변수들은 상기 제1 기능적 계층의 가중치 매개변수들을 포함하며, 상기 제1 기능적 계층의 가중치 매개변수들은 상기 복수의 제1 멤리스터 어레이들의 컨덕턴스(conductance)들을 결정하기 위해 상기 복수의 제1 멤리스터 어레이들 내에 기록된다.
예를 들어, 본 개시내용의 일부 실시 예들에 의해 제공되는 병렬 가속 방법에서는, 상기 신경망의 가중치 매개변수들이 상기 제1 기능적 계층 이외의 기능적 계층들의 가중치 매개변수들을 더 포함하며, 상기 제1 기능적 계층 이외의 기능적 계층들의 가중치 매개변수들은 상기 제1 기능적 계층 이외의 기능적 계층들에 상응하는 멤리스터 어레이들의 컨덕턴스들을 결정하기 위해 상기 제1 기능적 계층 이외의 기능적 계층들에 상응하는 멤리스터 어레이들 내에 기록된다.
본 개시내용의 적어도 하나의 실시 예는 멤리스터 기반 신경망을 기반으로 하는 병렬 가속 프로세서를 더 제공하며, 상기 신경망은 순차적으로 제공된 복수의 기능적 계층들을 포함하고, 상기 복수의 기능적 계층들은 제1 기능적 계층을 포함하며, 상기 병렬 가속 프로세서는 복수의 멤리스터 어레이 컴퓨팅 유닛들을 포함하고, 상기 복수의 멤리스터 어레이 컴퓨팅 유닛들은 복수의 제1 멤리스터 어레이 컴퓨팅 유닛들을 포함하며, 상기 제1 기능적 계층의 가중치 매개변수들은 상기 복수의 제1 멤리스터 어레이 컴퓨팅 유닛들 내에 기록되고, 상기 복수의 제1 멤리스터 어레이 컴퓨팅 유닛들은 상기 제1 기능적 계층의 동작에 상응하는 컴퓨팅을 병렬로 실행하도록 구성된다.
본 개시내용의 적어도 하나의 실시 예는 멤리스터 기반 신경망을 기반으로 하는 병렬 가속 장치를 더 제공하며, 이는 본 개시내용의 어느 한 실시 예에 의해 제공되는 병렬 가속 프로세서, 상기 병렬 가속 프로세서에 연결된 출력 인터페이스 및 입력 인터페이스를 포함하며, 상기 입력 인터페이스는 상기 병렬 가속 프로세서의 동작을 제어하도록 하는 명령어를 수신하도록 구성되고, 상기 출력 인터페이스는 상기 병렬 가속 프로세서의 동작 결과를 출력하도록 구성된다.
본 개시내용의 실시 예들의 기술적 해결수법들을 명확하게 예시하기 위해, 본 개시내용의 실시 예들의 도면들이 이하에서 간략하게 설명될 것이며, 여기서 자명한 점은 설명되는 도면들이 본 개시내용의 일부 실시 예들에만 관련된 것이며 결과적으로는 본 개시내용을 국한하는 것이 아니다는 점이다.
도 1은 멤리스터 유닛 회로의 개략도이다.
도 2는 멤리스터 어레이의 개략도이다.
도 3은 콘볼루션 신경망의 개략도이다.
도 4는 콘볼루션 신경망의 작업 프로세스의 개략도이다.
도 5a는 멤리스터 어레이를 기반으로 하는 콘볼루션 신경망의 콘볼루션 계산의 개략도이다.
도 5b는 멤리스터 어레이를 기반으로 하는 콘볼루션 신경망의 완전히 연결된 계산의 개략도이다.
도 6은 본 개시내용의 일부 실시 예들에 의해 제공되는 신경망의 구조의 개략적인 블록도이다.
도 7a는 도 6에 도시된 신경망의 병렬 가속 방법에서 이루어지는 제1 기능적 계층의 병렬 처리 방식을 보여주는 도면이다.
도 7b는 도 6에 도시된 신경망의 병렬 가속 방법에서 이루어지는 제1 기능적 계층의 다른 병렬 처리 방식을 보여주는 도면이다.
도 8은 본 개시내용의 일부 실시 예들에 의해 제공되는 신경망의 현장외 트레이닝 방법의 흐름도이다.
도 9는 본 개시내용의 일부 실시 예들에 따른 멤리스터 기반 신경망을 기반으로 하는 병렬 가속 프로세서의 개략도이다.
도 10은 도 9에 도시된 병렬 가속 프로세서 내 멤리스터 어레이 컴퓨팅 유닛의 개략적인 구조도이다.
도 11은 본 개시내용의 일부 실시 예들에 의해 제공되는 멤리스터 기반 신경망을 기반으로 하는 병렬 가속 장치의 개략적인 블록도이다.
본 개시내용의 실시 예들의 목적, 기술적 세부사항 및 이점을 명확하게 하기 위해, 본 개시내용의 실시 예들에 관련된 도면들을 참조하여 본 개시내용의 실시 예들의 기술적 해결수법들이 명확하게 그리고 충분히 이해할 수 있는 방식으로 설명될 것이다. 분명한 점으로는, 설명되는 실시 예들이 본 개시내용의 실시 예들의 전부가 아니라 일부일 뿐이다. 본원 명세서에서 설명되는 실시 예들에 기초하여, 당업자는 본 개시내용의 범위 내에 있어야 하는, 어떠한 독창적인 작업 없이도 이루어지는 다른 실시 예(들)를 획득할 수 있다.
달리 정의되지 않는 한, 본원 명세서에서 사용되는 모든 기술적, 과학적 용어들은 본 개시내용이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 지닌다. 본 개시내용에서 사용되는 "제1", "제2" 등의 용어들은 어떠한 순서, 양 또는 중요도를 나타내는 것으로 의도한 것이 아니라, 다양한 구성요소를 구별하는 것으로 의도한 것이다. 또한, "포함하다", "포함하는", "지닌다", "지니는" 등의 용어들은 이러한 용어들 앞에 언급된 요소들 또는 개체들이 이러한 용어들 뒤에 나열된 요소 또는 개체 및 이들의 등가물을 아우른다는 것을 명시하도록 의도한 것이지만, 다른 요소들 또는 개체를 배제하는 것이 아니다. "연결하다", "연결된" 등의 문구들은 물리적 연결 또는 기계적 연결을 정의하도록 의도한 것이 아니라 직접 또는 간접적으로 전기적 연결을 포함할 수 있다. "상부에", "하부에", "우측", "좌측" 등은 단지 상대적인 위치 관계를 나타내기 위해 사용된 것이며, 기재하고 있는 개체의 위치가 변경되면 그에 상응하게 상대적인 위치 관계가 변경될 수 있다.
멤리스터(예컨대, 저항성 랜덤 액세스 메모리, 상전이 메모리, 전도성 브리지 메모리 등)는 외부 여기 상태(external excitation)를 적용함으로써 컨덕턴스 상태가 조정될 수 있게 하는 비-휘발성 요소이다. 키르히호프(Kirchhoff)의 전류 법칙과 오옴(Ohm)의 법칙에 의하면, 그러한 요소들로 형성되는 어레이는 병렬 곱셈-누산 계산(parallel multiply-accumulate calculation)을 이룰 수 있으며 상기 어레이의 각각의 요소에서는 저장과 컴퓨팅 양자 모두가 이루어질 수 있다. 이러한 컴퓨팅 아키텍처를 기반으로 하여, 대량의 데이터 전송 없이 저장과 컴퓨팅의 통합이 실현될 수 있다. 동시에, 곱셈-누산 계산은 신경망을 실행하는 데 필요한 핵심 컴퓨팅 태스크이다. 그러므로 상기 어레이 내 멤리스터형 요소들의 컨덕턴스들을 사용하여 가중치 값을 나타냄으로써, 이러한 통합 저장 및 컴퓨팅을 기반으로 하여 상기 신경망의 에너지 효율적인 동작이 실현될 수 있다.
도 1은 멤리스터 유닛 회로의 개략도이다. 도 1에 도시된 바와 같이, 상기 멤리스터 단위 회로는 1T1R 구조를 채용하는데, 다시 말하면 상기 멤리스터 유닛 회로는 하나의 트랜지스터(M1)와 하나의 멤리스터(R1)를 포함한다.
여기서 유념하여야 할 점은 본 개시내용의 실시 예들에 채용된 트랜지스터가 박막 트랜지스터 또는 전계 효과 트랜지스터(예컨대, MOS 전계 효과 트랜지스터) 또는 동일한 특성을 지니는 다른 어떤 스위칭 요소일 수 있다는 것이다. 여기에서 채용된 트랜지스터의 소스와 드레인은 구조 면에서 대칭적일 수 있으므로 상기 소스와 드레인은 구조적으로 구별 가능하지 않을 수 있다. 본 개시내용의 실시 예들에서는, 게이트를 제외한 트랜지스터의 2개의 전극을 구별하기 위해, 그들 중 하나가 직접 제1 전극으로서 기재되고, 그들 중 나머지 하나가 제2 전극으로서 기재된다.
본 개시내용의 실시 예들에서 채용되는 트랜지스터의 유형은 국한되지 않는다. 예를 들어, 트랜지스터(M1)가 N-형 트랜지스터를 채용하는 경우에, 상기 트랜지스터(M1)의 게이트는 워드 라인 단자(WL)에 연결되고, 예를 들어 상기 트랜지스터(M1)는 워드 라인 단자(WL)에 하이(high) 레벨이 입력될 때 턴온되며, 상기 트랜지스터(M1)의 제1 전극이 소스일 수 있고 소스 라인 단자(SL)에 연결되도록 구성될 수 있으며, 예를 들어 상기 트랜지스터(M1)는 상기 소스 라인 단자(SL)를 통해 리세트 전압을 수신할 수 있고, 상기 트랜지스터(M1)의 제2 전극은 드레인일 수 있으며 상기 멤리스터(R1)의 제2 전극(예컨대, 음(-) 전극)에 연결되도록 구성될 수 있고, 상기 멤리스터(R1)의 제2 전극은 비트 라인 단자(BL)에 연결되며, 예를 들어, 상기 멤리스터(R1)는 상기 비트 라인 단자(BL)를 통해 세트 전압을 수신할 수 있다. 예를 들어, 상기 트랜지스터(M1)가 P-형 트랜지스터를 채용하는 경우에, 상기 트랜지스터(M1)의 게이트는 워드 라인 단자(WL)에 연결되고, 예를 들어, 상기 트랜지스터(M1)는 상기 워드 라인 단자(WL)에 로우(low) 레벨이 입력될 때 턴온되며, 상기 트랜지스터(M1)의 제1 전극은 드레인일 수 있고 소스 라인 단자(SL)에 연결되도록 구성될 수 있으며, 예를 들어, 상기 트랜지스터(M1)는 상기 소스 라인 단자(SL)를 통해 리세트 전압을 수신할 수 있고, 상기 트랜지스터(M1)의 제2 전극은 소스일 수 있으며 상기 멤리스터(R1)의 제2 전극(예컨대, 음(-) 전극)에 연결되도록 구성되고, 상기 멤리스터(R1)의 제2 전극은 비트 라인 단자(BL)에 연결되고, 예를 들어, 상기 멤리스터(R1)는 상기 비트 라인 단자(BL)를 통해 세트 전압을 수신할 수 있다. 여기서 유념하여야 할 점은 상기 멤리스터의 구조가 상기 멤리스터(R1)의 제2 전극이 본 개시내용의 실시 예들에서 국한되지 않고 상기 소스 라인 단자(SL)에 연결되는 구조와 같은 다른 어떤 구조로도 구현될 수 있다는 것이다. 이하의 실시 예들은 일 예로서 상기 트랜지스터(M1)가 N-형 트랜지스터를 채용한 경우를 취함으로써 설명될 것이다.
상기 워드 라인 단자(WL)의 기능은 상기 트랜지스터(M1)가 턴온 또는 턴오프 되도록 제어하기 위해 상기 트랜지스터(M1)의 게이트에 상응하는 전압을 인가하는 것이다. 상기 멤리스터(R1)가 세트(set) 동작 또는 리세트(reset) 동작과 같은 동작을 하게 되는 경우에는, 상기 트랜지스터(M1)가 먼저 턴온되어야 하는데, 다시 말하면 상기 트랜지스터(M1)의 게이트에는 상기 워드 라인 단자(WL)를 통해 턴-온 전압이 인가되어야 한다. 예를 들어, 상기 트랜지스터(M1)가 턴-온된 후에, 상기 소스 라인 단자(SL) 및 상기 비트 라인 단자(BL)를 통해 상기 멤리스터(R1)에 전압을 인가함으로써 상기 멤리스터(R1)의 저항 상태가 전이될 수 있다. 예를 들어, 상기 비트 라인 단자(BL)를 통해 세트 전압이 인가되고, 그럼으로써 상기 멤리스터(R1)가 저 저항 상태에 있게 되며, 다른 일 예를 들어, 상기 소스 라인 단자(SL)를 통해 리세트 전압이 인가되고, 그럼으로써 상기 멤리스터(R1)가 고 저항 상태에 있게 된다.
여기서 유념하여야 할 점은 본 개시내용의 실시 예들에서, 상기 워드 라인 단자(WL) 및 상기 비트 라인 단자(BL)를 통해 전압을 인가함으로써, 상기 멤리스터(R1)의 저항값이 점점 더 작아질 수 있는데, 다시 말하면 상기 멤리스터(R1)가 고 저항 상태로부터 저 저항 상태로 전이하고 상기 멤리스터(R1)를 고 저항 상태로부터 저 저항 상태로 전이하는 동작이 세트 동작으로서 언급되며, 상기 멤리스터(R1)의 저항값이 점점 더 커질 수 있는데, 다시 말하면 상기 멤리스터(R1)가 저 저항 상태로부터 고 저항 상태로 전이하고 상기 멤리스터(R1)를 저 저항 상태로부터 고 저항 상태로 전이하는 동작이 리세트 동작으로서 언급된다는 것이다. 예를 들어, 상기 멤리스터(R1)는 문턱(threshold) 전압을 지니며, 상기 입력 전압의 진폭이 상기 멤리스터(R1)의 문턱 전압보다 작은 경우에, 상기 멤리스터(R1)의 저항값(또는 컨덕턴스 값)은 전이되지 않게 된다. 이 경우에, 상기 문턱 전압보다 낮은 전압을 입력함으로써, 상기 멤리스터(R1)의 저항 값(또는 컨덕턴스 값)이 계산에 사용될 수 있으며, 상기 문턱 전압보다 큰 전압을 입력함으로써, 상기 멤리스터(R1)의 저항 값(또는 컨덕턴스 값)이 전이될 수 있다.
도 2는 도 1에 도시된 바와 같은 복수의 멤리스터 유닛 회로들로 형성된 멤리스터 어레이를 보여준다. 예를 들어, 상기 복수의 멤리스터 유닛 회로들은 m개의 행(row)과 n개의 열(column)로 이루어진 어레이를 형성하며, 여기서 m은 1보다 큰 정수이고 n은 1보다 크거나 같은 정수이다. 도 2에서, BL<1>, BL<2>, ..., BL<m>은 제1 행의 비트 라인, 제2 행의 비트 라인, ..., 제m 행의 비트 라인을 각각 나타내며, 각각의 행의 멤리스터 유닛 회로 내 멤리스터들은 각각의 행에 상응하는 비트 라인에 연결된다. 도 2에서, WL<1>, WL<2>, ..., WL<n>은 제1 열의 워드 라인, 제2 열의 워드라인, ..., 제n 열의 워드라인을 각각 나타내고, 각각의 열의 멤리스터 유닛 회로 내 트랜지스터들의 게이트들이 각각의 열에 상응하는 워드 라인에 연결된다. 도 2에서, SL<1>, SL<2>, ..., SL<n>은 제1 열의 소스 라인, 제2 열의 소스 라인, ..., 제n 열의 소스 라인을 각각 나타내고, 각각의 열의 멤리스터 유닛 회로 내 트랜지스터들의 소스들이 각각의 열에 상응하는 소스 라인에 연결된다.
도 2에 도시된 m개의 행과 n개의 열로 이루어진 멤리스터 어레이는 m개의 행과 n개의 열로 이루어진 신경망 가중치 매트릭스를 나타낼 수 있다. 예를 들어, 제1 뉴런(neuron) 계층은 m개의 뉴런 노드를 가지며, 상기 뉴런 노드들은 도 2에 도시된 멤리스터 어레이의 m개 행의 비트 라인들에 상응하게 연결되고, 제2 뉴런 계층은 n개의 뉴런 노드를 지니며, 상기 뉴런 노드들은 도 2에 도시된 멤리스터 어레이의 n개의 열의 소스 라인들에 상응하게 연결된다. 상기 제1 뉴런 계층에 전압 여기 상태들을 병렬로 입력함으로써, 상기 멤리스터 어레이의 컨덕턴스와 전압 여기 벡터를 곱함으로써 구해진 출력 전류들(컨덕턴스는 저항의 역수임)은 상기 제2 뉴런 계층에서 구해질 수 있다.
구체적으로는, 키르히호프의 법칙에 의하면, 상기 멤리스터 어레이의 출력 전류들은 이하의 수학식
Figure pct00001
에 따라 구해질 수 있으며, 여기서 j=1, …, n이고 k = 1, ..., m이다.
위의 수학식에서, vk는 제1 뉴런 계층 내 뉴런 노드 k에 의해 입력된 전압 여기 상태이고, ij는 제2 뉴런 계층 내 뉴런 노드 j의 출력 전류를 나타내며, gkj는 상기 멤리스터 어레이의 컨덕턴스 매트릭스를 나타낸다.
키르히호프의 법칙에 의하면, 상기 멤리스터 어레이는 병렬 곱셈-누산 계산을 이룰수 있다.
여기서 유념해야 할 점은 예를 들어, 일부 예들에서 신경망 가중치 매트릭스의 각각의 가중치가 2개의 멤리스터를 사용하여 구현될 수도 있다는 것이다. 다시 말하면, 상기 멤리스터 어레이 내 2개의 열의 멤리스터들은 하나의 열의 출력 전류를 출력하는데 사용될 수 있다. 이 경우에, m개의 행들과 n개의 열들로 이루어진 신경망 가중치 매트릭스를 나타내기 위해서는 m개의 행들과 2n개의 열들로 이루어진 멤리스터 어레이가 필요하다.
여기서 유념하여야 할 점은 상기 멤리스터 어레이의 전류 출력이 아날로그 전류이다는 것이다. 일부 예들에서, 상기 아날로그 전류는 아날로그-디지털 변환 회로(ADC)를 통해 디지털 전압으로 변환된 다음에 제2 뉴런 계층으로 전송될 수 있고, 상기 제2 뉴런 계층은 디지털-아날로그 변환 회로(DAC)를 통해 디지털 전압을 아날로그 전압으로 변환할 수 있고 다른 멤리스터 어레이를 통해 다른 뉴런 계층과 연결될 수 있다. 일부 다른 예들에서, 아날로그 전류는 또한 샘플-앤-홀드(sample-and-hold) 회로를 사용함으로써 아날로그 전압으로 변환된 다음에 제2 뉴런 계층으로 전송될 수 있다.
콘볼루션 신경망(Convolutional Neural Network; CNN)은 2차원 형상들을 식별하는 데 주로 사용되며 이미지들의 이동(shifting), 크기조정(scaling), 틸팅(tilting) 또는 기타 변형 형태들에 대해 매우 불변적이다. 상기 CNN은 주로 신경망 모델의 복잡성을 단순화하고 국부 인식 필드와 가중치 공유를 통해 가중치들의 개수를 줄인다. 심층 학습(deep learning) 기술의 발전으로, 상기 CNN의 적용 범위는 이미지 인식 필드에 국한되지 않는다. 이는 얼굴 인식, 문자 인식, 동물 분류, 영상 처리 등의 필드들에도 적용 가능하다.
도 3은 CNN의 개략도이다. 예를 들어, 콘볼루션 신경망(CNN)은 이미지들을 입력 및 출력으로서 사용하고 스칼라 가중치들을 콘볼루션 커널들로 대체하는 이미지 처리에 사용될 수 있다. 도 3은 3개의 뉴런 계층의 구조를 지니는 CNN만을 보여주며, 본 개시내용의 실시 예들은 이 경우에 국한되지 않는다. 도 3에 도시된 바와 같이, 상기 CNN은 3개의 뉴런 계층, 다시 말하면 입력 계층(101), 은닉 계층(102) 및 출력 계층(103)을 포함한다. 상기 입력 계층(101)은 4개의 입력을 지니고, 상기 은닉 계층(102)은 3개의 출력을 지니며, 상기 출력 계층(103)은 2개의 출력을 지닌다.
예를 들어, 상기 입력 계층(101)의 4개의 입력은 4개의 이미지 또는 1개의 이미지의 4개의 특징 이미지일 수 있다. 상기 은닉 계층(102)의 3개의 출력은 상기 입력 계층(101)를 통해 입력된 이미지들의 특징 이미지들일 수 있다.
예를 들어, 도 3에 도시된 바와 같이, 콘볼루션 계층들은 가중치(
Figure pct00002
)와 바이어스(
Figure pct00003
)를 지닌다. 상기 가중치(
Figure pct00004
)는 컨볼루션 커널을 나타내고, 상기 바이어스(
Figure pct00005
)는 상기 콘볼루션 계층의 출력상에 중첩된 스칼라이며, 여기서 k는 상기 입력 계층(101)의 레이블이고, i와 j는 상기 입력 계층(101)의 유닛들 및 상기 은닉 계층(102)의 유닛들 각각의 레이블들이다. 예를 들어, 제1 콘볼루션 계층(201)은 제1 세트의 컨볼루션 커널들(도 3에서의
Figure pct00006
) 및 제1 세트의 바이어스(도 3에서의
Figure pct00007
)를 포함한다. 제2 콘볼루션 계층(202)은 제2 세트의 콘볼루션 커널들(도 3에서의
Figure pct00008
) 및 제2 세트의 바이어스(도 3에서의
Figure pct00009
)를 포함한다. 일반적으로, 각각의 콘볼루션 계층은 수십 또는 수백 개의 콘볼루션 커널을 포함한다. 심층 CNN의 경우에, 상기 CNN은 적어도 5개의 콘볼루션 계층을 포함할 수 있다.
예를 들어, 도 3에 도시된 바와 같이, 상기 CNN은 제1 활성화 계층(203)과 제2 활성화 계층(204)을 더 포함한다. 상기 제1 활성화 계층(203)은 상기 제1 콘볼루션 계층(201) 뒤에 배치되고, 상기 제2 활성화 계층(204)은 상기 제2 컨볼루션 층(202) 뒤에 배치된다. 상기 활성화 계층(예를 들어, 상기 제1 활성화 계층(203) 및 상기 제2 활성화층(204))은 활성화 함수를 포함한다. 상기 활성화 함수는 상기 CNN이 복잡한 문제들을 더 잘 풀 수 있도록 상기 CNN에 비선형 인자들을 도입하는 데 사용된다. 상기 활성화 함수에는 정류된 선형 유닛(rectified linear unit; ReLU) 함수, 시그모이드(sigmoid) 함수, 쌍곡선 탄젠트 함수(tanh 함수) 등이 포함될 수 있다. 상기 ReLU 함수는 불포화 비선형 함수이고, 상기 시그모이드 함수와 상기 tanh 함수는 포화 비선형 함수들이다. 예를 들어, 상기 활성화 계층은 상기 CNN의 하나의 계층으로서 단독으로 사용될 수도 있고, 상기 활성화 계층은 콘볼루션 계층에 포함될 수도 있다(예를 들어, 상기 제1 콘볼루션 계층(201)은 상기 제1 활성화 계층(203)을 포함할 수 있으며, 상기 제2 콘볼루션 계층(202)은 상기 제2 활성화 층(204)을 포함할 수 있다).
예를 들어, 상기 제1 콘볼루션 계층(201)에서, 먼저 상기 제1 콘볼루션 계층(201)의 출력은 상기 제1 세트의 콘볼루션 커널들 내 복수의 콘볼루션 커널들(
Figure pct00010
) 및 상기 제1 세트의 바이어스 내 복수의 바이어스(
Figure pct00011
)을 각각의 입력에 적용함으로써 구해질 수 있으며 그 후에 상기 제1 콘볼루션 계층(201)의 출력은 상기 제1 활성화 계층(203)의 출력을 구하도록 상기 제1 활성화 계층(203)에 의해 처리될 수 있다. 상기 제2 콘볼루션 계층(202)에서는, 먼저, 상기 제2 콘볼루션 계층(202)의 출력은 상기 제2 세트의 콘볼루션 커널들 내 복수의 콘볼루션 커널들(
Figure pct00012
) 및 상기 제2 세트의 바이어스 내 복수의 바이어스(
Figure pct00013
)를 입력되고 있는 상기 제1 활성화 계층(203)의 출력에 적용함으로써 구해지며, 그 후에 상기 제2 콘볼루션 계층(202)의 출력은 상기 제2 활성화 계층(204)의 출력을 획득하도록 상기 제2 활성화 계층(204)에 의해 처리될 수 있다. 예를 들어, 상기 제1 콘볼루션 계층(201)의 출력은 상기 제1 콘볼루션 계층(201)의 입력에 콘볼루션 커널들(
Figure pct00014
)을 적용한 다음에 바이어스(
Figure pct00015
)를 추가한 결과일 수 있고, 상기 제2 콘볼루션 계층(202)의 출력은 상기 제1 활성화 계층(203)의 출력에 콘볼루션 커널들(
Figure pct00016
)을 적용한 다음에 상기 바이어스(
Figure pct00017
)를 추가한 결과일 수 있다.
상기 CNN은 이미지 처리에 사용되기 전에 트레이닝되어야 한다. 트레이닝된 후에, 상기 CNN의 콘볼루션 커널들 및 바이어스는 이미지 처리 동안 전이되지 않은 상태로 유지된다. 트레이닝 프로세스에서, 상기 콘볼루션 커널들과 상기 바이어스는 최적화된 CNN 모델을 구하기 위해 여러 세트의 입/출력 샘플 이미지와 최적화 알고리즘에 의해 조정된다.
도 4는 CNN의 작업 프로세스를 보여주는 개략도이다. 예를 들어, 도 4에 도시된 바와 같이, 입력 계층을 통해 상기 CNN에 입력 이미지가 입력된 후에 여러 프로세싱 과정(예컨대, 콘볼루션 계산, 서브샘플링(다시 말하면, 다운-샘플링), 평탄화, 완전히 연결된 계산 등) 후에 구해진다. 상기 CNN은 주로 다중 콘볼루션 계층, 다중 다운-샘플링 계층(다시 말하면, 서브샘플링 계층), 평탄화 계층 및 완전히 연결된 계층을 포함할 수 있다. 본 개시내용에서, 이해하여야 할 점은 상기 복수의 콘볼루션 계층들, 상기 복수의 다운-샘플링 계층들, 상기 평탄화 계층 및 상기 완전히 연결된 계층 등을 포함하는 계층들 각각이 (도 4에서 콘볼루션 계산으로 보인 바와 같은) 콘볼루션 프로세스/동작, (도 4에서 다운-샘플링으로 보인 바와 같은) 다운-샘플링 프로세스/동작, (도 4에서 평탄화로 보인 바와 같은) 평탄화 프로세스/동작, (도 4에서 완전히 연결된 계산으로 보인 바와 같은) 완전히 연결된 프로세스/동작과 같은 상응하는 프로세스/동작을 언급한다는 것이며, 이는 이하에서 반복되지 않을 것이다. 여기서 유념하여야 할 점은 본 개시내용에서, 상응하는 프로세스들/동작들을 언급하는 데 사용되는 이러한 계층들이 뉴런 계층들과 구별되도록 집합적으로 기능적 계층들로서 언급된다는 것이다. 또한 여기서 유념하여야 할 점은 상기 기능적 계층들이 본 개시내용의 실시 예들에 국한되지 않고 업-샘플링 계층, 정규화 계층 등을 또한 포함할 수 있다는 것이다.
상기 콘볼루션 계층은 상기 CNN의 핵심 계층이다. 상기 CNN의 콘볼루션 계층에서, 하나의 뉴런은 인접한 계층의 일부 뉴런들에만 연결된다. 상기 콘볼루션 계층은 상기 입력 이미지의 여러 유형의 특징들을 추출하기 위해 여러 콘볼루션 커널(또한 필터로서 언급됨)을 입력 이미지에 적용할 수 있다. 각각의 콘볼루션 커널은 한 가지 유형의 특징을 추출할 수 있다. 콘볼루션 커널들은 일반적으로 랜덤 분수 매트릭스(random fractional matrix)의 형태로 초기화된다. 상기 CNN의 트레이닝 프로세스 동안, 상기 콘볼루션 커널은 학습을 통해 적정한 가중치들을 구하게 된다. 상기 입력 이미지에 콘볼루션 커널을 적용함으로써 구해진 결과는 특징 맵(feature map)이라 불리며, 특징 맵들의 개수는 콘볼루션 커널들의 개수와 같다. 각각의 기능 맵은 직사각형 배열의 여러 뉴런으로 구성된다. 동일한 기능 맵의 뉴런들은 가중치들을 공유하며 여기에서 공유되는 가중치들은 콘볼루션 커널들이다. 하나의 스테이지의 콘볼루션 계층에 의해 출력되는 특징 이미지는 다음 스테이지의 인접한 콘볼루션 계층에 입력되어 새로운 특징 맵을 구하도록 다시 프로세싱될 수 있다. 예를 들어, 도 4에 도시된 바와 같이, 상기 제1 스테이지의 콘볼루션 계층은 제1 특징 맵을 출력할 수 있으며, 상기 제1 특징 맵은 상기 제2 스테이지의 콘볼루션 계층에 입력되고 제2 특징 맵을 획득하기 위해 다시 프로세싱된다.
예를 들어, 도 4에 도시된 바와 같이, 상기 콘볼루션 계층은 다른 콘볼루션 커널들을 사용함으로써 상기 입력 이미지의 특정 국부 인식 필드의 데이터에 대한 콘볼루션을 수행할 수 있으며, 콘볼루션 결과는 활성화 계층에 입력되고 상기 활성화 계층은 상기 입력 이미지의 특징 정보를 획득하기 위해 상응하는 활성화 함수에 따라 계산을 수행한다.
예를 들어, 도 4에 도시된 바와 같이, 상기 다운-샘플링 계층은 인접한 콘볼루션 계층들 간에 배치되며, 상기 다운-샘플링 계층는 다운-샘플링의 한 형태이다. 한편으로는, 상기 다운-샘플링 계층이 상기 입력 이미지의 크기를 줄이고 계산 복잡성을 단순화하며 과적합(over-fitting) 현상을 어느 정도 줄이는 데 사용될 수 있다. 다른 한편으로는, 상기 다운-샘플링 계층이 상기 입력 이미지의 주요 특징들을 추출하기 위해 특징 압축을 수행할 수도 있다. 상기 다운-샘플링 계층은 상기 특징 이미지의 크기를 줄일 수 있지만 특징 맵들의 개수를 변경하지 않는다. 예를 들어, 12×12 크기의 입력 이미지가 6×6 콘볼루션 커널에 의해 샘플링되면, 2×2 출력 이미지가 획득될 수 있는데, 이것이 의미하는 것은 상기 입력 이미지상의 36개의 픽셀이 상기 출력 이미지 내 1개의 픽셀로 조합된다는 것이다. 최종 다운-샘플링 계층의 출력은 평탄화되어야 할 평탄화 계층에 입력될 수 있다. 상기 평탄화 계층은 특징 이미지(2D 이미지)를 벡터(1D)로 변환할 수 있다. 상기 평탄화 동작은 다음과 같은 방식
Figure pct00018
으로 수행될 수 있는데, 여기서 v는 k개의 요소를 포함하는 벡터이고 f는 i개의 행과 j개의 열을 지니는 매트릭스이다.
그 후에, 상기 평탄화 계층의 출력(다시 말하면, 1D 벡터)이 완전히 연결된 계층(FCN)에 입력된다. 상기 완전히 연결된 계층은 도 3에 도시된 CNN과 동일한 구조를 지닐 수 있지만, 차이점은 상기 완전히 연결된 계층이 콘볼루션 커널 대신에 다른 스칼라 값들을 사용한다는 것이다. 상기 완전히 연결된 계층은 추출된 모든 특징들을 연결하도록 구성된다. 상기 완전히 연결된 계층의 출력은 1D 벡터일 수 있다.
상기 CNN에서의 상기 콘볼루션 계산, 상기 완전히 연결된 계산 등과 같은 계산 절차들은 주로 곱셈-누산 계산들을 포함한다. 그러므로 멤리스터 어레이들을 통해 콘볼루션 계층, 완전히 연결된 계층 등과 같은 기능적 계층이 구현될 수 있다. 예를 들어, 상기 콘볼루션 계층의 가중치들과 상기 완전히 연결된 계층의 가중치들은 양자 모두 멤리스터 어레이의 어레이 컨덕턴스들로 표현될 수 있으며, 상기 콘볼루션 계층의 입력들과 상기 완전히 연결된 계층의 입력들은 양자 모두 상응하는 전압 여기 상태들에 의해 표현될 수 있으며, 그럼으로써 상기 콘볼루션 계산 및 상기 완전히 연결된 계산이 각각 키르히호프의 법칙에 따라 실현될 수 있게 한다.
도 5a는 멤리스터 어레이를 기반으로 하는 콘볼루션 신경망의 콘볼루션 계산의 개략도이고, 도 5b는 멤리스터 어레이를 기반으로 하는 콘볼루션 신경망의 완전히 연결된 계산의 개략도이다.
도 5a에 도시된 바와 같이, 멤리스터 어레이는 콘볼루션 계층의 콘볼루션 계산을 실현하기 위해 사용될 수 있으며, 예를 들어, 상기 멤리스터 어레이는 (도 5a에서 디지털 이미지 "2"에 의해 보인 바와 같은) 입력 이미지에 대한 콘볼루션 프로세싱을 수행할 수 있다. 예를 들어, 일부 예들에서, 상기 콘볼루션 계층은 복수의 커널들을 포함하고, 상기 멤리스터 어레이의 각각의 행은 하나의 커널에 상응하고, 각각의 행의 복수의 멤리스터들은 하나의 커널의 대응하는 요소들의 값을 나타내는 데 사용된다. 예를 들어, 3×3 커널의 경우에 상기 멤리스터 어레이의 각각의 행은 9개의 멤리스터를 채용하여 상기 커널의 9개의 요소 값을 나타낸다. 여기서 유념하여야 할 점은 상기 멤리스터 어레이를 사용하는 상기 콘볼루션 계층의 위의 구현이 예시적이며, 본 개시내용의 실시 예들이 이 경우를 포함하지만 이에 국한되지 않는다는 것이다.
여기서 이해하여야 할 점은 상기 콘볼루션 계층이 그의 입력 이미지에 대한 콘볼루션 프로세싱을 수행할 때, 상기 입력 이미지가 복수의 이미지 패치들로 분할되어야 하고(각각의 이미지 패치의 크기는 상기 커널의 크기와 동일한 것임), 그 후에 상기 커널들을 사용함으로써 각각의 이미지 패치에 대한 콘볼루션 동작이 수행된다는 것이다. 상기 멤리스터 어레이를 사용함으로써 상기 콘볼루션 계층의 콘볼루션 동작이 구현되는 경우에, 비록 상기 복수의 커널들이 각각의 이미지 패치를 병렬로 프로세스할 수 있지만 여전히 전체 입력 이미지에 대한 콘볼루션 프로세싱을 실현하기 위해 배치(batch) 방식으로 상기 멤리스터 어레이 내에 대응하는 이미지 패치들의 데이터를 직렬 입력하는 것이 필요하다(다시 말하면, 상기 이미지 패치들이 하나씩 입력됨).
도 5b에 도시된 바와 같이, 멤리스터 어레이는 완전히 연결된 계층의 완전히 연결된 계산을 실현하는데 사용될 수 있다. 예를 들어, 일부 예들에서, 도 5b에 도시된 바와 같이, 상기 멤리스터 어레이의 각각의 열은 상기 완전히 연결된 계층의 입력을 수신하도록 구성되고, 상기 멤리스터 어레이의 각각의 행은 상기 완전히 연결된 계층의 출력을 제공하도록 구성되며, 각각의 행의 복수의 멤리스터들은 상기 행의 출력에 상응하는 대응하는 가중치들을 나타내는데 사용된다. 여기서 유념하여야 할 점은 상기 멤리스터 어레이를 사용하는 상기 완전히 연결된 계층의 상기 구현이 예시적이며, 본 개시내용의 실시 예들이 이 경우를 포함하지만 이에 국한되지 않는다는 것이다.
여기서 이해하여야 할 점은 상기 완전히 연결된 계층의 완전히 연결된 계산이 한 번에 완료될 수 있다는 것이다. 상기 콘볼루션 계층의 콘볼루션 계산은 배치 방식으로 직렬로 이루어져야 하며, 모든 배치들이 프로세스되면, 상기 콘볼루션 계층의 콘볼루션 계산이 이루어진다. 그러므로 상기 콘볼루션 계산과 상기 완전히 연결된 계산 간에 심각한 속도 불일치가 존재한다(상기 콘볼루션 계산은 상기 완전히 연결된 계산보다 훨씬 더 오랜 시간이 소요된다). 그러므로 상기 멤리스터 어레이를 기반으로 하는 콘볼루션 신경망을 구현할 때, 상기 콘볼루션 신경망의 성능이 상기 콘볼루션 계층에 상응하는 멤리스터 어레이와 같은, (효율 병목 현상으로서 언급되는) 효율이 가장 낮은 멤리스터 어레이에 의해 제한되는 경우가 종종 있다.
본 개시내용의 적어도 하나의 실시 예는 멤리스터 기반 신경망의 병렬 가속 방법을 제공한다. 상기 신경망은 순차적으로 제공된 복수의 기능적 계층들을 포함하고, 상기 복수의 기능적 계층들은 제1 기능적 계층 및 상기 제1 기능적 계층에 이어지는 제2 기능적 계층을 포함하고, 상기 제1 기능적 계층은 병렬로 이루어진 복수의 제1 멤리스터 어레이들을 포함하며, 상기 복수의 제1 멤리스터 어레이들은 상기 제1 기능적 계층의 동작을 병렬로 실행하고 동작의 결과를 상기 제2 기능적 계층에 출력하도록 구성된다. 상기 병렬 가속 방법은 상기 복수의 제1 멤리스터 어레이를 통해 상기 제1 기능적 계층의 동작을 병렬로 실행하고 그 동작의 결과를 상기 제2 기능적 계층으로 출력하는 단계를 포함한다.
본 개시내용의 적어도 하나의 실시 예는 상기 병렬 가속 방법에 상응하는 병렬 가속 프로세서 및 병렬 가속 장치를 더 제공한다.
본 개시내용의 실시 예들에 의해 제공되는 멤리스터 기반 신경망의 병렬 가속 방법, 상기 멤리스터 기반 신경망을 기반으로 하는 병렬 가속 프로세서 및 멤리스터 기반 신경망을 기반으로 하는 병렬 가속 장치에 의하면, 상기 제1 기능적 계층의 동작은 상기 복수의 제1 멤리스터 어레이들을 통해 병렬로 실행되고, 그럼으로써 상기 멤리스터 기반 신경망의 동작 프로세스의 가속화를 달성하게 된다. 상기 멤리스터 기반 신경망의 아키텍처와 병렬 가속 방법은 다양한 심층 신경망 모델과 다양한 유형의 멤리스터에 적용 가능하며 상기 심층 신경망 모델들의 속도 불일치 문제를 해결하는 데 도움이 된다.
이하, 첨부도면들을 참조하여 본 개시내용의 일부 실시 예들 및 그들의 예들이 구체적으로 설명될 것이다.
본 개시내용의 적어도 하나의 실시 예는 멤리스터 기반 신경망의 병렬 가속 방법을 제공한다. 도 6은 본 개시내용의 일부 실시 예들에 의해 제공되는 신경망의 구조의 개략적인 블록도이다. 도 7a는 도 6에 도시된 신경망의 병렬 가속 방법에서의 제1 기능적 계층의 병렬 프로세싱 방식을 보여주며, 도 7b는 도 6에 도시된 신경망의 병렬 가속 방법에서의 제1 기능적 계층의 다른 병렬 프로세싱 방식을 보여준다.
도 6에 도시된 바와 같이, 상기 신경망은 순차적으로 배치된 복수의 기능적 계층들을 포함한다. 예를 들어, 도 6에 도시된 바와 같이, 상기 복수의 기능적 계층들은 제1 기능적 계층 및 상기 제1 기능적 계층에 이어지는 제2 기능적 계층을 포함한다. 예를 들어, 일부 실시 예들에서, 상기 복수의 기능적 계층들은 본 개시내용에 국한되지 않고, 상기 제1 기능적 계층 및 상기 제2 기능적 계층 이외의 기능적 계층들을 더 포함할 수 있다.
예를 들어, 일부 실시 예들에서, 도 7a 및 도 7b에 도시된 바와 같이, 상기 제1 기능적 계층은 병렬로 이루어진 복수의 제1 멤리스터 어레이들을 포함하고, 상기 제1 기능적 계층에 상응하는 복수의 제1 멤리스터 어레이들은 상기 제1 기능적 계층의 동작을 병렬로 실행하고 그 동작의 결과를 상기 제2 기능적 계층으로 출력하고, 그럼으로써 상기 신경망의 동작 프로세스를 가속화하도록 구성된다. 예를 들어, 일부 실시 예들에서, 상기 제1 기능적 계층이 단지 하나의 제1 멤리스터 어레이만을 포함하는 경우에, 상기 제1 기능적 계층은 효율 병목 현상에 의해 상기 신경망의 동작 성능이 제한되는 것이고, 예를 들어, 상기 제1 기능적 계층은 콘볼루션 계층이다.
예를 들어, 일부 실시 예들에서, 상기 신경망은 복수의 콘볼루션 계층을 포함하는 콘볼루션 신경망이다. 일반적으로, 상기 신경망의 입력 이미지에 대한 콘볼루션 프로세싱에 사용되는 초기 콘볼루션 계층(다시 말하면, 상기 제1 콘볼루션 계층)은 일반적으로 가장 많은 계산량과 가장 긴 시간 소모를 지니는데, 다시 말하면, 상기 초기 콘볼루션 계층은 일반적으로 상기 신경망의 효율 병목 현상을 나타내는 것이다. 그러므로 상기 제1 기능적 계층은 일반적으로 상기 초기 콘볼루션 계층을 포함할 수 있다. 여기서 유념하여야 할 점은 본 개시내용이 이 경우를 포함하지만 이에 국한되지 않는다는 것이다. 예를 들어, 일부 다른 실시 예들에서, 도 6에 도시된 바와 같이, 상기 신경망의 복수의 기능적 계층들은 상기 제1 기능적 계층 전에 위치하게 되는 제3 기능적 계층을 더 포함할 수 있고, 상기 제3 기능적 계층의 출력은 상기 제1 기능적 계층의 입력으로서 상기 제1 기능적 계층에 제공되며, 결과적으로는 상기 제1 기능적 계층은 중간 콘볼루션 계층 등과 같은 신경망의 초기 콘볼루션 계층과는 다른 콘볼루션 계층일 수도 있다.
여기서 이해하여야 할 점은 상기 신경망이 복수의 제1 기능적 계층들(예컨대, 콘볼루션 계층들)을 포함할 수 있고 각각의 제1 기능적 계층의 동작이 상기 각각의 제1 기능적 계층에 상응하는 복수의 제1 멤리스터 어레이들을 통해 병렬로 실행될 수 있으며, 그럼으로써 상기 신경망의 병렬성을 개선하고 상기 신경망의 동작 프로세스를 더 가속화한다는 것이다. 예를 들어, 대응하는 제1 기능적 계층들에 상응하는 제1 멤리스터 어레이들의 개수는 본 개시내용의 실시 예들에 국한되지 않고 동일하거나 상이할 수 있다.
예를 들어, 상기 제2 기능적 계층은 콘볼루션 계층, 다운-샘플링 계층, 평탄화 계층, 완전히 연결된 계층 등으로 이루어진 그룹으로부터 선택되는 것을 포함할 수 있다. 예를 들어, 상기 제3 기능적 계층은 콘볼루션 계층, 다운-샘플링 계층 등으로 이루어진 그룹으로부터 선택되는 것을 포함할 수 있다. 여기서 유념하여야 할 점은 본 개시내용의 실시 예들이 이 경우에 국한되지 않는다는 것이다.
예를 들어, 도 7a 및 도 7b 양자 모두는 상기 제1 기능적 계층이 3개의 제1 멤리스터 어레이를 포함하는 경우를 예시적으로 보여주며, 이는 본 개시내용에 대한 국한으로서 간주 되어서는 아니 된다. 다시 말하면, 상기 제1 기능적 계층에 포함되는 제1 멤리스터 어레이들의 개수는 본 개시내용의 실시 예들에 국한되지 않고 실제 요구들에 따라 설정될 수 있다.
예를 들어, 도 7a 및 도 7b에 도시된 바와 같이, 위에서 설명한 멤리스터 기반 신경망의 병렬 가속 방법은 상기 복수의 제1 멤리스터 어레이들을 통해 상기 제1 기능적 계층의 동작을 병렬로 실행하고 그 동작의 결과를 (도 7a 및 도 7b에 도시되지 않은) 제2 기능적 계층으로 출력하는 단계를 포함한다.
예를 들어, 일부 실시 예들에서, 도 7a에 도시된 바와 같이, 첫째, (도 7a에서 상기 디지털 이미지 "2"에 의해 보인 바와 같은) 상기 제1 기능적 계층에 의해 수신된 입력 데이터는 상기 복수의 제1 멤리스터 어레이들과 일대일 대응으로 (도 7a에서 상기 디지털 이미지 "2"가 분할되는 3개의 부분에 의해 보인 바와 같은) 복수의 서브-입력 데이터로 분할될 수 있고, 그 후에 상기 제1 기능적 계층의 동작은 복수의 제1 서브-동작 결과들을 생성하도록 상기 복수의 멤리스터 어레이들을 통해 병렬로 상기 복수의 서브-입력 데이터에 대해 수행될 수 있으며, 그에 따라 다음으로 상기 복수의 서브-동작 결과들이 연결될 수 있고 상기 제2 기능적 계층의 동작이 상기 제2 기능적 계층을 통해 연결 결과에 대해 수행될 수 있다.
예를 들어, 일부 예들에서, 도 7a에 도시된 바와 같이, 상기 제1 기능적 계층은 콘볼루션 계층이고, 상기 제1 기능적 계층에 포함된 각각의 제1 멤리스터 어레이는 도 5a에 도시된 방식으로 상기 제1 기능적 계층의 콘볼루션 동작을 구현할 수 있다.
예를 들어, 일부 예들에서, 상기 입력 이미지(다시 말하면, 입력 데이터)를 분할함으로써 획득된 복수의 서브-입력 이미지들(다시 말하면, 서브-입력 데이터)에서, 인접한 서브-입력 이미지들은 일반적으로 본 개시내용의 실시 예들에서 국한되지 않고 서로 중첩(overlap)될 수도 있으며 서로 중첩되지 않을 수도 있다. 예를 들어, 일부 예들에서, 상기 복수의 서브-입력 데이터의 크기는 서로 실질적으로 동일하고, 그럼으로써 상응하는 제1 멤리스터 어레이에 의한 각각의 서브-입력 데이터에 대한 콘볼루션 프로세싱의 시간 소비는 실질적으로 서로 동일하고, 전반적으로 상기 제1 기능적 계층의 프로세싱 속도가 가속화될 수 있으며 다시 말하면, 상기 신경망의 프로세싱 속도가 가속화될 수 있다.
예를 들어, 일부 예들에서, 상기 복수의 서브-입력 데이터는 임의의 순서로 상기 복수의 제1 멤리스터 어레이들에 대응하게 제공될 수 있고, 이 경우에 각각의 제1 멤리스터 어레이는 임의의 서브-입력 데이터를 프로세스할 수 있고; 예를 들어, 일부 다른 예들에서, 상기 복수의 서브-입력 데이터는 사전에 결정된 순서로 하나씩 상기 복수의 제1 멤리스터 어레이들에 대응하게 제공되어야 하며, 이 경우에 각각의 제1 멤리스터 어레이는 그에 상응하는 서브-입력 데이터를 프로세스할 수 있다.
예를 들어, 상기 입력 이미지가 제1 멤리스터 어레이(도 5a 참조)를 통해 프로세스되는 경우에, 상기 제1 기능적 계층의 동작에 소요되는 시간은 t로 표기되고, 예를 들어, 상기 입력 이미지를 분할함으로써 획득되는 3개의 서브-입력 이미지가 3개의 제1 멤리스터 어레이(도 7a 참조)를 통해 병렬로 프로세싱되는 경우에, 상기 제1 기능적 계층의 동작에 소요되는 시간은 t/3으로 감소하게 된다. 그러므로 도 7a에 도시된 병렬 가속 방법은 단일 입력 데이터를 프로세싱하는 신경망의 동작 프로세스를 가속화할 수 있다.
예를 들어, 일부 예들에서, 상기 제2 기능적 계층은 본 개시내용의 실시 예들에 국한되지 않고 콘볼루션 층, 다운-샘플링 계층, 평탄화 계층, 완전히 연결된 계층 등으로 이루어진 그룹으로부터 선택되는 것일 수 있다.
예를 들어, 일부 다른 실시 예들에서, 도 7b에 도시된 바와 같이, 먼저, (도 7b에서 디지털 이미지들 "2", "1" 및 "4"에 의해 보인 바와 같은) 제1 기능적 계층에 의해 수신된 복수의 입력 데이터는 복수의 제1 멤리스터 어레이들에 대응하게 제공될 수 있고, 그 후에 상기 제1 기능적 계층의 동작은 복수의 서브-동작 결과들을 생성하도록 상기 복수의 제1 멤리스터 어레이들을 통해 적어도 부분적으로 병렬로 상기 복수의 입력 데이터에 대해 수행될 수 있으며, 그 후에 상기 제2 기능적 계층의 동작은 상기 제2 기능적 계층을 통해 상기 복수의 서브-동작 결과들에 대해 대응하게 수행될 수 있다.
예를 들어, 일부 예들에서, 도 7b에 도시된 바와 같이, 상기 제1 기능적 계층은 콘볼루션 계층이고, 상기 제1 기능적 계층에 포함된 각각의 제1 멤리스터 어레이는 도 5a에 도시된 방식으로 상기 제1 기능적 계층의 콘볼루션 동작을 구현할 수 있다. 예를 들어, 상기 복수의 입력 데이터는 임의의 순서로 상기 복수의 제1 멤리스터 어레이들에 할당될 수 있으며, 이 경우에 각각의 제1 멤리스터 어레이는 임의의 입력 데이터를 프로세스할 수 있다. 예를 들어, 상기 복수의 입력 데이터는 본 개시내용의 실시 예들에 국한되지 않고 서로 다를 수도 있고, 부분적으로 또는 완전히 동일할 수도 있다.
예를 들어, 상기 입력 이미지가 제1 멤리스터 어레이(도 5a 참조)를 통해 프로세스되는 경우, 상기 제1 기능적 계층의 동작에 소요되는 시간은 t1으로서 표기되고, 후속 기능적 계층(들)의 동작에 소요되는 시간은 t2로 표기되며, t1 > t2인 경우에, 상기 신경망이 3개의 입력 이미지를 프로세스하는 데 소요되는 시간은 적어도 약 3*t1+t2이다(예를 들어, 상기 제1 기능적 계층이 현재 입력 이미지의 데이터를 프로세스할 때, 상기 후속 기능적 계층(들)은 이전 입력 이미지의 관련 데이터를 프로세스하는 것을 마무리할 수 있다). 이와는 대조적으로, 예를 들어 3개의 입력 이미지가 3개의 제1 멤리스터 어레이(도 7b 참조)를 통해 병렬로 프로세스되는 경우에, 상기 신경망을 사용함으로써 3개의 입력 이미지를 프로세스하는데 소요되는 시간은 약 t1+3*이고, 그럼으로써 2*(t1-t2)의 시간을 절약하게 된다. 다시 말하면, 도 7b에 도시된 병렬 가속 방법은 복수의 입력 데이터를 프로세스하는 신경망의 동작 프로세스를 가속화할 수 있다.
여기서 이해하여야 할 점은 도 7a에 도시된 병렬 가속 방법과 도 7b에 도시된 병렬 가속 방법이 본 개시내용의 실시 예들에서 국한되지 않고 동일한 신경망에(예컨대, 동일한 신경망의 서로 다른 제1 기능적 계층들에) 완전히 적용될 수 있다는 것이다.
본 개시내용의 실시 예들에 의해 제공되는 신경망은 위에서 설명한 병렬 가속 방법을 사용함으로써 동작될 수 있다. 그리고 그 동작 프로세스에서, 상기 제1 기능적 계층의 동작은 복수의 제1 멤리스터 어레이들을 통해 병렬로 실행되고 그럼으로써 상기 신경망의 동작 프로세스의 가속화를 달성하게 된다. 상기 신경망의 아키텍처와 그의 병렬 가속 방법은 다양한 심층 신경망 모델과 서로 다른 유형의 멤리스터에 적용 가능하며, 상기 심층 신경망 모델의 속도 불일치 문제를 해결하는 데 도움이 된다.
본 개시내용의 적어도 하나의 실시 예는 멤리스터 기반 신경망의 현장외(ex-situ) 트레이닝 방법을 더 제공한다. 예를 들어, 상기 트레이닝 방법은 위의 실시 예들에 의해 제공되는 신경망의 매개변수들을 획득하는데 사용될 수 있다. 예를 들어, 도 6, 도 7a 및 도 7b를 참조하면, 상기 신경망은 순차적으로 제공된 복수의 기능적 계층들을 포함하고, 상기 복수의 기능적 계층들은 제1 기능적 계층 및 상기 제1 기능적 계층에 이어지는 제2 기능적 계층을 포함하며, 상기 제1 기능적 계층은 병렬로 이루어진 복수의 제1 멤리스터 어레이들을 포함하고, 상기 복수의 제1 멤리스터 어레이들은 상기 제1 기능적 계층의 동작을 실행하고 그 동작의 결과를 상기 제2 기능적 계층으로 출력하도록 구성된다.
여기서 이해하여야 할 점은 신경망의 트레이닝 방법이 일반적으로 상기 신경망을 사용함으로써 트레이닝 입력 데이터를 프로세스하여 트레이닝 출력 데이터를 획득하는 단계; 상기 트레이닝 출력 데이터에 기초하여, 손실 함수에 따라 상기 신경망의 손실 값을 계산하는 단계; 상기 손실 값에 따라 상기 신경망의 매개변수들을 조정하는 단계; 및 상기 신경망의 트레이닝이 소정의 조건을 만족하는 지의 여부를 판단하고, 상기 소정의 조건이 충족되지 않으면 상기 트레이닝 프로세스를 반복하며, 그러하지 않으면 상기 트레이닝 프로세스를 중지하고 트레이닝된 신경망을 획득하는 단계를 포함한다. 물론 상기 신경망을 트레이닝할 때, 상기 신경망의 매개변수들이 일반적으로 초기화되어야 한다. 예를 들어, 상기 신경망의 매개변수들은 난수(random number)들로 초기화될 수 있으며, 예를 들어 상기 난수들은 가우스 분포(Gaussian distribution)를 따르며, 본 개시내용의 실시 예들은 이 경우에 국한되지 않는다. 여기서 이해하여야 할 점은 본 개시내용의 실시 예들에 의해 제공되는 신경망의 트레이닝 방법이 또한 위에서 설명한 일반적으로 사용되는 트레이닝 단계들 및 프로세스들로 언급될 수 있다는 것이다.
현장외 트레이닝을 통해 가중치 매개변수들이 획득된 후에, 상기 멤리스터 어레이들 내 요소들의 컨덕턴스는 상응하는 가중치들을 실현하도록 하는 세트 및 리세트 동작들에 의해 프로그램된다. 멤리스터 가중치들의 특정 프로그래밍 방법 및 편성 방식은 국한되지 않는다.
도 8은 본 개시내용의 일부 실시 예들에 의해 제공되는 신경망의 현장외 트레이닝 방법의 흐름도이다. 예를 들어, 도 8에 도시된 바와 같이, 상기 현장외 트레이닝 방법은 다음과 같이 단계 S10 내지 S30을 포함할 수 있다.
단계 S10: 신경망의 수학적 모델을 구성한다.
예를 들어, 일부 예들에서, 본 개시내용의 실시 예들에 의해 제공되는 수학적 모델은 소프트웨어(예컨대, 프로그램 코드 등)를 통해 구성될 수 있다.
단계 S20: 트레이닝된 수학적 모델을 획득하기 위해 상기 수학적 모델을 트레이닝한다.
예를 들어, 일부 예들에서, 위에서 언급한 수학적 모델은 프로세서 및 메모리 등을 기반으로 하여 실행 및 트레이닝될 수 있다. 예를 들어, 상기 수학적 모델의 트레이닝 단계들 및 프로세스들은 일반적으로 사용되는 트레이닝 단계들 및 프로세스들로 언급될 수 있으며 구체적인 내용은 여기에서 반복되지 않을 것이다.
단계 S30: 트레이닝된 수학적 모델의 가중치 매개변수들을 상기 신경망에 상응하는 멤리스터 어레이들 내에 기록한다.
예를 들어, 일부 예들에서, 상기 수학적 모델의 제1 기능적 계층은 제1 가중치 매개변수들의 그룹을 포함한다. 상기 수학적 모델의 트레이닝 프로세스에서, 순방향 전파 동안, 상기 제1 기능적 계층의 트레이닝 입력 데이터는 제1 가중치 매개변수들의 그룹으로 프로세스된다. 역방향 전파 동안, 제1 가중치 매개변수들의 그룹은 상기 제1 기능적 계층의 트레이닝된 제1 가중치 매개변수들을 획득하도록 조정된다. 이 경우에, 트레이닝된 수학적 모델의 가중치 매개변수들을 상기 신경망에 상응하는 멤리스터 어레이들 내에 기록하는 것, 다시 말하면 단계 S30은, 상기 트레이닝된 수학적 모델의 제1 기능적 계층의 제1 가중치 매개변수들의 그룹을 복수의 제1 멤리스터 어레이들 내에 기록하는 단계를 포함한다. 이 경우에, 상기 제1 기능적 계층에 상응하는 각각의 제1 멤리스터 어레이는 동일한 컨덕턴스 가중치 매트릭스를 포함한다.
예를 들어, 일부 다른 예들에서, 상기 수학적 모델의 제1 기능적 계층은 제1 가중치 매개변수들의 복수의 그룹들을 포함한다. 상기 수학적 모델의 트레이닝 프로세스에서, 순방향 전파 동안, 상기 수학적 모델의 제1 기능적 계층에 의해 수신된 트레이닝 입력 데이터는 제1 가중치 매개변수들의 복수의 그룹들과 일대일 대응하여 복수의 트레이닝 서브-입력 데이터로 분할되고, 상기 제1 기능적 계층의 동작은 복수의 트레이닝 서브-동작 결과들을 생성하도록 제1 가중치 매개변수들의 복수의 그룹들을 사용함으로써 상기 복수의 트레이닝 서브-입력 데이터에 대해 병렬로 수행되며, 제1 가중치 매개변수들의 각각의 그룹의 매개변수 값들은 제1 가중치 매개변수들의 각각의 그룹에 상응하는 트레이닝 서브-동작 결과 및 트레이닝 서브-동작 결과에 상응하는 트레이닝 중간 데이터에 기초하여 업데이트된다. 현장외 트레이닝의 다양한 방식에 따라, 각각의 멤리스터 어레이는 동일한 가중치 매개변수들 또는 다른 가중치 매개변수들로 프로그램될 수 있다.
이 경우에, 트레이닝된 수학적 모델의 가중치 매개변수들을 상기 신경망에 상응하는 멤리스터 어레이들 내에 기록하는 것, 다시 말하면 단계 S30은 트레이닝된 수학적 모델의 제1 기능적 계층의 제1 가중치 매개변수들의 복수의 그룹들을 상기 복수의 제1 멤리스터 어레이들 내에 대응하게 일대일 대응으로 기록하는 것을 포함한다. 이 경우에, 상기 획득한 신경망은 도 7a에 도시된 병렬 가속 방법을 실행하는데 사용될 수 있다.
예를 들어, 또 다른 일부 예들에서, 상기 수학적 모델의 제1 기능적 계층은 제1 가중치 매개변수들의 복수의 그룹들을 포함한다. 상기 수학적 모델의 트레이닝 프로세스에서, 순방향 전파 동안, 상기 수학적 모델의 제1 기능적 계층에 의해 수신된 복수의 트레이닝 입력 데이터는 상기 복수의 제1 가중치 매개변수들에 대응하게 제공되고, 상기 제1 기능적 계층의 동작은 복수의 트레이닝 서브-동작 결과들을 생성하기 위해, 제1 가중치 매개변수들의 복수의 그룹들을 사용함으로써 상기 복수의 트레이닝 입력 데이터에 대해 적어도 부분적으로 병렬로 수행되며, 제1 가중치 매개변수들의 각각의 그룹의 매개변수 값들은 제1 가중치 매개변수들의 각각의 그룹에 상응하는 트레이닝 서브-동작 결과 및 상기 트레이닝 서브-동작 결과에 상응하는 트레이닝 중간 데이터를 기반으로 하여 업데이트된다.
이 경우에, 상기 트레이닝된 수학적 모델의 가중치 매개변수들을 상기 신경망에 상응하는 멤리스터 어레이 내에 기록하는 것, 다시 말하면 단계 S30은, 상기 트레이닝된 수학적 모델의 제1 기능적 계층의 제1 가중치 매개변수들의 복수의 그룹들을 대응하게 상기 복수의 제1 멤리스터 어레이들 내에 일대일 대응으로 기록하는 것을 포함한다. 이 경우에, 상기 획득한 신경망은 도 7b에 도시된 병렬 가속 방법을 실행하는데 사용될 수 있으며 또한 도 7a에 도시된 병렬 가속 방법을 실행하는데 사용될 수 있다.
그러므로 본 개시내용의 일부 실시 예들에 의해 제공되는 멤리스터 기반 신경망의 병렬 가속 방법에서, 상기 신경망의 가중치 매개변수들은 위에서 설명한 현장외 트레이닝 방법을 통해 획득되며, 상기 신경망의 가중치 매개변수들은 상기 제1 기능적 계층의 가중치 매개변수들을 포함하고, 상기 제1 기능적 계층의 가중치 매개변수들은 상기 복수의 제1 멤리스터 어레이들의 컨덕턴스를 결정하기 위해 상기 복수의 제1 멤리스터 어레이들 내에 기록된다. 여기서 또한 이해하여야 할 점은 위에서 설명한 현장외 트레이닝 방법을 통해 획득된 신경망의 가중치 매개변수들이 또한 상기 제1 기능적 계층과는 다른 기능적 계층들의 가중치 매개변수들을 포함할 수 있고, 상기 제1 기능적 계층과는 다른 기능적 계층들의 가중치 매개변수들이 상기 제1 기능적 계층과는 다른 기능적 계층들에 상응하는 멤리스터 어레이들의 컨덕턴스들을 결정하기 위해 상기 제1 기능적 계층과는 다른 기능적 계층들에 상응하는 멤리스터 어레이들 내에 기록될 수 있다는 것이다.
본 개시내용의 적어도 하나의 실시 예는 멤리스터 기반 신경망을 기반으로 하는 병렬 가속 프로세서를 더 제공하고, 상기 병렬 가속 프로세서는 위에서 설명한 병렬 가속 방법을 실행하는데 사용될 수 있다. 도 9는 본 개시내용의 일부 실시 예들에 의해 제공되는 멤리스터 기반 신경망을 기반으로 하는 병렬 가속 프로세서의 개략도이다.
예를 들어, 도 6에 도시된 바와 같이, 상기 신경망은 순차적으로 제공된 복수의 기능적 계층들을 포함하고, 상기 복수의 기능적 계층들은 제1 기능적 계층을 포함한다. 예를 들어, 도 9에 도시된 바와 같이, 상기 병렬 가속 프로세서는 복수의 컴퓨팅 코어들을 포함하고, 상기 컴퓨팅 코어들은 서로 통신할 수 있으며, 동시에, 각각의 컴퓨팅 코어는 복수의 멤리스터 어레이 컴퓨팅 유닛들을 포함한다.
예를 들어, 일부 실시 예들에서, 상기 복수의 멤리스터 어레이 컴퓨팅 유닛들은 복수의 제1 멤리스터 어레이 컴퓨팅 유닛들을 포함하고, 상기 제1 기능적 계층의 가중치 매개변수들은 상기 복수의 제1 멤리스터 어레이 컴퓨팅 유닛들 내에 기록되며, 상기 복수의 제1 멤리스터 어레이 컴퓨팅 유닛들은 상기 제1 기능적 계층의 동작에 상응하는 컴퓨팅을 병렬로 실행하도록 구성된다. 다시 말하면, 상기 신경망의 특정 기능적 계층의 가중치들은 서로 다른 컴퓨팅 코어들 또는 서로 다른 멤리스터 어레이 컴퓨팅 유닛들 내에 프로그래밍될 수 있으며, 결과적으로는 복수의 멤리스터 어레이들을 사용함으로써 상기 기능적 계층의 동작의 병렬 가속 컴퓨팅을 실현하게 된다. 예를 들어, 상기 복수의 제1 멤리스터 어레이들은 상기 실시 예들 중 어느 하나에 의해 제공되는 병렬 가속 방법을 채용함으로써 상기 제1 기능적 계층의 동작의 병렬 가속 컴퓨팅을 실현할 수 있다.
도 10은 도 9에 도시된 병렬 가속 프로세서 내 멤리스터 어레이 컴퓨팅 유닛의 개략적인 구조도이다. 이하, 도 9에 도시된 멤리스터 어레이 컴퓨팅 유닛의 구조를 참조하여 상기 멤리스터 어레이 컴퓨팅 유닛의 동작 원리가 구체적으로 설명될 것이다.
예를 들어, 도 10에 도시된 바와 같이, 상기 멤리스터 어레이 컴퓨팅 유닛은 멤리스터 어레이 및 주변 회로들을 포함한다.
예를 들어, 일부 예들에서, 도 10에 도시된 바와 같이, 상기 멤리스터 어레이는 128x128 멤리스터들을 포함하고, 본 개시내용의 실시 예들은 이 경우를 포함하지만 이에 국한되지 않는다. 예를 들어, 일부 예들에서, 도 10에 도시된 바와 같이, 상기 주변 회들은 스위치 어레이, 멀티플렉서, 샘플-앤-홀드 모듈(S&H 모듈), 아날로그-디지털 변환기 모듈(ADC), 시프트 누산기(Sh&A) 등을 포함한다.
예를 들어, 일부 예들에서, 도 10에 도시된 바와 같이, 상기 멤리스터 어레이 컴퓨팅 유닛의 입력은 복수의 8-비트 입력 데이터를 포함한다. 예를 들어, 각각의 입력 데이터의 각각의 비트는 제어 펄스에 상응하고, 각각의 제어 펄스는 각각의 비트의 값에 따라 부호화된다. 구체적인 부호화 방법은
Figure pct00019
와 같으며, 여기서 s = 0, ..., B-1이고, B는 입력 데이터의 비트들의 수를 나타내고(예를 들어, 도 10에 도시된 바와 같이 B=8임), Vk는 k번째 행의 입력 데이터에 상응하는 전압 여기 상태를 나타내며, VR은 일정한 기준 전압(예컨대, 도 10에 도시된 판독 전압)을 나타내고, ak,s는 [s]번째 제어 펄스의 레벨을 나타낸다. 예를 들어, 일부 예들에서, ak,s는 8-비트 입력 데이터(ak)의 2진 코드들(ak,7, ak,6,..., ak,0) 중 하나에 상응할 수 있다. ak,s=1인 경우, 이것이 의미하는 것은 [s]번째 제어 펄스가 하이 레벨에 있고, 그럼으로써 스위치 어레이의 상응하는 스위치가 턴온될 수 있게 하고 상기 판독 전압(VR)이 상기 멤리스터 어레이의 k번째 행에 공급되게 한다는 것이고, ak,s=0인 경우, 이것이 의미하는 것은 [s]번째 제어 펄스가 로우 레벨에 있고, 그럼으로써 스위치 어레이의 상응하는 스위치가 턴오프될 수 있게 하고동시에 상기 스위치 어레이의 다른 한 스위치가 상기 멤리스터 어레이의 k번째 행에 전지 레벨을 공급하도록 턴오프되게 한다는 것, 다시 말하면 어떠한 신호도 이때 상기 멤리스터 어레이의 k번째 행에 제공되게 한다는 것이다.
여기서 이해하여야 할 점은 도 10에 도시된 바와 같이 한편으로는 복수의 입력 데이터가 상기 멤리스터 어레이 내에 병렬로 입력되고, 다른 한편으로는, 각각의 입력 데이터가 상기 멤리스터 어레이 내에 직렬로 입력되는 복수(예컨대, 8개)의 제어 펄스로서 상응하게 특징지어진다. 물론, 상기 멤리스터 어레이 내에는 서로 다른 입력 데이터에 상응하는 동일한 순서의 제어 펄스가 병렬로 입력된다.
키르히호프의 법칙에 의하면, 상기 멤리스터 어레이의 출력 전류는 이하의 수학식
Figure pct00020
Figure pct00021
Figure pct00022
Figure pct00023
에 따라 구해질 수 있으며, 여기서 k = 1, ..., m이고, j=1, ..., n이며, m은 상기 멤리스터 어레이의 행들의 수이고, n은 상기 멤리스터 어레이의 열들의 수이며, ij는 모든 입력 데이터에 상응하는 멤리스터 어레이의 j번째 열의 출력 전류를 나타내고, ij,s는 모든 [s]번째 제어 펄스들에 상응하는 멤리스터 어레이의 j번째 열의 펄스 출력 전류이며, gk,j는 상기 멤리스터 어레이의 컨덕턴스 매트릭스를 나타낸다.
이러한 수학식에 의하면, 모든 입력 데이터에 상당하는 모든 [s]번째 제어 펄스들이 상기 스위치 어레이에 인가될 때, 상기 판독 전압(VR)은 하이 레벨 제어 펄스들의 제어하에서 상기 멤리스터 어레이에 병렬로 인가될 수 있고, 그럼으로써 상기 멤리스터 어레이가 상응하게 복수의 펄스 출력 전류(ij,s)를 출력하게 되고, 여기서
Figure pct00024
이다.
여기서 유념하여야 할 점은 도 10에 도시된 실시 예에서 각각의 순서의 제어 펄스들에 상응하는 펄스 출력 전류가 직접 가중되지 않고(상기 펄스 출력 전류(ij,s)에 상응하는 가중치가 2s임) j번째 열의 출력 전류(ij)를 획득하도록 상기 수학식에 따라 합산된다. 예를 들어, 도 10에 도시된 바와 같이, 각각의 펄스 출력 전류는 샘플-앤-홀드(S&H) 모듈에 의해 유지될 수 있는 전압 신호로 변환된 다음에 아날로그-디지털 변환 모듈에 의해 디지털 정보(예컨대, 2진 디지털 정보)로 양자화되고, 그리고 최종적으로 각각의 펄스 출력 전류에 상응하는 2진 디지털 정보는 시프트 누산기에 의해 시프트되어 누산된다. 예를 들어, 상기 펄스 출력 전류(ij,1)에 상응하는 2진 디지털 정보는 상기 펄스 출력 전류(ij,0)에 상응하는 2진 디지털 정보에 대해 1비트씩 전진 되고(다시 말하면, 전자의 최하위 비트는 후자의 끝에서 2번째 하위 비트에 상응하게 되고), 상기 펄스 출력 전류(ij,2)에 상응하는 2진 디지털 정보는 상기 펄스 출력 전류(ij,1)에 상응하는 2진 정보에 대해 1비트씩 전진 되며 이하 마찬가지이다.
예를 들어, 일부 실시 예들에서, 도 10에 도시된 바와 같이, 상기 멤리스터 어레이의 각각의 열의 출력은 2세트의 샘플-앤-홀드 모듈들에 의해 교대로 변환될 수 있고, 그럼으로써 하드웨어 동작의 병렬성을 증가시키게 된다. 동시에, 전력 소모와 프로세서 칩의 면적을 절약하기 위해, 아날로그-디지털 변환 모듈(ADC)은 시분할 다중화 방식으로 작동할 수 있으며, 예를 들어 4개의 열의 출력들이 하나의 아날로그-디지털 변환 모듈을 공유한다. 상기 멤리스터 어레이 컴퓨팅 유닛이 작동할 때, 현재 순간에 상기 컴퓨팅 유닛의 입력 신호로서 [s]번째 비트(다시 말하면, [s]번째 제어 펄스)가 취해지면, 상기 스위치 어레이는 제1 세트의 샘플-앤-홀드 모듈들을 게이트(gate)하도록 스위칭 신호에 의해 제어되며, 상기 열들 상의 펄스 출력 전류들은 동시에 상응하는 전압 출력들로 변환되고 동시에, 상기 멀티플렉서에 의해 지원되는 아날로그-디지털 변환 모듈은 고속으로 이전 순간(다시 말하면 [s-1]번째 제어 펄스에 상응하는 순간)의 펄스 출력 전류들을 양자화한다. 그리고 나서, 다음 순간에, [s+1]번째 비트(다시 말하면, [s+1]번째 제어 펄스)는 상기 컴퓨팅 유닛의 입력 신호로서 취해지며, 상기 스위치 어레이는 상기 제2 세트의 샘플-앤-홀드 모듈들을 게이트하도록 상기 스위칭 신호에 의해 제어되고, 동시에 상기 아날로그-디지털 변환 모듈은 이전의 상기 제1 세트의 샘플-앤-홀드 모듈들에 의해 유지된 전압 값을 양자화한다. 예를 들어, 상기 멤리스터 어레이 컴퓨팅 유닛의 동작 프로세스 동안, 모든 스위치 스위칭 동작들이 상기 멀티플렉서를 제어함으로써 실현될 수 있다.
여기서 유념하여야 할 점은 도 9에 도시된 병렬 가속 프로세서 및 도 10에 도시된 멤리스터 어레이 컴퓨팅 유닛 양자 모두가 예시적이며 구체적인 구현 방식들 및 이들의 세부사항들이 본 개시내용의 실시 예들에서 국한되지 않는다는 것이다.
본 개시내용의 실시 예들에 의해 제공되는 병렬 가속 프로세서의 기술적 효과들은 상기 실시 예들에 의해 제공되는 병렬 가속 방법의 관련 설명으로 언급될 수 있으며, 여기에서는 세부사항이 반복되지 않을 것이다.
본 개시내용의 적어도 하나의 실시 예는 멤리스터 기반 신경망을 기반으로 하는 병렬 가속 장치를 더 제공한다. 도 11은 본 개시내용의 일부 실시 예들에 의해 제공되는 멤리스터 기반 신경망을 기반으로 하는 병렬 가속 장치의 개략적인 블록도이다. 예를 들어, 도 11에 도시된 바와 같이, 상기 병렬 가속 장치는 상기 실시 예에 의해 제공되는 병렬 가속 프로세서, 및 상기 병렬 가속 프로세서에 연결된 입력 인터페이스 및 출력 인터페이스를 포함한다. 예를 들어, 상기 병렬 가속 장치는 내부의 병렬 가속 프로세서를 통해 위에서 설명한 병렬 가속 방법을 실행할 수 있다.
예를 들어, 일부 예들에서, 도 11에 도시된 바와 같이, 상기 병렬 가속 장치는 시스템 버스를 더 포함하며 상기 시스템 버스를 통해 상기 병렬 가속 프로세서, 상기 입력 인터페이스 및 상기 출력 인터페이스가 서로 통신할 수 있게 된다. 예를 들어, 상기 입력 인터페이스는 상기 병렬 가속 프로세서 등의 동작을 제어하기 위해 외부 컴퓨터 장치 또는 사용자 등으로부터의 지시를 수신하도록 구성된다. 예를 들어, 상기 출력 인터페이스는 상기 병렬 가속 프로세서 등의 동작 결과를 출력하도록 구성된다. 예를 들어, 상기 입력 인터페이스 및/또는 상기 출력 인터페이스를 통해 상기 병렬 가속 장치와 통신하는 외부 장치들은 사용자가 상기 외부 장치들과 상호작용할 수 있는 임의 유형의 사용자 인터페이스를 제공하는 환경에 포함될 수 있다. 사용자 인터페이스들의 유형들의 예들에는 그래픽 사용자 인터페이스(Graphical User Interface; GUI), 내추럴 사용자 인터페이스(Natural User Interface) 등이 포함된다. 예를 들어, 상기 GUI는 키보드, 마우스, 원격 제어기 등과 같은 입력 장치를 통해 사용자로부터의 입력을 수신하고 디스플레이와 같은 출력 장치상의 출력을 제공할 수 있다. 또한, 상기 내추럴 사용자 인터페이스는 키보드, 마우스 및 원격 제어기와 같은 입력 장치에 의해 제약을 받지 않는 방식으로 사용자가 상기 병렬 가속 장치와 상호작용하는 것을 가능하게 할 수 있다. 이와는 대조적으로, 상기 내추럴 사용자 인터페이스는 음성 인식, 터치 및 스타일러스 인식, 화면상 그리고 그 주변의 제스처 인식, 공중 제스처, 머리 및 눈 추적, 음성 및 의미, 시각, 터치, 제스처 및 기계 지능 등에 의존할 수 있다.
또한, 비록 도 11에는 상기 병렬 가속 장치가 개별 시스템으로서 도시되어 있지만, 여기서 이해하여야 할 점은 상기 병렬 가속 장치가 분산 시스템일 수도 있고 클라우드 시설(공개 클라우드 또는 개인 클라우드를 포함함)로서 배포될 수도 있다는 것이다. 따라서, 예를 들어, 복수의 장치들은 네트워크 연결을 통해 서로 통신하고 상기 병렬 가속 장치에 의해 실행되는 것으로 묘사되는 태스크들을 함께 실행할 수 있다.
예를 들어, 상기 병렬 가속 방법의 동작 프로세스는 상기 실시 예들의 병렬 가속 방법의 관련 설명으로 언급될 수 있으며, 여기에서는 세부사항이 반복되지 않을 것이다.
여기서 유념하여야 할 점은 본 개시내용의 실시 예들에 의해 제공되는 병렬 가속 장치가 예시적이지만 국한적이지 않으며, 상기 병렬 가속 장치가 또한 실제 적용 요건들에 따라 다른 종래의 구성요소들 또는 구조들을 포함할 수도 있다는 것이다. 예를 들어, 상기 병렬 가속 장치의 필요한 기능들을 구현하기 위해, 본 기술 분야에서 숙련된 자들은 본 개시내용의 실시 예들에 국한되지 않는 특정 적용 시나리오들에 따라 다른 종래의 구성요소들 또는 구조들을 설정할 수 있다.
본 개시내용의 실시 예들에 의해 제공되는 병렬 가속 장치의 기술적 효과들은 상기 실시 예들에서의 상기 병렬 가속 방법 및 상기 병렬 가속 프로세서의 관련 설명으로 언급될 수 있으며, 여기에서는 세부사항이 반복되지 않을 것이다.
본 개시내용을 위해 이하의 내용에 유념하여야 한다.
(1) 본 개시내용의 실시 예(들)에 관련된 첨부도면들은 본 개시내용의 실시 예(들)와 관련된 구성만을 포함하고 있으며, 그 외의 구성(들)은 공통 설계(들)로 언급될 수 있다.
(2) 어떠한 상충도 없는 경우, 일 실시 예 또는 다른 실시 예들의 기능이 조합될 수 있다.
위에서 설명한 것은 본 개시내용의 구체적인 구현 예들에 불과하며, 본 개시내용의 보호 범위가 이에 국한되는 것은 아니다. 본 개시내용의 기술적 범위 내에서 당업자에게 쉽게 이루어지는 변경 또는 대체 예들은 본 개시내용의 보호 범위에 포함되어야 한다. 따라서 본 개시내용의 보호범위는 청구항들의 보호범위에 기초하여 결정되어야 한다.

Claims (14)

  1. 멤리스터 기반 신경망의 병렬 가속 방법으로서, 상기 신경망은 순차적으로 제공된 복수의 기능적 계층들을 포함하고, 상기 복수의 기능적 계층들은 제1 기능적 계층 및 상기 제1 기능적 계층에 이어지는 제2 기능적 계층을 포함하며, 상기 제1 기능적 계층은 병렬로 이루어진 복수의 제1 멤리스터 어레이들을 포함하고, 상기 복수의 제1 멤리스터 어레이들은 상기 제1 기능적 계층의 동작을 병렬로 실행하고 상기 동작의 결과를 상기 제2 기능적 계층으로 출력하도록 구성되고,
    상기 병렬 가속 방법은,
    상기 복수의 제1 멤리스터 어레이들을 통해 상기 제1 기능적 계층의 동작을 병렬로 실행하고, 상기 동작의 결과를 상기 제2 기능적 계층으로 출력하는 단계;
    를 포함하는, 멤리스터 기반 신경망의 병렬 가속 방법.
  2. 제1항에 있어서,
    상기 복수의 제1 멤리스터 어레이들을 통해 상기 제1 기능적 계층의 동작을 병렬로 실행하고 상기 동작의 결과를 상기 제2 기능적 계층으로 출력하는 단계는,
    상기 제1 기능적 계층에 의해 수신된 입력 데이터를 상기 복수의 제1 멤리스터 어레이들과 일대일 대응하여 복수의 서브-입력 데이터로 분할하는 단계; 및
    상기 복수의 제1 멤리스터 어레이들을 통해 상기 복수의 서브-입력 데이터에 대한 제1 기능적 계층의 동작을 병렬로 실행하여 그에 상응하게 복수의 서브-동작 결과들을 생성하는 단계;
    를 포함하는, 멤리스터 기반 신경망의 병렬 가속 방법.
  3. 제2항에 있어서,
    상기 멤리스터 기반 신경망의 병렬 가속 방법은,
    상기 복수의 서브-동작 결과들을 연결하고 상기 제2 기능적 계층을 통해 연결 결과에 대한 제2 기능적 계층의 동작을 실행하는 단계;
    를 더 포함하는, 멤리스터 기반 신경망의 병렬 가속 방법.
  4. 제2항 또는 제3항에 있어서,
    상기 복수의 서브-입력 데이터의 크기들이 실질적으로 서로 동일한, 멤리스터 기반 신경망의 병렬 가속 방법.
  5. 제1항에 있어서,
    상기 복수의 제1 멤리스터 어레이들을 통해 상기 제1 기능적 계층의 동작을 병렬로 실행하고 상기 동작의 결과를 상기 제2 기능적 계층으로 출력하는 단계는,
    상기 복수의 제1 멤리스터 어레이들에 각각 상기 제1 기능적 계층에 의해 수신된 복수의 입력 데이터를 제공하는 단계; 및
    상기 복수의 제1 멤리스터 어레이들을 통해 상기 복수의 입력 데이터에 대한 제1 기능적 계층의 동작을 적어도 부분적으로 병렬로 실행하여, 그에 상응하게 복수의 서브-동작 결과들을 생성하는 단계;
    를 포함하는, 멤리스터 기반 신경망의 병렬 가속 방법.
  6. 제5항에 있어서,
    상기 멤리스터 기반 신경망의 병렬 가속 방법은,
    상기 제2 기능적 계층을 통해 상기 복수의 서브-동작 결과들에 대한 제2 기능적 계층의 동작을 실행하는 단계;
    를 더 포함하는, 멤리스터 기반 신경망의 병렬 가속 방법.
  7. 제5항 또는 제6항에 있어서,
    상기 복수의 입력 데이터는 서로 상이한, 멤리스터 기반 신경망의 병렬 가속 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 신경망은 콘볼루션 신경망(convolutional neural network)인, 멤리스터 기반 신경망의 병렬 가속 방법.
  9. 제8항에 있어서,
    상기 제1 기능적 계층은 상기 신경망의 초기 콘볼루션 계층인, 멤리스터 기반 신경망의 병렬 가속 방법.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 복수의 기능적 계층들은 제3 기능적 계층을 더 포함하고, 상기 제3 기능적 계층의 출력은 상기 제1 기능적 계층에 제공되는, 멤리스터 기반 신경망의 병렬 가속 방법.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 신경망의 가중치 매개변수들은 현장외 트레이닝(ex-situ training)을 통해 획득되고, 상기 신경망의 가중치 매개변수들은 상기 제1 기능적 계층의 가중치 매개변수들을 포함하며, 상기 제1 기능적 계층의 가중치 매개변수들은 상기 복수의 제1 멤리스터 어레이들의 컨덕턴스(conductance)들을 결정하기 위해 상기 복수의 제1 멤리스터 어레이들 내에 기록되는, 멤리스터 기반 신경망의 병렬 가속 방법.
  12. 제11항에 있어서,
    상기 신경망의 가중치 매개변수들은 상기 제1 기능적 계층 이외의 기능적 계층들의 가중치 매개변수들을 더 포함하며, 상기 제1 기능적 계층 이외의 기능적 계층들의 가중치 매개변수들은 상기 제1 기능적 계층 이외의 기능적 계층들에 상응하는 멤리스터 어레이들의 컨덕턴스들을 결정하기 위해 상기 제1 기능적 계층 이외의 기능적 계층들에 상응하는 멤리스터 어레이들 내에 기록되는, 멤리스터 기반 신경망의 병렬 가속 방법.
  13. 멤리스터 기반 신경망을 기반으로 하는 병렬 가속 프로세서로서, 상기 신경망은 순차적으로 제공된 복수의 기능적 계층들을 포함하고, 상기 복수의 기능적 계층들은 제1 기능적 계층을 포함하며, 상기 병렬 가속 프로세서는 복수의 멤리스터 어레이 컴퓨팅 유닛들을 포함하고, 상기 복수의 멤리스터 어레이 컴퓨팅 유닛들은 복수의 제1 멤리스터 어레이 컴퓨팅 유닛들을 포함하며, 상기 제1 기능적 계층의 가중치 매개변수들은 상기 복수의 제1 멤리스터 어레이 컴퓨팅 유닛들 내에 기록되고, 상기 복수의 제1 멤리스터 어레이 컴퓨팅 유닛들은 상기 제1 기능적 계층의 동작에 상응하는 컴퓨팅을 병렬로 실행하도록 구성되는, 멤리스터 기반 신경망을 기반으로 하는 병렬 가속 프로세서.
  14. 멤리스터 기반 신경망을 기반으로 하는 병렬 가속 장치로서,
    상기 병렬 가속 장치는,
    제13항에 따른 병렬 가속 프로세서; 및
    상기 병렬 가속 프로세서에 연결된 출력 인터페이스 및 입력 인터페이스;
    를 포함하며,
    상기 입력 인터페이스는 상기 병렬 가속 프로세서의 동작을 제어하도록 하는 명령어를 수신하도록 구성되고, 상기 출력 인터페이스는 상기 병렬 가속 프로세서의 동작 결과를 출력하도록 구성되는, 멤리스터 기반 신경망을 기반으로 하는 병렬 가속 장치.
KR1020227019213A 2019-11-07 2020-01-10 멤리스터 기반 신경망 병렬 가속 방법, 프로세서 및 장치 KR20220088943A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201911082236.3A CN110807519B (zh) 2019-11-07 2019-11-07 基于忆阻器的神经网络的并行加速方法及处理器、装置
CN201911082236.3 2019-11-07
PCT/CN2020/071424 WO2021088248A1 (zh) 2019-11-07 2020-01-10 基于忆阻器的神经网络的并行加速方法及处理器、装置

Publications (1)

Publication Number Publication Date
KR20220088943A true KR20220088943A (ko) 2022-06-28

Family

ID=69501496

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227019213A KR20220088943A (ko) 2019-11-07 2020-01-10 멤리스터 기반 신경망 병렬 가속 방법, 프로세서 및 장치

Country Status (5)

Country Link
US (1) US20220335278A1 (ko)
JP (1) JP7399517B2 (ko)
KR (1) KR20220088943A (ko)
CN (1) CN110807519B (ko)
WO (1) WO2021088248A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11762990B2 (en) * 2020-04-07 2023-09-19 Microsoft Technology Licensing, Llc Unstructured text classification
CN112070220B (zh) * 2020-08-06 2023-01-17 北京大学 一种基于非线性器件的原位自激活神经网络电路及神经网络运算方法
FR3113326B1 (fr) * 2020-08-06 2023-01-06 St Microelectronics Rousset Procédé de calcul convolutif intra-mémoire et circuit intégré correspondant
CN111949405A (zh) * 2020-08-13 2020-11-17 Oppo广东移动通信有限公司 资源调度方法、硬件加速器及电子设备
CN112215855B (zh) * 2020-10-20 2024-04-12 清华大学 基于忆阻器阵列实现图像连通区域判断的方法及电子装置
US12003535B2 (en) 2021-03-01 2024-06-04 Microsoft Technology Licensing, Llc Phishing URL detection using transformers
US20220327375A1 (en) * 2021-04-09 2022-10-13 International Business Machines Corporation Training dnn by updating an array using a chopper
CN115481562B (zh) * 2021-06-15 2023-05-16 中国科学院微电子研究所 多并行度优化方法、装置、识别方法和电子设备
CN113643175A (zh) * 2021-08-16 2021-11-12 清华大学 数据处理方法及电子装置
CN113610220B (zh) * 2021-08-27 2023-12-26 中国人民解放军国防科技大学 神经网络模型的训练方法、应用方法及装置
CN114463161B (zh) * 2022-04-12 2022-09-13 之江实验室 一种基于忆阻器的神经网络处理连续图像的方法和装置
CN118072314A (zh) * 2024-04-22 2024-05-24 国科大杭州高等研究院 一种短波红外感存算一体硬件系统

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02266458A (ja) * 1989-04-06 1990-10-31 Nec Corp ニューラルネットワークシミュレーション装置
US9811775B2 (en) 2012-12-24 2017-11-07 Google Inc. Parallelizing neural networks during training
NL2015114B1 (en) * 2015-07-07 2017-02-01 Univ Delft Tech Scalable computation architecture in a memristor-based array.
EP3414702A1 (en) * 2016-02-08 2018-12-19 Spero Devices, Inc. Analog co-processor
GB2552014B (en) * 2016-07-07 2020-05-13 Advanced Risc Mach Ltd Reconfigurable artificial neural networks comprising programmable non-volatile memory elements
CN106203621B (zh) * 2016-07-11 2019-04-30 北京深鉴智能科技有限公司 用于卷积神经网络计算的处理器
CN107239824A (zh) * 2016-12-05 2017-10-10 北京深鉴智能科技有限公司 用于实现稀疏卷积神经网络加速器的装置和方法
CN107704922B (zh) * 2017-04-19 2020-12-08 赛灵思公司 人工神经网络处理装置
JP6724863B2 (ja) 2017-05-29 2020-07-15 株式会社デンソー 畳み込みニューラルネットワーク
US20210264679A1 (en) * 2017-07-25 2021-08-26 Facebook Technologies, Llc Smart sensor
US20210098611A1 (en) * 2019-10-01 2021-04-01 Northwestern University Dual-gated memtransistor crossbar array, fabricating methods and applications of same
CN108009640B (zh) * 2017-12-25 2020-04-28 清华大学 基于忆阻器的神经网络的训练装置及其训练方法
CN108268938B (zh) * 2018-01-24 2020-04-21 清华大学 神经网络及其信息处理方法、信息处理系统
JP6569755B1 (ja) 2018-03-06 2019-09-04 Tdk株式会社 ニューラルネットワーク装置、信号生成方法およびプログラム
CN109460817B (zh) * 2018-09-11 2021-08-03 华中科技大学 一种基于非易失存储器的卷积神经网络片上学习系统
US10726096B2 (en) * 2018-10-12 2020-07-28 Hewlett Packard Enterprise Development Lp Sparse matrix vector multiplication with a matrix vector multiplication unit
EP3889844A4 (en) * 2018-12-29 2021-12-29 Huawei Technologies Co., Ltd. Neural network system and data processing technology
CN109800870B (zh) * 2019-01-10 2020-09-18 华中科技大学 一种基于忆阻器的神经网络在线学习系统
US11003955B1 (en) * 2019-05-03 2021-05-11 Zoox, Inc. Machine-learning model structural merging
US11568200B2 (en) * 2019-10-15 2023-01-31 Sandisk Technologies Llc Accelerating sparse matrix multiplication in storage class memory-based convolutional neural network inference

Also Published As

Publication number Publication date
JP7399517B2 (ja) 2023-12-18
CN110807519A (zh) 2020-02-18
WO2021088248A1 (zh) 2021-05-14
JP2022554371A (ja) 2022-12-28
US20220335278A1 (en) 2022-10-20
CN110807519B (zh) 2023-01-17

Similar Documents

Publication Publication Date Title
KR20220088943A (ko) 멤리스터 기반 신경망 병렬 가속 방법, 프로세서 및 장치
CN108734271B (zh) 神经形态权重单元及其形成的方法以及人工神经网络
Wang et al. In situ training of feed-forward and recurrent convolutional memristor networks
Gao et al. Demonstration of convolution kernel operation on resistive cross-point array
US9646243B1 (en) Convolutional neural networks using resistive processing unit array
Cai et al. Low bit-width convolutional neural network on RRAM
US11087204B2 (en) Resistive processing unit with multiple weight readers
US11531898B2 (en) Training of artificial neural networks
US11544540B2 (en) Systems and methods for neural network training and deployment for hardware accelerators
US20210049448A1 (en) Neural network and its information processing method, information processing system
CN113077829A (zh) 基于忆阻器阵列的数据处理方法、电子装置
CN112836814A (zh) 存算一体处理器、处理系统以及算法模型的部署方法
CN113643175A (zh) 数据处理方法及电子装置
CN112559046A (zh) 数据处理装置及人工智能处理器
Sun et al. Cascaded architecture for memristor crossbar array based larger-scale neuromorphic computing
KR20210143614A (ko) 뉴럴 네트워크를 구현하는 뉴로모픽 장치 및 그 동작 방법
US20210064974A1 (en) Formation failure resilient neuromorphic device
CN112215855B (zh) 基于忆阻器阵列实现图像连通区域判断的方法及电子装置
US11556770B2 (en) Auto weight scaling for RPUs
Zhang et al. Towards resilient deployment of in-memory neural networks with high throughput
KR20230005309A (ko) 아날로그 인공지능 네트워크 추론을 위한 행별 컨볼루션 신경망 매핑을 위한 효율적 타일 매핑
Nowshin Spiking neural network with memristive based computing-in-memory circuits and architecture
Dogaru et al. Fast training of light binary convolutional neural networks using chainer and cupy
Zokaee et al. FeFET-Based Process-in-Memory Architecture for Low-Power DNN Training
US20240037394A1 (en) System and method for neural network multiple task adaptation