【深度学习入门基础】从线性代数和微积分的角度看神经网络
这是深度学习入门系列文章,我们企图用最简洁的语言、最干净的表达,让读者快速获取到他所想要的。本系列文章持续更新。一些网上能查到的基础知识,诸如激活函数有哪些等,不再介绍。
导言
大多数介绍深度学习的资料,一开始就从生物神经元、轴突、树突、刺激等等讲起,本来很简单的东西,却被介绍得云里雾里。本文将从矩阵乘法和导数的角度入手,让你一下子 get 到什么是神经网络。
矩阵乘法看神经网络
问题是这样一个问题:假设有一个列向量 x \mathbf{x} x,希望它通过一个“黑箱子”的操作之后,出来的向量和另外的一个等长度的已知向量 y \mathbf{y} y 尽可能地“接近”,如何衡量“接近”?且听稍后介绍。
这里的“黑箱子”就是一个网络,它可以简单地理解为矩阵乘向量的嵌套,即:
F
(
x
)
:
=
σ
(
A
n
[
⋯
(
A
3
[
σ
(
A
2
[
σ
(
A
1
x
+
b
1
)
]
+
b
2
)
]
+
b
3
)
]
+
b
n
)
F(\mathbf{x}):=\sigma(A_n[\cdots (A_3[\sigma(A_2[\sigma(A_1\mathbf{x}+\mathbf{b_1})]+\mathbf{b_2})]+\mathbf{b_3})]+\mathbf{b_n})
F(x):=σ(An[⋯(A3[σ(A2[σ(A1x+b1)]+b2)]+b3)]+bn)
这里的
A
1
、
A
2
…
A
n
A_1、A_2…A_n
A1、A2…An 是参数矩阵,里面的元素都是一些未知的参数,这里的
b
1
、
b
2
…
b
n
\mathbf b_1、\mathbf b_2… \mathbf b_n
b1、b2…bn 是参数列向量。
A
i
,
b
i
,
i
=
1
,
⋯
,
n
A_i, \mathbf{b}_i, i=1,\cdots,n
Ai,bi,i=1,⋯,n 的规模总是让上式是合理的。
σ
\sigma
σ 是一个函数,人们喜欢称之为激活函数,它作用于一个向量表示分别作用于向量的每个分量。
A
i
,
b
i
A_i, \mathbf{b}_i
Ai,bi 中元素都是未知量,我们统称为参数。
举个简单的例子。令
A
=
[
w
1
,
w
2
]
A = [w_1,w_2]
A=[w1,w2]。取激活函数为 sigmoid 函数:
σ
(
z
)
=
1
1
+
e
−
z
\sigma(z)=\frac{1}{1+e^{-z}}
σ(z)=1+e−z1
那么,
F
(
x
)
=
σ
(
A
x
+
b
)
F(\mathbf{x}) = \sigma(A\mathbf{x}+b)
F(x)=σ(Ax+b),这就是逻辑回归的输出形式。逻辑回归就是一种最简单的神经网络。
微积分视角看训练
由上可知,
F
(
x
)
F(\mathbf{x})
F(x) 本质上就是一个含参的表达式,神经网络训练要做的事情就是调整参数,使得对于已知的
x
\mathbf{x}
x 和
y
\mathbf{y}
y,
F
(
x
)
F(\mathbf{x})
F(x) 和
y
\mathbf{y}
y 尽可能地近。度量向量之间的远近有很多种度量,比如欧式距离:
L
(
A
1
,
A
2
,
⋯
,
A
n
,
b
1
,
⋯
,
b
n
)
:
=
∣
∣
F
(
x
)
−
y
∣
∣
\mathcal{L} (A_1,A_2,\cdots,A_n,\mathbf{b}_1,\cdots,\mathbf{b}_n):= || F(\mathbf{x}) - \mathbf{y} ||
L(A1,A2,⋯,An,b1,⋯,bn):=∣∣F(x)−y∣∣
∣
∣
⋅
∣
∣
|| \cdot ||
∣∣⋅∣∣ 表示向量 2 范数。我们也称 $\mathcal{L} $ 为损失函数。显然,这里的
L
\mathcal{L}
L 只是一个关于参数的函数,优化上称之为目标函数,我们想做的就是关于这个函数的参数极小化目标函数。
给定一个目标函数,我们要关于参数极小化它,这是一个无约束优化问题,在数值上有很多求解方法,神经网络采用梯度下降。梯度下降的步长,被人们称为“学习率”。
要用梯度下降,就要求损失函数的梯度,梯度是由目标函数对各个参数求导组成的一个向量,所以, L \mathcal{L} L 需要对各个参数求导。 F ( x ) F(\mathbf{x}) F(x) 的表达式可以看出,不同层的参数之间存在嵌套关系,微积分告诉我们,复合类型的函数求导,需要用到链式法则,链式法则在神经网络上的应用,人们喜欢称之为“反向传播”。
上面提到的仅仅是一组输入输出的情况,当有多组输入输出
{
x
i
,
y
i
,
i
=
1
,
2
,
⋯
,
N
}
\{\mathbf x_i,\mathbf y_i, i = 1,2,\cdots,N\}
{xi,yi,i=1,2,⋯,N} 的时候,我们如此定义损失函数:
L
(
A
1
,
A
2
,
⋯
,
A
n
,
b
1
,
⋯
,
b
n
)
:
=
1
2
∑
i
=
1
N
∣
∣
F
(
x
i
)
−
y
i
∣
∣
2
\mathcal{L} (A_1,A_2,\cdots,A_n,\mathbf{b}_1,\cdots,\mathbf{b}_n):= \frac{1}{2}\sum_{i=1}^N || F(\mathbf{x}_i) - \mathbf{y}_i ||^2
L(A1,A2,⋯,An,b1,⋯,bn):=21i=1∑N∣∣F(xi)−yi∣∣2
训练的优化过程和上述是一致的。