手动推导softmax神经网络反向传播求导过程 |
您所在的位置:网站首页 › 三角函数公式求导过程图 › 手动推导softmax神经网络反向传播求导过程 |
导读:
softmax的前世今生系列是作者在学习NLP神经网络时,以softmax层为何能对文本进行分类、预测等问题为入手点,顺藤摸瓜进行的一系列研究学习。其中包含: 1.softmax函数的正推原理,softmax的代数和几何意义,softmax为什么能用作分类预测,softmax链式求导的过程。 2.从数学的角度上研究了神经网络为什么能通过反向传播来训练网络的原理。 3.结合信息熵理论,对二元交叉熵为何适合作为损失函数进行了探讨。 通过对本系列的学习,你可以全面的了解softmax的来龙去脉。如果你尚不了解神经网络,通过本系列的学习,你也可以学到神经网络反向传播的基本原理。学完本系列,基本神经网络原理就算式入门了,毕竟神经网络基本的网络类型就那几种,很多变种,有一通百通的特点。 网上对softmax或是神经网络反向传播知识的整理,基本都通过一个长篇大论堆积出来,一套下来面面俱到但又都不精细。本文将每个环节拆开,分别进行详细介绍,即清晰易懂,又减轻了阅读负担,增加可读性。本文也借鉴了其他作者的内容,并列举引用,希望大家在学习过程中能有所收获 本章内容提要:上一篇文章讲解了神经网络的正向传播和反向传播原理,以及神经网络反向传播求导的时候,究竟是对谁求导。传送门:神经网络正向传播及反向传播原理分析——softmax前世今生系列(5) 本文就开始讲解神经网络反向传播的求导过程。 一、场景描述阅读本文前最好看一下上一篇文章,本文是单纯的推导过程,适合有面试需要,或是想写原生神经网络代码,或是对神经网络原理感兴趣的读者。 介于部分推理过程不复杂但是用公式编辑器写起来太复杂,这里就直接引用笔记中的内容,结合笔记给出关键步骤的说明。 二、反向传播求导过程分解由上一篇文章可知我们的目标是求下面这个导数: 本节目标是完成如下求导: 在BP神经网络中交叉熵作为损失函数的原理——softmax前世今生系列(4)这篇文章中,我们知道交叉熵的表达式如下: 对Loss函数求导: 已知: 我们对Si求导,其实是对Si中的 (2)softmax层对输出层求导 本节目标是完成如下求导: 已知softmax的表达式为: 根据导数的特性,我们求导的对象是Zi,因此Zi为未知数,Zj为常数,因此有: 所以求导过程分为i=j时,ij时,两种情况来讨论: 1.当 i = j 时,求导过程如下: 即: 2.当 i j 时,求导过程如下: 即: (3)输出层对权重矩阵求导 本节目标是完成如下求导: 以Zi为例,对Z1求导: 输入数据X为: 知道权重矩阵为 因此输入层与权重矩阵相乘,可表示为: 根据上述描述,令: 对权重矩阵求导,当i=1时,则有如下: 得: 此时我们分别求出了三个偏导数,将三个偏导数合并起来(相乘),因为softmax层对输出层的偏导数有两种情况,因此链式求导的结果也分 i = j 和 i j 两种情况: 化简结果: 将两种情况合并起来: 由于: 所以得: 因为输入X在此处可以作为一个常量处理,所以最终有: 对于简单的单层网络(即输入层和输出层之间只有一个权重矩阵相连接),损失函数反向传播到权重矩阵的损失值,就是上述表达式。在网络中表达的意义就是经过softmax层计算后的概率分布Si,与真实的概率分布yi之差。 四、总结通过对本文以及上篇文章的学习,我们学会了神经网络的反向传播原理以及手动推导了网络的求导过程。对神经网络有了更深一步的认识。此时你已经是半个神经网络“专家”了。上可调侃原理,下可手推公式。 但半个“专家”终究是不够的,还有很多细节问题需要搞清楚。比如,我们得到反向传播的误差后,如何利用这个误差去更新权重矩阵?是对权重进行加减乘除吗?为什么要进行加减乘除,数学原理是什么?反向传播中的梯度爆炸和梯度消失是什么原理?且听下回分解。 传送门:稍后 五、附学习笔记如下:
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |