1 多层感知机与布尔函数
问题1:多层感知机表示异或逻辑时最少需要多少个隐含层(仅考虑二元输入)?
一个隐藏层
问题2:如果使用一个隐藏层,需要多少隐节点能够实现包含n元输入的任何布尔函数?
2
n
−
1
2^{n-1}
2n−1
问题3:考虑多隐层的情况,实现包含n元输入的任意布尔函数最少需要多少个网络节点和网络层?
2
log
2
N
(
向
上
取
整
)
2\log_2N(向上取整)
2log2N(向上取整)
2 深度神经网络中的激活函数
问题1:写出常用激活函数及其导数
-
Sigmoid激活函数的形式为
-
2 Tanh激活函数的形式为
-
3 ReLU激活函数的形式为
问题2:为什么Sigmoid和Tanh激活函数会导致梯度消失的现象?
问题3:ReLU系列激活函数相对于Sigmoid和Tanh激活函数的优点是什么?他们有什么局限性以及如何改进?
3 多层感知机的反向传播算法
问题1:写出多层感知机的平方误差和交叉熵损失函数
问题2:根据问题1中定义的损失函数,推导各层参数更新的梯度计算公式
问题3:平方差损失函数和交叉熵损失函数分别适合什么场景?
~~~~~~~
一般来说,平方损失函数更适合输出为连续,并且最后一层不含Sigmoid或Softmax激活函数的神经网络;交叉熵损失则更适合二分类或多分类的场景。
4 神经网络训练技巧
~~~~~~~ 在大规模神经网络的训练过程中,我们常常会面临“过拟合”的问题,即当参数数目过于庞大而相应的训练数据短缺时,模型在训练集上损失值很小,但在测试集上损失较大,泛化能力很差。解决“过拟合”的方法有很多,包括数据集增强(Data Augmentation)、参数范数惩罚/正则化(Regularization)、模型集成(Model Ensemble)等;其中Dropout是模型集成方法中最高效与常用的技巧。同时,深度神经网络的训练中涉及诸多手调参数,如学习率、权重衰减系数、Dropout比例等,这些参数的选择会显著影响模型最终的训练效果。批量归一化(Batch Normalization,BN)方法有效规避了这些复杂参数对网络训练产生的影响,在加速训练收敛的同时也提升了网络的泛化能力。
问题1:神经网络训练时是否可以将全部参数初始化为0?
~~~~~~~
考虑全连接的深度神经网络,同一层中的任意神经元都是同构的,它们拥有相同的输入和输出,如果再将参数全部初始化为同样的值,那么无论前向传播还是反向传播的取值都是完全相同的。学习过程将永远无法打破这种对称性,最终同一网络层中的各个参数仍然是相同的。
~~~~~~~
因此,我们需要随机地初始化神经网络参数的值,以打破这种对称性。简单来说,我们可以初始化参数为取值范围
(
−
1
d
,
1
d
)
(-\frac{1}{\sqrt{d}},\frac{1}{\sqrt{d}})
(−d1,d1)的均匀分布,其中d是一个神经元接受的输入维度。偏置可以被简单地设为0,并不会导致参数对称的问题。
问题2:为什么Dropout可以抑制过拟合?它的工作原理和实现?
问题3:批量归一化的基本动机与原理是什么?在卷积神经网络中如何使用?
5 深度神经网络
问题1:卷积操作的本质特性包括稀疏交互和参数共享,具体解释这两种特性及其作用
问题2:常用的池化操作有哪些?池化的作用是什么?
~~~~~~~ 池化操作除了能显著降低参数量外,还能够保持对平移、伸缩、旋转操作的不变性。平移不变性是指输出结果对输入的小量平移基本保持不变。
问题3:卷积神经网络如何用于文本分类任务?
6 深度残差网络
问题:ResNet的提出背景和核心理论是什么?
~~~~~~~
ResNet的提出背景是解决或缓解深层的神经网络训练中的梯度消失问题。