IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 深度学习面经总结 -> 正文阅读

[人工智能]深度学习面经总结

1. BN层的作用

(1)BN使得网络中每层输入数据的分布相对稳定,加速模型学习速度
(2)BN使得模型对网络中的参数不那么敏感,简化调参过程,使得网络学习更加稳定
(3)BN允许网络使用饱和性激活函数(例如sigmoid,tanh等),缓解梯度消失问题
(4)BN具有一定的正则化效果

详细内容学习

2. 空洞卷积

空洞卷积(dilated convolution)是针对图像语义分割问题中下采样会降低图像分辨率、丢失信息而提出的一种卷积思路。利用添加空洞扩大感受野,让原本 3 × 3 3\times 3 3×3的卷积核,在相同参数量的情况下,用于 5 × 5 ( d i l a t e d r a t e = 2 ) 5 \times 5(dilated rate=2) 5×5(dilatedrate=2)或者更大的感受野,无须下采样。

存在问题:

  • 局部信息丢失:由于空洞卷积的计算方式类似于棋盘格式,某一层得到的卷积结果,来自上一层的独立的集合,没有相互依赖,因此该层的卷积结果之间没有相关性,即局部信息丢失。
  • 远距离获取的信息没有相关性:由于空洞卷积稀疏的采样输入信号,用来获取远距离信息。但是这种信息之间没有相关性,同时当对大物体分割时,会有一定的效果,但是对于小物体来说,有弊无利。

详细内容学习

3. 图像插值方法

  1. 最近邻元法。最近邻像素即为替代像素的方法

  2. 二次插值法
    已知(x1, y1, f (x1, y1)),(x1, y2, f (x1, y2)),(x2, y1, f (x2, y1)),(x2, y2, f (x2, y2))
    用双线性插值估计 f(x, y):
    先对 x 进行插值去求 f(x,y1) 和 f(x,y2):

    f ( x , y 1 ) = f ( x 1 , y 1 ) ? x 2 ? x x 2 ? x 1 + f ( x 2 , y 1 ) ? x ? x 1 x 2 ? x 1 f\left(x, y_{1}\right)=f\left(x_{1}, y_{1}\right) \cdot \frac{x_{2}-x}{x_{2}-x_{1}}+f\left(x_{2}, y_{1}\right) \cdot \frac{x-x_{1}}{x_{2}-x_{1}} f(x,y1?)=f(x1?,y1?)?x2??x1?x2??x?+f(x2?,y1?)?x2??x1?x?x1??

f ( x , y 2 ) = f ( x 1 , y 2 ) ? x 2 ? x x 2 ? x 1 + f ( x 2 , y 2 ) ? x ? x 1 x 2 ? x 1 f\left(x, y_{2}\right)=f\left(x_{1}, y_{2}\right) \cdot \frac{x_{2}-x}{x_{2}-x_{1}}+f\left(x_{2}, y_{2}\right) \cdot \frac{x-x_{1}}{x_{2}-x_{1}} f(x,y2?)=f(x1?,y2?)?x2??x1?x2??x?+f(x2?,y2?)?x2??x1?x?x1??
然后再去求 f ( x , y ) f(x, y) f(x,y) :
f ( x , y ) = f ( x , y 1 ) ? y 2 ? y y 2 ? y 1 + f ( x , y 2 ) ? y ? y 1 y 2 ? y 1 f(x, y)=f\left(x, y_{1}\right) \cdot \frac{y_{2}-y}{y_{2}-y_{1}}+f\left(x, y_{2}\right) \cdot \frac{y-y_{1}}{y_{2}-y_{1}} f(x,y)=f(x,y1?)?y2??y1?y2??y?+f(x,y2?)?y2??y1?y?y1??
?果 x 2 = 1 , x 1 = 0 , y 2 = 1 , y 1 = 1 x_{2}=1, x_{1}=0, y_{2}=1, y_{1}=1 x2?=1,x1?=0,y2?=1,y1?=1, 那么:
f ( x , y ) = ( 1 ? y ) ? ( 1 ? x ) ? f ( 0 , 0 ) + ( 1 ? y ) ? x ? f ( 1 , 0 ) + y ? ( 1 ? x ) ? f ( 0 , 1 ) + y ? x ? f ( 1 , 1 ) f(x, y)=(1-y) \cdot(1-x) \cdot f(0,0)+(1-y) \cdot x \cdot f(1,0)+y \cdot(1-x) \cdot f(0,1)+y \cdot x \cdot f(1,1) f(x,y)=(1?y)?(1?x)?f(0,0)+(1?y)?x?f(1,0)+y?(1?x)?f(0,1)+y?x?f(1,1)
RoI Align 就行用的双线性插值对连续点利用周围的四个点进行双线性插值

详细学习链接

4. Focal loss

α \alpha α 平衡了正负样本数量,但实际上,目标检测中大量的候选目标都是易分样本,这些样本会使损失很低,因此模型应关注那些难分样本,将高置信度的样本损失函数降低一些,就有了Focal loss
F L = { ? α ( 1 ? p ) γ l o g ( p ) i f ? y = 1 ? ( 1 ? α ) p γ l o g ( 1 ? p ) i f ? y = 0 FL = \left\{\begin{matrix} -\alpha(1-p)^{\gamma} log(p) & if \ y =1\\ -(1-\alpha)p^{\gamma} log(1-p) & if \ y =0 \end{matrix}\right. FL={?α(1?p)γlog(p)?(1?α)pγlog(1?p)?if?y=1if?y=0?

5. 深度可分离卷积

一些轻量级的网络,如mobilenet中,会有深度可分离卷积depthwise separable convolution,由depthwise(DW)和pointwise(PW)两个部分结合起来,用来提取特征feature map

相比常规的卷积操作,其参数数量和运算成本比较低

常规卷积操作
在这里插入图片描述

卷积层共4个Filter,每个Filter包含了3个Kernel,每个Kernel的大小为3×3。因此卷积层的参数数量可以用如下公式来计算:

N_std = 4 × 3 × 3 × 3 = 108

深度可分离卷积

  • 逐通道卷积

在这里插入图片描述
其中一个Filter只包含一个大小为3×3的Kernel,卷积部分的参数个数计算如下:

N_depthwise = 3 × 3 × 3 = 27

  • 逐点卷积
    在这里插入图片描述

由于采用的是1×1卷积的方式,此步中卷积涉及到的参数个数可以计算为:

N_pointwise = 1 × 1 × 3 × 4 = 12

经过Pointwise Convolution之后,同样输出了4张Feature map,与常规卷积的输出维度相同

详细学习链接

6. 为什么说Dropout可以解决过拟合?

(1)取平均的作用: 先回到标准的模型即没有dropout,我们用相同的训练数据去训练5个不同的神经网络,一般会得到5个不同的结果,此时我们可以采用 “5个结果取均值”或者“多数取胜的投票策略”去决定最终结果。例如3个网络判断结果为数字9,那么很有可能真正的结果就是数字9,其它两个网络给出了错误结果。这种“综合起来取平均”的策略通常可以有效防止过拟合问题。因为不同的网络可能产生不同的过拟合,取平均则有可能让一些“相反的”拟合互相抵消。dropout掉不同的隐藏神经元就类似在训练不同的网络,随机删掉一半隐藏神经元导致网络结构已经不同,整个dropout过程就相当于对很多个不同的神经网络取平均。而不同的网络产生不同的过拟合,一些互为“反向”的拟合相互抵消就可以达到整体上减少过拟合。
(2)减少神经元之间复杂的共适应关系: 因为dropout程序导致两个神经元不一定每次都在一个dropout网络中出现。这样权值的更新不再依赖于有固定关系的隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况 。迫使网络去学习更加鲁棒的特征 ,这些特征在其它的神经元的随机子集中也存在。换句话说假如我们的神经网络是在做出某种预测,它不应该对一些特定的线索片段太过敏感,即使丢失特定的线索,它也应该可以从众多其它线索中学习一些共同的特征。从这个角度看dropout就有点像L1,L2正则,减少权重使得网络对丢失特定神经元连接的鲁棒性提高。
(3)Dropout类似于性别在生物进化中的角色:物种为了生存往往会倾向于适应这种环境,环境突变则会导致物种难以做出及时反应,性别的出现可以繁衍出适应新环境的变种,有效的阻止过拟合,即避免环境改变时物种可能面临的灭绝。
详细学习链接

7. 知识蒸馏

知识蒸馏指的是将复杂模型(teacher)中的dark knowledge迁移到简单模型(student)中去,一般来说,teacher模型具有强大的能力和表现,而student模型则体量很小。通过知识蒸馏,希望student模型能尽可能逼近亦或是超过teacher模型,从而用更少的复杂度来获得类似的预测效果,实现模型的压缩和量化。

总结来说,知识蒸馏,可以将一个网络的知识转移到另一个网络。做法是先训练一个teacher网络,然后使用这个teacher网络的输出和数据的真实标签去训练student网络。知识蒸馏,可以用来将网络从大网络转化成一个小网络,并保留接近于大网络的性能;也可以将多个网络的学到的知识转移到一个网络中,使得单个网络的性能接近emsemble的结果。

详细学习链接
详细学习链接

8. 1x1卷积核作用

  1. 降维/升维
  2. 增加非线性
  3. 跨通道信息交互(channal 的变换)

9. add_with_concat

联系

  • c o n c a t concat concat 操作时时将通道数增加, a d d add add 是特征图相加,通道数不变。
  • 对于 C o n c a t Concat Concat的操作,通道数相同且后面带卷积的话, a d d add add等价于 c o n c a t concat concat之后对应通道共享同一个卷积核。

区别

  • 对于 C o n c a t Concat Concat操作而言,通道数的合并,也就是说描述图像本身的特征增加了,而每一特征下的信息是没有增加。
  • 对于 a d d add add层更像是信息之间的叠加。这里有个先验, a d d add add前后的 t e n s o r tensor tensor语义是相似的。

结论

因此,像是需要将 A A A B B B T e n s o r Tensor Tensor进行融合,如果它们语义不同,则我们可以使用 C o n c a t Concat Concat的形式,如 U N e t UNet UNet, S e g N e t SegNet SegNet这种编码与解码的结构,主要还是使用 C o n c a t Concat Concat

而如果 A A A B B B是相同语义,如 A A A B B B是不同分辨率的特征,其语义是相同的,我们可以使用 a d d add add来进行融合,如 F P N FPN FPN R e s N e t ResNet ResNet等网络的设计。

详细学习链接

10. CNN

CNN

  • 局部连接:不是全连接,而是使用size相对input小的kernel在局部感受视野内进行连接(点积运算)
  • 权值共享:在一个卷积核运算中,每次都运算一个感受视野,通过滑动遍历的把整个输入都卷积完成,而不是每移动一次就更换卷积核参数

两者目的都是减少参数。通过局部感受视野,通过卷积操作获取高阶特征,能达到比较好的效果。

池化的意义

1.特征不变形:池化操作是模型更加关注是否存在某些特征而不是特征具体的位置。

2.特征降维:池化相当于在空间范围内做了维度约减,从而使模型可以抽取更加广范围的特征。同时减小了下一层的输入大小,进而减少计算量和参数个数。

3.在一定程度上防止过拟合,更方便优化。

11. 感受野

感受野( R e c e p t i v e Receptive Receptive F i e l d Field Field)的定义是卷积神经网络每一层输出的特征图( f e a t u r e feature feature m a p map map)上的像素点在原始输入图片上映射的区域大小。再通俗点的解释是,特征图上的一个点对应原始输入图片上的区域,如下图所示。
在这里插入图片描述

12. 欠拟合和过拟合

解决欠拟合:

  1. 添加其它特征项。组合、泛化、相关性、上下文特征、平台特征等特征是特征添加的重要手段,有时候特征项不够会导致欠拟合。
  2. 添加多项式特征。例如将线性模型添加二次项或三次项使泛化能力更强。例如,FM(Factorization Machine)模型、FFM(Field-aware Factorization Machine)模型,其实就是线性模型,增加了二阶多项式,保证了模型一定的拟合程度。
  3. 可以增加模型的复杂程度。
  4. 减小正则化系数。正则化的目的就是用来防止过拟合的,但是先模型出现了欠拟合,则需要减少正则化参数。

解决过拟合:

  1. 重新清洗数据,数据不纯会导致过拟合,此类情况需要重新清洗数据。
  2. 增加训练样本数量。
  3. 降低模型复杂程度。
  4. 增大正则项系数。
  5. 采用dropout方法,dropout方法,通俗的讲就是在训练的时候让神经元以一定的概率不工作。
  6. early stopping,减少迭代次数。
  7. 增大学习率。
  8. 添加噪声数据。数据增强。
  9. 树结构中,可以对树进行剪枝。
  10. 减少特征项。

13. 优化器

  1. 非自适应优化器
    GD、BGD、SGD、SGDM
  2. 自适应优化器
    Adagrad、Adadelta、RMSprop、Adam

14. 神经网络模型不收敛

原因

  1. 忘记对你的数据进行归一化

  2. 忘记检查输出结果

  3. 没有对数据进行预处理

  4. 没有使用任何的正则化方法

  5. 使用了一个太大的 batch size

  6. 使用一个错误的学习率

  7. 在最后一层使用错误的激活函数

  8. 网络包含坏的梯度

  9. 网络权重没有正确的初始化

  10. 使用了一个太深的神经网络

  11. 隐藏层神经元数量设置不正确

对应的解决办法分别是:

  1. 对数据进行归一化,常用的归一化包括零均值归一化线性函数归一化方法;

  2. 检测训练过程中每个阶段的数据结果,如果是图像数据可以考虑使用可视化的方法;

  3. 对数据进行预处理,包括做一些简单的转换;

  4. 采用正则化方法,比如 L2 正则,或者 dropout;

  5. 在训练的时候,找到一个可以容忍的最小的 batch 大小。可以让 GPU 并行使用最优的 batch 大小并不一定可以得到最好的准确率,因为更大的 batch 可能需要训练更多时间才能达到相同的准确率。所以大胆的从一个很小的 batch 大小开始训练,比如 16,8,甚至是 1。

  6. 不采用梯度裁剪。找出在训练过程中不会导致误差爆炸的最大学习率。将学习率设置为比这个低一个数量级,这可能是非常接近最佳学习率。

  7. 如果是在做回归任务,大部分情况下是不需要在最后一层使用任何激活函数;如果是分类任务,一般最后一层是用 sigmoid 激活函数;

  8. 如果你发现你的训练误差没有随着迭代次数的增加而变化,那么很可能就是出现了因为是 ReLU 激活函数导致的神经元死亡的情况。可以尝试使用如 leaky ReLU 或者 ELUs 等激活函数,看看是否还出现这种情况。

  9. 目前比较常用而且在任何情况下效果都不错的初始化方式包括了“he”,“xaiver”和“lecun”。所以可以任意选择其中一种,但是可以先进行实验来找到最适合你的任务的权值初始化方式。

  10. 从256到1024个隐藏神经元数量开始。然后,看看其他研究人员在相似应用上使用的数字

15. 权重初始化方法

  1. 初始化为常数
  2. 均值初始化
  3. 正态函数初始化
  4. Aavier初始化:尽可能的让输入和输出服从相同的分布,这样就能够避免后面层的激活函数的输出值趋向于 0 0 0
  5. 何凯明初始化

16. 网络模型训练技巧

17. 时序建模模块

18. 激活函数

19. AUC和ROC

20. L1和L2

  • L 1 L1 L1正则化项是模型各个参数的绝对值之和。 L 2 L2 L2正则化项是模型各个参数的平方和的开方值。
  • L 1 L1 L1正则化可以使部分权重为 0 0 0,产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择;一定程度上, L 1 L1 L1也可以防止过拟合,当 L 1 L1 L1的正则化系数很小时,得到的最优解会很小,可以达到和 L 2 L2 L2正则化类似的效果。
  • L 2 L2 L2正则化通过权重衰减,可以使所有的权重趋向于 0 0 0,但不为 0 0 0,导致模型权重参数较小且较为平滑,防止模型过拟合( o v e r f i t t i n g overfitting overfitting);
  • L 2 L2 L2正则化的效果是对原最优解的每个元素进行不同比例的放缩; L 1 L1 L1正则化则会使原最优解的元素产生不同量的偏移,并使某些元素为 0 0 0,从而产生稀疏性。

21. 标签平滑- l a b e l label label s m o o t h i n g smoothing smoothing

标签平滑采用如下思路:在训练时即假设标签可能存在错误,避免“过分”相信训练样本的标签。当目标函数为交叉熵时,这一思想有非常简单的实现,称为标签平滑( L a b e l Label Label S m o o t h i n g Smoothing Smoothing)。
没有标签平滑计算的损失只考虑正确标签位置的损失,而不考虑其他标签位置的损失, 这就会出现一个问题,即不考虑其他错误标签位置的损失,这会使得模型过于关注增大预测正确标签的概率,而不关注减少预测错误标签的概率,最后导致的结果是模型在自己的训练集上拟合效果非常良好,而在其他的测试集结果表现不好,即过拟合,也就是说模型泛化能力差。

平滑过后的样本交叉熵损失就不仅考虑到了训练样本中正确的标签位置( o n e one one- h o t hot hot 标签为 1 1 1 的位置)的损失,也稍微考虑到其他错误标签位置( o n e one one- h o t hot hot 标签为 0 0 0 的位置)的损失,导致最后的损失增大,导致模型的学习能力提高,即要下降到原来的损失,就得学习的更好,也就是迫使模型往增大正确分类概率并且同时减小错误分类概率的方向前进。

详细学习链接
详细学习链接

22. BN,LN,IN,GN, SN

batchNorm是在batch上,对NHW做归一化,对小batchsize效果不好;
layerNorm在通道方向上,对CHW归一化,主要对RNN作用明显;
instanceNorm在图像像素上,对HW做归一化,用在风格化迁移;
GroupNorm将channel分组,然后再做归一化;
SwitchableNorm是将BN、LN、IN结合,赋予权重,让网络自己去学习归一化层应该使用什么方法。
在这里插入图片描述
详细学习链接

23. FPN为何能够提升小目标的精度

低层的特征语义信息比较少,但是目标位置准确;高层的特征语义信息比较丰富,但是目标位置比较粗略。原来多数的object detection算法都是只采用顶层特征做预测。FPN同时利用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同层的特征达到预测的效果。并且预测是在每个融合后的特征层上单独进行的。所以可以提升小目标的准确率。

24. Softmax与sigmoid计算公式

详细学习链接
详细学习链接

25. 为什么分类问题的损失函数采用交叉熵而不是均方误差MSE?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 22:11:31  更:2022-03-11 22:15:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 15:31:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码