Deep Learning读书笔记2---深度前馈网络

神经网络基础详解
本文介绍了神经网络的基本概念,包括隐藏层、模型宽度、激活函数等,并详细解释了常见的输出单元如线性单元、logisticsigmoid函数及softmax单元。此外还讨论了隐藏单元的不同类型及其特性,最后介绍了网络架构设计原则及反向传播算法。

1.基本概念

1.1隐藏层:
神经网络中输入与输出层之间的中间层,训练数据并没有给出这些层中的每一层所需的输出,所以叫隐藏层。

1.2模型的宽度:
网络中的每个隐藏层通常都是向量值的。这些隐藏层的维数决定了模型的宽度。 向量的每个元素都可以被视为起到类似一个神经元的作用。 除了将层想象成向量到向量的单个函数,我们也可以把层想象成由许多并行操作的单元组成,每个单元表示一个向量到标量的函数。 每个单元在某种意义上类似一个神经元,它接收的输入来源于许多其他的单元,并计算它自己的激活值。
1.3激活函数:
用于计算隐藏层值的函数,常见的有整流线性单元(分段函数max{0,f()})。

1.4常见的代价函数:
交叉熵(负的最大似然函数)


2.输出单元

2.1 线性单元
线性输出层经常被用来产生条件高斯分布的均值:
p(y∣x)=N(y;y^,I).

2.2 logistic sigmoid函数
sigmoid单元可用于Bernoulli输出分布,许多任务需要预测二值型变量y的值。 具有两个类的分类问题可以归结为这种形式。sigmoid输出单元定义为:




2.3 softmax单元
任何时候当我们想要表示一个具有n个可能取值的离散型随机变量的分布时,我们都可以使用softmax函数。
softmax函数的形式为:


3.隐藏单元

3.1整流线性单元
整流线性单元使用激活函数g(z)=max(0,z)
扩展:
a. 当zi<0时使用一个非零的斜率αihi=g(z,α)i=max(0,zi)+αimin(0,zi)
b. 绝对值整流固定αi=1来得到g(z)=|z|。 它用于图像中的对象识别{cite?},其中寻找在输入照明极性反转下不变的特征是有意义的。
c. 渗漏整流线性单元将αi固定成一个类似0.01的小值,参数化整流线性单元(PReLU)将αi作为学习的参数{cite?}。
d. maxout单元将z划分为每组具有k个值的组,而不是使用作用于每个元素的函数g(z)。 每个maxout单元则输出每组中的最大元素。

3.2 logistic sigmoid与双曲正切函数
在引入整流线性单元之前,大多数神经网络使用logistic sigmoid激活函数
g(z)=σ(z)
或者是双曲正切激活函数
g(z)=tanh(z)
这些激活函数紧密相关,因为tanh(z)=2σ(2z)1
与分段线性单元不同,sigmoid单元在其大部分定义域内都饱和——当z取绝对值很大的正值时,它们饱和到一个高值,当z取绝对值很大的负值时,它们饱和到一个低值,并且仅仅当z接近0时它们才对输入强烈敏感。 sigmoid单元的广泛饱和性会使得基于梯度的学习变得非常困难。 因为这个原因,现在不鼓励将它们用作前馈网络中的隐藏单元。 当使用一个合适的代价函数来抵消sigmoid的饱和性时,它们作为输出单元可以与基于梯度的学习相兼容。

当必须要使用sigmoid激活函数时,双曲正切激活函数通常要比logistic sigmoid函数表现更好。 在tanh(0)=0σ(0)=12的意义上,它更像是单位函数。 因为tanh在0附近与单位函数类似,训练深层神经网络y^=wtanh(Utanh(Vx))类似于训练一个线性模型y^=wUVx,只要网络的激活能够被保持地很小。 这使得训练tanh网络更加容易。

4.架构设计

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

在神经网络框架中,更深的神经网络远远比大模型尺寸的单层网络好得多,这说明神经网络中应该用许多简单的函数组成,而尽量不用复杂庞大的单模型。

5.反向传播

5.1链式法则


从这里我们看到,变量x的梯度可以通过~Jacobian矩阵yx和梯度yz相乘来得到。 反向传播算法由图中每一个这样的~Jacobian~梯度的乘积操作所组成。

5.2反向传播步骤:


5.3符号到符号的导数

代数表达式和计算图都对符号或不具有特定值的变量进行操作。 这些代数或者基于图的表达式被称为符号表示。 当我们实际使用或者训练神经网络时,我们必须给这些符号赋特定的值。 我们用一个特定的数值来替代网络的符号输入x,例如[1.2,3,765,1.8]

一些反向传播的方法采用计算图和一组用于图的输入的数值,然后返回在这些输入值处梯度的一组数值。 我们将这种方法称为符号到数值的微分。 这种方法用在诸如Torch和Caffe之类的库中。

另一种方法是采用计算图以及添加一些额外的节点到计算图中,这些额外的节点提供了我们所需导数的符号描述。 这是Theano和TensorFlow所采用的方法。这种方法的主要优点是导数可以使用与原始表达式相同的语言来描述。 因为导数只是另外一张计算图,我们可以再次运行反向传播,对导数再进行求导就能得到更高阶的导数。

基于符号到符号的方法的描述包含了符号到数值的方法。 符号到数值的方法可以理解为执行了与符号到符号的方法中构建图的过程中完全相同的计算。 关键的区别是符号到数值的方法不会显示出计算图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值