第五章 深度学习
一、基本理论
2. 深度神经网络结构
2.1 感知机
2.1.1 生物神经元
感知机(Perceptron),又称人工神经元(Artificial neuron),它是生物神经元在计算机中的模拟。下图是一个生物神经元示意图:
2.1.2 生物神经网络
更多的生物神经元相互连接,形成复杂的神经网络。人类神经元数量在 1011 数量级。
2.1.3 什么是感知机
感知机(Perceptron),又称神经元(Neuron,对生物神经元进行了模仿)是神经网络(深度学习)的起源算法,1958 年由康奈尔大学心理学教授弗兰克·罗森布拉特(Frank Rosenblatt)提出,它可以接收多个输入信号,产生一个输出信号。
2.1.4 感知机的功能
作为分类器/回归器,解决线性分类(逻辑和、逻辑或)、回归问题
- 神经元作为回归器 / 分类器
- 逻辑和(线性分类)
- 逻辑或(线性分类)
组成神经网络
2.1.5 如何实现感知机
实现逻辑和
实现逻辑或
2.1.6 感知机的局限
感知机的局限在于无法处理“异或”问题(非线性问题)
2.1.7 多层感知机
1975 年,感知机的“异或”难题才被理论界彻底解决,即通过多个感知机组合来解决该问题,这种模型也叫多层感知机(Multi-Layer Perceptron,MLP)。如下图所示,神经元节点阈值均设置为 0.5
多层感知机解决异或门实现
2.2 神经网络
2.2.1 什么是神经网络
感知机由于结构简单,完成的功能十分有限。可以将若干个感知机连在一起,形成一个级联网络结构,这个结构称为“多层前馈神经网络”(Multi-layer Feedforward Neural Networks)。所谓“前馈”是指将前一层的输出作为后一层的输入的逻辑结构。每一层神经元仅与下一层的神经元全连接。但在同一层之内,神经元彼此不连接,而且跨层之间的神经元,彼此也不相连。
2.2.2 神经网络的功能
1989 年,奥地利学者库尔特·霍尼克(Kurt Hornik)等人发表论文证明,对于任意复杂度的连续波莱尔可测函数(Borel Measurable Function)f,仅仅需要一个隐含层,只要这个隐含层包括足够多的神经元,前馈神经网络使用挤压函数(Squashing Function)作为激活函数,就可以以任意精度来近似模拟 f。如果想增加 f 的近似精度,单纯依靠增加神经元的数目即可实现。
这个定理也被称为通用近似定理(Universal Approximation Theorem),该定理表明,前馈神经网在理论上可近似解决任何问题。
2.2.3 通用近似定理几何解释
现有目标函数 f ( x ) = x 3 + x 2 − x − 1 f(x) = x^3 + x^2 - x - 1 f(x)=x3+x2−x−1,可以使用 6 个神经元进行模拟:
2.2.4 神经网络为什么要足够深
其实,神经网络的结构还有另外一个“进化”方向,那就是朝着“纵深”方向发展,也就是说,减少单层的神经元数量,而增加神经网络的层数,也就是“深”而“瘦”的网络模型。
微软研究院的科研人员就以上两类网络性能展开了实验,实验结果表明:增加网络的层数会显著提升神经网络系统的学习性能。
2.2.5 多层神经网络计算公式
神经网络涉及很多层权重,每一层又由多个权重组成,符号表示规则如下所示:
以下是一个多层神经网络及其计算公式:
2.3 激活函数
2.3.1 什么是激活函数
在神经网络中,将输入信号的总和转换为输出信号的函数被称为激活函数(activation function)。
2.3.2 为什么使用激活函数
激活函数将多层感知机输出转换为非线性,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。
如果一个多层网络,使用连续函数作为激活函数的多层网络,称之为“神经网络”,否则称为“多层感知机”。所以,激活函数是区别多层感知机和神经网络的依据。
2.3.3 常见激活函数
阶跃函数
- 阶跃函数(Step Function)是一种特殊的连续时间函数,是一个从 0 跳变到 1 的过程,函数形式与图像:
sigmoid 函数
-
sigmoid 函数也叫 Logistic 函数,用于隐层神经元输出,取值范围为(0,1),它可以将一个实数映射到(0,1)的区间,可以用来做二分类,表达式: σ ( x ) = 1 / ( 1 + e − x ) σ(x) = 1 / (1 + e^{-x}) σ(x)=1/(1+e−x)
-
优点:平滑、易于求导
-
缺点:激活函数计算量大,反向传播求误差梯度时,求导涉及除法;反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练
tanh 双曲正切函数
- 优点:平滑、易于求导;输出均值为 0,收敛速度要比 sigmoid 快,从而可以减少迭代次数
- 缺点:梯度消失
- 用途:常用于 NLP 中
ReLU(Rectified Linear Units,修正线性单元)
-
优点:
- 更加有效率的梯度下降以及反向传播,避免了梯度爆炸和梯度消失问题
- 计算过程简单
-
缺点:小于等于 0 的部分梯度为 0
-
用途:常用于图像
Softmax
- Softmax 函数定义如下,其中 V i V_i Vi 是分类器前级输出单元的输出。i 表示类别索引,总的类别个数为 C。 S i S_i Si 表示的是当前元素的指数与所有元素指数和的比值。通过Softmax 函数就可以将多分类的输出数值转化为相对概率,而这些值的累和为 1,常用于神经网络输出层。表达式:
2.3.4 案例:实现常见激活函数
2.4 小结
感知机
- 接收多个输入信号,产生一个输出信号,无法解决异或问题
多层感知机
- 将多个感知机组合
多层前馈网络
- 若干个感知机组合成若干层的网络,上一层输出作为下一层输入
激活函数
- 将计算结果转换为输出的值,包括阶跃函数、sigmoid、tanh、ReLU