九、前向神经网络


深度前馈网络(Deep Feedforward Networks)是一种典型的深度学习模型。其目标为:拟合某个函数f(x;θ),即定义y=f (x;θ)将输入x转化为某种预测的输出y,并同时学习网络参数θ的值,使模型得到最优的函数近似。由于从输入到输出的过程中不存在与模型自身的反馈连接,此类模型被称为“前馈”。深度前馈网络是一类网络模型的统称,我们常见的多层感知机、自编码器、 限制玻尔兹曼机,以及卷积神经网络等,都是其中的成员。

多层感知机与布尔函数

多层感知机表示异或逻辑时最少需要几个隐含层

1

如果只使用一个隐层,需要多少隐节点能够实现包含n元输入的任意布尔函数?

2n-1

考虑多隐层的情况,实现包含n元输入的任意布尔函数最少需要多少个网络节点和网络层?

深度神经网络中的激活函数

线性模型是机器学习领域中最基本也是最重要的工具,例如逻辑回归和线性回归。 然而真实情况中,我们往往会遇到线性不可分问题(如XOR异或函数),需要非线性变换对数据的分布进行重新映射。对于深度神经网络,我们在每一层线性变换后叠加一个非线性激活函数,以避免多层网络等效于单层线性函数,从而获得更强大的学习与拟合能力。

写出常用激活函数及其导数

在这里插入图片描述
在这里插入图片描述

为什么Sigmoid和Tanh激活函数会导致梯度消失的现象?

Sigmoid激活函数的曲线如图所示。它将输入z映射到区间(0,1),当z很大时,f(z)趋近于1;当z很小时,f(z)趋近于0。其导数在z很大或很小时都会趋近于0,造成梯度消失的现象。
在这里插入图片描述

ReLU系列的激活函数相对于Sigmoid和Tanh激活函数的优点是什么?它们有什么局限性以及如何改进?

优点:
(1)从计算的角度上,Sigmoid和Tanh激活函数均需要计算指数,复杂度高,而ReLU只需要一个阈值即可得到激活值。
(2)ReLU的非饱和性可以有效地解决梯度消失的问题,提供相对宽的激活边界。
(3)ReLU的单侧抑制提供了网络的稀疏表达能力。
缺点:
ReLU的局限性在于其训练过程中会导致神经元死亡的问题。这是由于函数导致负梯度在经过该ReLU单元时被置为0,且在之后也不被任何数据激活,即流经该神经元的梯度永远为0,不对任何数据产生响应。在实际训练中,如果学习率设置较大,会导致超过一定比例的神经元不可逆死亡,进而参数梯度无法更新,整个训练过程失败。
为解决这一问题,人们设计了ReLU的变种Leaky ReLU(LReLU),其形式表 示为
在这里插入图片描述
ReLU和LReLU的函数曲线对比如图所示。LReLU与ReLU的区别在于, 当z<0时其值不为0,而是一个斜率为a的线性函数,一般a为一个很小的正常数, 这样既实现了单侧抑制,又保留了部分负梯度信息以致不完全丢失。但另一方面,a值的选择增加了问题难度,需要较强的人工先验或多次重复训练以确定合适的参数值。

在这里插入图片描述

神经网络训练技巧

在大规模神经网络的训练过程中,我们常常会面临“过拟合”的问题,即当参数数目过于庞大而相应的训练数据短缺时,模型在训练集上损失值很小,但在测试集上损失较大,泛化能力很差。解决“过拟合”的方法有很多,包括数据集增强、参数范数惩罚/正则化、模型集成等;其中Dropout是模型集成方法中最高效与常用的技巧。同时,深度神经网络的训练中涉及诸多手调参数,如学习率、权重衰减系数、 Dropout比例等,这些参数的选择会显著影响模型最终的训练效果。批量归一化 (Batch Normalization,BN)方法有效规避了这些复杂参数对网络训练产生的影响,在加速训练收敛的同时也提升了网络的泛化能力。

神经网络训练时是否可以将全部参数初始化为0

考虑全连接的深度神经网络,同一层中的任意神经元都是同构的,它们拥有相同的输入和输出,如果再将参数全部初始化为同样的值,那么无论前向传播还是反向传播的取值都是完全相同的。学习过程将永远无法打破这种对称性,最终同一网络层中的各个参数仍然是相同的。
因此,我们需要随机地初始化神经网络参数的值,以打破这种对称性。

为什么Dropout可以抑制过拟合?它的工作原理和实现?

Dropout是指在深度网络的训练中,以一定的概率随机地 “临时丢弃”一部分神 经元节点。具体来讲,Dropout作用于每份小批量训练数据,由于其随机丢弃部分神经元的机制,相当于每次迭代都在训练不同结构的神经网络。
Dropout的具体实现中,要求某个神经元节点激活值以一定的概率p被“丢弃”, 即该神经元暂时停止工作。因此,对于包含N个神经元节点的网络,在Dropout的作用下可看作为2N个模型的集成。这2N个模型可认为是原始网络的子网络,它们共享部分权值,并且具有相同的网络层数,而模型整体的参数数目不变,这就大大简化了运算。
对于任意神经元,每次训练中都与一组随机挑选的不同的神经元集合共同进行优化,这个过程会减弱全体神经元之间的联合适应性,减少过拟合的风险,增强泛化能力。

批量归一化的基本动机与原理是什么?在卷积神经网络中如何使用?

神经网络训练过程的本质是学习数据分布,如果训练数据与测试数据的分布不同将大大降低网络的泛化能力,因此我们需要在训练开始前对所有输入数据进行归一化处理。 然而随着网络训练的进行,每个隐层的参数变化使得后一层的输入发生变化,从而每一批训练数据的分布也随之改变,致使网络在每次迭代中都需要拟合不同的数据分布,增大训练的复杂度以及过拟合的风险。
批量归一化方法是针对每一批数据,在网络的每一层输入之前增加归一化处理(均值为0,标准差为1),将所有批数据强制在统一的数据分布下。
批量归一化可以看作在每一层输入和上一层输出之间加入了一个新的计算层,对数据的分布进行额外的约束,从而增强模型的泛化能力。但是批量归一化同时也降低了模型的拟合能力,归一化之后的输入分布被强制为0均值和1标准差。
批量归一化在卷积神经网络中应用时,需要注意卷积神经网络的参数共享机制。每一个卷积核的参数在不同位置的神经元当中是共享的,因此也应该被一起归一化。

深度卷积神经网络

卷积神经网络(Convolutional Neural Networks,CNN)也是一种前馈神经网络,其特点是每层的神经元节点只响应前一层局部区域范围内的神经元(全连接 网络中每个神经元节点响应前一层的全部节点)。一个深度卷积神经网络模型通 常由若干卷积层叠加若干全连接层组成,中间也包含各种非线性操作以及池化操 作。卷积神经网络同样可以使用反向传播算法进行训练,相较于其他网络模型, 卷积操作的参数共享特性使得需要优化的参数数目大大缩减,提高了模型的训练 效率以及可扩展性。由于卷积运算主要用于处理类网格结构的数据,因此对于时间序列以及图像数据的分析与识别具有显著优势。

卷积操作的本质特性包括稀疏交互和参数共享,具体解释这两种特性及其作用。

稀疏交互

在传统神经网络中,网络层之间输入与输出的连接关系可以由一个权值参数矩阵来表示,其中每个单独的参数值都表示了前后层某两个神经元节点之间的交互。对于全连接网络,任意一对输入与输出神经元之间都产生交互,形成稠密的连接结构,神经元si与输入的所有神经元xj均有连接。
而在卷积神经网络中,卷积核尺度远小于输入的维度,这样每个输出神经元仅与前一层特定局部区域内的神经元存在连接权重(即产生交互),我们称这种特性为稀疏交互。具体来讲,假设网络中相邻两层分别具有m个输入和n个输出,全连接网络中的权值参数矩阵将包含m×n个参数。对于稀疏交互的卷积网络,如果限定每个输出与前一层神经元的连接数为k,那么该层的参数总量为k×n。在实际应用中,一般k值远小于m就可以取得较为可观的效果;而此时优化过程的时间复杂度将会减小几个数量级,过拟合的情况也得到了较好的改善。
稀疏交互的物理意义是,通常图像、文本、语音等现实世界中的数据都具有 局部的特征结构,我们可以先学习局部的特征,再将局部的特征组合起来形成更复杂和抽象的特征。

参数共享

参数共享是指在同一个模型的不同模块中使用相同的参数,它是卷积运算的固有属性。在全连接网络中,计算每层的输出时,权值参数矩阵中的每个元素只作用于某个输入元素一次;而在卷积神经网络中,卷积核中的每一个元素将作用于每一次局部输入的特定位置上。根据参数共享的思想,我们只需要学习一组参数集合,而不需要针对每个位置的每个参数都进行优化,从而大大降低了模型的存储需求。
参数共享的物理意义是使得卷积层具有平移等变性。假如图像中有一只猫, 那么无论它出现在图像中的任何位置,我们都应该将它识别为猫,也就是说神经网络的输出对于平移变换来说应当是等变的。 也就是说,在猫的图片上先进行卷积,再向右平移l像素的输出,与先将图片向右平移l像素再进行卷积操作的输出结果是相等的。

常用的池化操作有哪些?池化的作用是什么

常用的池化操作主要针对非重叠区域,包括均值池化、最大池化等。
均值池化通过对邻域内特征数值求平均来实现,能够抑制由于邻域大小受限造成估计值方差增大的现象,特点是对背景的保留效果更好。
最大池化则通过取邻域内特征的最大值来实现,能够抑制网络参数误差造成估计均值偏移的现象,特点是更好地提取纹理信息。
池化操作的本质是降采样。例如,我们可以利用最大池化将4×4的矩阵降采样为2×2的矩阵。
池化操作除了能显著降低参数量外,还能够保持对平移、伸缩、旋转操作的不变性。
平移不变性是指输出结果对输入的小量平移基本保持不变。例如,输入 为(1,5,3),最大池化将会取5,如果将输入右移一位得到(0,1,5),输出的结果 仍将为5。
对伸缩的不变性(一般称为尺度不变性)可以这样理解,如果原先神经 元在最大池化操作之后输出5,那么在经过伸缩(尺度变换)之后,最大池化操作 在该神经元上很大概率的输出仍然是5。因为神经元感受的是邻域输入的最大值, 而并非某一个确定的值。

深度残差网络

随着网络层数的增加,梯度消失的问题更加严重,这是因为梯度在反向传播时会逐渐衰减。深度残差网络(Deep Residual Network,ResNet)是一种非常有效的网络结构改进,极大地提高了可以有效训练的深度神经网络层数。

ResNet的提出背景和核心理论是什么?

ResNet的提出背景是解决或缓解深层的神经网络训练中的梯度消失问题。假设有一个L层的深度神经网络,如果我们在上面加入一层,直观来讲得到的L+1层 深度神经网络的效果应该至少不会比L层的差。实际上,通过实验发现,层数 更深的神经网络反而会具有更大的训练误差。这很大程度上归结于深度神经网络的梯度消失问题。
ResNet通过调整网络结构来解决上述问题。首先考虑两层神经网络的简单叠加,这时输入x经过两个网络层的变换得到H(x),激活函数采用 ReLU。反向传播时,梯度将涉及两层参数的交叉相乘,可能会在离输入近的网络层中产生梯度消失的现象。
ResNet把网络结构调整为,既然离输入近的神经网络层较难训练,那么我们可以将它短接到更靠近输出的层,如图所示。输入x经过两个神经网络的变换得到F(x),同时也短接到两层之后,最后这个包含两 层的神经网络模块输出H(x)=F(x)+x。这样一来,F(x)被设计为只需要拟合输入x与目标输出的残差 ,残差网络的名称也因此而来。如果某一层的输出已经较好的拟合了期望结果,那么多加入一层不会使得模型变得更差,因为该层的输出将直接被短接到两层之后,相当于直接学习了一个恒等映射,而跳过的两层 只需要拟合上层输出和目标之间的残差即可。
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值