深度学习面经-CNN系列

一、简介

CNN代表卷积神经网络,是一类广泛应用于计算机视觉和图像处理任务的深度学习模型。CNN在图像识别、物体检测、人脸识别等领域取得了重大突破,并成为深度学习中的重要组成部分。CNN的基本结构由多个卷积层、池化层和全连接层组成。其主要特点是通过局部感受野(卷积核)与输入图像进行卷积操作,从而提取图像的局部特征。接着使用池化层对特征进行下采样,减少参数数量和计算量,同时保留重要信息。最后,通过全连接层将池化层输出映射到相应的类别。

二、面经

1、什么是卷积?什么是池化?

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

3、CNN的特点以及优势?

4、CNN的权重共享是怎么做的?

5、CNN卷积层参数数量是怎么计算的?

6、若CNN网络很庞大,在手机上运行效率不高,对应模型压缩方法有了解吗?

7、介绍一下模型压缩常用的方法?为什么用知识蒸馏?如果让模型速度提高一倍,有什么解决方案?

8、为什么用模型蒸馏?

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

10、简述CNN常用的几个模型,简述分类网络的发展史?

11、VGG 3*3 卷积核的优势?

12、CNN中的空洞卷积的作用是什么?

13、简单介绍一下1*1卷积?

14、什么时候用CNN,什么时候用DNN?

15、感受野的定义是什么?

三、面经参考回答

1、什么是卷积?什么是池化?

参考回答:对输入层定义一个数据窗口数据和由神经元的多个权重组成的一个滤波矩阵做内积的操作就是所谓的卷积操作,也是卷积神经网络的名字来源。池化,简言之,即取区域平均或最大。卷积和池化是CNN中两个重要的操作,一般用于图像处理和特征提取。卷积是一种特殊的线性操作,它通过将一个小的滤波器(也称为卷积核或局部感受野)应用于输入图像的不同位置来提取图像的局部特征。卷积操作的过程是将卷积核与图像对应位置的像素值相乘,然后将所有元素相加,形成一个新的特征图。通过滑动卷积核并在整个图像上重复这个过程,我们可以获得整个输入图像的特征图。

卷积操作在图像处理中具有以下优势:

  • 参数共享:卷积核的参数在整个图像上共享,减少了需要学习的参数数量,节省了内存和计算资源。
  • 局部感知:卷积核的大小决定了模型在图像上感知的局部区域大小,使模型更专注于图像的局部结构。

池化是CNN中的一种下采样操作,它的目的是减少特征图的尺寸,减少模型的复杂度,并且有助于防止过拟合。池化操作通过在特定区域内对特征进行聚合来实现。常见的池化方法有最大池化(Max Pooling)和平均池化(Average Pooling):

  • 最大池化:在每个池化区域中选择最大的特征值作为输出。它能够保留最显著的特征,有助于提取图像中的纹理和边缘等信息。
  • 平均池化:在每个池化区域内计算特征的平均值作为输出。平均池化相对于最大池化更加平滑,有助于保留图像中的整体趋势和一般性信息。

池化操作的参数是池化区域的大小和步幅(stride),通过调整这些参数,可以控制特征图的尺寸和下采样程度。

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

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

3、CNN的特点以及优势?

参考回答:CNN具有许多独特的特点和优势,使其成为计算机视觉和其他领域中最受欢迎的深度学习模型之一。主要特点和优势可能包括以下几点:

  • 局部感知性: CNN通过卷积操作对输入数据的局部区域进行感知和处理。这使得它能够提取图像、语音和自然语言等数据中的局部特征,从而更好地捕捉数据的结构和模式。
  • 参数共享: CNN中的卷积核在整个输入数据上共享参数,这意味着对于相同的特征,无论在图像中的哪个位置,使用相同的卷积核进行处理。这种参数共享减少了需要学习的参数数量,节省了内存和计算资源,并使模型更具有泛化能力。
  • 稀疏连接: 在CNN中,卷积核通常只与输入数据的一小部分区域进行连接,即稀疏连接。这使得模型更加适合处理高维数据,如图像,而不会因为参数量的急剧增加而导致过拟合问题。
  • 池化操作: 池化层是CNN中的重要组成部分,它能够减少特征图的尺寸并保留重要的特征信息。通过池化操作,模型能够更好地处理大规模数据,并且有助于防止过拟合问题。
  • 平移不变性: 对于图像处理任务,目标通常不会因为其在图像中的位置发生变化而改变其身份。CNN通过卷积层的特性,使得模型对平移具有不变性,即对于目标在图像中的不同位置,能够产生相似的特征表示,从而增加了模型的鲁棒性。
  • 对抗样本的鲁棒性: CNN在某种程度上对抗抵抗一些对抗样本攻击,即经过微小的扰动后,图像仍能被正确分类。尽管不是完全鲁棒的,但CNN在一定程度上对抗干扰。
  • 可迁移学习: 由于CNN的特征提取层可以学习到通用的特征表示,预训练的CNN模型在其他任务上往往能够实现良好的迁移学习。通过在预训练模型的基础上微调(fine-tuning),可以在较少的训练数据下实现更好的性能。
  • 高性能: CNN在图像处理、语音识别、自然语言处理等领域表现出色。由于它的局部感知性和特征提取能力,CNN已成为图像分类、目标检测、人脸识别和语义分割等任务的首选模型。

4、CNN的权重共享是怎么做的?

参考回答:卷积神经网络(CNN)中的权重共享是一种技术,它允许在不同的位置使用相同的权重来进行卷积操作。这在图像处理中特别有用,因为图像的局部区域可能具有相似的特征。通过权重共享,可以显著减少需要学习的参数数量,从而降低计算成本并防止过拟合。在卷积层中,权重共享是通过使用同一组卷积核(卷积滤波器)来实现的。在卷积操作中,无论卷积核在输入图像的哪个位置,它的权重是相同的。这意味着,无论在图像的哪个区域执行卷积,卷积核的权重都不变。通过这种权重共享机制,卷积核可以在整个输入图像上滑动,识别相似的特征,而不需要为每个位置学习不同的权重。这有效地减少了需要训练的参数数量,并且对于图像中的局部模式识别非常有用。

5、CNN卷积层参数数量是怎么计算的?

参考回答:CNN卷积层的参数数量可以通过以下公式来计算:

参数数量 = (卷积核高度 × 卷积核宽度 × 输入通道数 + 1) × 输出通道数

其中:

  • 卷积核高度和卷积核宽度是卷积核的尺寸,表示为像素数或特征图上的网格单元数。
  • 输入通道数是输入数据的通道数,例如,在RGB图像中,通道数为3。
  • 输出通道数是卷积层中使用的卷积核数量,也就是输出特征图的通道数。
  • 最后的加1是考虑到每个卷积核还有一个偏置项。

6、若CNN网络很庞大,在手机上运行效率不高,对应模型压缩方法有了解吗?

参考回答:我了解的有以下几种常用的模型压缩方法:

  • 参数量削减: 通过减少模型中的参数数量来减小模型的尺寸。常见的方法包括剪枝,即移除冗余的权重;量化,将高精度的权重转换为低精度表示;矩阵分解,将权重矩阵分解为更小的矩阵等。
  • 低秩近似: 将卷积层中的权重矩阵近似为低秩矩阵,以减少参数数量和计算量。
  • 深度可分离卷积: 使用深度可分离卷积代替标准卷积操作,可以显著减少参数数量和计算量,同时保持较好的性能。
  • 知识蒸馏: 将一个大型的教师模型的知识传递给一个小型的学生模型。通过学生模型学习教师模型的输出概率分布,可以提高学生模型的泛化性能,从而在小模型上实现高效运行。

7、介绍一下模型压缩常用的方法?为什么用知识蒸馏?如果让模型速度提高一倍,有什么解决方案?

参考回答:知识蒸馏是一种有效的模型压缩方法,通过在训练过程中将教师模型的知识传递给学生模型,可以在保持学生模型轻量化的同时,获得与教师模型相近的性能。这种方法尤其适用于将大型模型部署到资源受限的设备上,同时还能保持相对较高的精度。要让模型速度提高一倍,有以下解决方案:

  • 硬件优化: 使用高性能硬件,如GPU或TPU,能够显著提高模型的计算速度。
  • 模型剪枝: 通过剪枝移除冗余的权重和神经元,减小模型尺寸,从而加快计算速度。
  • 网络结构优化: 调整网络结构,例如降低网络的深度或减少卷积核的数量,以减少模型计算复杂度。
  • 量化: 将模型的权重和激活值从浮点数表示转换为定点数或较低位数的浮点数表示,减少计算量。
  • 低秩近似: 将卷积层的权重矩阵近似为低秩矩阵,减少模型计算复杂度。
  • 深度可分离卷积: 使用深度可分离卷积代替标准卷积操作,可以显著加快计算速度。

通过结合上述方法,可以有效地提高模型的速度,并在资源有限的设备上实现高效的部署。

8、为什么用模型蒸馏?

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

小白机器学习面试指南 文章被收录于专栏

林小白的机器学习指南,从本人面试的机器学习算法岗位出发,对机器学习“八股文”做详细的介绍、推导;

全部评论
谢谢,码
点赞 回复 分享
发布于 2024-03-25 15:14 北京
谢谢佬
点赞 回复 分享
发布于 2024-01-29 15:46 安徽
mark
点赞 回复 分享
发布于 2023-09-08 10:25 天津
mark
点赞 回复 分享
发布于 2023-07-28 22:59 安徽
mark
点赞 回复 分享
发布于 2023-07-28 22:10 安徽
mark
点赞 回复 分享
发布于 2023-07-28 12:42 江苏
mark
点赞 回复 分享
发布于 2023-07-26 02:56 江苏

相关推荐

昨天 21:03
腾讯_HR
腾讯-混元大模型面经-华5硕部门与岗位:TEG - 混元大模型团队 - 大模型对齐一面自我介绍,过实习,讲论文,论文过的比较细,有说的笼统的地方面试官会实时进行询问交流了解哪些大模型,简要挑一两个介绍一下,当时说了 Qwen 和 DeepSeek,然后面试官又问了这两个有什么区别接着上一问,为什么大家都开始探索 MoE 架构,MoE 相比 Dense 有什么好处在之前实习的时候用 LoRA 微调过 Qwen,于是问了有没有全量微调过,有没有对比过两者的性能表现讲一下大模型训练和推理的流程,SFT 和 RLHF 的作用分别是什么在 RLHF 中,目前主流的强化学习算法有哪几个,写一下损失函数的表达式代码:22. 括号生成代码:多头自注意力一面问的八股还是比较多的,问的也比较细,而且还写了两道代码题,整个面试花的时间也比较多,大概一个半小时左右二面自我介绍,过实习和论文,面试官会一起进行探讨,包括工作的动机、贡献和结果,也会提一些问题和建议之前实习用 DeepSpeed 微调过 Qwen2-72B,于是面试官问了 ZeRO-1,ZeRO-2,ZeRO-3 三个模式的区别当时你用 DeepSpeed ZeRO-3 来微调 Qwen2-72B,每一张卡占用的显存大概是多少,估算一下为什么是占这么多的显存除了 DeepSpeed,还用过其他的什么优化方法吗我看你也用到了 LoRA,知道 LoRA 的原理吗,A 和 B 两个矩阵怎么初始化,有了解过其他的初始化方法吗对 RLHF 了解的多吗代码:3. 无重复字符的最长子串二面更多的是结合具体的工作来问的,从用到的东西来引出问题,问的也比较灵活。当然因为部门主要是做对齐的,所以也大概聊了聊 RLHF三面自我介绍,挑一个觉得做的比较好的论文和实习讲一下,面试官问的比较详细,为什么选现在这种方案,为什么 work,其他方案有考虑吗在微调 Qwen 的时候,数据是怎么构造的,有用到什么数据清洗方法吗,数据配比是怎么做的讲一下 RLHF 的流程,之前有用 RLHF 做过模型对齐吗在做对齐的时候,为什么 SFT 之后还要做 RLHF,只用 SFT 可以吗知道哪些强化学习算法,除了 PPO 和 DPO 这些呢,DeepSeek 用的 GRPO 相比于 GPT 的 PPO 做了哪些改进开放题:对目前大模型的发展有什么看法代码:零钱的两个题 322. 零钱兑换518. 零钱兑换 II三面面试官更聚焦于对齐这一块的内容,考的比较深。由于之前没有接触过强化学习,答得还是比较吃力的,不过面试官还挺好的,会一起讨论来做引导四面自我介绍,过论文和实习,问的也比较细,这里能明显的感受出来面试官的视角更系统,会把这些工作串起来问我看你简历上没写 RLHF,平常有用过 RLHF 吗推导一下神经网络反向传播的过程一道排列组合的概率题开放题:你觉得大模型目前还有哪些可以改进的点四面整体更看重思维和基础,没有考察什么八股总结一共四轮技术面,整体来说强度比较大,对于大模型八股的考察比较细,对大模型的理解问的也比较深刻,包括一些数理逻辑基础,考察的比较全面腾讯-混元大模型面经-华5硕-主页内tui腾讯2026校园招聘技术研发提前批专项,报名启动面向对象:毕业时间在2025.1.1~2026.12.31期间的同学开放岗位:前端、移动端、PC端、游戏端、测试开发、技术运营等招聘项目选择:【人才专项-技术研发提前批】,截止时间:8月5日。技术研发提前批专项面试未通过,不影响后续参加常规应届生招聘。专项优势:-更大几率发起面试,投递即进专项简历库-更快流程推进,先人一步拿到正式offer-更高offer成功率,大前端、测试开发等热招岗位需求多多内推链接:https://join.qq.com/resume.html?k=ANQI6RfQ3rhPS2dpyIkeSw(内推简历优先筛选,加速流程推进)
帮你内推|腾讯 校招
点赞 评论 收藏
分享
1️⃣自我介绍:【⌚️10分钟】点评:流水账,有些磕磕绊绊,自我介绍环节的项目介绍的很详细,非常冗余。优化:写逐字稿,背诵,提升语言表达能力。2️⃣经常问题的问题优化:【⌚️20分钟】1:transform结构了解吗?回答点评:回答的很简单,5分吧,说了transform的结构是encode-decode结构,分块,每个块里面有四个组建,MHA、FFN、LN、残差链接,介绍和理解不深刻。提升指导:梳理回答逻辑结构,讲解MHA、FFN、LN、残差链接的添加逻辑和含义,其中MHA给出代码层面理解,从2分钟的回答变成6分钟的回答。2:多头自注意力机制是啥?公式是啥?代码你会写吗?回答点评:讲了公式,但是掌握的不够细致,pytorch代码框架不熟悉,attention_mask机制没有写出来。提升指导:讲述代码的原理,如何使用代码回答问题,展示自己的理解深刻。3:rag中的多路召回是什么?embeding为啥用智源的BGE-large/Base?回答点评:使用了BM25和向量召回,但是没有讲出来两个的区别和联系提升指导:先讲原理,再讲述下语义理解能力和泛化能力的区别,计算的效率,两个互为补充等。3️⃣不会回答的问题指导:【⌚️40分钟】1:  LN不太会回答,看网上的回答很多,但是不是理解层面。2:我的向量召回是faiss做的,和这个相关的问题我如何准备?3:经常会被问到rag用的啥框架,这个问题如何回答?还需要准备框架的知识吗?4:面试官经常问我,rag的模型是啥?有做微调吗?如果不做微调怎么回答?5:大模型还需要补充那些知识?📳对于想求职算法岗的同学,如果想参加高质量项目辅导,提升面试能力,欢迎后台联系。
查看8道真题和解析
点赞 评论 收藏
分享
昨天 19:31
武汉大学 Java
1. 自我介绍2. 两段开源经历拷打,主要聊开发过程遇到的事,技术涉及较少,虽然也没什么技术,估计就是确认一下是楼主干的。3. 面试官介绍自己部门不是搞数据库内核的,询问楼主真想来吗。楼主当然不会告诉面试官楼主快star一面挂,给予了肯定的回答。4. 开发习惯闲聊,看不看火焰图,跨语言的benchmark怎么测的巴拉巴拉。5. 正式开始拷打,汗流浃背了。楼主项目就是常规15445+tinykv,遇到一个也都做过的面试官相当正常。6. 15445 lru-k算法、crabbing 协议(还包括读写锁细节,楼主都快记不得了,头一次有面试官问这个)。7. ACID 含义(楼主顺便聊了一下CAP的C跟ACID的C区别,问就是牛客面经,直接预判面试官)8. 15445 三种隔离级别(RU, RC, RR,这块楼主早忘记了,所以回答的是mysql和pg的实现细节,参考:https://gg2002.github.io/2025/03/16/mysql-latch,顺便扯了几嘴mysql为啥会有表级锁和binlog,因为mysql是一个分离式的架构巴拉巴拉)9. tinykv拷打,multi raft必要性,项目思想。10. 分布式事务Percolator跟寻常单体数据库事务的差别(楼主大败而归,说到3列,但是忘记怎么具体地写这3列)11. raft全流程介绍(leader election+log replication,楼主顺便加了点行业现状试图展示知识面)12. raft脑裂问题,prevote优化介绍13. raft的Leader Lease和ReadIndex优化(更是大败而归,头一次有面试官问这个,早就忘记了,扯了几嘴思想草草而过)14. 面试官询问tinysql,楼主没做过,但楼主打过ob数据库比赛,说那个比赛sql写的多,再次跟面试官闲聊一阵15. 广告场景题,感觉面试官也没想好,反正说了好几分钟背景,然后问楼主广告曝光log和点击log哪个存kv好些,楼主说点击log少些,存点击,面试官说错,然后解释,然后楼主顺着扯了几嘴,然后就过了16. 算法题,线程安全的LRU,允许使用cppreference和大模型,面试官也是被楼主思想精通但是stl操作几乎全忘的操作惊到了,不过这次面试官很有耐心,楼主磕磕绊绊地还是写出来了差不多的东西(不过因为ide只有gcc8,楼主的一堆写法还是没过编译)17. 此时面了1h20min了,面试官说问点简单的c++八股。18. 构造函数、析构函数和虚函数,使用场景(顺便提一嘴shared_ptr包裹的base指针就算析构函数不是虚函数也会调用相应的析构函数,原理是deleter)19. static 用法(楼主又忘了,扯了一通const、数据区巴拉巴拉的)20. 反问环节:业务:广告取数,职能在db内核开发与大数据开发之间的一个岗位前后耗时1h40min,要面虚脱了。许愿三面吧。快star面试官说楼主经历做rds就够了,干内核还是差点硬核经历。楼主其实也这么觉得,所以很多很硬核的成员变更、分布式事务细节都没太看(结果就被拷打了,马上开补),rds也挺好的,这个岗看上去也比较合楼主口味,楼主早就不强求内核开发了。
面试问题记录
点赞 评论 收藏
分享
1️⃣抖音一面1、聊项目。2、AUC的两种公式是?你能证明这两种等价的吗?3、BERT-CRF中,为什么要加CRF?好处是?4、self-attention为什么要用QKV三个矩阵,不用有什么问题?有没有哪个模型的Q和K矩阵是一样的?5、reinforce属于on-policy还是off-policy?为什么?6、reinforce带上baseline好处是?reinforce的loss写一下?7、策略梯度会推导吗?简单写一下?8、代码题(代码题一般别着急写,先跟面试官说下思路,确定了再写):lc 46,全排列(lc表示leetcode,下同)。lc 73,矩阵置0。2️⃣抖音二面1、介绍项目。2、知识蒸馏有哪几种?你觉得哪种效果最好?3、nlp的数据增强方法,主要有哪几种?每一种举个例子?4、分类的损失函数为什么是交叉熵而不是mse?5、BERT对输入文本的长度有什么限制,为什么要限制长度呢?6、BigBird里面有哪几种注意力机制?相比原始transformer的self-attention的优势?7、场景题:如何根据拼多多的商品数量,估计淘宝的商品数量?8、给出emb_size, max_len, vocab_size, ff_inner_size,num_heads, 12层,求BERT参数量。9、代码题:n皇后问题。3️⃣抖音三面‍1、简单聊项目。2、CRF和HMM区别?CRF为什么比HMM效果好?3、如果BERT词表很大,比如vocab_size达到几百万,怎么办?4、快速手写一些transformer的mha(多头注意力),伪代码意思一下就行。5、为什么对比学习中,temperature很小,而知识蒸馏的temperature比较大?6、你觉得在抖音买东西,和淘宝、拼多多他们的区别是?(我没在抖音买过,就只能现场编。)7、你最近看到过哪些paper?简单介绍下?8、你觉得自己有那些优缺点?平时喜欢怎么缓解压力?📳对于想求职算法岗的同学,如果想参加高质量项目辅导,提升面试能力,欢迎后台联系。
查看26道真题和解析
点赞 评论 收藏
分享
评论
18
164
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务