目录

多层感知机与布尔函数

深度神经网络中的**函数

多层感知机的反向传播算法

神经网络训练技巧

深度卷积神经网络

深度残差网络


多层感知机与布尔函数

1. 多层感知机表示异或逻辑时最少需要几个隐含层(仅考虑二元输入)?(2)

 

 

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

 

 

深度神经网络中的**函数

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

1. 写出常用的**函数及其导数(1)

Sigmoid**函数形式如下,对应的导函数为:f`(z)=f(z)(1-f(z))。

百面机器学习(9)——前向神经网络

Tanh**函数的形式如下,对应的导函数为f`(z)=1-(f(z))2。

百面机器学习(9)——前向神经网络

ReLU的**函数形式为: f(z)=max(0, z),对应的导函数为:

百面机器学习(9)——前向神经网络

 

2. 为什么Sigmoid和Tanh**函数会导致梯度消失的现象?(2)

Sigmoid **函数的曲线如下图 9.7 所示。 它将输入z映射到区间(0,1),当 z 很大时,f(z)趋近于 1;当 z 很小时, f(z)趋近于0。 其导数f'(z) = f(z)(1- f(z))在 z 很大或很小时都会趋近于 0 ,造成梯度消失的现象。

Tanh **函数的曲线如下图9.8 所示。 当z很大时,f(z)趋近于 1,当 z 很小时, f(z) 趋近于-1 。 其导数f'(z) =1-(f(z))2在 z很大或很小时都会趋近于0,同样会出现 “梯度消失” 。 实际上,Tanh **函数相当于 Sigmoid 的平移。

Tanh(x)=2sigmoid(2x)-1

百面机器学习(9)——前向神经网络

 

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

优点

1)从计算的角度上, Sigmoid 和 Tanh **函数均需要计算指数,复杂度高,而 ReLU 只需要一个阈值即可得到**值。

2)ReLU 的非饱和性可以有效地解决梯度消失的问题,提供相对宽的**边界。

3)ReLU 的单侧仰制提供了网络的稀疏表达能力。

局限性

ReLU的局限性在于其训练过程中会导致神经元死亡的问题。 这是由于函数f(z) = max(0, z)导致负梯度在经过该 ReLU 单元时被置为 0, 且在之后也不被任何数据**,即流经该神经元的梯度永远为0,不对任何数据产生响应。 在实际训练中,如果学习率 ( Learning Rate )设置较大,会导致超过一定比例的神经元不可逆死亡,进而参数梯度无法更新, 整个训练过程失败。

为解决这一问题,人们设计了ReLU的变种Leaky ReLUctant(LReLU),其形式表示为:

百面机器学习(9)——前向神经网络

 

ReLU 和 LReLU 的函数曲线对比如图 9.9 所示。 LReLU与ReLU的区别在于,当 z<0时其值不为 0,而是一个斜率为 α 的线性函数, 一般α为一个很小的正常数,这样既实现了单侧抑制,又保留了部分负梯度信息以致不完全丢失。 但另一方面, α 值的选择增加了问题难度,需要较强的人工先验或多次重复训练以确定合适的参数值。

百面机器学习(9)——前向神经网络

基于此,参数化的 PReLU (Parametric ReLU )应运而生。它与LReLU 的主要区别是将负轴部分斜率 α 作为网络中一个可学习的参数,进行反向传播训练,与其它含参数网络层联合优化。而另一个 LReLU的变种增加了“随机化”机制,具体地,在训练过程中,斜率 α 作为一个满足某种分布的随机采样,测试时再固定下来。 Random ReLU ( RReLU )在一定程度上能起到正则化的作用。关于 ReLU 系列**函数,更多详细内容及实验性能对比可以参考相关论文。

 

多层感知机的反向传播算法

1. 写出多层感知机的平方误差和交叉熵损失函数(2)

给定包含 m样本的集合{(x(1),y(1)),… , (x(m),y(m))},其整体代价函数为:

百面机器学习(9)——前向神经网络

其中第一项为平方误差项,第二项L2正则化项,在功能上可称作权重衰减项,目的是减小权重的幅度,防止过拟合。该项之前的系数λ为权重衰减参数,用于控制损失函数中两项的相对权重。

以二分类场景为例,交叉熵损失函数定义为:

百面机器学习(9)——前向神经网络

真中正则项与上式是相同的,第一项衡量了预测o(i) 与真实类别y(i) 之间的交叉熵,当 y(i)与o(i) 相等时,熵最大,也就是损失函数达到最小。在多分类的场景中,可以类似地写出相应的损失函数

百面机器学习(9)——前向神经网络

 

 

2. 根据问题1中定义的损失函数,推导各层参数更新的梯度计算公式。(4)

 

 

3. 平方误差损失函数和交叉熵损失函数分别适合什么场景?(3)

一般来说,平方损失函数更适合输出为连续,并且最后一层不含 Sigmoid或Softmax**函数的神经网络;交叉捕损失则更适合二分类或多分类的场景。

 

 

神经网络训练技巧

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

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

 

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

Dropout 是指在深度网络的训练中,以一定的概率随机地“临时丢弃”一部分神经元节点。 具体来讲, Dropout 作用于每份小批量训练数据,由于其随机丢弃部分神经元的机制,相当于每次迭代都在训练不同结构的神经网络。 类比于 Bagging 方法,Dropout 可被认为是一种实用的大规模深度神经网络的模型集成算法。 这是由于传统意义上的Bagging 涉及多个模型的同时训练与测试评估,当网络与参数规模庞大时, 这种集成方式需要消耗大量的运算时间与空间。 Dropout 在小批量级别上的操作,提供了一种轻量级的 Bagging 集成近似,能够实现指数级数量神经网络的训练与评测。

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

百面机器学习(9)——前向神经网络

 

 

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

神经网络训练过程的本质是学习数据分布,如果训练数据与测试数据的分布不同将大大降低网络的泛化能力,因此我们需要在训练开始前对所有输入数据进行归一化处理。

然而随着网络训练的进行,每个隐层的参数变化使得后一层的输入发生变化,从而每-批训练数据的分布也随之改变,致使网络在每次迭代中都需要拟合不同的数据分布,增大训练的复杂度以及过拟合的风险。

批量归一化可以看作在每一层输入和上一层输出之间加入了一个新的计算层,对数据的分布进行额外的约束,从而增强模型的泛化能力。

 

深度卷积神经网络

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

稀疏交互

在传统神经网络中,网络层之间输入与输出的连接关系可以由一个权值参数矩阵来表示, 其中每个单独的参数值都表示了前后层某两个神经元节点之间的交互。对于全连接网络,任意一对输入与输出神经元之间都产生交互,形成稠密的连接结构。如图 9.15 所示,神经元 Si与输入的所有神经元主xj 均有连接。

百面机器学习(9)——前向神经网络

而在卷积神经网络中,卷积核尺度远小于输入的维度,这样每个输出神经元仅与前一层特定局部区域内的神经元存在连接权重(即产生交互),我们称这种特性为稀疏交互,如图 9.16 所示。 可以看到与稠密的连接结构不同,神经元Si仅与前一层中的xi-1 、xi和 xi+1 相连。具体来讲,假设网络中相邻两层分别具有m个输入和 n个输出,全连接网络中的权值参数矩阵将包含 mxn个参数。对于稀疏交互的卷积网络,如果限定每个输出与前一层神经元的连接数为 k,那么该层的参数总量为kxn。在实际应用中,一般 k值远小于 m 就可以取得较为可观的效果;而此时优化过程的时间复杂度将会减小几个数量级,过拟合的情况也得到了较好的改善。

百面机器学习(9)——前向神经网络

稀疏交互的物理意义是,通常图像、文本、语音等现实世界中的数据都具有局部的特征结构,我们可以先学习局部的特征,再将局部的特征组合起来形成更复杂和抽象的特征。

参数共享

参数共享是指在同一个模型的不同模块中使用相同的参数,它是卷积运算的固有属性。全连接网络中, 计算每层的输出时,权值参数矩阵中的每个元素只作用于某个输入元素一次; 而在卷积神经网络中,卷积核中的每一个元素将作用于每一次局部输入的特定位置上。根据参数共享的思想,我们只需要学习一组参数集合,而不需要针对每个位置的每个参数都进行优化,从而大大降低了模型的存储需求。

参数共享的物理意义是使得卷积层具有平移等变性。假如图像中有一只猫,那么无论它出现在图像中的任何位置,我们都应该将它识别为猫,也就是说神经网络的输出对于平移变换来说应当是等变的。

 

2. 常用的池化操作有哪些?池化的作用是什么?(3)

常用的池化操作主要针对非重叠区域,包括均值池化( mean pooling )、最大池化( max pooling)等。其中均值池化通过对邻域内特征数值求平均来实现,能够抑制由于邻域大小受限造成估计值方差增大的现象,特点是对背景的保留效果更好。最大池化则通过取邻域内特征的最大值来实现,能够抑制网络参数误差造成估计均值偏移的现象,特点是更好地提取纹理信息。池化操作的本质是降采样。

百面机器学习(9)——前向神经网络

此外,特殊的池化方式还包括对相邻重叠区域的池化以及空间金字塔池化。相邻重叠区域的池化,顾名思义,是采用比窗口宽度更小的步长,使得窗口在每次滑动时存在重叠的区域。 空间金字塔池化主要考虑了多尺度信息的描述,例如同时计算 1 ×1 、 2×2、 4×4 的矩阵的池化并将结果拼接在一起作为下一网络层的输入。

池化操作除了能显著降低参数量外,还能够保持对平移、伸缩、旋转操作的不变性。平移不变性是指输出结果对输入的小量平移基本保持不变。

例如,输入为( 1,5,3 ),最大池化将会取5,如果将输入右移一位得到( 0,1,5 ),输出的结果仍将为 5。对伸缩的不变性(一般称为尺度不变性)可以这样理解,如果原先神经元在最大池化操作之后输出 5, 那么在经过伸缩(尺度变换)之后,最大池化操作在该神经元上很大概率的输出仍然是 5。因为神经元感受的是邻域输入的最大值,而并非某一个确定的值。 旋转不变性可以参照图 9. 19 。图中的神经网络由 3 个学得的过滤器和一个最大池化层组成。这 3 个过滤器分别学习到不同旋转方向的“5” 。当输入中出现“5”时,无论进行何种方向的旋转,都会有一个对应的过滤器与之匹配并在对应的神经元中引起大的**。最终,无论哪个神经元获得了**,在经过最大池化操作之后输出都会具有大的**。

百面机器学习(9)——前向神经网络

 

3. 卷积神经网络如何用于文本分类任务?(3)

卷积神经网络的核心思想是捕捉局部特征,对于文本来说,局部特征就是由若干单词组成的滑动窗口,类似于N-gram。卷积神经网络的优势在于能够自动地对 N-gram 特征进行组合和筛选,获得不同抽象层次的语义信息。 由于在每次卷积中采用了共享权重的机制,因此它的训练速度相对较快,在实际的文本分类任务中取得了非常不错的效果。

 

 

深度残差网络

深度神经网络的层数决定了模型的容量, 然而随着神经网络层数的加深,优化函数越来越陷入局部最优解。同时,随着网络层数的增加,梯度消失的问题更加严重,这是因为梯度在反向传播时会逐渐衰减。特别是利用 Sigmoid**函数时,使得远离输出层(即接近输入层)的网络层不能够得到高效的学习,影响了模型泛化的效果。为了改善这一问题,深度学习领域的研究员们在过去十几年间尝试了许多方法,包括改进训练算法、利用正则化、设计特殊的网络结构等。其中,深度残差网络( Deep Residual Network, ResNet )是一种非常高效的网络结构改进,极大地提高了可以高效训练的深度神经网络层数。

1. ResNet的提出背景核心理论是什么?(3)

ResNet 的提出背景是解决或缓解深层的神经网络训练中的梯度消失问题。

百面机器学习(9)——前向神经网络

 

相关文章: