机器学习笔记(19)面试准备(2)补一补ML基础知识

线性回归和逻辑回归的异同

两者相同点

广义线性回归模型

只是把W^TX换成了1/(1+e^(-z))

参考:逻辑回归(logistics regression)_激进的蜗牛-CSDN博客_逻辑回归

两者损失函数的不同

1.首先说什么是凸函数。对区间[a,b]上定义的函数f,若它对区间中任意两点x1和x2,均有f((x1+x2)/2)<=(f(x1)+f(x2))/2,则称f为区间[a,b]上的凸函数。对实数集上的函数,可通过求二阶导数来判别。若二阶导数在区间上非负,则称为凸函数,若二阶导数恒大于0,则称为严格凸函数

2.线性回归模型中的损失函数为平方差损失函数,其是凸函数

3.逻辑回归中,损失函数为交叉熵损失函数,因为对于逻辑回归来说,若是用平方差损失函数,其不能保证是凸函数,因为逻辑回归中存在sigmoid函数。

为什么要保持损失函数是凸函数

1.数学上凸函数有利于优化

2.工程表现上就是如果逻辑回归使用平方差损失函数,会不易收敛且很容易陷入局部极小值

RPN

区域提议网络(Region Proposal Network),是一个通过卷积生成archor的过程。
RPN第一次出现在世人眼中是在Faster RCNN这个结构中,专门用来提取候选框。RPN的引入可以说是真正意义上把物体检测整个流程融入到一个神经网络中,这个网络结构叫做Faster RCNN,即Faster RCNN = RPN + Fast RCNN

参考:RPN 解析_lanran2的博客-CSDN博客_rpn

archer-base和archer-free的区别

1.先说archor:archor就是锚框的意思,archor的解决的问题是,在这个区域内有没有目标以及这个目标的区域(框)与参考区域(框)有多远的问题

2.archor-base和archor-free的区别:前者是通过一些手段,比如两阶段的RPN或者单阶段的滑窗预先生成一些检测框作为候选区域,然后通过网络对这些候选框进行类别的分类回归以及框位置的修正;后者是先预测一个物体的中心,然后直接推理四条边框的位置。如下详述:

“在anchor-base方法中,物体检测问题通常都被建模成对一些候选区域进行分类和回归的问题。在单阶段检测器中,这些候选区域就是通过滑窗方式产生的 anchor;在两阶段检测器中,候选区域是 RPN 生成的 proposal,但是 RPN 本身仍然是对滑窗方式产生的 anchor 进行分类和回归。而anchor-free方法中,是通过另外一种手段来解决检测问题的。同样分为两个子问题,即确定物体中心和对四条边框的预测。预测物体中心时,具体实现既可以定义一个hard的中心区域,将中心预测融入到类别预测的target里面,也可以预测一个soft的centerness score。对于四条边框的预测,则比较一致,都是预测该像素点到 ground truth 框的四条边距离,不过会使用一些 trick 来限制 regress 的范围。”

3.各自的优缺点

anchor-base的优点在于有着更高的精度,所提取到的特征更丰富。但是two stage阶段产生预选框所需要的耗时和算力大大增大,尽管one stage阶段在一定程度上解决了这个问题,将检测器整合成end-to-end的形式,通过不同特征尺度的每个特征点都进行预设不同尺度不同大小的三个anchor,缩减了RPN的步骤,提升了检测速度,尽管近几年one stage发展迅速,但精度达不到two stage的SOTA程度。

和anchor-base进行比较,anchor-free最大的优势就在于其检测器的检测速度,因为不需要预设anchor,只需要对不同尺度的特征图的目标中心点和宽高进行回归,极大的减少了耗时和需要的算力。其缺点则是在于它的精度并不能达到anchor-base方法的SOTA。近两年还提出了一些结合anchor-base和anchor-free的检测器。

我觉得目标检测就是这样一个发展过程,从最初的RCNN到现在各种方法百花齐放,但最终目的如果没法落地的话,也仅仅是实验室的数据,anchor-free作为一个未来的发展方向,更偏向于实际落地,在保证精度的同时,提升速度,这是未来目标检测发展所需要的。

4.总结

可以理解为archor-base方法相较于archor-free方法引入了一个信息先验。

参考:2 anchor-base和anchor_free两者的优缺点_Silence_Zzz的博客-CSDN博客

FocalLoss相关知识点

作者提出focal loss的出发点也是希望one-stage detector可以达到two-stage detector的准确率,同时不影响原有的速度。

既然有了出发点,那么就要找one-stage detector的准确率不如two-stage detector的原因,作者认为原因是:样本的类别不均衡导致的。我们知道在object detection领域,一张图像可能生成成千上万的candidate locations,但是其中只有很少一部分是包含object的,这就带来了类别不均衡。

focal loss是由原始的交叉熵损失函数改进的,原始的交叉熵损失函数是

 接下来介绍一个最基本的对交叉熵的改进,也将作为本文实验的baseline,既然one-stage detector在训练的时候正负样本的数量差距很大,那么一种常见的做法就是给正负样本加上权重,负样本出现的频次多,那么就降低负样本的权重,正样本数量少,就相对提高正样本的权重。因此可以通过设定a的值来控制正负样本对总的loss的共享权重。a取比较小的值来降低负样本(多的那类样本)的权重。

 显然前面的公式3虽然可以控制正负样本的权重,但是没法控制容易分类和难分类样本的权重,于是就有了focal loss:

 γ被称为调制系数,为什么要加上这个调制系数呢?目的是通过减少易分类样本的权重,从而使得模型在训练时更专注于难分类的样本。

通俗点说:当一个样本被分错的时候,pt是很小的,那么调制因子(1-Pt)接近1,损失不被影响;当Pt→1,因子(1-Pt)接近0,那么分的比较好的(well-classified)样本的权值就被调低了。因此调制系数就趋于1,也就是说相比原来的loss是没有什么大的改变的。当pt趋于1的时候(此时分类正确而且是易分类样本),调制系数趋于0,也就是对于总的loss的贡献很小

概率较大的也就是容易分类的较小其对权重的影响,概率较小的也就是就不容易被分类的给予更多的关注(前者减小,后者不变,相对来说也属于增大了其本身)

FocalLoss后来被衍生为解决类别不平衡问题的通用方法。

参考:Focal loss论文详解 - 知乎

Lite-HRNet网络的计算量和参数量已经压缩至如此之小,为什么在实际运行的时候FPS只有10左右这么低

1.注意FLOPs陷阱,计算量小并不等于GPU上运行速度快,对于GPU的大部分情况算力的瓶颈在于访存带宽,同种计算量下访存数据量也可能相差巨大,对于depthwise这种具有高数据读写量的操作,加上GPU的访存带宽限制,使得模型将大量的时间浪费在从显存中读取数据上,GPU的算力没有得到充分的利用

2.底层库没有对dw卷积做过特定的优化

解释上面这段话需要引入内存访问的概念,卷积内存访问的概念可以通过:为什么有时Depthwise 卷积比正常卷积更耗时 - 简书了解

这里也给出大致计算:

input = 224 x 224 x 3 x 3 x 3 x 32 = 43,352,064
output = 112 x 112 x 32 = 401,408
weights = 3 x 3 x 3 x 32 + 32 = 896
total = 43,754,368

参考:内存访问的计算:卷积层计算 feature maps 和中间结果内存访问次数, mac(memory access cost-内存使用量)计算方法 - you-wh - 博客园

channel shuffle具体是怎样实现的

你不觉得channel shuffle操作就是在代替组卷积中的“组”操作吗?

存在1, 2, 3, 4, 5, 6这样6个通道,分为一个三个,形式类似为#, #, $, $, %, %,1.先进行一个reshape操作,变为[[#,#], [$,$],[&&]],2.然后进行一个转置变为[[#,$,&],[#,$,&]]形式,最后再进行一个reshape的操作,即可变为#, &, %, #, &, %的形式,也就是完成了channel的交换

梯度消失和梯度爆炸的解决方法

1.预训练
2.权重值正则化
3.如果现在网络内有sigmoid损失函数那就替换使用relu
4.BN层的使用
5.加入残差结构

静态图和动态图的描述和区别

总结:动态图的计算图的构建和实际计算是同时发生的,也就意味着我可以实时得到中间计算值以方便调试。这种模式较容易的将我们脑中的想法转化为代码,对编程来说较为友好。

而静态图相对来说就是将计算图的构建和实际计算分开进行,由于实际计算的时候不需要再次重新构建计算图,因此速度会比动态图快,即性能上来说会更加的高效。

参考:深度学习框架 の 动态图 vs 静态图 - 简书

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白 AI 日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值