读芯术算法中的微积分:5大函数求导公式让你在面试中脱颖而出( 二 )


在继续以下内容之前 , 先考考你 , 这里有一个比复变指数函数f(x) = x?更高级的函数f(x) = x?2 。 如果你理解了第一个例子背后的逻辑和步骤 , 再加一个指数应该毫无难度 , 可以推导出以下结果:
读芯术算法中的微积分:5大函数求导公式让你在面试中脱颖而出
本文插图
导数3:多元输入函数的梯度
到目前为止 , 前面讨论的函数导数都是从?映射到?的函数 , 即函数的定义域和值域都是实数 。 但机器学习本质上是矢量的 , 函数也是多元的 。下面这个例子最能阐释这种多元性:当神经网络的输入层大小为m和输出层大小为k时 , 即f(x) = g(W?x + b) , 此函数是线性映射W?x(权阵W和输入向量x)和非线性映射g(激活函数)按元素组成的 。 一般情况下 , 该函数也可视作是从??到??的映射 。我们把k=1时的导数称为梯度 。 现在来计算以下从?3映射到?的三元函数:
可以把f看作是一个函数 , 它从大小为3的向量映射到大小为1的向量 。
读芯术算法中的微积分:5大函数求导公式让你在面试中脱颖而出
本文插图
图源:unsplash多元输入函数的导数被称为梯度 , 用倒三角符号?(英文为nabla)表示 。 从??映射到?的函数g的梯度是n个偏导数的集合 , 每个偏导数都是一个n元函数 。 因此 , 如果g是一个从??到?的映射 , 其梯度?g是一个从??到??的映射 。要推导出函数f(x,y,z) = 2?? + zcos(x)的梯度 , 需要构造一个矢量的偏导数:?f/?x , ?f/?y和?f/?z , 结果如下:需要注意 , 此处也需要利用公式进行等值转化 , 即2??=exp(xy ln(2)) 。
总之 , 对于一个从?3映射到 ?的三元函数f , 其导数是一个从?3映射到?3的梯度? f 。 从??映射到??(k > 1)的一般式中 , 一个从??映射到??的多元函数的导数是一个雅可比矩阵 , 而非一个梯度向量 。导数4:多元输入输出函数的雅可比矩阵
上一节中已经提到从??映射到?的函数的导数 , 是一个从??映射到??的梯度 。 但如果输出域也是多元的 , 即从??映射到??(k > 1) , 那又当如何?这种情况下 , 导数为雅可比矩阵 。 可以把梯度简单视为一个m x 1的特殊雅可比矩阵 , 此时m与变量个数相等 。 雅可比矩阵J(g)是一个从??到??*?的映射 , 其中函数g从??映射到?? 。 这也就是说输出域的维数是k x m , 即为一个k x m矩阵 。 换言之 , 在雅可比矩阵J(g)中 , 第i行表示函数g?的梯度? g? 。假设上述函数f(x, y) = [2x2, x √y]从?2映射到?2 , 通过推导该函数的导数可以发现函数的输入和输出域都是多元的 。 在这种情况下 , 由于平方根函数在负数上没有定义 , 需要把y的定义域限定为?? 。 输出雅可比矩阵的第一行就是函数1的导数 , 即? 2x2;第二行为函数2的导数 , 即? x √y 。
雅可比矩阵在深度学习中的可解释性领域中有一个有趣用例 , 目的是为了理解神经网络的行为 , 并分析神经网络的输出层对输入的灵敏度 。雅可比矩阵有助于研究输入空间的变化对输出的影响 , 还可以用于理解神经网络中间层的概念 。 总之需要记住梯度是标量对向量的导数 , 雅可比矩阵是一个向量对另一个向量的导数 。导数5:多元输入函数的黑塞矩阵
目前仅讨论了一阶导数求导 , 但在神经网络中 , 会经常讨论多元函数的高阶导数 。 其中一种特殊情况就是二阶导数 , 也被称为黑塞矩阵 , 用H(f)或? 2(微分算符的平方)表示 。 从??映射到?的函数g的黑塞矩阵是从??到??*?的映射H(g) 。现在分析一下我们是如何将输出域从?转化为??*? 。 一阶导数 , 即梯度?g , 是一个从??到??的映射 , 其导数是一个雅可比矩阵 。 因此 , 每一个子函数的导数?g?都由n个从??映射到??的函数组成 。 可以这样想 , 就好比是对展开成一个向量的梯度向量的每个元素都求导 , 从而变成向量中的向量 , 即为一个矩阵 。要计算黑塞矩阵 , 需要计算交叉导数 , 即先对x求导 , 再对y求导 , 反过来也可以 。 求交叉导数的顺序会不会影响结果 , 换句话说 , 黑塞矩阵是否对称 。 在这种情况下 , 函数f为二次连续可微函数(用符号??2表示) , 施瓦兹定理表明交叉导数是相等的 , 因此黑塞矩阵是对称的 。 一些不连续但可微的函数 , 不满足交叉导数等式 。构造函数的黑塞矩阵就相当于求一个标量函数的二阶偏导数 。 以f(x,y) = x2y3为例 , 计算结果如下: