目录
1. 神经网络概述
1.1 概念和起源
概念:神经网络是一种由许多非线性计算单元(或称神经元、节点)组成的分层系统。
网络深度:就是不包括输入层的层数。
多层感知器(multilayer perceptron):在隐含层数大于1时常常称为深层感知器,实际上是一种由多层节点有向图构成的前馈神经网络。其中,每一个非输入节点时具有非线性激活函数的神经元,每一层与其下一层是全连接的。
1.2 神经网络基本结构
1.2.1 神经元数学模型
MP神经元数学模型,包含n个输入,n个权值
,一个偏置b,以及一个输出y。 ==>即我们高中学到的多元一次方程:
一般来说,weight 矩阵是一行一行的,堆叠stack;而tensor x一般是一列一列的,并列。
f表示激活函数
1.2.2 sigmoid激活函数
f是一个非线性变换,称为激活函数,通常选为sigmoid函数,公式为:
1.2.3 神经网络结构
在训练神经网络方面,BP(Back Propagation)反向传播无疑是最常用最著名的算法。这是一种有监督的学习算法。
浅层网络:主要是指具有一个隐含层的神经网络。
深层网络:主要是指具有2个及以上隐含层的神经网络。
1.3 我对神经网络的构建和流程理解
1.3.1 单个神经元
单个神经元即高中多元一次方程。
激活函数:sigmoid(y).
1.3.2 单个隐含层
1.3.3 多个隐含层
1.3.4 调参
iteration(迭代):每一次迭代都是一次权重更新,每一次权重更新需要batch_size个数据进行Forward运算得到损失函数,再BP算法更新参数。1个iteration等于使用batchsize个样本训练一次
bath_size:
epochs/ˈiː.pɒk/:被定义为向前和向后传播中所有批次的单次训练迭代。这意味着1个周期是整个输入数据的单次向前和向后传递。简单说,epochs指的就是训练过程中数据将被“轮”多少次,就这样
one epoch = numbers of iterations = N = 训练样本的数量/batch_size
1.4 BP算法
在训练神经网络方面,BP(Back Propagationi)反向传播无疑是最常用、最著名的算法。
这是有监督学习算法,应提供一组训练样本,对给定的输入,指明相应的输出。
2. 梯度消失或爆炸
problem:1991年,Hochreiter正式指出,典型的深层网络存在梯度消失或爆炸问题,从而明确了深度学习的一个里程碑。
该问题是,累积反向传播误差信号在神经网络的层数增加时会出现指数衰减或增长的现象,从而导致数值计算快速收缩或越界。这就是深层网络很难用反向传播算法训练的主要原因。
梯度消失或爆炸问题又称为长时滞后问题,在循环神经网络CNN中也会出现。
1990-2000年,Hochreiter的深邃思想推动了若干新方法的探索。
但除了卷积神经网络之外,训练深层网络的问题直到2006年才开始得到严肃认真的对待。因为1995年之后,支持向量机SVM的快速发展减缓了神经网络的有关工作进展。
所以,普遍认为,深度学习正式发端于2006年,以Hinton及其合作者发表的两篇重要论文为标志。"A fast learning algorithm for deep belief nets"; "Reducing the dimensionality of data with neural networks"。
从那以后,大量的深度学习模型如雨后春笋般迅速发展起来,其中主要包括受限玻尔兹曼机(Restricted Boltzman Machine, RBM)、深层自编码器(deep AutoEncoder, deep AE)、深层信念网络(deep beliefnet)、深层玻尔兹曼机(Deep Boltzman Machine, DBM)、和积网络(Sum-Product Network, SPN)、深层堆叠网络(Deep Stacked Network, DSN)、卷积神经网络(Convolutional Neural Network, CNN)、循环神经网络(Recurrent Neural Network, RNN)、长短时记忆网络(Long Short-Term Memory network, LSTM network)、强化学习网络(Reinforcement Learning Network, RLN)、生成对抗网络(Generative Adversarial Network, GAN)等。
训练技巧:最大池化(max pooling)、丢弃输出(dropout)、丢弃连接(dropconnect)
取得了许多历史性突破和成就的领域:手写数字识别、ImageNet分类和语音识别。
3. 人们对神经网络的预期与现实
一个具有浅层结构或层数不够深的神经网络虽然在节点数足够大时也可能充分逼近地表达任意的多元非线性函数,但这种浅层表达在具体实现时往往由于需要太多的结点而无法实际应用。
期望:一般说来,对于给定数目的训练样本,如果缺乏其他先验知识,人们更期望使用少量的计算单元来建立目标函数的“紧表达”,以获得更好的泛化能力。
现实:在网络深度不够时,这种紧表达可能根本无法建立起来。因为理论研究表明,深度为k的网络能够紧表达的函数在用深度为k-1的网络来表达时有时需要的计算单元会呈指数增长。
但在网络深度不够时,这种紧表达可能根本无法建立起来,因为理论研究表明,深度为k的网络能够紧表达的函数在用深度为k-1的网络来表达时有时需要的计算单元会呈指数增长。
解决:深层神经网络(又称深度神经网络)在一定的条件下具有非常重要的应用前景。
参考
[1] 深度学习:卷积神经网络从入门到精通。李玉鑑,张婷