深度学习 --- 神经网络基础

1、深度前馈网络

深度前馈网络,也叫前馈神经网络,或者多层感知机(MLP)

前馈网络的目标是近似某个函数f*。

前馈网络定义了一个映射y=f(x;θ),并且学习参数θ的值,使它能够得到最佳的函数近似。

前馈神经网络通常用不同函数复合在一起来表示。该模型与一个有向无环图相关联,而图描述了函数是如何复合在一起的。

整流线性激活函数 

2、基于梯度的学习

神经网络的非线性导致大多数我们感兴趣的代价函数都变得非凸,这意味着神经网络的训练通常使用迭代的、基于梯度的优化,仅仅使得代价函数达到一个非常小的值,无法保证全局收敛。凸优化从任何一种初始参数出发都会收敛(理论上如此——在实践中也很鲁棒但可能会遇到数值问题)。用于非凸损失函数的随机梯度下降没有这种收敛性保证,并且对参数的初始值很敏感,对于前馈神经网络,将所有的权重值初始化为小随机数很重要,偏置可以初始化为零或者小的正值,

2.1 代价函数

大多数情况下,参数模型定义了一个分布p(y|x;θ)并且简单地使用最大似然原理。这意味着我们使用训练数据和模型预测间的交叉熵作为代价函数。

有时,不是预测y的完整概率分布,而是仅仅预测在给定x的条件下y的某种统计量。

使用最大似然学习条件分布

代价函数是负对数似然,等价于训练数据和模型分布间的交叉熵

如果 ,那么就得到均方误差代价:

即输出分布的最大似然估计和对线性模型均方误差的最小化之间的等价性。这种等价性并不要求f(x;θ)用于预测高斯分布的均值。

神经网络的代价函数的梯度必须足够的的大和具有足够的预测性。饱和(变得非常平)的函数破坏了这一目标,因为他们把梯度变得非常小。

负对数似然代价函数 中的对数消除了某些输出单元中的指数效果。

用于实现最大似然估计的交叉熵代价函数一个特性是,当它被应用于实践中经常遇到的模型时,它通常没有最小值。

学习条件统计量

学习给定x时y的某个条件统计量

可以把代价函数看作一个泛函,而不仅仅是一个函数。泛函是函数到实数的映射。因此,可以将学习看作选择一个函数,而不仅仅是选择一组参数。可以设计代价函数在我们想要的某些特殊函数处取得最小值。

使用变分法求解

得到

最小化均方误差代价函数将得到一个函数,它可以用来对每个x的值预测出y的均值

2.2 输出单元

代价函数的选择与输出单元的选择紧密相关。大多时候,简单地使用数据分布和模型分布间的交叉熵。选择如何表示输出决定了交叉熵函数的形式

用于高斯输出分布的线性单元

基于仿射变换的输出单元,仿射变换不具有非线性。这些单元被直接称为线性单元。

线性输出单元层产生一个向量 

线性输出层经常被用来产生条件高斯分布的均值:

其最大似然函数此时等价于最小化均方误差

用于Bernoulli输出分布的sigmoid单元

输出二值变量

此时最大似然的方法定义y在x条件下的Bernoulli分布。

基于使用sigmoid输出单元结合最大似然来实现。

使用最大似然学习,因为代价函数的log抵消了sigmoid中的exp

用于Multinoulli输出分布的softmax单元

当想要表示一个具有n个可能取值的离散型随机变量的分布时,都可以使用softmax函数

softmax函数最常用作分类器的输出,来表示n个不同类上的概率分布。

向量 ,它的每个元素是

线性层预测了未归一化的对数概率:,其中

softmax函数对z指数化和归一化来获得需要的 

最大似然训练,最大化 log P(y=i;z)=log softmax(z)i:

第一项表示输入 总是对代价函数有直接贡献。因为这一项不会饱和,所以即使 对第二项贡献很小,学习依然可以进行

第二项可以大致近似为。负对数似然函数总是强烈的惩罚最活跃的不正确预测

对数似然之外的许多目标函数对softmax函数不起作用。

softmax函数,当输入值之间的差异变得极端时,这些输出值可能饱和。

数值方法稳定的softmax函数变体

softmax函数的变量z两种方式产生:

过度参数化: ,n个输出总和必须为1的约束意味着只有n-1个参数是必要的

因此可以强制要求z的一个元素是固定的

两种方法很少有差别,过度参数版本简单

其他输出类型

一般,可以认为神经网络表示函数f(x;θ)。这个函数的输出不是对y值得直接预测。f(x;θ)=w提供了y分布的参数。于是损失函数就可以表示成

-log p(y;w(x))

将高斯混合作为其输出的神经网络通常称为混合密度网络。

神经网络必须有三个输出:定义p(c=i|x)的向量,对所有给出的i给出 的矩阵,以及对所有的i给出的 的张量。

3、隐藏单元

整流线性隐藏单元g(z)=max{0,z}是极好的默认选择

在z=0处不可微。

大多数隐藏单元都可以描述为输入向量x,计算仿射变换,然后使用一个逐元素的非线性函数g(z)

大多数隐藏单元的区别仅仅在于激活函数g(z)的形式

3.1 整流线性单元及其扩展

激活函数:g(z)=max{0,z}

作用于仿射变换之上:

初始化仿射变换的参数时,可以将b的所有元素设置成一个小的正值,如0.1,这使得整流线性单元很可能初始时就对训练集中的大多数输入呈现激活状态,并且允许导数通过。

maxout单元可以学习具有多达k段的分段线性的凸函数,maxout函数因此可以视为学习激活函数本身,而不仅仅是单元之间的联系。使用足够大的k,maxout单元可以以任意的精确度来近似任何凸函数。

每个maxout 单元现在由k 个权重向量来参数化,而不仅仅是一个,所以maxout单元通常比整流线性单元需要更多的正则化。如果在训练集很大并且每个单元的块数保持很低的话,它们可以在没有正则化的情况下工作得不错。

整流线性单元和它们的这些扩展都是基于一个原则,那就是如果它们的行为更接近线性,那么模型更容易优化。

3.2 logistic sigmoid 与双曲正切函数

当使用一个合适的代价函数来抵消sigmoid的饱和性时,它们作为输出单元可以与基于梯度的学习相兼容。

当必须使用sigmoid激活函数时,双曲正切激活函数通常要比 logistic sigmoid 函数表现更好。

训练深层神经网络类似于训练一个线性模型

3.3 其他隐藏单元

4、架构

架构指网络的整体结构:它应该具有多少单元,以及这些单元应该如何连接。

大多数神经网络架构将这些层布置成链式结构,其中每一层都是前一层的函数。

万能近似定理表明,一个前馈神经网络如果具有线性输出层和至少一层具有任何一种“挤压”性质的激活函数的隐藏层,只要给予网络足够数量的隐藏单元,它可以以任意的精度来近似任何从一个有限维空间到另一个有限维空间的Borel可测函数。

前馈网络的导数也可以任意好的来近似函数的导数。

万能近似定理意味着无论我们试图学习什么函数,一个大的MLP一定能够表示这个函数。但不保证能学到,原因为:优化算法找不到用于期望函数的参数值;由于过拟合选择了错误的函数。

一些用深度整流网络表示的函数可能需要浅层网络(一个隐藏层)指数级的隐藏单元才能表示。更确切的说,他们说明分段线性网络(可以通过整流非线性或maxout 单元获得)可以表示区域的数量是网络深度的指数级的函数。

5、反向传播和其他微分算法

反向传播仅指用于计算梯度的方法,而另一种算法,例如随机梯度下降,使用该梯度来进行学习。

发布了27 篇原创文章 · 获赞 2 · 访问量 209

猜你喜欢

转载自blog.csdn.net/weixin_43575791/article/details/105464857