精华内容
下载资源
问答
  • 深度学习面试题100题
    千次阅读
    2020-06-18 21:04:47

    深度学习面试100题(第1-5题):经典常考点CNN https://zhuanlan.zhihu.com/p/39185031
    深度学习面试100题(第6-10题) https://zhuanlan.zhihu.com/p/39367605
    深度学习面试100题(第11-15题) https://zhuanlan.zhihu.com/p/39450005
    深度学习面试100题(第16-20题) https://zhuanlan.zhihu.com/p/39533743
    深度学习面试100题(第21-25题) https://zhuanlan.zhihu.com/p/39619083
    深度学习面试100题(第26-30题) https://zhuanlan.zhihu.com/p/39703500
    深度学习面试100题(第31-35题) https://zhuanlan.zhihu.com/p/39881106
    深度学习面试100题(第36-40题) https://zhuanlan.zhihu.com/p/39965633
    深度学习面试100题(第41-45题) https://zhuanlan.zhihu.com/p/40051944
    深度学习面试100题(第46-50题) https://zhuanlan.zhihu.com/p/40135356
    深度学习面试100题(第51-55题) https://zhuanlan.zhihu.com/p/40217488
    深度学习面试100题(第56-60题)https://zhuanlan.zhihu.com/p/40396143
    深度学习面试100题(第61-65题) https://zhuanlan.zhihu.com/p/40476884
    深度学习面试100题(第66-70题) https://zhuanlan.zhihu.com/p/41070455
    深度学习面试100题(第71-75题) https://zhuanlan.zhihu.com/p/41155891
    深度学习面试100题(第76-80题) https://zhuanlan.zhihu.com/p/41242084
    深度学习面试100题(第81-85题) https://zhuanlan.zhihu.com/p/41416712
    深度学习面试100题(第86-90题) https://zhuanlan.zhihu.com/p/41504057
    深度学习面试100题(第91-95题) https://zhuanlan.zhihu.com/p/41586262
    深度学习面试100题(第96-100题) https://zhuanlan.zhihu.com/p/41673959

    更多相关内容
  • 最新版的机器学习和深度学习面试题目,从牛客等各大网站整理剖析,整合整理,共300多道经典题目。 涉及机器学习和深度学习理论和实践等各方面的知识,底层的知识偏多一些!
  • 机器学习深度学习面试宝典
  • 机器学习、深度学习面试题合集(300+).pdf
  • 自我收集整理了一些深度学习面试指导题,自己学习的同时,分享出来给大家一同学习,有需要的同学可以参考学习,博客也会同步更新,这一章主要写的是有关卷积池化的特点,以及感受野的一些概率;
  • AI机器学习深度学习面试百题.pdf
  • 本文件描述了深度学习常见面试题类型及答案,可以对面试的同学有帮助
  • 深度学习面试

    千次阅读 2021-08-13 15:11:43
    深度学习面试题1.深度学习常用算法,及相应应用场景有哪些2.什么数据集不合适做深度学习3.如何确定CNN卷积核通道数和卷积输出层的通道数4.什么是卷积5.什么是CNN的池化层(pool)6.CNN常用的几个模型7.CNN的特点以及...

    1.深度学习常用算法,及相应应用场景有哪些

    • DNN是传统的全连接网络,可以用于广告点击率预估,推荐等。其使用embedding的方式将很多离散的特征编码到神经网络中,可以很大的提升结果
    • CNN主要用于计算机视觉(Computer Vision)领域,CNN的出现主要解决了DNN在图像领域中参数过多的问题。同时,CNN特有的卷积、池化、batch normalization、Inception、ResNet、DeepNet等一系列的发展也使得在分类、物体检测、人脸识别、图像分割等众多领域有了长足的进步。同时,CNN不仅在图像上应用很多,在自然语言处理上也颇有进展,现在已经有基于CNN的语言模型能够达到比LSTM更好的效果。在最新的AlphaZero中,CNN中的ResNet也是两种基本算法之一
    • GAN是一种应用在生成模型的训练方法,现在有很多在CV方面的应用,例如图像翻译,图像超清化、图像修复等等
    • RNN主要用于自然语言处理(Natural Language Processing)领域,用于处理序列到序列的问题。普通RNN会遇到梯度爆炸和梯度消失的问题。所以现在在NLP领域,一般会使用LSTM模型。在最近的机器翻译领域,Attention作为一种新的手段,也被引入进来

    2.什么数据集不合适做深度学习

    1、数据集太小,数据样本不足时,深度学习相对其它机器学习算法,没有明显优势。
    2、数据集没有局部相关特性,目前深度学习表现比较好的领域主要是图像/语音/自然语言处理等领域,这些领域的一个共性是局部相关性。图像中像素组成物体,语音信号中音位组合成单词,文本数据中单词组合成句子,这些特征元素的组合一旦被打乱,表示的含义同时也被改变。对于没有这样的局部相关性的数据集,不适于使用深度学习算法进行处理。举个例子:预测一个人的健康状况,相关的参数会有年龄、职业、收入、家庭状况等各种元素,将这些元素打乱,并不会影响相关的结果

    3.如何确定CNN卷积核通道数和卷积输出层的通道数

    CNN的卷积核通道数 = 卷积输入层的通道数;CNN的卷积输出层通道数 = 卷积核的个数
    在这里插入图片描述

    4.什么是卷积

    对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作
    在这里插入图片描述

    5.什么是CNN的池化层(pool)

    池化,简言之,即取区域平均或最大
    在这里插入图片描述
    上图所展示的是取区域最大,即上图左边部分中 左上角2x2的矩阵中6最大,右上角2x2的矩阵中8最大,左下角2x2的矩阵中3最大,右下角2x2的矩阵中4最大,所以得到上图右边部分的结果:6 8 3 4。

    6.CNN常用的几个模型

    • LeNet5传统的CNN模型
    • AlexNet引入了Relu和dropout,引入数据增强、池化相互之间覆盖,三个卷积一个最大池化+三个全连接层
    • VGGNet采用11和33的卷积核以及2*2的最大池化层使得层数变得更深,常用VGGNet16和VGGNet19
    • Google Inception Net去除了最后CNN的全连接层,用一个全局的平均池化层来取代它,引入Inception Module,这是一个4个分支结合的结构,所有分支都用到了1*1的卷积
    • ResNet引入高速公路结构

    7.CNN的特点以及优势

    CNN使用范围是具有局部空间相关性的数据,比如图像,自然语言,语音

    局部连接:可以提取局部特征。
    权值共享:减少参数数量,因此降低训练难度(空间、时间消耗都少了)。可以完全共享,也可以局部共享(比如对人脸,眼睛鼻子嘴由于位置和样式相对固定,可以用和脸部不一样的卷积核)

    降维:通过池化或卷积stride实现。
    多层次结构:将低层次的局部特征组合成为较高层次的特征。不同层级的特征可以对应不同任务。

    8.卷积神经网络CNN中池化层作用

    保留主要的特征同时减少参数和计算量,防止过拟合,提高模型泛化能力

    9.常见的激活函数,激活函数有什么作用

    Sigmoid
    Sigmoid函数能够吧输入的连续的实值变换成为0和1之间的输出,特别地,如果是非常大的负数,那么输出就是0;如果是非常大的正数,则经过它的输出则是1
    ReLU
    R e l u = m a x ( 0 , x ) Relu=max(0,x) Relu=max(0,x)
    目前ReLU是最常使用的一个激活函数,它实质上就是一个取最大值函数,但是它并不是全区间可导的,不过在一般情况下可以取sub-gradient。ReLU虽然简单,但却是近几年的重要成果,它在正区间内解决了梯度消失的问题,同时因为在使用它的过程中只需要判断输入是否大于零,所以它具有较快的计算速度,收敛速度远快于sigmoid和tanh函数
    Tanh
    t a n h ( x ) = e x − e − x e x + e − x tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} tanh(x)=ex+exexex
    Tanh函数是在其函数表达式的基础上经过放大或缩小处理后的结果,Tanh函数在一定程度上改善了sidmoid函数,但是梯度消失的问题仍然没有完全避免
    Leaky ReLU
    f ( x ) = m a x ( α x , x ) f(x)=max(\alpha x,x) f(x)=max(αx,x)
    为了解决DeadReLU Problem, 提出了将ReLU在(-∞,0)区间内为αx,而非是0,通常α=0.001。Leaky ReLU继承了ReLU的优点,同时也进一步解决了Dead ReLU的问题,但是实际情况中,LeakyReLU并不一定总比ReLU的效果好
    ELU
    f ( x ) = { x x > 0 a ( e x − 1 ) o t h e r w i s e f(x)=\left\{ \begin{array}{lr} x & x > 0\\ a(e^x-1) & otherwise \end{array} \right. f(x)={xa(ex1)x>0otherwise
    ELU的提出是为了解决ReLU存在的Dead ReLU问题,它继承了ReLU的优点同时输出的均值接近于0
    在这里插入图片描述
    激活函数作用:非线性变换激活函数的主要作用是使网络具有非线性拟合能力,如果没有激活函数,那么神经网络只能拟合线性映射,即便是有再多的隐藏层,整个网络跟单层神经网络是等价的。因此,只有加入激活函数后,神经网络才具备了非线性的学习能力

    10.简述一下sigmoid函数

    常用的非线性激活函数有sigmoid、tanh、relu等等,前两者sigmoid/tanh比较常见于全连接层,后者relu常见于卷积层。这里先简要介绍下最基础的sigmoid函数(btw,在本博客中SVM那篇文章开头有提过)。
    sigmoid的函数表达式如下
    g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1
    其中z是一个线性组合,比如z可以等于:b + w1x1 + w2x2。通过代入很大的正数或很小的负数到g(z)函数中可知,其结果趋近于0或1。
    因此,sigmoid函数g(z)的图形表示如下( 横轴表示定义域z,纵轴表示值域g(z) ):
    在这里插入图片描述
    也就是说,sigmoid函数的功能是相当于把一个实数压缩至0到1之间。当z是非常大的正数时,g(z)会趋近于1,而z是非常小的负数时,则g(z)会趋近于0。

    11.CNN关键层有哪些

    关键层有:

    • 输入层,对数据去均值,做data augmentation等工作
    • 卷积层,局部关联抽取feature
    • 激励层,非线性变化(也就是常说的激活函数)
    • 池化层,下采样
    • 全连接层,增加模型非线性
    • BN层,缓解梯度弥散

    12.什么是梯度爆炸

    误差梯度是神经网络训练过程中计算的方向和数量,用于以正确的方向和合适的量更新网络权重。
    在深层网络或循环神经网络中,误差梯度可在更新中累积,变成非常大的梯度,然后导致网络权重的大幅更新,并因此使网络变得不稳定。在极端情况下,权重的值变得非常大,以至于溢出,导致 NaN 值。
    网络层之间的梯度(值大于 1.0)重复相乘导致的指数级增长会产生梯度爆炸

    13.梯度爆炸会引发什么问题

    在深度多层感知机网络中,梯度爆炸会引起网络不稳定,最好的结果是无法从训练数据中学习,而最坏的结果是出现无法再更新的 NaN 权重值。
    梯度爆炸导致学习过程不稳定,在循环神经网络中,梯度爆炸会导致网络不稳定,无法利用训练数据学习,最好的结果是网络无法学习长的输入序列数据

    14.如何确定是否出现梯度爆炸

    训练过程中出现梯度爆炸会伴随一些细微的信号,如:

    • 模型无法从训练数据中获得更新(如低损失)。
    • 模型不稳定,导致更新过程中的损失出现显著变化。
    • 训练过程中,模型损失变成 NaN。

    以下是一些稍微明显一点的信号,有助于确认是否出现梯度爆炸问题。

    • 训练过程中模型梯度快速变大。
    • 训练过程中模型权重变成 NaN 值。
    • 训练过程中,每个节点和层的误差梯度值持续超过 1.0

    15.如何修复梯度爆炸问题

    重新设计网络模型

    在深度神经网络中,梯度爆炸可以通过重新设计层数更少的网络来解决。
    使用更小的批尺寸对网络训练也有好处,在循环神经网络中,训练过程中在更少的先前时间步上进行更新(沿时间的截断反向传播,truncated Backpropagation through time)可以缓解梯度爆炸问题。

    使用 ReLU 激活函数

    在深度多层感知机神经网络中,梯度爆炸的发生可能是因为激活函数,如之前很流行的 Sigmoid 和 Tanh 函数。
    使用 ReLU 激活函数可以减少梯度爆炸。采用 ReLU 激活函数是最适合隐藏层的新实践。

    使用长短期记忆网络

    在循环神经网络中,梯度爆炸的发生可能是因为某种网络的训练本身就存在不稳定性,如随时间的反向传播本质上将循环网络转换成深度多层感知机神经网络,使用长短期记忆(LSTM)单元和相关的门类型神经元结构可以减少梯度爆炸问题。
    采用 LSTM 单元是适合循环神经网络的序列预测的最新最好实践。

    使用梯度截断(Gradient Clipping)

    在非常深且批尺寸较大的多层感知机网络和输入序列较长的 LSTM 中,仍然有可能出现梯度爆炸。如果梯度爆炸仍然出现,你可以在训练过程中检查和限制梯度的大小。这就是梯度截断。
    处理梯度爆炸有一个简单有效的解决方案:
    如果梯度超过阈值,就截断它们,具体来说,检查误差梯度的值是否超过阈值,如果超过,则截断梯度,将梯度设置为阈值。梯度截断可以一定程度上缓解梯度爆炸问题(梯度截断,即在执行梯度下降步骤之前将梯度设置为阈值)。
    在 Keras 深度学习库中,你可以在训练之前设置优化器上的 clipnorm 或 clipvalue 参数,来使用梯度截断。
    默认值为 clipnorm=1.0 、clipvalue=0.5。

    使用权重正则化(Weight Regularization)

    如果梯度爆炸仍然存在,可以尝试另一种方法,即检查网络权重的大小,并惩罚产生较大权重值的损失函数。该过程被称为权重正则化,通常使用的是 L1 惩罚项(权重绝对值)或 L2 惩罚项(权重平方)。
    对循环权重使用 L1 或 L2 惩罚项有助于缓解梯度爆炸。
    在 Keras 深度学习库中,你可以通过在层上设置 kernel_regularizer 参数和使用 L1 或 L2 正则化项进行权重正则化。

    16.什么是RNN

    RNN的目的使用来处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如,你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。

    RNN之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。

    理论上,RNN能够对任何长度的序列数据进行处理。但是在实践中,为了降低复杂性往往假设当前的状态只与前面的几个状态相关,下图便是一个典型的RNN:
    在这里插入图片描述
    RNN包含输入单元(Input units),输入集标记为{x0,x1,…,xt,xt+1,…},而输出单元(Output units)的输出集则被标记为{y0,y1,…,yt,yt+1.,…}。RNN还包含隐藏单元(Hidden units),我们将其输出集标记为{s0,s1,…,st,st+1,…},这些隐藏单元完成了最为主要的工作。你会发现,在图中:有一条单向流动的信息流是从输入单元到达隐藏单元的,与此同时另一条单向流动的信息流从隐藏单元到达输出单元。在某些情况下,RNN会打破后者的限制,引导信息从输出单元返回隐藏单元,这些被称为“Back Projections”,并且隐藏层的输入还包括上一隐藏层的状态,即隐藏层内的节点可以自连也可以互连。
    在这里插入图片描述

    1. xt表示第t,t=1,2,3…步(step)的输入。比如,x1为第二个词的one-hot向量(根据上图,x0为第一个词);
    2. st为隐藏层的第t步的状态,它是网络的记忆单元。st根据当前输入层的输出与上一步隐藏层的状态进行计算。st=f(Uxt+Wst−1),其中f一般是非线性的激活函数,如tanh或ReLU,在计算s0时,即第一个单词的隐藏层状态,需要用到s−1,但是其并不存在,在实现中一般置为0向量;
    3. ot是第t步的输出,如下个单词的向量表示,ot=softmax(Vst)。

    17.在神经网络中,有哪些办法防止过拟合

    1. Dropout
    2. 加L1/L2正则化
    3. BatchNormalization
    4. 网络bagging
    5. 提取终止训练
    6. 数据增强

    18.如何解决深度学习中模型训练效果不佳的情况

    (1)选择合适的损失函数(choosing proper loss )
    神经网络的损失函数是非凸的,有多个局部最低点,目标是找到一个可用的最低点。非凸函数是凹凸不平的,但是不同的损失函数凹凸起伏的程度不同,例如下述的平方损失和交叉熵损失,后者起伏更大,且后者更容易找到一个可用的最低点,从而达到优化的目的。

    • Square Error(平方损失)
    • Cross Entropy(交叉熵损失)

    (2)选择合适的Mini-batch size
    采用合适的Mini-batch进行学习,使用Mini-batch的方法进行学习,一方面可以减少计算量,一方面有助于跳出局部最优点。因此要使用Mini-batch。更进一步,batch的选择非常重要,batch取太大会陷入局部最小值,batch取太小会抖动厉害,因此要选择一个合适的batch size。

    (3)选择合适的激活函数(New activation function)
    使用激活函数把卷积层输出结果做非线性映射,但是要选择合适的激活函数。

    • Sigmoid函数是一个平滑函数,且具有连续性和可微性,它的最大优点就是非线性。但该函数的两端很缓,会带来猪队友的问题,易发生学不动的情况,产生梯度弥散。
    • ReLU函数是如今设计神经网络时使用最广泛的激活函数,该函数为非线性映射,且简单,可缓解梯度弥散。

    (4)选择合适的自适应学习率(apdative learning rate)

    • 学习率过大,会抖动厉害,导致没有优化提升
    • 学习率太小,下降太慢,训练会很慢

    (5)使用动量(Momentum)
    在梯度的基础上使用动量,有助于冲出局部最低点。

    如果以上五部分都选对了,效果还不好,那就是产生过拟合了,可使如下方法来防止过拟合,分别是

    1. 早停法(earyly stoping)。早停法将数据分成训练集和验证集,训练集用来计算梯度、更新权重和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。
    2. 权重衰减(Weight Decay)。到训练的后期,通过衰减因子使权重的梯度下降地越来越缓。
    3. Dropout。Dropout是正则化的一种处理,以一定的概率关闭神经元的通路,阻止信息的传递。由于每次关闭的神经元不同,从而得到不同的网路模型,最终对这些模型进行融合。
    4. 调整网络结构(Network Structure)
    展开全文
  • 深度学习面试八股文】-- 1-5

    千次阅读 多人点赞 2021-06-17 22:11:45
    最近会更新一个深度学习面试中常见问题,及相应的答案,希望对找工作的朋友有所帮助,总结不易,欢迎持续关注。公众号:羽峰码字,欢迎来撩。 目录 1.如何处理样本不均衡问题 2.数据增强方法 3.过拟合的解决办法 4. ...

    最近会更新一个深度学习面试中常见问题,及相应的答案,希望对找工作的朋友有所帮助,总结不易,欢迎持续关注。公众号:羽峰码字,欢迎来撩。

    目录

    1.如何处理样本不均衡问题

    2.数据增强方法

    3.过拟合的解决办法

    4. 正则化

    5. 激活函数

    6.梯度爆炸,梯度消失,梯度弥散是什么,为什么会出现这种情况以及处理办法


    1.如何处理样本不均衡问题

    a. 样本的过采样和欠采样

    欠采样 :随机删除观测数量足够多的类,使得两个类别间的相对比例是显著的。虽然这种方法使用起来非常简单,但很有可能被我们删除了的数据包含着预测类的重要信息。

    过采样对于不平衡的类别,我们使用拷贝现有样本的方法随机增加观测数量。理想情况下这种方法给了我们足够的样本数,但过采样可能导致过拟合训练数据。

    过采样和欠采样结合

    合成采样( SMOTE ):

        1. 基于距离度量的方式计算两个或者多个稀有样本之间的相似性

        2. 选择其中一个样本作为基础样本

        3. 再在邻居样本中随机选取一定数量的样本对那个基础样本的一个属性进行噪声,每次处理一个属性。通过这样的方式产生新数据。

    b. 使用多分类器进行分类

     方法一中介绍的过采样,欠采样,都存在相应的问题。

      过采样:可能会存在过拟合问题。(可以使用SMOTE算法,增加随机的噪声的方式来改善这个问题)

      欠采样:可能会存在信息减少的问题。因为只是利用了一部分数据,所以模型只是学习到了一部分模型。

      有以下两种方法可以解决欠采样所带来的问题。

      方法一:模型融合 (bagging的思想 )

      思路:从丰富类样本中随机的选取(有放回的选取)和稀有类等量样本的数据。和稀有类样本组合成新的训练集。这样我们就产生了多个训练集,并且是互相独立的,然后训练得到多个分类器。

         若是分类问题,就把多个分类器投票的结果(少数服从多数)作为分类结果。

         若是回归问题,就将均值作为最后结果。

      方法二:增量模型 (boosting的思想)

      思路:使用全部的样本作为训练集,得到分类器L1

         从L1正确分类的样本中和错误分类的样本中各抽取50%的数据,即循环的一边采样一个。此时训练样本是平衡的。训练得到的分类器作为L2.

         从L1和L2分类结果中,选取结果不一致的样本作为训练集得到分类器L3.

         最后投票L1,L2,L3结果得到最后的分类结果。

    c. 将二分类问题转成其他问题

    可以将不平衡的二分类问题转换成异常点检测,或者一分类问题(可使用one-class svm建模)

    d.改变正负样本在模型中的权重

    使用代价函数学习得到每个类的权值,大类的权值小,小类的权值大。刚开始,可以设置每个类别的权值与样本个数比例的倒数,然后可以使用过采样进行调优。

    不平衡类别会造成问题有两个主要原因

    1.对于不平衡类别,我们不能得到实时的最优结果,因为模型/算法从来没有充分地考察隐含类。

    2.它对验证和测试样本的获取造成了一个问题,因为在一些类观测极少的情况下,很难在类中有代表性。

    不平衡问题的评价指标

      准确度这个评价指标在类别不均衡的分类任务中并不能work。几个比传统的准确度更有效的评价指标:

      混淆矩阵(Confusion Matrix):使用一个表格对分类器所预测的类别与其真实的类别的样本统计,分别为:TP、FN、FP与TN。
      精确度(Precision)
      召回率(Recall)
      F1得分(F1 Score):精确度与找召回率的加权平均。
      特别是:

      Kappa (Cohen kappa)
      ROC曲线(ROC Curves):见Assessing and Comparing Classifier Performance with ROC Curves

    此问题引用于:https://www.cnblogs.com/lyr2015/p/8711120.html

    2.数据增强方法

    几何变换:翻转,旋转,裁剪,变形,缩放

    颜色变换:噪声、模糊、颜色变换、擦除、填充

    其他:SMOTE,SamplePairing,mixup,mixup,上下采样,增加不同惩罚

    3.过拟合的解决办法

    什么是过拟合

    过拟合(overfitting)是指在模型参数拟合过程中的问题,由于训练数据包含抽样误差,训练时,复杂的模型将抽样误差也考虑在内,将抽样误差也进行了很好的拟合。

    产生过拟合根本原因:

    观察值与真实值存在偏差, 训练数据不足,数据太少,导致无法描述问题的真实分布, 数据有噪声, 训练模型过度,导致模型非常复杂

    什么是欠拟合:训练的模型在训练集上面的表现很差,在验证集上面的表现也很差

    原因:训练的模型太简单,最通用的特征模型都没有学习到

    解决办法:

    1、正则化

    2、剪枝处理

    3、提前终止迭代(Early stopping)

    4、权值共享

    5、增加噪声

    6、Batch Normalization

    7、Bagging和Boosting

    8、Dropout

    4. 正则化

    正则化的原理:在损失函数上加上某些规则(限制),缩小解空间,从而减少求出过拟合解的可能性。

    机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作 l1-norm 和l2-norm,中文称作 L1正则化 和 L2正则化,或者 L1范数 和 L2范数。

    1. L0、L1、L2正则化

    L0 范数:向量中非0元素的个数。

    L1 范数 (Lasso Regularization):向量中各个元素绝对值的和。

    L2 范数(Ridge Regression):向量中各元素平方和再求平方根。

    2. L1、L2正则化区别,为什么稀疏的解好?

    L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。

    实现参数的稀疏有什么好处吗?

    一个好处是可以简化模型,避免过拟合。另一个好处是参数变少可以使整个模型获得更好的可解释性。

    3.L1正则化和L2正则化的作用

    L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择。

    L2正则化可以防止模型过拟合(overfitting);一定程度上,L1也可以防止过拟合。

    4.正则化有哪几种,分别有什么作用?

    L0 范数和 L1 范数都能够达到使参数稀疏的目的,但 L0 范数更难优化求解,L1 范数是 L0 范数的最优凸近似,而且它比 L0 范数要容易优化求解。

    L2 范数不但可以防止过拟合,提高模型的泛化能力,还可以让我们的优化求解变得稳定和快速。L2 范数对大数和 outlier 更敏感。

    L1、L2范数,L1趋向于0,但L2不会,为什么?

    L1范数更容易产生稀疏的权重,L2范数更容易产生分散的权重

    5. 激活函数

    在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数(又称激励函数)。

    a. 激活函数的意义如下

    ①模拟生物神经元特性,接受输入后通过一个阈值模拟神经元的激活和兴奋并产生输出;②为神经网络引入非线性,增强神经网络的表达能力;③导出神经网络最后的结果(在输出层时)。

    b. 激活函数至少应该满足以下几点:

    • 可微性:因为优化方法是基于梯度的,这个性质是必须的
    • 单调性:当激活函数是单调的时候,能够保证单层网络是凸函数
    • 输出值的范围:激活函数的输出值的范围可以有限也可以无限。当输出值是有限的时候,基于梯度的优化方法会更加稳定,因为特征的表示受有限权值的影响更加显著;当输出值是无限的时候,模型的训练会更加高效,不过在这种情况下,一般需要更小的learning rate

    c. 常用的激活函数: 

    sigmoid,tanh,ReLU, leaky ReLU, PReLU, ELU,random ReLU,Swish, SoftPlus, Maxout等。

    d. sigmoid和relu的优缺点

    Relu优点:(1)relu函数在大于0的部分梯度为常数,所以不会产生梯度弥散现象.。而对于sigmod函数,在正负饱和区的梯度都接近于0,可能会导致梯度消失现象。(2)Relu函数的导数计算更快,所以使用梯度下降时比Sigmod收敛起来要快很多。

    Relu缺点:Relu死亡问题。当 x 是小于 0 的时候,那么从此所以流过这个神经元的梯度将都变成 0;这个时候这个 ReLU 单元在训练中将死亡(也就是参数无法更新),这也导致了数据多样化的丢失(因为数据一旦使得梯度为 0,也就说明这些数据已不起作用)。

    Sigmod优点:具有很好的解释性,将线性函数的组合输出为0,1之间的概率。

    Sigmodu缺点:(1)激活函数计算量大,反向传播求梯度时,求导涉及除法。(2)反向传播时,在饱和区两边导数容易为0,即容易出现梯度消失的情况,从而无法完成深层网络的训练。

    e. softmax和sigmoid在多分类任务中的优劣

    多个sigmoid与一个softmax都可以进行多分类.如果多个类别之间是互斥的,就应该使用softmax,即这个东西只可能是几个类别中的一种。如果多个类别之间不是互斥的,使用多个sigmoid。

    6.梯度爆炸,梯度消失,梯度弥散是什么,为什么会出现这种情况以及处理办法

    一、梯度弥散


    1.1 什么是梯度弥散?
    梯度弥散就是梯度消失,导数为0

    1.2 梯度弥散造成的问题
    靠近输出层的隐藏层梯度大,参数更新快,所以很快就会收敛;
    靠近输入层的隐藏层梯度小,参数更新慢,几乎就和初始状态一样,随机分布。


    由于神经网络前几层的权重更新过慢,或者没有更新,从而导致了整个网络
    的学习性能下降,达不到训练的标准。

    1.3 梯度弥散造成的原因
    激活函数的"饱和"。

    样本中的奇异样本引起模型无法收敛。

    使用反向传播算法传播梯度的时候,随着网络传播深度的增加,
    梯度的幅度会急剧减小,会导致浅层神经元的权重更新非常缓慢。
    不能有效学习。

    从数学的角度看,是因为梯度连乘的问题,是梯度消失问题的所在。

    学习率过大而导致模型震荡无法收敛。

    1.4 梯度弥散的解决办法
    使用ReLU,Leaky_ Relu等 激活函数替代Sigmoid。
    网络层中的数据进行 batch normalization(批量标准化)。
    数据归一化、数据清洗。
    使用更好的网络,比如ResNet。
    降低学习率。


    二、梯度爆炸
    1.1 什么是梯度爆炸?
    梯度的衰减是有连续乘法导致的,如果在连续乘法中出现一个非常大的值,最后计算出的梯度就会很大,就想当优化到断崖处时,会获得一个很大的梯度值, 如果以这个梯度值进行更新,那么这次迭代的步长就很大,可能会一下子飞出了合理的区域。

    1.2 梯度爆炸造成的问题
    ● 前面网络层的梯度通过训练变大,后面网络层的梯度指数级增大。
    ● 神经网络模型无法收敛,达不到训练结果。
    1.3 梯度爆炸造成的原因
    神经网络初始化的权值过大,每层网络反向求导的结果都大于1,
    这样梯度相乘就会变得更大。

    学习率非常大而导致梯度爆炸

    1.4 梯度爆炸的解决方式
    重设初始化权值(指定正态分布采样)
    学习率调小

     

    持续更新中,敬请期待。。。

    公众号:羽峰码字,欢迎关注

    展开全文
  • 由于找工作需要,搜集了一些常见的基础机器学习与深度学习面试题,希望对你有所帮助。 参考博客: https://zhuanlan.zhihu.com/p/45091568 https://www.cnblogs.com/hanxiaosheng/p/9934237.html 1.无监督和有监督...

    由于找工作需要,搜集了一些常见的基础机器学习与深度学习面试题,希望对你有所帮助。
    参考博客:
    https://zhuanlan.zhihu.com/p/45091568
    https://www.cnblogs.com/hanxiaosheng/p/9934237.html

    1.无监督和有监督算法的区别?

    • 1、无监督学习:对没有分类的训练样本进行学习,以发现训练样本集中的结构性知识,所有的分类是未知的,因此,训练样本的歧义性高。聚类就是典型的无监督学习。
    • 2、有监督学习:对有分类的训练样本进行学习,以尽可能对训练样本集外的数据进行分类预测,所有的分类是已知的,因此,训练样本的歧义性低。

    2.什么是偏差和方差?

    • 偏差:度量了学习算法的期望预测和真实结果的偏离程度,刻画了学习算法本身的拟合能力。
    • 方差:度量了同样大小的训练集的变动所导致的学习性能的变化,刻画了数据扰动所造成的影响
    • 偏差和方差一般称为bias和variance,一般训练程度越高,偏差越小,方差越大。如果偏差较大,方差较小,此时一般称为欠拟合;偏差较小,方差较大称为过拟合。

    3.为什么会产生欠拟合和过拟合,有哪些方法可以预防欠拟合和过拟合?

    • 在机器学习中,将学习器在训练集上的误差称为训练误差或者经验误差,在新样本上的误差称为泛化误差,显然我们希望得到泛化误差小的学习器。然而,当学习器将训练样本学的太好的时候,往往可能把训练样本自身的特点当做了潜在样本具有的一般性质。这样就会导致泛化性能下降,称之为过拟合;欠拟合一般指对训练样本的一般性质尚未学习好,在训练集上仍然有较大的误差。
    • 欠拟合:一般增加模型的复杂度,增加决策树的分支,增加神经网络中的训练次数等。
    • 过拟合:一般增加样本数量,对样本进行降维,降低模型复杂度,利用L1,L2正则化,利用交叉验证,early stopping(早停法)。

    4.如何解决类别不平衡问题?

    • 1、扩充数据集
    • 2、数据重新采样
    • 3、改变评价指标等

    5.如何进行特征选择?

    • 特征选择是一个重要的数据预处理过程,主要有两个原因,首先在现实任务中我们会遇到维数灾难的问题(样本密度非常稀疏),若能从中选择一部分特征,那么这个问题能大大缓解,另外就是去除不相关特征会降低学习任务的难度,增加模型的泛化能力。冗余特征指该特征包含的信息可以从其他特征中推演出来,但是这并不代表该冗余特征一定没有作用,例如在欠拟合的情况下也可以用过加入冗余特征,增加简单模型的复杂度
    • 常见的特征选择方式有过滤式(filter)、包裹式(wrapper)和嵌入式(embedding)。Filter类型先对数据集进行特征选择,再训练学习器。Wrapper直接把最终学习器的性能作为特征子集的评价准则,一般通过不断候选子集,然后利用cross-validation过程更新候选特征,通常计算量比较大。嵌入式特征选择将特征选择过程和训练过程融为了一体,在训练过程中自动进行了特征选择,例如L1正则化更易于获得稀疏解,而L2正则化更不容易过拟合。L1正则化可以通过PGD,近端梯度下降进行求解。

    6.无监督学习中存在过拟合吗?

    • 存在。我们可以使用无监督学习的某些指标或人为地去评估模型性能,以此来判断是否过拟合。

    7.什么是k折交叉验证?关于它需要注意什么?

    • 将原始数据集划分为k个子集,将其中一个子集作为验证集,其余作为训练集,如此训练一轮称为一次交叉验证。这样重复k次,每个子集都做一次验证集,得到k个模型,加权平均k个模型的结果作为评估整体模型的依据。
    • 需要注意的是k越大,不一定效果越好,而且越大的K会加大训练时间;在选择k时,需要考虑最小化数据集之间的方差。

    8.L1和L2范数的区别

    • L1范数:向量中各个元素绝对值之和
    • L2范数:向量中各个元素平方和的开二次方根

    9.分类型模型评判的指标

    • 1、混淆矩阵:也叫误差矩阵
    • 2、ROC曲线
    • 3、AUC面积

    10.简述一下混淆矩阵及各项指标

    • 混淆矩阵是评判模型结果的指标,属于模型评估的一部分。多用于判断分类器的优劣,适用于分类型的数据模型。
    • TP(True positive):真实值是positive,模型认为是positive的数量
    • FN(false negative):真实值是positive,模型认为是negative的数量
    • FP(false positive):真实值是negative,模型认为是positive
    • TN(true negabive):真实值是negative,模型认为是negative
      混淆矩阵
    • 准确率(Accuracy)、灵敏度(Sensitivity)、特异度(Specificity)、召回率(Recall)
      公式汇总
    • F1 score:F1 = 2PR/(P+R)
      P代表precision,R代表recall
      F1取值范围从0到1,1代表模型的输出最好,0代表模型的输出结果最差。

    12.ROC曲线

    • ROC曲线全称为受试者工作特征曲线(Receiver Operating Characteristic Curve),它就是一张图上的曲线,通过曲线的形状来判定模型的好坏。
    • 横轴(false positive rate):FPR = FP/(FP+TN)
    • 纵轴(true positive rate):TPR = TP/(TP+FN)
    • 如果曲线更靠近左上角,则模型分类的准确度越高,模型效果越好
    • ROC曲线上的一系列点,代表选取一系列的阈值产生的结果。

    13.AUC面积

    • AUC(Area Under Curve),即曲线下的面积,它就是ROC曲线下的面积是多大。AUC越大,预测效果越好。

    14.SVM如何解决多分类问题?

    • 多个二分类器组合。一对一、一对多、多对多

    15.列举你知道的聚类算法

    • 层次聚类,k均值聚类,DVSCAN算法、OPTICS算法、谱聚类

    16.k均值算法中,初始类中心怎么确定

    • 随机选择K个样本作为类中心,将样本随机划分成K个子集然后计算类中心

    17.解释L1和L2正则化的作用

    • L1正则化是在代价函数后面加上λ||θ||,L2正则化是在代价函数后面增加了λ||θ||2,两者都起到一定的过拟合作用,两者都对应一定的先验知识,L1对应拉普拉斯分布,L2对应高斯分布,L1偏向于参数稀疏性,L2偏向于参数分布较为密集。

    18.神经网络的原理,如何进行训练?

    • 一般而言神经网络是由单个的神经元和不同神经元之间的连接构成,不同的结构构成不同的神经网络。最常见的神经网络一般称为多层前馈神经网络,除了输入和输出层,中间隐藏层的个数被称为神经网络的层数。BP算法是训练神经网络中最著名的算法,其本质是梯度下降和链式法则。

    19.用梯度下降训练神经网络的参数,为什么参数有时会被训练为nan值?

    • 1、输入数据本身存在nan值
    • 2、或者梯度爆炸(可以降低学习率,或者设置梯度的阈值)

    20.卷积神经网络CNN中池化层有什么作用?

    • 减小图像尺寸,即数据降维,缓解过拟合,保持一定程度的旋转和平移不变性。

    21.请列举几种常见的激活函数。激活函数有什么用?

    • sigmoid、relu、tanh。非线性化

    22.利用梯度下降法训练神经网络,发现模型loss不变,可能有哪些问题?怎么解决?

    • 可能是梯度消失了,表示神经网络迭代更新时,有些权值不更新了。
    • 可以改变激活函数,改变权值的初始化等。

    23.神经网络中的dropout的作用?具体是怎么实现的?

    • 防止过拟合用的。每次训练,都对每个神经网络单元,按一定概率临时丢弃。

    24.残差网络为什么能做到很深层?

    • 神经网络在反向传播过程中要不断地传播梯度,而当网络层数加深时,梯度在逐层传播过程中会逐渐衰减,导致无法对前面网络层的权重进行有效的调整。残差网络中,加入了short connections为梯度带来了一个直接向前面层的传播通道,缓解了梯度的减小问题。

    25.相比sigmoid激活函数,Relu激活函数有什么优势?

    • 1、防止梯度消失(sigmoid的导数只有在0附近的时候有较好的激活性,在正负饱和区的梯度都接近于0)
    • 2、Relu的输出具有稀疏性
    • 3、Relu函数简单,计算速度快

    26.卷积神经网络中空洞卷积的作用是什么?

    • 空洞卷积也叫扩张卷积,在保持参数个数不变的情况下增大了卷积核的感受野,同时它可以保证输出的特征映射(feature map)的大小保持不变。

    27.解释下卷积什么网络中感受野的概念

    • 感受野(receptive field):卷积神经网络每一层输出的特征图上的像素点在原始图像上映射的区域大小。

    28.梯度爆炸的解决方案

    • BN(Batch Normalization),批量归一化
    • 正则化
    • 参数初始化
    • 减少层数
    • 换激活函数,如Relu
    • 引入gradient clipping(梯度截断)。通过梯度截断,将梯度约束在一个范围内,这样不会使得梯度过大。

    29.深度学习模型参数初始化都有哪些方法?

    • 1、高斯分布
    • 2、Xavier
    • 3、MSRA
    • 4、uniform

    30.注意力机制在深度学习中的作用是什么?

    • 注意力机制从本质上讲和人类的选择性视觉注意力机制类似,核心目标是从大量信息中选择地筛选出少量重要信息并聚焦到这些重要信息上,忽略大多不重要的信息。

    31.神经网络参数共享是指什么?

    • 权值共享就是说,用一个卷积核去卷积一张图,这张图每个位置是被同样数值的卷积核操作的,权重是一样的,也及时参数共享。

    32.如何提高小型网络的精度?

    • 1、模型蒸馏技术
    • 2、利用AutoML进行网络结构的优化,可以将网络计算复杂度作为约束条件之一,得到更优的结构。

    33.什么是神经网络的梯度消失问题,为什么会有梯度消失问题?什么办法能缓解梯度消失问题?

    • 在反向传播算法计算每一层的误差项的时候,需要乘以本层激活函数的导数值,如果导数值接近于0,则多次乘积之后误差项会趋近于0,而参数的梯度值通过误差项计算,这会导致参数的梯度值接近于0,无法用梯度下降法来有效的更新参数的值。
    • 改用ResNet;BN(Batch Normalization),批量归一化;减少层数;使用Relu函数。

    34.列举你所知道的神经网络中使用的损失函数

    • 常用的有交叉熵、欧氏距离、对比损失、合页损失,一般情况下交叉熵更容易收敛到一个更好的解。

    35.1x1卷积有什么用途?

    • 通道降维,保证卷积神经网络可以接受任何尺寸的输入数据

    36.随机梯度下降法,在每次迭代时能保证目标函数值一定下降吗?为什么?

    • 不能,每次迭代时目标函数不一样

    37.解释梯度下降法中动量项的作用

    • 利用之前迭代时的梯度值,减小震荡

    38.为什么现在倾向于用小尺寸的卷积核?

    • 用多个小卷积核串联可以有大卷积核同样的能力,而且参数更少,另外有更多次的激活函数作用,增强非线性

    39.解释反卷积的原理和用途

    • 反卷积即转置卷积,正向传播时乘以卷积核的转置矩阵,反向传播时乘以卷积核矩阵
    • 用途:实现上采样;近似重构输入数据,卷积层可视化。

    40.什么样的函数可以用作激活函数?

    • 非线性、几乎处处可导、单调

    41.什么是共线性?跟过拟合有啥关联?

    • 共线性:多变量线性回归中,变量之间由于存在高度相关关系而使回归估计不准确,共线性会造成冗余,导致过拟合。
    • 解决办法:排除变量的相关性、加入权重正则

    42.softmax回归训练时的目标函数是凸函数吗?

    • 是,但是不止一个全局最优解

    43.什么是鞍点问题?

    • 梯度为0,Hessian矩阵不定的点,不是极值点。

    44.待续。。

    展开全文
  • 深度学习面试题.doc

    2020-08-06 22:17:11
    面试者提供一份高效的面试经,涉及到深度学习的各个方面,有丰富的图形化界面,以提问的方式让你回顾经典知识
  • 深度学习面试100题

    千次阅读 2019-12-11 14:08:43
    深度学习面试100题(第1-5题):经典常考点CNN https://zhuanlan.zhihu.com/p/39185031 深度学习面试100题(第6-10题) https://zhuanlan.zhihu.com/p/39367605 ...深度学习面试100题(第16-20题) ...
  • 面试宝典之深度学习面试题(下)

    千次阅读 2019-04-11 11:46:00
    10道深度学习面试题 ,今天再继续分享10道,希望这些面试题可以帮助到找深度学习岗位的朋友们。 11.神经网路中使用relu函数要好过tanh和sigmoid函数? 答: 1. 使用 sigmoid 函数,算激活函数时 ( 指数运算 ) ,计算...
  • 深度学习 面试 总结

    千次阅读 2020-03-30 23:14:49
    深度学习总结
  • 常见的12个深度学习面试问题

    千次阅读 2020-03-17 09:02:00
    深度学习面试Author:JP TechTranslator:ronghuaiyangFrom:AI公园导读这12个问题是当前面试中最热门的问题,既是非...
  • 常见的深度学习面试题及解答(一)

    千次阅读 2020-03-28 12:22:11
    1. 在训练过程中,若一个模型不收敛,那么是否说明这个模型无效?导致模型不收敛的原因有...学习率设置的太大容易产生震荡,太小会导致不收敛。 可能复杂的分类任务用了简单的模型。 数据没有进行归一化的操作。 https:...
  • 深度学习面试书:深度学习面试宝典(含数学,机器学习,深度学习,计算机视觉,自然语言处理和SLAM等方向)
  • 自己在2018秋招期间从牛客网、知乎、百度谷歌等网页整理的关于机器学习、深度学习、计算机基础等等的面试精华问题与解答,部分有因为时间而未解决的问题,大部分问题都给出了答案和参考。
  • 自己在2018秋招期间从牛客网、知乎、百度谷歌等网页整理的关于机器学习、深度学习、计算机基础等等的面试精华问题与解答,部分有因为时间而未解决的问题,大部分问题都给出了答案和参考。
  • 机器学习深度学习面试题笔试题(Machine learning Deep Learning Interview Questions)
  • 面试深度学习算法工程师的同学,在参加面试的过程中,你是否经常被面试官的问题难到,苦苦寻求一本关于深度学习面试的书。别急,听我给你支一招。 最近,我有一个朋友安利我一本新书《百面深度学习》,深度学习面试...
  • 深度学习面试问题总结

    千次阅读 2018-05-01 23:59:56
    第一部分:深度学习1、神经网络基础问题(1)BP,Back-propagation(要能推倒)后向传播是在求解损失函数L对参数w求导时候用到的方法,目的是通过链式法则对参数进行一层一层的求导。这里重点强调:要将参数进行随机...
  • 自己在2018秋招期间从牛客网、知乎、百度谷歌等网页整理的关于机器学习、深度学习、计算机基础等等的面试精华问题与解答,部分有因为时间而未解决的问题,大部分问题都给出了答案和参考。
  • 深度学习面试准备

    千次阅读 2019-08-22 22:23:49
    深度学习中的五种归一化(BN、LN、IN、GN和SN)方法简介_修行之路-CSDN博客_gn是什么意思 为什么需要归一化: 神经网络学习过程的本质就是为了学习数据分布,如果我们没有做归一化处理,那么每一批次训练数据的分布...
  • 深度学习面试题之CNN

    千次阅读 2020-06-06 22:30:07
    基本而一般的模式会逐渐被抽象为具有高层语义的“概念”表示,也就是自动学习到图像的高层特征。 2、CNN结构特点 局部连接,权值共享,池化操作,多层次结构。 1、局部连接使网络可以提取数据的局部特征 2、权值共享...
  • 深度学习面试宝典(含数学、机器学习、深度学习、计算机视觉、自然语言处理和SLAM等方向)
  • 深度学习面试题总结1-20

    万次阅读 多人点赞 2018-10-15 19:50:48
    五、Ensemble Ensemble是论文刷结果的终极核武器,深度学习中一般有以下几种方式 同样的参数,不同的初始化方式 不同的参数,通过cross-validation,选取最好的几组 同样的参数,模型训练的不同阶段,即不同迭代次数的...
  • 生成式对抗网络的基本原理 ...本节将从初始版本的GAN出发,通过学习GAN的原理,对比GAN与其他几种生成式模型的异同,以及分析原始GAN中存在的问题,以获得对GAN的深度理解。 知识点 生成模型、自编码器(AutoEncod
  • 深度学习面试100题(第11-15题)

    千次阅读 2018-07-25 14:40:20
    Ensemble是论文刷结果的终极核武器,深度学习中一般有以下几种方式 同样的参数,不同的初始化方式 不同的参数,通过cross-validation,选取最好的几组 同样的参数,模型训练的不同阶段,即不同迭代次数的模型。 不同...
  • 深度学习笔试100题.pdf

    2019-07-16 10:12:23
    深度学习笔试题目,用于练习。深度学习笔试题目,用于练习.深度学习笔试题目,用于练习 .深度学习笔试题目,用于练习.重要的事情多说几遍,你懂得

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 80,405
精华内容 32,162
关键字:

深度学习面试

友情链接: BeginningPerl.zip