当前位置:文档之家› 深度学习-FNN前馈神经网络概览及反向传播算法推导

深度学习-FNN前馈神经网络概览及反向传播算法推导


FNN—Output Units—Sigmoid Units
● 所以我们选择一个更加平滑的对于基于梯度的训练更有
意义的输出单元形式,sigmoid函数,如右图,其实可以 把其看成两部分,还是先进行线性运算求出wh,然后再 对wh应用sigmoid函数,即得到(0,1)之间的p。Sigmoid函 数形式如下:
FNN—Output Units—Sigmoid Units
● 以上两个输出单元,linear unit和sigmoid unit分别用于输出是自然数或者0,1,分别 用于回归和二分类,当然还有多分类,输出单元数据服从多项式分布,多项式分布 其实是二项分布的推广,采用的输出单元是softmax unit。
监督
非监督
Deep Learning
Cognitive Science Boltzmann Machine-1983 Backpropagation-1986 Deep Learning-2006 University of California San Diego Cambridge Carnegie Mellon University University College London University of Toronto Google-2013(DNNresearch) Geoffrey Hinton-1947.12.6(age 68)
前馈神经网络(Feedforward neural networks) 模型(Model) 损失函数(Strategy-cost function) 输出单元(Strategy-output units) 隐藏单元(Strategy-hidden units) 神经网络结构(Architecture) 反向传播算法(Back propagation algorithm) 随即梯度下降(Stochastic gradient descent)
● 所以就有如下式子:
FNN—Output Units—Linear Units
我们有最大似然的概率模型推导出 这个结果,其实也解释了为什么在 训练很多线性模型得时候直接就采 用均方差作为损失函数,其实是和 模型假设以及输出结果的分布有关 的。
FNN—Output Units—Sigmoid Units
我现在理解大脑是怎样工作的了
Perceptron
● 感知机(Perceptron)由两层神经元组成,第一层
为输入层,第二层为输出层。若三个神经元的值 表示布尔值的真和假,那么感知机能容易地表示 与、或、非三个基本的布尔函数。
θ
输出层
输入层
● 感知机能表示三个基本的逻辑运算,即与或非,事实上其能力很有限,只能处理线性
784=28*28
这里可以使用softmax函数
FNN—Gradient-Based Learning
● 由于神经网络的非线性的性质导致了它和线性模型的主要差异,就是FNN的损失函数是 非凸函数,所以损失函数只能采用基于梯度的迭代的方式来优化,而不能像逻辑回归和 支持向量机一样保证收敛到最值。
● 另外凸函数在给定任意初始参数的时候都能保证收敛,但是FNN的损失函数是非凸函数, 它对于初始化参数是敏感的,整个网络不同的初始化权值可能得到不同的优化结果,其实 就是落入了不同的局部最小值。一般来说训练FNN初始化权值为较小的随机数。当然也有 专门的算法,这里不展开,其主要目的是为了避免梯度消失现象。 ● 所以现在重点就是明白神经网络的训练策略,也是基于损失函数的梯度下降,从这个角度 看来它和SVM和LR也没什么太大的不同,就是梯度的形式要复杂一些。
FNN—Goal
● 训练学习一个FNN的目的是近似 一个函数 f* ,例如训练一个分类器:
y = f*( x )
这个分类器将输入x映射到类别y, 而FNN也是定义一个映射:
y = f ( x; θ )
所以我们训练的目的就是学习参数θ, 使得 f 能最大程度的逼近 f * ,这里的 参数其实就是权值。在训练FNN时, 训练数据(training data)会提供给我们 来自 f * 的有噪声的近似样本。每个 样本 x 都有一个类别标签 y ,每一 个训练样本(x, y)直接指定了给定输 入下输出层的输出 。但是其他层的 神经元表现却不是由训练样本直接决定 的,这就要求FNN的训练算法必须确定 怎么使用隐藏层来逼近函数 f * 使得整 个网络产生正确的输出。
Feedforward Neural Networks
江南大学-数媒学院-许鹏
Outline
深度学习概况(Deep learning) 神经元模型(Neuron model) 感知机(Perceptron) 感知机训练(Perceptron training) 多层感知机(Multi-Layer Perceptrons)
Θ=-1
例:训练一个能完成与逻辑运算的感知机的权值,设η为0.5。 随机初始化三个权值分别为 -0.5,0.6,0.6,则训练样例为((-1,1,-1),-1),((-1,-1,+1),-1) ((-1,+1,+1),+1), ((-1,-1,-1),-1)
Multi-Layer Perceptions(MLPs)
一下式子:
wh
● 为了满足概率p的限制条件,我们仍然使用线性单元,
但是限制它输出的范围,即最后wh大于1的部分都看 成是1,小于0的部分看为是0,其余部分不变,以这 个结果作为p的值。如下式和右图:
● 虽然这个形式满足了条件,但是可由图中看出,这种形式的输出单元是无法有效的训练神
经网络的,因为如果wh的值不在(0,1)范围内,那么梯度就为0, 这对于参数训练没有意义。
FNN—Output Units—Linear Units
● 一种简单的输出单元形式是线性单元,即这种unit没有非线性变换,假设输出层的前一层的 权值为w,神经元输出为h,则输出就是一个
……
……
……
中间层
输入层/第一层
FNN—Output Units—Linear Units
● 右图加了一层隐层,则实现了异或的效果,实际上
加这一层的效果是使得整个神经网络模型所表示的 函数由线性变成了非线性。
0.5 输出层 1 1
● 假如没有激活函数的存在,即使是多层神经网络,
每一层传递到下一层后直接用结果作为再下一层的 输入,那么整个模型还是线性的。但是激活函数的 引用使得神经网络模型的表征能力很强,任意函数 可以被一个四层的神经网络以任意精度逼近。
Deep Learning
浅层结构:
支持向量机(SVM) 逻辑回归(LR) 高斯混合模型(GMM) ……
模型有一层到两层非线性 变换,属于传统机器学习 一般会结合特征选择或者 降维方法等方法进行数据 预处理。
深度结构: 前馈神经网络(FNN) 卷积神经网络(CNN) 循环神经网络(RNN) 深度置信网络(DBN) 深度玻尔兹曼机(DBM) 对抗神经网络(Adversarial Nets) …… 模型有多层非线性变换, 属于深度学习,一般会在 网络的前几层进行类似特 征学习的工作,最后几层 和传统机器学习一样,可 以进行二分类,多分类和 回归问题。
0.5 1
0.5
1
隐层
● 注意这里激活函数的选取不是唯一的,到目前为止
我们一直选择了阶跃函数,它直观易于理解,但是 在学习多层网络模型的时候往往选择其他可微的激 活函数。另外多层感知机可以有任意多层,每一层 有任意多个神经元,其实一个大型的网络就是一个 复杂的函数,完成了一个映射工作,由输入向量映 射到输出向量。
cost function
Gradient-Based Learning algorithm
output units
hidden units
Architecture
FNN—Cost Function
第一个式子其实是一个联合概率分 又因为这些样本是独立同分布的, 所以才可以写成第二个式子相乘的 形式。为了求解方便,对函数取对 数,取对数以后不会影响最大值的 求解。
FNN—Cost Function
● 最大似然估计能够很自然地推广到条件概率p(y | x; θ)的最大似然估计,这种条件概率的情况 太常见了,因为这是监督学习的基础,X代表输入,Y代表观察结果。所以这时候的条件概率 的最大似然估计就是:
i.i.d.的m个样本
● 注意:讨论到现在我们其实还对cost function的具体形式一无所知,只是明白了要采用最大似然 估计的思想,导出了无论是负对数似然还是交叉熵的最小化都是对损常函数的最小化,并且在 最小化损失函数的时候要采用基于梯度下降的方法。 我们在一开始接触感知机的时候假设了神经元的激活函数是一个阶跃函数,可是在真正设计一 神经网络的时候,又可以分为隐藏神经元(hidden units)的输出形式和输出神经元(outputs units)的 输出形式,还有输出神经元服从的概率分布,这些都直接决定着cost function的具体形式。
问题,即感知机只能表示线性可分训练样本集对应的逻辑运算,同或和异或逻辑运算的 训练样本集是非可分的,所以它们不能由简单的两层感知机表示。
同或运算
+
异或运算
+ -
+
+
-
Perceptron Training Rule
输出层
● 对于训练样例 (x, y),若当前感知机输出为
感知机权重将这样调整:

输入层
输出层/第四层
第二隐层/第三层
RNN
第一隐层/第二层
输入层/第一层
FNN是一个有向无环图(directed acyclic graph)
● 之所以叫前馈神经网络是因为信息由输入层x通过函数向前流动到输出层y, y没有反馈连接使得模型的输出重新反馈为输入的一部分。如果模型扩展添 加了反馈连接,那么这种网络就叫递归神经网络(Recurrent neural networks)
相关主题