博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深度学习中一些常用函数的偏导数
阅读量:4322 次
发布时间:2019-06-06

本文共 749 字,大约阅读时间需要 2 分钟。

1.Mul(哈达玛积:对应相乘)

  设:

  则根据偏导数的定义得:

  同理可得:

2.MatMul(矩阵乘)

  矩阵乘的偏导与元素的顺序是相关的.

  设:

  那么:

  

  根据矩阵相容的原理:

    可见矩阵的偏导数是另一个矩阵的转置,但是在用链式法则的时候需要保持和原来一直的顺序,意思是原来矩阵乘的元素在前面时,应用链式法则的时候还在前面,在后面时应用链式法则的时候,相对位置也在后面.

3.softmax

  softmax with crossEntropyLoss的导数很简单,结果就是y’-y. 相比很多人都知道,网上也有很多的证明. 但是softmax的导数有时候也要单独使用,在tf源码中的tensorflow/cc/gradient/nn_grad.cc文件下,softmaxGrad函数中有段注释,意思是softmax的导数计算结果是:dL/dx = (dL/dy - sum(dL/dy * y)) * y.

其中L=f(y),代表loss. y和x都是矩阵,维数都是[batch,class].但是文件中只有注释没有证明,在此记录下推导过程.

  推导:

  假设y的列数是3,其第k行元素为:

  则有:

  推导过softmax log-likelihood损失函数的朋友,应该很容易得到:

  于是可以求出:

  带入并化简得(以第一个元素为例):

  

  同理可得第二个和第三个元素为:

  写成向量形式为:

  

  其中*代表hadmard product. 这是对每一行的求导结果. 写成矩阵形式得到:

  上式即是注释当中的结果.

 

  

 

转载于:https://www.cnblogs.com/deepllz/p/9211994.html

你可能感兴趣的文章
JAVA基础2——类初始化相关执行顺序
查看>>
转:Zend Framework 重定向方法(render, forward, redirect)
查看>>
Linux下查看磁盘与目录的容量——df、du
查看>>
关于日记app的思考
查看>>
使用sencha的cmd创建项目时提示找不到\Sencha\Cmd\repo\.sencha\codegen.json
查看>>
如何快速启动一个Java Web编程框架
查看>>
MSP430单片机存储器结构总结
查看>>
文本框过滤特殊符号
查看>>
教育行业安全无线网络解决方案
查看>>
7个杀手级的开源监测工具
查看>>
软件架构学习小结
查看>>
C语言实现UrlEncode编码/UrlDecode解码
查看>>
返回用户提交的图像工具类
查看>>
树链剖分 BZOJ3589 动态树
查看>>
挑战程序设计竞赛 P131 区间DP
查看>>
【例9.9】最长公共子序列
查看>>
NSFileManager打印目录下的文件的函数
查看>>
JavaScript 循环绑定之变量污染
查看>>
poj 1038 Bugs Integrated, Inc. 三进制状态压缩 DFS 滚动数组
查看>>
zoj 1654 Place the Rebots 最大独立集转换成二分图最大独立边(最大匹配)
查看>>