面试问题汇总(持续更新)

这篇博客全面总结了深度学习方面的面试问题,包括卷积的计算、过拟合解决方案、激活函数优缺点以及优化方法等核心知识点。此外,还涵盖了Python、C++、算法和操作系统等多个领域的问题,如Python内存管理、C++多态和静态成员、数据结构与算法应用,以及Linux和网络基础知识,提供了一个综合性的面试准备指南。
摘要由CSDN通过智能技术生成

目录

深度学习方面

卷积尺寸?计算量?参数数量?感受野?(*)

输出特征图尺寸:n’ * n’ * c’,n’ = (n+2p-k)/s+1 (向下取整)
计算量:总乘法/总加法次数=(k * k * c )* (n’ * n’ * c’)
参数数量:w个数:k * k * c * c’;b个数:c’
感受野:令n’=1,倒推n
k:卷积核尺寸
n:输入特征图尺寸
n‘:输出特征图尺寸
c:输入特征图通道数
c’:输出特征图通道数/卷积核个数

卷积的变种?

分组卷积(Group Convolution)
空洞(扩张)卷积(Dilated/Atrous Convolution)
深度可分离卷积(depthwise separable convolution)
可变形卷积网络(Deformable Convolution)
反卷积(deconvolution)
图卷积(Graph Convolution)
X-卷积(PointCNN);

过拟合怎么办?(*)

  1. 增加/清洗数据
    (1)增加数据量,减少特征维度
    数据扩充,数据合成(减少噪声比重)
    (2)清洗数据
    (3)其他
    每个epoch后shuffle数据(烤鱼,多次2面翻烤,鲁棒)
    加BN(降低batch内样本分布差异,但也同时允许有自己的分布)

  2. 减小模型复杂度
    (1)减少神经元个数,网络层数
    (2)增加正则化项
    (3)dropout(随机失活)
    (4)early-stopping(在验证集误差最小时,停止训练)
    (5)bagging集成学习(降低单一模型过拟合风险)

  3. 调整超参
    (1)增大学习率α
    (2)减少迭代次数
    (3)增加噪声

样本不均衡怎么办?

(1)样本多的类别,下采样
(2)样本少的类别,上采样
(3)设置阈值

检测任务中不均衡解决办法:
1.online hard example mining(OHEM);
2.Focal Loss;
3.class balanced cross-entropy;
4.local rank,PISA,ISR;
5.过采样;

BN原理和作用?测试时怎么用?(*)

  • 原理:将一个batch的数据变换到,均值为0,方差为1的正态分布上
  • 作用:使得数据分布一致,每层的梯度不会随着网络层数增加而发生太大变化, 避免发生梯度消失,加快收敛,防止过拟合
  • 测试:用训练阶段的均值,方差,作为测试样本的均值和方差
    在这里插入图片描述

梯度消失?梯度爆炸?梯度弥散?(*)

梯度弥散
接近输出层,梯度大,更新快,收敛快;接近输入层,梯度小,更新慢,收敛慢

梯度消失

  • 现象:高层w<1,由于连乘效应,向输入层传播时,梯度逐渐变小,底层梯度接近0
  • 原因:发生在接近输入层,激活函数饱和,将(-∞ ,+∞)压缩到(0,1)之间,导数范围(0,0.25)
  • 解决:
    (1)减少网络层数
    (2)换非饱和激活函数
    (3)加BN

梯度爆炸

  • 现象:
    (1)loss很小,无法更新
    (2)模型不稳定,更新过程loss变化大大
    (3)参数溢出,loss变成NaN

  • 原因:底层w>1,由于连乘效应,向输出层传播时,高层梯度太大

  • 解决:
    (1)减少网络层数
    (2)梯度裁剪
    (3)权重正则化
    检查网络权重大小,惩罚产生较大权重值的损失函数。
    若搭网络时已设正则化参数,调用以下代码,可以直接计算正则损失:

regularization_loss = tf.add_n(tf.losses.get_regularization_losses(scope='my_net'))

(4)加BN
(5)加残差结构

介绍droppout?为什么可以防止过拟合?(*)

Dropout 是指在模型训练时随机让网络某些隐含层节点的权重不工作,不工作的那些节点可以暂时认为不是网络结构的一部分,但是它的权重得保留下来(只是暂时不更新而已),用于防止模型过拟合。

防止参数过分依赖训练数据,减少神经元之间复杂的共适应关系,增加参数对数据集的泛化能力。

优化方法

定义:在模型空间中找到在模型评估指标上表现最好的模型,加快网络训练
(1)GD
(2)SGD
原理:用单个样本的损失近似平均损失,计算梯度,适用于小样本
不足:每次更新只用一个样本,信息量有限,估计方差大,容易陷入山谷震荡,和鞍点停滞,导致收敛不稳定或者不收敛
(3)BGD
(4)Momentum
为了获得惯性保持,当前梯度计算会考虑之前的梯度,但是之前的梯度会做一定程度的衰减
(5)Adagrad
为了获得环境感知,自适应调整学习率,当前学习率和之前梯度的模成反比。存在有效学习率过早或过量减小
(6)Adam
为了获得惯性保持和环境感知,分别计算梯度的一阶矩(之前梯度和当前梯度的平均)和二阶矩(之前梯度平方和当前梯度平方的平均)

传统迭代法
x_(n+1)= x_n - f(x_n)) /(f’(x_n) f(x) = f(x_0 ) + (x-x_0 )f’(x_0)
x_(n+1)= x_n - f’(x_n))/(f’’(x_n) f(x) = f(x_0 ) + (x-x_0 ) f’ (x_0 )+1/2 (x-x_0 )^2 f’’(x_0)

L1和L2正则的特点?

L1 L2
分布 拉普拉斯 高斯
目的 限制参数过多或者过大,避免模型更加复杂
适用 模型中有很多相关特征,用L1消除共线性问题 样本足够多,用L2防止过拟合

激活函数优缺点?(*)

在这里插入图片描述

  • 特性:
    定义域:(-∞,+∞) ;值域:(0,1)
    在定义域内,是连续、光滑的函数,处处可导,导数为 f’(x) = f(x)*(1-f(x))
  • 优点:
    (1)实现非线性变换
    (2)梯度容易计算
    (3)可以进行数据压缩
  • 缺点:
    双边饱和,易出现梯度消失
    幂运算耗时
    输出均值非0

在这里插入图片描述

  • 特性:
    定义域:(-∞,+∞);值域:(-1,1)
    在定义域内,是连续、光滑的函数,处处可导,导数为 f’(x) =1-f2(x)

  • 优点:
    (1)实现非线性变换
    (2)梯度容易计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值