想在机器学习面试中脱颖而出?这5个导数你不能不知

  • 2020 年 10 月 28 日
  • AI

来源:towards data science

编译:威踢踢


对于机器学习工程师以及他们对数学的深刻理解,就业市场上存在着一种普遍的怀疑。事实是,支持向量机被表述为对偶优化问题,主成分分析被表述为频谱分析滤波,或者神经网络被表述为连续的非线性函数的组成部分,只有全面的数学理解才能使你真正地掌握它们。
各种Python库便于将高级算法用于简单的步骤,例如,带有KNN、K-means、决策树等的Scikit-learn库,或Keras,它可以让你构建神经网络架构,而不必非得了解CNNs或RNNs背后的细枝末节。然而,成为一名优秀的机器学习工程师需要的远不止这些,这类职位的面试通常会涉及诸如KNN或从头开始的决策树的实现,或推导线性回归或softmax函数反向传播方程的矩阵闭型解等问题。
在本文中,我们将回顾一些微积分的基本概念, 例如用于一维和多维函数的导数,包括渐变,雅可比和海森矩阵等,以帮助您开始面试准备。同时,帮助你建立良好的基础,以成功地更深入地研究机器学习背后的数学,尤其是对于神经网络。
这些概念将通过5个导数的例子来展示:
  • 复合指数函数的导数- f(x)= eˣ ²

  • 可变基数和可变指数函数的导数-f(x)= xˣ

  • 多维输入函数的梯度f (x, y, z) =f(x,y,z) = 2ˣʸ+zcos(x)

  • 多维函数的雅可比矩阵-  f(x,y) = [2x², x √y]

  • 多维输入函数的海森矩阵 – f(x,y) = x ²y³

 
导数1:复合指数函数

指数函数是一个非常基础,常见,有用的例子。eˣℝ> 0,记住,一个重要的属性是e⁰= 1。另外,你应该记住指数是对数函数的倒数。它也是最容易推导的函数之一,因为它的导数就是指数本身, 即(eˣ)’=eˣ。当指数和另一个函数结合时,导数就变得更复杂了。在这种情况下,我们用链式法则公式,即的导数f(g(x))的导数等于f′(g(x))⋅g′(x),即:

应用链式法则,我们可以计算f(x)=eˣ²的导数。我们首先找到g(x)=x²的导数,即g(x)’= 2x。我们也知道(eˣ)’=eˣ。将这两个中间结果相乘,我们得到:
 

是一个非常简单的例子,乍一看可能微不足道,但它经常被面试官作为热身问题来提问。如果你已经有一段时间没有见过了,那么你要确保自己能够迅速地对这些简单的问题做出反应。虽然这不会让你得到这份工作,但如果你在一个基础的问题上答错了,你肯定会失去这份工作!
 
导数2. 可变基数和可变指数函数的导数

在面试中,这个导数是一个经典,尤其是在金融/量化行业。在这个行业中,对数学技能的考察比在科技公司中对机器学习职位的考察更深入。这有时会让面试者感到痛苦,但实际上,这个问题最难的部分是如何正确地做起。
以指数形式实现函数时,最重要的认识是,首先,指数和对数的反比关系,其次,每个指数函数都可以写成自然指数函数的形式:
 

在我们得到f (x) = xˣ示例中,让我们证明这个属性与一个简单的函数f (x) = 2ˣ。我们首先使用上面的等式将2′重写为exp(xln(2)),然后应用链式法则推导组成。

回到原始函数f(x)=xˣ,一旦将函数重写为f(x)= exp(x ln x),则导数变得相对容易计算,唯一的潜在困难是链式法则的一步。

注意这里我们使用了乘法定则(uv) ‘ =u ‘ v+uv ‘来表示指数xln(x)。
面试官考察这个函数时,通常没有关于函数域的任何提示。如果面试官没有预设具体的函数,可能是在测试你的数学敏感度。这就是问题具有欺骗性的地方。没有特定的域,似乎xˣ定义为正值和负值。但是,对于负x,例如(-0.9)^(-0.9),结果是一个复数,具体是-1.05-0.34i。可能的解决方法是将函数的域定义为ℝ⁺\ 0(请参见此处进一步讨论),但这对于负值仍然不可区分。因此,为了正确定义xˣ的导数,我们需要将函数域限制为正值。我们排除了0,因为要在0中定义一个导数,我们需要从左边开始的极限导数(对于负值,极限为0)等于从右边开始的极限导数(对于正值,极限为0)—一个条件在这种情况下是坏的。由于未定义左限,因此该函数无法微分0,因此该函数的域仅限于正值。

在继续进行下一部分之前,我将引出此函数的更高阶,以测试你理解:f(x)=xˣ²。如果你明白第一个例子背后的逻辑和步骤,这样的指数应该不会给你造成任何困难,结果是:

 

导数3:多维输入函数的梯度

到目前为止,在第一和第二导数部分中讨论的函数是从ℝ映射到ℝ的函数,即函数的域和范围都是实数。但是机器学习本质上是矢量的,函数是多维的。这种多维性的一个很好的例子是输入大小为m和输出大小为k的神经网络层,即f(x)= g(Wᵀx+ b),它是线性映射Wᵀx(具有权重矩阵W)的元素组成。和输入向量x)和非线性映射g(激活函数)。在一般情况下,这也可以视为从ℝᵐ到ℝᵏ的映射。
在k=1的特殊情况下,导数称为梯度。现在让我们计算以下三维函数的导数映射ℝ³ℝ:

将f视为将大小为3的向量映射为大小为1的向量的函数。多维输入函数的导数称为梯度,并用符号nabla(反向增量)表示。映射ℝⁿ到ℝ的函数g的梯度是g的n个偏导数的集合,其中每个偏导数都是n个变量的函数。因此,如果g是从ℝⁿ到ℝ的映射,则其梯度∇g是从ℝⁿ到ℝⁿ的映射。为了找到函数f(x,y,z)=2ˣʸ+ zcos(x)的梯度,我们构造了偏导数∂f/∂x,∂f/∂y和∂f/∂z的向量,并获得结果如下:

 

注意,这是一个与上一节相似的示例,我们使用等价2ˣʸ= exp(xy ln(2))。
总之,对于将ℝ³映射到ℝ的多维函数,导数是梯度a f,它将ℝ³映射到ℝ³。在k≥1的映射ℝᵐ到ℝᵏ的一般形式中,将ℝᵐ映射到ℝᵏ的多维函数的导数是雅可比矩阵(而不是梯度矢量)。让我们在下一节中研究这个问题。
 
导数4.多维输入输出函数的雅可比矩阵

 
上一节我们知道,函数映射ℝᵐ到ℝ的导数是梯度映射ℝᵐ到ℝᵐ。但是,如果输出域也是多维的,即k> 1时,ℝ映射ᵐ,ℝᵏk > 1 呢?
在此情况下,导数称为雅可比矩阵。我们可以简单地将梯度看作是雅克比矩阵的特例,其维度为m x 1,m等于变量数。雅可比矩阵J函数g (g)映射ℝᵐ,ℝᵏ是一个映射的ℝᵐ,ℝᵏ*ᵐ。这意味着输出域k x m的一个维度,即为k x m的矩阵。换句话说,J(g)的每一行i代表g的每个子函数g 1的梯度。
让我们导出上面定义的函数f(x,y)= [2x²,x√y]映射ℝ²到ℝ²,因此输入和输出域都是多维的。在这种特殊情况下,由于未为负值定义平方根函数,因此我们需要将y的域限制为ℝ⁺。输出雅可比矩阵的第一行将是函数1的导数,即2x²,第二行是函数2的导数,即∇x√y。

深度学习中,雅可比矩阵的一个特别有趣的例子是在可解释性领域,目的是理解神经网络的行为,并分析神经网络的输出层对输入的敏感性。雅可比矩阵有助于研究输入的变化对输出的影响,这可以类比地应用于理解神经网络中中间层的概念。
总之请记住,梯度是标量对向量的导数,雅可比矩阵是一个向量对另一个向量的导数。
 
导数5.多维输入函数的海森矩阵


到目前为止,我们的讨论只集中在一阶导数上,但在神经网络中,我们经常讨论多维函数的高阶导数。特定情况下的二阶导数,也叫海森矩阵,表示H (f)或∇²(微分算符的平方),g函数映射的海森矩阵ℝⁿℝ是一个映射H (g)从ℝⁿ,ℝⁿ*ⁿ。
让我们分析一下在输出域上从ℝ到ℝⁿ*ⁿ的过程。一阶导数,即梯度,是从到的映射,其导数是雅可比矩阵。因此,每个子函数∇g的推导导致ℝⁿ到ℝⁿ的映射,其中n个这样的函数。你可以认为这就像将梯度向量的每个元素扩展为向量一样,从而成为向量的向量,即矩阵。
为了计算海森矩阵,我们需要计算所谓的交叉导数,即首先相对于x然后相对于y进行导数,反之亦然。有人可能会问我们采用交叉导数的顺序是否重要?换句话说,海森矩阵是否对称。在函数f为λ2,即两次连续可微的情况下,Schwarz定理指出,交叉导数是相等的,因此海森矩阵是对称的。一些不连续但可微的函数不能满足交叉导数的相等性。
构造函数的海森矩阵等于找到标量值函数的二阶偏导数。对于特定示例f(x,y)=x²y³,计算得出以下结果:

你会看到交叉导数6xy²实际上是相等的。我们首先关于x推导得出2xy³,然后关于y得出6xy²。对于x或y的每个一维子函数,对角元素均为fᵢ”。
扩展将讨论多维函数的二阶导数的情况下映射ℝᵐ,ℝᵏ,直觉上可以视为一个二阶雅可比矩阵。这是一个从ℝ映射ᵐ,ℝᵏ*ᵐ*ᵐ,即三维张量。与海森矩阵相似,为了找到雅可比矩阵的梯度(第二次微分),我们微分k x m矩阵的每个元素,得到一个向量矩阵,即一个张量。虽然不太可能要求你手动进行这样的计算,但了解多维函数的高阶导数是很重要的。
结论
在本文中,我们回顾了机器学习背后的重要微积分基础。我们用一维和多维函数的示例对其进行了演示,讨论了梯度,雅可比和海森矩阵。这篇综述详尽地介绍了可能的面试概念,并概述了机器学习背后与微积分相关的知识。


资源 | 《30天吃掉Tensorflow》开放下载

2020-10-23

干货 | 图神经网络的十大学习资源分享

2020-10-21

资料 | 1800页33章数学方法精要笔记 —深入数学建模, 机器学习和深度学习的数学基础

2020-10-12

AI研习社是AI学术青年和开发者社区,为大家提供一个顶会资讯、论文解读、数据竞赛、求职内推等的技术交流阵地,欢迎登陆www.yanxishe.com加入我们吧~

投稿、转载、媒介合作联系微信号 | bajiaojiao-sz

商务合作联系微信号 | LJ18825253481