机器学习VS深度学习,谁在分类问题上获胜?

深度学习总是比机器学习解决所有类型的分类问题更好的解决方案吗?在这篇文章中,我们将通过创建我们自己的数据集来解决一个特定的问题,我们应用机器学习(ML)和深度学习(DL)以查看哪一个给出了最佳分类结果。

机器学习VS深度学习,谁在分类问题上获胜?

介绍

在这个文章中,我们相信ML知道更好,并尝试应用机器学习(ML)方法和深度学习(DL)分类器,看看两者中哪个具有最佳的分类准确性。

我们在谈论的问题是什么呢?

我们试图找到一个问题,机器学习似乎很容易解决,看看DL是否会在这些问题中表现得更好。我们选择创建一个数据库,其中图像属于三个类别之一:自然,沙漠和海洋。

为什么ML的问题很容易呢?

如果我们关注我们的3个类,事实上,我们可以使用颜色描述符轻松地在3个类之间进行分类,这对机器学习(ML)来说更容易。但是深度学习(DL)会做什么?当DL模型将图像作为输入的时候,我们知道DL会训练一个模型来找出这些图像的最佳特征以分类它们。这里的问题是,DL模型是否会发现只有颜色足以描述给定问题呢?还是说它将会通过增加不必要的形状和结构来实现呢?

颜色描述符怎么样呢?

由于描述符的选择是构建ML模型中最重要的事情,正如我们之前所说,ML最强大的描述符是颜色描述符。

注意:正如我们之前所说的,我们永远不能指定DL描述符,因为它将所有图像作为输入并尝试构建并自己生成描述符的总和。

由于我们一直在谈论图像分类,因此深度学习模型总是将图像本身作为输入,并将整个图像视为特征。但是对于机器学习来说它并不像那样工作,实际上我们必须从图像中提取某个特征并将其作为机器学习算法的输入依次给出。

首先让我们导入所需的Python库

机器学习VS深度学习,谁在分类问题上获胜?

数据收集和准备:

首先我们将收集所需的数据集,正如我们所说的将是3个选定的类别,自然,沙漠和海洋。

为此,我们将:

  1. 使用谷歌图像对每一种类的图像进行爬取和下载,并增加导航器。
  2. Pr-processing图像:调整大小和清洁。
  3. 将数据加载到数组以进行计算。

下载我们的数据后,我们需要调整图像大小以使其具有相同的大小。清洁后,我们有两种方法可以这样做:

  • 第一种方法:将图像加载到数组然后应用调整大小功能。
  • 第二种方法:应用resize函数,然后加载resized数据。

我们将使用第二种方式,因为加载函数需要花费太多时间来处理大图像。

1.1。下载我们的图片:

有很多方法可以创建自己的数据集,在这里我们选择使用Google Image Downloader。

机器学习VS深度学习,谁在分类问题上获胜?

1.2清洁和调整图像大小:

在我们开始处理图像之前,我们必须首先清理它们然后制作标准尺寸,以便使计算更容易。

1.2.1清理:

由于我们从Web引擎中抓取图像,因此并非每个图像都准确表示所需的图像。例如,在下图中,自然图像不会呈现所需的自然视图,从而会损害我们的模型收敛。事实上,清洁是我们数据准备中非常重要的一个阶段。

机器学习VS深度学习,谁在分类问题上获胜?

1.2.2调整图像大小:处理不同大小的图像?

大多数神经网络都期望固定大小的输入,我们的网络也不例外。正如我们在上面看到的,我们的图像大小不一样。一种常见的方法是将图像转换成选定的部分,但在我们的分类问题中,我们只需要裁剪图像,以便我们可以将其固定到一定的选定尺寸。

为此,我们将创建一个包含特定大小的所有图像的新数据集,以便下次加载它们。

机器学习VS深度学习,谁在分类问题上获胜?

resize_and_save

这个Python函数,它从每个子目录获取所有图像,调整它们的大小,并将它们存储在上面创建的目录中。

机器学习VS深度学习,谁在分类问题上获胜?

对于第一个类:自然图像

最后:

resize_and_save("/home/mohamed/Documents/Others/deep_learning/Seconde_Lab2/testData/Testing/2","/home/mohamed/Documents/Others/deep_learning/Seconde_Lab2/testData40/Testing/2")

1.3加载我们的数据:

Load_data:从每个子目录获取所有图像并将其转换为列表的函数,对于每个子目录,该函数存储标签(子文件夹中的图像数)时间,因此每个图像将具有相应的标签。

机器学习VS深度学习,谁在分类问题上获胜?

我们将在调整大小的数据上使用此函数:Data40。

在图像处理阶段之后我们得到了结果:

  • Image_train:包含调整大小的所有训练图像的数组。
  • Label_train:包含训练图像标签的数组。
  • Image_test:数组包含调整大小的所有测试图像。
  • Label_test:包含测试图像标签的数组。

2.探索数据:

我们有多少图像和标签?

机器学习VS深度学习,谁在分类问题上获胜?

此函数将图像数组及其标签作为参数,并绘制它们。

机器学习VS深度学习,谁在分类问题上获胜?

机器学习VS深度学习,谁在分类问题上获胜?

深度学习:CNN模型

创建CNN的三个步骤

  1. 卷积
  2. 激活
  3. 池化重复步骤1,2,3以添加更多隐藏层

之后建立一个全连接网络这个全连接网络使CNN能够对样本进行分类

对于ALEXNET CNN模型,我们将使用这种架构:

架构:CONV1 - > MAXPOOL1 - > NORM1 - > CONV2 - > MAXPOOL2 - > NORM2 - > CONV3 - > CONV4 - > CONV5 - > MaxPOOL3 - > FC6 - > FC7 - > FC8

机器学习VS深度学习,谁在分类问题上获胜?

这里我们不会创建任何权重变量,事实上,create_conv_model创建一个名为权重的变量并将其保存在我们将要创建的会话中,表示全连接权重矩阵。

机器学习VS深度学习,谁在分类问题上获胜?

Logits是一个包含某种概率的3个元素的向量,3个数字中数量最大的类(权重矩阵和输入相乘的结果)将是我们需要得到的输入的正确类,Logits的62个元素的最大值的索引那个索引将是我们模型的预测类。

机器学习VS深度学习,谁在分类问题上获胜?

将数据和标签转换为数组以进行训练。

机器学习VS深度学习,谁在分类问题上获胜?

1-训练阶段

机器学习VS深度学习,谁在分类问题上获胜?

2-测试阶段

机器学习VS深度学习,谁在分类问题上获胜?

机器学习:

1-特征提取:颜色直方图

在机器学习模型训练中,我们将使用颜色直方图作为特征。为此,我们需要从创建的两个数组中的数据中获取所有颜色直方图:train_image和test_image。

get_histogram :是个函数,它将数据目录作为输入,并返回该目录中图像的所有颜色直方图。此函数使用两次,一次用于测试目录,另一次用于训练目录。

机器学习VS深度学习,谁在分类问题上获胜?

2 -TRAINING PHASE:

机器学习VS深度学习,谁在分类问题上获胜?

机器学习VS深度学习,谁在分类问题上获胜?

机器学习VS深度学习,谁在分类问题上获胜?

3 - 测试阶段:

机器学习VS深度学习,谁在分类问题上获胜?

机器学习(ML)模型获得了52%的准确度,而DL模型获得了39%。请注意,选择ML特征非常简单。我们认为,如果我们尝试更复杂的模型,如color LBP或其他强大的机器学习特征,我们会得到更好的结果,即52%。至于DL,我们花了很多时间才能获得39%。如果我们选择在数据集中添加更多图像,那么毫无疑问,准确性会更好。

我们可以得出结论,在一定大小的数据集之后,深度学习(DL)将能够赢得所选择的任何ML模型。但是,为了执行此操作,可能需要数天甚至数周的计算。有趣的是,在一定数量的数据集中,DL将始终战胜ML模型......

结论:

在这篇文章中,我们尝试通过数据集创建分类问题,并使用深度学习模型测试机器学习模型的功效,证明ML在某些特定问题中在更短的时间内表现更好。

这合乎逻辑吗?

ML将在这个分类问题中表现得非常聪明,它将尝试仅使用更实用且更容易解决此问题的颜色进行分类,而DL将尝试使用大量未使用的特征进行预测,这将浪费大量时间,也使用无用的特征,例如纹理,这将无济于事,但会减少分类结果。

观点:

我们可以得出结论,在一定大小的数据集之后,DL将能够赢得所选择的任何ML模型。但是,为了执行此操作,可能需要数天甚至数周的计算。有趣的是,在一定数量的数据集中,DL将始终能胜过ML模型。但是数据集尺寸可能会非常大......

相关推荐