深度学习常见面试题及回答

1)什么是深度学习?

回答:深度学习是机器学习的一个领域, 它专注于使用包含不止一个隐藏层的人工神经网络, 这部分由大脑中神经元的结构启发而生成。深度学习适用于计算机视觉、语音识别、自然语言处理等一系列领域。

/pic/1_sbibdV5ia5bTIeqOtP3u1AoPpnFGAg.png

2)什么是损失函数

损失函数告诉我们神经网络的执行效果如何。我们在训练神经网络的目标是找到使最小化成本函数的神经元权重组合。

举一个成本函数的例子, 考虑平均平方误差函数:

/pic/2_2z8rb3VVoVMn7AslgIich8VFsU2TWg.jpg

该函数表示我们预期的结果Y^和实际的结果Y之间的差距,而这正是我们力图减少的。

/pic/3_sbibdV5ia5bTIeqOtP3u1AoPpnFGAg.png

3)什么是梯度下降

梯度下降是一种深度学习的最常用优化算法, 通过迭代来修改参数值,以最小化成本函数。 在每个迭代中, 我们计算每个参数的成本函数的梯度, 并通过以下方法更新函数的参数。

/pic/4_O0nSXg3G2MGPqMmtlk5wE3hA2Htj3A.jpg

/pic/7_K6qWLQs8esthDuHvAuhEo9TNKZ1vCg.png是损失函数。

/pic/8_sbibdV5ia5bTIeqOtP3u1AoPpnFGAg.png

4)什么是反向传播算法

反向传播算法是一种用在多层神经网络中的训练算法, 它允许对梯度的变化进行有效的计算。

反向算法可分为以下几个步骤:

1) 通过网络向前传播待训练数据, 以产生输出。

2) 使用目标值和输出值来计算由损失函数定义的误差的导数。

3) 向神经网络中的前一层的输出上一步计算的误差的导数, 并依次传递到每一个更前的隐藏层。

4) 根据上一步传递的误差的导数,依据链式法则,计算上一步的误差相对于当前神经元的权重的导数

5) 更新权重。

/pic/9_sbibdV5ia5bTIeqOtP3u1AoPpnFGAg.png

5)解释以下三种梯度下降算法的变体: 批处理、随机下降和 Minibatch?

随机梯度下降:仅使用单个训练示例来计算渐变和更新参数。

批处理渐变下降:计算整个数据集的渐变, 并在每次迭代中只执行一个更新。

Minibatch 梯度下降:将数据集拆分为小批, 并对每个 mini-batch 执行参数更新。

/pic/10_sbibdV5ia5bTIeqOtP3u1AoPpnFGAg.png

6)什么是单个热编码(One Hot Encoding)?

单个热编码用于对分类特征进行编码。我们为每个唯一的值创建一个单独的特性, 这样, 值就会彼此相同。

例如, 让我们假设有一个称为颜色的功能, 它可以采用如下值: 红色、蓝色、绿色。

/pic/11_VsOdLJ6dj4Eribiaje2CGKGleX70aQ.jpg

/pic/12_sbibdV5ia5bTIeqOtP3u1AoPpnFGAg.png

7)激活函数的作用是什么?

激活函数的目的是将非线性引入神经网络, 使其能够学习更复杂的函数。如果没有它, 神经网络将只能够学习线性函数, 它只能产生输入数据的线性组合。

/pic/13_sbibdV5ia5bTIeqOtP3u1AoPpnFGAg.png

8)提供一些激活函数的例子?

Sigmoid函数

Sigmoid函数也称为logistic函数, 它是连续的, 也容易计算导数。它将所有的实数压缩到范围 0到1之间。

/pic/14_wXw9ENXxMzTlicOvdkuicJtfoBjNnQ.png

softmax

Softmax 是一个泛化的Sigmoid函数,,当我们要处理多个类。所有输出值都在范围 (0, 1) ,其总和为 1, 因此可以将输出解释为概率。

整流线性单元– ReLU

ReLU 函数如果输入小于或等于 0,则输出0 否则输出输入的值, 我们可以把它们看成开关。 它可以免受梯度消失的问题, 它计算非常快。在卷积网络中的应用时比应用Sigmoid函数更有效。

/pic/15_fe9tEqxJ5ZMbpUZicY6hr3ME0kLKRA.png

/pic/16_sbibdV5ia5bTIeqOtP3u1AoPpnFGAg.png

9)什么是超参数, 提供一些例子?

参数相对于模型参数不能从数据中学习, 它们是在训练阶段之前设置的。下面是常用的超参数。

学习率(Learning Rate)

它决定了我们要在优化过程中更新权重的速度, 如果学习率太小, 梯度下降可以缓慢地找到最小值, 如果它的太大梯度下降可能不会收敛。它被认为是最重要的 超参数。

epoch

当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一个 epoch。

批处理大小 Batch Size

在不能将数据一次性通过神经网络的时候,就需要将数据集分成几批分开处理。批处理大小指一个训练批次中的样本总数。

/pic/17_sbibdV5ia5bTIeqOtP3u1AoPpnFGAg.png

10)什么是模型容量?

模型容量用来评价系统的解释是否具有足够的扩展性。较高的模型容量是可以存储在网络中的信息量越大。如果模型容量过大,就像一个记忆力极为精准的植物学家,当她看到一颗新的树的时候,由于这棵树的叶子和她以前看到的树的叶子数目不一样,因此判断这不是树;但如果模型容量太小,就像一个懒惰的植物学家,只要看到绿色的东西都把它叫做树。

/pic/18_sbibdV5ia5bTIeqOtP3u1AoPpnFGAg.png

11)什么是卷积神经网络?

卷积神经网络, 也被称为 CNN, 是一种神经网络的架构,常用与图像识别,也可用在自然语言处理。其使用卷积在至少一个隐藏层。卷积层由一组过滤器 (内核) 组成。这个过滤器滑动切割整个输入图像, 计算点产品之间的权重,经过待训练的神经网络,即过滤器,将处理后的结果输出到下一层。 由于训练结果, 网络会学到能够检测特定功能的过滤器。例如识别三角形,直角。将多个卷积层堆叠起来,可以得到对整个图像的全局特征的提取。

/pic/19_5sV82o1Wvoq788uHvU8n59IlHKqohw.png

/pic/20_sbibdV5ia5bTIeqOtP3u1AoPpnFGAg.png

12)什么是自编码器 (autoencoder)?

自编码器是一种人工神经网络的结构, 它能够在没有任何标签的情况下学习数据集 (编码) 的表示。他们通过重现输入的特征进行学习, 通常其神经网络的内部表示比输入向量具有更小的维数, 这样他们就可以学习有效的表示数据的方法。自编码器由两部分组成, 编码器试图将输入与内部表示相适应, 解码器将内部状态转换为输出。

/pic/21_CN7hrhbZFmvYMW54SdGjC3tZBUICqw.jpg

/pic/22_sbibdV5ia5bTIeqOtP3u1AoPpnFGAg.png

13)什么是dropout(辍学https://res.wx.qq.com/mpres/htmledition/images/icon/common/emotion_panel/smiley/smiley_7.png)?

dropout是一种在神经网络中减少过拟合的正则化技术。在每个训练步骤中, 我们随机地关闭一些网络中的神经元, 这样我们为每个训练用例创建不同的模型, 所有这些模型都共享权重。这是对一组容量略低的模型求平均值的方法,类似随机森林。

/pic/23_rNb9I7ZFqyVYNJ9Fkxal1t7Ov4fuGQ.jpg

14)我们如何使用交叉熵来作为成本函数?

交叉熵作为成本函数可用于分类,这是一个最自然的选择, 如果有一个Sigmoid或 softmax 的非线性在输出层。

/pic/24_oe3hMogZ7C9dD9ScTKs3qAQYKibphg.jpg

其中C为交叉熵,a是神经网络的输出权重,y是目标函数,n是训练样本的个数。

欢迎关注巡洋舰的深度学习实战课程, 手把手带你进行深度学习实战, 课程涵盖机器学习,深度学习, 深度视觉, 深度自然语言处理, 以及极具特色的深度强化学习,看你能不能学完在你的领域跨学科的应用深度学习惊艳你的小伙伴,成为身边人眼中的大牛, 感兴趣的小伙伴可以点击阅读原文。

下图是这门课程的思维导图。

/pic/25_ibzh5P6vPiaOffICZibFcNKfichRhw.png

原创不易,随喜赞赏

/pic/26_vHVmC19a0o7YS03eqTrIL9QJS4wS4w.jpg

更多阅读

深度学习入门书单

铁哥谈AI: 浅析阿尔法元之元

阅读原文

77777772017-10-27 15:29:20

dropout随机失活[微笑]赞 1