深度学习与机器学习——如何区分?
已发表: 2020-03-10近年来,机器学习、深度学习和人工智能已成为流行语。 因此,您可以在越来越多的公司的营销材料和广告中找到它们。
但是什么是机器学习和深度学习? 另外,它们之间有什么区别? 在本文中,我将尝试回答这些问题,并向您展示深度学习和机器学习应用的一些案例。
什么是机器学习?
机器学习是计算机科学的一部分,它基于数据处理用数学模型表示现实世界的事件或对象。 这些模型是使用特殊算法构建的,这些算法适应模型的一般结构,使其适合训练数据。 根据所解决问题的类型,我们定义了有监督和无监督机器学习和机器学习算法。
监督与无监督机器学习
监督机器学习专注于创建能够将我们已有的关于手头数据的知识转移到新数据的模型。 在训练阶段,模型构建(训练)算法看不到新数据。 我们提供了一种算法,其中包含特征数据以及算法应该学习从中推断出的相应值(所谓的目标变量)。
在无监督机器学习中,我们只为算法提供特征。 这允许它自己弄清楚它们的结构和/或依赖关系。 没有指定明确的目标变量。 无监督学习的概念一开始可能很难掌握,但看看下面四个图表中提供的示例应该可以清楚地了解这个概念。




图表 1a 展示了一些数据,这些数据在轴x和y上具有 2 个特征。 标记为 1b 的数据显示相同的彩色数据。 我们使用K-means聚类算法将这些点分为 3 个聚类,并相应地对它们进行着色。 这是无监督机器学习算法的一个例子。 该算法只给出了特征,并且要计算出标签(簇号)。
第二张图片显示了图表 2a,它显示了一组不同的标记(并相应地着色)数据。 我们先验地知道每个数据点所属的组。 我们使用SVM算法找到 2 条直线,这些直线将向我们展示如何分割数据点以最适合这些组。 这种分割并不完美,但这是可以用直线完成的最好的。 如果我们想将一个组分配给一个新的、未标记的数据点,我们只需要检查它在平面上的位置。 这是一个监督机器学习应用的例子。
机器学习模型的应用
创建标准机器学习算法用于以表格形式处理数据。 这意味着为了使用它们,我们需要某种表格。 在这样的表中,行可以被认为是建模对象的实例(例如,贷款)。 同时,列应被视为该特定实例的特征(特征)(例如,贷款的每月还款额、借款人的每月收入)。
对机器学习开发感到好奇?
学到更多表 1. 是此类数据的一个非常简短的示例。 当然,这并不意味着纯数据本身必须是表格和结构化的。 但是,如果我们想在某个数据集上应用标准的机器学习算法,我们通常必须对其进行清理、混合并将其转换为表格。 在监督学习中,还有一个特殊的列包含目标值(例如,如果贷款违约的信息)。
训练算法试图将模型的一般结构拟合到这些数据中。 所述算法通过调整模型的参数来做到这一点。 这会产生一个尽可能准确地描述给定数据和目标变量之间关系的模型。
重要的是,该模型不仅能够很好地拟合给定的训练数据,而且还能够进行泛化。 泛化意味着我们可以使用模型来推断训练期间未使用的实例的目标。 这也是有用模型的一个关键特征。 建立一个泛化良好的模型并不是一件容易的事。 它通常需要复杂的验证技术和彻底的模型测试。
贷款编号 | 借款人年龄 | 每月收入 | 贷款额度 | 每月支付 | 默认 |
1 | 34 | 10,000 | 100,000 | 1,200 | 0 |
2 | 43 | 5,700 | 25,000 | 800 | 0 |
3 | 25 | 2,500 | 24,000 | 400 | 0 |
4 | 67 | 4,600 | 40,000 | 2,000 | 1 |
5 | 38 | 35,000 | 2,500,000 | 10,000 | 0 |
表 1. 表格形式的贷款数据
人们在各种应用中使用机器学习算法。 表 2. 展示了一些允许非深度机器学习算法和模型应用的业务用例。 还有对潜在数据、目标变量和选定的适用算法的简短描述。
用例 | 数据示例 | 目标(建模)值 | 使用的算法/模型 |
博客网站上的文章推荐 | 用户阅读文章的 ID,每篇文章花费的时间 | 用户对文章的偏好 | 使用交替最小二乘法的协同过滤 |
抵押贷款的信用评分 | 交易和信用记录,潜在借款人的收入数据 | 显示贷款是否会全额偿还或违约的二进制值 | 光GBM |
预测移动游戏高级用户的流失 | 每天玩游戏所花费的时间,自首次发布以来的时间,游戏进度 | 显示用户是否要在下个月取消订阅的二进制值 | XGBoost |
信用卡欺诈检测 | 历史信用卡交易数据——金额、地点、日期和时间 | 显示信用卡交易是否欺诈的二进制值 | 随机森林 |
网店客户细分 | 忠诚度计划会员的购买历史 | 分配给每个客户的段号 | K-均值 |
机器园区的预测性维护 | 来自性能、温度、湿度等传感器的数据 | 以下类别之一——“良好”、“观察”、“需要维护” | 决策树 |
表 2. 机器学习用例示例
深度学习和深度神经网络
深度学习是机器学习的一部分,我们在其中使用特定类型的模型,称为深度人工神经网络 (ANN)。 自引入以来,人工神经网络经历了广泛的进化过程。 这导致了许多亚型,其中一些非常复杂。 但为了介绍它们,最好解释一下它们的一种基本形式——多层感知器(MPL)。
多层感知器
简单地说,MLP 具有顶点(也称为神经元)和边(由称为权重的数字表示)的图(网络)形式。 神经元分层排列,连续层的神经元相互连接。 数据通过网络从输入层流向输出层。 然后在神经元和它们之间的边缘处转换数据。 一旦数据点通过整个网络,输出层将包含其神经元中的预测值。
每次训练数据块通过网络时,我们都会将预测与相应的真实值进行比较。 这让我们可以调整模型的参数(权重)以更好地进行预测。 我们可以使用一种称为反向传播的算法来做到这一点。 经过一些迭代后,如果模型的结构经过精心设计,专门用于解决手头的机器学习问题。
获得高精度模型
一旦足够的数据多次通过网络,我们就获得了一个高精度的模型。 在实践中,有很多转换可以应用于神经元。 这使得人工神经网络非常灵活和强大。 然而,人工神经网络的力量是有代价的。 通常,模型的结构越复杂,训练到高精度所需的数据和时间就越多。

图 1. (draw.io) 4 层人工神经网络的结构,基于三个简单的特征预测新闻应用的用户是否会在下个月流失。
为清楚起见,仅对选定(粗体)边缘标记了权重,但每条边缘都有自己的权重。 数据从输入层流向输出层,经过中间的 2 个隐藏层。 在每条边上,输入值乘以边的权重,所得乘积将到达边结束的节点。 然后,在隐藏层的每个节点中,对来自边缘的输入信号求和,然后用一些函数进行转换。 然后将这些转换的结果视为下一层的输入。
在输出层,输入的数据再次进行汇总和转换,产生两个数字形式的结果——用户在下个月从应用程序流失的概率,以及他们不会流失的概率。
高级类型的神经网络
在更高级类型的神经网络中,层具有更复杂的结构。 它们不仅包括简单的密集层和 MLP 中已知的单操作神经元,还包括更复杂的多操作层,如卷积层和循环层。
卷积层和循环层
卷积层主要用于计算机视觉应用。 它们由在图像的像素表示上滑动的小数字数组组成。 像素值乘以这些数字,然后聚合,产生新的、浓缩的图像表示。
循环层用于建模有序的顺序数据,如时间序列或文本。 他们对传入的数据应用非常复杂的多参数转换,试图找出序列项之间的依赖关系。 然而,无论网络的类型和结构如何,总有一些(一个或多个)输入和输出层,以及数据流经网络的严格定义的路径和方向。

一般来说,深度神经网络是具有多层的人工神经网络。 下面的图像 1、2 和 3 显示了选定的深度人工神经网络的架构。 它们都是在谷歌开发和培训的,并提供给公众。 他们对当今使用的高精度深度人工网络的复杂程度给出了一个想法。
这些网络具有巨大的规模。 例如,图 3 中部分显示的 InceptionResNetV2 有 572 层,总共超过 5500 万个参数! 它们都被开发为图像分类模型(它们为给定图像分配标签,例如“汽车”),并且已经在 ImageNet 集中的图像上进行了训练,该图像集包含超过 1400 万张带标签的图像。

图 2. NASNetMobile 的结构(keras 包)

图 3. XCeption 的结构(keras 包)

图 4. InceptionResNetV2(keras 包)的一部分(约 25%)的结构
近年来,我们观察到深度学习及其应用的巨大发展。 我们的智能手机和应用程序的许多“智能”功能都是这一进步的成果。 尽管人工神经网络的想法并不新鲜,但最近的繁荣是满足一些条件的结果。 首先,我们发现了 GPU 计算的潜力。 图形处理单元的架构非常适合并行计算,非常有助于高效的深度学习。
此外,云计算服务的兴起使得高效硬件的访问变得更容易、更便宜,并且可能在更大范围内实现。 最后,最新移动设备的计算能力足以应用深度学习模型,从而为 DNN 驱动功能的潜在用户创造了巨大的市场。
深度学习模型的应用
深度学习模型通常应用于处理不具有简单行列结构的数据的问题,例如图像分类或语言翻译,因为它们擅长处理这些任务处理的非结构化和复杂结构的数据——图像、文本, 和声音。 经典机器学习算法在处理这些类型和大小的数据时存在问题,而针对这些问题创建和应用一些深度神经网络已经在图像识别、语音识别、文本分类和语言翻译领域引起了巨大的发展。最近几年。
由于 DNN 接受称为张量的多维数字表作为输入和输出,并且可以跟踪其元素之间的空间和时间关系,因此可以将深度学习应用于这些问题。 例如,我们可以将图像表示为 3 维张量,其中第 1 维和第 2 维表示数字图像的分辨率(因此分别具有图像宽度和高度的大小),第 3 维表示 RGB 颜色每个像素的编码(因此第三维的大小为 3)。
这使我们不仅可以在张量中表示有关图像的所有信息,还可以保持像素之间的空间关系,这对于所谓的卷积层的应用至关重要,对于成功的图像分类和识别网络至关重要。
输入和输出结构中的神经网络灵活性也有助于其他任务,例如语言翻译。 在处理文本数据时,我们向深度神经网络提供单词的数字表示,根据它们在文本中的出现进行排序。 每个单词由一个包含一百或几百个数字的向量表示,经过计算(通常使用不同的神经网络),以便对应于不同单词的向量之间的关系模仿单词本身的关系。 这些称为嵌入的向量语言表示,一旦经过训练,就可以在许多架构中重复使用,并且是神经网络语言模型的核心构建块。
深度学习模型使用示例
表 3. 包含将深度学习模型应用于现实问题的示例。 如您所见,深度学习算法处理和解决的问题比标准机器学习技术解决的任务复杂得多,如表 1 所示。
尽管如此,重要的是要记住,机器学习可以帮助当今企业的许多用例不需要如此复杂的方法,并且可以通过标准模型更有效地(并且精度更高)解决。 表 3 还给出了关于有多少不同类型的人工神经网络层,以及可以用它们构建多少不同的有用架构的想法。
用例 | 数据 | 模型的目标/结果 | 使用的算法/模型 |
图像分类 | 图片 | 分配给图像的标签 | 卷积神经网络 (CNN) |
自动驾驶汽车的图像检测 | 图片 | 图像上识别的对象周围的标签和边界框 | 快速 R-CNN |
情绪 分析 在线商店中的评论 | 网上评论的文字 | 分配给每个评论的情绪标签(例如,正面、中性、负面) | 双向长短期记忆 (LSTM) 网络 |
旋律的协调 | 带有旋律的 MIDI 文件 | 与此旋律和谐的 MIDI 文件 | 生成对抗网络 |
下一个词预测 在一个 在线的 电子邮件 编辑 | 非常大的文本块(例如,所有 Wikipedia 英文文章的转储) | 一个适合作为下一个单词的单词 | 带有嵌入层的循环神经网络 (RNN) |
文本翻译成另一种语言 | 波兰语文本 | 相同的文本翻译成英文 | 编码器 – 使用循环神经网络 (RNN) 层构建的解码器网络 |
将莫奈的风格转移到任何图像 | 一组莫奈画作的图像,以及一组其他图像 | 修改后的图像看起来像莫奈画的那样 | 生成对抗网络 |
表 3. 深度学习用例示例
深度学习模型的优势
生成对抗网络
深度神经网络最令人印象深刻的应用之一是生成对抗网络 (GAN) 的兴起。 它们由 Ian Goodfellow 于 2014 年推出,此后他的想法已被纳入许多工具中,其中一些工具取得了惊人的成果。
GAN 负责存在使我们在照片中看起来更老的应用程序,转换图像以使它们看起来好像是梵高画的,甚至为多个乐器乐队协调旋律。 在 GAN 的训练过程中,两个神经网络相互竞争。 生成器网络从随机输入生成输出,而鉴别器试图将生成的实例与真实实例区分开来。 在训练期间,生成器学习如何成功地“欺骗”鉴别器,并最终能够创建看起来像是真实的输出。
移动应用程序中强大的深度神经网络
重要的是要注意,即使训练深度神经网络是一项计算量非常大的任务并且可能需要很长时间,但应用训练好的网络来完成特定任务并不是必须的,特别是如果它应用于一个或一个几例一次。 实际上,今天我们能够在智能手机上的移动应用程序中运行强大的深度神经网络。
甚至有一些专门设计用于在移动设备上应用时高效的网络架构(例如,图 1 中的 NASNetMobile)。 尽管与最先进的网络相比,它们的规模要小得多,但它们仍然能够获得高精度的预测性能。
迁移学习
人工神经网络的另一个非常强大的特性是迁移学习,可以广泛使用深度学习模型。 一旦我们对一些数据(由我们自己创建或从公共存储库下载)训练了一个模型,我们就可以在其全部或部分的基础上构建一个模型来解决我们的特定用例。 例如,我们可以使用预训练的 NASNetLarge 模型,在庞大的 ImageNet 数据集上进行训练,为图像分配标签,对其结构进行一些小的修改,使用一组新的标记图像进一步训练它,以及用它来标记某些特定类型的对象(例如,基于叶子图像的树的种类)。
迁移学习的好处
迁移学习非常有用,因为通常训练一个将执行一些实用、有用的任务的深度神经网络需要大量数据和巨大的计算能力。 这通常意味着数百万个标记数据实例和数百个图形处理单元 (GPU) 运行数周。
并非每个人都能负担得起或有权使用此类资产,这使得从头开始构建高精度自定义解决方案(例如图像分类)变得非常困难。 幸运的是,一些预训练模型(尤其是用于图像分类的网络和用于语言模型的预训练嵌入矩阵)已经开源,并且以易于应用的形式免费提供(例如,作为 Keras 中的模型实例、神经网络 API)。
如何为您的应用程序选择和构建正确的机器学习模型
当您想应用机器学习来解决业务问题时,您可能不需要立即决定模型的类型。 通常有几种方法可以测试。 一开始通常很容易从最复杂的模型开始,但值得从简单的开始,然后逐渐增加所应用模型的复杂性。 就设置、计算时间和资源而言,更简单的模型通常更便宜。 此外,他们的结果是评估更先进方法的重要基准。
拥有这样的基准可以帮助数据科学家评估他们开发模型的方向是否正确。 另一个优点是可以重用一些以前构建的模型,并将它们与新的模型合并,创建一个所谓的集成模型。 混合不同类型的模型通常会产生比单独的组合模型更高的性能指标。 此外,检查是否有一些预先训练的模型可以通过迁移学习用于并适应您的业务案例。
更多实用技巧
首先,无论您使用什么模型,请确保正确处理数据。 请记住“垃圾进,垃圾出”的规则。 如果提供给模型的训练数据质量低下或没有正确标记和清理,那么生成的模型很可能也会表现不佳。 还要确保模型——无论其复杂性如何——在建模阶段都得到了广泛的验证,并最终测试了它是否可以很好地推广到看不见的数据。
在更实际的情况下,确保创建的解决方案可以在可用基础架构上的生产中实施。 而且,如果您的企业可以收集更多可用于将来改进模型的数据,则应准备再培训管道以确保其易于更新。 这样的管道甚至可以设置为以预定义的时间频率自动重新训练模型。
最后的想法
在部署到生产环境后不要忘记跟踪模型的性能和可用性,因为业务环境非常动态。 数据中的某些关系可能会随着时间而改变,并且可能会出现新的现象。 因此,它们可以改变模型的效率,应该得到适当的处理。 此外,可以发明新的、强大的模型类型。 一方面,它们可以使您的解决方案相对较弱,但另一方面,让您有机会进一步改善您的业务并利用最新技术。
更重要的是,机器和深度学习模型可以帮助您为您的业务和应用程序构建强大的工具,并为您的客户提供卓越的体验。 尽管创建这些“智能”功能需要付出巨大的努力,但潜在的好处是值得的。 只要确保您和您的数据科学团队尝试适当的模型并遵循良好实践,您就会走在正确的轨道上,通过尖端的机器学习解决方案为您的业务和应用程序赋能。
资料来源:
- https://en.wikipedia.org/wiki/Unsupervised_learning
- https://keras.io/
- https://developer.nvidia.com/deep-learning
- https://keras.io/applications/
- https://arxiv.org/abs/1707.07012
- http://yifanhu.net/PUB/cf.pdf
- https://towardsdatascience.com/detecting-financial-fraud-using-machine-learning-three-ways-of-winning-the-war-against-imbalanced-a03f8815cce9
- https://scikit-learn.org/stable/modules/tree.html
- https://aws.amazon.com/deepcomposer/
- https://blog.keras.io/a-ten-minute-introduction-to-sequence-to-sequence-learning-in-keras.html
- https://keras.io/examples/nlp/bidirectional_lstm_imdb/
- https://towardsdatascience.com/how-do-self-driving-cars-see-13054aee2503
- https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e
- https://towardsdatascience.com/building-a-next-word-predictor-in-tensorflow-e7e681d4f03f
- https://keras.io/applications/
- https://arxiv.org/pdf/1707.07012.pdf