令z(x)=f(x)g(x)。通过乘法求导公式,会很容易通过f(x)和g(x)的导数得到z(x)的导数,当然背公式的事情不值一提。本文在于如何去理解这个导数公式,怎么去推导。

首先第一种方式是通过导数的定义去推导,这个其实也简单,只需要根据定义,写出定义方程,然后做一些简单的变换即可,这种方式也不能给我们更多的insight。所以本文想说的其实是下面的第二种方式。

另外一种方式是将f(x)和g(x)看成不同的个体,先忽略之间的关联,为避免歧义,我们把属于不同部分的变量区分开来,记为f(x),g(y),如下图所示,得到z(x,y)。

那么,通过梯度我们可以得到双变量下函数z的变化量,这个很简单,关键的一步在于,我们怎么理解当x=y时,如何可以直接通过双变量下的函数值变化得到但变量下函数值的变化。

由于单变量下,变量变化对函数值的影响和双变量下两个变量做同等变化对函数值造成的影响是一样的,这一点很直观,甚至可以说是废话。因此,我们只需要在双变量的分析框架下,令x,y的变化一致,即delta x = delta y,就可以得到在点(x,x)下delta x对函数值的影响,从而得到单变量下z(x)的导数。

这里要注意不要和方向为(1,1)的方向倒数混淆在一起。这里单变量下,只有一个变元x,因此delta x是同时作用在f(x)和g(x)上的,但是对于双变量情况,需要delta x和delta y分别作用在f(x),g(y)上才会产生一样的效果,尽管delta x = delta y,但是实际上,这里对于双变量函数z(x,y),其就产生了一个方向为(1,1)的偏移量,且偏移量大小为|(delta x,delta y)|=sqrt(square(delta x)+square(delta y)),所以,这里单变量导数实际上是(1,1)方向上方向导数的根号2倍。

上述的理解就是为了传达一个思想,也是本文的主要目的,那就是,一个复杂函数,其可能由多个部分组成,这些部分又受着相同因素的驱动,这时我们可能比较难直接分析根本因素对最终函数值的影响关系,那么我们可以先将不同部分看作独立的整体,用多变量框架结合梯度思想去简化问题,最后再进行统一变量的整合分析,这样将复杂函数进行逐步拆解,有助于我们对复杂函数的分析。比如我们可以将其应用在复杂神经网络中变量梯度的求解。

理解两个函数乘积的导数的一种视角相关推荐

  1. 通过面积证明:两个函数相乘 / 相除的导数为什么长成这样?

    参考视频 MIT 微积分课程 两个函数相乘的导数 ( f ( x ) g ( x ) ) ′ = f ′ ( x ) g ( x ) + g ′ ( x ) f ( x ) (f(x)g(x))^{' ...

  2. 两个函数彻底理解Lua中的闭包

    本文通过两个函数彻底搞懂Lua中的闭包,相信看完这两个函数,应该能理解什么是Lua闭包.废话不多说,上 code: 1 --[[************************************ ...

  3. matlab计算两向量的乘积,matlab中两个函数相乘

    变量名最多不超过63个字符; ? 变量名区分大小写; ? Matlab提供的标准函数名以及命令名必须用小写字母; ? 变量名中不能包含空格.标点.运算符. 1.变量及其...... 中的元素; (2) ...

  4. 【python】以下函数允许计算两个数的乘积,请稍加改造,变成可接收一个或多个数并计算乘积(廖雪峰)

    练习 以下函数允许计算两个数的乘积,请稍加改造,变成可接收一个或多个数并计算乘积: # -*- coding: utf-8 -*- # -*- coding: utf-8 -*- def produc ...

  5. 理解javascript 回调函数

    理解javascript 回调函数 原文:理解javascript 回调函数 ##回调函数定义 百度百科:回调函数 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一 ...

  6. 深入理解C++重载函数

    深入理解C++重载函数 1.定义:C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数.类型或者顺序)必须不同,即函数的参数列表不同,也就是说用同一个运算符完成不 ...

  7. python中os.path.join()的循环用法_Python中.join()和os.path.join()两个函数的用法详解

    Python中有.join()和os.path.join()两个函数,具体作用如下: . join():    连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 ...

  8. 深入理解C/C++函数指针

      函数指针数组的妙用 笔者在开发某软件过程中遇到这样一个问题,前级模块传给我二进制数据,输入参数为 char* buffer和 int length,buffer是数据的首地址,length表示这批 ...

  9. opencv计算两数组的乘积_#剑指Offer#12. 构建乘积数组

    题目描述:给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1]. 其中B中的元素B[i]=A[0] * A[1]... * A[i-1] * A[i+1]... * A ...

  10. python也能写emoji表情?两个函数解决两者之间的联系

    文章目录 一.emoji库的安装二.函数的作用1.emojize()2.demojize()3.表情在不同文件中的显示 三.文章中的emoji表情处理四.Blogger's speech 还记得曾经被 ...

最新文章

  1. Ruby中的设计模式——《松本行弘的程序世界》
  2. iOS10 UI教程视图和子视图的可见性
  3. 十九、Redis 6.0 的客户端缓存
  4. 写在Silverlight 5发布前 - 盘点2010年Silverlight开发书籍
  5. 我的2018春招实习+秋招总结【前端开发】
  6. Ajax Loader 图标
  7. 设计没有标准,只有目标
  8. pycharm 修改新建文件时的头部模板(默认为__author__='...')
  9. http://blog.csdn.net/evankaka/article/details/45155047
  10. java面向对象简介
  11. 数据库基础知识(思维导图)
  12. Android自动化刷量、作弊与防作弊视频教程-彭斌-专题视频课程
  13. 51单片机:P1口输入/输出实验1(控制发光二极管亮灭)
  14. 在Python中用WordCloud生成聊天记录热点词汇词云图
  15. sqlite3 stmt 使用
  16. P1567 吃糖果游戏
  17. 2018 焦作 onsite E - Resistors in Parallel(数学或规律+大数)
  18. iOS面试题经典语录(持续收集中...)
  19. 【web渗透思路】框架敏感信息泄露(特点、目录、配置)
  20. 全面领先!小i机器人再获2018年度最佳智能解决方案奖

热门文章

  1. GitHub打不开解决方案
  2. 个人网盘搭建过程--资料来自腾讯云实验室
  3. 微信公众号迁移公证书办理流程与条件
  4. 黑苹果10.14.5安装WebDriver驱动nvidia独立显卡
  5. 主动降噪python_主动降噪(Active Noise Control)
  6. 文件怎么复制到虚拟机中的linux系统吗,Windows下的文件如何复制到虚拟机的Linux中...
  7. Python:实现Zip格式的文件压缩
  8. STA静态时序分析/Formality形式化验证
  9. flutter报错-‘CachedNetworkImageProvider.load‘ has fewer positional arguments than those of overridden
  10. 算法题目打卡:Ques20201020