CN107480782B - 一种片上学习神经网络处理器 - Google Patents

一种片上学习神经网络处理器 Download PDF

Info

Publication number
CN107480782B
CN107480782B CN201710691146.9A CN201710691146A CN107480782B CN 107480782 B CN107480782 B CN 107480782B CN 201710691146 A CN201710691146 A CN 201710691146A CN 107480782 B CN107480782 B CN 107480782B
Authority
CN
China
Prior art keywords
module
neural network
data
neural
learning
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.)
Expired - Fee Related
Application number
CN201710691146.9A
Other languages
English (en)
Other versions
CN107480782A (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.)
University of Electronic Science and Technology of China
Original Assignee
University of Electronic Science and Technology of China
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 University of Electronic Science and Technology of China filed Critical University of Electronic Science and Technology of China
Priority to CN201710691146.9A priority Critical patent/CN107480782B/zh
Publication of CN107480782A publication Critical patent/CN107480782A/zh
Application granted granted Critical
Publication of CN107480782B publication Critical patent/CN107480782B/zh
Expired - Fee Related 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/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

Landscapes

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

Abstract

本发明公开了一种片上学习神经网络处理器包括数据接口模块、数据预处理模块、数据缓存区模块、神经元权值缓存区模块、随机初始化模块、神经运算单元模块、神经网络前向运算控制模块、激活函数模块、神经状态控制器模块、神经网络学习算法控制模块;神经状态控制器模块控制各单元模块协同工作进行神经网络学习与推理。本发明中的神经运算单元模块采用通用硬件加速运算设计,可编程控制神经网络运算类型及运算规模。设计中加入流水线技术,极大提高数据吞吐率与运算速度,并且重点优化神经运算单元的乘加单元,极大减小硬件面积。本发明对神经网络学习算法进行硬件映射,使得该神经网络处理器即能进行片上学习又能进行离线推理。

Description

一种片上学习神经网络处理器
技术领域
本发明涉及集成电路领域及人工智能领域,具体地说,特别涉及一种片上 学习神经网络处理器。
背景技术
在机器学习和认知科学领域,人工神经网络(ANN),简称神经网络或类 神经网络,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结 构和功能的数学模型或计算模型,用于对函数进行估计或近似。人工神经网络 与生物神经网络的相似之处在于,它可以集体地、并行地计算函数的各个部 分,而不需要描述每一个单元的特定任务。
在目前互联网大数据背景下,基于人工神经网络(ANN)的类脑计算在大 数据处理、分析得到应用,人工智能取得了重大突破。Google的自动驾驶,百 度的“DeepSpeech2”语音识别系统,阿里巴巴的阿里云“ET”以及最近打败 柯洁的“Alpha Go”在人工智能领域上取得了令人瞩目的成果。
深度神经网络通过建立模型模拟人类大脑的神经连接结构,在处理图像、 声音和文本等信号时,通过多个变换阶段分层对数据特征进行描述。伴随神经 网络复杂度的不断提高,神经网络技术在实际应用过程中存在占用资源多、运 算速度慢、能量消耗大等问题,因此该技术在嵌入式设备或低开销数据中心等 领域应用时存在严重的能效问题和运算速度瓶颈。采用硬件加速替代传统软件 计算的方法成为了提高神经网络计算效率的一种行之有效方式。
现有的神经网络硬件加速主要通过图形处理单元(GPU)或者现场可编程 门阵列(FPGA)来实现。GPU作为底层平台,起到运算加速的作用,但是功 耗、成本与面积是制约它的主要因素。相比之下,FPGA可编程芯片或者是人 工神经网络专属芯片对于植入服务器以及编程环境、编程能力要求更高,还缺 乏通用的潜力,不适合普及。
为了解决上述功耗、成本与面积等问题,本发明提出一种片上学习神经网 络处理器专用集成电路(ASIC),该芯片在同等的芯片面积下,相较于GPU或 FPGA降低了功耗和成本,并且提高了芯片的计算性能。该ASIC的实现使得低 功耗低成本高性能的在线学习人工智能芯片成为可能。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种片上学习神经网络处 理器。所述技术方案如下:
一方面,提供了一种片上学习神经网络处理器,包括:神经状态控制器模 块、数据接口模块、神经网络前向运算控制模块、神经网络学习算法控制模块、 神经运算单元模块、神经元权值缓存区模块、激活函数模块以及数据缓存区模 块连接;
所述神经状态控制器模块分别与所述数据接口模块、神经元权值缓存区模 块、神经网络前向运算控制模块、神经网络学习算法控制模块、激活函数模 块、数据缓存区模块连接,所述神经状态控制器模块控制数据接口模块进行数 据交互,并监控所述神经网络前向运算控制模块、神经网络学习算法控制模块 的工作状态,同时产生当前的神经工作状态,并控制所述神经运算单元模块、 神经网络前向运算控制模块、神经网络学习算法控制模块根据当前神经工作状 态进行同步工作。
可选地,还包括数据预处理模块;
所述数据预处理模块将神经网络输入、输出数据进行预处理;
其中对神经网络输入数据可采用零均值化、归一化、中心化、白化的方法 进行预处理;对神经网络输出数据可采用线性回归、逻辑回归、多项式回归的 方法进行预处理。
可选地,所述神经运算单元模块根据系统配置的运算类型及运算规模对输 入数据进行神经运算,可采用基于Booth算法设计的一种高速低功耗流水线乘 法器构成一种二维运算阵列结构,可进行高速低功耗的神经网络卷积运算及矩 阵乘累加运算,可通过编程配置神经运算类型及运算规模。
可选地,所述神经网络学习算法控制模块分别与所述神经运算单元模块、 神经网络前向运算控制模块、神经状态控制器模块连接;
所述片上学习神经网络处理器通过将神经网络学习算法进行硬件映射,所 述神经网络学习算法控制模块根据系统配置的算法进行控制神经网络进行学 习;
所述神经网络学习算法控制模块采用误差反向传播算法;
所述误差反向传播算法采用可变步长学习,加入动态最优学习因子、动量 因子及自适应学习率,并且对算法进行硬件映射,可编程选择训练算法。
可选地,所述神经网络前向运算控制模块分别与所述神经运算单元模块、 神经网络学习算法控制模块、神经状态控制器模块连接;
所述神经网络前向运算控制模块通过数据总线将神经元权值缓存区、数据 缓存区内的数据载入到神经运算单元模块进行神经元运算,并将神经运算单元 的运算结果载入到激活函数模块进行神经元激活运算,神经元激活运算完成后 将运算结果缓存入数据缓存区模块中;
所述神经网络前向运算与神经网络反向传播运算复用同一神经运算单元模 块,且所述神经运算单元模块的运算类型及运算规模可以通过编程配置。
可选地,还包括:随机初始化模块;
所述随机初始化模块与所述神经元权值缓存区模块相连,所述随机初始化 模块产生随机数据对神经元权值缓存区进行随机初始化;
所述随机初始化模块采用线性同余法LCG、梅森旋转法、线性反馈移位寄 存器的方法实现。
可选地,所述神经元权值缓存区模块与所述数据接口模块、随机初始化模 块、数据预处理模块连接,离线推理模式下所述神经元权值缓存区模块从数据 接口模块载入神经元权值与偏置数据,片上学习模式下,所述神经元权值缓存 区读取所述随机初始化模块输出的随机数据作为输入数据。
可选地,所述激活函数模块对神经运算结果进行非线性映射,采用数字电 路方法来拟合神经网络运算中所需的激活函数;
所述数字电路方法由高效的组合逻辑电路实现,可由多输入与门、或门实 现。
可选地,所述数据接口模块与所述神经状态控制器模块、数据缓存区模 块、神经元权值缓存区模块连接,离线推理模式下所述数据接口模块负责将预 测数据及神经网络配置参数载入数据缓存区中,将神经元权值与偏置数据载入 至神经元权值缓存区中,片上学习模式下,所述数据接口模块负责将训练样本 数据及神经网络配置参数载入到数据缓存区中。
可选地,所述数据缓存区模块与所述数据接口模块、数据预处理模块、激 活函数模块连接,所述数据缓存区模块负责缓存从数据接口模块输入的数据及 神经运算结果数据;
所述数据缓存区模块采用乒乓缓存设计,加入缓存数据预取技术。
本发明实施例提供的技术方案带来的有益效果是:
本发明提供的一种片上学习神经网络处理器,通过神经状态控制器模块控 制各单元模块协同工作进行神经网络学习与推理。本发明中的神经运算单元模 块采用通用硬件加速运算设计,可编程控制神经网络运算类型及运算规模。设 计中加入流水线技术,极大提高数据吞吐率与运算速度,并且重点优化神经运 算单元的乘加单元,极大减小硬件面积。本发明对神经网络学习算法进行硬件 映射,使得该神经网络处理器即能进行片上学习(On-line learning)又能进行离 线推理(Off-line inference)。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所 需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下, 还可以根据这些附图获得其他的附图。
图1是本发明实施例一的一种基于片上学习神经网络处理器模块示意图;
图2是本发明实施例二的神经网络训练流程图;
图3是本发明实施例二的三层Back-Propagation(BP)神经网络拓扑结构示 意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明 实施方式作进一步地详细描述。
实施例一
本发明提供了提供了一种片上学习神经网络处理器,参见图1,包括:神经 状态控制器模块、数据接口模块、神经网络前向运算控制模块、神经网络学习 算法控制模块、神经运算单元模块、神经元权值缓存区模块、激活函数模块以 及数据缓存区模块连接;
所述神经状态控制器模块分别与所述数据接口模块、神经元权值缓存区模 块、神经网络前向运算控制模块、神经网络学习算法控制模块、激活函数模 块、数据缓存区模块连接,所述神经状态控制器模块控制数据接口模块进行数 据交互,并监控所述神经网络前向运算控制模块、神经网络学习算法控制模块 的工作状态,同时产生当前的神经工作状态,并控制所述神经运算单元模块、 神经网络前向运算控制模块、神经网络学习算法控制模块根据当前神经工作状 态进行同步工作。
可选地,还包括数据预处理模块;
所述数据预处理模块将神经网络输入、输出数据进行预处理;
其中对神经网络输入数据可采用零均值化、归一化、中心化、白化的方法 进行预处理;对神经网络输出数据可采用线性回归、逻辑回归、多项式回归的 方法进行预处理。
具体地,所述数据预处理模块将神经网络输入、输出数据进行预处理,其 中对神经网络输入数据可采用零均值化(Zero-Center)、归一化 (Normalization)、中心化(Centralization)、白化(PCA&Whitening)等方法 进行预处理,对神经网络输出数据可采用线性回归(Linear Regression)、逻辑 回归(Logistic Regression)、多项式回归(Polynomial Regression)等方法进行 预处理。
可选地,所述神经运算单元模块根据系统配置的运算类型及运算规模对输 入数据进行神经运算,可采用基于Booth算法设计的一种高速低功耗流水线乘 法器构成一种二维运算阵列结构,可进行高速低功耗的神经网络卷积运算及矩 阵乘累加运算,可通过编程配置神经运算类型及运算规模。
可选地,所述神经网络学习算法控制模块分别与所述神经运算单元模块、 神经网络前向运算控制模块、神经状态控制器模块连接;
所述片上学习神经网络处理器通过将神经网络学习算法进行硬件映射,所 述神经网络学习算法控制模块根据系统配置的算法进行控制神经网络进行学 习;
所述神经网络学习算法控制模块采用误差反向传播算法;
所述误差反向传播算法采用可变步长学习,加入动态最优学习因子、动量 因子及自适应学习率,并且对算法进行硬件映射,可编程选择训练算法。
具体地,通过将神经网络学习算法进行硬件映射,所述神经网络学习算法 控制模块根据系统配置的算法进行控制神经网络进行学习,可采用典型的误差 反向传播算法(Error Back-Propagation Algorithm,BP算法),本发明对典型的 BP算法进行优化改进以提高网络训练收敛速度,如可采用可变步长学习,加入 动态最优学习因子、动量因子,自适应学习率等来提高学习效率,也可采用随 机梯度下降(Stochastic gradient descent,SGD)算法,基于动量(Momentum) 的SGD算法,Adagrad算法,Adadelta算法,RMSprop算法,小批量梯度下降 (Mini Batch Gradient Descent)算法,自适应时刻估计(Adaptive MomentEstimation,Adam)算法等来进行神经网络学习。
对所述神经网络学习算法控制模块加入创新型算法,如减少重复学习机 制,神经元释放机制,局部稀疏连接机制,神经元跨层直连机制等。
可选地,所述神经网络前向运算控制模块分别与所述神经运算单元模块、 神经网络学习算法控制模块、神经状态控制器模块连接;
所述神经网络前向运算控制模块通过数据总线将神经元权值缓存区、数据 缓存区内的数据载入到神经运算单元模块进行神经元运算,并将神经运算单元 的运算结果载入到激活函数模块进行神经元激活运算,神经元激活运算完成后 将运算结果缓存入数据缓存区模块中;
所述神经网络前向运算与神经网络反向传播运算复用同一神经运算单元模 块,且所述神经运算单元模块的运算类型及运算规模可以通过编程配置。
可选地,还包括:随机初始化模块;
所述随机初始化模块与所述神经元权值缓存区模块相连,所述随机初始化 模块产生随机数据对神经元权值缓存区进行随机初始化;
所述随机初始化模块采用线性同余法LCG、梅森旋转法、线性反馈移位寄 存器的方法实现。
具体地,所述随机初始化模块产生随机数据对神经元权值缓存区进行随机 初始化,可采用线性同余法LCG(Linear Congruential Generator)、梅森旋转法 (Mersennetwister)、线性反馈移位寄存器(LFSR)等方法实现。
可选地,所述神经元权值缓存区模块与所述数据接口模块、随机初始化模 块、数据预处理模块连接,离线推理模式下所述神经元权值缓存区模块从数据 接口模块载入神经元权值与偏置数据,片上学习模式下,所述神经元权值缓存 区读取所述随机初始化模块输出的随机数据作为输入数据。
可选地,所述激活函数模块对神经运算结果进行非线性映射,采用数字电 路方法来拟合神经网络运算中所需的激活函数;
所述数字电路方法由高效的组合逻辑电路实现,可由多输入与门、或门实 现。
具体地,所述激活函数模块对神经运算结果进行非线性映射,采用一种全 新的数字电路方法(高效的组合逻辑电路实现,可由多输入与门、或门实现) 来拟合神经网络运算中所需的激活函数,也可采用查表法(look-up table)、分 段线性逼近法、多项式近似法、有理近似法以及协调旋转数字计算机 (Coordinated Rotation Digital Computer,CORDIC)算法等来实现神经网络运算 中所需的激活函数,例如Sigmoid函数、Tanh函数、Relu函数、Softmax函数 等均可由所述方法来实现。
可选地,所述数据接口模块与所述神经状态控制器模块、数据缓存区模 块、神经元权值缓存区模块连接,离线推理模式下所述数据接口模块负责将预 测数据及神经网络配置参数载入数据缓存区中,将神经元权值与偏置数据载入 至神经元权值缓存区中,片上学习模式下,所述数据接口模块负责将训练样本 数据及神经网络配置参数载入到数据缓存区中。
可选地,所述数据缓存区模块与所述数据接口模块、数据预处理模块、激 活函数模块连接,所述数据缓存区模块负责缓存从数据接口模块输入的数据及 神经运算结果数据;
所述数据缓存区模块采用乒乓缓存设计,加入缓存数据预取技术。
本实施例中,下面结合图1-3,以BP神经网络为模型,以神经网络逼近任 意非线性函数为例给出本发明的一种片上学习神经网络处理器的具体实施例。
本实施例包括数据接口模块、数据预处理模块、数据缓存区模块、神经元 权值缓存区模块、随机初始化模块、神经运算单元模块、神经网络前向运算控 制模块、激活函数模块、神经状态控制器模块、神经网络学习算法控制模块;
数据接口模块,本实例中的数据接口模块采用串行外设接口(Serial PeripheralInterface,SPI);
数据预处理模块,本实例中的数据预处理模块采用正则化算法;
数据缓存区模块,本实例中的数据缓存区模块采用的HHGrace.13u Single PortSRAM宏模块;
神经元权值缓存区模块,本实例中的神经元权值缓存区模块采用的是HHGrace.13u Dual Port SRAM宏模块;
随机初始化模块,本实例中的随机初始化模块采用线性反馈移位寄存器 (LFSR)来产生伪随机数;
神经运算单元模块,本实例中采用16位定点数(1位符号位、3位整数位、 12位小数位)来表示小数,神经运算单元模块由16个处理单元(PE)模块构成, 每个PE模块由一个流水线BOOTH乘法器、一个32位加法器及控制逻辑构成, 本实例中的神经运算单元模块可处理(n*m)维矩阵与(m*n)维矩阵的乘法 运算(1≤n,m≤256)、(1*m)维向量与(1*m)维向量的点乘运算(1≤m≤256)、 (j*1)维向量与(1*k)维向量的乘法运算(1≤j,k≤256),本实例中的神经 运算单元由于加入流水线技术,可实现每个时钟周期得到一个运算结果;
神经网络前向运算控制模块,本实例中的神经网络前向运算控制模块由数 据流控制模块与逻辑控制模块构成,数据流控制模块主要负责前向运算数据进 入神经运算单元的调度,逻辑控制模块主要负责对于不同网络参数进行神经运 算单元的配置;
激活函数模块,本实例中的激活函数模块由Sigmoid函数、Tanh函数、Relu函 数、线性函数构成,可通过编程选择所需激活函数;
神经状态控制器模块,本实例中的神经状态控制器模块通过监控神经网络 前向运算控制模块、神经网络学习算法控制模块的状态来控制产生新的神经状 态,并且控制神经网络前向运算控制模块、神经网络学习算法控制模块根据当 前的神经状态进行同步工作;
神经网络学习算法控制模块,本实例中的神经网络学习算法控制模块由数 据流控制模块与逻辑控制模块构成,数据流控制模块主要负责反向传播数据进 入神经运算单元的调度,逻辑控制模块主要负责对于不同网络参数进行神经运 算单元的配置;
本实例采用三层BP神经网络模型的人工神经网络拓扑结构,包括由1个神 经元组成的输入层I、由5个神经元组成的隐藏层Hi(i=1,2,3,4,5)以及 由1个神经元组成的输出层O,本实例中隐藏层神经元激活函数选择Sigmoid函 数,输出层神经元激活函数选择线性函数,本实例中反向传播算法采用梯度下 降算法并结合自适应学习率调整算法来提高网络的学习效率。
实施例二
本发明提供了一种基于片上学习神经网络处理器的工作分为两个阶段,参 见图2,具体为:
第一阶段:神经网络的训练(学习)
1)数据准备及预处理
通过数据接口模块将训练样本数据载入到数据缓存区,通过随机初始化模 块随机初始化神经元权值缓存区,数据准备完成后将数据缓存区、神经元权值 缓存区内的数据载入到数据预处理模块进行预处理。
2)神经网络参数配置
将输入层神经元数量、隐藏层神经元数量、输出层神经元数量、隐藏层激 活函数、输出层激活函数、学习率、误差期望值、学习算法等神经网络参数通 过数据接口模块从芯片外部载入到数据缓存区,在神经网络参数配置状态时, 将数据缓存区内的神经网络参数数据配置到神经网络相应位置。
3)神经网络前向运算
神经运算单元载入数据预处理模块的预处理后的训练样本数据及神经元权 值与偏置数据,并选择对应的神经网络参数开始神经元运算,将神经运算单元 的运算结果载入到激活函数模块并选择对应的激活函数进行神经元激活运算, 最后将激活函数模块的运算结果缓存入数据缓存区内。
4)神经网络反向传播运算
计算输出层神经元的实际输出值与样本目标值的误差,通过反向传播算法 计算出每个神经元所需调整的权值与偏差值,然后更新神经元权值缓存区内对 应的神经元权值与偏置数据。
5)判断误差精度是否满足预设值
如果神经元运算的目标输出与实际目标值的误差小于预设的期望值时,停 止训练并通过数据接口模块将神经元权值缓存区内的权值与偏置数据输出至芯 片外部,否则继续进入神经网络前向运算状态。
第二阶段:神经网络的预测
1)数据准备及预处理
通过数据接口模块将预测数据及神经元权值与偏置数据分别载入到数据缓 存区、神经元权值缓存区,数据准备完成后将数据缓存区、神经元权值缓存区 内的数据载入到数据预处理模块进行预处理。
2)神经网络参数配置
将输入层神经元数量、隐藏层神经元数量、输出层神经元数量、隐藏层激 活函数、输出层激活函数等神经网络参数通过数据接口模块从芯片外部载入到 数据缓存区,在神经网络参数配置状态时,将数据缓存区内的神经网络参数数 据配置到神经网络相应位置。
3)神经网络前向运算
神经运算单元载入数据预处理模块的预处理后的训练样本数据及神经元权 值与偏置数据,并选择对应的神经网络参数开始神经元运算,将神经运算单元 的运算结果载入到激活函数模块并选择对应的激活函数进行神经元激活运算, 最后将激活函数模块的运算结果缓存入数据缓存区内。
4)神经网络运算结果输出
将数据缓存区内的推理结果数据通过数据接口模块输出至芯片外部。
具体地,本实施例提供了一种基于BP神经网络逼近任意非线性函数的工作 分为两个阶段,参见图3,具体为:
第一阶段:神经网络的训练(学习)
1)生成训练样本
MATLAB产生-1到1的随机数作为输入样本值并将其定点化为16位定点 数,将输入样本值通过需要逼近的目标函数得到输入目标值并将其定点化为16 位定点数。
2)数据准备及预处理
通过SPI数据接口模块将训练样本数据载入到数据缓存区,通过LFSR模块 随机初始化神经元权值缓存区,数据准备完成后将数据缓存区、神经元权值缓 存区内的数据载入到数据预处理模块进行预处理。
3)神经网络参数配置
通过SPI数据接口将神经网络参数载入到数据缓存区,然后在神经网络参 数配置状态将数据缓存区内的输入层神经元数量、隐藏层神经元数量、输出层 神经元数量、隐藏层激活函数、输出层激活函数、学习率、误差期望值、学习 算法配置到网络对应位置。
4)神经网络前向运算
将数据缓存区域内的样本数据及神经元权值缓存区内的权值、偏置数据载 入到神经运算单元,对于隐藏层某一个神经元hl(l=1,2,3,4,5),输出可表示为 hl=W1lIl+b1l,对于输出层神经元o,输出可表示为
Figure BDA0001377919080000111
(W1l为 输入层与隐藏层之间神经元权值,b1l为输入层与隐藏层之间神经元偏置,Vi1为 隐藏层与输出层之间神经元权值,b21为隐藏层与输出层之间神经元偏置;将神 经运算单元的结果hl(l=1,2,3,4,5)载入到激活函数模块,激活函数选择Sigmoid函 数.
Figure BDA0001377919080000121
hl=f(W1lIl+b1l);将神经运算单元的结果o载入到激活函数模 块,激活函数选择线性函数,
Figure BDA0001377919080000122
最后将激活函数 模块的运算结果缓存入数据缓存区内。
5)神经网络反向传播运算
根据梯度下降算法,对于隐藏层与输出层之间的权值(Vi1)与偏置(b21):
误差(error),改变量(δ,θ)
Figure BDA0001377919080000123
Vi1=Vi1-δhi;b21=b21-δ;
对于隐藏层与输入层之间的权值(W1l)与偏置(b1l)调整如下:
θ=Vi1·δ·f′(x);W1l=W1l-θ·Il;b1l=b1l
本发明中改进传统的梯度下降算法,加入自适应调节学习率(η1η2)算法;
对于隐藏层与输出层之间的权值(Vi1)与偏置(b21)调整如下:
error=(target-o)
Figure BDA0001377919080000124
Vi1=Vi11δhi
b21=b212δ
对于隐藏层与输入层之间的权值(W1l)与偏置(b1l)调整如下:
θ=Vi1·δ·f′(x)
W1l=W1l1θ·Il
b1l=b1l2θ
6)判断误差精度是否满足预设值
如果神经元运算的目标输出与实际目标值的误差(error)小于预设的期望 值时,停止训练并通过数据接口模块将神经元权值缓存区内的权值与偏置数据 输出至芯片外部,否则继续进入神经网络前向运算状态。
第二阶段:神经网络的预测
1)生成预测数据
MATLAB产生-1到1的随机数作为预测数据并将其定点化为16位定点数。
2)数据准备及预处理
通过SPI数据接口模块将预测数据及神经元权值与偏置数据分别载入到数 据缓存区、神经元权值缓存区,数据准备完成后将数据缓存区、神经元权值缓 存区内的数据载入到数据预处理模块进行预处理。
3)神经网络参数配置
通过SPI数据接口将神经网络参数载入到数据缓存区,然后在神经网络参 数配置状态将数据缓存区内的输入层神经元数量、隐藏层神经元数量、输出层 神经元数量、隐藏层激活函数、输出层激活函数配置到网络对应位置。
4)神经网络前向运算
将数据缓存区域内的预测数据及神经元权值缓存区内的权值、偏置数据载 入到神经运算单元,对于隐藏层某一个神经元hl(l=1,2,3,4,5),输出可表示为 hl=W1lIl+b1l,对于输出层神经元o,输出可表示为
Figure BDA0001377919080000131
(W1l为 输入层与隐藏层之间神经元权值,b1l为输入层与隐藏层之间神经元偏置,Vi1为 隐藏层与输出层之间神经元权值,b21为隐藏层与输出层之间神经元偏置;将神 经运算单元的结果hl(l=1,2,3,4,5)载入到激活函数模块,激活函数选择Sigmoid函 数.
Figure BDA0001377919080000132
hl=f(W1lIl+b1l);将神经运算单元的结果o载入到激活函数模 块,激活函数选择线性函数,
Figure BDA0001377919080000133
最后将激活函数 模块的运算结果缓存入数据缓存区内。
5)神经网络运算结果输出
将数据缓存区内的推理结果数据通过数据接口模块输出至芯片外部。
本实施例可以用于逼近任意非线性函数,数据预处理算法不局限于去均 值、归一化、方差归一化的算法,可由其他数据处理算法实现,数据预处理算 法不局限于去均值、归一化、方差归一化的算法,可由其他数据处理算法实现, 神经网络反向传播算法可以由不同的神经网络学习算法实现,神经网络前馈运 算可以由不同的神经网络拓扑结构实现;
本发明实施例提供的技术方案带来的有益效果是:
本发明提供的一种片上学习神经网络处理器,通过神经状态控制器模块控 制各单元模块协同工作进行神经网络学习与推理。本发明中的神经运算单元模 块采用通用硬件加速运算设计,可编程控制神经网络运算类型及运算规模。设 计中加入流水线技术,极大提高数据吞吐率与运算速度,并且重点优化神经运 算单元的乘加单元,极大减小硬件面积。本发明对神经网络学习算法进行硬件 映射,使得该神经网络处理器即能进行片上学习(On-line learning)又能进行离 线推理(Off-line inference)。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的 单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也 可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。 可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目 的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施 方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。 基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以 以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介 质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备 (可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例 的某些部分所述的方法。
以上仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神 和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护 范围之内。

Claims (6)

1.一种片上学习神经网络处理器,其特征在于,包括:神经状态控制器模块、数据接口模块、神经网络前向运算控制模块、神经网络学习算法控制模块、神经运算单元模块、神经元权值缓存区模块、激活函数模块、数据缓存区模块连接、随机初始化模块以及数据预处理模块;
所述神经状态控制器模块分别与所述数据接口模块、神经元权值缓存区模块、神经网络前向运算控制模块、神经网络学习算法控制模块、激活函数模块、数据缓存区模块连接,所述神经状态控制器模块控制数据接口模块进行数据交互,并监控所述神经网络前向运算控制模块、神经网络学习算法控制模块的工作状态,同时产生当前的神经工作状态,并控制所述神经运算单元模块、神经网络前向运算控制模块、神经网络学习算法控制模块根据当前神经工作状态进行同步工作;
所述神经运算单元模块根据系统配置的运算类型及运算规模对输入数据进行神经运算,可采用基于Booth算法设计的一种高速低功耗流水线乘法器构成一种二维运算阵列结构,可进行高速低功耗的神经网络卷积运算及矩阵乘累加运算,可通过编程配置神经运算类型及运算规模;
所述片上学习神经网络处理器通过将神经网络学习算法进行硬件映射,所述神经网络学习算法控制模块根据系统配置的算法进行控制神经网络进行学习;
所述神经网络学习算法控制模块采用误差反向传播算法;
所述误差反向传播算法采用可变步长学习,加入动态最优学习因子、动量因子及自适应学习率,并且对算法进行硬件映射,可编程选择训练算法;
所述数据预处理模块将神经网络输入、输出数据进行预处理;
其中对神经网络输入数据可采用零均值化、归一化、中心化、白化的方法进行预处理;对神经网络输出数据可采用线性回归、逻辑回归、多项式回归的方法进行预处理;
所述随机初始化模块与所述神经元权值缓存区模块相连,所述随机初始化模块产生随机数据对神经元权值缓存区进行随机初始化;
所述随机初始化模块采用线性同余法LCG、梅森旋转法、线性反馈移位寄存器的方法实现。
2.如权利要求1所述的片上学习神经网络处理器,其特征在于,所述神经网络前向运算控制模块分别与所述神经运算单元模块、神经网络学习算法控制模块、神经状态控制器模块连接;
所述神经网络前向运算控制模块通过数据总线将神经元权值缓存区、数据缓存区内的数据载入到神经运算单元模块进行神经元运算,并将神经运算单元的运算结果载入到激活函数模块进行神经元激活运算,神经元激活运算完成后将运算结果缓存入数据缓存区模块中;
所述神经网络前向运算与神经网络反向传播运算复用同一神经运算单元模块,且所述神经运算单元模块的运算类型及运算规模可以通过编程配置。
3.如权利要求2所述的片上学习神经网络处理器,其特征在于,所述神经元权值缓存区模块与所述数据接口模块、随机初始化模块、数据预处理模块连接,离线推理模式下所述神经元权值缓存区模块从数据接口模块载入神经元权值与偏置数据,片上学习模式下,所述神经元权值缓存区读取所述随机初始化模块输出的随机数据作为输入数据。
4.如权利要求3所述的片上学习神经网络处理器,其特征在于,所述激活函数模块对神经运算结果进行非线性映射,采用数字电路方法来拟合神经网络运算中所需的激活函数;
所述数字电路方法由高效的组合逻辑电路实现,可由多输入与门、或门实现。
5.如权利要求4所述的片上学习神经网络处理器,其特征在于,所述数据接口模块与所述神经状态控制器模块、数据缓存区模块、神经元权值缓存区模块连接,离线推理模式下所述数据接口模块负责将预测数据及神经网络配置参数载入数据缓存区中,将神经元权值与偏置数据载入至神经元权值缓存区中,片上学习模式下,所述数据接口模块负责将训练样本数据及神经网络配置参数载入到数据缓存区中。
6.如权利要求5所述的片上学习神经网络处理器,其特征在于,所述数据缓存区模块与所述数据接口模块、数据预处理模块、激活函数模块连接,所述数据缓存区模块负责缓存从数据接口模块输入的数据及神经运算结果数据;
所述数据缓存区模块采用乒乓缓存设计,加入缓存数据预取技术。
CN201710691146.9A 2017-08-14 2017-08-14 一种片上学习神经网络处理器 Expired - Fee Related CN107480782B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710691146.9A CN107480782B (zh) 2017-08-14 2017-08-14 一种片上学习神经网络处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710691146.9A CN107480782B (zh) 2017-08-14 2017-08-14 一种片上学习神经网络处理器

Publications (2)

Publication Number Publication Date
CN107480782A CN107480782A (zh) 2017-12-15
CN107480782B true CN107480782B (zh) 2020-11-10

Family

ID=60600212

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710691146.9A Expired - Fee Related CN107480782B (zh) 2017-08-14 2017-08-14 一种片上学习神经网络处理器

Country Status (1)

Country Link
CN (1) CN107480782B (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108153190B (zh) * 2017-12-20 2020-05-05 新大陆数字技术股份有限公司 一种人工智能微处理器
CN108038542B (zh) * 2017-12-27 2022-01-07 上海闪易半导体有限公司 一种基于神经网络的存储模块、模组及数据处理方法
CN109564638B (zh) * 2018-01-15 2023-05-26 深圳鲲云信息科技有限公司 人工智能处理器及其所应用的处理方法
CN108345934B (zh) * 2018-01-16 2020-11-03 中国科学院计算技术研究所 一种用于神经网络处理器的激活装置及方法
CN108334474B (zh) * 2018-03-05 2021-11-19 山东领能电子科技有限公司 一种基于数据并行的深度学习处理器架构及方法
CN108416311B (zh) * 2018-03-14 2022-04-19 电子科技大学 一种基于可编程门阵列和坐标旋转处理的方位角获取方法
CN108416435B (zh) * 2018-03-19 2020-07-31 中国科学院计算技术研究所 一种具有低带宽激活装置的神经网络处理器及其方法
CN110363291B (zh) * 2018-03-26 2022-02-08 上海寒武纪信息科技有限公司 神经网络的运算方法、装置、计算机设备和存储介质
CN108520297B (zh) * 2018-04-02 2020-09-04 周军 可编程深度神经网络处理器
CN108596331A (zh) * 2018-04-16 2018-09-28 浙江大学 一种细胞神经网络硬件架构的优化方法
CN109272112B (zh) * 2018-07-03 2021-08-27 北京中科睿芯科技集团有限公司 一种面向神经网络的数据重用指令映射方法、系统及装置
CN110766130B (zh) * 2018-07-28 2022-06-14 华中科技大学 一种bp神经网络学习电路
CN108984426B (zh) * 2018-08-03 2021-01-26 北京字节跳动网络技术有限公司 用于处理数据的方法和装置
CN110929855B (zh) * 2018-09-20 2023-12-12 合肥君正科技有限公司 一种数据交互方法和装置
CN109253985B (zh) * 2018-11-28 2022-01-11 东北林业大学 基于神经网络的近红外光谱识别古筝面板用木材等级的方法
CN109919318B (zh) * 2018-12-14 2023-08-08 创新先进技术有限公司 数据处理方法、装置和设备
CN110110850A (zh) * 2019-04-29 2019-08-09 山东浪潮人工智能研究院有限公司 基于fpga前向反向可复用的处理单元实现方法
CN110197260B (zh) 2019-06-06 2020-10-02 百度在线网络技术(北京)有限公司 一种数据处理方法及装置
CN112396153A (zh) * 2019-08-13 2021-02-23 阿里巴巴集团控股有限公司 一种用于深度学习的加速装置及计算装置
CN110598309B (zh) * 2019-09-09 2022-11-04 电子科技大学 一种基于强化学习的硬件设计验证系统及方法
CN111027691B (zh) * 2019-12-25 2023-01-17 上海寒武纪信息科技有限公司 用于神经网络运算、训练的装置、设备及板卡
US20210350221A1 (en) * 2020-05-05 2021-11-11 Silicon Laboratories Inc. Neural Network Inference and Training Using A Universal Coordinate Rotation Digital Computer
CN111783967B (zh) * 2020-05-27 2023-08-01 上海赛昉科技有限公司 一种适用于专用神经网络加速器的数据双层缓存方法
CN111626414B (zh) * 2020-07-30 2020-10-27 电子科技大学 一种动态多精度神经网络加速单元
CN112115638B (zh) * 2020-08-28 2023-09-26 合肥工业大学 基于改进Adam算法优化神经网络的变压器故障诊断方法
CN111832720B (zh) * 2020-09-21 2020-12-29 电子科技大学 一种可配置神经网络推理与在线学习融合计算电路
CN112819141A (zh) * 2021-02-01 2021-05-18 浪达网络科技(浙江)有限公司 一种基于深度神经网络的信息处理系统
CN114897800A (zh) * 2022-04-22 2022-08-12 南京航空航天大学 基于SiC神经网络芯片的超高速X射线图像识别方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105681628B (zh) * 2016-01-05 2018-12-07 西安交通大学 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法
CN106228238B (zh) * 2016-07-27 2019-03-22 中国科学技术大学苏州研究院 现场可编程门阵列平台上加速深度学习算法的方法和系统
CN106650931A (zh) * 2016-12-09 2017-05-10 曙光信息产业(北京)有限公司 混合精度深度学习算法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于流水线可重构结构的可重构算法研究及AES算法实现;刘洋;《中国优秀硕士学位论文全文数据库 信息科技辑》;20091115(第11期);第I138-10页 *

Also Published As

Publication number Publication date
CN107480782A (zh) 2017-12-15

Similar Documents

Publication Publication Date Title
CN107480782B (zh) 一种片上学习神经网络处理器
CN109901878B (zh) 一种类脑计算芯片及计算设备
Zhao et al. F-CNN: An FPGA-based framework for training convolutional neural networks
Himavathi et al. Feedforward neural network implementation in FPGA using layer multiplexing for effective resource utilization
Rothmann et al. A survey of domain-specific architectures for reinforcement learning
CN108090565A (zh) 一种卷积神经网络并行化训练加速方法
CN108090560A (zh) 基于fpga的lstm递归神经网络硬件加速器的设计方法
CN108763159A (zh) 一种基于fpga的lstm前向运算加速器
Taha et al. Memristor crossbar based multicore neuromorphic processors
CN110163359A (zh) 一种计算装置及方法
Gupta et al. FPGA implementation of simplified spiking neural network
CN108320018A (zh) 一种人工神经网络运算的装置及方法
Jokar et al. A novel nonlinear function evaluation approach for efficient FPGA mapping of neuron and synaptic plasticity models
He et al. A low-cost FPGA implementation of spiking extreme learning machine with on-chip reward-modulated STDP learning
Zhang et al. Implementation and optimization of the accelerator based on FPGA hardware for LSTM network
Liu et al. A low power and low latency FPGA-based spiking neural network accelerator
Gankidi FPGA accelerator architecture for Q-learning and its applications in space exploration rovers
Wang et al. Energy efficient spiking neural network processing using approximate arithmetic units and variable precision weights
Hammerstrom Digital VLSI for neural networks
Maliţa et al. Heterogeneous computing system for deep learning
Przybył et al. The method of hardware implementation of fuzzy systems on FPGA
Skibinsky-Gitlin et al. Cyclic reservoir computing with FPGA devices for efficient channel equalization
Santos et al. Artificial neural network acceleration on FPGA using custom instruction
Perez-Garcia et al. Multilayer perceptron network with integrated training algorithm in FPGA
Mehta et al. High performance training of deep neural networks using pipelined hardware acceleration and distributed memory

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20201110

Termination date: 20210814