从本篇开始我将会给大家详细的讲解神经网络以及最经典的卷积神经网络。
我们都知道神经网络是机器学习的一个分支,而神经网络的延伸和丰富又形成了一个新的学科:深度学习。深度学习目前主要应用在计算机视觉领域,也就是对图片的识别检测和分类。但是既然是图像处理,处理结果就会受到一下几个因素的影响:
1. 照射角度
改变拍照的角度,改变物体的位置,要求能够识别
2. 光照强度
上图中亮度强的白猫可以一眼识别,而亮度低的黑猫识别起来则有一定的难度。
3. 形状改变
物体形状的改变也会增加识别的难度,即使是同一个物体
4. 部分遮蔽
挡住部分物体,依旧能识别
5. 背景混入
图片的背景可能对主物体形成一些干扰。
如果按照常规的机器学习方法进行图片分类的话,就会受到以上集中因素的影响。比如我们看下k-近邻
k-近邻的算法我们可以稍微回忆一下:
对于未知类别的属性点:
1.计算已知类别数据集中的点与当前点的距离
2.按照距离依次排序
3.选取与当前点距离最小的K个点
4.确定前K个点所在类别的出现概率
5.返回前K个点出现频率最高的类别作为当前点预测分类。
比如说有这样的一个样本库:
我们使用k近邻的算法来计算,距离的计算我们先采用像素点像素值直接相减,最后加和所有像素点值的方式来计算测试样本和每个训练样本的距离:
但是直接相减的方式容易造成比较大的偏差,所以我们采用欧式距离,开根号可以中和一部分的误差,并且可以应用于多维空间。
这里我们介绍的L1和L2以及K值都是超参数,就是需要我们手动设置的参数。那么如何选择超参数也显得尤为关键。如何进行超参数的调优呢?这里我简单介绍一下交叉验证:
在机器学习中,我们通常希望评估模型在未见过的数据上的表现,而不仅仅是在训练数据上的表现。交叉验证通过有效地利用有限的数据来进行模型评估,尤其适用于在数据量有限的情况下进行模型选择和超参数调优。
如图所示,fold12345,我们可以1234作为训练集,5作为测试集,也可以1345作为训练集,2作为测试集,以此类推。交叉验证的基本思想是将原始数据分成若干份,其中一部分作为训练集,另一部分作为测试集。在每一轮交叉验证中,都会选择不同的训练集和测试集,以评估模型在不同数据子集上的表现。我们根据综合结果来校准超参数。所以选取超参数的正确方法是:将原始训练集分为训练集和验证集,我们在验证集上尝试不同的超参数,最后保留表现最好那个。使用交叉验证方法,它能帮助我们在选取最优超参数的时候减少噪音。
k近邻的测试结果如下所示:
我们可以看到测试结果并不理解,究其原因就是最先开始我们说到的因素,仅仅按照像素来进行比较是不够的,图像更多的是按照背景和颜色被分类,而不是语义主体分身。
假如我们对图像进行移位 部分模糊和调暗处理,并且使之和原来的图片距离都是100,我们可以看到这些图片都是不同的图片,但在k近邻算法里他们是同一个,所以结果并不准确。
本片主要讲解了传统机器学习算法在计算机视觉领域应用的局限性,下期我们接着介绍,神经网络是如何准确进行图片处理的,喜欢的点个关注和在看哦~精彩内容不容错过~~
喜欢的话点个关注哦~ 会每天分享人工智能机器学习内容,回复关键字可获取相关算法数据及代码~