深度学习与机器学习基础知识

1. 机器学习概述

机器学习是从数据中自动分析获取规律(模型),并利用规律对未知数据进行预测。

2. 神经网络概述

神经网络的基本组成包括输入层、隐藏层、输出层。其中卷积神经网络的特点在于隐藏层分为卷积层和池化层。

  • 卷积层:通过在原始图像上平移卷积运算来提取特征;
  • 池化层:通过特征后稀疏参数来减少学习的参数,降低网络的复杂度(最大池化和平均池化)

除此之外还有激活函数、全连接层等。
在这里插入图片描述

3. K-近邻(KNN)算法

K Nearest Neighbor算法:如果一个样本在特征空间中的k个最相似(特征空间中最近邻)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

简言之:选择距离最小的类别作为自己的预测类别,而距离公式采用欧式距离。

KNN一般通过距离公式计算相似度:

机器学习常用距离公式:欧式距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、余弦距离、汉明距离、马氏距离

1. 欧氏距离:

  • 二维平面点欧式距离: d 12 = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 d_{12}=\sqrt{\left(x_{1}-x_{2}\right)^{2}+\left(y_{1}-y_{2}\right)^{2}} d12=(x1x2)2+(y1y2)2
  • 三维空间点欧氏距离: d 12 = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 + ( z 1 − z 2 ) 2 d_{12}=\sqrt{\left(x_{1}-x_{2}\right)^{2}+\left(y_{1}-y_{2}\right)^{2}+\left(z_{1}-z_{2}\right)^{2}} d12=(x1x2)2+(y1y2)2+(z1z2)2
  • n维空间点欧氏距离: d 12 = ∑ k = 1 n ( x k − x k ′ ) 2 d_{12}=\sqrt{\sum_{k=1}^{n}\left(x_{k}-x^{'}_{k} \right)^{2}} d12=k=1n(xkxk)2

2. 曼哈顿距离:

  • 二维平面点的曼哈顿距离: d 12 = ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ d_{12}=\left|x_{1}-x_{2}\right|+\left|y_{1}-y_{2}\right| d12=x1x2+y1y2
  • n维空间点的曼哈顿距离: d 12 = ∑ k = 1 n ∣ x k − x k ′ ∣ d_{12}=\sum_{k=1}^{n}\left|x_{k}-x^{'}_{k}\right| d12=k=1nxkxk

3. 切比雪夫距离:

  • 二维平面点的切比雪夫距离: d 12 = m a x ( ∣ x 1 − x 2 ∣ , ∣ y 1 − y 2 ∣ ) d_{12}=max(\left|x_{1}-x_{2}\right|,\left|y_{1}-y_{2}\right|) d12=max(x1x2,y1y2)
  • n维空间点的切比雪夫距离: d 12 = m a x ( ∣ x k − x k ′ ∣ ) d_{12}=max(\left|x_{k}-x^{'}_{k}\right|) d12=max(xkxk)

4. 闵可夫斯基距离:

闵式距离不是一种距离,而是一组距离的定义,是对多个距离公式的概括性的表述。
d 12 = ∑ k = 1 n ∣ x 1 k − x 2 k ∣ p p d_{12}=\sqrt[p]{\sum_{k=1}^{n}\left|x_{1 k}-x_{2 k}\right|^{p}} d12=pk=1nx1kx2kp

其中p是一个变参数:

  • p=1,表示曼哈顿距离;
  • p=2,表示欧氏距离;
  • p=无穷,表示切比雪夫距离。

5. 余弦距离:

  • 二维空间向量的余弦距离: cos ⁡ θ = x 1 x 2 + y 1 y 2 x 1 2 + y 1 2 x 2 2 + y 2 2 \cos \theta=\frac{x_{1} x_{2}+y_{1} y_{2}}{\sqrt{x_{1}^{2}+y_{1}^{2}} \sqrt{x_{2}^{2}+y_{2}^{2}}} cosθ=x12+y12 x22+y22 x1x2+y1y2
  • n维空间向量的余弦距离: cos ⁡ ( θ ) = ∑ k = 1 n x 1 k x 2 k ∑ k = 1 n x 1 k 2 ∑ k = 1 n x 2 k 2 \cos (\theta)=\frac{\sum_{k=1}^{n} x_{1 k} x_{2 k}}{\sqrt{\sum_{k=1}^{n} x_{1 k}^{2}} \sqrt{\sum_{k=1}^{n} x_{2 k}^{2}}} cos(θ)=k=1nx1k2 k=1nx2k2 k=1nx1kx2k

6. 汉明距离:

汉明距离是不相同的数字的个数。通常是用 0,1 表示。

7. 马氏距离:

两个服从同一分布并且其协方差矩阵为 ∑ \sum 的随机变量的差异程度。

KNN算法流程总结:

  1. 计算已知类别数据集中的点与当前点之间的距离;
  2. 按照欧式距离递增次序排序;
  3. 选取与当前点距离最小的k个点;
  4. 统计前k个点所在的类别出现的频率;
  5. 返回前k个点出现频率最高的类别作为当前点的预测分类。

4. 常见的loss损失函数

常见的loss损失函数包括:交叉熵损失、均值平方差损失、最大似然损失。

4.1 交叉熵损失(CrossEntropy)

交叉熵损失一般用于分类问题,衡量同一个随机变量中的两个不同概率分布的差异程度。在机器学习中表示为真实概率分布与预测概率分布之间的差异,交叉熵损失越小,模型预测效果越好。公式如下:

l o s s ( p , q ) = − 1 m ∑ i = 1 m p ( x i ) log ⁡ ( q ( x i ) ) loss(p,q) =-\frac{1}{m} \sum_{i=1}^{m} p\left(x_{i }\right) \log \left(q\left(x_{i }\right)\right) loss(p,q)=m1i=1mp(xi)log(q(xi))

式中: p p p 表示标签(真实)概率, q q q 表示预测概率, m m m 表示样本个数。

在分类问题上,常常使用 s o f t m a x softmax softmax 函数对预测的结果 q q q 进行初步处理,使分类结果的预测值和为1,之后再通过交叉熵来计算损失函数。

q ( x i ) = e i ∑ j e j q(x_{i})=\frac{e^{i}}{\sum_{j} e^{j}} q(xi)=jejei

4.2 均值平方差损失(MSE)

均值平方差损失(MSE)主要针对回归问题,可以用下式表述:
l o s s ( p , q ) = − 1 n ∑ i = 1 n ( p ( x i ) − q ( x i ) ) 2 loss(p,q)=-\frac{1}{n} \sum_{i=1}^{n}( p\left(x_{i }\right) -q\left(x_{i }\right))^{2} loss(p,q)=n1i=1n(p(xi)q(xi))2

式中: p p p 表示标签(真实)概率, q q q 表示预测概率, m m m 表示样本个数。

4.3 最大似然损失函数

常用于二分类问题中,标签(真实)仅为0或1,如果存在多个样本,其公式如下:
l o s s ( p , q ) = − 1 m ∑ i = 1 m y i log ⁡ ( q i ) + ( 1 − y i ) log ⁡ ( 1 − q i ) loss(p,q) =-\frac{1}{m} \sum_{i=1}^{m} y_i \log \left(q_i\right) + (1-y_i) \log \left(1-q_i\right) loss(p,q)=m1i=1myilog(qi)+(1yi)log(1qi)

式中: y y y 表示标签(真实)概率, q q q 表示预测概率, m m m 表示样本个数。

5. Sigmoid激活函数梯度消失

Sigmoid激活函数梯度消失的原因:

  • 函数本身,如果输入值 x x x 过大或过小,sigmoid函数导数为0,梯度消失;
  • sigmoid函数求导的导数最大为 1 4 \frac{1}{4} 41 ,小于1,经过深度网络传播也会发生梯度消失。

sigmoid ( z ) = 1 1 + e − z \text {sigmoid}(z)=\frac{1}{1+e^{-z}} sigmoid(z)=1+ez1
在这里插入图片描述

6. 解决梯度爆炸和消失

  • 预训练加微调;
  • 使用不同的激活函数,一般使用 ReLU;
  • 使用 batchnorm 批量归一化,可以使数据特征归一化;
  • 也可以使用残差结构,如ResNet,可以降低梯度消失;
  • 可以使用长短期记忆网络 LSTM;

7. 数据正则化/归一化

数据归一化是很重要的预处理步骤,用于重新映射输入数据到适当的范围(0-1之间),确保方向传播过程中可以更好收敛。通常是对输入数据和输出特征都进行归一化。

具体方法:每个输入数据减去平均值并除以标准偏差,归一化的具体作用是归纳统一样本的统计分布性。相对于神经网络而言,将数据映射到(0-1之间)可以方便诸如sigmoid函数等使用。

8. 解决数据不平衡问题

  • 使用数据扩增的方法,对原有数据进行翻转、平移、缩放、旋转、亮度等变化来增加数据;
  • 选择合适的评价指标:可以使用召回率、精确率等具体指标,而不是精度等指标。

9. 改善训练模型的效果

  • 提升数据集数量,并对数据预处理,进行数据扩充或增强;
  • 解决过拟合和欠拟合问题,可以使用正则化/随机性失活(Dropout)的方式解决过拟合;
  • 通过调整不同学习率和激活函数。可以使用Relu激活函数、adam梯度下降算法、banchnorm批量归一化;

10. 1*1卷积作用

  • 实现卷积核通道数的降维和升维,减少网络参数;
  • 实现跨通道的交互和信息整合;
  • 实现多个feature map的非线性组合(不同通道的feature map),实现通道个数的变换;

11. CNN池化层的作用

  • 减小图像尺寸,数据降维,去除冗余信息,对特征进行压缩;
  • 缓解过拟合,并可以扩大感知野;
  • 保持一定程度的旋转和平移不变性;

12. 使用小卷积核不采用大卷积核

  • 可以使用几个较小的卷积核来获得和大卷积核相同的感受野;
  • 较小的卷积核使用的参数和计算量较少;
  • 使用较小的卷积核能使用更多的激活函数,使结果更具备区分性。

13. 常用的评价指标

机器学习中常用的评价指标:精确率、召回率。

  • 精确率:正确被检索的数量(TP)占所有“实际被检索到(TP+FP)”的比例。 P r e c i s i o n = T P T P + F P Precision = \frac {TP}{TP+FP} Precision=TP+FPTP
  • 召回率:正确被检索的数量(TP)占所有“应该检索到(TP+FN)”的比例。 R e c a l l = T P T P + F N Recall = \frac {TP}{TP+FN} Recall=TP+FNTP

式中: T P TP TP表示正确检索到的, F P FP FP表示错误检索到的, F N FN FN表示本是正确的,但检测出是错误的。

14. 数据降维的好处

数据降维是通过获得一组具备重要特征的主变量来减少所考虑的特征变量的过程。例如:PCA主成分分析就是通过分析得到一组主特征向量来替代整个数据,可以减少数据维度,加快计算速度。

数据降维的好处:

  • 减少所需的存储空间;
  • 加快计算速度;
  • 太多的特征易导致模型过拟合。

15. 图像光照变化

  • 采用直方图均衡化,使图像中亮度保持分布均匀;
  • 如果图像整体较暗,可以使用对数变化对图像进行增强亮度。对数变换使亮度较低的像素变亮,而对本身亮度较高的像素几乎没有什么变换;

16. 轻量级网络结构

目前常用的轻量级网络结构包括:MobileNet v1、v2、v3,GhostNet等。

16.1 MobileNet v1 网络

优点:

  • 体积小,计算量小,适用于移动设备;可作用于分类、检测、分割、特征提取编码等任务。
  • 使用深度可分离卷积替代传统卷积;
  • 引入两个收缩超参数:宽度因子和分辨率乘子;

深度可分离卷积:

实质上将普通卷积分为两步:depthwise卷积和pointwise卷积。

  • depthwise卷积:对每个输入通道单独使用一个卷积核处理;
  • pointwise卷积:1*1卷积,将depthwise的卷积输出组合起来(不同通道间的信息实现交互)

实例展示:相比于普通卷积

输入: H ∗ W ∗ 3 H*W*3 HW3, 输出: H ∗ W ∗ 64 H*W*64 HW64,卷积核: 3 ∗ 3 3*3 33

普通卷积参数量: 3 ∗ 3 ∗ 3 ∗ 64 = 1758 3*3*3*64=1758 33364=1758
深度可分离卷积参数量: 3 ∗ 3 ∗ 3 + 3 ∗ 1 ∗ 1 ∗ 64 = 219 3*3*3+3*1*1*64=219 333+31164=219

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

16.2 MobileNet v2网络

创新点:提出具备线性瓶颈的倒残差结构

与MobileNet v1的相同点和不同点:

  • 相同点:都采用深度可分离卷积来提取特征,可以成倍减少卷积层的参数量;
  • 不同点1:v2在depthwise前新加了pointwise卷积,主要是为了提升输入通道的维度,以提取高维特征。其改进的原因在于如果输入通道的维度较低,而depthwise没有改变通道的能力,因此只能提取低维特征,加入pointwise后可以提升维度。
  • 不同点2:v2去掉了第二个pointwise的激活函数ReLU6,直接使用线性输出。其原因在于高维特征使用非线性效果较好,而低维特征线性效果较好。

在这里插入图片描述

整个过程如下:

  • 首先使用pointwise提升输入通道的维度,后接ReLu6激活函数;
  • 中间使用深度分离卷积depthwise实现不同通道之间的卷积,后接Relu6激活函数;
  • 最后使用pointwise降低维度,但后面不接ReLU。直接线性输出。

在这里插入图片描述

16.3 GhostNet网络

问题: 主要是针对经过卷积后会出现较多相似的“特征图对”,而这些相似的特征图对对模型性能影响较小,而且占用了大量的计算资源。

解决方案: 因此本文就是针对此问题,提出使用较为廉价的线性操作来生成这些相似的特征图对,保证不降低模型性能的情况下大大减少模型的计算量。

贡献:

  • 提出能用更少参数提取更多特征的Ghost模块,首先使用输出很少的原始卷积操作(非卷积层操作)进行输出,再对输出使用一系列简单的线性操作来生成更多的特征(生成的特征与卷积输出的特征很相似)。这样,不用改变其输出的特征图,Ghost模块的整体的参数量和计算量就已经降低了;
  • 基于Ghost模块提出GhostNet,将原始卷积替换为Ghost模块。

与主流的卷积操作对比,不同之处:

  • Ghost模块同时使用identity mapping(本身特征图)来保持原有特征;
  • 目前大多数方法都是先做pointwise卷积降维,再用depthwise卷积进行特征提取,而GhostNet则是先做原始卷积,再用简单的线性变换来获取更多特征;
  • 目前的方法中处理每个特征图大都使用depthwise卷积或shift操作,而Ghost模块使用线性变换,可以有很大的多样性。
  • 本身与残差网络ResNet很类似

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值