百面机器学习笔记——第九章 前向神经网络
02 深度神经网络中的激活函数
Q1: 常用的激活函数及其导数?
A1: Sigmoid, Tanh, ReLu
Sigmoid:
f
(
z
)
=
1
1
+
e
−
z
f(z) = \frac{1}{1+e^{-z}}
f(z)=1+e−z1
f
′
(
z
)
=
f
(
z
)
(
1
−
f
(
z
)
)
f'(z) = f(z)(1-f(z))
f′(z)=f(z)(1−f(z))
Tanh:
f
(
z
)
=
e
z
−
e
−
z
e
z
+
e
−
z
f(z) = \frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}
f(z)=ez+e−zez−e−z
f
′
(
z
)
=
1
−
(
f
(
z
)
)
2
f'(z) = 1-(f(z))^2
f′(z)=1−(f(z))2
ReLu:
f
(
z
)
=
m
a
x
(
0
,
z
)
f(z) = max(0, z)
f(z)=max(0,z)
f ′ ( z ) = 1 / 0 f'(z) = 1/0 f′(z)=1/0
Q2: 为什么sigmoid和tanh会导致梯度消失?
A2: 当输入z很大或很小时,其导数都会趋于0,导致梯度消失
Q3: ReLu的优点?有什么局限性?
A3:
优点:
1)计算角度上,Sigmoid和Tanh都需要计算指数,复杂度高,而ReLu只需要一个阈值判断
2)ReLu的非饱和性可以解决梯度消失问题,提供相对宽的激活边界
3)ReLu的单侧抑制提供了网络的稀疏表达能力
局限性:
1)负梯度经过ReLU会被置0,导致部分神经元死亡,进而参数无法更新,训练失败。
改进:
Leaky ReLU:保留了部分负梯度
PReLU:负轴斜率使用可学习的参数,可参与优化
04 神经网络训练技巧
Q1: 训练时是否可以将全部参数初始化为0?
A1: 不可以,如果全置为0,面对相同的输入,一定会得到相同的输出,进而前向传播和反向传播的结果都会相同,从而导致每一个神经元参数永远相同,这种对称性无法被训练打破,一般的做法是在一个分布内随机选取值初始化参数
Q2: 为什么DropOut可以抑制过拟合?原理和实现?
A2:
DropOut是指在训练时按一定概率随机临时丢弃部分神经元节点,所以每次迭代相当于在训练不同结构的网络。是Bagging集成的一种近似实现。Dropout进行训练,会弱化全体神经元之间的联合适应性,减少过拟合风险、增强泛化能力。
应用Dropout包括训练和预测两个阶段,每个节点需要增加一个概率系数。训练过程中fp和bp都依据概率判断是否参与梯度计算和误差传播。测试过程中,每个神经元要预先乘概率系数p,和训练过程保持一致
Q3: 批量归一化的动机和原理?如何使用?
A3:
动机: 网络的本质是学习数据分布,随着网络训练,每层的输入都不同,如果每一批输入数据的分布不同,则网络每次迭代都需要拟合不同的数据分布,增大训练复杂度和过拟合风险。
原理: 针对每一批和数据,在网络每一层输入之前增加归一化处理,归一化为均值0、方差1的分布:
x
k
=
x
(
k
)
−
E
[
x
(
k
)
]
V
a
r
[
x
(
k
)
]
x^{k}=\frac{x^{(k)-E[x^{(k)}]}}{\sqrt {Var[x^{(k)}]}}
xk=Var[x(k)]x(k)−E[x(k)],其中E为均值,Var为方差。
使用: 虽然在每层之间加入了bn层,相当于引入额外的约束,从而增强模型的泛化能力,但是由于归一化将数据分布都强制到了(0,1)上,对于Sigmoid函数,数据整体处于0附近,也就是线性区,相当于变成了线性变换,其实影响了模型的拟合能力。因此,在实际使用时,BN后还需要引入变换重构及可学习参数:
y
(
k
)
=
γ
(
k
)
x
(
k
)
+
β
(
k
)
y^{(k)} = \gamma^{(k)} x^{(k)}+\beta^{(k)}
y(k)=γ(k)x(k)+β(k),两个可学习参数代表方差和偏差,可以将数据恢复到最优的数据分布
05 深度卷积神经网络
Q1: 卷积操作的两种本质特性?解释其特性、作用?
A1: 卷积的本质特性包括:稀疏交互 和 参数共享
稀疏交互:
特性: 对传统神经网络(如fc层),任意输入和输出都有联系,这种被称作稠密连接。而对于卷积神经网络,卷积核尺度远小于数据输入的维度,所以每个输出的神经元,仅和前一层特定的局部区域内神经元有联系。这样的稀疏交互让网络的训练复杂度减小、过拟合情况也得到改善。
作用、物理意义: 通常图像、文本等数据具有局部的特征结构,所以可以先学习局部的特征,再将局部特征组合起来形成复杂的特征
参数共享:
特性: 对传统网络,每个参数只作用于某个输入元素一次,而卷积网络中,卷积核将作用于每一个局部输入上,也就是卷积核的参数可以被反复利用。这样只需要学习一组参数、而不需要对每个位置都设置参数优化
物理意义: 使卷积层平移等变形,不论目标在什么位置,都可以被卷积层提取特征
Q2: 常见的池化操作有哪些?池化的作用?
A2:
常见的池化操作有:均值池化、最大池化、相邻重叠区域池化、金字塔池化
均值池化:抑制由于感受野小而造成反差增大的现象,对背景的保留效果好
最大池化:抑制网络误差造成估计值偏移的现象,更好地提取纹理信息
金字塔池化:不同尺度的降采样拼接在一起,多尺度信息
作用: 池化的本质是是降采样,降低参数量,还能保持平移、伸缩、旋转操作的不变形,
06 深度残差网络
Q1: ResNet的提出背景和理论?
A1:
提出背景: 为了缓解深层的网络在训练中的梯度消失问题。梯度消失的产生原因是:误差通过若干成参数和导数的连乘进行传播,层数越多,涉及到的连乘参数、导数越多,因此误差很容易产生消失或膨胀。因此,深度的网络拟合和泛化能力较差。
解决思路: 由于离输入较近的成熟较难训练,ResNet可以直接将其接入到更接近输出的层。使得网络拟合的目标为输入和输出的残差