介绍神经网络与深度学习的科普书,讲的并不深,可以作为对深度学习的入门书籍。
1. 神经网络
- 大脑的学习过程包括三个基本步骤或系统:(1)信息输入和权值;(2)模式加工;(3)动作输出。
- 人工神经网络的输入包括接收信号的“树突”、信号处理和传递函数。
- 常用的传递函数,如下:
- Neuroph:一个基于Java的神经网络框架;
- 线性不可分的问题,可以通过构造多层神经网络的方法予以解决;
2. 深度学习
- 深度神经网络通常是前馈型神经网络,深度神经网络是一种结构,而不是一种算法;
- 深度学习是神经网络的一个大分支,深度学习的基本结构是深度神经网络;
- 深度结构(设计多个非线性处理单元层)非凸目标函数中普遍存在的局部最小是训练困难的主要来源;
-
BP算法的全称是Back Propagation,也称为Error Back Propagation,意思是误差反向传播,也算说明了BP算法的特点。
-
BP算法的基本想法是:由信号正向传播和误差反向传播。
-
(1)信号正常传播:正向传播时,输入样本从输入层传入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望的输出不符,则转入误差的反向传播阶段。
-
(2)误差反向传播:将输出以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。
-
深度结构(涉及多个非线性处理单元层)非凸目标函数中普遍存在的局部最小是训练困难的主要来源。
-
BP算法存在如下问题。
-
(1)梯度越来越稀疏:从顶层往下,误差校正信号越来越小。
-
(2)收敛到局部最小值:尤其是从远离最优区域开始的时候(随机值初始化会导致这种情况的发生)。
-
(3)一般,我们只能用由标签的数据来训练:大部分数据是没标签的,而大脑可以从没有标签的数据中学习。
-
通过梯度下降方法在训练过程中修正权重使得网络误差最小。在层次深的情况下,性能变得很不理想[传播时容易出现所谓的梯度扩散(Gradient Diffusion)]或称之为梯度消失,根源在于非凸目标函数导致求解陷入局部最优,且这种情况随着网络层数的增加更加严重,即随着梯度的层次消散,导致其对网络权重调整的作用越来越小,所以只能转而处理浅层结构,这就限制了性能。
-
深度学习首先利用无监督学习对每一层进行逐层预训练(Layerwise Pre-Training)去学习特征;每次单独训练一层,并将训练结果作为更高一层的输入;然后到最上层改用监督学习从上到下进行微调(Fine-Tune)去学习模型。
-
深度学习训练的具体过程如下:
-
(1)使用自下而上的非监督学习(就是从底层开始,一层一层地往顶层训练)
-
采用无标定数据(有标定数据也可)分层训练各层参数,该步骤可看作无监督训练过程,是和传统神经网络区别最大的地方,该过程可以看作是特征学习的过程。
-
具体来讲,先用无标定数据训练隐层的最底层,训练时先学习最底层的参数(这一层可以看作是得到一个使得输出和输入差别最小的三层神经网络的隐层),由于模型能力的限制及稀疏性约束,使得得到的模型能够学习到数据本身的结构,从而得到比输入更具有表示能力的特征;在学习得到第n-1层后,将n-1层的输出作为第n层的输入,训练第n层,由此分别得到各层的参数。
-
(2)自顶向下的监督学习,就是通过带标签的数据去训练,误差自顶向下传输,对网络进行微调
-
基于第一步得到的各层参数进一步fine-tune整个多层模型的参数,这一步是一个有监督训练过程;第一步类似神经网络的随机初始化初值过程,由于深度学习的第一步不是随机初始化,而是通过学习输入数据的结构得到的,因此这个初值更接近全局最优,能够取得更好的效果;所以,深度学习效果好很大程度上归功于第一步(特征学习过程)。
目前,对于深度学习的常用方法,在后续的分析和学习中,将对该部分进行补充。