谁知道这个函数求导怎么导啊!!急!!

Softmax函数求导过程&&ZZ
softmax函数
softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类!
假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的softmax值就是
<img DATA-ORIGINAL-src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="//upload-images.jianshu.io/upload_images/e7977f8bfddc9f.PNG" DATA-ORIGINAL-WIDTH="150" DATA-ORIGINAL-HEIGHT="96" DATA-ORIGINAL-FORMAT="image/png" DATA-ORIGINAL-FILESIZE="1835" STYLE="cursor: zoom-"
ALT="Softmax函数求导过程&&ZZ"
TITLE="Softmax函数求导过程&&ZZ" />
更形象的如下图表示:
<img DATA-ORIGINAL-src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="//upload-images.jianshu.io/upload_images/cd299a8d571d1e.PNG" DATA-ORIGINAL-WIDTH="678" DATA-ORIGINAL-HEIGHT="395" DATA-ORIGINAL-FORMAT="image/png" DATA-ORIGINAL-FILESIZE="204483" STYLE="cursor: zoom-"
ALT="Softmax函数求导过程&&ZZ"
TITLE="Softmax函数求导过程&&ZZ" />
softmax直白来说就是将原来输出是3,1,-3通过softmax函数一作用,就映射成为(0,1)的值,而这些值的累和为1(满足概率的性质),那么我们就可以将它理解成概率,在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标!
举一个我最近碰到利用softmax的例子:我现在要实现基于神经网络的句法分析器。用到是基于转移系统来做,那么神经网络的用途就是帮我预测我这一个状态将要进行的动作是什么?比如有10个输出神经元,那么就有10个动作,1动作,2动作,3动作...一直到10动作。(这里涉及到nlp的知识,大家不用管,只要知道我现在根据每个状态(输入),来预测动作(得到概率最大的输出),最终得到的一系列动作序列就可以完成我的任务即可)
原理图如下图所示:
<img DATA-ORIGINAL-src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="//upload-images.jianshu.io/upload_images/debe62a989306.PNG" DATA-ORIGINAL-WIDTH="798" DATA-ORIGINAL-HEIGHT="203" DATA-ORIGINAL-FORMAT="image/png" DATA-ORIGINAL-FILESIZE="42671" STYLE="cursor: zoom-"
ALT="Softmax函数求导过程&&ZZ"
TITLE="Softmax函数求导过程&&ZZ" />
那么比如在一次的输出过程中输出结点的值是如下:
[0.2,0.1,0.05,0.1,0.2,0.02,0.08,0.01,0.01,0.23]
那么我们就知道这次我选取的动作是动作10,因为0.23是这次概率最大的,那么怎么理解多分类呢?很容易,如果你想选取俩个动作,那么就找概率最大的俩个值即可~(这里只是简单的告诉大家softmax在实际问题中一般怎么应用)
softmax相关求导
当我们对分类的Loss进行改进的时候,我们要通过梯度下降,每次优化一个step大小的梯度,这个时候我们就要求Loss对每个权重矩阵的偏导,然后应用链式法则。那么这个过程的第一步,就是对softmax求导传回去,不用着急,我后面会举例子非常详细的说明。在这个过程中,你会发现用了softmax函数之后,梯度求导过程非常非常方便!
下面我们举出一个简单例子,原理一样,目的是为了帮助大家容易理解!
<img DATA-ORIGINAL-src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="//upload-images.jianshu.io/upload_images/5236230-eadf8dee40a00397.PNG" DATA-ORIGINAL-WIDTH="608" DATA-ORIGINAL-HEIGHT="403" DATA-ORIGINAL-FORMAT="image/png" DATA-ORIGINAL-FILESIZE="22341" STYLE="cursor: zoom-"
ALT="Softmax函数求导过程&&ZZ"
TITLE="Softmax函数求导过程&&ZZ" />
我们能得到下面公式:
z4 = w41*o1+w42*o2+w43*o3
z5 = w51*o1+w52*o2+w53*o3
z6 = w61*o1+w62*o2+w63*o3
z4,z5,z6分别代表结点4,5,6的输出,01,02,03代表是结点1,2,3往后传的输入.
那么我们可以经过softmax函数得到
<img DATA-ORIGINAL-src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="//upload-images.jianshu.io/upload_images/bd8.PNG" DATA-ORIGINAL-WIDTH="394" DATA-ORIGINAL-HEIGHT="105" DATA-ORIGINAL-FORMAT="image/png" DATA-ORIGINAL-FILESIZE="5645" STYLE="cursor: zoom-"
ALT="Softmax函数求导过程&&ZZ"
TITLE="Softmax函数求导过程&&ZZ" />
好了,我们的重头戏来了,怎么根据求梯度,然后利用梯度下降方法更新梯度!
要使用梯度下降,肯定需要一个损失函数,这里我们使用交叉熵作为我们的损失函数,为什么使用交叉熵损失函数,不是这篇文章重点,后面有时间会单独写一下为什么要用到交叉熵函数(这里我们默认选取它作为损失函数)
交叉熵函数形式如下:
<img DATA-ORIGINAL-src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="//upload-images.jianshu.io/upload_images/d27e94ac88afba6.PNG" DATA-ORIGINAL-WIDTH="185" DATA-ORIGINAL-HEIGHT="66" DATA-ORIGINAL-FORMAT="image/png" DATA-ORIGINAL-FILESIZE="2876" STYLE="cursor: zoom-"
ALT="Softmax函数求导过程&&ZZ"
TITLE="Softmax函数求导过程&&ZZ" />
其中y代表我们的真实值,a代表我们softmax求出的值。i代表的是输出结点的标号!在上面例子,i就可以取值为4,5,6三个结点(当然我这里只是为了简单,真实应用中可能有很多结点)
现在看起来是不是感觉复杂了,居然还有累和,然后还要求导,每一个a都是softmax之后的形式!
但是实际上不是这样的,我们往往在真实中,如果只预测一个结果,那么在目标中只有一个结点的值为1,比如我认为在该状态下,我想要输出的是第四个动作(第四个结点),那么训练数据的输出就是a4
= 1,a5=0,a6=0,哎呀,这太好了,除了一个为1,其它都是0,那么所谓的求和符合,就是一个幌子,我可以去掉啦!
为了形式化说明,我这里认为训练数据的真实输出为第j个为1,其它均为0!
那么Loss就变成了Loss =
-yilnaj(yi,aj的i,j均为下标,公式不好打),累和已经去掉了,太好了。现在我们要开始求导数了!
我们在整理一下上面公式,为了更加明白的看出相关变量的关系:
其中yj=1,,那么形式变为Loss = -lnaj
那么形式越来越简单了,求导分析如下:
参数的形式在该例子中,总共分为w41,w42,w43,w51,w52,w53,w61,w62,w63.这些,那么比如我要求出w41,w42,w43的偏导,就需要将Loss函数求偏导传到结点4,然后再利用链式法则继续求导即可,举个例子此时求w41的偏导为:
<img DATA-ORIGINAL-src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="//upload-images.jianshu.io/upload_images/5236230-ee3e84d.PNG" DATA-ORIGINAL-WIDTH="596" DATA-ORIGINAL-HEIGHT="325" DATA-ORIGINAL-FORMAT="image/png" DATA-ORIGINAL-FILESIZE="228909" STYLE="cursor: zoom-"
ALT="Softmax函数求导过程&&ZZ"
TITLE="Softmax函数求导过程&&ZZ" />
w51.....w63等参数的偏导同理可以求出,那么我们的关键就在于Loss函数对于结点4,5,6的偏导怎么求,如下:
这里分为俩种情况:
<img DATA-ORIGINAL-src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="//upload-images.jianshu.io/upload_images/0bd01cb3bad37.PNG" DATA-ORIGINAL-WIDTH="463" DATA-ORIGINAL-HEIGHT="297" DATA-ORIGINAL-FORMAT="image/png" DATA-ORIGINAL-FILESIZE="21592" STYLE="cursor: zoom-"
ALT="Softmax函数求导过程&&ZZ"
TITLE="Softmax函数求导过程&&ZZ" />
j=i对应例子里就是如下图所示:
比如我选定了j为4,那么就是说我现在求导传到4结点这!
<img DATA-ORIGINAL-src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="//upload-images.jianshu.io/upload_images/5236230-ef6d46ebe81fc8ee.PNG" DATA-ORIGINAL-WIDTH="585" DATA-ORIGINAL-HEIGHT="406" DATA-ORIGINAL-FORMAT="image/png" DATA-ORIGINAL-FILESIZE="22583" STYLE="cursor: zoom-"
ALT="Softmax函数求导过程&&ZZ"
TITLE="Softmax函数求导过程&&ZZ" />
那么由上面求导结果再乘以交叉熵损失函数求导
-lnaj,它的导数为-1/aj,与上面的aj(1-aj)相乘为aj-1(形式非常简单,这说明我只要正向求一次得出结果,然后反向传梯度的时候,只需要将它结果减1即可,后面还会举例子!)那么我们可以得到Loss对于4结点的偏导就求出了了(这里假定4是我们的预计输出)
第二种情况为:
<img DATA-ORIGINAL-src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="//upload-images.jianshu.io/upload_images/ae.PNG" DATA-ORIGINAL-WIDTH="411" DATA-ORIGINAL-HEIGHT="334" DATA-ORIGINAL-FORMAT="image/png" DATA-ORIGINAL-FILESIZE="18570" STYLE="cursor: zoom-"
ALT="Softmax函数求导过程&&ZZ"
TITLE="Softmax函数求导过程&&ZZ" />
这里对应我的例子图如下,我这时对的是j不等于i,往前传:
<img DATA-ORIGINAL-src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="//upload-images.jianshu.io/upload_images/c0ef8ab51b1795.PNG" DATA-ORIGINAL-WIDTH="599" DATA-ORIGINAL-HEIGHT="416" DATA-ORIGINAL-FORMAT="image/png" DATA-ORIGINAL-FILESIZE="26308" STYLE="cursor: zoom-"
ALT="Softmax函数求导过程&&ZZ"
TITLE="Softmax函数求导过程&&ZZ" />
那么由上面求导结果再乘以交叉熵损失函数求导
-lnaj,它的导数是-1/aj,与上面-ajai相乘为ai(形式非常简单,这说明我只要正向求一次得出结果,然后反向传梯度的时候,只需要将它结果保存即可,后续例子会讲到)这里就求出了除4之外的其它所有结点的偏导,然后利用链式法则继续传递过去即可!我们的问题也就解决了!
下面我举个例子来说明为什么计算会比较方便,给大家一个直观的理解
举个例子,通过若干层的计算,最后得到的某个训练样本的向量的分数是[ 2, 3, 4 ],
那么经过softmax函数作用后概率分别就是=[e^2/(e^2+e^3+e^4),e^3/(e^2+e^3+e^4),e^4/(e^2+e^3+e^4)]
[0.7,0.665],如果这个样本正确的分类是第二个的话,那么计算出来的偏导就是[0.7-1,0.665]=[0.3,0.665],是不是非常简单!!然后再根据这个进行back
propagation就可以了
到这里,这篇文章的内容就讲完了,我希望根据自己的理解,通过列出大量例子,直白的给大家讲解softmax的相关内容,让大家少走弯路,真心希望对大家的理解有帮助!欢迎交流指错!画图整理不易,觉得有帮助的给个赞呗,哈哈!
作者:忆臻HIT_NLP
链接:https://www.jianshu.com/p/ffa51250ba2e
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。"c语言函数求导"的糗事
你可能感兴趣:
糗事百科为大家收集了很多的c语言函数求导的糗事,各种关于c语言函数求导的爆笑经历、尴尬时刻和开心视频,想持续关注c语言函数求导的糗事就收藏本页吧.
扫码下载糗事百科app当前位置:
>>>已知函数y=xlnx(1)求这个函数的导数;(2)求这个函数的图象在点x=..
已知函数y=xlnx(1)求这个函数的导数;(2)求这个函数的图象在点x=1处的切线方程.
题型:解答题难度:中档来源:不详
(1)y=xlnx,∴y'=1×lnx+xo1x=1+lnx∴y'=lnx+1…(4分)(2)k=y'|x=1=ln1+1=1…(6分)又当x=1时,y=0,所以切点为(1,0)…(8分)∴切线方程为y-0=1×(x-1),即y=x-1…(12分).
马上分享给同学
据魔方格专家权威分析,试题“已知函数y=xlnx(1)求这个函数的导数;(2)求这个函数的图象在点x=..”主要考查你对&&函数的极值与导数的关系&&等考点的理解。关于这些考点的“档案”如下:
现在没空?点击收藏,以后再看。
因为篇幅有限,只列出部分考点,详细请访问。
函数的极值与导数的关系
极值的定义:
(1)极大值: 一般地,设函数f(x)在点x0附近有定义,如果对x0附近的所有的点,都有f(x)<f(x0),就说f(x0)是函数f(x)的一个极大值,记作y极大值=f(x0),x0是极大值点; (2)极小值:一般地,设函数f(x)在x0附近有定义,如果对x0附近的所有的点,都有f(x)>f(x0),就说f(x0)是函数f(x)的一个极小值,记作y极小值=f(x0),x0是极小值点。
极值的性质:
(1)极值是一个局部概念,由定义知道,极值只是某个点的函数值与它附近点的函数值比较是最大或最小,并不意味着它在函数的整个的定义域内最大或最小; (2)函数的极值不是唯一的,即一个函数在某区间上或定义域内极大值或极小值可以不止一个; (3)极大值与极小值之间无确定的大小关系,即一个函数的极大值未必大于极小值; (4)函数的极值点一定出现在区间的内部,区间的端点不能成为极值点,而使函数取得最大值、最小值的点可能在区间的内部,也可能在区间的端点。 判别f(x0)是极大、极小值的方法:
若x0满足,且在x0的两侧f(x)的导数异号,则x0是f(x)的极值点, 是极值,并且如果在x0两侧满足“左正右负”,则x0是f(x)的极大值点,f(x0)是极大值;如果在x0两侧满足“左负右正”,则x0是f(x)的极小值点,f(x0)是极小值。
求函数f(x)的极值的步骤:
(1)确定函数的定义区间,求导数f′(x); (2)求方程f′(x)=0的根; (3)用函数的导数为0的点,顺次将函数的定义区间分成若干小开区间,并列成表格,检查f′(x)在方程根左右的值的符号,如果左正右负,那么f(x)在这个根处取得极大值;如果左负右正,那么f(x)在这个根处取得极小值;如果左右不改变符号即都为正或都为负,则f(x)在这个根处无极值。
对函数极值概念的理解:
极值是一个新的概念,它是研究函数在某一很小区域时给出的一个概念,在理解极值概念时要注意以下几点:①按定义,极值点x0是区间[a,b]内部的点,不会是端点a,b(因为在端点不可导).如图②极值是一个局部性概念,只要在一个小领域内成立即可.要注意极值必须在区间内的连续点取得.一个函数在定义域内可以有许多个极小值和极大值,在某一点的极小值也可能大于另一个点的极大值,也就是说极大值与极小值没有必然的大小关系,即极大值不一定比极小值大,极小值不一定比极大值小,如图.&&③若fx)在(a,b)内有极值,那么f(x)在(a,b)内绝不是单调函数,即在区间上单调的函数没有极值.④若函数f(x)在[a,b]上有极值且连续,则它的极值点的分布是有规律的,相邻两个极大值点之间必有一个极小值点,同样相邻两个极小值点之间必有一个极大值点,一般地,当函数f(x)在[a,b]上连续且有有限个极值点时,函数f(x)在[a,b]内的极大值点、极小值点是交替出现的,⑤可导函数的极值点必须是导数为0的点,但导数为0的点不一定是极值点,不可导的点也可能是极值点,也可能不是极值点,&&&
发现相似题
与“已知函数y=xlnx(1)求这个函数的导数;(2)求这个函数的图象在点x=..”考查相似的试题有:
769869398251522526518089771880441281更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
按住视频可进行拖动
&正在加载...
收藏成功,可进入
查看所有收藏列表
当前浏览器仅支持手动复制代码
视频地址:
flash地址:
html代码:
通用代码:
通用代码可同时支持电脑和移动设备的分享播放
用爱奇艺APP或微信扫一扫,在手机上继续观看
当前播放时间:
一键下载至手机
限爱奇艺安卓6.0以上版本
使用微信扫一扫,扫描左侧二维码,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:
设备搜寻中...
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
连接失败!
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
部安卓(Android)设备,请点击进行选择
请您在手机端下载爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:
爱奇艺云推送
请您在手机端登录爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
180秒后更新
打开爱奇艺移动APP,点击“我的-扫一扫”,扫描左侧二维码进行登录
没有安装爱奇艺视频最新客户端?
对数函数求导
正在检测客户端...
您尚未安装客户端,正在为您下载...安装完成后点击按钮即可下载
30秒后自动关闭
对数函数求导">对数函数求导
请选择打赏金额:
播放量12.7万
播放量数据:快去看看谁在和你一起看视频吧~
更多数据:
Copyright (C) 2018 & All Rights Reserved
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
正在为您下载爱奇艺客户端安装后即可快速下载海量视频
正在为您下载爱奇艺客户端安装后即可免费观看1080P视频
&li data-elem="tabtitle" data-seq="{{seq}}"& &a href="javascript:void(0);"& &span>{{start}}-{{end}}&/span& &/a& &/li&
&li data-downloadSelect-elem="item" data-downloadSelect-selected="false" data-downloadSelect-tvid="{{tvid}}"& &a href="javascript:void(0);"&{{pd}}&/a&
选择您要下载的《
色情低俗内容
血腥暴力内容
广告或欺诈内容
侵犯了我的权力
还可以输入
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制

我要回帖

更多关于 函数求导 的文章

 

随机推荐