机器学习中的一些基本概念

前些日子在学习YOLOv2的过程中,了解了一些机器学习中的基本概念,在此记录下来。

如果有些概念理解有误,欢迎各位大神批评指正。

【TP、FN、FP、TN】

假设某场景:
假如某个班级有男生80人,女生20人,共计100人.目标是找出所有女生.
现在某人挑选出50个人,其中20人是女生,另外还错误的把30个男生也当作女生挑选出来了.

准确率accuracy = (20 + 50) / 100 = 0.7
(20个女生准确找出,50个男生正确找出)

TP:正类判断为正类    20
FP:负类判断为正类    30
FN:正类判断为负类    0
TN:负类判断为负类    50

精确率precision = TP / (TP + FP) = 0.4(正确被检索的item占实际被检索到的item的比例)

召回率recall = TP / (TP + FN) = 1(正确被检索的item占应该被检索到的item的比例)

F1值F_1 = (2 * 0.4 *1) /  (0.4 + 1) = 57.1%(精确率和召回率的调和均值)

mAP:绘制recall-precision图像(recall为横轴,precision为纵轴),该图像与x,y轴围成的面积即为mAP。


本节参考:准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure


【卷积】

参考文章:如何通俗易懂地解释卷积?

卷积的重要的物理意义是:一个函数(如:单位响应)在另一个函数(如:输入信号)上的加权叠加。

在输入信号的每个位置,叠加一个单位响应,就得到了输出信号。

每个卷积层的输出,就是我们常说的feature map。


【池化】

通过池化来降低卷积层输出的特征向量,同时改善结果(不易出现过拟合)。
因为图像具有一种“静态性”属性,这意味着在一个图像区域有用的特征极有可能在另一个区域同样适用。
因此,为了描述大图像,一种很自然的想法就是对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平均值(最大值)来代表这个区域的特征。
a.一般池化(General Pooling)
池化作用于图像中不重合的区域(与卷积操作不同):
定义池化窗口大小为ksize,定义两个相邻池化窗口的水平位移/竖直位移为stride。
一般池化由于每一池化窗口都是不重复的,所以sizeX = stride。

最常见的池化操作为平均池化mean pooling和最大池化max pooling:
平均池化:计算图像区域的平均值作为该区域池化后的值;
最大池化:选图像区域的最大值作为该区域池化后的值;
随机池化:只需对feature map中的元素按照其概率值大小随机选择,即元素值大的被选中的概率也大。
在池化的时候,如果取区域均值,往往能保留整体数据的特征,能凸出背景的信息;
而如果取区域最大值,则能更好保留纹理上的特征。
但这些应该都不如小波变换那样,可以保留更多的细节特征,整体上也应该更加细微。

b.重叠池化(Overlapping Pooling)
相邻池化窗口间会有重叠区域,即sizeX > stride。

c.空金字塔池化(Spatial Pyramid Pooling)
空间金字塔池化可以把任何尺度的图像的卷积特征转化成相同维度,这不仅可以让CNN处理任意尺度的图像,还能避免cropping和warping操作,导致一些信息的丢失,具有非常重要的意义。
其实是一种多个scale的pooling,可以获取图像中的多尺度信息;
在CNN中加入SPP后,可以让CNN处理任意大小的输入,让模型变得更加灵活。


【Batch Normalization】

将每个输入层对输入数据分布调整到0均值,使得深度神经网络训练过程中每一层神经网络的输入保持相同分布。

机器学习领域有个很重要的假设:IID 独立同分布假设,就是假设训练数据和测试数据是满足相同分布的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。
(否则会引入新的机器学习问题)

为什么深度神经网络随着网络深度加深,训练越来越困难,收敛越来越慢?
输入值随着层数增加,分布发生偏移,一般为整体分布逐渐望非线性函数取值区间的上下界靠近,导致后向传播时梯度消失,导致训练深层神经网络收敛越来越慢。

如果机器学习系统实例集合<X,Y>输入值X分布一直变化,则不符合IID假设,无法稳定学习规律。
Batch Normalization把每层输入转化为均值0,方差1的正态分布,使其落入sigmod线性区。

YOLOv2就是对每个卷积层增加BN,帮助模型收敛的。


【Dropout】
在网络训练过程中,对神经网络单元,按照一定概率将其暂时从网络中丢弃。
防止过拟合。
它强迫一个神经单元和随机挑选出来的其他神经单元共同工作,达到好的效果。
消除减弱了神经元节点间的联合适应性,增强了泛化能力。

对于dropout,有一篇博客写得十分生动详细,在这里推荐给大家:

理解dropout


【fine tune】
用别人训练好的模型,加上自己的数据,来训练新的模型。
fine tune相当于使用别人的模型的前几层,来提取浅层特征,然后在最后再落入自己的分类中。


【全连接层FC】

一种“分类器”。
卷积层、池化层、激活函数层是将原始数据映射到隐层特征空间,全连接层将学到的“分布式特征表示”映射到样本标记空间。
对输入的每张图,用一个和图像一样大小的核进行卷积,将整幅图变成一个数。
若厚度为n,则用n个核卷积之后相加求和。
把卷积输出的二维feature map转化为一个一维向量。
但空间信息丢失较多。


【多卷积核】

一个卷积核只能得到一部分特征,可能获取不到全部特征,引入多卷积核,用每个卷积核学习不同特征(不同权重)来提取原图特征。
多核卷积过程中每个卷积核大小应该相同。


【卷积层降采样】

在含有卷积层的神经网络中,每个神经元的权重个数都是卷积核的大小(而非与每个像素都连接)。
局部感知原因:距离相近的部分相关性较大,步长对应距离阈值,需要尝试。
降采样即为池化。


【IoU】

交并比
物体检测定位出的物体的bounding box,与ground truth的重叠度,即为IoU。
bounding box与ground truth交集与并集的面积比。

它还有个高端大气上档次的名字,jaccard overlap(SSD算法中使用的是这个名字……)。


【epoch】

一个epoch = 所有训练样本的一个正向传递和一个反向传递。
正向传递:输入信息通过输入层经隐含层,逐层处理并传向输出层。
反向传递:得不到预期结果,修改权值。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值