深度学习面试八股文(2023.9.06持续更新)

news2024/11/25 11:44:18

一、优化器

1、SGD是什么?

  • 批梯度下降(Batch gradient descent):遍历全部数据集算一次损失函数,计算量开销大,计算速度慢,不支持在线学习。
  • 随机梯度下降(Stochastic gradient descent,SGD)每次随机选择一个数据计算损失函数,求梯度并更新参数,计算速度快,但收敛性能可能不太好。
  • 批量随机梯度下降(Min-batch SGD):用小批量样本来近似全部,将样本分为m个mini-batch,每个mini-batch包含n个样本。
  • 使用动量(Momentum)的随机梯度下降法(SGD): 在随机梯度的学习算法中,每一步的步幅都是固定的,而在动量学习算法中,每一步走多远不仅依赖于本次的梯度大小还取决于过去的速度。速度是累积各轮训练参数的梯度。动量主要解决SGD的两个问题:一是随机梯度方法引入的噪声;二是Hessian矩阵病态问题,可以理解为SGD在收敛过程中和正确梯度相比来回摆动比较大的问题。

2、简单介绍下Adam算法

RMSprop将学习率分解成一个平方梯度的指数衰减的平均。Adam中动量直接并入了梯度一阶矩(指数加权)的估计。其次,相比于缺少修正因子导致二阶矩估计可能在训练初期具有很高偏置的RMSProp,Adam还包括偏置修正,修正从原点初始化的一阶矩(动量项)和(非中心的)二阶矩估计。本质上是带有动量项的RMSProp,它利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。Adam的优点主要是经过偏置校正后,每一次迭代学习率都有个确定范围,使得参数比较平稳。

3、Adam和SGD的区别

  • SGD缺点是其更新方向完全依赖于当前batch计算出的梯度,因而十分不稳定。
  • Adam的优点主要在于:①考虑历史步中的梯度更新信息,能够降低梯度更新噪声。②此外经过偏差和校正后,每一次迭代学习率都有个确定单位,使得参数比较平稳。
  • 但Adam可能对前期出现的特征过拟合,后期才出现的特征很难纠正前期的拟合效果。且SGD和Adam都没法很好的避免局部最优问题。

二、过拟合

1、过拟合指什么?造成的原因是什么?解决方法有哪些?

  • 定义:模型在训练集上表现很好,但在测试集和新数据上表现很差。
  • 出现的原因:①模型的复杂度过高、参数过多②训练数据比较小 ③训练集和测试集的分布不一致④样本里面的噪声数据干扰过大,导致模型过分记住了噪声特征
  • 解决方法:①降低模型的复杂度 ②数据增强 ③正则化(l1, l2, dropout)④早停

2、过拟合与欠拟合的比较

过拟合:模型在训练集上表现很好,但在测试集和新数据上表现很差。输出结果高方差Variance,模型很好的适配训练样本,但在测试集上表现很糟,有一个很大的方差。 

欠拟合:模型在训练集和测试机上的性能都较差,输出结果高偏差bias,模型不能适配训练样本,有很大的偏差。

3、偏差和方差的区别

  • 偏差:偏差度量了学习算法的期望预测和真实结果的偏离程度,刻画了学习算法本身的拟合能力。
  • 方差:方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响。

三、归一化

1、批量归一化(BN)是什么?有什么作用?

  • 批量归一化(BN)的计算公式如下:

  • 作用:加快网络的训练与收敛的速度;控制梯度爆炸,防止梯度消失。

2、训练与推理时BN中的均值、方差计算差异是什么?

  • 训练时,均值、方差分别是该批次内数据相应维度的均值和方差。
  • 推理时,均值、方差是基于所有批次的期望计算得到的。其中在推理时所用的均值和方差时通过移动平均计算得到的,可以减少存储每个batch均值方差的内存。

3、LN(layer normalization)和BN的区别

LN和BN相比,只考虑单个sample内的统计变量,因此也不用使用BN实现中的running mean, running var。LN也完全不用考虑输入batch_size的问题。

4、transformer中为什么不适用BN归一化?

  • 一种解释是,cv和nlp数据特性不同,对于nlp数据,前向和反向传播中,batch统计量及其梯度都不太稳定,一个batch中每个句子对应位置分量不一定有意义。
  • 要能在某个维度做独立同分布假设,才能合理归一化。对于cv来说,batch之间的图像是独立的,但nlp的文本本质上可以看成一个时间序列,而时间序列是不定长的,长度不同的序列原则上属于不同的统计对象,所以很难得到稳定的统计量,得不到稳定的统计量,BN就无法成立,因为BN依靠滑动平均来获得一组预测用的统计量。

5、梯度消失和梯度爆炸的主要原因

  • 梯度消失:主要是网络层较深,其次是采用了不合适的损失函数,会使得靠近输入层的参数更新缓慢。导致在训练时,只等价于后面几层的浅层网络的学习。
  • 梯度爆炸:一般出现在深层网络和权值初始化值太大的情况下。在深层神经网络或循环神经网络中,误差的梯度可在更新中累积相乘。如果网络层之间的梯度值大于1.0,那么重复相乘会导致梯度呈指数级增长,梯度会变得非常大,然后导致网络权重的大幅更新,并因此使网络变得不稳定。梯度爆炸会使得训练过程中,权重的值变得非常大,以至于溢出,导致模型损失变成NaN等。
  • 解决方法:梯度剪切,对梯度设定阈值,权重正则化,BN,残差网络的捷径(shortcut)

6、Pytorch中的乘法

  • 数乘运算:torch.mul
  • 向量点积:torch.dot,计算两个张量的点乘积(内积),两个张量都为一维向量。
  • 矩阵乘运算:torch.mm, 输入的两个tensor shape分别使n x c, c x m,输出使n x m;
  • torch.matmul,对二维张量执行的操作就是torch.mm, 此外还可以用于高维张量运算。
  • @符号乘法相当于矩阵乘torch.mm,严格按照第一个参数的列数要等于第二个参数的行数。

四、神经网络

1、什么是卷积网络?

对图像和滤波矩阵做内积的操作就是卷积操作。

其中图像是指不同的数据窗口数据;滤波矩阵是指一组固定的权重,因为每个神经元的多个权重固定,所以又可以看作一个恒定的滤波器fliter;内积是指逐个元素相乘再求和的操作。

2、什么是CNN的池化pooling层?

池化是指取区域平均或者最大,即平均池化或最大池化。

上图所展示的是取区域最大,即上图左边部分中 左上角2x2的矩阵中6最大,右上角2x2的矩阵中8最大,左下角2x2的矩阵中3最大,右下角2x2的矩阵中4最大,所以得到上图右边部分的结果:6 8 3 4

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

CNN的卷积核通道数 = 卷积输入层的通道数

CNN的卷积输出层通道数 = 卷积核的个数

4、简述下什么是生成对抗网络(GAN)?

假设有两个模型,一个是生成模型(Generative Model,下文简写为G),一个是判别模型(Discriminative Model,下文简写为D),判别模型(D)的任务就是判断一个实例是真实的还是由模型生成的,生成模型(G)的任务是生成一个实例来骗过判别模型(D),两个模型相互对抗,最终使得生成模型生成的实例域真实的没有区别,判别模型无法区分自然的还是模型生成的。

5、简要介绍下tensorflow的计算图?

 tensorflow的计算图也叫数据流图。数据流图用节点(nodes)和边(edges)的有向图来描述数学计算。节点一般用来表示施加的数学操作,但也可以表示数据输入(feed in)的起点和输出(push out)的终点,或者是读取/写入持久变量(persistent variable)的终点。“边”表示“节点”之间的输入/输出关系,这些数据“边”可以输运“size可动态调整”的多维数据数组,即“张量tensor”。张量从图中流过的直观图像是这个工具取名为“tensorflow"的原因。一旦输入端的所有张量都准备好,节点将被分配到各种计算设备完成异步并行地执行运算。

6、有哪些深度学习(RNN、CNN)调参的经验?

CNN调参主要是在优化函数、emdbedding 的维度、以及残差网络的层数几个方面。

  • 优化函数方面有两个选择:SGD,Adam,相对来说Adam要简单很多,不需要设置参数,效果也还不错。
  • embedding随着维度的增大会出现一个最大值点,也就是开始时是随维度的增加效果逐渐比那好,到达一个点后,而后随维度的增加,效果会变差。
  • 残差网络的层数与embedding的维度有关系,随层数测增加,效果变化也是一个凸函数。
  • 可能包含激活函数、dropout层和BN层的使用。激活函数推荐使用relu, dropout层数不宜设置过大,过大会导致不收敛,调节步长可以是0.05,一般调整到0.5或0.5就可以找到最佳值。

7、为什么不同的机器学习领域都可以使用CNN,CNN解决了这些领域哪些共性问题?他是如何解决的?

CNN的关键是卷积运算,卷积核和卷积输入层进行局部连接可以获取整个输入的局部特征信息或者说是每个输入特征的组合特征。所以CNN的本质是完成了特征提取或者说是对原始特征的特征组合工作,从而增加模型的表达能力。不同领域的机器学习都是通过数据的特征进行建模,从而解决该领域的问题。故CNN解决了不同领域的特征提取问题,所用的方法是基于局部连接/权值共享/池化操作/多层次结构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/980549.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【HTML/CSS】入门导学篇

本文属于HTML/CSS专栏文章,适合WEB前端开发入门学习,如果有所帮助请一键三连支持,对博主系列文章感兴趣点击下方专栏了解详细。 本文内容出自B站pink老师的前端入门教程,感谢pink老师!!! 视频链…

【ARM CoreLink 系列 1 -- CoreLink 系列 产品介绍】

文章目录 ARM CoreLink 介绍ARM CoreLink InterconnectARM CoreLink 处理器外设ARM CoreLink Memory Controllers ARM CoreLink 介绍 ARM的CoreLink系列产品是一套能够进行高效互联的组件和工具,它们用于构建高性能、低功耗的嵌入式和消费电子设备。CoreLink产品系…

Mac MySQL初始登录root报错access denied解决方法

如图,当在mac m2上首次安装mysql后尝试登录root用户时,无论输入什么样的密码,或者直接回车键,都会显示access denied for user rootlocalhost。同时win和ubuntu也出现了一模一样的问题,先记录一下mac的解决方法。 参考…

Sigrity仿真报错:找不到电容的S参数?

很多电子工程师会选择使用Sigrity软件进行高速PCB信号仿真,但在使用过程可能会遇见报错情况,其中之一是提示找不到电容的S参数,那么如何解决这个问题? 一般来说,S参数的全称为Scatter参数,即散射参数&#…

STM32单片机OLED贪吃蛇游戏记分计时

实践制作DIY- GC00165---OLED贪吃蛇游戏 一、功能说明: 基于STM32单片机设计---OLED贪吃蛇游戏 二、功能说明: STM32F103C系列最小系统板0.96寸OLED显示器上、下、左、右4个按键 1.通过OLED配合按键实现贪吃蛇游戏 2.可以上下左右移动。 3.可以统计显…

JavaScript-----DOM元素

目录 前言: 1. DOM介绍 2. 获取节点 3. 操作HTML内容 4. 监听事件 案例 5. 操作节点的标签属性 6. 操作样式 7. 创建、添加、删除节点 前言: 在此之前我们要想去操作网页元素一般是去通过CSS选择器实现的,今天我们就学习JavaScript里…

bit、bin 、mcs文件区别

FPGA里面的可执行文件都涉及到 *.bit, *.mcs, *.bin 和 *.elf。 bit文件 bit 文件一般用于JTAG在线进行调试的时候,是把bit文件是烧写到FPGA中进行在线调试。 bin文件 bin 文件是二进制文件,按顺序只包含原始字节流&#xff0c…

74HC595

简介 74HC595 是一个 8 位串行输入、并行输出的位移缓存器,其中并行输出为三 态输出(即高电平、低电平和高阻抗) 15 和 1 到 7 脚 QA--QH:并行数据输出 9 脚 QH 非:串行数据输出 10 脚 SCLK 非( MR&#…

【UE 材质】制作飘动的旗帜

效果 步骤 1. 首先在建模软件中创建一个平面,注意分段数一定要多 2. 在UE中创建一个材质,这里命名为“Mat_Flag” 打开“Mat_Flag”,先将旗帜纹理连接到基础颜色 先选中导入的模型然后点击根据选中的模型预览材质 创建如下节点可以看到此时模…

本地开发环境大小写不敏感引发的问题

推荐阅读 大小写敏感知多少[1] 文件大小写与文件系统有关,与操作系统无关。 血泪教训--拿到新移动硬盘该做的第一件事[2] MacOS 默认的文件系统APFS,如果没有手动更改,默认不区分大小写(可以在初始化时设置为大小写敏感)。 而公司测试/生产环…

AOSP和AAOS,向左走还是向右走?

Android Automotive OS(AAOS)和Android Open-Source Project(AOSP)之间存在很多混乱。这两个Android版本经常被混淆使用,但它们代表不同的平台和方法。为汽车In-Vehicle Infotainment(IVI)项目选…

2023CSP-S初赛复习整理

目录 逻辑运算常见运算运算规则运算优先级例题 进制转换十进制转二进制、八进制、十六进制二进制、八进制、十六进制转十进制例题 主定理编程语言概况具体分类 逻辑运算 常见运算 非: n o t not not 即 与: a n d and and 即 ∧ ∧ ∧ 或&#xf…

依赖项的处理与层的创建与注册

依赖项的处理与层的创建与注册 依赖项的处理与层的创建与注册 新问题什么是 layer?layer 的创建与注册 与函数同时创建和绑定单独上传 layer 再绑定函数(推荐) 真正的运行时依赖 注册包的约定与平台强关联的运行时 1. 云端安装依赖2. 本地构建 Amazon Linux 2 容器环境3. 利用…

Nginx__高级进阶篇

目录 Nginx Web服务器 Nginx Proxy服务器 Nginx 邮 件 Nginx Web服务器 Nginx Proxy服务器 代理原理 正向代理:内网客户机通过代理访问互联网。通常要设置代理服务器地址和端口。 反向代理:外网用户通过代理访问内网服务器。内…

解决VSCode下载速度特别慢

背景: 我们在vscode官网下载vocode的时候速度慢得离谱,而且下载会断开,这时候我们需要将下载镜像切换到国内! 解决方法 我是用chrome浏览器,点击右上角的三个点按钮,点击下载内容。 如果你是用其他浏览器,可能使用其他方式跳…

“深入理解SpringMVC的注解驱动开发“

目录 引言1. SpringMVC的常用注解2. SpringMVC的参数传递3. SpringMVC的返回值4. SpringMVC页面跳转总结 引言 在现代的Web开发中,SpringMVC已经成为了一个非常流行和强大的框架。它提供了许多注解来简化开发过程,使得我们能够更加专注于业务逻辑的实现…

设置windos电脑开机自动启动chrome浏览器,并且打开指定网页

需求 web项目设置windos电脑开机自动启动chrome浏览器,打开指定网页地址,并设置为全屏显示 解决 使用windos的bat脚本,设置为开机自启动,代码如下 echo off cd /d %~dp0 title Chrome tasklist|find /i "chrome.exe"…

Hadoop的第二个核心组件:MapReduce框架第三节

Hadoop的第二个核心组件:MapReduce框架 九、MR程序运行的核心阶段的细节性知识1、MR程序在运行过程中,涉及到的阶段和作用2、MR程序运行的的第一个组件:InputFormat3、MR程序的Job提交流程的源码分析4、MR程序运行中Mapper组件的作用5、MR程序…

【IC设计】Chisel开发环境搭建

首先安装一个Ubuntu的虚拟机 然后给Ubuntu换个镜像,方便下载 注意换源后使用apt-get update更新下 安装vim(可以不做) 这里安装Vim是我感觉Ubuntu自带的vi编辑器似乎有问题,因为我按i进入【插入模式】并没有提示,所以…

气象监测设备中一般包括哪些设备?

气象监测设备是指用于测量和记录气象数据的设备,这些设备通常被安装在各种气象站上,用于监测对应的气象参数。 气象监测设备主要包括以下几种: 温湿度传感器:用于测量空气温度和湿度,是气象监测设备中的重要组成部分…