题库深度学习面试题型介绍及解析--第7期
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.简述激活函数的作用
使用激活函数的目的是为了向网络中加入非线性因素;加强网络的表示能力,解决线性模型无法解决的问题
2.那为什么要使用非线性激活函数?
为什么加入非线性因素能够加强网络的表示能力?——神经网络的万能近似定理
•神经网络的万能近似定理认为主要神经网络具有至少一个非线性隐藏层,那么只要给予网络足够数量的隐藏单元,它就可以以任意的精度来近似任何从一个有限维空间到另一个有限维空间的函数。
•如果不使用非线性激活函数,那么每一层输出都是上层输入的线性组合;此时无论网络有多少层,其整体也将是线性的,这会导致失去万能近似的性质
•但仅部分层是纯线性是可以接受的,这有助于减少网络中的参数。3.如何解决训练样本少的问题?
1.利用预训练模型进行迁移微调(fine-tuning),预训练模型通常在特征上拥有很好的语义表达。此时,只需将模型在小数据集上进行微调就能取得不错的效果。CV 有 ImageNet,NLP 有 BERT 等。
2.数据集进行下采样操作,使得符合数据同分布。
3.数据集增强、正则或者半监督学习等方式来解决小样本数据集的训练问题。
4.如何提升模型的稳定性?
1.正则化(L2, L1, dropout):模型方差大,很可能来自于过拟合。正则化能有效的降低模型的复杂度,增加对更多分布的适应性。
2.前停止训练:提前停止是指模型在验证集上取得不错的性能时停止训练。这种方式本质和正则化是一个道理,能减少方差的同时增加的偏差。目的为了平衡训练集和未知数据之间在模型的表现差异。
3.扩充训练集:正则化通过控制模型复杂度,来增加更多样本的适应性。
4.特征选择:过高的特征维度会使模型过拟合,减少特征维度和正则一样可能会处理好方差问题,但是同时会增大偏差。
5.你有哪些改善模型的思路?
1.数据角度
增强数据集。无论是有监督还是无监督学习,数据永远是最重要的驱动力。更多的类型数据对良好的模型能带来更好的稳定性和对未知数据的可预见性。对模型来说,“看到过的总比没看到的更具有判别的信心”。
2.模型角度
模型的容限能力决定着模型可优化的空间。在数据量充足的前提下,对同类型的模型,增大模型规模来提升容限无疑是最直接和有效的手段。
3.调参优化角度
如果你知道模型的性能为什么不再提高了,那已经向提升性能跨出了一大步。超参数调整本身是一个比较大的问题。一般可以包含模型初始化的配置,优化算法的选取、学习率的策略以及如何配置正则和损失函数等等。
4.训练角度
在越大规模的数据集或者模型上,诚然一个好的优化算法总能加速收敛。但你在未探索到模型的上限之前,永远不知道训练多久算训练完成。所以在改善模型上充分训练永远是最必要的过程。充分训练的含义不仅仅只是增大训练轮数。有效的学习率衰减和正则同样是充分训练中非常必要的手段。
6.LSTM 可以使用别的激活函数吗?
关于激活函数的选取,在LSTM 中,遗忘门、输入门和输出门使用Sigmoid 函数作为激活函数;在生成候选记忆时,使用双曲正切函数Tanh 作为激活函数。
值得注意的是,这两个激活函数都是饱和的,也就是说在输入达到一定值的情况下,输出就不会发生明显变化了。如果是用非饱和的激活函数,例如 ReLU,那么将难以实现门控的效果。
Sigmoid 函数的输出在0~1 之间,符合门控的物理定义。且当输入较大或较小时,其输出会非常接近1 或0,从而保证该门开或关。在生成候选记忆时,使用Tanh 函数,是因为其输出在−1~1 之间,这与大多数场景下特征分布是0 中心的吻合。此外,Tanh 函数在输入为0 附近相比Sigmoid 函数有更大的梯度,通常使模型收敛更快。
激活函数的选择也不是一成不变的,但要选择合理的激活函数。
7.如何提高深度学习系统的性能
1.提高模型的结构。
2.改进模型的初始化方式,保证早期梯度具有某些有益的性质,或者具
备大量的稀疏性,或者利用线性代数原理的优势。
3.择更强大的学习算法。
8.为什么需要激活函数?
1.激活函数对模型学习、理解非常复杂和非线性的函数具有重要作用。
2.激活函数可以引入非线性因素。如果不使用激活函数,则输出信号仅
是一个简单的线性函数。线性函数一个一级多项式,线性方程的复杂度有限,从数据中学习复杂函数映射的能力很小。没有激活函数,神
经网络将无法学习和模拟其他复杂类型的数据,例如图像、视频、音频、语音等。
3.激活函数可以把当前特征空间通过一定的线性映射转换到另一个空
间,让数据能够更好的被分类。
9.为什么激活函数需要非线性函数?
1.假若网络中全部是线性部件,那么线性的组合还是线性,与单独一个
线性分类器无异。这样就做不到用非线性来逼近任意函数。
2.使用非线性激活函数,以便使网络更加强大,增加它的能力,使它可
以学习复杂的事物,复杂的表单数据,以及表示输入输出之间非线性的复杂的任意函数映射。使用非线性激活函数,能够从输入输出之间生成非线性映射。
10.对fine-tuning (微调模型的理解),为什么要修改最后几层神经网络权值?
使用预训练模型的好处,在于利用训练好的SOTA 模型权重去做特征提取,可以节省我们训练模型和调参的时间。
至于为什么只微调最后几层神经网络权重,是因为:
(1). CNN 中更靠近底部的层(定义模型时先添加到模型中的层)编码的是更加通用的可复用特征,而更靠近顶部的层(最后添加到模型中的层)编
码的是更专业业化的特征。微调这些更专业化的特征更加有用,它更代表了新数据集上的有用特征。(2). 训练的参数越多,过拟合的风险越大。很多SOTA 模型拥有超过千万的参数,在一个不大的数据集上训练这么多参数是有过拟合风险的,除非你的数据集像 Imagenet 那样大。
11.移动端深度学习框架你知道哪些,你用过哪些?
各大公司开源了自己的移动端深度学习框架,其中包括:
•TensorFlow Lite(谷歌)
•Caffe2(Facebook)
•MACE(小米)
•paddle-mobile (百度)
•FeatherCNN(腾讯 AI lab)
•NCNN(腾讯优图)
•Core ML(苹果)
•PocketFlow(腾讯 AI lab)与其他不同,属于模型压缩框架
•xNN(阿里)