深度学习的数学
本文为学习了涌井良幸和涌井贞美所著的《深度学习的数学》后的读书笔记及总结。
第一章 神经网络的思想
1-1 神经网络和深度学习
本节主要讲解了生物领域中神经元的主要特点:
- 多个神经元可以形成网络
- 输入信号如果小于某个阈值则神经元不作出反应
- 输入信号大于某个阈值时神经元点火及作出后续反应
- 输入信号源自多个神经元,输入信号为多个神经元的总和且每个信号的权重不同
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 x1、x2、x3对应的权重。
是否点火可以用单位阶跃函数来表示:
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)(z⩾0)(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 y | 0或1 | 模型允许的任意数值 |
激活函数 | 单位阶跃函数 | 自由给定,较为著名的是 S i g m o i d Sigmoid Sigmoid函数 |
输出解释 | 点火与否 | 反映度、兴奋度等 |
为了将公式(2)更加抽象化,书中将阈值 θ \theta θ及其前面的符号替换为偏置 b b b.
1-4 什么是神经网络
将神经单元连接成网络状,就形成了神经网络。
神经网络可以分为输入层、隐藏层(中间层)、输出层:
- 输入层:将从数据得到的值原样输出。
- 中间层:做公式(4)的运算。
- 输出层:做公式(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 神经网络所需的函数
-
一次函数
-
二次函数
-
单位阶跃函数
-
Sigmoid函数
σ ( x ) = 1 1 + e − x (5) \sigma(x)=\frac{1}{1+e^{-x}} \tag{5} σ(x)=1+e−x1(5)
Sigmoid函数与单位阶跃函数比较像,但其是光滑的。
- 正态分布的概率密度函数
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π1e−2σ2(x−μ)2(6)
2-2 有助于理解神经网络的数列和递推关系式
-
数列及递推公式
-
联立递推关系式
误差反向传播法就是将这种递推关系式应用在神经网络中。
2-3 神经网络中经常用到的 Σ \Sigma Σ符号
- 其含义是求和
- 具有线性性质
2-4 有助于理解神经网络的向量基础
本节主要讲解了向量的基础知识。
-
向量是具有方向和大小的量,用箭头表示。
-
可以用坐标的形式表示向量。
-
向量的大小
-
向量的内积
-
柯西-施瓦茨不等式
− ∣ a ∣ ∣ b ∣ ⩽ a ⋅ b ⩽ ∣ a ∣ ∣ b ∣ (7) -|a||b|\leqslant a\cdot b\leqslant|a||b| \tag{7} −∣a∣∣b∣⩽a⋅b⩽∣a∣∣b∣(7)
此不等式的成立可以得出:当两个向量相反时,内积取得最小值,在后续的梯度下降法中会用到这一性质。 -
张量(tensor)是向量概念的推广
书中用物理学中的张力来说明,即一个向量在不同的法向下具有不同的表示,并将其合并成为矩阵。
2-5 有助于理解神经网络的矩阵基础
-
较为简单的矩阵基础知识:和、差、常数倍、乘积。
-
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)A⊙B=(2⋅21⋅17⋅88⋅3)=(415624)(8) -
转置矩阵:行列互换
2-6 神经网络的导数基础
本节主要讲解了导数的基本定义以及求导公式。
Sigmoid函数的求导公式:
σ
′
(
x
)
=
σ
(
x
)
(
1
−
σ
(
x
)
)
(9)
\sigma '(x)=\sigma(x)(1-\sigma(x)) \tag{9}
σ′(x)=σ(x)(1−σ(x))(9)
2-7 神经网络的偏导数基础
-
关于某个特定变量的导数称为偏导数
-
多变量函数取得最小值的必要条件:
函数 z = f ( x , y , z ) z=f(x,y,z) z=f(x,y,z)取得最小值的必要条件是 ∂ f ∂ x = 0 \frac{\partial f}{\partial x}=0 ∂x∂f=0、 ∂ f ∂ y = 0 \frac{\partial f}{\partial y}=0 ∂y∂f=0、 ∂ f ∂ z = 0 \frac{\partial f}{\partial z}=0 ∂z∂f=0
-
书中还提到了拉格朗日乘数法,是高数中常用到的方法。
2-8 误差反向传播法必须的链式法则
-
单变量函数的链式法则
当 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) -
多变量函数的链式法则
变量 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} ∂x∂z=∂u∂z∂x∂u+∂v∂z∂x∂v(11)
2-9 梯度下降法的基础:多变量函数的近似公式
-
单变量函数的近似公式:
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为微小的数。 -
多变量函数的近似公式:
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)+∂x∂f(x,y)Δx+∂y∂f(x,y)Δy(13)
其中 Δ x \Delta x Δx Δ y \Delta y Δy为微小的数。 -
近似公式的向量表示:
定义:
Δ 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=˙∂x∂zΔx+∂y∂zΔy(15)
定义:
∇ z = ( ∂ z ∂ x , ∂ z ∂ y ) (16) \nabla z=(\frac{\partial z}{\partial x} ,\frac{\partial z}{\partial y}) \tag{16} \\ ∇z=(∂x∂z,∂y∂z)(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 梯度下降法的含义与公式
-
梯度下降法:通过慢慢移动图像上的点进行摸索,从而找出函数的最小值。
-
梯度下降法主要的思想是运用两向量方向相反时,其内积最小。
当 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)=−η(∂x1∂f,∂x2∂f,⋅⋅⋅,∂xn∂f)(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=(∂x1∂f,∂x2∂f,⋅⋅⋅,∂xn∂f)(19)
则有:
Δ x = − η ∇ f (20) \Delta x=-\eta \nabla f \tag{20} Δx=−η∇f(20)
其中 η \eta η为正的微小常数。 -
η \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=−η(∂x1∂f)2+(∂x2∂f)2+⋅⋅⋅+(∂xn∂f)2∇f(21)
2-12 最优化问题和回归分析
- 最优化问题:对神经网络的参数(权重和偏置)进行拟合,使得神经网络的输出和实际数据相吻合。
- 代价函数(Cost Function):利用平方误差的总和进行最优化的方法称为最小二乘法。
第三章 神经网络的最优化
3-1 神经网络的参数和变量
- 参数:确定数学模型的常数
符号 | 含义 |
---|---|
x i x_i xi | 表示输入层(层1)的第 i i i个神经单元的输入的变量。由于输入层的神经单元输入和输出为同一值,所以也表示输出的变量。此外也作为神经单元的名称使用。 |
w j i l w^l_{ji} wjil | 从层 l − 1 l-1 l−1的第 i i i个神经元指向层 l l l的第 j j j个神经元的箭头的权重。(可以看成上下标的后一位指向前一位,即 w j , i l , l − 1 w^{l,l-1}_{j,i} wj,il,l−1)这是神经网络的参数 |
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个神经元的输出变量,也可以作为神经单元的名称使用。 |
- 此外,学习实例不仅只有一个,当第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⎠⎞=⎝⎛w112w212w312w122w222w322w132w232w332⋅⋅⋅⋅⋅⋅⋅⋅⋅w1−122w2−122w3−122⎠⎞⎝⎜⎜⎜⎜⎜⎜⎜⎜⎛x1x2x3⋅⋅⋅x12⎠⎟⎟⎟⎟⎟⎟⎟⎟⎞+⎝⎛b12b22b32⎠⎞(23)
3-3 学习数据和正解
-
何为正解
预测的值 预测的值 图像为0时 图像为1时 a 1 3 a^3_1 a13 接近1的值 接近0的值 a 2 3 a^3_2 a23 接近0的值 接近1的值 -
可以对照输出变量 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 神经网络的代价函数
- 最优化的基础:代价函数的最小化。
- 神经网络的代价函数是将所有学习实例的误差加和。
- 学习数据的规模必须大于数学模型参数的个数。
3-5 用Excel体验神经网络
主要讲解了如何用Excel确定神经网络的参数。
第四章 神经网络和误差反向传播法
4-1 梯度下降法的回顾
- 目前已知的求函数最小值的通用方法是求变量和偏导数使其为0,但是对于神经网络来说,这是十分困难的,因为权重和偏置的总数十分的庞大。例如书中给的例题,学习样例有64个,代价函数是每个样例函数的总和,要确定的参数有47个,这就需要47个方程联立。使用梯度下降法时,只需要利用公式(21)进行反复的迭代,每次对变量做微小的变化,从而找到最小值。但是这种方法也存在着问题就是在实际的计算过程中十分的困难,例如在求解 ∂ C k ∂ w 11 2 \frac{\partial C_k}{\partial w^2_{11}} ∂w112∂Ck时需要进行两项5层的链式法则,之后要将64项累加。
- 梯度分量是一个一个学习实例的简单的和:先求出偏导数,再带入实例计算。
4-2 神经元误差
-
神经单元误差定义为
δ j l = ∂ C ∂ z j l (24) \delta^l_j=\frac{\partial C}{\partial z^l_j} \tag{24} δjl=∂zjl∂C(24)
定义神经单元误差的意义是为了后续计算中减少导数计算的次数。 -
用神经单元误差表示权重和偏置的偏导数
∂ 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} ∂wjij∂C=δjlail−1,∂bjl∂C=δjl(l=2,3,⋅⋅⋅)(25)
神经元误差表示的是神经单元的加权输入给平方误差带来的变化率,如果神经网络符合数据,根据最小值条件,变化率应该为0,可以认为神经元误差表示的是神经网络与符合数据理想状态的偏差。
4-3 神经网络和误差反向传播法
- 反向递推关系式:
δ 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 小恶魔来讲解卷积神经网络的结构
-
卷积神经网络的隐藏层包括卷积层和池化层。
-
卷积神经网络和普通神经网络的不同之处在于“恶魔”会积极地扫描图像,从中找出偏好的模式,书中称之为“小恶魔”。
-
卷积神经网络的“小恶魔”与普通神经网络的“恶魔”均只有一个偏好模式。
此图为小恶魔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 卷积神经网络的变量关系式
-
各层的含义以及变量名、参数名
通过学习卷积神经网络的变量名和参数名可以加深对其的理解。
位置 符号 含义 输入层 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} wk−ijOn 从池化层第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 卷积神经网络和误差反向传播法
-
卷积层:
{ 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)此时的权重就是过滤器小方格中的值,过滤器在原图像数据上移动,重叠的部分进行乘积,然后累加。
-
池化层:
这里以最大池化为例:
{ 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(a2i−1,2j−1Pk,a2i−1,2jPk,a2i,2j−1Pk,a2i,2jPk)aijPk=ZijPk(28)
池化层是对卷积层进行的压缩,且输入等于输出。 -
输出层:
{ 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=w1−11Ona11P1+w1−12Ona12P1+w1−21Ona21P1+w1−22Ona22P1+w2−11Ona11P2+w2−12Ona12P2+w2−21Ona21P2+w2−22Ona22P2+w3−11Ona11P3+w3−12Ona12P3+w3−21Ona21P3+w3−22Ona22P3+bnoanO=a(zno)(n=1,2,3)(29) -
梯度下降法
书中之前的章节介绍了梯度下降法的基本原理,难点在于求解代价函数与参数的偏导数,在书中构建的(本节一开始的图)卷积神经网络中共有69个需要确定的参数,因此就有69个偏导数分量,其中关于_卷积层神经单元的偏重的偏导数分量有27个,偏置3个,关于输出层神经单元的权重的偏导数分量36个,偏置3个。
-
神经单元误差
在卷积神经网络中,神经单元误差共有两种,分别是卷积层和输出层:
δ 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=∂zijFk∂C,δnO=∂znO∂C(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={δ1Owk−i′j′O1+δ2Owk−i′j′O2+δ3Owk−i′j′O3}×(当aijFk在区块中最大时为1,否则为0)×a′(zijFk)(31)
总结
《深度学习的数学》一书从生物中的神经元入手,通过对其抽象引入了数学意义上的神经单元,基于此展开了对神经网络数学概念的阐述。首先书中讲解了最为基础的向量、矩阵、导数和数列4个基本概念,之后介绍了梯度下降法和误差反向传播法。读者在学习梯度下降法时会发现其运用了“两向量方向相反时,内积最小”的思想、在学习误差反向传播法时会发现“数列递推关系式”的方法运用在其中。最后,识别手写数字的例子贯穿全书,运用该例演示了基本神经网络和卷积神经网络的各自的工作方法,直观易于接受。
书中使用的Excel示例文件可以从以下链接下载。
《深度学习的数学》Excel示例文件