《深度学习的数学》学习笔记

深度学习的数学

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

文章目录

    • 第一章 神经网络的思想
      • 1-1 神经网络和深度学习
      • 1-2 神经元的数学表示
      • 1-3 激活函数:将神经元的工作一般化
      • 1-4 什么是神经网络
      • 1-5 用恶魔来讲解神经网络的结构
      • 1-6 将恶魔的工作翻译为神经网络的语言
      • 1-7 网络自学习的神经网络
    • 第二章 神经网络的数学基础
      • 2-1 神经网络所需的函数
      • 2-2 有助于理解神经网络的数列和递推关系式
      • 2-3 神经网络中经常用到的$\Sigma$符号
      • 2-4 有助于理解神经网络的向量基础
      • 2-5 有助于理解神经网络的矩阵基础
      • 2-6 神经网络的导数基础
      • 2-7 神经网络的偏导数基础
      • 2-8 误差反向传播法必须的链式法则
      • 2-9 梯度下降法的基础:多变量函数的近似公式
      • 2-10 梯度下降法的含义与公式
      • 2-11 用Excel体验梯度下降法
      • 2-12 最优化问题和回归分析
    • 第三章 神经网络的最优化
      • 3-1 神经网络的参数和变量
      • 3-2 神经网络的变量的关系式
      • 3-3 学习数据和正解
      • 3-4 神经网络的代价函数
      • 3-5 用Excel体验神经网络
    • 第四章 神经网络和误差反向传播法
      • 4-1 梯度下降法的回顾
      • 4-2 神经元误差
      • 4-3 神经网络和误差反向传播法
    • 第五章 深度学习和卷积神经网络
      • 5-1 小恶魔来讲解卷积神经网络的结构
      • 5-3 卷积神经网络的变量关系式
      • 5-4 用Excel体验卷积神经网络
      • 5-5 卷积神经网络和误差反向传播法
    • 总结

第一章 神经网络的思想

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)
此时为了与生物中的神经元区别开来,我们将简化、抽象化的神经元(非生物领域的)成为神经单元:

《深度学习的数学》学习笔记_第1张图片

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

神经元 神经单元
输出值 y y y 0或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 用恶魔来讲解神经网络的结构

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

1 2 3
4 5 6
7 8 9
10 11 12

书中的隐藏层共有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 神经网络的变量的关系式

《深度学习的数学》学习笔记_第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. 卷积神经网络的“小恶魔”与普通神经网络的“恶魔”均只有一个偏好模式。

《深度学习的数学》学习笔记_第3张图片

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

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

《深度学习的数学》学习笔记_第4张图片

通过将小恶魔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 卷积神经网络和误差反向传播法

《深度学习的数学》学习笔记_第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示例文件

你可能感兴趣的:(深度学习)