Fork me on GitHub

深度学习大厂面试题汇总(31 - 40)

文末彩蛋:七月在线干货组最新升级的《名企AI面试100题》免费送!

31、什么是RNN?

RNNs的目的使用来处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如,你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。
RNNs之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。

32、请详细介绍一下RNN模型的几种经典结构

一、从单层网络谈起

在学习RNN之前,首先要了解一下最基本的单层网络,它的结构如图:

输入是x,经过变换Wx+b和激活函数f得到输出y。相信大家对这个已经非常熟悉了。

二、经典的RNN结构(N vs N)

33、简单说下sigmoid激活函数

34、如何从RNN起步,一步一步通俗理解LSTM(全网最通俗的LSTM详解)

一、RNN

1.1 从单层网络到经典的RNN结构

在学习LSTM之前,得先学习RNN,而在学习RNN之前,首先要了解一下最基本的单层网络,它的结构如下图所示:

输入是x,经过变换Wx+b和激活函数f,得到输出y。相信大家对这个已经非常熟悉了。
在实际应用中,我们还会遇到很多序列形的数据:

如:

自然语言处理问题。x1可以看做是第一个单词,x2可以看做是第二个单词,依次类推。

语音处理。此时,x1、x2、x3……是每帧的声音信号。

时间序列问题。例如每天的股票价格等等。

而其中,序列形的数据就不太好用原始的神经网络处理了。

为了建模序列问题,RNN引入了隐状态h(hiddenstate)的概念,h可以对序列形的数据提取特征,接着再转换为输出。

35、CNN究竟是怎样一步一步工作的?

当你听到说深度学习打破了某项新技术障碍,那么十有八九就会涉及到卷积神经网络。它们也被称作CNNs或着ConvNets,是深层神经网络领域的主力。它们已经学会对图像进行分类,在某些情况下甚至超过了人类。如果有一个方法证明了这种假设,那就是CNN。

特别酷的一点就是,当你将它们分解为基本模块时,它们很容易被理解。这里有一个视频,很详细地讨论了关于这些图像问题。

LeNet-5

Classfication

36、rcnn、fast-rcnn和faster-rcnn三者的区别是什么

R-CNN 系列算法是目标检测 two-stage 类的代表算法,下面从问题背景,创新点,框架模块,训练流程,检测流程五个方面进行比较,了解它们的区别。并侧重介绍它们的宏观思路,省略具体的细节。

一、任务描述

目标检测是为了解决图像里的物体是什么,在哪里的问题。输入一幅图像,输出的是图像里每个物体的类别和位置,其中位置用一个包含物体的框表示。

需要注意,我们的目标,同时也是论文中常说的感兴趣的物体,指我们关心的类别(行人检测只检测人,交通检测只关心交通工具等),或者数据集包含的类别,并不是图像里所有的物体都是目标,比如建筑,草坪也是物体,但他们常常是背景。

从计算机视觉的角度看,目标检测是分类+定位,从机器学习的角度看,目标检测是分类+回归。

37、在神经网络中,有哪些办法防止过拟合?

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

38、CNN是什么,CNN关键的层有哪些?

CNN是卷积神经网络,具体详见此文:
https://blog.csdn.net/v_july_v/article/details/51812459

其关键层有:

① 输入层,对数据去均值,做data augmentation等工作

② 卷积层,局部关联抽取feature

③ 激活层,非线性变化

④ 池化层,下采样

⑤ 全连接层,增加模型非线性

⑥ 高速通道,快速连接

⑦ BN层,缓解梯度弥散

39、GRU是什么?GRU对LSTM做了哪些改动?

GRU是Gated Recurrent Units,是循环神经网络的一种。

GRU只有两个门(update和reset),LSTM有三个门(forget,input,output),GRU直接将hidden state 传给下一个单元,而LSTM用memory cell 把hidden state 包装起来。

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

如果模型的训练效果不好,可先考察以下几个方面是否有可以优化的地方。

(1)选择合适的损失函数(choosing proper loss )

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

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

(2)选择合适的Mini-batch size

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

评论有奖:评论区回复“100题”,免费领取最新升级版《名企AI面试100题》电子书!


本文地址:https://www.6aiq.com/article/1624379678026
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出