深度学习的矩阵演算(下)

2020-05-30 14:41:00

我们不能仅使用我们在博客第1部分中看到的基本矩阵演算规则来计算非常复杂函数的偏导数。例如,我们不能直接求出像sum(w+x)这样的嵌套表达式的导数,而不将其简化为它的标量等价物。我们需要能够使用向量链规则组合我们的基本向量规则。

当我们需要由嵌套子表达式组成的表达式的派生时,链规则就开始发挥作用。链式规则通过将复杂的表达式分解成导数容易计算的子表达式来帮助解决问题。

链条规则是根据嵌套函数定义的,例如单变量链条规则的y=f(g(X))。

让我们看嵌套公式y=f(X)=ln(sin(x³)²)的示例。

但单变量链规则只适用于单变量只以一种方式影响产出的情况。正如我们在示例中看到的,只有当x通过单个数据流路径影响y时,才能使用此链规则处理单变量x的嵌套表达式。

如果我们对y=f(X)=x+x²应用单变量链规则,我们会得到错误的答案,因为导数算子不适用于多元函数。方程式中x的变化,既影响y作为加法操作数,也影响y作为平方操作数。因此,我们显然不能套用单变量链式规则。所以…。

也就是计算(dy/dx),我们需要求出x的变化对y的变化的所有可能的贡献。

总导数假设所有变量潜在地相互依赖,而偏导数假设所有变量,但x是常数。

当你对x求总导数时,其他变量也可能是x的函数,所以也要加上它们的贡献。方程的左边看起来像一个典型的偏导数,但右边实际上是全导数。

总导数公式总是求和,也就是导数中的各项求和。例如,在给定y=x×x²而不是y=x+x²的情况下,全导数链规则公式仍会添加偏导数项,有关更多详细信息,请参阅论文中的演示。

当所有中间变量都是单一变量的函数时,这种考虑总导数的链式规则退化为单变量链式规则。

样本向量函数关于标量的导数,y=f(X)。

引入两个中间变量g1和g2,每个fi一个,这样y看起来更像y=f(g(X))。

如果我们拆分这些项,将这些项分离成一个向量,我们就可以得到一个由向量组成的矩阵。

这就完成了链规则。在下一篇博客中,也就是第3部分,我们将看到如何应用神经激活和丧失函数的梯度,并总结。

在写博客时很难转换成上标和下标,所以我在下面列出了,你可以在你的标记中使用(复制粘贴)

超级脚本⁰²³⁴⁵⁶⁷⁸⁹ᵃᵇᶜᵈᵉᶠᵍʰᶦʲᵏˡᵐⁿᵒᵖʳˢᵗᵘᵛʷˣʸᶻ。

下标₀₁₂₃₄₅₆₇₈₉ₐᵦ𝒸𝒹ₑ𝒻𝓰ₕᵢⱼₖₗₘₙₒₚᵩᵣₛₜᵤᵥ𝓌ₓᵧ𝓏