去年面试字节的时候,准备了一些算法常用的面试知识点,事实证明,准备的还不错。现在分享给大家,希望自己求职路也顺利些。

目录

优化算法,Adam, Momentum, Adagard,SGD原理:

正则化:

Logit函数和sigmoid函数的关系:

损失函数:

交叉熵损失函数:

神经网络为啥使用交叉熵?

激活函数的作用:

逻辑回归和线性回归:

分类算法及其应用场景:

Batch Normalization:批标准化

欠拟合、过拟合的解决方法:

如何解决梯度消失和梯度爆炸问题

如何解决正负样本不平衡问题:

线性回归和逻辑回归:

训练网络不收敛的原因:

使用较小卷积核的好处:


高频问题:

优化算法,Adam, Momentum, Adagard,SGD原理

参考深度学习187页 /优化方法总结:SGD,Momentum,AdaGrad,RMSProp,Adam_Joe-Han的博客-CSDN博客_momentum sgd
自适应学习率算法
Adagard在训练的过程中可以自动变更学习的速率,设置一个全局的学习率,而实际的学习率与梯度历史平方值总和的平方根成反比。用adagrad将之前梯度的平方求和再开根号作为分母,会使得一开始学习率呈放大趋势,随着训练的进行学习率会逐渐减小
Momentum参考了物理中动量的概念,前几次的梯度也会参与到当前的计算中,但是前几轮的梯度叠加在当前计算中会有一定的衰减。用来解决梯度下降不稳定,容易陷入鞍点的缺点
SGD为随机梯度下降,每一次迭代计算数据集的mini-batch的梯度,然后对参数进行跟新。优点是更新速度快,缺点是训练不稳定,准确度下降。
Adam利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率,在经过偏置的校正后,每一次迭代后的学习率都有个确定的范围,使得参数较为平稳,结合momentum和adagrad两种算法的优势

正则化:

用来显示地设计来减少测试误差,修改学习算法,降低泛化误差而非训练误差.通过对目标函数添加一个参数范数惩罚,限制模型的学习能力。
L1正则化 各个参数的绝对值之和, 可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择;一定程度上可以防止过拟合。
稀疏矩阵指的是很多元素为0、只有少数元素是非零值的矩阵。以线性回归为例,即得到的线性回归模型的大部分系数都是0,这表示只有少数特征对这个模型有贡献,从而实现了特征选择。总而言之,稀疏模型有助于进行特征选择。
L2正则化可以防止模型过拟合  L2是各个参数平方和的开方值
L1不可导的时候该怎么办?     Q: 当损失函数不可导,梯度下降不再有效,可以使用坐标轴下降法,梯度下降是沿着当前点的负梯度方向进行参数更新,而坐标轴下降法是沿着坐标轴的方向,假设有m个特征个数,坐标轴下降法进参数更新的时候,先固定m-1个值,然后再求另外一个的局部最优解,从而避免损失函数不可导问题
了解L1、L2范数:深入理解L1、L2范数_取个名字最难了的博客-CSDN博客_l1范数图像

Logit函数和sigmoid函数的关系:

logistic function 是 logit funciton的反函数
sigmoid function不是某一个函数,而是指某一类形如"S"的函数,都可以成为sigmoid的函数.
区别logit\logistic\simoid函数:一篇文章搞懂logit, logistic和sigmoid的区别 - 知乎 关于机器学习中logit的含义,对于理解模型很有帮助
sigmoid的优点在于输出范围有限,所以数据在传递的过程中不容易发散。当然也有相应的缺点,就是饱和的时候梯度太小。
sigmoid还有一个优点是输出范围为(0, 1),所以可以用作输出层,输出表示概率;处处可导,

损失函数:

交叉熵损失 Cross Entropy :多分类问题常用的损失函数 
交叉熵主要是用来判定实际的输出与期望的输出的接近程度
交叉熵公式:

交叉熵损失函数

交叉熵损失函数经常用于分类问题中,特别是在神经网络做分类问题时,也经常使用交叉熵作为损失函数,此外,由于交叉熵涉及到计算每个类别的概率,所以交叉熵几乎每次都和sigmoid(或softmax)函数一起出现。
我们用神经网络最后一层输出的情况,来看一眼整个模型预测、获得损失和学习的流程:
1. 神经网络最后一层得到每个类别的得分scores(也叫logits);
2. 该得分经过sigmoid(或softmax)函数获得概率输出;
3. 模型预测的类别概率输出与真实类别的one hot形式进行交叉熵损失函数的计算
n代表类别的数量

神经网络为啥使用交叉熵?

MSE:均方误差,回归任务中最常用的性能度量
一道实际应用题 损失函数|交叉熵损失函数 - 知乎 写的无敌好,用一个多分类问题来讲解
softmax和sigmoid函数的区别与联系:
Sigmoid =多标签分类问题=多个正确答案=非独占输出
Softmax =多类别分类问题=只有一个正确答案=互斥输出
参考 Softmax函数和Sigmoid函数的区别与联系 - 知乎  

激活函数的作用:

是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。所以你没有非线性结构的话,根本就算不上什么神经网络。
relu比sigmoid的效果好在哪里?
relu(x) = max(0,x) 在大于0的部分梯度为常数,不会有梯度弥散现象;relu的导数计算的更快;relu在负半区的导数为0,所以神经元激活值为负数时,梯度为0,该神经元不参与训练,具有稀疏性。
relu的变体:leaky/'li:ki/ relus  

逻辑回归和线性回归:

线性回归用来做预测,LR用来做分类。线性回归是来拟合函数,LR是来预测函数。线性回归用最小二乘法来计算参数,LR用最大似然估计来计算参数。线性回归更容易受到异常值的影响,而LR对异常值有较好的稳定性。LR本质上还是线性回归,只是特征到结果的映射过程中加了一层函数映射,即sigmoid函数,即先把特征线性求和,然后使用sigmoid函数将线性和约束至(0,1)之间,结果值用于二分或回归预测。
SVM的推导: 推导 | SVM详解(1)SVM基本型 - 知乎
LR和SVM的异同:
LR和SVM都是分类算法(SVM也可以用与回归)LR是参数模型,SVM为非参数模型。LR采用的损失函数为logisticalloss,而SVM采用的是hingeloss。在学习分类器的时候,SVM只考虑与分类最相关的少数支持向量点。LR的模型相对简单,在进行大规模线性分类时比较方便。
逻辑回归方法基于概率理论,假设样本为1的概率可以用sigmoid函数来表示,然后通过极大似然估计的方法估计出参数的值
支持向量机基于几何间隔最大化原理,认为存在最大几何间隔的分类面为最优分类面
参考LR和SVM的区别 - 1直在路上1 - 博客园

分类算法及其应用场景:

单一的分类方法主要包括:LR逻辑回归,SVM支持向量机,DT决策树、NB朴素贝叶斯、NN人工神经网络、K-近邻;集成学习算法:基于Bagging和Boosting算法思想,RF随机森林,GBDT,Adaboost,XGboost。

Batch Normalization:批标准化

通过规范化的手段,将越来越偏的分布拉回到均值为0方差为1的标准正态分布,使得激活函数的输入值落在激活函数对输入比较敏感的区域,从而使梯度变大,加快学习收敛速度,避免梯度消失的问题。
参考:深度学习中 Batch Normalization为什么效果好?深度学习中 Batch Normalization为什么效果好? - 知乎
BN带来的好处。
(1) 减轻了对参数初始化的依赖,这是利于调参的朋友们的。
(2) 训练更快,可以使用更高的学习率。
(3) BN一定程度上增加了泛化能力,dropout等技术可以去掉。

欠拟合、过拟合的解决方法:

过拟合:早停法、决策树剪枝、正则化、
神经网络的dropout
逐层归一化(batch normalization)
增加样本,数据清洗之后在进行模型训练
集成学习Bagging使模型更加的稳定,其作用是因为降低了模型的方差,对过拟合有一定的作用

如何解决梯度消失和梯度爆炸问题

激活函数的原因,由于梯度求导的过程中梯度非常小,无法有效反向传播误差,造成梯度消失的问题
1)使用 ReLU、LReLU、ELU、maxout 等激活函数
sigmoid函数的梯度随着x的增大或减小和消失,而ReLU不会。
2)使用批规范化
通过规范化操作将输出信号x规范化到均值为0,方差为1保证网络的稳定性。从上述分析分可以看到,反向传播式子中有w的存在,所以w的大小影响了梯度的消失和爆炸,Batch Normalization 就是通过对每一层的输出规范为均值和方差一致的方法,消除了w带来的放大缩小的影响,进而解决梯度消失和爆炸的问题。

如何解决正负样本不平衡问题:

数据不平衡问题:
过采样,对训练集里面样本数量较少的类别(少数类)进行过采样,合成新的样本来缓解类不平衡。
欠采样,对训练集里面样本数量较多的类别(多数类)进行欠采样,抛弃一些样本来缓解类不平衡。
合成新的少数类
阈值移动

线性回归和逻辑回归:

参考:一、线性回归和逻辑回归_呆呆的猫的博客-CSDN博客_线性回归和逻辑回归 整理的特别好!!!必看!
逻辑回归的损失函数:对数似然损失函数
loss = -【yln a - (1-y)ln a】
其中y表示样本的真实标签,即0或者1.
a表示预测结果是0或者1的概率,则a的取值在区间【0,1】。
当因此上面多项式中我们单次智能考虑一种预测的结果--正例/负例。
考虑正例时,即y= 1时,loss函数=-【yln a】, 当a越接近于1,则ln a取的最大值, y = 1,则损失函数取得最小值。
补充:逻辑回归是做二分类的,也就是依据伯努利分布进行推导的算法
1、LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题)
2、两个方法都可以增加不同的正则化项,如l1、l2等等。所以在很多实验中,两种算法的结果是很接近的。
区别:
1、LR是参数模型,SVM是非参数模型。
2、从目标函数来看,区别在于逻辑回归采用的是logistical loss,SVM采用的是hinge loss,这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。
3、SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。
4、逻辑回归相对来说模型更简单,好理解,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算。
5、logic 能做的 svm能做,但可能在准确率上有问题,svm能做的logic有的做不了。

训练网络不收敛的原因:

(1)没有做数据归一化;
(2)没有检查过预处理结果和最终的训练测试结果;
(3)没有做数据预处理;
(4)没有使用正则化;
(5)Batch Size设的太大;
(6)学习率设的不合适;
(7)最后一层的激活函数错误;
(8)网络存在坏梯度,比如当Relu对负值的梯度为0,反向传播时,梯度为0表示不传播;
(9)参数初始化错误;
(10)网络设定不合理,网络太浅或者太深;
(11)隐藏层神经元数量错误;
(12)数据集标签的设置有错误
My Neural Network isn't working! What should I do?

使用较小卷积核的好处:

使用了3个3*3卷积核来代替7*7卷积核,使用了2个3*3卷积核来代替5*5卷积核,这样做的主要目的是在保证具有相同感知野的条件下,提升了网络的深度,在一定程度上提升了神经网络的效果。
对于两个3*3卷积核,所用的参数总量为2*(3*3)*channels, 对于5*5卷积核为5*5*channels, 因此可以显著地减少参数的数量。

计算机视觉算法 面试必备知识点(2022)相关推荐

  1. 计算机视觉算法 面试必备知识点(2022必会)

    第一部分:深度学习 1.神经网络基础问题 (1)Backpropagation(要能推倒) 后向传播是在求解损失函数L对参数w求导时候用到的方法,目的是通过链式法则对参数进行一层一层的求导.这里重点强 ...

  2. 算法面试必备-----数据分析常见面试题

    算法面试必备-----数据分析常见面试题 算法面试必备-----数据分析常见面试题 1.统计学问题 问题:贝叶斯公式复述并解释应用场景 问题:朴素贝叶斯的理解 问题:参数估计 问题:极大似然估计 问题 ...

  3. 算法面试必备-----贝壳算法面试准备

    算法面试必备-----贝壳算法面试准备 算法面试必备-----贝壳算法面试准备 机器学习基础 1.过拟合和欠拟合的学习曲线怎么画,横纵坐标轴分别代表什么?实际应用当中,如何区分你是过拟合还是前拟合? ...

  4. 算法面试必备-----数据库与SQL面试题

    算法面试必备-----数据库与SQL面试题 算法面试必备-----数据库与SQL面试题 1.数据库理论问题 问题:什么是数据库,数据库管理系统,数据库系统,数据库管理员? 问题:什么是元组,码,候选码 ...

  5. 算法面试必备-----数据仓库常见面试题

    算法面试必备-----数据仓库常见面试题 算法面试必备-----数据仓库常见面试题 问题:什么叫数据仓库? 问题:数据仓库建模 为什么需要数据仓库建模? 数据仓库建模方法? 1.ER模型 2.维度建模 ...

  6. Mysql面试必备知识点

    1.MySQL 相关存储引擎 因为目前大多互联网公司,用的最多的存储引擎就是 myisam 和 innodb.大多问 MySQL 有哪些存储引擎啊?都有什么区别?请详细说明一下,基本都是想面试者回答关 ...

  7. 干货|基于深度学习的目标检测算法面试必备(RCNN~YOLOv5)

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨不出名的小金@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/35406 ...

  8. java怎样将多个list写入txt中并且不覆盖原有数据_java容器,面试必备知识点整理!...

    在码代码的过程中,我们常常需要对大量对象引用管理,为了有效的归类管理,将同类的引用放在一个数据容器中. 容器主要由:Collection与Map两种构成. 一.概述 1.Collection 包含三大 ...

  9. 【路由交换02】最全的网络工程师面试必备知识点,掌握这些,轻轻松松搞定面试官

    本文共分为三部分:TCP/IP基础,路由部分,交换部分,这三部分内容是对**面试网络工程师会经历什么?**一文的补充. 第一部分:TCP/IP基础 一.OSI模型与TCP/IP模型分别有哪些层次,每层 ...

  10. 25道Python工程师面试必备知识点!

    2018-01-13 许以沉默 小象 Python作为近年来受人关注的流行编程语言,在众编程语言中排名靠前.因此,企业对这方面的人才需求逐渐增大,越来越多的人想要成为Python工程师.今天,小编就分 ...

最新文章

  1. 计算机网络连接设备的有什么,常用网络连接设备有哪些?
  2. <input>属性为number,maxlength不起作用的解决方案
  3. 网络计算机统考报名网,2017年《计算机应用基础》统考试题及答案
  4. python调用电脑蜂鸣器一直响_调用系统蜂鸣器方法
  5. 每日程序C语言41-带头结点的头插法创建链表
  6. 一行Python代码能干什么?有意思!
  7. 应用市场中的应用转让
  8. et超排如何打开pla格式文件_如何快速调用Camera Raw滤镜
  9. 安川机器人dx200编程手册_安川DX100DX200通信接口手册
  10. android TTS语音播报
  11. PMP考试扫盲:超详细的PMP考试小白攻略,必看篇
  12. 离线安装Ubuntu16.04 NVIDIA1060显卡驱动 CUDA9.0 CUDNN7.0 anaconda TensorFlow-GPU pycharm opencv-python opencv
  13. double转换成百分数
  14. 智慧医疗整体解决方案
  15. go mod tidy报错verifying module: invalid GOSUMDB: malformed verifier id
  16. control设备的注册流程
  17. Apache ab性能测试结果分析
  18. 来自日本的品质传承 工机控股发布新品牌HiKOKI战略
  19. Python3 集合(11)
  20. 接口(基本接口和函数式接口)

热门文章

  1. LeetCode周赛
  2. 利用mysql元数据自动生成hive建表语句
  3. 计算机在护理专业中的论文题目,护理专业论文格式(通用模板)
  4. 如何下载行政区划地图
  5. 稳健Capon波束形成
  6. OA协同办公软件评测 —— Tower篇
  7. 经典查找算法 --- R树
  8. activiti7基础入门、activiti7实战、activiti7运用
  9. 关于向社会公开征求 深圳市住房公积金贷款管理暂行规定 (征求意见稿)意见的通知
  10. 网课题库收录API接口以及免费网课查询API接口