反向传播算法推导—全连接神经网络
反向传播算法是人工神经网络训练时采用的一种通用方法,在现代深度学习中得到了大 规模的应用。全连接神经网络(多层感知器模型,MLP),卷积神经网络(CNN),循环神 经网络(RNN)中都有它的实现版本。算法从多元复合函数求导的链式法则导出,递推的 计算神经网络每一层参数的梯度值。算法名称中的“误差”是指损失函数对神经网络每一层 临时输出值的梯度。反向传播算法从神经网络的输出层开始,利用递推公式根据后一层的误 差计算本层的误差,通过误差计算本层参数的梯度值,然后将差项传播到前一层(w, x,)+b这个神经元接受的输入信号为向量(),向量()为输入向量的组合权重,为徧置项,是标量。神经儿对输入冋量进行加权求和,并加上偏置项最后经过激活函数变换产生输出为表述简洁,我们把公式写成向量和矩阵形式。对每个神经元,它接受的来自前一层神经元的输入为向量,本节点的权重向量为,偏置项为,该神经元的输出值为先计算输入向量与权重向量的内积,加上偏置项,再送入一个函数进行变换,得到输出这个函数称为激活函数,典型的是函数。为什么需要激活函数以及什么样的函数可以充当激活函数,在之前的公众号文章“理解神经网终的激活函数”中已经进行了介绍。神绎网络一般有多个层。第一层为输入层,对应输入向量,神绎元的数量等于特征向量的维数,这个层不对数据进行处理,只是将输入向量送入下一层中进行计算。中间为隐含层,可能有多个。最后是输出层,神经元的数量等于要分类的类别数,输出层的输岀值被用来做分类预测。下面我们来看一个简单神经网络的例了,如下图所示这个网络有层。第一层是输入层,对应的输入向量为,有个神经元,写成分量形式为(),它不对数据做任何处理,直接原样送入下一层。中间层有个神经元,接受的输入数据为向量,输出向量为,写成分量形式为。第三个层为输出层,接受的输入数据为向量,输出向量为,写成分量形式为()。第一层到第层的权重矩阵为(,第二层到第三层的权重矩阵为()。权重矩阵的每一行为一个权重向量,是层所有神经元到本层某一个神经儿的连接权重,这里的上标表小层数如果激活函数选用函数,则第二层神经元的输出值为+(-(+0)+(1+(0)(-(()第三层神经元的输出值为如果把代入上面二式中,可以将输出向量表示成输出向量的函数。通过调整权重矩阵和偏置项可以实现不同的函数映射,因此神经网终就是一个复合函数需要解决的·个核心问题是·旦神经网络的结构(即神经元层数,每层神经元数量)桷定之后,怎样得到权重矩阵和偏置项。这些参数是通过训练得到的,这是本文推导的核心任务个简单的例子首先以前面的层神经网络为例,推导损失函数对神经网络所有参数梯度的计算方法假设训练样本集中有个样本()。其中为输入向量,为标签向量。现在要确定神经网络的映射函数:什么样的函数能很好的解释这批训练栟本?答案是神经网络的预测输出要尽可能的接近样本的标签值,即在训练集上最小化预测误差,如果使用均方误差,则优化的目标为:∑‖()-其中()和都是向量,求和项内部是向量的范数平方,即各个分量的平方和。上面的误差也称为欧氏距离损失函数,除此之外还可以使用其他损失函数,如交叉熵、对比损失等。优化目标函数的自变量是各层的权重矩阵和梯度向量,一般情况下无法保证目标函数是凸函数,因此这不是一个凸优化问题,有陷入局部极小值和鞍点的风险(对于这些概念和问题之前的公众号文章“理解梯度下降法”,“理解凸优化”中己经做了详细介绍)这是神经网络之前一直被诟病的一个问题。可以使用梯度下降法进行求解,使用梯度下降法需要计算出损失函数对所有权重矩阵、偏置向量的梯度值,接下来的关键是这些梯度值的计算。在这里我们先将问题简化,只考虑对单个样本的损失函数()-‖后面如果不加说明,都使用这种单样木的损失函数。如果计算出了对单个样木损失函数的棁度值,对这些梯度值计算均值即可得到整个目标函数的梯度值。和(要被代入到网络的后一层中,是复合函数的内层变量,我们先考虑外层的和。权重矩阵是一个x的矩阵,它的两个行分别为向量(和是个维的列向量,它的两个元素为()和()。网络的输入是向量,第一层映射之后的输出是向量首先计算损失函数对权重矩阵每个元素的偏导数,将欧氏距离损尖函数展开,有((+))(())6(如果,即对权重矩阵第行的元素求导,上式分了中的后半部分对来说是常数。根据链式法则有S()+()O如果,即对矩阵第二行的元素求导,类似的有:可以统一写成可以发现,第一个下标决定了权重矩阵的第行和偏置向量的第个分量,第二个下标决定了向量的第个分量。这可以看成是一个列向量与一个行向量相乘的结果,写成矩阵形式为上式中乘法⊙为向量对应元素相乘,第二个乘法是矩阵乘法。是个维列向量,+也是一个维列向量,两个向量执行⊙运算的结果还是个维列向量。是一个元素的列向量,其转置为维行向量,前面这个:维列向量与的乘积为的矩阵,这正好与矩阵的尺寸相等。在上面的公式中,权重的偏导数在求和项中由部分组成,分别是网络输出值与真实标签值的误差激活区数的导数+(),本层的输入值。神经网络的输出值、激活函数的导数值本层的输入值都可以在正向传播吋得到,因此可以晑效的计算出来。对所有训练样本的偏导数计算均值,可以得到总的偏导数对偏置项的偏导数为:如果上式分子中的后半部分对来说是常数,有:()⊥()如果类似的有这可以统写成:写成矩阵形式为偏置项的导数由两部分组成,分别是神经网络预测值与真实值之间的误差,激活函数的导数值,与权重矩阵的偏导数相比唯一的区别是少了。接下来计算对和的偏导数,由于是复合函数的内层,情况更为复杂。()是个的短阵,它的个行向量为(),(,(,(。偏置项()是维向量,个分量分别是(),(,(),(。首先计算损失函数对的元素的偏导数:而上式分子中的两部分都有,因此都与有关。为了表述简活,我们令:根据链式法则有:其巾((和和都是标量和()是两个()向量的内积,的每一个分量都是()的函数。接下来计算和这里的一是个向量,衣示的每个分量分别对求导。当时有:后面个分量相对于求导变量(都是常数。类似的当时有:()0)(()和时的结果以此类推。综合起来有:同理有:()十如果令合并得到()()[()-)。()。()写成矩阵形式为()最后计算偏置项的偏导数()类似的我们得到:合并后得到()写成矩阵形式为:(0)至此,我得到了这个简单网络对所有参数的偏导数,接下来我们将这种做法推广到更般的情况。从上面的结果可以看岀一个规律,输出层的权重矩阵和偏置向量梯度计算公式中共用了()-)()对」隐含层也有类似的结果完整的算法现在考虑一般的情况。假设有个训练样本(),其中为输入向量,为标签向量。训练的目标是最小化样木标签值与神经网络预测值之闩的误差,如果使用均方误差,则优化的目标为:其中为神经网络所有参数的集合,包括各层的权重和偏置。这个最优化问题是·个不带约束条件的问题,可以用梯度下降法求解。上面的误差函数定义在整个训练样本集上,梯度下降法每一次迭代利用了所有训练样本,称为批量棁度卜降法。如果样木数量很大,每次迭代都用所有样木进计算成木太高。为了解决这个问题,可以采用单样本梯度下降法,我们将上面的损失函数写成对单个样本的损失函数之和:定义对单个样本()的损失函数为)=-()如果采用单个样本进行迭代,梯度下降法第次迭代时参数的更新公式为:nV如果要用所有样本进行迭代,根据单个样本的损失函数梯度计算总损失梯度即可,即所有样本梯度的均值用梯度下降法求解需要初始化优化变量的值。一般初始化为一个随机数,如用正态分布(a)产生这些随机数,其中G是一个很小的正数到日前为止还有一个关键问题没有解决:日标函数是一个多层的复合函数,因为神经网络中每一层都有权重矩阵和偏置向量,且每一层的输出将会作为下一层的输入。因此,直接计算损失函数对所有权重和偏置的梚度很复杂,需要使用复合函数的求导公式进行递推计算几个重要的结论在进行推导之前,我们首先来看下面几种复合函数的求导。又如下线性映射函数:其中是维向量,是×的矩阵,是维向量。问题:假设有函数,如果把看成常数,看成的函数,如何根据函数对的梯度值Ⅴ计算函数对的梯度值Ⅴ?根据链式法则,由于只和有关,和其他的≠无关,因此有:c∑(对于的所有元素有:写成矩阵形式为:问题:如果将看成常数,将看成的函数,如何根据V计算Ⅴ?由于任意的和所有的都有关系,根据链式法则有写成矩阵形式为这是一个对称的结果,在计算函数映射时用矩阵乘以向量得到,在求梯度时用矩阵的转置乘以的梯度得到的梯度。问题:如果有向量到向量的映射:
- 2020-12-09下载
- 积分:1
ALINX黑金Zynq7000开发平台配套教程
当我们拿刡开収板是否应该测试一下收刡癿开収板是否功能正常,以及各个接口工作是否工作正常。在出厂前我们已经在SD卡里存储了启劢程序和操作系统,所以开収板上电就能启劢幵可以用杢测试各个部分接口和电路癿工作是否正常。通过测试也使大家对我们开収板癿功能有一个大致癿认识。ALINXOALNX黑金2ynq7000开发平台配套教程序首先感谢大家购买黑金动力社区出品的zYNQ7000的开发板AX7010和AX7020!您对我们和我们产品的支持和信任给我们增添了永往直前的信心和勇气。赛灵思公司xinx)于2012年推出zynq7000SOC芯片解决方案,该方案将双核ARMCortex-A9和 FPGA Fabric集成在一颗芯片上,通过内部总线连接,ARM和FPGA之间的通信速度大大提高,从而提高芯片整体性能。但同时,ARM和FPGA两门之前独立的软硬件学科在一颗芯片上应用,大大提高了芯片入门门槛。黑金这两年一直在筹划推出Zynq7000S0C系列硬件开发平台,同时编著一套教程,循序渐进,由浅入深,旨在让学员很轻松的入门,体验最前沿的ARM+ FPGA SOC技术。本教程根据不同的侧重点分4部分:第一部分是基础篇,分别介绍开发板的上电捡测,硬件电路的介绍,zYNQ芯片的介绍,软件 Vivado的安装, Linux系统虚拟机的安装,PS和P接口技术的介绍和zYNQ开发流程的介绍。通过基础篇让大家对黑金开发板AX7010/A×7020及zYNQ芯片和开发有一个总体认识,为后面几部分的学习打好基础。第二部分是逻辑篇,在逻辑篇里我们把ZYNQ芯片当做普通的FPGA来使用,结合开发板和厶YNQ芯片的资源实现纯逻辑的开发。我们会通过大量的应用实例让大家了解和掌握FPGA的 Verilog程序的设计及实现。AX7010/AX7020开发平台的硬件资源。播下—粒种子,收获一片森林”,更是黑金 ALINX硬件开发的美好愿望,同时我们会在黑金动力社区http://www.hejin.org和大家一起讨论,一起学习,一起进步,一起成长。ALⅠNX黑金mq700.列开发宏典http://www.heijin.orgALINXOALNX黑金2ynq7000开发平台配套教程目录序目录......4第一部分基础篇…第1章AX7010/AX7020开发板开箱检测.1.1准备工作.1.1.1硬件配置….112USB转UART驱动安装…1.1.3终端登录工具 Securecrt安装1.2外设连接141.3实验操作第2章zYNQ7000芯片的简介……172.1PS内部资源介绍……2.1PL内部资源介绍.….…19第3章 Vivado软件安装.31WⅣVADO软件介绍…。,乙3.2 VIVADO软件版本…033WⅣVADo软件安装21第4章Linuκ系统虚拟机的安装2941虚拟机的安装294.2安装 ubuntu30第5章PS和PL接口技术详解.4151AⅪ接口标准介绍4152zYNQ的AXI资源445.3P端的AⅪ接口设计……,455.4 AXI Interconnect.………第6章zYQ芯片开发流程的简介……4961开发工具介绍…4962开发流程说明……50第二部分逻辑篇52第7章 FPGA LED控制实验……5271硬件介绍.527.2创建工程537.3编写流水灯的 verilog代码….ALⅠNX黑金mq700.列开发宏典http://www.heijin.orgALINXOALNX黑金2ynq7000开发平台配套教程74添加XDC管脚约束文件7.5编译7.6下载和调试…翻。着69第8章HDMI输出实验7381HDMI及TMDS原理738.2硬件介绍.758.3程序设计……/684添加XDC管脚约束文件798.5编译和下载80第三部分SDK篇81第9章 Hello world实验….18191 Vivado工程创建8192zYNQ系统的配置…9.3硬件导入SDK.9994SDK软件编程….10295下载和调试.,105第10章P端和PS端的协同设计流水灯实验110101 Vivado工程创建.110102zYNQ系统的配置11110.3添加XDC管脚约束文件….121104编译生成比特流文件122105硬件导入SDK12310.6SDK软件编程125107下载和调试…127第11章定时器中断实验131111中断控制器和计数器..131112zYNQ系统的配置13211.3硬件导入SDK.135113SDK软件编程..137114下载和调试…1D妻第12章按键实验..142121PS和PL共亨中断142122 Vivado工程创建…14312.3添加按键IP.……14512.4添加按键管脚约束15212.5编译生成比特流文件.153126硬件导入SDK153127SDK软件编程155ALⅠNX黑金mq700.列开发宏典http://www.heijin.orgALINXOALNX黑金2ynq7000开发平台配套教程128下载和调试…161第13章自定义IP实验166131RTC时钟DS1302166132Vⅳvado工程创建.118133创建自定义IP134添加RTC管脚约束185135编译生成比特流文件…∴18513.5硬件导入SDK.186136SDK软件编程.186137下载和调试…189第14章VDMA实验硬件系统搭建….19314.1硬件构架193142搭建硬件工程…..….194143添加HDMI管脚约束…223144编译生成比特流文件…22414.5硬件导入SDK224第15章VDMA实验SDK软1件.225151SDK软件编程..225152程序说明22615.3图像数据生成方法…::::::::::::::.·t23154下载和调试235第16章程序固化和启动239161开发板启动流程239162 Vivado工程修改……163生成FSBL可执行文件….245164BOOT.BIN文件的生成165烧写 FLASH并启动254166SD卡启动257第17章 Linux开发环境的搭建………259171安装Lnu版本的SDK259172安装32位支持工具包270173安装 OpenSSL库第18章∪-boot的编译和启动.…273181∪-Boot原理及实现182∪-Boot的编译…279183生成 BOOTBIN文件283184 Uboot启动实验.295第19章内核的编译299ALⅠNX黑金mq700.列开发宏典http://www.heijin.orgALINXOALNX黑金2ynq7000开发平台配套教程191 Linux内核介绍299192 Linux内核源码编译301193设备树 Device tree的编译.194文件系统第20章SD卡的制作20.1SD卡分区31020.2复制BOOT.BIN文件31420.3复制编译后的内核文件315204复制编译后的设备树文件·:..31520.5复制文件系统31620.6 Linux sd卡启动第21章 Linux系统下的 hello world实验…322211 nfs server安装和配置..322212编写 helloworld程序21.3编译 helloworld程序.33021.4运行……30第22章 Linux系统下的GPIO应用实践.332221 sysfs方式控制GPIO33222.2编写GPIO应用程序33622.3编译GPIO程序…:::::::::::·:340224运行和实验341ALⅠNX黑金mq700.列开发宏典http://www.heijin.orgALINXOALNX黑金2ynq7000开发平台配套教程第一部分基础篇第1章AX7010/AX7020开发板开箱检测当我们拿到开发板是否应该测试一下收到的开发板是否功能正常,以及各个接口工作是否工作正常。在出厂前我们已经在SD卡里存储了启动程序和操作系统,所以开发板上电就能启动并可以用来测试各个部分接口和电路的工作是否正常。通过测试也使大家对我们开发板的功能有一个大致的认识。11准备工作1.1.1硬件配置开发板的上电检测需要以下的设备。其中SD卡里我们已经为用户存储了ARM的Boot启动程序和系统的镜像文件 lmage。红色USB线用于开发板和PC之间的串口通信。HDM线和HDMI显示器用于显示AX7010/AX7020开发板翰出的 Ubuntu界面,网线用于开发板连接 Internet网络,USB鼠标和键盘用于人机交互操作。因为开发板上只有一个USB口,这里需要连接一个∪ SB Hub设备来扩展多个USB口连接USB键盘和鼠标。AX7010开发板或AX7020开发板◇5V直流电源适配器(开发板自带)令 Micro sd卡〔开发板自带)mini usB数据线2根(开发板自带)今网线◇HDMI线和HDMI显示器◇USB鼠标和键盘r USB Hub◇PC机ALⅠNX黑金mq700.列开发宏典http://www.heijin.orgALINXOALNX黑金2ynq7000开发平台配套教程下图为开发板自带的测试设备:S ZNO(1).AX7010/AX7020开发板;(2).SD卡读卡器;(3).+5V电源;④4).2根USB线;(5)SD卡下图为用户自己需要准备的测试设备USB Hub网线USB鼠标图图图图图图围图国园USB鼠标HDMI显示器ALⅠNX黑金mq700.列开发宏典http://www.heijin.orgALINXOALNX黑金2ynq7000开发平台配套教程112USB转UART驱动安装测试前我们需要安装∪SB转串口的驱动软件(05软件工具及驱动CP2l0 x Windows Drivers.zip),不然无法做串口通信测试。驱动安装好以后,用红色USB线连接电脑USB口和开发板上的∪ART口(7)进行连接,然后打开电脑的设备管理器,设备管理器能够找到串口设备CP210x,我机器上映射的是COM3。4端口(COM和LPTPH Silicon Labs CP210x USB to UART Bridge(COM311.3终端登录工具 SecureCrt安装终端工具有很多, putty, teraterm, Windows自带终端工具, SecureCRT等等,众多终端工具中,比较下来,还是 Securecrt最好用,我们在资料的05_软件工具及驱动 Securecrt目录下为大家准备了绿色免安装的 secureCRT软件。下面简单介绍基于 SecureCrT串口终端的创建(在后面串口终端打印启动信息,需要用到双击 Secure CRTexe图标112005/12/917:29应用程序打展273ORDER TXT2006/5/3113:30文本文档6README.TXT207/3/3013:51文本文档SecureCRT. CH2007/3/2111:57编译的HmL帮aaSecureCRT.EXE2007/4/81:12应用程序1.890sN. txt207/6/1115:03文本文档SSH2Client43. d1.2007//210:52应用程序扩展4663SSH2Core43.all2007/4/210:52应用程序扩展1,058第一次使用会弹出以下对话框,点击OKe CRTThis is the first time that you have runSecureCRT?. SecureCRT needs to set a folder wherefy a fol der belPressing Cancel will exit the application wi thoutsetting the confi gurati on folder.ADministrator App Data RoaninzlanDwke cOnf」C点击YES。ALⅠNX黑金mq700.列开发宏典10http://www.heijin.org
- 2020-07-01下载
- 积分:1