CN110998607A - 用于神经网络的系统和方法 - Google Patents

用于神经网络的系统和方法 Download PDF

Info

Publication number
CN110998607A
CN110998607A CN201880051639.9A CN201880051639A CN110998607A CN 110998607 A CN110998607 A CN 110998607A CN 201880051639 A CN201880051639 A CN 201880051639A CN 110998607 A CN110998607 A CN 110998607A
Authority
CN
China
Prior art keywords
index
hash table
codebook
processor
entry
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
CN201880051639.9A
Other languages
English (en)
Other versions
CN110998607B (zh
Inventor
杨端端
孙翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN110998607A publication Critical patent/CN110998607A/zh
Application granted granted Critical
Publication of CN110998607B publication Critical patent/CN110998607B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/08Learning methods
    • G06N3/088Non-supervised learning, e.g. competitive learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/213Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods
    • G06F18/2135Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods based on approximation criteria, e.g. principal component analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering 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
    • 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
    • G06F18/24137Distances to cluster centroïds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/46Descriptors for shape, contour or point-related descriptors, e.g. scale invariant feature transform [SIFT] or bags of words [BoW]; Salient regional features
    • G06V10/462Salient features, e.g. scale invariant feature transforms [SIFT]
    • G06V10/464Salient features, e.g. scale invariant feature transforms [SIFT] using a plurality of salient features, e.g. bag-of-words [BoW] representations
    • 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/762Arrangements for image or video recognition or understanding using pattern recognition or machine learning using clustering, e.g. of similar faces in social networks
    • 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/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/7715Feature extraction, e.g. by transforming the feature space, e.g. multi-dimensional scaling [MDS]; Mappings, e.g. subspace methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Medical Informatics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Information Transfer Between Computers (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

一种用于神经网络的方法包括:接收来自输入向量的输入;基于所述输入确定表索引;以及从多个哈希表中检索哈希表,其中所述哈希表对应于表索引。该方法还包括:基于索引矩阵确定所述哈希表的条目索引,其中所述索引矩阵包括一个或多个索引值,并且所述一个或多个索引值中的每一个对应于所述哈希表中的向量;以及确定所述哈希表中与所述条目索引相对应的条目值。该方法还包括:确定值索引,其中所述哈希表中的向量包括一个或多个条目值,并且其中所述值索引对应于所述向量中的一个或多个条目值中的一个;以及确定层响应。

Description

用于神经网络的系统和方法
技术领域
本公开总体上涉及神经网络。更具体地,本公开涉及一种用于使用码本和哈希表来近似(approximating)神经网络中的层响应的系统和方法。
背景技术
神经网络越来越多地用于执行各种过程,诸如图像识别、数据分析、自然语言处理、意图分类或其他过程。然而,神经网络通常需要大量使用诸如存储容量或处理能力的计算资源,尤其是当神经网络中包括更多层时。
发明内容
技术问题
本公开提供一种用于神经网络的系统和方法。
问题的解决方案
在一个实施例中,提供一种用于神经网络的方法。所述方法包括根据神经网络的加权矩阵生成码本。所述方法还包括:根据码本构建索引矩阵,其中索引矩阵包括一个或多个索引值,并且一个或多个索引值中的每一个对应于码本中的一个位置。所述方法还包括:针对多个输入中的每个输入生成哈希表。
在一个实施例中,提供一种电子装置。该电子装置包括通信接口和存储器。该电子装置还包括至少一个处理器,所述至少一个处理器耦合到通信接口和存储器。至少一个处理器被配置为根据神经网络的加权矩阵生成码本。至少一个处理器还被配置为:根据码本构建索引矩阵,其中索引矩阵包括一个或多个索引值,且一个或多个索引值中的每一个对应于码本中的一个位置。至少一个处理器还被配置为针对多个输入中的每个输入生成哈希表。
在一个实施例中,提供一种体现计算机程序的非暂时性计算机可读介质。所述计算机程序包括计算机可读程序代码,所述计算机可读程序代码在由至少一个处理器执行时致使至少一个处理器:根据神经网络的加权矩阵生成码本;根据码本构建索引矩阵,其中索引矩阵包括一个或多个索引值,并且一个或多个索引值中的每一个对应于码本中的一个位置;并且针对多个输入中的每个输入生成哈希表。
在一个实施例中,提供一种用于神经网络的方法。所述方法包括:接收来自输入向量的输入。所述方法还包括:基于输入确定哈希表。所述方法还包括:从多个哈希表中检索哈希表,其中哈希表对应于表索引。
在一个实施例中,提供一种电子装置。所述电子装置包括通信接口和存储器。所述电子装置还包括至少一个处理器,所述至少一个处理器耦合到通信接口和存储器。至少一个处理器被配置为接收来自输入向量的输入。至少一个处理器还被配置为基于输入确定哈希表。至少一个处理器还被配置为从多个哈希表中检索哈希表,其中哈希表对应于表索引。
在一个实施例中,提供一种体现计算机程序的非暂时性计算机可读介质。所述计算机程序包括计算机可读程序代码,所述计算机可读程序代码在由至少一个处理器执行时致使至少一个处理器:接收来自输入向量的输入;基于输入确定表索引;并且从多个哈希表中检索哈希表,其中哈希表对应于表索引。
通过以下附图、描述和权利要求,其他技术特征对于本领域的技术人员可以是显而易见的。
在进行以下详细描述之前,阐述贯穿本专利文献中使用的某些单词和短语的定义会是有利的。术语“耦合”及其派生词是指两个或更多个元件之间的任何直接或间接的通信,不管这些元件是否彼此物理接触。术语“发送”、“接收”和“通信”以及其派生词涵盖直接和间接通信两者。术语“包括(include/comprise)”及其派生词意味着包括但不限于。术语“或”为包括性的,意味着和/或。短语“与......相关联”及其派生词意味着包括、包括在......内、与......互连、包含、包含在......内、连接到或与......连接、耦合到或与......耦合、可与......通信、与......协作、交错、并列、接近、结合到或与......结合、具有、具有......的性质、与......有关系或具有与......的关系等。术语“控制器”意味着控制至少一个操作的任何装置、系统或其部分。这种控制器可以以硬件或硬件和软件和/或固件的组合来实现。与任何特定控制器相关联的功能性可为集中式的或分布式的,无论是本地还是远程。当短语“……中的至少一个”被与一个项目列表一起使用时,意指可以使用这些列出的项目中的一个或多个的不同组合,并且可能仅仅需要所述列表中的一个项目。例如,“A、B和C中的至少一者”包括以下任何组合:A;B;C;A和B;A和C;B和C;以及A和B和C。
此外,下文所描述的各种功能可以由一个或多个计算机程序实现或支持,每个计算机程序由计算机可读程序代码形成并体现于计算机可读介质中。术语“应用程序”和“程序”是指适于以合适的计算机可读程序代码实现的一个或多个计算机程序、软件部件、指令集、规程、功能、对象、类、实例、相关数据或其一部分。短语“计算机可读程序代码”包括任何类型的计算机代码,包括源代码、目标代码和可执行代码。短语“计算机可读介质”包括能够被计算机访问的任何类型的介质,例如只读存储器(ROM)、随机访问存储器(RAM)、硬盘驱动器、光盘(CD)、数字视频光盘(DVD)或任何其他类型的存储器。“非暂时性”计算机可读介质排除传输暂时性电信号或其他信号的有线、无线、光学或其他通信链路。非暂时性计算机可读介质包括数据可以被永久地存储的介质和数据可以被存储并且稍后被重写的介质,诸如可重写光盘或可擦除存储器装置。
贯穿本专利文献提供了其他某些词语和短语的定义。本领域的普通技术人员应理解,在许多情况(如果不是大多数情况)下,此类定义适用于此类所定义词语和短语的先前以及将来使用。
附图说明
为了更加完整地理解本公开以及其优点,现在结合附图参考以下描述,在附图中:
图1示出根据本公开的实施例的示例性通信系统;
图2示出根据本公开的实施例的示例性电子装置服务器;
图3示出根据本公开的实施例的示例性电子装置;
图4示出根据本公开的实施例的神经网络层结果加速过程的框图;
图5示出根据本公开的实施例的码本和索引矩阵创建过程的流程图;
图6示出根据本公开的实施例的码本和索引矩阵生成过程的框图;
图7示出根据本公开的实施例的展示示例性加权矩阵、码本和索引矩阵的码本和索引矩阵生成过程的示例;
图8示出根据本公开的实施例的哈希表创建过程的框图;
图9示出根据本公开的实施例的使用码本和哈希表的神经网络层响应过程的流程图;并且
图10示出根据本公开的实施例的条目值检索过程的一个示例的框图。
具体实施方式
下文所论述的图1至图10以及本专利文献中的用于描述本公开的原理的实施例仅仅是为了举例说明且不应以任何方式解释为限制本公开的范围。本领域的技术人员将理解,本公开的原理可由任何经合适布置的无线通信系统实施。
根据本公开的实施例,提供了用于提高神经网络的效率的各种方法。深度神经网络可以执行各种功能,诸如图像识别、数据分析、自然语言处理、意图分类或其他功能。从用户接收语音数据并基于所述语音数据激活程序功能(诸如执行用户口头请求的Web搜索)的虚拟助手也可以使用神经网络来处理语音数据。虚拟助手可以使用神经网络来确定用户装置上话语所针对的应用程序。然后,虚拟助手可以使用神经网络来确定话语所针对的功能或应用程序。然后可以触发该应用程序内的功能。这只是如何使用深度神经网络的一个示例。
神经网络可以基于输入的加权和生成输出,然后将所述输出通过激活函数传递。在对乘以权重的输入求和之后,激活功能可以确定输出。本领域技术人员将理解,取决于神经网络的配置和将通过神经网络实现的结果,可以使用各种激活功能。
可以在多层感知器(MLP)中组织输入、权重和输出,MLP中存在一个输入层、一个或多个隐藏层以及一个输出层。多个输入或输入向量组成输入层,多个隐藏层神经元驻留在一个或多个隐藏层中,并且可以针对输出层生成一个或多个输出。神经网络可以是前馈(feedforward)网络,其中输入从输入层传递到隐藏层。如果神经网络具有多个隐藏层,则可以通过激活或传递函数处理输入,以将新输入提供给下一个隐藏层,从隐藏层到隐藏层,直到最终隐藏层将最终输出传递到输出层为止。加权矩阵可以位于神经网络中任何相邻层之间。加权矩阵用于将权重应用于馈送到神经网络中的输入。在训练神经网络时,可以基于计算出的错误率来调整权重,以提高神经网络的准确性。将理解,前馈神经网络仅仅是神经网络的一种类型,并且本公开不仅仅限于前馈网络。
图1示出根据本公开的示例性系统100。图1所示的系统100的实施例仅用于说明。可在不脱离本公开的范围的情况下使用系统100的其他实施例。
系统100包括网络102,所述网络有助于系统100中的各种部件之间的通信。例如,网络102可在网络地址之间传达互联网协议(IP)分组、帧中继帧、异步传送模式(ATM)单元或其他信息。网络102在一个或多个位置处包括一个或多个局域网(LAN)、城域网(MAN)、广域网(WAN)、全球网(诸如互联网)的所有或一部分、或一个或多个任何其他通信系统。
网络102有助于各种服务器104与各种客户端装置106至114之间的通信。服务器104可表示一个或多个服务器。每个服务器104包括可向一个或多个客户端装置提供计算服务的任何合适的计算或处理装置。每个服务器104可例如包括一个或多个处理装置、存储指令和数据的一个或多个存储器以及有助于通过网络102的通信的一个或多个网络接口。
每个客户端装置106至114表示通过网络102与至少一个服务器或其他计算装置交互的任何合适的计算或处理装置。在此示例中,客户端装置106至114包括台式计算机106、移动电话或移动装置108(诸如智能电话)、个人数字助理(PDA)110、膝上型计算机112以及平板计算机114。然而,任何其他或额外客户端装置可用于系统100中。
在此示例中,一些客户端装置108至114与网络102间接通信。例如,客户端装置108和110(分别为移动装置108和PDA 110)经由一个或多个基站116(诸如蜂窝式基站或eNodeB(eNB))通信。移动装置108包括智能电话和功能电话。智能电话表示一类移动装置108,其为具有移动操作系统以及用于声音、短消息服务(SMS)和互联网数据通信的集成的移动宽带蜂窝式网络连接的手持装置。功能电话表示一类移动装置108,其为基本电话与智能电话之间的中点。除基本的多媒体和互联网能力外,功能电话通常还具有语音呼叫和文本消息收发功能。另外,客户端装置112和114(分别为膝上型计算机和平板计算机)经由一个或多个无线接入点118(诸如电子电气工程师学会(IEEE)802.11无线接入点)通信。应注意,这些仅用于说明且每个客户端装置106至114可直接与网络102通信或经由任何合适的中间装置或网络而间接与网络102通信。
在某些实施例中,移动装置108(或任何其他客户端装置106至114)可将信息安全地且有效地传输到另一装置,例如像服务器104。移动装置108(或任何其他客户端装置106至114)可以接收待处理的信息作为对神经网络的输入。这样的信息可以包括图像数据、语音/音频数据、地理位置数据、用户信息或由移动装置108接收或存储在移动装置上的其他数据。移动装置108(或任何其他客户端装置106至114)可以触发自身与服务器104之间的信息传输。移动装置108(或任何其他客户端装置106至114)可以提供由神经网络生成的实时结果。
尽管图1示出系统100的一个示例,但可对图1进行各种改变。例如,系统100可以包括呈任何合适的布置的任何数量的每一部件。一般地,计算和通信系统呈现广泛多种配置,且图1不会将本公开的范围限制到任何特定配置。虽然图1示出其中可使用本专利文档中所公开的各种特征的一个操作环境,这些特征可用于任何其他合适的系统中。
本公开中所提供的过程和系统允许客户端装置或服务器提供由神经网络处理的结果。在某些实施例中,客户端装置(客户端装置106至114)可以确定神经网络结果。在某些实施例中,客户端装置(客户端装置106至114)接收待包括的数据作为对神经网络的输入,并且通过网络102将数据传输到服务器104,所述服务器使用神经网络确定输出。
图2和图3示出根据本公开的实施例的计算系统中的示例性装置。具体地,图2示出示例性服务器200,并且图3示出示例性电子装置300。服务器200可表示图1中的服务器104,并且电子装置300可表示图1的客户端装置106至114中的一个或多个。
服务器200可表示一个或多个本地服务器或一个或多个神经网络服务器,以用于通过训练的神经网络处理接收到的输入。如图2所示,服务器200包括总线系统205,所述总线系统支持在至少一个处理器210、至少一个存储装置215、至少一个通信接口220与至少一个输入/输出(I/O)单元225之间的通信。
处理器210执行可存储在存储器230中的指令。处理器210可以包括呈任何合适的布置的任何合适数量和类型的处理器或其他装置。示例性类型的处理器210包括微处理器、微控制器、数字信号处理器、现场可编程门阵列、应用专用集成电路和离散电路。
存储器230和永久存储装置235是表示能够存储和有助于信息(诸如数据、程序代码、神经网络输入和其他数据或在临时或永久基础上其他合适的信息)的检索的任何结构的存储装置215的示例。存储器230可表示随机存取存储器或任何其他合适的易失性或非易失性存储装置。永久存储装置235可含有支持更长期数据存储的一个或多个部件或装置,例如只读存储器、硬盘驱动器、闪存存储器或光盘。
通信接口220支持与其他系统或装置的通信。例如,通信接口220可以包括有助于通过网络102的通信的网络接口卡或无线收发器。通信接口220可支持通过任何合适的物理或无线通信链路的通信。
I/O单元225允许数据的输入和输出。例如,I/O单元225可以通过键盘、鼠标、小键盘、触摸屏或其他合适的输入装置提供用于用户输入的连接。I/O单元225还可将输出发送到显示器、打印机或其他合适的输出装置。
应注意,虽然图2被描述为表示图1的服务器104,但是相同或类似结构可用于各种客户端装置106至114中的一个或多个中。例如,台式计算机106或膝上型计算机112可与图2所示的服务器具有相同或类似结构。
图3示出根据本公开的实施例的电子装置300。图3所示的电子装置300的实施例仅用于说明并且可在不脱离本公开的范围的情况下使用其他实施例。电子装置300可呈现广泛多种配置,并且图3不会将本公开的范围限制到电子装置的任何特定实现方式。在某些实施例中,图1的客户端装置104至114中的一个或多个可以包括与电子装置300相同或类似的配置。
在某些实施例中,电子装置300可与数据传送应用一起使用,诸如提供神经网络输入或基于神经网络结果或输出激活功能。例如,电子装置300可以接收诸如语音数据的信息,将数据传送到服务器200,通过神经网络从服务器200接收指示处理信息的结果的响应,并且根据结果激活电子装置300上的功能。电子装置300可以是移动通信装置,例如像无线终端、台式计算机(类似于图1的台式计算机106)、移动装置(类似于图1的移动装置108)、PDA(类似于图1的PDA 110)、膝上型计算机(类似于图1的膝上型计算机112)、平板计算机(类似于平板计算机114)等。
如图3所示,电子装置300包括天线305、通信单元310、发送(TX)处理电路315、麦克风320和接收(RX)处理电路325。通信单元310可以包括例如RF收发器、蓝牙收发器、WI-FI收发器、ZIGBEE、红外等。电子装置300还包括扬声器330、处理器340、I/O接口345、输入端350、显示器355、存储器360、传感器365和生物扫描仪370。存储器360包括操作系统(OS)361、应用程序362和用户数据363。
通信单元310从天线305接收从网络102(诸如Wi-Fi、蓝牙、蜂窝、第5代(5G)、长期演进(LTE)、LTE高级(LTE-A)、WiMAX或任何其他类型的无线网络)的接入点(诸如基站、Wi-Fi路由器、蓝牙装置)发送的传入RF信号,诸如蓝牙或WI-FI信号。通信单元310可对传入RF信号进行下变频转换,以生成中频或基带信号。将中频或基带信号发送到RX处理电路325,所述RX处理电路通过对基带或中频信号进行滤波、解码或数字化或其组合来生成经处理的基带信号。RX处理电路325将经处理的基带信号发送到扬声器330(诸如针对语音数据)或处理器340以供进一步处理(诸如针对网络浏览数据和汇款)。
TX处理电路315从麦克风320接收模拟或数字语音数据或从处理器340接收其他传出基带数据。传出基带数据可以包括网络数据、电子邮件或交互式视频游戏数据。TX处理电路315对传出基带数据进行编码、多路复用、数字化或其组合,以生成经处理的基带或中频信号。通信单元310从TX处理电路315接收传出经处理的基带或中频信号并且将基带或中频信号上变频转换为经由天线305发送的RF信号。
处理器340可以包括一个或多个处理器或其他处理装置,并且执行存储在存储器360中的OS 361以便控制电子装置300的整体操作。例如,处理器340可以根据公知的原理,通过通信单元310、RX处理电路325和TX处理电路315来控制正向信道信号的接收以及反向信道信号的发送。处理器340还能够执行驻留在存储器360中的其他应用程序362,诸如,用于汇款、欺诈检测等的一个或多个应用程序。
处理器340可以执行存储在存储器360中的指令。处理器340可以包括呈任何合适的布置的任何合适数量和类型的处理器或其他装置。例如,在一些实施例中,处理器340包括至少一个微处理器或微控制器。示例性类型的处理器340包括微处理器、微控制器、数字信号处理器、现场可编程门阵列、应用专用集成电路和离散电路。
处理器340还能够执行驻留在存储器360中的其他过程和程序,诸如通过提供图像捕获和处理的接收、存储和定时指示的操作。处理器340可以根据需要执行过程来将数据移入或移出存储器360。在一些实施例中,处理器340被配置成基于OS 361或响应于从eNB或操作员接收的信号来执行多个应用程序362。处理器340还耦合到I/O接口345,所述I/O接口向电子装置300提供连接到其他装置(诸如客户端装置106至114)的能力。I/O接口345是这些附件与处理器340之间的通信路径。
处理器340还耦合到输入端350和显示器355。电子装置300的操作员可使用输入端350来将数据或输入键入到电子装置300中。输入端350可以是键盘、触摸屏、鼠标、轨迹球、语音输入端或能够充当用户接口以允许用户与电子装置300交互的其他装置。例如,输入端350可以包括语音识别处理,由此允许用户经由麦克风320输入语音命令。对于另一示例,输入端350可以包括触摸面板、(数字)笔传感器、键或超声输入装置。触摸面板可以电容性方案、压敏方案、红外方案或超声方案当中的至少一个方案识别例如触摸输入。输入端350可以通过向处理器340提供额外输入而与传感器365和/或相机相关联。在某些实施例中,传感器365包括惯性传感器(诸如加速度计、陀螺仪和磁力仪)、光学传感器、运动传感器、相机、压力传感器、心率传感器、测高仪、呼吸传感器(诸如麦克风320)等。输入端350还可以包括控制电路。在电容性方案中,输入端350可以识别触摸或接近度。显示器355可以是液晶显示器(LCD)、发光二极管(LED)显示器、光学LED(OLED)、有源矩阵OLED(AMOLED)或能够诸如从网站、视频、游戏、图像等渲染文本和/或图形的其他显示器。
存储器360耦合到处理器340。存储器360的一部分可以包括随机存取存储器(RAM),并且存储器360的另一部分可以包括快闪存储器或其他只读存储器(ROM)。
存储器360可以包括表示能够存储和有助于信息(诸如数据、程序代码和/或在临时或永久基础上其他合适的信息)的检索的任何结构的永久存储装置(未示出)。存储器360可以包含支持更长期数据存储的一个或多个部件或装置,诸如只读存储器、硬盘驱动器、闪存存储器或光盘。存储器360还可以包含用户数据363,所述用户数据包括简档数据和用户历史数据。用户数据363还可以包含从传感器365接收的数据。用户数据363可以是传记和生物统计数据。
电子装置300进一步包括一个或多个传感器365,所述一个或多个传感器可度量物理量或检测电子装置300的启动状态并且将所度量或所检测信息转换成电信号。在某些实施例中,传感器365包括惯性传感器(诸如加速度计、陀螺仪和磁力仪)、光学传感器、运动传感器、相机、压力传感器、心率传感器、测高仪、呼吸传感器(诸如麦克风320)等。例如,传感器365可以包括用于触摸输入的一个或多个按钮(诸如位于耳机或电子装置300上)、相机、姿势传感器、陀螺仪或陀螺仪传感器、气压传感器、磁性传感器或磁力计、加速度传感器或加速度计、握持传感器、接近传感器、颜色传感器、生物物理传感器、温度/湿度传感器、照度传感器、紫外光(UV)传感器、肌电(EMG)传感器、脑电(EEG)传感器、心电(ECG)传感器、红外(IR)传感器、超声波传感器、虹膜传感器、指纹传感器等。传感器365可进一步包括用于控制包括在其中的传感器中的至少一个的控制电路。传感器365可以用于确定电子装置300的取向和面向方向以及地理位置。这些传感器365中的任一个可以位于电子装置300内或与电子装置300通信的另一电子装置内。
尽管图2和图3示出计算系统中的装置的示例,但可对图2和图3进行各种改变。例如,图2和图3中的各种部件可被组合、进一步细分或省略,并且可根据特定需要添加额外部件。作为特定示例,处理器340可被分成多个处理器,诸如一个或多个中央处理单元(CPU)和一个或多个图形处理单元(GPU)。另外,置于计算和通信网络,电子装置和服务器可呈现广泛多种配置,并且图2和图3不会将本公开限制为任何特定电子装置或服务器。
图4示出根据本公开的实施例的神经网络层结果加速过程400的示例性框图。服务器200的处理器210或电子装置300的处理器340可以执行过程400。可以接收输入向量402以便在神经网络中进行处理。可以根据能够由神经网络处理的任何种类的数据(诸如图像数据、语音数据或其他数据)创建输入向量402。如本文所述,处理器将包括多个权重值的加权矩阵404压缩成维度小于加权矩阵404的压缩矩阵或码本406。码本406可以具有多个子向量408,每个子向量408包括一个或多个权重。
在其他神经网络配置中,输入向量402中的输入将针对加权矩阵施加以获得输出向量。在其他神经网络配置中,原始矩阵W的大小为m*n。输入向量x是n维向量,所述向量可以包括x∈[0,1]中的所有值。将理解的是,任何值范围都可以缩放到输入向量的范围。输出向量y是m维向量,可以通过y=x*W’计算所述向量。yi(i=0,1,...m-1)可以使用公式(1)来计算:
Figure BDA0002380840220000111
公式(1)显示了如何使用原始加权矩阵404获得输出向量。在将原始加权矩阵404压缩成码本406之后,处理器使用码本和索引来近似原始加权矩阵404,即W,并且处理器还可以使用码本和索引来计算输出向量y,从而降低存储需求并提高神经网络的速度,而无需牺牲准确性。
为了近似原始加权矩阵404,处理器将输入向量402拆分成子向量410。处理器然后将每个子向量410乘以码本406的子向量408中的一个,以产生多个乘积412。如本公开中所描述的,可以提前预先计算所有可能的输入与码本的相乘以创建一系列存储所有可能值的哈希表。然后,处理器可以从哈希表中检索存储值,以进一步提高神经网络的速度和效率。在计算出多个乘积412之后,处理器将多个乘积412中的某些乘积求和在一起,以近似输入向量402与原始加权矩阵404的行的点积的值。然后,该近似值可以用于层响应416中的多个值414中的一个。在一些实施例中,处理器可以将近似值输入到激活函数中以生成用于层响应416的多个值414中的一个值。
图5示出根据本公开的实施例的码本和索引矩阵创建过程500的流程图。图5不会将本公开的范围限制到任何特定实施例。尽管过程500描绘一系列顺序步骤,除非明确说明,否则不应从该顺序中得出有关特定执行次序,连续地执行步骤或其部分而不是同时或以重叠的方式,或者仅仅执行所描绘步骤而没有居间或中间步骤的发生。为了便于解释,相对于图2的服务器200的处理器210和图3的电子装置300的处理器340描述了创建码本和索引矩阵的方法。然而,过程500可以与任何其他合适的系统一起使用。
在框502处,处理器获得原始加权矩阵。原始加权矩阵可以具有任意数量的行,每行包括权重向量。在框504处,处理器通过对原始加权矩阵的每一行进行斩波来创建多个子向量。在一些实施例中,可以从加权矩阵中斩波出每一行,其中每一行是子向量。在某些实施例中,加权矩阵的每一行可以被斩波成子向量,每个子向量包括来自加权矩阵的某一行的一定数量的权重。在框506处,处理器对多个子向量执行聚类算法,以将子向量与具有相似权重值的其他子向量分组。将理解的是,可以使用各种聚类算法来聚集子向量,诸如K均值聚类或其他方法。在框508处,处理器针对每组子向量确定一个或多个质心。在框510处,处理器将一个或多个质心布置并存储在诸如码本406的码本内。
在步骤512处,处理器创建索引矩阵。索引矩阵包括与码本的索引相对应的索引值。每个码本索引可以包含子向量组中的一组的一个或多个质心中的每一个。处理器配置索引矩阵的维度,使得每个索引值的位置对应于原始加权矩阵中的一个或多个值的位置或从原始加权矩阵创建的子向量中的一个。例如,如果原始加权矩阵的行被斩波成二值子向量,则码本的每个索引可以包括两个质心,这两个质心是来自原始加权矩阵的两个质心子向量的聚类的结果。
例如,如果原始加权矩阵的第一行的前两个值是0.35和0.21,则这两个值可以组成一个子向量,所述子向量然后与具有类似权重值的其他二值子向量聚类。可以从二值子向量的每个聚类生成两个质心。在0.35和0.21是原始加权矩阵的第一行的前两个值的情况下,索引矩阵的第一行的第一值可以指示码本的索引,其中存储由0.35、0.21产生的质心以及与这些值聚类的其他值。在此示例中,如果索引矩阵的第一行的第一值是9,则由0.35、0.21和其他聚类值创建的质心位于码本中的索引9处(码本第10行)。
索引矩阵可以具有与原始加权矩阵相同的行数,但是索引矩阵的每一行中的索引值的数量可以小于原始加权矩阵的每一行中的权重数量。例如,如果将每行包括1024个值的加权矩阵划分成二值子向量,则索引矩阵的每一行可以包括512个索引值,每个二值子向量一个值。
尽管图5示出根据本公开的实施例的码本和索引矩阵创建过程,但是可以对图5进行各种改变。例如,尽管示出为一系列步骤,但是图5中的各个步骤可以重叠、并行发生、以不同次序发生或多次发生。
图6示出根据本公开的实施例的码本和索引矩阵生成过程600的框图。服务器200的处理器210或电子装置300的处理器340可以执行过程600。码本和索引矩阵生成过程600的实施例仅用于说明并且可在不脱离本公开的范围的情况下使用其他实施例。
码本和索引矩阵生成过程600包括具有多个加权值的加权矩阵602。处理器将加权矩阵斩波或分离成一个或多个子向量604。处理器对多个子向量执行聚类算法,以将子向量与具有相似权重值的其他子向量进行分组,并且处理器从聚类确定一个或多个质心。将理解的是,可以使用各种聚类算法来聚集子向量,诸如K均值聚类或其他方法。处理器将一个或多个质心布置并存储在码本606中。
处理器还创建索引矩阵608,以用码本606中的对应索引标记子向量,在所述索引中可以找到与子向量相关联的一个或多个质心。
图7示出根据本公开的实施例的展示示例性加权矩阵702、码本704和索引矩阵706的码本和索引矩阵生成过程700的示例。服务器200的处理器210或电子装置300的处理器340可以执行过程700。图7中所示的实施例仅仅用于说明。可在不脱离本公开的范围的情况下使用过程700的其他实施例。例如,加权矩阵702、码本704和索引矩阵706可以包括与图7所示的值不同的值,并且可以具有任何其他维度或大小。
加权矩阵702包括多个权重值。加权矩阵702可以具有各种维度或大小,从而需要服务器200、电子装置300或另一系统或装置中的各种存储空间量。例如,加权矩阵702可以是包括呈浮点格式的权重值的1024×1024矩阵。在那种情况下,加权矩阵702将使用超过四百万字节的存储空间(1024*1024*4)。
处理器可以将加权矩阵分离成子向量,以便对子向量进行聚类,以确定要用于码本704的质心。如图7所示,处理器将加权矩阵702分离成每个具有两个权重值的子向量。然后,处理器对子向量进行聚类,从聚类的子向量确定一个或多个质心,并且将一个或多个质心存储在码本704的每一行中。在图7所示的示例中,码本704的第一行包括从加权矩阵702的包括权重值0.21和0.54的子向量708与加权矩阵702的包括权重值0.24和0.65的至少另一子向量710创建的两个质心。在此示例中,处理器至少对子向量708和710进行聚类,确定两个质心,并且将这两个质心存储在码本704的第一行中,这两个质心具有值0.23和0.61。
索引矩阵706记录码本704的索引,其中针对加权矩阵702的用于创建质心的每个子向量,将质心存储在码本704的该特定索引中。例如,对于具有至少从子向量708和子向量710生成的质心的码本704的第一行,处理器将索引值0(指示码本704的第一行)存储在索引矩阵中与子向量708和710的位置相对应的位置。如图7所示,子向量708定位为加权矩阵702的第二行中的倒数第二子向量,并且子向量710是加权矩阵702的第二行的最后一个子向量。因此,处理器将索引矩阵706中的索引值0存储在第二行的倒数第二索引和索引矩阵706的第二行的最后一个索引处,以匹配加权矩阵702中的子向量708和710的位置。
在图7所示的示例中,处理器用从加权矩阵702的包括权重值0.67和0.83的子向量712与加权矩阵702的包括权重值0.65和0.84的至少另一子向量714创建的两个质心填充码本704的第二行。处理器至少对子向量712和714进行聚类,从聚类的子向量确定两个质心,并且将这两个质心存储在码本704的第二行中,这两个质心具有值0.66和0.83。
索引矩阵706记录与子向量712和714相关联的质心的索引。处理器将索引值1(指示码本704的第二行)存储在索引矩阵中与子向量712和714的位置相对应的位置中。如图7所示,子向量712是加权矩阵702的第二行中的第一子向量,并且子向量714是加权矩阵702的最后一行的最后一个子向量。因此,处理器将索引矩阵706中的索引值1存储在第二行的第一索引和索引矩阵706的最后一行的最后一个索引处,以匹配加权矩阵702中的子向量712和714的位置。
在图7所示的示例中,处理器用从加权矩阵702的包括权重值0.65和0.74的子向量716与加权矩阵702的包括权重值0.65和0.72的至少另一子向量718创建的两个质心填充码本704的第三行。处理器至少对子向量716和718进行聚类,从聚类的子向量确定两个质心,并且将这两个质心存储在码本704的第三行中,这两个质心具有值0.65和0.73。
索引矩阵706记录与子向量716和718相关联的质心的索引。处理器将索引值2(指示码本704的第三行)存储在索引矩阵中与子向量716和718的位置相对应的位置中。如图7所示,子向量716是加权矩阵702的第一行中的倒数第二子向量,并且子向量718是加权矩阵702的最后一行的倒数第二子向量。因此,处理器将索引矩阵706中的索引值2存储在第一行的倒数第二索引和索引矩阵706的最后一行的倒数第二索引处,以匹配加权矩阵702中的子向量716和718的位置。
在图7所示的示例中,处理器用从加权矩阵702的包括权重值0.95和0.97的子向量720与加权矩阵702的包括权重值0.84和0.94的至少另一子向量722创建的两个质心填充码本704的最后一行。处理器至少对子向量720和722进行聚类,从聚类的子向量确定两个质心,并且将这两个质心存储在码本704的最后一行中,这两个质心具有值0.90和0.95。
索引矩阵706记录与子向量720和722相关联的质心的索引。处理器将索引值255(指示码本704的最后一(第256)行)存储在索引矩阵中与子向量720和722的位置相对应的位置中。如图7所示,子向量720是加权矩阵702的第四行中的第一子向量,并且子向量722是加权矩阵702的第一行的最后一个子向量。因此,处理器将索引矩阵706中的索引值255存储在第四行的第一索引和索引矩阵706的第一行的最后一个索引处,以匹配加权矩阵702中的子向量720和722的位置。将理解的是,可以对来自加权矩阵702的两个以上的子向量进行聚类以生成存储在码本704中的质心。图7示出了这样的情况,索引矩阵706的第三行的倒数第二索引包括值255,从而指示加权矩阵702的包括权重值0.94和0.94的子向量也与子向量720和722一起聚类,以计算码本704的最后一行中的质心。
由于索引矩阵706记录的索引值可以对应于加权矩阵702的一个以上的值,并且由于处理器可以将索引值存储为字节数格式而不是加权矩阵702所使用的浮点格式,因此索引矩阵706的大小可以比加权矩阵702小得多。例如,如果图7所示的加权矩阵702是存储浮点值的1024×1024矩阵,则索引矩阵706可以每行包括加权矩阵702的一半的值,因为索引矩阵706中的每个索引值对应于加权矩阵702中的两个权重值。在该示例中,索引矩阵706可以是1024×512矩阵。由于索引值的大小可能仅为一个字节,因此与1024×1024加权矩阵的四百万字节相比,索引矩阵706的大小可能刚好超过一百万字节的一半(1024*512*1)。
与加权矩阵702相比,码本的大小也可以小得多。例如,图7所示的代码本704可以具有256行,每行两个浮点值,仅使用2048字节的存储空间(256*2*4)。因此,码本704和索引矩阵706所使用的存储空间小于加权矩阵。即使在存储的哈希表中,每个哈希表均是码本乘以每个可能的输入值(诸如0至1之间的输入值),但所有哈希表和索引矩阵所使用的存储空间仍然远远小于加权矩阵所使用的存储空间。
尽管图7示出过程700的一个示例,但可对图7进行各种改变。例如,过程700可以包括各种维度和大小的加权矩阵、码本和索引矩阵,并且每个矩阵包括各种权重值、质心值和索引值。通常,取决于所使用的神经网络配置,加权矩阵以及由此创建的码本和索引矩阵可以具有多种配置,并且图7不会将本公开的范围限制到任何特定配置。
图8示出根据本公开的实施例的哈希表创建过程800的框图。服务器200的处理器210或电子装置300的处理器340可以执行过程800。除了本公开所提供的更有效的存储之外,为了为神经网络提供进一步提高的速度,处理器可以创建哈希表并将其存储在存储器中,所述哈希表包含每个可能的输入乘以码本。这允许如下的能力:对每个输入值查找哈希表并检索输入值乘以适当权重,从而减少了神经网络处理输入的时间,因为点积运算的乘法步骤将无需执行即可产生层结果。
输入向量x可以是n维向量,所述向量包括神经网络的输入值,例如x∈[0,1]中的所有值。可以提前为所有输入值生成哈希表。当接收到新输入向量以通过神经网络处理时,可以将输入向量中的输入缩放到[0,1)范围,以使输入值与所生成哈希表匹配。由神经网络产生的输出向量y包括n个值,分别表示为y0、y1、......、yn-1。以yi为例,在原始加权矩阵中,通过计算输入向量x与W中第i行例如wi之间的点积获得yi。根据本公开的实施例,可以通过预先计算一系列哈希表来使用索引矩阵和码本近似wi。每个哈希表可以包含通过将范围(0,1)中的值乘以码本中每个质心而产生的乘积。因此,无论输入向量如何,都可以通过查找哈希表来获得x与任何码本条目之间的乘法,而无需在运行时对输入执行每个乘法步骤。
如图8所示,处理器可以使用码本802来创建每个哈希表。处理器通过将码本802乘以0与1之间的每个可能的输入值(诸如[0,1)的范围)来创建哈希表。处理器可以为0.01至0.99中的每个值生成哈希表。这导致哈希表包括的值等于输入中的一个乘以码本中所存储的每个权重值(质心)。如图8所示,处理器将码本802乘以0.01以创建第一哈希表804。处理器将码本802乘以0.02以创建第二哈希表806。该过程一直持续到处理器将码本802乘以0.99以创建第九十九个哈希表808,以创建总共99个哈希表。
图9示出根据本公开的实施例的使用码本和哈希表的层响应过程900的流程图。图9不会将本公开的范围限制到任何特定实施例。尽管过程900描绘一系列顺序步骤,除非明确说明,否则不应从该顺序中得出有关特定执行次序,连续地执行步骤或其部分而不是同时或以重叠的方式,或者仅仅执行所描绘步骤而没有居间或中间步骤的发生。为了便于解释,相对于图2的服务器200的处理器210和图3的电子装置300的处理器340描述了过程900。然而,过程900可以与任何其他合适的系统一起使用。
在框902处,处理器接收来自输入向量的输入。输入向量可以是包含任意数量值的n维向量。在一些实施例中,输入向量的值被缩放到[0,1)的范围。如本文所述,在原始加权矩阵中,将通过计算输入向量x与W中第i行(例如wi)之间的点积获得yi。如本文所述,可以使用一系列索引和码本来近似wi。可以预先计算一系列哈希表,所述哈希表包含范围(0,1)的任何值与码本之间的所有乘积,总共99个哈希表。根据本公开的实施例,在将加权矩阵压缩到码本中之后,wi被一系列索引idx0、idx1、......、idxk-1代替。码本中的每个条目可以是sd维向量,其中k*sd=n。例如,码本可以是3维向量,其中码本的每个条目包括三个质心。
通过检索存储在哈希表中的值,可以在不降低神经网络准确性的情况下近似本公开的公式(1),所述哈希表包括已经乘以码本的每个可能输入,所述码本包括从原始加权矩阵的聚类权重创建的质心。可以查询哈希表以获得类似于xjwij的近似值,其中j∈[0,n-1]。
在框904处,处理器根据在框902中接收的输入确定哈希表索引或表索引。表索引指示根据神经网络,哈希表中的哪一个包括所接收输入的值乘以适当权重。例如,如果所接收输入是输入向量中的第一输入,则值可以是所接收输入与原始加权矩阵的w11的乘积的近似值。表索引T_idx可由公式(2)确定:
T_idx=xj*100......(2)
例如,如果所接收输入值为0.45,则T_idx=0.45*100。因此,在该示例中,表索引为45。在框906处,处理器检索与哈希表索引相对应的哈希表。在本公开的一些实施例中,可以相对于输入值乘以码本而对哈希表进行排序以创建哈希表。因此,使用T_idx,处理器可以检索与在框902中接收到的输入值相对应的哈希表。使用输入为0.45的示例,哈希表以前是通过将0.45乘以码本来创建的。该哈希表可以被标记为哈希表45,并且处理器在框906处检索哈希表45。
在框908处,处理器使用索引矩阵确定输入的条目索引。索引矩阵是根据本公开的实施例。条目索引是哈希表的索引,在所述哈希表中存储的值用于在框902中接收到的输入值乘以适当权重。对于位置j,条目索引E_idx是(idx0、idx1、......、idxk-1)中的一个。公式(3)显示了确定斩波位置的方法:
u=j/sd......(3)
在公式(3)中,j是输入向量的索引,并且sd是码本的维数,其中sd可以指示在码本的每个条目索引中存储了多少个值。使用在框902中接收到的输入值为0.45的示例,假设0.45是输入向量中的第28个输入(输入向量索引27),并且sd=3。在此示例中,u=27/3,因此u=9。一旦处理器确定了u、条目索引E_idx,处理器就可以通过公式(4)确定索引:
E_idx=idxu......(4)
因此,E_idx是表T_idx中的第u个条目。如本文所述,idx还指示在创建码本和哈希表时创建的索引矩阵的索引。因此,处理器可以通过检索索引矩阵中等于u的索引处的索引值来获得E_idx。使用u=9的示例,如果将值50存储在索引矩阵的第9个索引中,则E_idx=50,从而指示要用于近似层响应的值存储在第45个哈希表的条目索引50(或第51行)处。
在框910处,处理器基于哈希表的维度(也是码本的维度)确定输入的值索引。与哈希表中的每个条目索引相对应的每个条目是sd维向量,使得哈希表中的每个条目可以具有一个以上存储在条目中的值。确定条目索引E_idx在哈希表中提供了可以找到要使用的值的条目,但是,当该条目中存储了多个值时,处理器可以使用值索引V_idx来确定条目中的哪个值是适当值。处理器可以通过公式(5)确定V_idx:
V_idx=j%sd......(5)
在公式(5)中,“%”表示模运算符。在处理器确定了三个索引之后,处理器可以使用表T_idx中第E_idx个条目的第V_idx个值来近似xjwij。使用输入值为0.45、E_idx=50、j=27且sd=3的示例,则V_idx=27%3,因此V_idx=0。在此示例中,其中哈希表中的每个条目是3维向量,要用于近似层响应的条目值是存储在哈希表45的条目索引50中的三个值中的第一个。将理解的是,在使用一维向量的情形下,可以从公式中去除sd,或者可以跳过公式(5),因为在此类情形下每个条目索引将仅具有一个值。
在过程900的框912处,处理器从哈希表中检索与条目索引和值索引相对应的条目值。处理器可以将检索到的条目值添加到条目值的向量。在判定框914处,处理器确定是否已针对特定层响应值处理了输入向量中的所有输入。如果否,则过程900返回框902以处理来自输入向量的另一输入。如果在判定框914处,处理器确定输入向量中的所有输入均已被处理,并且从哈希表中检索到对应的条目值,则过程900移至框916。在框916处,处理器对在过程900期间检索到的每个条目值执行求和运算,以确定层响应。在一些实施例中,求和运算的结果可以被应用于激活函数以确定层响应的值。
尽管图9示出根据本公开的实施例的使用码本和哈希表的层响应过程,但是可以对图9进行各种改变。例如,尽管示出为一系列步骤,但是图9中的各个步骤可以重叠、并行发生、以不同次序发生或多次发生。
图10示出根据本公开的实施例的条目值检索过程1000的一个示例的框图。服务器200的处理器210或电子装置300的处理器340可以执行过程1000。在图10所示的示例中,将通过神经网络处理包括512个输入值的输入向量1002。在图10中,处理器已经将原始加权矩阵压缩到码本1004中,并且处理器已经创建了索引矩阵1006。图10中的示例示出索引矩阵1006的一行。处理器还已经通过以下方式来创建一系列哈希表1008:将码本1004与[0.01,0.99]范围内的每个值相乘以创建99个哈希表。
为了确定层响应,处理器从哈希表中检索哈希表中与输入向量1002中的每个输入相对应的条目值,并且处理器将条目值包括在求和向量1010中。在处理了输入向量1002中的每个输入之后,处理器对求和向量1010中的所有值执行求和运算,诸如关于图9的公开中所描述的。可以针对索引矩阵的每个新行使用相同的输入向量1002来针对索引矩阵的每个行重复此过程,以便产生完整的层响应。
在图10所示的示例中,输入向量1002中的第一输入值是0.14。在此示例中,对于第一输入,j=0且xj=0.14。处理器可以通过使用公式(2)T_idx=xj*100找到包括要添加到求和向量1010的条目值的哈希表。对于j=0、T_idx=0.14*100且因此T_idx=14,指示哈希表14是存储条目值的位置。在步骤1012处,处理器检索哈希表14。在此示例中,码本和哈希表包括二维子向量,因此sd=2。为了确定哈希表14的条目索引E_idx,处理器可以在步骤1014处使用公式(3)u=j/sd来将输入映射到索引矩阵1006。由于j=0且sd=2,因此u=0/2。因此,u=0,指示索引矩阵的索引0包括条目索引。
在步骤1016处,处理器使用公式(4)E_idx=idxu来确定条目索引,因此E_idx=idx0。在此示例中,索引矩阵的索引0idx0包括值1。因此,E_idx=1,指示在哈希表14的条目索引1(行2)处包括j=0的条目值。哈希表14的条目索引1包括将0.14乘以码本1004的条目索引1中的值的乘积:0.092(0.14*0.66)和0.116(0.14*0.83)。在步骤1018处,处理器确定值索引。处理器将与哈希表14中的条目索引和值索引相对应的条目值存储为求和向量1010中的第一值。处理器根据公式(5)V_idx=j%sd来确定值索引。在此示例中,V_idx=0%2,因此V_idx=0。由于V_idx=0,因此处理器在哈希表14的条目索引1中查找第一条目值(0.092),并且处理器将此第一条目值作为第一值包括在求和向量1010中。
针对输入向量1002中的每个输入值重复关于图10描述的该过程。一旦处理器在哈希表中针对输入向量1002中的每个输入值查找条目值并将每个条目值存储在求和向量1010中,处理器就对求和向量1010中的所有值执行求和运算。在一些实施例中,处理器将激活函数应用于求和运算的结果,以产生层结果,所述层结果将传递到神经网络的下一隐藏层中的神经元(也称为节点或单元)上,或者将用作输出层中的输出。可以针对索引矩阵的每一行重复关于图10描述的过程,以产生要传递到神经网络的下一层的多个层响应。
本公开提供了神经网络大小的减小和神经网络处理速度的显著提高。在一个示例中,用于对语音数据执行意图分类的原始模型的大小为12.5百万字节。一种意图分类所花费的时间为9.48毫秒,识别率为99.68%。根据该原始模型创建的第一紧凑模型包括一维子向量,并且模型大小为3.01百万字节,大小与原始模型相比减少了75%。使用第一紧凑模型进行一种意图分类所花费的时间为2.97毫秒,速度比原始模型增加了219%。第一紧凑模型的识别率仍为99.68%。
作为另一示例,包括根据原始模型创建的二维子向量的第二紧凑模型的模型大小为1.4百万字节,大小与原始模型相比减小了88%。使用第二紧凑模型进行一种意图分类所花费的时间为7.18毫秒,速度比原始模型增加了32%。第二紧凑模型的识别率仍为99.68%。因此,本公开通过减少用于运行神经网络的存储器的量并提供增加的神经网络速度,同时仍保持准确性来提供对服务器200或电子装置300或运行神经网络的其他系统的功能的改进。
根据本公开的实施例,提供一种体现计算机程序的非暂时性计算机可读介质。所述计算机程序包括计算机可读程序代码,所述计算机可读程序代码在由至少一个处理器执行时致使至少一个处理器用于:根据神经网络的加权矩阵生成码本;根据码本构建索引矩阵,其中索引矩阵包括一个或多个索引值,并且一个或多个索引值中的每一个对应于码本中的一个位置;并且针对多个输入中的每个输入生成哈希表。
在此,非暂时性计算机可读介质进一步包括程序代码,所述程序代码在由至少一个处理器执行时致使至少一个处理器用于:将多个输入中的一个乘以码本以便生成哈希表。
在此,哈希表包括与条目索引相对应的一个或多个条目值。
在此,非暂时性计算机可读介质进一步包括程序代码,所述程序代码在由至少一个处理器执行时致使至少一个处理器用于:通过对加权矩阵的每一行进行斩波来创建多个子向量;对多个子向量中的每一个执行聚类操作;并且根据对多个子向量中的每一个执行的聚类操作确定一个或多个质心。
在此,非暂时性计算机可读介质进一步包括程序代码,所述程序代码在由至少一个处理器执行时致使至少一个处理器用于:将多个输入中的一个乘以码本的一个或多个质心中的每一个以便生成哈希表。
在此,哈希表包括与条目索引相对应的一个或多个条目值。
根据本公开的实施例,一种体现计算机程序的非暂时性计算机可读介质,所述计算机程序包括计算机可读程序代码,所述计算机可读程序代码在由至少一个处理器执行时致使至少一个处理器用于:接收来自输入向量的输入;基于输入确定表索引;并且从多个哈希表中检索哈希表,其中哈希表对应于表索引。
在此,非暂时性计算机可读介质进一步包括程序代码,所述程序代码在由至少一个处理器执行时致使至少一个处理器用于:基于索引矩阵确定哈希表的条目索引;其中索引矩阵包括一个或多个索引值,并且一个或多个索引值中的每一个对应于哈希表中的向量;并且确定哈希表中与条目索引相对应的条目值。
在此,非暂时性计算机可读介质进一步包括程序代码,所述程序代码在由至少一个处理器执行时致使至少一个处理器用于:基于哈希表的维度确定值索引,以便确定条目值,其中哈希表中的向量包括一个或多个条目值,并且其中值索引对应于哈希表中的向量中的一个或多个条目值中的一个。
在此,非暂时性计算机可读介质进一步包括程序代码,所述程序代码在由至少一个处理器执行时致使至少一个处理器用于:通过对条目值与一个或多个其他条目值进行求和来确定层响应。
应当注意,附图中示出的区域仅是示例。另外,应当注意,尽管附图以二维示出,但是区域通常是三维的。还应当注意,为了清楚和易于说明,附图不一定按比例绘制。
尽管附图说明用户设备的不同示例,但可对图进行各种改变。例如,用户设备可以包括呈任何合适布置的任何数量的每一部件。一般地,附图不会将本公开的范围限制为任何特定配置。此外,虽然附图说明其中可使用本专利文档中所公开的各种用户设备特征的操作环境,但是这些特征可用于任何其他合适的系统中。
本申请中的任何描述都不应被理解为暗示任何特定元件、步骤或功能是必须包括在权利要求书范围内的基本要素。专利主题的范围仅由权利要求书限定。
虽然已经用示例性实施方案描述了本公开,但是可以向本领域技术人员提出各种改变和修改。意图是本公开涵盖落入所附权利要求的范围内的这些改变和修改。

Claims (15)

1.一种用于神经网络的方法,包括:
根据所述神经网络的加权矩阵生成码本;
根据所述码本构建索引矩阵,其中所述索引矩阵包括一个或多个索引值,并且所述一个或多个索引值中的每一个对应于所述码本中的位置;以及
针对多个输入中的每个输入生成哈希表。
2.如权利要求1所述的方法,其中生成所述哈希表包括:将所述多个输入中的一个乘以所述码本。
3.如权利要求2所述的方法,其中所述哈希表包括与条目索引相对应的一个或多个条目值。
4.如权利要求1所述的方法,其中生成所述码本包括:
通过对所述加权矩阵的每一行进行斩波来创建多个子向量;
对所述多个子向量中的每一个执行聚类操作;以及
根据对所述多个子向量中的每一个执行的所述聚类操作确定一个或多个质心。
5.如权利要求4所述的方法,其中针对所述多个输入中的每个输入生成所述哈希表包括:将所述多个输入中的一个乘以所述码本的所述一个或多个质心中的每一个。
6.如权利要求5所述的方法,其中所述哈希表包括与条目索引相对应的一个或多个条目值。
7.一种电子装置,包括:
通信接口;
存储器;以及
至少一个处理器,所述至少一个处理器耦合到所述通信接口和所述存储器,所述至少一个处理器被配置为:
根据神经网络的加权矩阵生成码本;
根据所述码本构建索引矩阵,其中所述索引矩阵包括一个或多个索引值,并且所述一个或多个索引值中的每一个对应于所述码本中的位置;以及
针对多个输入中的每个输入生成哈希表。
8.如权利要求7所述的电子装置,其中所述至少一个处理器进一步被配置为:
将所述多个输入中的一个乘以所述码本以便生成所述哈希表。
9.如权利要求8所述的电子装置,其中所述哈希表包括与条目索引相对应的一个或多个条目值。
10.一种电子装置,其被配置为执行如权利要求4至6所述的方法之一。
11.一种用于神经网络的方法,包括:
接收来自输入向量的输入;
基于所述输入确定表索引;以及
从多个哈希表中检索哈希表,其中所述哈希表对应于所述表索引。
12.如权利要求11所述的方法,进一步包括:
基于索引矩阵确定所述哈希表的条目索引,其中所述索引矩阵包括一个或多个索引值,并且所述一个或多个索引值中的每一个对应于所述哈希表中的向量;以及
确定所述哈希表中与所述条目索引相对应的条目值。
13.如权利要求12所述的方法,其中确定所述条目值进一步包括:基于所述哈希表的维度确定值索引,其中所述哈希表中的所述向量包括一个或多个条目值,并且其中所述值索引对应于所述哈希表中的所述向量中的所述一个或多个条目值中的一个。
14.如权利要求12所述的方法,进一步包括:
确定层响应包括对所述条目值与一个或多个其他条目值进行求和。
15.一种电子装置,其被配置为执行如权利要求11至14所述的方法之一。
CN201880051639.9A 2017-08-08 2018-08-08 用于神经网络的系统和方法 Active CN110998607B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762542636P 2017-08-08 2017-08-08
US62/542,636 2017-08-08
US15/853,431 US11531859B2 (en) 2017-08-08 2017-12-22 System and method for hashed compressed weighting matrix in neural networks
US15/853,431 2017-12-22
PCT/KR2018/009018 WO2019031839A1 (en) 2017-08-08 2018-08-08 SYSTEM AND METHOD FOR NEURAL NETWORKS

Publications (2)

Publication Number Publication Date
CN110998607A true CN110998607A (zh) 2020-04-10
CN110998607B CN110998607B (zh) 2024-03-08

Family

ID=65272438

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880051639.9A Active CN110998607B (zh) 2017-08-08 2018-08-08 用于神经网络的系统和方法

Country Status (5)

Country Link
US (1) US11531859B2 (zh)
EP (1) EP3642763B1 (zh)
KR (1) KR20200030082A (zh)
CN (1) CN110998607B (zh)
WO (1) WO2019031839A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112115782A (zh) * 2020-08-12 2020-12-22 安徽心之声医疗科技有限公司 一种基于深度哈希神经网络的心电信号身份识别的方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018214913A1 (zh) * 2017-05-23 2018-11-29 上海寒武纪信息科技有限公司 处理方法及加速装置
US11625584B2 (en) * 2019-06-17 2023-04-11 Intel Corporation Reconfigurable memory compression techniques for deep neural networks
CN113822410A (zh) * 2020-06-18 2021-12-21 华为技术有限公司 神经网络模型训练、图像分类、文本翻译方法及装置、设备
US20230316050A1 (en) * 2020-09-02 2023-10-05 University Of Southern California Blocking neural networks for high capacity
CN115134298A (zh) * 2021-03-23 2022-09-30 华为技术有限公司 报文处理方法以及网络设备
KR20220145656A (ko) 2021-04-22 2022-10-31 에스케이하이닉스 주식회사 호스트 및 이를 포함하는 컴퓨팅 시스템

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070098150A1 (en) * 2005-11-01 2007-05-03 Microsoft Corporation Hash function constructions from expander graphs
US7831531B1 (en) * 2006-06-22 2010-11-09 Google Inc. Approximate hashing functions for finding similar content
US20120054161A1 (en) * 2010-08-27 2012-03-01 International Business Machines Corporation Network analysis
US9054876B1 (en) * 2011-11-04 2015-06-09 Google Inc. Fast efficient vocabulary computation with hashed vocabularies applying hash functions to cluster centroids that determines most frequently used cluster centroid IDs
CN105184362A (zh) * 2015-08-21 2015-12-23 中国科学院自动化研究所 基于参数量化的深度卷积神经网络的加速与压缩方法
US20160062979A1 (en) * 2014-08-27 2016-03-03 Google Inc. Word classification based on phonetic features
CN105683898A (zh) * 2014-01-17 2016-06-15 网络装置公司 对储存系统中数据高效存储与检索的组相关哈希表组织
US20160180200A1 (en) * 2014-12-19 2016-06-23 Google Inc. Large-scale classification in neural networks using hashing
CN106383891A (zh) * 2016-09-22 2017-02-08 重庆理工大学 一种基于深度哈希的医学图像分布式检索方法
WO2017031630A1 (zh) * 2015-08-21 2017-03-02 中国科学院自动化研究所 基于参数量化的深度卷积神经网络的加速与压缩方法
CN106649715A (zh) * 2016-12-21 2017-05-10 中国人民解放军国防科学技术大学 一种基于局部敏感哈希算法和神经网络的跨媒体检索方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3353138A (en) 1965-03-22 1967-11-14 Amp Inc Programming system
US7574409B2 (en) 2004-11-04 2009-08-11 Vericept Corporation Method, apparatus, and system for clustering and classification
US8369611B2 (en) * 2010-04-22 2013-02-05 Microsoft Corporation Compact handwriting recognition
US9514753B2 (en) 2013-11-04 2016-12-06 Google Inc. Speaker identification using hash-based indexing
WO2016134183A1 (en) 2015-02-19 2016-08-25 Digital Reasoning Systems, Inc. Systems and methods for neural language modeling
US10230969B2 (en) * 2017-07-24 2019-03-12 Adobe Systems Incorporated Low-latency vector quantization for data compression

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070098150A1 (en) * 2005-11-01 2007-05-03 Microsoft Corporation Hash function constructions from expander graphs
US7831531B1 (en) * 2006-06-22 2010-11-09 Google Inc. Approximate hashing functions for finding similar content
US20120054161A1 (en) * 2010-08-27 2012-03-01 International Business Machines Corporation Network analysis
US9054876B1 (en) * 2011-11-04 2015-06-09 Google Inc. Fast efficient vocabulary computation with hashed vocabularies applying hash functions to cluster centroids that determines most frequently used cluster centroid IDs
CN105683898A (zh) * 2014-01-17 2016-06-15 网络装置公司 对储存系统中数据高效存储与检索的组相关哈希表组织
US20160062979A1 (en) * 2014-08-27 2016-03-03 Google Inc. Word classification based on phonetic features
US20160180200A1 (en) * 2014-12-19 2016-06-23 Google Inc. Large-scale classification in neural networks using hashing
CN105719001A (zh) * 2014-12-19 2016-06-29 谷歌公司 使用散列的神经网络中的大规模分类
CN105184362A (zh) * 2015-08-21 2015-12-23 中国科学院自动化研究所 基于参数量化的深度卷积神经网络的加速与压缩方法
WO2017031630A1 (zh) * 2015-08-21 2017-03-02 中国科学院自动化研究所 基于参数量化的深度卷积神经网络的加速与压缩方法
CN106383891A (zh) * 2016-09-22 2017-02-08 重庆理工大学 一种基于深度哈希的医学图像分布式检索方法
CN106649715A (zh) * 2016-12-21 2017-05-10 中国人民解放军国防科学技术大学 一种基于局部敏感哈希算法和神经网络的跨媒体检索方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
JINGDONG WANG, ET AL.: "A Survey on Learning to Hash" *
WANG JUN, ET AL.: "Learning to Hash for Indexing Big Data-A Survey", pages 34 *
WU JIAXIANG, ET AL.: "Quantized Convolutional Neural Networks for Mobile Devices", pages 1 - 8 *
ZHANG RUIMAO, ET AL.: "Bit-Scalable Deep Hashing With Regularized Similarity Learning for Image Retrieval and Person Re-Identification", pages 4766 *
王玉, 邢渊, 阮雪榆: "基于神经网络和遗传算法的事例最近邻法检索模型", 高技术通讯, no. 05, pages 78 - 83 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112115782A (zh) * 2020-08-12 2020-12-22 安徽心之声医疗科技有限公司 一种基于深度哈希神经网络的心电信号身份识别的方法
CN112115782B (zh) * 2020-08-12 2023-09-29 安徽心之声医疗科技有限公司 一种基于深度哈希神经网络的心电信号身份识别的方法

Also Published As

Publication number Publication date
CN110998607B (zh) 2024-03-08
EP3642763C0 (en) 2023-12-20
EP3642763B1 (en) 2023-12-20
US11531859B2 (en) 2022-12-20
WO2019031839A1 (en) 2019-02-14
KR20200030082A (ko) 2020-03-19
EP3642763A4 (en) 2020-07-15
US20190050709A1 (en) 2019-02-14
EP3642763A1 (en) 2020-04-29

Similar Documents

Publication Publication Date Title
CN110998607B (zh) 用于神经网络的系统和方法
CN109543824B (zh) 一种序列模型的处理方法和装置
EP4145308A1 (en) Search recommendation model training method, and search result sorting method and device
CN110162799B (zh) 模型训练方法、机器翻译方法以及相关装置和设备
CN108305296B (zh) 图像描述生成方法、模型训练方法、设备和存储介质
JP5951695B2 (ja) 行動認識のための方法、装置、およびコンピュータ・プログラム
US11640208B2 (en) Gesture feedback in distributed neural network system
CN105184362B (zh) 基于参数量化的深度卷积神经网络的加速与压缩方法
CN108228270B (zh) 启动资源加载方法及装置
WO2023279975A1 (zh) 一种模型处理方法、联邦学习方法及相关设备
CN110069715B (zh) 一种信息推荐模型训练的方法、信息推荐的方法及装置
CN111816159B (zh) 一种语种识别方法以及相关装置
US11580399B2 (en) System and method for convolutional layer structure for neural networks
US20120275690A1 (en) Distributed artificial intelligence services on a cell phone
US11989637B2 (en) System and method for invertible wavelet layer for neural networks
US20220138489A1 (en) Method of live video event detection based on natural language queries, and an apparatus for the same
KR20190011180A (ko) 이미지를 암호화하여 외부 서버에 업로드하기 위한 전자 장치 및 이의 제어 방법
US20200349426A1 (en) Convolution streaming engine for deep neural networks
CN110263216B (zh) 一种视频分类的方法、视频分类模型训练的方法及装置
CN109214543B (zh) 数据处理方法及装置
CN116368796A (zh) 数据处理方法和装置
CN109165057B (zh) 一种智能设备执行任务的方法和装置
CN109583583A (zh) 神经网络训练方法、装置、计算机设备及可读介质
CN117056589A (zh) 一种物品推荐方法及其相关设备
CN116450808B (zh) 一种数据的处理方法、装置以及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant