1 名词解释
深度学习:将训练数据(低层特征)输入人工构造的神经网络(其模仿大脑神经元之间的传递),通过神经网络的多层运算自动提取更高层次的数据分布式特征表示;
稀疏自编码器:当隐藏节点较多时,自编码器会学习到很多冗余信息,降低压缩效率,因此向自编码器中添加正则化项,使得大部分单元输出都变为0(对神经元进行抑制),利用少数单元完成压缩或重构。
正则化:
广义正则化:通过某种手段使学习算法在训练误差(bias)变化不大的情况下,使得泛华误差(generalization error度量训练所得模型在总体数据集上得到的预估值和标签值偏离程度的期望)显著降低的方法;
狭义正则化: 不减少网络参数,只进行参数范围调整的方法,给损失函数加一个正则化项;
集成学习:(Bagging)将多个弱学习器进行结合,通过对样本加权、学习器加权,获得比单一学习器显著优越的泛华性能的强学习器的学习方法(设计用来改进统计分类与回归中机器学习算法的稳定性和精确度,也可用来降低误差,避免过拟合)
Dropout: 是训练深度神经网络的一种trick,在每个训练批次中,删掉部分的神经元节点,即在网络前向传播的时候,让某些神经元的激活值以一定的概率p输出为0,这种方式可以减少层节间节点的相互作用,因此可以明显的缓和过拟合现象,使得模型泛华性能更强,因为它不会太依赖某些局部的特征。 输入层和隐藏层都可以dropout一些神经元,输入层dropout值通常取0.2,隐藏层概率通常取0.5;反向传播时激活值被置为0的神经元参数保持没有被删除前的值,其他神经元的参数被更新。
2 简答题
1. 请简述你对误差反向传播算法的理解。
利⽤输出层的误差,来估计输出层前⼀层的误差,再利⽤这个误差来估计更前⼀层的误
差,依此逐层反传;
利⽤梯度下降法,基于逐层计算的误差估计,对权重进⾏调节;
损失函数有: 绝对值损失;0-1损失;平⽅误差;对数损失;交叉熵;指数损失;
反向传播过程:
(1)定义⽬标函数(损失函数)
(2)优化目标,最小化
(3) , 保证每次取值
(4)每步参数的调整:, 是梯度,一只调整直到梯度为0,参数初值设置影响学习效果,学习率不能过大或者过小;
参数的更新过程:
2. 请列出卷积神经网络的主要结构模块,以及各个模块完成的功能。
卷积神经网络包含模块:卷积层、激活函数、池化层、全连接层、输出层
卷积层:内部包含多个卷积核,组成卷积核的每个元素都对应一个权重系数和一个偏差量,
卷积层功能:对输入的数据进行特征提取,浅层卷积层提取图像基本特征,如边缘、方向和纹理等特征,深层卷积层提取图像高阶特征,出现了高层次语义模式;
激活函数: 卷积神经网络最常用的是relu, sigmoid较少使用,relu函数计算速度快,只有线性关系,比sigmoid和tanh要快很多,输入为正数时,不存在梯度消失问题,但其强制把负值置为0,可能丢掉一些特征;
激活函数功能: 是用来加入非线形因素,提高网络表达能力,
池化层:使用某位置相邻输出的总体统计特征作为该位置的输出,常用最大池化和均值池化,不需要训练学习的参数,只需要指定池化操作的核大小、操作步幅、以及池化类型;
池化层功能:池化可以减少网络中参数计算量,抑制过拟合,增强鲁棒性,获得不因尺寸而改变的等效图片特征。
全连接层:对于分类问题用softmax, 对于回归问题,使用线性函数;
全连接层功能: 对卷积层和池化层输出的特征进行降维,将学习到的特征表示映射到样本标记空间的作用。
3. 请简述你对LSTM的理解,并解释为什么它能解决长时依赖问题。
4. 请简述深度学习中常见的避免过拟合的方法。
1)选取合适的停止训练标准,使对机器的训练在合适的程度;
2)保留验证数据集,对训练成果进行验证;
3)获取额外数据集进行交叉验证;
4)数据增强;
5)正则化,在进行目标函数优化时,在目标函数后加上一个正则项,一般有L1, L2正则等。
5. 请简述你对生成对抗网络的理解,并简述其训练过程。
6. 请简述你对胶囊网络的理解。
与CNN不同,CNN主要是针对每个神经元的操作,存在丢失位置信息的问题,是一种粗编码提取特征的方式;
胶囊网络使⽤胶囊作为⽹络基本单元;
特征向量表示可视实体,对⽅位等信息进⾏编码;
动态路由算法代替池化操作;
(1)特征向量表示可视实体:
特征向量⻓度表示实体存在概率;
特征向量各维特征表示实体姿态;
特征向量的表示:
胶囊输出的实例化参数提供了⼀种由部分到整体的简单识别⽅法,由单个有限视觉域逐层
向上预测,最终形成对⽬标图像的解析树,达到识别⽬的;
在连接到下⼀层时,可以做出⼀个简单选择——实体是否能够由多个激活的具有正确的空
间关系的胶囊表示,并且激活更⾼级别的胶囊;
3 计算题
1. 请使用卷积神经网络中的Full卷积,Same卷积、Valid卷积分别计算下图所示的输入矩阵和卷积核对应的特征图,卷积步长为1,激活函数采用Relu。
# valid卷积
tensor([[[[ 0, 8, 20, 0],
[ 2, 7, 0, 1],
[ 9, 0, 14, 6],
[12, 3, 2, 4]]]])
tensor([[[[ 10, 0],
[ 0, 103]]]])
****************
# same卷积
tensor([[[[ 9, 4, 2, 2, 0, 3],
[ 5, 0, 8, 20, 0, 0],
[ 6, 2, 7, 0, 1, 3],
[ 2, 9, 0, 14, 6, 0],
[ 0, 12, 3, 2, 4, 0],
[ 0, 6, 0, 14, 3, 0]]]])
tensor([[[[ 72, 12, 0, 0, 0, 27],
[ 24, 0, 35, 160, 0, 0],
[ 36, 0, 10, 0, 0, 20],
[ 0, 49, 0, 103, 30, 0],
[ 0, 88, 0, 0, 0, 0],
[ 0, 39, 0, 114, 7, 0]]]])
****************
# full卷积
tensor([[[[ 5, 1, 0, 1, 7, 0, 0, 0],
[ 0, 9, 4, 2, 2, 0, 3, 2],
[ 7, 5, 0, 8, 20, 0, 0, 5],
[ 6, 6, 2, 7, 0, 1, 3, 4],
[ 9, 2, 9, 0, 14, 6, 0, 0],
[ 8, 0, 12, 3, 2, 4, 0, 7],
[ 7, 0, 6, 0, 14, 3, 0, 7],
[ 2, 3, 4, 0, 1, 4, 0, 0]]]])
tensor([[[[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 35, 0, 0, 0, 58, 0, 0, 0, 0],
[ 0, 0, 59, 10, 0, 0, 0, 20, 10, 0],
[ 0, 37, 11, 0, 35, 160, 0, 0, 33, 0],
[ 0, 25, 14, 0, 10, 0, 0, 11, 28, 0],
[ 0, 59, 0, 49, 0, 103, 30, 0, 0, 0],
[ 0, 54, 0, 88, 0, 0, 0, 0, 56, 0],
[ 0, 50, 0, 32, 0, 109, 2, 0, 56, 0],
[ 0, 8, 8, 27, 0, 0, 18, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]]])
****************
2. 多分类任务中,某个样本的期望输出为(0,0,0,1),两个模型A和B都采用交叉熵损失函数,针对该样本的实际输出分别为(ln20,ln40,ln60,ln90)、(ln10, ln30, ln50, ln90),采用softmax函数对输出进行归一化并计算两个模型的交叉熵,说明哪个模型好。
提示: lg2 = 0.301, lg3 = 0.477
归一化:
计算交叉熵损失:第一个模型:
第二个模型:
根据损失观察,第二个模型好
4 设计题
1. 请给出大量图像进行目标检测的设计方案,要求有自己的新思路和新观点;
2. 请给出机器阅读理解模型的设计方案,要求有自己的新思路和新观点;