精华内容
下载资源
问答
  • 「04」机器学习、深度学习需要哪些数学知识?
    千次阅读
    2020-01-08 22:47:27

    入门避坑指南

    自学三年,基本无人带路,转专业的我自然是难上加难,踩过无数坑,走过很多弯路。这里我整理了一下自己踩过的坑,供大家参考。

    1. 不要从头开始学数学 如果不是一点数学都不会,你没有必要从零学起。用上个把月,把微积分、线性代数、以及概率统计复习一遍就够了。我自己因为没有学过高数,所以花了半年时间,甚至读了数学分析、泛函分析和测度论这样的教材。现在回想起来,其实学到的大部分知识并没有在后来的算法生涯中用到,虽然算不上沉没成本,但投入产出比绝对不高。

    因此,不要过度投入到数学领域,打好基础即可。有个例子说的很好, 如果你想造汽车,你需要有20年的理论功底,以及技术实践。 但如果你只是想开汽车,却很快就能学会。 当个司机,你需要去了解汽油发动机原理吗? 不需要。 因为你开的车,甚至有可能根本就用不上汽油发动机(电动车)。

     

    2. 代码能力要过关

    我在大三一年自修完了计算机系的所有必修课,因为我深知数据科学离不开计算机底层知识。我见过不少只会背推导公式,连JVM虚拟机是什么都不知道的人。除了Python,请至少学习1-2门底层语言,比如C/C++,Java。

    此外,如果你的目标是算法工程师,那么数据结构与算法、计算机系统、内存机制、网络编程、大数据框架也要着手学习,因为你是以企业工作为导向的。这方面我有空会把自己读研时找实习的经历整理分享出来。

     

    3. 不要过分深入</

    更多相关内容
  • 介绍了深度学习中会用到的条件约束优化问题,主要是KKT法,实例讲解了等式约束、不等式约束优化时,KKT条件的来源和意义。最后简单说明了一下约束最优化问题的对偶问题。
  • 深度学习数学》学习笔记

    千次阅读 2019-10-10 20:47:05
    深度学习数学 本文为学习了涌井良幸和涌井贞美所著的《深度学习数学》后的读书笔记及总结。 文章目录第一章 神经网络的思想1-1 神经网络和深度学习1-2 神经元的数学表示1-3 激活函数:将神经元的工作一般化1-4 ...

    深度学习的数学

    本文为学习了涌井良幸和涌井贞美所著的《深度学习的数学》后的读书笔记及总结。

    第一章 神经网络的思想

    1-1 神经网络和深度学习

    本节主要讲解了生物领域中神经元的主要特点:

    1. 多个神经元可以形成网络
    2. 输入信号如果小于某个阈值则神经元不作出反应
    3. 输入信号大于某个阈值时神经元点火及作出后续反应
    4. 输入信号源自多个神经元,输入信号为多个神经元的总和且每个信号的权重不同

    1-2 神经元的数学表示

    w 1 x 1 + w 2 x 2 + w 3 x 3 (1) w_1x_1+w_2x_2+w_3x_3 \tag{1} w1x1+w2x2+w3x3(1)

    其中$w_1、w_2、w_3 $ 是 x 1 、 x 2 、 x 3 x_1、x_2、x_3 x1x2x3对应的权重。

    是否点火可以用单位阶跃函数来表示:
    y = u ( w 1 x 1 + w 2 x 2 + w 3 x 3 − θ ) (2) y=u(w_1x_1+w_2x_2+w_3x_3-\theta) \tag{2} y=u(w1x1+w2x2+w3x3θ)(2)
    其中 θ \theta θ为点火的阈值。

    阶跃函数为:
    u ( z ) = { 0 ( z < 0 ) 1 ( z ⩾ 0 ) (3) u(z)= \begin{cases} 0 & (z<0)\\ 1 & (z\geqslant0) \end{cases} \tag{3} u(z)={01(z<0)(z0)(3)

    1-3 激活函数:将神经元的工作一般化

    上一节中运用了激活函数来表示神经元是否点火,但是这对于真实世界太过简单,因此通过修改激活函数来将神经元的工作一般化:
    y = a ( w 1 x 1 + w 2 x 2 + w 3 x 3 − θ ) (4) y=a(w_1x_1+w_2x_2+w_3x_3-\theta) \tag{4} y=a(w1x1+w2x2+w3x3θ)(4)
    此时为了与生物中的神经元区别开来,我们将简化、抽象化的神经元(非生物领域的)成为神经单元:

    在这里插入图片描述

    其中神经元与神经单元的区别为:

    神经元神经单元
    输出值 y y y0或1模型允许的任意数值
    激活函数单位阶跃函数自由给定,较为著名的是 S i g m o i d Sigmoid Sigmoid函数
    输出解释点火与否反映度、兴奋度等

    为了将公式(2)更加抽象化,书中将阈值 θ \theta θ及其前面的符号替换为偏置 b b b.

    1-4 什么是神经网络

    将神经单元连接成网络状,就形成了神经网络

    神经网络可以分为输入层、隐藏层(中间层)、输出层:

    1. 输入层:将从数据得到的值原样输出。
    2. 中间层:做公式(4)的运算。
    3. 输出层:做公式(4)的运算,显示计算结果。

    深度学习就是叠加了很多层的神经网络

    这一节中举了一个具体的例子,利用神经网络识别4*3像素的0和1手写图像,非常形象和直观。

    1-5 用恶魔来讲解神经网络的结构

    书中用恶魔来举例子,形象地说明了隐藏层在特征提取中的作用。

    123
    456
    789
    101112

    书中的隐藏层共有3个神经单元A,B,C,他们分别对应(4,7)、(5,8)、(6,9)。输出共有两个神经单元,分别是输出单元0和1。

    读者可以将这个表想象成一张纸,在这张纸上写0和1,当然1只能写在中间,写的时候只能涂黑方格。当写1时,5和8大概率会被涂黑,而写0时4,7和6,9大概率会被涂黑。

    因此神经单元A和C 兴奋且B不兴奋时时,结果大概率是0,而当神经单元B兴奋、A和C不兴奋时,结果大概率时1.

    1-6 将恶魔的工作翻译为神经网络的语言

    书中利用的是全连接神经网络,既输入层的12个神经单元都会和隐藏层的3个神经单元连接,因此输出单元对特征提取贡献的作用大小设置不同的权重。

    为了忽略无用甚至启反作用的信号,设置了偏置。

    1-7 网络自学习的神经网络

    神经网络的参数有权重和偏置,其确定方法分为有监督学习和无监督学习。

    有监督学习需要数据既训练数据。

    学习的思路为:计算预测值与正解之间的误差,通过一定方法得到误差总和最小权重和偏置(最优化)。

    误差总和被称为代价函数,用 C T C_T CT表示,代价函数(Cost function)有多种选择。

    第二章 神经网络的数学基础

    2-1 神经网络所需的函数

    1. 一次函数

    2. 二次函数

    3. 单位阶跃函数

    4. Sigmoid函数
      σ ( x ) = 1 1 + e − x (5) \sigma(x)=\frac{1}{1+e^{-x}} \tag{5} σ(x)=1+ex1(5)

    Sigmoid函数与单位阶跃函数比较像,但其是光滑的。

    1. 正态分布的概率密度函数
      f ( x ) = 1 2 π e − ( x − μ ) 2 2 σ 2 (6) f(x)=\frac{1}{\sqrt{2\pi}}e^{-\frac{{(x-\mu)}^2}{{2\sigma}^2}} \tag{6} f(x)=2π 1e2σ2(xμ)2(6)

    2-2 有助于理解神经网络的数列和递推关系式

    1. 数列及递推公式

    2. 联立递推关系式

      误差反向传播法就是将这种递推关系式应用在神经网络中。

    2-3 神经网络中经常用到的 Σ \Sigma Σ符号

    1. 其含义是求和
    2. 具有线性性质

    2-4 有助于理解神经网络的向量基础

    本节主要讲解了向量的基础知识。

    1. 向量是具有方向和大小的量,用箭头表示。

    2. 可以用坐标的形式表示向量。

    3. 向量的大小

    4. 向量的内积

    5. 柯西-施瓦茨不等式
      − ∣ a ∣ ∣ b ∣ ⩽ a ⋅ b ⩽ ∣ a ∣ ∣ b ∣ (7) -|a||b|\leqslant a\cdot b\leqslant|a||b| \tag{7} ababab(7)
      此不等式的成立可以得出:当两个向量相反时,内积取得最小值,在后续的梯度下降法中会用到这一性质。

    6. 张量(tensor)是向量概念的推广

      书中用物理学中的张力来说明,即一个向量在不同的法向下具有不同的表示,并将其合并成为矩阵。

    2-5 有助于理解神经网络的矩阵基础

    1. 较为简单的矩阵基础知识:和、差、常数倍、乘积。

    2. Hadamard乘积
      A = ( 2 7 1 8 ) , B = ( 2 8 1 3 ) A ⊙ B = ( 2 ⋅ 2 7 ⋅ 8 1 ⋅ 1 8 ⋅ 3 ) = ( 4 56 1 24 ) (8) A= \begin{pmatrix} 2 & 7\\ 1 & 8 \end{pmatrix} , B= \begin{pmatrix} 2 & 8\\ 1 & 3 \end{pmatrix} \\ A\odot B= \begin{pmatrix} 2 \cdot 2 & 7\cdot 8 \\ 1 \cdot 1 & 8 \cdot 3 \end{pmatrix} = \begin{pmatrix} 4 & 56 \\ 1 & 24 \end{pmatrix} \tag{8} A=(2178),B=(2183)AB=(22117883)=(415624)(8)

    3. 转置矩阵:行列互换

    2-6 神经网络的导数基础

    本节主要讲解了导数的基本定义以及求导公式。

    Sigmoid函数的求导公式:
    σ ′ ( x ) = σ ( x ) ( 1 − σ ( x ) ) (9) \sigma '(x)=\sigma(x)(1-\sigma(x)) \tag{9} σ(x)=σ(x)(1σ(x))(9)

    2-7 神经网络的偏导数基础

    1. 关于某个特定变量的导数称为偏导数

    2. 多变量函数取得最小值的必要条件:

      函数 z = f ( x , y , z ) z=f(x,y,z) z=f(x,y,z)取得最小值的必要条件是 ∂ f ∂ x = 0 \frac{\partial f}{\partial x}=0 xf=0 ∂ f ∂ y = 0 \frac{\partial f}{\partial y}=0 yf=0 ∂ f ∂ z = 0 \frac{\partial f}{\partial z}=0 zf=0

    3. 书中还提到了拉格朗日乘数法,是高数中常用到的方法。

    2-8 误差反向传播法必须的链式法则

    1. 单变量函数的链式法则

      y y y u u u的函数, u u u v v v的函数, v v v x x x的函数时:
      d y d x = d y d u d u d v d v d x (10) \frac{dy}{dx}=\frac{dy}{du}\frac{du}{dv}\frac{dv}{dx} \tag{10} dxdy=dudydvdudxdv(10)

    2. 多变量函数的链式法则

      变量 z z z u , v u,v u,v的函数,如果 u , v u,v u,v分别是 x , y x,y x,y的函数,则 z z z x , y x,y x,y的函数:
      ∂ z ∂ x = ∂ z ∂ u ∂ u ∂ x + ∂ z ∂ v ∂ v ∂ x (11) \frac{\partial{z}}{\partial{x}}=\frac{\partial{z}}{\partial{u}}\frac{\partial{u}}{\partial{x}}+\frac{\partial{z}}{\partial{v}}\frac{\partial{v}}{\partial{x}} \tag{11} xz=uzxu+vzxv(11)

    2-9 梯度下降法的基础:多变量函数的近似公式

    1. 单变量函数的近似公式:
      f ( x + Δ x ) = ˙ f ( x ) + f ′ ( x ) Δ x (12) f(x+\Delta x)\dot=f(x)+f'(x)\Delta x \tag{12} f(x+Δx)=˙f(x)+f(x)Δx(12)
      其中 Δ x \Delta x Δx为微小的数。

    2. 多变量函数的近似公式:
      f ( x + Δ x , y + Δ y ) = ˙ f ( x , y ) + ∂ f ( x , y ) ∂ x Δ x + ∂ f ( x , y ) ∂ y Δ y (13) f(x+\Delta x,y+\Delta y)\dot =f(x,y)+\frac{\partial f(x,y)}{\partial x}\Delta x+\frac{\partial f(x,y)}{\partial y}\Delta y \tag{13} f(x+Δx,y+Δy)=˙f(x,y)+xf(x,y)Δx+yf(x,y)Δy(13)
      其中 Δ x \Delta x Δx Δ y \Delta y Δy为微小的数。

    3. 近似公式的向量表示:

      定义:
      Δ z = f ( x + Δ x , y + Δ y ) − f ( x , y ) (14) \Delta z =f(x+\Delta x,y+\Delta y)-f(x,y) \tag{14} Δz=f(x+Δx,y+Δy)f(x,y)(14)
      则:
      Δ z = ˙ ∂ z ∂ x Δ x + ∂ z ∂ y Δ y (15) \Delta z \dot =\frac{\partial z}{\partial x}\Delta x+\frac{\partial z}{\partial y}\Delta y \tag{15} Δz=˙xzΔx+yzΔy(15)
      定义:
      ∇ z = ( ∂ z ∂ x , ∂ z ∂ y ) (16) \nabla z=(\frac{\partial z}{\partial x} ,\frac{\partial z}{\partial y}) \tag{16} \\ z=(xz,yz)(16)
      Δ X = ( Δ x , Δ y ) (17) \Delta X=(\Delta x,\Delta y) \tag{17} ΔX=(Δx,Δy)(17)

      则有:
      Δ z = ∇ z ⋅ Δ X (18) \Delta z=\nabla z \cdot \Delta X \tag{18} Δz=zΔX(18)

    2-10 梯度下降法的含义与公式

    1. 梯度下降法:通过慢慢移动图像上的点进行摸索,从而找出函数的最小值。

    2. 梯度下降法主要的思想是运用两向量方向相反时,其内积最小。

      f ( x + Δ x , y + Δ y ) f(x+\Delta x,y+\Delta y) f(x+Δx,y+Δy)不是最小值时,由公式(14)可知 f ( x + Δ x , y + Δ y ) f(x+\Delta x,y+\Delta y) f(x+Δx,y+Δy)必定会小于 f ( x , y ) f(x,y) f(x,y),这就使得 Δ z \Delta z Δz越小越好。文中将$\nabla z 和 和 \Delta X 看 作 两 个 向 量 , 当 两 者 方 向 相 反 时 看作两个向量,当两者方向相反时 \Delta z$有最小值。因此梯度下降法的基本式为:
      ( Δ x 1 , Δ x 2 , ⋅ ⋅ ⋅ , Δ x n ) = − η ( ∂ f ∂ x 1 , ∂ f ∂ x 2 , ⋅ ⋅ ⋅ , ∂ f ∂ x n ) (19) (\Delta x_1,\Delta x_2,\cdot\cdot\cdot,\Delta x_n)=-\eta(\frac{\partial{f}}{\partial{x_1}},\frac{\partial{f}}{\partial{x_2}},\cdot\cdot\cdot,\frac{\partial{f}}{\partial{x_n}}) \tag{19} (Δx1,Δx2,,Δxn)=η(x1f,x2f,,xnf)(19)
      其中将 ∇ \nabla 称为哈密顿算子,定义 ∇ f \nabla f f:
      ∇ f = ( ∂ f ∂ x 1 , ∂ f ∂ x 2 , ⋅ ⋅ ⋅ , ∂ f ∂ x n ) (19) \nabla f=(\frac{\partial{f}}{\partial{x_1}},\frac{\partial{f}}{\partial{x_2}},\cdot\cdot\cdot,\frac{\partial{f}}{\partial{x_n}}) \tag{19} f=(x1f,x2f,,xnf)(19)
      则有:
      Δ x = − η ∇ f (20) \Delta x=-\eta \nabla f \tag{20} Δx=ηf(20)
      其中 η \eta η为正的微小常数。

    3. η \eta η的含义:可看做“步长”,恰当的确定其值是一个重要的问题。神经网络中称为学习率。

    2-11 用Excel体验梯度下降法

    本节主要讲解了如何用Excel计算梯度得到函数的最小值,实验内容不过多赘述。

    本节中对 η \eta η做了进一步的严格,在公式(19)中, η \eta η不能称为严格意义上的步长,因为 ∇ f \nabla f f也有大小,需要将其变形为单位向量使其仅表示方向:
    Δ x = − η ∇ f ( ∂ f ∂ x 1 ) 2 + ( ∂ f ∂ x 2 ) 2 + ⋅ ⋅ ⋅ + ( ∂ f ∂ x n ) 2 (21) \Delta x=-\eta\frac{\nabla f}{\sqrt{(\frac{\partial{f}}{\partial{x_1}})^2+(\frac{\partial{f}}{\partial{x_2}})^2+\cdot\cdot\cdot+(\frac{\partial{f}}{\partial{x_n}})^2}} \tag{21} Δx=η(x1f)2+(x2f)2++(xnf)2 f(21)

    2-12 最优化问题和回归分析

    1. 最优化问题:对神经网络的参数(权重和偏置)进行拟合,使得神经网络的输出和实际数据相吻合。
    2. 代价函数(Cost Function):利用平方误差的总和进行最优化的方法称为最小二乘法。

    第三章 神经网络的最优化

    3-1 神经网络的参数和变量

    1. 参数:确定数学模型的常数
    符号含义
    x i x_i xi表示输入层(层1)的第 i i i个神经单元的输入的变量。由于输入层的神经单元输入和输出为同一值,所以也表示输出的变量。此外也作为神经单元的名称使用。
    w j i l w^l_{ji} wjil从层 l − 1 l-1 l1的第 i i i个神经元指向层 l l l的第 j j j个神经元的箭头的权重。(可以看成上下标的后一位指向前一位,即 w j , i l , l − 1 w^{l,l-1}_{j,i} wj,il,l1这是神经网络的参数
    z j l z^{l}_j zjl表示层 l l l的第 j j j个神经单元的加权输入的变量
    b j l b^l_j bjl l l l的第j个神经单元的偏置。这是神经网络的参数
    a j l a^l_j ajl l l l的第 j j j个神经元的输出变量,也可以作为神经单元的名称使用。
    1. 此外,学习实例不仅只有一个,当第k个学习实例时,各个变量的值可以表示为: x i [ k ] 、 z j l [ k ] 、 a j l [ k ] x_i[k]、z^l_j[k]、a^l_j[k] xi[k]zjl[k]ajl[k]

    3-2 神经网络的变量的关系式

    在这里插入图片描述

    神经网络的变量之间的关系可以用矩阵表示:
    ( z 1 2 z 2 2 z 3 2 ) = ( w 11 2 w 12 2 w 13 2 ⋅ ⋅ ⋅ w 1 − 12 2 w 21 2 w 22 2 w 23 2 ⋅ ⋅ ⋅ w 2 − 12 2 w 31 2 w 32 2 w 33 2 ⋅ ⋅ ⋅ w 3 − 12 2 ) ( x 1 x 2 x 3 ⋅ ⋅ ⋅ x 12 ) + ( b 1 2 b 2 2 b 3 2 ) (23) \begin{pmatrix} z^2_1 \\ z^2_2 \\ z^2_3 \end{pmatrix}= \begin{pmatrix} w^2_{11}& w^2_{12}& w^2_{13} &\cdot\cdot\cdot & w^2_{1-12}\\ w^2_{21}& w^2_{22}& w^2_{23} &\cdot\cdot\cdot & w^2_{2-12}\\ w^2_{31}& w^2_{32}& w^2_{33} &\cdot\cdot\cdot & w^2_{3-12} \end{pmatrix} \begin{pmatrix} x_1\\ x_2\\ x_3\\ \cdot \\ \cdot \\ \cdot \\ x_{12} \end{pmatrix} + \begin{pmatrix} b^2_1\\ b^2_2\\ b^2_3 \end{pmatrix} \tag{23} z12z22z32=w112w212w312w122w222w322w132w232w332w1122w2122w3122x1x2x3x12+b12b22b32(23)

    3-3 学习数据和正解

    1. 何为正解

      预测的值预测的值
      图像为0时图像为1时
      a 1 3 a^3_1 a13接近1的值接近0的值
      a 2 3 a^3_2 a23接近0的值接近1的值
    2. 可以对照输出变量 a 1 3 a^3_1 a13 a 2 3 a^3_2 a23定义变量 t 1 t_1 t1 t 2 t_2 t2

    3-4 神经网络的代价函数

    1. 最优化的基础:代价函数的最小化。
    2. 神经网络的代价函数是将所有学习实例的误差加和。
    3. 学习数据的规模必须大于数学模型参数的个数。

    3-5 用Excel体验神经网络

    主要讲解了如何用Excel确定神经网络的参数。

    第四章 神经网络和误差反向传播法

    4-1 梯度下降法的回顾

    1. 目前已知的求函数最小值的通用方法是求变量和偏导数使其为0,但是对于神经网络来说,这是十分困难的,因为权重和偏置的总数十分的庞大。例如书中给的例题,学习样例有64个,代价函数是每个样例函数的总和,要确定的参数有47个,这就需要47个方程联立。使用梯度下降法时,只需要利用公式(21)进行反复的迭代,每次对变量做微小的变化,从而找到最小值。但是这种方法也存在着问题就是在实际的计算过程中十分的困难,例如在求解 ∂ C k ∂ w 11 2 \frac{\partial C_k}{\partial w^2_{11}} w112Ck时需要进行两项5层的链式法则,之后要将64项累加。
    2. 梯度分量是一个一个学习实例的简单的和:先求出偏导数,再带入实例计算。

    4-2 神经元误差

    1. 神经单元误差定义为
      δ j l = ∂ C ∂ z j l (24) \delta^l_j=\frac{\partial C}{\partial z^l_j} \tag{24} δjl=zjlC(24)
      定义神经单元误差的意义是为了后续计算中减少导数计算的次数。

    2. 用神经单元误差表示权重和偏置的偏导数
      ∂ C ∂ w j i j = δ j l a i l − 1 , ∂ C ∂ b j l = δ j l ( l = 2 , 3 , ⋅ ⋅ ⋅ ) (25) \frac{\partial C}{\partial w^j_{ji}}=\delta^l_ja^{l-1}_{i}, \frac{\partial C}{\partial b^l_j}=\delta^l_j (l=2,3,\cdot\cdot\cdot) \tag{25} wjijC=δjlail1,bjlC=δjl(l=2,3,)(25)

    神经元误差表示的是神经单元的加权输入给平方误差带来的变化率,如果神经网络符合数据,根据最小值条件,变化率应该为0,可以认为神经元误差表示的是神经网络与符合数据理想状态的偏差。

    4-3 神经网络和误差反向传播法

    1. 反向递推关系式:
      δ i l = { δ 1 l + 1 w 1 i l + 1 + δ 2 l + 1 w 2 i l + 1 + ⋅ ⋅ ⋅ + δ m l + 1 w m i l + 1 } a ′ ( z i l ) (26) \delta^l_i=\{\delta^{l+1}_1w^{l+1}_{1i}+{\delta^{l+1}_2w^{l+1}_{2i}}+\cdot\cdot\cdot+{\delta^{l+1}_mw^{l+1}_{mi}}\}a'(z^{l}_i) \tag{26} δil={δ1l+1w1il+1+δ2l+1w2il+1++δml+1wmil+1}a(zil)(26)
      此公式将导数计算的次数减少至一次,只计算最后一层的导数,套用公式(26)进行递推。

    第五章 深度学习和卷积神经网络

    5-1 小恶魔来讲解卷积神经网络的结构

    1. 卷积神经网络的隐藏层包括卷积层和池化层。

    2. 卷积神经网络和普通神经网络的不同之处在于“恶魔”会积极地扫描图像,从中找出偏好的模式,书中称之为“小恶魔”。

    3. 卷积神经网络的“小恶魔”与普通神经网络的“恶魔”均只有一个偏好模式。

    在这里插入图片描述

    此图为小恶魔S的偏好模式S。(S为Slash(/)的首字母。)

    那么如何计算卷积,书中用下图进行了说明:

    在这里插入图片描述

    通过将小恶魔S在手写2上不断移动,并计算重合格子的个数,例如红色方格的结果是2,蓝色是1。横向每次移动一格,横向可移动4次,每移动4次后,下移一格,继续从右至左移动4次,因此一共可以移动16次,得到一个4*4的矩阵,这就是卷积的结果,也被称为体征映射。

    得到的矩阵作为卷积神经单元的输入,通过激活函数得到卷积神经单元的输出。

    假设图为m*m,小恶魔为n*n,卷积之后得到的矩阵维数为:(m-n+1,m-n+1)。(待验证)

    进行了卷积计算之后需要进一步进行池化,书中取了最大池化法,将卷积层分为互不重叠的4个区域,选出每个区域的最大值。

    5-3 卷积神经网络的变量关系式

    1. 各层的含义以及变量名、参数名

      通过学习卷积神经网络的变量名和参数名可以加深对其的理解。

      位置符号含义
      输入层 x i j x_{ij} xij神经单元中输入的图像像素(i行j列)的值。与输出值相同
      w i j F k w^{Fk}_{ij} wijFk用于建立第k个特征映射的过滤器的i行j列的值。
      卷积层 z i j F k z^{Fk}_{ij} zijFk卷积层第k个子层的 i i i j j j列的神经单元的加权输入。
      b F . k b^{F.k} bF.k卷积层第k个子层的 i i i j j j列的神经单元的偏置。
      a i j F k a^{Fk}_{ij} aijFk卷积层第k个子层的 i i i j j j列的神经单元的输出。
      池化层 z i j P k z^{Pk}_{ij} zijPk池化层第k个子层的 i i i j j j列的神经单元的加权输入。
      a i j F k a^{Fk}_{ij} aijFk池化层第k个子层的 i i i j j j列的神经单元的输出。
      输出层 w k − i j O n w^{On}_{k-ij} wkijOn从池化层第k个子层的 i i i j j j列的神经单元指向输出层第n个神经单元的箭头的权重。
      z n o z^o_n zno输出层第n个神经单元的加权输入。
      b n O b^O_n bnO输出层第n个神经单元的偏置。
      a n O a^O_n anO输出层第n个神经单元的输出(激活函数的值)。

      这里要注意的是,卷积层和池化层的k代表的是不同的过滤器也就是“小恶魔”而不是第k个训练实例。

    5-4 用Excel体验卷积神经网络

    不过多赘述。

    5-5 卷积神经网络和误差反向传播法

    在这里插入图片描述

    1. 卷积层:
      { z i j F k = w 11 F k x i j + w 12 F k x i j + 1 + w 13 F k x i j + 2 + w 21 F k x i + 1 j + w 22 F k x i + 1 j + 1 + w 23 F k x i + 1 j + 2 + w 31 F k x i + 2 j + w 32 F k x i + 2 j + 1 + w 33 F k x i + 2 j + 2 + b F k a i j F k = a ( z F k ) (27) \begin{cases} z^{Fk}_{ij}=w^{Fk}_{11}x_{ij}+w^{Fk}_{12}x_{ij+1}+w^{Fk}_{13}x_{ij+2}\\ +w^{Fk}_{21}x_{i+1j}+w^{Fk}_{22}x_{i+1j+1}+w^{Fk}_{23}x_{i+1j+2}\\ +w^{Fk}_{31}x_{i+2j}+w^{Fk}_{32}x_{i+2j+1}+w^{Fk}_{33}x_{i+2j+2}+b^{Fk}\\ a^{Fk}_{ij}=a(z^{Fk}) \end{cases} \tag{27} zijFk=w11Fkxij+w12Fkxij+1+w13Fkxij+2+w21Fkxi+1j+w22Fkxi+1j+1+w23Fkxi+1j+2+w31Fkxi+2j+w32Fkxi+2j+1+w33Fkxi+2j+2+bFkaijFk=a(zFk)(27)

      此时的权重就是过滤器小方格中的值,过滤器在原图像数据上移动,重叠的部分进行乘积,然后累加。

    2. 池化层:

      这里以最大池化为例:
      { z i j P k = M a x ( a 2 i − 1 , 2 j − 1 P k , a 2 i − 1 , 2 j P k , a 2 i , 2 j − 1 P k , a 2 i , 2 j P k ) a i j P k = Z i j P k (28) \begin{cases} z^{Pk}_{ij}=Max(a^{Pk}_{2i-1,2j-1},a^{Pk}_{2i-1,2j},a^{Pk}_{2i,2j-1},a^{Pk}_{2i,2j}) \\ a^{Pk}_{ij}=Z^{Pk}_{ij} \end{cases} \tag{28} {zijPk=Max(a2i1,2j1Pk,a2i1,2jPk,a2i,2j1Pk,a2i,2jPk)aijPk=ZijPk(28)
      池化层是对卷积层进行的压缩,且输入等于输出。

    3. 输出层:
      { z n O = w 1 − 11 O n a 11 P 1 + w 1 − 12 O n a 12 P 1 + w 1 − 21 O n a 21 P 1 + w 1 − 22 O n a 22 P 1 + w 2 − 11 O n a 11 P 2 + w 2 − 12 O n a 12 P 2 + w 2 − 21 O n a 21 P 2 + w 2 − 22 O n a 22 P 2 + w 3 − 11 O n a 11 P 3 + w 3 − 12 O n a 12 P 3 + w 3 − 21 O n a 21 P 3 + w 3 − 22 O n a 22 P 3 + b n o a n O = a ( z n o ) ( n = 1 , 2 , 3 ) (29) \begin{cases} z^{O}_{n}=w^{On}_{1-11}a^{P1}_{11}+w^{On}_{1-12}a^{P1}_{12}+w^{On}_{1-21}a^{P1}_{21}+w^{On}_{1-22}a^{P1}_{22}\\ +w^{On}_{2-11}a^{P2}_{11}+w^{On}_{2-12}a^{P2}_{12}+w^{On}_{2-21}a^{P2}_{21}+w^{On}_{2-22}a^{P2}_{22}\\ +w^{On}_{3-11}a^{P3}_{11}+w^{On}_{3-12}a^{P3}_{12}+w^{On}_{3-21}a^{P3}_{21}+w^{On}_{3-22}a^{P3}_{22}+b^o_n\\ a^O_n=a(z^o_n) (n=1,2,3) \end{cases} \tag{29} znO=w111Ona11P1+w112Ona12P1+w121Ona21P1+w122Ona22P1+w211Ona11P2+w212Ona12P2+w221Ona21P2+w222Ona22P2+w311Ona11P3+w312Ona12P3+w321Ona21P3+w322Ona22P3+bnoanO=a(zno)(n=1,2,3)(29)

    4. 梯度下降法

      书中之前的章节介绍了梯度下降法的基本原理,难点在于求解代价函数与参数的偏导数,在书中构建的(本节一开始的图)卷积神经网络中共有69个需要确定的参数,因此就有69个偏导数分量,其中关于_卷积层神经单元的偏重的偏导数分量有27个,偏置3个,关于输出层神经单元的权重的偏导数分量36个,偏置3个。

    5. 神经单元误差

      在卷积神经网络中,神经单元误差共有两种,分别是卷积层和输出层:
      δ i j F k = ∂ C ∂ z i j F k , δ n O = ∂ C ∂ z n O (30) \delta^{Fk}_{ij}=\frac{\partial C}{\partial z^{Fk}_{ij}}, \delta^{O}_{n}=\frac{\partial C}{\partial z^{O}_{n}} \tag{30} δijFk=zijFkC,δnO=znOC(30)
      递推式:
      δ i j F k = { δ 1 O w k − i ′ j ′ O 1 + δ 2 O w k − i ′ j ′ O 2 + δ 3 O w k − i ′ j ′ O 3 } × ( 当 a i j F k 在 区 块 中 最 大 时 为 1 , 否 则 为 0 ) × a ′ ( z i j F k ) (31) \delta^{Fk}_{ij}=\{{\delta^O_1w^{O1}_{k-i'j'}+\delta^O_2w^{O2}_{k-i'j'}+\delta^O_3w^{O3}_{k-i'j'}}\}\times(当a^{Fk}_{ij}在区块中最大时为1,否则为0)\times a'(z^{Fk}_{ij}) \tag{31} δijFk={δ1OwkijO1+δ2OwkijO2+δ3OwkijO3}×(aijFk10×a(zijFk)(31)

    总结

    《深度学习的数学》一书从生物中的神经元入手,通过对其抽象引入了数学意义上的神经单元,基于此展开了对神经网络数学概念的阐述。首先书中讲解了最为基础的向量、矩阵、导数和数列4个基本概念,之后介绍了梯度下降法和误差反向传播法。读者在学习梯度下降法时会发现其运用了“两向量方向相反时,内积最小”的思想、在学习误差反向传播法时会发现“数列递推关系式”的方法运用在其中。最后,识别手写数字的例子贯穿全书,运用该例演示了基本神经网络和卷积神经网络的各自的工作方法,直观易于接受。

    书中使用的Excel示例文件可以从以下链接下载。
    《深度学习的数学》Excel示例文件

    展开全文
  • 玩技术的人是里面最难做的,也是三者收益最低的,永远都要不停学习,不停把画饼变成煎饼。 在今年5月底,Alphago又战胜了围棋世界冠军柯洁,AI再次呈现燎原之势席卷科技行业,吸引了众多架构师对这个领域技术发展的...

    IT互联网行业有个有趣现象,玩资本的人、玩产品的人、玩技术的人都能很好的在这个行业找到自己的位置并取得成功,而且可以只懂其中一样,不需要懂其余两样。玩技术的人是里面最难做的,也是三者收益最低的,永远都要不停学习,不停把画饼变成煎饼。

    在今年5月底,Alphago又战胜了围棋世界冠军柯洁,AI再次呈现燎原之势席卷科技行业,吸引了众多架构师对这个领域技术发展的持续关注和学习,思考AI如何做工程化,如何把我们系统的应用架构、中间件分布式架构、大数据架构跟AI相结合,面向什么样的应用场景落地,对未来做好技术上的规划和布局。

    之前发表过一篇文章《如何用70行Java代码实现深度神经网络算法》(点击「阅读原文」获得文章),记录了深度神经网络的计算过程和程序实现,本文再进一步研究一下背后的数学原理。

    为了彻底理解深度学习,我们到底需要掌握哪些数学知识呢?经常看到会列出一系列数学科目:微积分、线性代数、概率论、复变函数、数值计算等等。这些数学知识有相关性,但实际上这是一个最大化的知识范围,学习成本会非常久,本文尝试归纳理解深度学习所需要的最小化数学知识和推导过程。

    (以下根据作者的学习理解整理,有误之处,欢迎专家学者提出指导批评)。

    多层神经网络的函数构成关系

    多层神经网络从输入层,跨多个隐含层,到最后输出层计算误差,从数学上可以看做一系列函数的嵌套组合而成,上一层函数输出做为下一层函数输入,如下图1所示。

    在这里插入图片描述

    先从误差函数说起,深度学习的误差函数有典型的差平方函数,也有交叉熵函数,本文以差平方函数为例:

    在这里插入图片描述

    Tj代表每个神经元目标值,Oj代表每个神经元输出值

    这里Oj=f(Zj),f是激活函数,一般是s函数:
    在这里插入图片描述

    或者relu函数:

    在这里插入图片描述

    Zj是线性函数(Wij泛指i层和j层节点连接权重,bj泛指j层节点截距):

    在这里插入图片描述

    Oi再往前依次类推,整个神经网络都可以由上面的函数嵌套去表达。

    现在我们的问题是,如何通过多次调整上面的Wij和bj,能让误差函数E达到最小值?

    在这里插入图片描述

    换言之,上面这个变量w和变量b应该怎么取值才能达到效果呢?为了回答这个问题,我们先看看误差函数的几何意义。

    误差函数的几何意义及梯度下降

    为了方便看懂,我们从二维和三维去理解误差函数,如果输出值Oj只有一项,并设定Tj=1,那么Oj和误差函数E刚好构成X,Y的坐标关系如图2所示:
    在这里插入图片描述

    也就是Oj只有一项的时候,误差函数E刚好就是一个简单的抛物线,可以看到它的底部在O=1的时候,这时E=0最小值。

    那么,当O不等于1的时候,我们需要一种方法调整O,让O像一个小球一样,把抛物线看做碗,它沿着碗切面向下滚动,越过底部由于重力作用又返回,直到在底部的位置停止不动。什么方法能达到这样神奇的效果呢,就是数学家发明的导数,如果O每次减去一个导数的步长,在离底部远的地方,导数对应的正切值就大,下降就快,离底部近的地方,导数正切值就小,下降就慢,在底部O=1这个点导数为0,不再下降,并且越过底部后,导数的正切值变负数,于是又调整了它的方向,刚好达到重力一样的效果。我们把这种方法取个难懂的名字,叫做梯度下降。

    再看看三维的几何意义,假设输出值为O1,O2两项,并设定T1=1,T2=1那么O1,O2和误差函数E刚好构成X,Y,Z的坐标关系如图3所示:

    在这里插入图片描述

    在这里插入图片描述

    任意给定一个X,Y值,通过函数E计算得到一个Z值,形成一个三维曲面,最小值在谷底。我们继续使用上面的梯度下降方法,会产生一个问题,现在的变量是O1,O2两项,到底使用哪个求导数呢?根据上面的几何图形可以看到,如果O1,O2轴同时往谷底方向下降,那么E能达到最小值,可以试想O2等于一个常数,就相当于一个O1和E构成的二维截面,采用上面的方法减去O1导数的步长就能得到O1的变化量,同样将O1等于一个常数,能得到O2和E构成的二维截面,并求得O2的变化量。这种将其他变量视为常数,而只对当前变量求导的方法叫求偏导。

    从上面得知对二元函数z=f(x,y)的梯度下降求法,是对每个X,Y求偏导,那么对于多元函数呢,也是一样的求法,只是多维世界的几何图形就很难表达了,因为我们生活在三维世界,很难想像出克莱因瓶这样的四维世界,瓶底通过第四维空间穿过瓶身去和瓶口相连,人类的眼睛也只能看到三维世界,世界上的三维物体能否通过第四维通道传送到另外一个位置上去呢,看上去像这个物体消失了,在其他地方又突然出现了,跑题了,言归正传。

    由于导数的特点是到一个谷底就为0了,也就是不变化了,所以梯度下降求法有可能只到一个山窝里,没有到达最深的谷底,有局部最小值的缺陷,所以我们要不停调整初始参数,和进行多次的训练摸索,争取能碰到一个到达谷底的最好效果。

    现在还有个问题,这里是以O为变量来解释梯度下降求法,但是其实我们要求的是Wij和bj的调整值,根据上面的结论,我们可以通过误差函数E对Wij和bj求偏导得到,步长为自己设置的一个常数,如下:

    在这里插入图片描述

    那么如何求呢,通过前面的第一部分的神经网络函数构成关系,Wij和bj到误差函数E是一个多层嵌套的函数关系,这里需要用到复合函数的求偏导方法,截至这里,我们理解了数学原理,再结合下面所用到的数学公式,就构成了推导所需要的最小化数学知识。

    推导需要的数学公式

    1、复合函数求偏导公式

    在这里插入图片描述

    2、导数四则运算公式

    在这里插入图片描述

    3、导数公式
    在这里插入图片描述

    我们只要记住上面3组公式,就可以支持下面完整的推导了。

    数学推导过程

    先将多层神经网络转成一个数学问题定义,如图4所示:

    在这里插入图片描述

    1、对于输出层的权重Wij和截距bj,通过误差函数E对Wij求偏导,由于函数E不能直接由Wij表达,我们根据第1组的复合函数求偏导公式,可以表达成Oj和Zj对Wij求偏导的方式:

    在这里插入图片描述

    由于Zj是线性函数我们是知道的

    在这里插入图片描述

    并且Oj是可以直接用Zj表达的:

    在这里插入图片描述

    所以E对Wij求偏导可以写成f(Zj)的导数表达,同样对bj求偏导也可以用f(Zj)的导数表达(记做推导公式一)

    在这里插入图片描述

    由于误差函数E是可以直接用Oj表达的,我们继续推导如下,根据第2组和第3组导数四则运算公式和导数公式:

    在这里插入图片描述

    最后得到一个只用f(Zj)的导数表达的通用公式,其中Oj是输出层的输出项,Oi是上一层的输出项:

    在这里插入图片描述

    从前面得知,Oj=f(Zj),f是激活函数,一般是s函数或者relu函数,我们继续推导如下:

    (1)如果激活函数是s函数,根据它的导数公式:

    在这里插入图片描述

    可以得到结论一(1),权重Wij和截距bj,的更新公式为:

    在这里插入图片描述

    (2)如果激活函数是relu函数,根据它的导数公式:

    在这里插入图片描述

    可以得到结论一(2),权重Wij和截距bj,的更新公式为:

    在这里插入图片描述

    2、除了对输出层的权重Wij和截距bj外,更普遍的隐含层权重Wki和截距bi更新应该如何去求呢?

    我们仍然用误差函数E对Wki和bi求偏导,借助前面的推导公式一,可以得到

    在这里插入图片描述

    对于输出层来说,误差函数E可以直接用Oj表达,但是对于隐含层,误差函数E并不能直接用Oi表达,根据多层神经网络的函数构成关系,我知道Oj可以通过Oi向前传递进行一系列函数组合得到的。

    由于深度学习不一定是全连接,我们假设Oi只和输出层j的s个节点相连接,下标记为j0到js,如上面图四所示,对于Oi来说,只跟和它节点相连接的Oj构成函数关系,跟不相连接的Oj没有函数关系,所以我们根据复合函数求偏导可以把不相连接的Oj视为常数。

    并且,根据函数构成关系,Oi可直接构成Zjs,Zjs可直接构成Oj,根据复合函数求偏导公式的链式写法推导如下:

    在这里插入图片描述

    同时,对上式的Zjs来说,误差函数E对它求偏导,其余项可以视为常数:

    在这里插入图片描述

    所以,在上式的结果继续推导如下,可以完全用E对Zjs的偏导数来表达:

    在这里插入图片描述

    现在我们将误差函数E对Zjs的偏导数记做输出层相连节点的误差项,根据前面的推导公式一,在计算Wij更新值可以得到:
    在这里插入图片描述

    所以,隐含层的权重和截距更新,可以由输出层的误差项得到,同理也适用于其他隐含层,都可以由它的后一层(nextlayer)的误差项得到,下面是结论二,隐含层权重Wki和截距bi的更新公式为:

    在这里插入图片描述

    总结

    通过掌握以上数学原理和推导,我们就理解了深度学习为什么要这样计算,接下来利用推导的结论一和结论二,可以完成深度学习的算法程序实现了,剩下的只是架构和工程化的问题。对卷积类的深度学习模型,为了降低训练复杂性,它的权重很多是相同的(权重共享),并且只和下一层部分神经元节点连接(局部连接),数学原理、计算方法、训练方式和上面是一样的,最终的模型结果都是得到一组参数,用该组参数保证误差函数最接近最小值。

    作者介绍:彭渊,资深架构师,在Java技术领域从业十多年,曾撰写多款开源软件,历任阿里资深专家,华为中间件首席架构师,淘宝高级专家等。开源代表作有Fourinone(四不像)分布式核心技术框架、CoolHash并行数据库引擎等,曾出版书籍《大规模分布式系统架构与设计实战》,拥有多项软件著作权和专利。

    展开全文
  • 深度学习在计算梯度回传的时候,经常需要对矩阵求导。这里是详细的数学知识。 深度学习在计算梯度回传的时候,经常需要对矩阵求导。这里是详细的数学知识。 深度学习在计算梯度回传的时候,经常需要对矩阵求导。...
  • 单就机器学习和深度学习来说,更多用到的是微分。积分基本上只在概率论中被使用,概率密度函数,分布函数等概念和计算都要借助于积分来定义或计算。 几乎所有学习算法在训练或者预测时都是求解最优化问题,因此需要...

    如果不是有太多自由时间,不要过度投入到数学上,或者说不要系统大量地学习,可以遇到不懂的再去学习相关数学知识。

    (本文部分摘自图灵的猫公众号 )

    微积分

    微积分是现代数学的基础,线性代数,矩阵论,概率论,信息论,最优化方法等数学课程都需要用到微积分的知识。单就机器学习和深度学习来说,更多用到的是微分。积分基本上只在概率论中被使用,概率密度函数,分布函数等概念和计算都要借助于积分来定义或计算。 几乎所有学习算法在训练或者预测时都是求解最优化问题,因此需要依赖于微积分来求解函数的极值,而模型中某些函数的选取,也有数学性质上的考量。对于机器学习而言,微积分的主要作用是: 1.求解函数的极值 2.分析函数的性质 下面列出机器学习和深度学习中所需的微积分知识点,显然,不是课本里所讲的所有内容都是需要的,我们只列出所必须的。

    • 极限:极限是高等数学和初等数学的分水岭,也是微积分这座大厦的基石,是导数、微分、积分等概念的基础。虽然在机器学习里不直接用到极限的知识,但要理解导数和积分,它是必须的。
    • 上确界与下确界:这一对概念对工科的微积分来说是陌生的,但在机器学习中会经常用到,不要看到论文或书里的sup和inf不知道什么意思。
    • 导数:其重要性众所周知,求函数的极值需要它,分析函数的性质需要它。典型的如梯度下降法的推导,logistic函数导数的计算。熟练地计算函数的导数是基本功。
    • Lipschitz连续性:这一概念在工科教材中同样没有提及,但对分析算法的性质却很有用,在GAN,深度学习算法的稳定性、泛化性能分析中都有用武之地。
    • 导数与函数的单调性:某些算法的推导,如神经网络的激活函数,AdaBoost算法,都需要研究函数的单调性。
    • 导数与函数的极值:这个在机器学习中处于中心地位,大部分优化问题都是连续优化问题,因此可以通过求导数为0的点而求函数的极值,以实现最小化损失函数,最大化似然函数等目标。
    • 导数与函数的凹凸性:在凸化,Jensen不等式的证明中都有它的应用。
    • 泰勒公式:又一个核心知识点。在优化算法中广泛使用,从梯度下降法,牛顿法,拟牛顿法,到AdaBoost算法,梯度提升算法,XGBoost的推导都离不开它。
    • 不定积分:积分在机器学习中使用的相对较少,主要用于概率的计算中,它是定积分的基础。
    • 定积分:包括广义积分,被用于概率论的计算中。机器学习中很大一类算法是概率型算法,如贝叶斯分类器,概率图模型,变分推断等。这些地方都涉及到对概率密度函数进行积分。
    • 变上限积分。分布函数是典型的变上线积分函数,同样主要用于概率计算中。
    • 牛顿-莱布尼兹公式。在机器学习中很少直接使用,但它是微积分中最重要的公式之一,为定积分的计算提供了依据。
    • 常微分方程。在某些论文中会使用,但一般算法用不到。
    • 偏导数。重要性不用多说,机器学习里绝大部分函数都是多元函数,要求其极值,偏导数是绕不开的。
    • 梯度。决定了多元函数的单调性和极值,梯度下降法的推导离不开它。几乎所有连续优化算法都需要计算函数的梯度值,且以寻找梯度为0的点作为目标。
    • 高阶偏导数。确定函数的极值离不开它,光有梯度值还无法确定函数的极值。
    • 链式法则。同样使用广泛,各种神经网络的反向传播算法都依赖于链式法则。
    • Hessian矩阵。决定了函数的极值和凹凸性,对使用工科教材的同学可能是陌生的。
    • 多元函数的极值判别法则。虽然不直接使用,但对理解最优化方法至关重要。
    • 多元函数的凹凸性判别法则。证明一个问题是凸优化问题是离不开它的。
    • Jacobian矩阵。工科教材一般没有介绍这一概念,但和Hessian矩阵一样,并不难理解,使用它可以简化多元复合函数的求导公式,在反向传播算法中广泛使用。
    • 向量与矩阵求导。常见的一次函数,二次函数的梯度,Hessian矩阵的计算公式要烂熟于心,推导并不复杂。
    • 泰勒公式。理解梯度下降法,牛顿法的优化算法的基石。
    • 多重积分。主要用于概率论中,计算随机向量的积分,如正态分布。

    线性代数与矩阵论

    相对于微积分,线性代数似乎用的更多,而且有一部分属于矩阵论/矩阵分析的范畴,超出了工科线性代数教材的范围。下面列出线性代数和矩阵论的常用知识点。

    • 向量及其运算:机器学习算法的输入很多时候是向量,如样本的特征向量。因此熟练掌握向量以及常用的运算是理解机器学习的基础。
    • 矩阵及其运算:与向量一样,是线性代数的核心概念,各种运算,常用矩阵,必须烂熟于心。
    • 行列式:直接使用的少,在概率论,某些模型的推导中偶尔使用。
    • 线性方程组:直接使用的少,但这是线性代数的核心内容。
    • 特征值与特征向量:在机器学习中被广泛使用,很多问题最后归结于求解矩阵的特征值和特征向量。如流形学习,谱聚类,线性判别分析,主成分分析等。
    • 广义特征值:工科线性代数教材一般不提及此概念,但在流形学习,谱聚类等算法中经常用到它。
    • Rayleigh商:工科教材一般不提及它。在某些算法的推导过程中会用到,如线性判别分析。
    • 矩阵的谱范数与条件数:工科教材一般不提及它。在某些算法的分析中会用到它,它刻画了矩阵的重要性质。
    • 二次型:很多目标函数是二次函数,因此二次型的地位不言而喻。
    • Cholesky分解:某些算法的推导中会用到它,工科教材一般不提及它。
    • 特征值分解:对机器学习非常重要,很多问题最后归结于特征值分解,如主成分分析,线性判别分析等。
    • 奇异值分解:在机器学习中广泛使用,从正态贝叶斯分类器,到主题模型等,都有它的影子。
    • ç©éµåæ

    概率论与信息论

     

    概率论与信息论在机器学习中用得非常多。概率论的知识,一般不超出工科教材的范畴。而信息论是很多同学没有学过的,不过只要你理解了微积分和概率论,理解这些概念并不是难事。下面列出常用的概率论与信息论知识点。

    • 随机事件与概率:这是理解随机变量的基础,也是概率论中最基本的知识。
    • 条件概率与独立性:条件概率非常重要,在机器学习中,只要有概率模型的地方,通常离不开它。独立性在很多地方也被使用,如概率论图模型。
    • 条件独立:在概率论图模型中广泛使用,一定要理解它。
    • 全概率公式:基础公式,地位不用多说。
    • 贝叶斯公式:在机器学习的概率型算法中处于灵魂地位,几乎所有生成模型都要用到它。
    • 离散型随机变量与连续型随机变量:重要性不用多说,概率质量函数,概率密度函数,分布函数,一定要熟练掌握。
    • 数学期望:非常重要,好多地方都有它的影子。
    • 方差与标准差:非常重要,刻画概率分布的重要指标。
    • Jensen不等式:在很多推导和证明中都要用它,如EM算法,变分推断。
    • 常用概率分布:包括均匀分布,正态分布,伯努利分布,二项分布,多项分布,t分布等,在各种机器学习算法中广泛使用。
    • 随机向量:多元的随机变量,在实际中更有用。
    • 协方差:经常使用的一个概念,如主成分分析,多元正态分布中。
    • 参数估计:包括最大似然估计,最大后验概率估计,贝叶斯估计,核密度估计,一定要弄清楚它们是怎么回事。
    • 随机算法:包括采样算法,遗传算法,蒙特卡洛算法,在机器学习中也经常使用。
    • 信息论中的一些概念,包括熵,交叉熵,KL散度,JS散度,互信息,信息增益,一定要深刻理解这些概念。如果你不理解KL散度,那怎么理解变分推断和VAE?

     

    最优化方法

    前面已经说过,最优化方法是机器学习的灵魂,用于确定模型的参数或预测结果。不幸的是,工科专业一般没有学过这门课。不过只要你理解了微积分和线性代数,并不难推导出这些算法。下面列出常用的最优化方法知识点:

    • 梯度下降法:最简单的优化算法,但却很有用,尤其在深度学习中。
    • 随机梯度下降法:在深度学习中的重要性妇孺皆知。
    • 最速下降法:梯度下降法的改进型,是理解梯度提升等算法的基础。
    • 梯度下降法的改进型:如AdaGrad,AdaDelta,Adam等,使用深度学习开源库的时候经常会看到这些名字。
    • 牛顿法:二阶优化算法的典型代表,只是在深度学习中用的少。在logistic回归等算法的训练中会用到它。
    • 拟牛顿法:牛顿法的改进,在条件随机场等模型的训练中会用到L-BFGS等算法。
    • 坐标下降法:在logistic回归等模型的训练中会用到它,不难理解。
    • 凸优化:最优化中的核心概念之一,如果一个问题被证明为凸优化问题,恭喜你,它基本上可以较好的解决。
    • 拉格朗日乘数法:在各种算分的推导中经常使用,如主成分分析,线性判别分析等,如果不熟练掌握它,你将非常艰难。
    • KKT条件:拉格朗日乘数法扩展到带不等式约束后的版本,在SVM的推导中将会使用。
    • 拉格朗日对偶:不太好理解的知识点,在SVM的推导中经常用到,不过套公式并不难。
    • 多目标优化:一般很少使用,在多目标NAS中会使用它,如帕累托最优等概念。
    • 变分法:用于求解泛函的极值,在某些理论推导中会用到它,如通过变分法可以证明在均值和方差一定的情况下,正态分布的熵最大。

    图论

    机器学习中的某些问题可以用图论的方法解决,如流形学习,谱聚类。某些算法的表达也可能用到图论的知识,如深度学习中的计算图,NAS中的网络拓扑结构图。概率图模型让很多初学者谈虎色变,它是图论与概率论的完美结合。下面介绍常用的图论知识点。 图的基本概念:如顶点,边,有向图,无向图等。

    邻接矩阵与加权度矩阵:图论中的核心概念,边一般都带有权重的。

    某些特殊的图:如二部图,有向无环图等,在深度学习中经常会用到他们。

    最短路径问题:经典的Dijkstra算法是每个程序员必须掌握的。

    拉普拉斯矩阵和归一化拉普拉斯矩阵:比较难理解的概念,机器学习中的很多算法,如流形学习,使用图论的半监督学习,谱聚类都离不开它。理解这个矩阵和它的性质,是理解这些算法的基础。

     

    展开全文
  • 深度学习需要多强的数学基础?

    千次阅读 2019-03-13 14:10:32
    想要学习深度学习, 你第一个需要理解透彻的学问是线性代数。为什么? 因为深度学习的根本思想就是把任何事物转化成高维空间的向量, 强大无比的神经网络, 说来归齐就是无数的矩阵运算和简单的非线性变换的结合。 ...
  • 【盘点】深度学习最常用到的20个Python库 【导读】Python在解决数据科学任务和挑战方面处于领先地位。而一些方便易用的库则帮助了开发人员高效开发。在这里我们整理了20个在深度学习、数据分析...
  • 深度学习.azw3

    2018-04-04 21:45:03
    同时,它还介绍了工业界中实践者用到深度学习技术,包括深度前馈网络、正则化、优化算法、卷积网络、序列建模和实践方法等,并且调研了诸如自然语言处理、语音识别、计算机视觉、在线推荐系统、生物信息学以及视频...
  • 深度学习数学基础

    千次阅读 2021-11-17 11:31:45
    深度学习的主要应用 常用于非结构性数据:文字、音频、图像 图像处理领域主要应用 图像分类(物体识别):整幅图像的分类或识别 物体检测:检测图像中物体的位置进而识别物体 图像分割:对图像中的特定物体按边缘进行...
  • 深度学习数学基础——矩阵微分篇

    千次阅读 2019-01-05 10:37:00
      2019-01-02 13:45:27 ... 本文是Terence Parr和Jeremy Howard撰写的基于'深度学习的矩阵运算'的笔记集合。         感兴趣同学可关注本头条号 私信回复 深度学习矩阵微分 ...
  • 浅谈大数据和深度学习和计算数学的一点关系

    万次阅读 多人点赞 2018-05-05 19:45:34
    浅谈大数据和深度学习和计算数学的一点关系 专业介绍 计算数学数学的一个分支,研究的内容包括设计和分析算法以及数学建模等,目的是为了在实际工程中利用快速稳定的算法得到精确值的近似值。在计算机科学高度...
  • 深度学习算法在许多情况下都涉及优化。例如,模型中的进行推断涉及求解优化问题。我们经常使用解析优化去证明或设计算法。在深度学习涉及的诸多优化问题中,最难的是神经网络训练。甚至是用几百台机器投入几天到几个...
  • 深度学习数学基础笔记(1)

    千次阅读 2020-08-11 22:23:41
    深度学习数学 第一章 神经网络的思想 1.神经网络(Neural Network NN) a)深度学习是人工智能的一种具有代表性的实现方法,深度学习是以神经网络为出发点的。 b)深度学习可以实现图像识别,从视频中识别猫,...
  • 深度学习需掌握的基础数学知识

    万次阅读 2017-07-29 17:58:15
    转载请注明出处:乐投网-搞深度学习需掌握的基础数学知识  IT 互联网行业有个有趣现象,玩资本的人、玩产品的人、玩技术的人都能很好的在这个行业找到自己的位置并取得成功,而且可以只懂其中一样,不需要懂...
  • 人工智能的基石是数学,没有数学基础科学的支持,人工智能很难行稳至远。—中国科学院院士、西安交通大学教授徐宗入行人工智能,所谓的门槛和挑战本质是你对数学知识的掌握程度。数学基础知识蕴含着处...
  • 简言之,人工智能,就是让计算机从数据中学习知识,理解知识,并且像人一样,能够利用这些知识去做些事情,比如搞预测,搞分析,搞回答等等,都是要求可以检验的。学习到这些数据并且会用这些数据进行灵活运用,这些...
  • 数学深度学习的基本线性代数

    千次阅读 2018-09-03 16:19:13
    线性代数的概念对于理解机器学习背后的理论至关重要,特别是对于深度学习。它们为您提供了更好的直觉,让您了解算法在引擎盖下的实际工作方式,从而使您能够做出更好的决策。所以如果你真的想成为这个领域的专业人士...
  • 文章目录第一章 神经网络的思想1-1 神经网络和深度学习1-2 神经元工作的数学表示1-3 激活函数:将神经元的工作一般化1-4 什么是神经网络1-5 用恶魔来讲解神经网络的结构1-6 将恶魔的工作翻译成神经网络的语言1-7 ...
  • python深度学习介绍

    千次阅读 2020-02-23 20:30:15
    深度学习(人工神经网络的研究的概念) 深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI, Artificial Intelligence)。 ...
  • 深度学习数学》二刷总结

    千次阅读 热门讨论 2020-02-19 16:02:16
    二刷:深度学习数学
  • 同时,它还介绍了工业界中实践者用到深度学习技术,包括深度前馈网络、正则化、优化算法、卷积网络、序列建模和实践方法等,并且调研了诸如自然语言处理、语音识别、计算机视觉、在线推荐系统、生物信息学以及视频...
  • 深度学习基础入门

    万次阅读 多人点赞 2018-07-03 02:45:11
    本课程共分为三个部分:基础理论、深度神经网络基本结构以及网络优化与实践。本课程采用了理论结合实践的讲解方式,方便读者边学边练,理解巩固。在解释相关概念时,作者尽力使用简单、直观、可实现的公式语言描述,...
  • 学好机器学习需要哪些数学知识?

    千次阅读 2019-02-24 11:10:42
    很多同学谈数学色变,但数学是机器学习绕不开的基础知识。今天我们来谈谈这个话题:学好机器学习究竟需要哪些数学知识?  
  • 一文了解线性代数--深度学习入门之数学基础

    千次阅读 多人点赞 2017-07-08 18:59:26
    一文了解线性代数–深度学习入门之数学基础本文将简单且形象的对线性代数进行介绍,与传统的线性代数教材不同,我不想聚焦于具体的数学命题和技术,而是想探究线性代数的现实意义与哲学本质。本文主要记录我为了深入...
  • 深度学习-1.1卷积

    千次阅读 2022-03-02 17:18:04
    卷积是一种数学运算
  • 即使深度学习的出发点是更深层次的神经网络,但细分起来也会有非常多的不同的模型(也就是不同的抽象问题的方式),对应不同的数学公式,比如常见的CNN、DNN等。 “大”模型,就是模型中比较“大”的那一类,大的...
  • 深度学习基础教程

    千人学习 2017-06-02 12:47:00
    接触数据挖掘的算法多年,近一两年开始用到深度学习的算法.我也是从0开始一点一点学的,在学习的过程中感觉现在的教程不太适合初学者,现有的教程或书,要么是大堆的数学公式,吓跑初学者,要么是大堆的代码淹死初学者,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,906
精华内容 11,562
关键字:

深度学习用到的数学