深度学习面试 79 题:涵盖深度学习所有考点(51-65)| 文末彩蛋

本贴最后更新于 1052 天前,其中的信息可能已经天翻地覆

七月在线 618 预热来啦~

VIP 会员周卡限时 1 分钱秒杀啦,相当于,全平台课程免费学 7 天

点击下方链接开团啦 ↓↓

七月在线 VIP 周卡会员 1 分秒杀

51、什么是 fine-tuning?

在实践中,由于数据集不够大,很少有人从头开始训练网络。常见的做法是使用预训练的网络(例如在 ImageNet 上训练的分类 1000 类的网络)来重新 fine-tuning(也叫微调),或者当做特征提取器。

以下是常见的两类迁移学习场景:

1 卷积网络当做特征提取器。使用在 ImageNet 上预训练的网络,去掉最后的全连接层,剩余部分当做特征提取器(例如 AlexNet 在最后分类器前,是 4096 维的特征向量)。这样提取的特征叫做 CNN codes。得到这样的特征后,可以使用线性分类器(Liner SVM、Softmax 等)来分类图像。

2 Fine-tuning 卷积网络。替换掉网络的输入层(数据),使用新的数据继续训练。Fine-tune 时可以选择 fine-tune 全部层或部分层。通常,前面的层提取的是图像的通用特征(generic features)(例如边缘检测,色彩检测),这些特征对许多任务都有用。后面的层提取的是与特定类别有关的特征,因此 fine-tune 时常常只需要 Fine-tuning 后面的层。

52、什么是边框回归 Bounding-Box regression,以及为什么要做、怎么做?

这个问题可以牵扯出不少问题,比如

为什么要边框回归?

什么是边框回归?

边框回归怎么做的?

边框回归为什么宽高,坐标会设计这种形式?

为什么边框回归只能微调,在离真实值 Ground Truth 近的时候才能生效?

如图 1 所示,绿色的框表示真实值 Ground Truth, 红色的框为 Selective Search 提取的候选区域/框 Region Proposal。那么即便红色的框被分类器识别为飞机,但是由于红色的框定位不准(IoU<0.5), 这张图也相当于没有正确的检测出飞机。

深度学习面试 79 题:涵盖深度学习所有考点(51-65)

如果我们能对红色的框进行微调 fine-tuning,使得经过微调后的窗口跟 Ground Truth 更接近, 这样岂不是定位会更准确。 而 Bounding-box regression 就是用来微调这个窗口的。

53、请阐述下 Selective Search 的主要思想

1 使用一种过分割手段,将图像分割成小区域 (1k~2k 个)

2 查看现有小区域,按照合并规则合并可能性最高的相邻两个区域。重复直到整张图像合并成一个区域位置

3 输出所有曾经存在过的区域,所谓候选区域

其中合并规则如下: 优先合并以下四种区域:

① 颜色(颜色直方图)相近的

② 纹理(梯度直方图)相近的

③ 合并后总面积小的: 保证合并操作的尺度较为均匀,避免一个大区域陆续“吃掉”其他小区域 (例:设有区域 a-b-④c-d-e-f-g-h。较好的合并方式是:ab-cd-ef-gh -> abcd-efgh -> abcdefgh。 不好的合并方法是:ab-c-d-e-f-g-h ->abcd-e-f-g-h ->abcdef-gh -> abcdefgh)

合并后,总面积在其 BBOX 中所占比例大的: 保证合并后形状规则。

深度学习面试 79 题:涵盖深度学习所有考点(51-65)

上述四条规则只涉及区域的颜色直方图、梯度直方图、面积和位置。合并后的区域特征可以直接由子区域特征计算而来,速度较快。

本题解析来源:lemon:RCNN- 将 CNN 引入目标检测的开山之作

54、什么是非极大值抑制(NMS)?

R-CNN 会从一张图片中找出 n 个可能是物体的矩形框,然后为每个矩形框为做类别分类概率:

深度学习面试 79 题:涵盖深度学习所有考点(51-65)

就像上面的图片一样,定位一个车辆,最后算法就找出了一堆的方框,我们需要判别哪些矩形框是没用的。非极大值抑制的方法是:先假设有 6 个矩形框,根据分类器的类别分类概率做排序,假设从小到大属于车辆的概率 分别为 A、B、C、D、E、F。

(1)从最大概率矩形框 F 开始,分别判断 A~E 与 F 的重叠度 IOU 是否大于某个设定的阈值;

(2)假设 B、D 与 F 的重叠度超过阈值,那么就扔掉 B、D;并标记第一个矩形框 F,是我们保留下来的。

(3)从剩下的矩形框 A、C、E 中,选择概率最大的 E,然后判断 E 与 A、C 的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记 E 是我们保留下来的第二个矩形框。

就这样一直重复,找到所有被保留下来的矩形框。

55、什么是深度学习中的 anchor?

解析一

提到 RPN 网络,就不能不说 anchors。所谓 anchors,实际上就是一组由 rpn/generate_anchors.py 生成的矩形。直接运行 Faster RCNN 的作者在其论文中给的 demo 中的 generate_anchors.py 可以得到以下输出:

[[ -84. -40. 99. 55.]

[-176. -88. 191. 103.]

[-360. -184. 375. 199.]

[ -56. -56. 71. 71.]

[-120. -120. 135. 135.]

[-248. -248. 263. 263.]

[ -36. -80. 51. 95.]

[ -80. -168. 95. 183.]

[-168. -344. 183. 359.]]

56、CNN 的特点以及优势

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

局部连接:可以提取局部特征。

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

降维:通过池化或卷积 stride 实现。

多层次结构:将低层次的局部特征组合成为较高层次的特征。不同层级的特征可以对应不同任务。

57、深度学习中有什么加快收敛/降低训练难度的方法?

瓶颈结构

残差

学习率、步长、动量

优化方法

预训练

58、请写出链式法则并证明

深度学习面试 79 题:涵盖深度学习所有考点(51-65)

59、请写出 Batch Normalization 的计算方法及其应用

机器学习流程简介:

1)一次性设置(One time setup)

  • 激活函数(Activation functions)
  • 数据预处理(Data Preprocessing)
  • 权重初始化(Weight Initialization)
  • 正则化(Regularization:避免过拟合的一种技术)
  • 梯度检查(Gradient checking)

2)动态训练(Training dynamics)

  • 跟踪学习过程 (Babysitting the learning process)
  • 参数更新 (Parameter updates)
  • 超级参数优化(Hyperparameter optimization)
  • 批量归一化(Batch Normalization 简称 BN,其中,Normalization 是数据标准化或归一化、规范化,Batch 可以理解为批量,加起来就是批量标准化。解决在训练过程中中间层数据分布发生改变的问题,以防止梯度消失或爆炸、加快训练速度)

3)评估(Evaluation)

  • 模型组合(Model ensembles)

(训练多个独立的模型,测试时,取这些模型结果的平均值)

60、神经网络中会用到批量梯度下降(BGD)吗?为什么用随机梯度下降(SGD)?

1)一般不用 BGD

2)a. BGD 每次需要用到全量数据,计算量太大

b. 引入随机因素,即便陷入局部极小,梯度也可能不为 0,这样就有机会跳出局部极小继续搜索(可以作为跳出局部极小的一种方式,但也可能跳出全局最小。还有解决局部极小的方式:多组参数初始化、使用模拟退火技术)

61、当神经网络的调参效果不好时,从哪些角度思考?(不要首先归结于 overfiting)

1)是否找到合适的损失函数?(不同问题适合不同的损失函数)(理解不同损失函数的适用场景)

2)batch size 是否合适?batch size 太大 -> loss 很快平稳,batch size 太小 -> loss 会震荡(理解 mini-batch)

3)是否选择了合适的激活函数?(各个激活函数的来源和差异)

4)学习率,学习率小收敛慢,学习率大 loss 震荡(怎么选取合适的学习率)

5)是否选择了合适的优化算法?(比如 adam)(理解不同优化算法的适用场景)

6)是否过拟合?(深度学习拟合能力强,容易过拟合)(理解过拟合的各个解决方案)

a. Early Stopping

b. Regularization(正则化)

c. Weight Decay(收缩权重)

d. Dropout(随机失活)

e. 调整网络结构

62、请阐述下卷积神经网络 CNN 的基本原理(全网最通俗版)

1 神经元

神经网络由大量的神经元相互连接而成。每个神经元接受线性组合的输入后,最开始只是简单的线性加权,后来给每个神经元加上了非线性的激活函数,从而进行非线性变换后输出。每两个神经元之间的连接代表加权值,称之为权重(weight)。不同的权重和激活函数,则会导致神经网络不同的输出。

举个手写识别的例子,给定一个未知数字,让神经网络识别是什么数字。此时的神经网络的输入由一组被输入图像的像素所激活的输入神经元所定义。在通过非线性激活函数进行非线性变换后,神经元被激活然后被传递到其他神经元。重复这一过程,直到最后一个输出神经元被激活。从而识别当前数字是什么字。

神经网络的每个神经元如下

深度学习面试 79 题:涵盖深度学习所有考点(51-65)

深度学习面试 79 题:涵盖深度学习所有考点(51-65)

63、神经网络输出层为什么通常使用 softmax?

1 什么是 softmax

常用于神经网络输出层的激励函数 SOFTMAX 长什么样子呢?如下图所示

深度学习面试 79 题:涵盖深度学习所有考点(51-65)

从图的样子上看,和普通的全连接方式并无差异,但激励函数的形式却大不一样。

深度学习面试 79 题:涵盖深度学习所有考点(51-65)

深度学习面试 79 题:涵盖深度学习所有考点(51-65)

深度学习面试 79 题:涵盖深度学习所有考点(51-65)

64、了解无人驾驶的核心技术么?

总的说来,无人驾驶系统主要由三部分组成:算法端、车端和云端。其中算法端包括传感器、感知和决策等智能关键步骤的算法;车端包括机器人操作系统、各种计算硬件和车辆底盘硬件等;云端包括数据挖掘、仿真模拟、高精地图以及深度学习训练等等。

相当于无人驾驶要解决 4 个关键问题:我在哪?我周围有什么?接下来会发生什么?我应该怎么做?

深度学习面试 79 题:涵盖深度学习所有考点(51-65)

65、如何形象的理解 LSTM 的三个门

0. 从 RNN 说起

循环神经网络(Recurrent Neural Network,RNN)是一种用于处理序列数据的神经网络。相比一般的神经网络来说,他能够处理序列变化的数据。比如某个单词的意思会因为上文提到的内容不同而有不同的含义,RNN 就能够很好地解决这类问题。

1. 普通 RNN

先简单介绍一下一般的 RNN。

其主要形式如下图所示(图片均来自台大李宏毅教授的 PPT):

深度学习面试 79 题:涵盖深度学习所有考点(51-65)

这里:

x 为当前状态下数据的输入, h 表示接收到的上一个节点的输入。

y 为当前节点状态下的输出,而 h' 为传递到下一个节点的输出。

通过上图的公式可以看到,输出 h' 与 x 和 h 的值都相关。

而 y 则常常使用 h' 投入到一个线性层(主要是进行维度映射)然后使用 softmax 进行分类得到需要的数据。

对这里的 y 如何通过 h' 计算得到往往看具体模型的使用方式。

通过序列形式的输入,我们能够得到如下形式的 RNN。

七月在线 618 预热来啦~

VIP 会员周卡限时 1 分钱秒杀啦,相当于,全平台课程免费学 7 天

点击下方链接开团啦 ↓↓

七月在线 VIP 周卡 1 分 秒 杀

  • 推广
    151 引用 • 491 回帖 • 6 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...