深度学习的数学之神经网络的思想
这篇主要介绍一下神经单元的由来、结构,激活函数、偏置以及神经单元的输出表达式,此外,介绍一下神经网络和深度学习的相关概念。
1.神经元的数学表示
深度学习中的神经元是仿照动物大脑中的神经元的工作模式发展而来
动物大脑中的神经元有以下特性(这里从多方面描述)
1. 语言描述
a. 神经元形成网络
b. 对于从其他多个神经元传递过来的信号,如果他们的和不超过某个固定大小的值(阈值),则神经元不作出任何反应
c. 对于从其他多个神经元传递过来的信号,如果他们的和超过某个固定大小的值(阈值),则神经元做出反应(称为点火),向另外的神经元传递固定强度的信号
d. 在2和3中,从多个神经元传递过来的信号之和中,每个信号对应的权重不一样
2. 图形表示
假设有一个神经元接收3个神经元 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3的输入,每个神经元的权重为 w 1 , w 2 , w 3 w_1,w_2,w_3 w1,w2,w3,输出为 y y y。以所有神经元的加权输入为横轴,输出为纵轴,图形如下:
3. 数学表示
1)来自其他多个神经元的加权输入
2)判断是否超过阈值,是-点火-输出y=1;否,忽略,输出y=0
4. 表达式表示
需要用到单位阶跃函数 u ( z ) = { 1 , z ≥ 0 0 , z < 0 u(z) = \begin{cases} 1,&z \ge0 \\ 0,&z<0\\ \end{cases} u(z)={
1,0,z≥0z<0 为了与神经元的加权输入一致,这里令 z = w 1 x 1 + w 2 x 2 + w 3 x 3 − θ z=w_1x_1+w_2x_2+w_3x_3-\theta z=w1x1+w2x2+w3x3−θ, z z z也就被称为加权输入。因此输出表达式为 y = u ( z ) = u ( w 1 x 1 + w 2 x 2 + w 3 x 3 − θ ) y=u(z)=u(w_1x_1+w_2x_2+w_3x_3-\theta) y=u(z)=u(w1x1+w2x2+w3x3−θ)
上式中的 u ( z ) u(z) u(z)也被称为激活函数,此外,最常用的激活函数有sigmoid函数,其表达式如下: σ ( z ) = 1 1 + e − z \sigma(z)=\frac{1}{1+e^{-z}} σ(z)=1+e−z1
sigmoid函数具有单调递增、处处可导的漂亮性质,其值域(0,1),图像如下:
此外,加权输入中 θ \theta θ前面的符号是负号,导致整个表达式变得不漂亮了,此外还容易计算出错,数学不喜欢不漂亮的东西,因此我们引入 b = − θ b=-\theta b=−θ,称为偏置。因此加权输入表达式如下: z = w 1 x 1 + w 2 x 2 + w 3 x 3 + b z=w_1x_1+w_2x_2+w_3x_3+b z=w1x1+w2x2+w3x3+b
输出表达式为: y = u ( z ) = u ( w 1 x 1 + w 2 x 2 + w 3 x 3 + b ) y=u(z)=u(w_1x_1+w_2x_2+w_3x_3+b) y=u(z)=u(w1x1+w2x2+w3x3+b) 另外,还可以对加权输入 z z z改写成向量内积的形式,因为计算机擅长内积的计算,也即 z = w 1 x 1 + w 2 x 2 + w 3 x 3 + b × 1 = ( w 1 , w 2 , w 3 , b ) ⋅ ( x 1 , x 2 , x 3 , 1 ) z=w_1x_1+w_2x_2+w_3x_3+b×1=(w_1,w_2,w_3,b)·(x_1,x_2,x_3,1) z=w1x1+w2x2+w3x3+b×1=(w1,w2,w3,b)⋅(x1,x2,x3,1)
2.神经单元
有了加权输入、偏置、激活函数,我们的神经单元(为了与生物学中的神经元区别,称神经网络中的神经元为神经单元)可表示如下:
神经单元的工作过程为:
-
将神经单元的多个输入 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3整理为加权输入 z z z z = w 1 x 1 + w 2 x 2 + w 3 x 3 + b z=w_1x_1+w_2x_2+w_3x_3+b z=w1x1+w2x2+w3x3+b
-
神经单元通过激活函数 a ( z ) a(z) a(z)根据加权输入 z z z输出 y y y y = a ( z ) y=a(z) y=a(z)
-
即使神经单元有多个输出,其每个输出的值也相同
3.神经网络
顾名思义,神经网络是由神经单元构建的网络,一般分为阶层型神经网络以及由此发展而来的卷积神经网络。
阶层型神经网络分为输入层、隐藏层和输出层,其结构图如下:
各层的职责如下:
- 输入层:输入层的神经单元无输入,起到读取信息的作用,将数据原样输出,也即输出=输入
- 隐藏层:实际处理信息的部分,用于“特征提取”
- 输出层:同样进行信息的处于并输出结果
4.深度学习
深度学习就是叠加了很多层的神经网络,通过确定权重和神经单元的偏置进行模式识别。其中确定权重和偏置的算法也称为“网络自学习”算法。
网络自学习算法分为有监督学习和无监督学习,这里及后续将主要介绍有监督学习。有监督的学习就是事先给予数据,这些数据也称为学习数据或训练数据,使用学习数据确定权重和偏置的过程称为学习。
那么如何确定呢?最常用的方法就是计算正解与预测值差值的平方,也即误差,利用平方误差[ ( 正 解 − 预 测 值 ) 2 (正解-预测值)^2 (正解−预测值)2]来确定参数的方法称为“最小二乘法”,其中误差总和也称为“代价函数”(cost function),表达式为 C T = C 1 + C 2 + ⋅ ⋅ ⋅ + C n C_T=C_1+C_2+···+C_n CT=C1+C2+⋅⋅⋅+Cn 确定使得误差总和最小的参数的方法称为“最优化”问题。