应用套件 ML101 与 Vijay 教授课程
![](https://files.seeedstudio.com/wiki/HarvardKit/hardvarddetection2.png)
前言
概述
我们生活在一个数据主导的世界中,虽然机器学习带来了一些令人生畏的影响,但我们可以通过它做很多事情来让世界变得更美好,从简单的任务如在社交媒体上保持安全,到更复杂的任务如在研究实验室中检测模式。无论您所在的行业或用例如何,对嵌入式系统和机器学习的理解将在未来发展中变得非常宝贵,因为这就是所有这些工具的核心;如果不知道事物在内部是如何工作的,您将无法取得任何进展。这适用于当今寻找工作的人以及未来一代,在他们甚至出生之前就了解这些技术是如何工作的。
制造业和汽车等行业已经从机器学习中受益,以预测性维护的形式。可以训练算法来识别某些类型的机器和组件的典型故障模式,然后它们可以向操作员发送警报,甚至自主采取纠正措施。通过这种方式,工业物联网(IoT)部署可以用于提高工厂的正常运行时间并减少运营成本。同样的基本原理也可以应用于其他环境;例如,交通管理系统可以使用机器学习算法来预测拥堵情况并相应调整信号时间。
在嵌入式系统的背景下,了解"tiny machine learning"是很重要的一个术语。它指的是在资源受限的设备(如微控制器)上部署的小型、轻量级神经网络的使用。Tiny machine learning算法可以用于目标识别、分类和检测等任务。它们非常适合嵌入式系统,因为它们需要相对较少的训练数据,并且可以通过少量的神经元达到良好的准确性。 Tiny machine learning有很多应用,一些有趣的例子包括:
- 自动驾驶汽车:神经网络可以用于检测环境中的障碍物,并做出避免它们的决策。
- 家庭安全:神经网络可以用于识别家庭安全摄像头拍摄的视频中的人和物体。
- 医疗保健:可以使用算法来检测医学图像中的异常或预测疾病的风险。
- 工业物联网:神经网络可以用于对工业传感器的不同类型数据进行分类。
- 零售业:神经网络可以用于识别商品图像中的物品,并向客户推荐产品。
如果您对机器学习还不熟悉,那么Tiny machine learning是一个很好的入门方式。它也是了解嵌入式系统以及如何与机器学习算法结合使用的好方法。如果您有兴趣入门,有几件事情您需要知道。首先,您需要一台可以运行Tiny神经网络代码的机器,如Wio Terminal。其次,您需要用于所使用算法的训练数据。我们将会看一些示例项目来了解训练数据。第三,您需要选择一个与您的应用匹配的机器学习算法。我们将会使用神经网络。
如果您对这些词汇中的任何一个听起来陌生,不要担心。这本手册是为初学者设计的,帮助您开始学习TinyML。无论您年龄多大还是多小,只要您想学习,就能学到。您将学习如何使用最新的ML软件工具(如TensorFlow Lite for Microcontrollers和Edge Impulse)在Seeed Studio的ARM Cortex-M核心微控制器设备上训练和部署深度神经网络模型。
读者对象
本书专门为教育工作者设计,以便能够将Wio Terminal引入课堂或研讨会,向学习者展示TinyML的强大之处。它提供了基本的基础知识,教授机器学习的最基本概念,并通过实践练习使概念扎实。
课程结构
本书是一个针对教师和学习者的实践手册,用于入门TinyML。理想情况下,学习者可以通过本书学习相关概念,并能够教授应用机器学习的基本概念。关键词是“应用”,因为本课程侧重于机器学习概念的应用,而不是技术和理论方面。
- 学生的最低年龄:12岁以上
- 计划的课程数量:5节讲座、5个实验室和2个项目
- 实践项目的时长:45分钟
课程要求
基本掌握Arduino IDE和C++的知识。
课程材料
课程材料包括本手册和Seeed Studio的 “小型机器学习套件入门 Wio Terminal” 。您需要开始学习的所有内容都可以在本课程中找到。
收获什么
本书的使用者将学习如何在Seeed Studio的Cortex-M核心微控制器设备上训练和部署深度神经网络模型。课程内容包含XXX个详细的逐步实践项目,让学生了解现代机器学习的基本概念以及如何在低功耗和占用空间小的微控制器中使用它来创建智能和连接的系统。
完成课程后,学生将能够在Cortex-M核心微控制器上设计和实施自己的机器学习项目,从定义问题到收集数据和训练神经网络模型,最后将其部署到设备上以显示推断结果或根据推断数据控制其他硬件设备。课程内容基于使用Edge Impulse平台,该平台简化了数据收集/模型训练/转换流程。
引言
初学者的人工智能
什么是人工智能?
人工智能(Artificial Intelligence,AI)是机器所展示的智能。它经常与创造力、智能和意识混淆。但实际上它不是这些东西。在现代家庭中,人工智能可以以智能音箱(如Amazon Echo或Google Home)的形式找到,这些智能音箱被编程用于回答简单的问题、提供交通更新甚至控制家中的其他设备。虽然大多数人认为他们知道人工智能的全部内容,但事实证明,大多数人是错误的!事实上,人工智能已经存在很长时间了(自1951年开始),但直到最近(2010年初)我们才看到它改变了我们驾驶汽车的方式,甚至是如何订购外卖食品。所以让我们仔细看看人工智能,看看这一切引起了什么样的轰动。
人工智能工作原理?
人工智能通过使用一种称为“机器学习”的过程来工作,我们很快就会更多地了解它。简单来说,这是一种计算机在没有明确编程的情况下从数据中学习的方法。例如,如果您想教计算机如何识别猫的图片,您首先需要向它提供大量的猫的图片。之后,计算机将能够分析新的猫的图片,并告诉它们是否是猫。这是通过一种称为神经网络的方式来实现的,神经网络是一种可以通过分析数据自己学习的人工智能类型。我们将在课程中更详细地了解神经网络以及如何“训练”它们。
为什么人工智能重要?
人工智能之所以重要有很多原因,其中一个最重要的原因是它有潜力解决世界上一些最大的问题。例如,人工智能可以用于帮助医生诊断疾病,或者帮助农民预测作物产量。人工智能还可以用于开发新药物和改进电子邮件垃圾邮件过滤器。实际上,没有人工智能无法触及的生活领域。
人工智能相对于传统方法(如统计学和线性回归)提供了几个优势。其中一些优势包括:
- 机器学习模型能够自主学习,无需人工干预。
- 它们可以更高效地处理大量数据。
- 它们能够识别人类无法辨别的复杂模式。
人工智能安全吗?
人们对人工智能的一个主要担忧是它可能是危险的。毕竟,如果计算机可以自主学习,它们有可能学会做坏事。然而,专家们一致认为计算机变得邪恶的风险非常低。事实上,人工智能的真正危险来自人类自己。例如,如果将太多的权力交给人工智能系统,人类可能会陷入危险之中。
人工智能革命
关于人工智能最重要的一点是,它不仅仅是另一个很酷的技术。它实际上是一场革命,有能力改变一切——包括我们的经济、社会体系甚至我们的生活方式。听起来很可怕,但专家们一致认为,如果我们共同努力利用这项令人难以置信的技术,人工智能可以帮助解决世界上一些最大的问题。
此外,专家预测,拥抱人工智能的人将比反对它的人更加成功。关键在于合作,所以加入我们,尽可能多地了解人工智能,因为前方有令人兴奋的时代!现在去学习人工智能是什么以及它是如何工作的,这样你就能为人工智能的未来做好准备了!
人工智能的概念基础
人工智能不仅仅是当今社会中普及的又一种技术。人工智能有能力彻底改变世界的方方面面,包括我们的经济、社会体系甚至生活方式。多年来,人工智能取得了长足的发展,证明它不仅仅是一个计算机科学项目。
人工智能的思想起源于英国哲学家艾伦·图灵对机器智能能力的研究。他在剑桥大学学习数学和计算机科学,并在该大学担任学术研究员。他的论文《计算机机器与智能》于1950年在《心灵》杂志上发表,并吸引了许多人的关注。在这篇论文中,图灵提出了后来被称为“图灵测试”的概念,这成为确定是否已经实现人工智能的事实标准。
要通过图灵测试,人工智能需要模仿人类的个性特征,以欺骗他人认为他们正在与另一个人而不是智能机器交谈。通过测试,智能机器能够以超过30%的概率让人们误以为它们是人类。虽然这并不完美,但它表明人工智能能够非常接近人类。《计算机机器与智能》为后来处理人工智能的文学作品铺平了道路,例如丹尼尔·H·威尔逊的《机器启示录》(Robopocalypse),其中机器人通过自我意识来控制世界。尽管还有许多其他涉及人工智能主题的文学作品和电影,但这是第一篇提出如今仍在使用的测试的论文之一。
图灵的论文为人工智能的进一步研究提供了契机,但也有其他作品推动了它的发展。1956年,约翰·麦卡锡在达特茅斯学院组织了一个夏季研讨会,专门研究人工智能,这被称为达特茅斯人工智能夏季研究项目。这是一个探索如何使计算机像人类一样“思考”和解决问题的新领域。计算机是否能够思考的问题已经存在多年,但通过汇集一些最优秀的数学和工程领域的人才,这一问题得到了进一步探索。
自那时以来,人工智能一直是一个不断发展的领域,被广泛应用于许多不同的领域。现代社会中人工智能的主要应用之一是控制智能家居设备,如智能音箱。这些设备已经被编程以回答简单问题、提供警报,甚至控制家中的其他物联网设备。例如,智能音箱的主要关注点是它是否一直在监听您的对话。虽然确实有一些设备被黑客入侵并未经许可记录对话的案例,但大多数公司已经采取适当的预防措施,确保其产品不会出现这些问题。这表明人工智能可以以许多有益于社会的方式使用。
人们还担心人工智能将夺走工作岗位。例如,随着无人驾驶汽车的发展,许多人对运输业的未来感到担忧。然而,重要的是要认识到,虽然这些技术可能在短期内取代某些工作,但它们也将为其他类型的工作创造新的机会。例如,无人驾驶汽车的发展将需要具备编程和维修这些车辆技能的人员。因此,重要的是不要害怕新技术,而是要拥抱它们并学会如何利用它们为我们谋利。
总的来说,人工智能自其概念提出以来已经取得了长足的进展,并可以以许多不同的方式使用。尽管人们对其存在一些担忧,但许多人意识到人工智能实际上可以在许多不同的方面改善他们的生活。只要公司采取适当的预防措施来确保我们的隐私,人工智能就可以与我们共同发展,并帮助社会在未来许多年中取得进步。
机器学习和深度学习
机器学习
机器学习是人工智能(AI)的一个分支,其重点是构建能够从数据中学习并提高准确性的应用程序,而无需对其进行编程。机器学习的基础是,机器可以像我们一样思考,通过观察、分类和从错误中学习来学习工作,而无需一步一步地教导它们。机器学习是一种基于从数据中提取信息而不需要明确编程的人工智能类型。它研究大量数据中的模式,并从这些模式中提取规则或算法,然后用于进行预测。
深度学习
深度学习是机器学习的一个子集,它利用深度(因此得名)的人工神经网络来学习大量数据。它的模型类似于人脑的内部工作方式。软件程序包含了“神经元”(类似于我们的大脑),它们之间有连接。当暴露于新数据时,这些连接会被修改,以便它们知道如何处理输入信息。深度学习与机器学习不同之处在于,它不局限于“监督学习”。它就像有一位老师站在你旁边,告诉你每个数学步骤你做对了还是错了。他或她之所以能够“监督”你,是因为他/她是该学科的专家。因此,它默认需要监督。然而,深度学习也可以使用无监督数据,其中“深度”指的是使用算法从未标记的数据(如图像或文本)中创建复杂结构。随着课程的进展,我们将学到更多关于这些不同学习方法的细节。
深度学习的应用
深度学习在今天的许多行业中被广泛应用。它在金融领域用于股市预测、风险评估和诈骗检测等方面。在营销领域,它用于客户分群、个性化和内容优化等方面。在医疗保健领域,机器学习用于诊断、治疗计划和患者监测等任务。它对我们的社会产生了变革性的影响。
机器学习对社会产生变革性影响的一个例子是它如何节省金钱和挽救生命。例如,正如前面提到的,深度学习算法可以预测股票的走势,如预测股票是上涨还是下跌。这些预测指导投资策略,改善金融决策。同样,深度学习还可以进行医学预测,以改善患者诊断并挽救生命。一项研究发现,深度神经网络可以以超过83%的准确率预测感染败血症的患者,而传统诊断工具的准确率只有55%。机器学习不仅能够比人类更准确地进行预测,而且能够以更快的速度进行预测。那么你还在等什么呢?
让我们再举个例子。制造业越来越依赖于计算机技术,以实时方式提供有关生产各个方面的数据,这在过去是无法想象的。汽车行业是其中一个明显的例子,汽车越来越被视为装载了计算机的物理产品。
深度学习已经成功应用于制造业。通过使用软件不断从制造过程中收集的大量数据进行学习,企业能够提高生产效率,减少浪费,提高效率。企业从中获得经济利益,而消费者则以更低的价格获得更高质量的产品。机器学习使制造商能够不断改进他们的流程,以比以往更快、更高效地生产更高质量的产品。
深度学习已经改进了我们日常使用的产品,例如 Netflix 的推荐系统或 Google 翻译的文本翻译,但它也使得Amazon 和 Uber等公司能够通过快速识别不满意的客户来节省客服成本。更令人惊讶的是,许多博物馆也使用机器学习来跟踪他们的绘画作品,并防止发生任何艺术品盗窃事件。
深度学习改变了我们的生活和工作方式。各行各业的公司已经广泛使用人工智能,提高生产效率,做出比以往更准确的预测。无论您是想在您的业务中使用深度学习,还是只是想了解它的工作原理,阻碍您与这项令人兴奋的技术接触的唯一因素就是知识。所以为什么不花些时间了解一下我们这个时代最令人兴奋的技术之一呢?随着人工智能领域的发展,机器学习的应用只会增加。每天收集更多的数据,机器学习可以做的事情就有无限的可能性。唯一限制我们的是对它工作原理的理解。所以今天花些时间了解这项令人惊奇的技术,看看您如何将其应用于自己的生活和工作中。您不会后悔的!
问答环节
- 人工智能和机器学习有什么区别?
- 谁是 Alan Turing?
- 什么是 Turing 测试?
- 除了本章中给出的例子,人工智能在商业或我们日常生活中还有哪些其他重要用途?
- 人工智能存在哪些潜在的危险或风险?
- 你认为人工智能会像人类一样具有自我意识吗?
机器学习的未来是微小而光明的
我们生活在一个被数据主导的世界中,虽然机器学习引发了一些令人畏惧的影响,但我们可以利用它来改善世界的许多方面——从在社交媒体上保持安全这样的简单任务,到在研究实验室中检测模式这样的复杂任务。无论您所在的行业或使用情况如何,对嵌入式系统和机器学习的理解将在未来发展中变得非常宝贵,因为这就是所有这些工具的基础;如果不了解底层工作原理,您将无法在使用它们时取得任何进展。这对于今天寻找工作的人以及未来一代在他们甚至出生之前就了解这些技术如何工作的人来说都是如此。
嵌入式系统无处不在,大多数人甚至没有意识到它们的存在。它们存在于我们的汽车、微波炉、家用电器甚至我们的服装中。嵌入式系统是一种控制另一个设备或一组设备执行特定任务的设备。嵌入式系统对我们周围的世界的正常运行至关重要。它们负责让我们的汽车保持在道路上行驶,让我们的微波炉烹饪食物。没有嵌入式系统,我们的世界将会是一个完全不同的地方。
有许多不同类型的嵌入式系统。最常见的类型是微控制器。微控制器单元(MCU)是一种小型的嵌入式计算机,可以编程来控制其他设备。它们可以在从汽车到家用电器的各种设备中找到。例如,ARM Cortex M0+和Seeeduino XIAO板,它的尺寸只有一个拇指大小(17.5毫米),功耗只有1.33毫安(这意味着它可以在150毫安的电池上运行112小时,如果进入深度睡眠状态,运行时间更长),价格低至4.3美元。另一种常见的嵌入式系统类型是数字信号处理器(DSP)。DSP用于处理音频和视频等数字信号。它们存在于智能手机和平板电脑等设备中。关于嵌入式系统的更多信息可以在附录部分找到。
未来将会把更多的嵌入式设备带入我们的生活,例如智能手表和Fitbit等可穿戴技术。嵌入式系统也将变得更加复杂,具备更多功能和能力。随着我们的世界越来越依赖嵌入式系统,了解它们的工作原理以及它们在我们生活中的作用变得非常重要,特别是随着机器学习的出现。
制造业和汽车等行业已经从嵌入式机器学习中获益,例如预测性维护。算法可以训练用于识别特定类型的机器和组件的典型故障模式,然后它们可以向操作员发送警报,甚至自主采取纠正措施。通过这种方式,工业物联网(IoT)部署可以用于提高工厂运行时间和降低运营成本。同样的基本原理也可以应用于其他环境;例如,交通管理系统可以使用机器学习算法预测拥堵情况并相应调整信号时间。
云机器学习
机器学习是一种已经在许多行业中得到应用的成熟技术。机器学习涉及到数据的收集、处理,并从中提取算法洞察,以对未来事件进行预测。机器学习是人工智能(AI)的一个子集。机器学习算法通常涉及大量的计算,并需要非常大的数据集,这限制了您可以进行的实验数量,使验证发现变得困难。云机器学习提供了一种机器学习和人工智能的服务,它负责处理繁重的工作,使企业不必担心管理复杂的基础设施或昂贵的硬件。
边缘机器学习
云机器学习和边缘机器学习的区别在于,云机器学习通常意味着有一个中央服务器处理所有数据并进行机器学习,而边缘机器学习涉及在边缘设备上处理数据,如手机、汽车或无人机。边缘机器学习很重要,因为它允许进行本地决策,并避免将所有数据发送到中央服务器进行处理,这可能会很慢且昂贵。
微小机器学习
另一种越来越受欢迎的机器学习方法是微小机器学习(TinyML)。机器学习涉及使用大量数据来训练模型,并根据数据中的统计关系计算模型参数。机器学习算法通常需要大量的计算和数据集,这使得在数据有限的情况下训练模型非常困难。特别是对于机器学习分类算法来说,需要在训练开始之前知道数据集中可能的类别数量。
微小机器学习(TinyML)是机器学习的一个子集,专注于在有限的数据和资源下训练模型。它特别适用于传统机器学习算法过于资源密集或难以实现的应用场景。微小机器学习已经应用于从智能制造到控制自动驾驶车辆等各种应用中。
微小机器学习变得越来越受欢迎的原因之一是边缘设备中的微控制器变得更加强大和更便宜。微控制器是用于各种设备的小型计算机,从汽车到无人机都有使用。随着半导体行业向更小的几何尺寸发展,微控制器变得更加强大和更便宜。这意味着微小机器学习算法可以在边缘设备上运行,如手机、汽车或无人机,而不会消耗过多的电力或占用太多空间。
用于物联网系统的微小机器学习
微控制器正迅速变得更强大,但与传统服务器相比,它们的内存和计算能力仍然相对较小。需要大数据集或复杂计算的AI算法无法在这些技术上实现,除非对它们进行全面改造。微小机器学习可以为机器学习带来新的可能性,特别是在物联网(IoT)领域,简单的控制系统被用于从智能医疗植入物到自动驾驶汽车等新颖应用。
由于模型优化的最新突破和专门设计用于在微控制器上进行机器学习模型推断的框架的出现,我们现在可以在微控制器上使用神经网络来识别音频场景(例如,大象活动或打破玻璃的声音),检测热词(以激活具有特定短语的小工具)甚至识别简单的图像。集成了微控制器的设备可以为现有传感器赋予新的功能和意义,例如使用安装在机械装置上的加速度计进行异常检测和预测性维护,或者用于区分不同类型的酒精饮料,正如此演示中所示!微小机器学习的潜力真的是无限的。
微小机器学习的工作原理
微小机器学习算法旨在处理可以在微控制器或嵌入式系统上处理的小型数据集。这些算法通常基于线性回归或神经网络,可以使用非常少的代码实现。机器学习模型可以使用有限的数据进行训练,并且相对于传统的机器学习算法,它们可以更容易地适应数据集的变化。
微小机器学习算法旨在处理可以在微控制器或嵌入式系统上处理的小型数据集。这些算法通常基于线性回归或神经网络,可以使用非常少的代码实现。机器学习模型可以使用有限的数据进行训练,并且相对于传统的机器学习算法,它们可以更容易地适应数据集的变化。
资源有限,但竞争也有限
微小机器学习算法的使用仍处于早期阶段,这个领域的大部分研究都集中在开发在小型设备上实现这些算法的新方法上。这为创新留下了足够的空间,为有进取心的创业者在新市场中引入机器学习提供了许多机会。与此同时,资源的竞争可能会非常激烈。像谷歌和亚马逊这样的大型科技公司已经在机器学习上投入了大量资金,他们可能也会进军微小机器学习市场。这可能对试图在这个领域竞争的小型初创公司构成挑战。
问答环节
Q. 你能解释一下云端、边缘和嵌入式机器学习之间的区别吗? Q. 一个微型机器需要学什么? Q. 微型机器学习有哪些局限性? Q. 如何在家庭或办公室中使用微型机器学习? Q. 这些机器如何根据其数据集得出结论,通常数据集有多小? Q. 什么时候使用大型机器比使用小型机器学习系统更好?
机器学习算法的分类体系
机器学习算法可以分为三大类:监督学习、无监督学习和强化学习。在监督学习算法中,机器会被提供一组训练数据,并从这些数据中学习,以对新数据进行预测。无监督学习算法则帮助您探索数据集,找到其中的隐藏模式,而无需特定的预期结果。强化学习算法是一种机器学习算法,机器通过试错经验进行学习。每个机器学习算法以不同的方式解决机器学习问题,某些机器学习问题可能只能通过特定的机器学习算法来解决。
监督学习
什么是监督学习?
监督机器学习是一种根据示例输入-输出对来找到将输入映射到输出的函数的机器学习任务。它被称为监督学习,因为机器在学习过程中依赖某种形式的监督(例如“教师”),以便从环境中学习并提高性能。在这种情况下,机器无法完全自主学习,它需要人类的帮助,以获得关于哪些输入导致所需输出的指导和反馈。
监督机器学习工作原理?
在监督机器学习中,对计算机进行训练的人执行的任务可以分为三类:标注、分类或测量。标注涉及将类别分配给项目-例如,将所有苹果标记为属于苹果类别。分类是根据某些共享属性将项目分组。例如,将所有动物分组在一起可以称为动物分类。测量意味着评估某些属性,例如大小或重量,并为其提供定量值-例如,测量篮子中有多少个苹果,并称有36个苹果。
监督机器学习的目标始终是基于历史数据构建模型,这些模型可以帮助预测结果并做出决策。训练算法进行此操作需要大量的时间和精力,但它也有许多好处。首先,提供的数据越多,模型在预测结果方面的能力就越好。输入数据越多,它就越接近于预测未来可能发生的情况。其次,算法可以使用“健康”或“患病”等标签。监督机器学习甚至可以在进行预测时考虑到分类属性,例如肤色或性别。这不仅有助于准确性,还确保其决策过程不受个人经验或偏见的影响。
监督机器学习是一个强大的工具,在许多不同领域中可以发挥巨大作用。它限制偏见并以越来越准确的方式进行预测的能力使其成为数据科学家工具箱中不可或缺的一部分。随着越来越多的数据可用性,它在未来的角色肯定会更加重要。
监督机器学习在现实世界中的应用示例:
- 零售商可以使用它来训练模型,预测客户行为并相应地调整产品。
- 数据科学家可以使用监督机器学习对自然语言进行建模,并在非结构化数据中找到模式。
- 医疗行业可以使用它来开发预测特监督机器学习问题中
监督学习的好处是什么?
数据科学家使用监督机器学习构建反映训练数据的模型,这些数据已经以某种方式进行了标记或分类。换句话说,它必须附带标签,如"健康"或"患病"。构建模型的目的是训练算法,告诉它们在分类数据时应该寻找什么,并如何运转。
谁可以进行监督机器学习?
数据科学家使用监督机器学习构建反映训练数据的模型,这些数据已经以某种方式进行了标记或分类。换句话说,它必须附带标签,如"健康"或"患病"。构建模型的目的是训练算法,告诉它们在分类数据时应该寻找什么,并如何运转。
监督机器学习的缺点是什么?
监督机器学习在大量标记/分类/测量的训练数据上效果最好,因为更多的信息意味着更好的结果和预测。如果没有足够的数据,很难训练出产生良好预测的模型。此外,算法的好坏取决于设计和监督它们的人。如果训练数据中存在偏见,那么监督机器学习创建的模型很可能会重现这种偏见。
监督机器学习的实际应用示例是什么?
监督机器学习的一个常见应用是欺诈检测。在这种情况下,信用卡公司可能使用监督机器学习算法来识别消费行为中可能表明欺诈活动的模式。这可能涉及对过去数据进行建模,以寻找异常或不寻常的活动,比如某人突然在短时间内开始大量消费。
监督机器学习的限制是什么?
监督机器学习可以向算法提供准确的训练,帮助它学习预期的行为。如果没有足够的数据,很难训练出产生良好预测的模型。此外,算法的好坏取决于设计和监督它们的人。如果训练数据中存在偏见,这种偏见很可能会在监督机器学习创建的模型中重现。
监督学习的未来是什么样的?
在未来,监督机器学习很可能变得更加重要。随着不断增长的数据量,准确理解数据变得比以往任何时候都更加重要。监督机器学习是实现这一目标最有效的方法之一。此外,随着越来越多的企业意识到数据科学的价值,对熟练的数据科学家的需求将继续增长。这意味着监督机器学习将成为商业运营的更加重要的一部分,因为组织寻求获取竞争优势。
监督学习最简单的例子是什么?
监督机器学习最常见的形式是线性回归。线性回归是一种将直线拟合到一组数据点的技术,其中每个数据点由两个坐标(x,y)表示。机器学习算法根据一种称为代价函数的误差度量,找到最适合数据点的直线。
在监督学习中,每个示例都是一个由输入对象(通常是一个向量)和一个期望的输出值(也称为监督信号)组成的对。机器学习算法通过调整其参数来进行“训练”,以便在预测值和目标值之间产生尽可能接近的匹配。
监督学习算法也可以用于分类任务。分类是识别输入属于预先确定的一组类别中的哪个类别的任务。例如,您可能希望使用机器学习来区分狗和猫的图像。在这种情况下,输入将是一张图像,期望的输出将是描绘的动物的名称:“狗”或“猫”。
无监督学习
无监督学习是什么?
近年来,另一种越来越受关注的机器学习类型是无监督机器学习。这个研究领域将机器的能力与人类组织、标记和解释数据集的能力结合起来。无监督机器学习技术用于降维、聚类、可视化、特征选择等任务。
- 降维:减少数据集中的维数。例如,可以通过将数据转换为较低维度的空间来实现这一点。
- 聚类:将相似的项分组在一起的过程。
- 可视化:以易于理解的方式显示数据的过程。
- 特征选择:从数据集中选择一部分特征的过程。例如,可以通过这样做来减小数据集的大小或使其更容易训练机器学习算法。
无监督学习工作原理?
在无监督机器学习中,算法用于在数据集中找出模式。有许多不同类型的无监督机器学习算法,每个算法都有自己的一套指令。例如无监督机器学习算法: k-means, k-nearest neighbor, 层次聚类、潜在狄利克雷分配等。
要创建一个成功的无监督机器学习模型,有三个关键组成部分:数据,算法和反馈。数据是模型的输入,算法是用于在数据中找出模式的工具,反馈用于提高模型的准确性。无监督机器学习过程可以分为四个步骤:预处理、数据探索、模式检测和后处理。
- 预处理:这一步用于清理和准备数据,以便进行进一步的分析。
- 数据探索:这一步用于探索数据并找出其中的模式。
- 模式检测:这一步用于检测数据中的模式。
- 后处理:这一步用于提高模型的准确性,并准备数据进行部署。
无监督机器学习的优缺点是什么?
无监督机器学习的优点之一是它可以用于人类难以独自完成的任务。例如,对数据集进行聚类可以发现人眼无法察觉的模式。此外,无监督学习可以帮助改进现有的监督机器学习算法。通过在数据集上使用聚类技术,监督算法可以发现这些聚类中的群组。
通常情况下,无监督机器学习用于探索性分析。在某些情况下,所需的结果是已知的,使用无监督学习算法的唯一目标是找到特定的模式。在其他情况下,可能没有任何期望的结果,无监督学习算法的唯一目标是发现未知的模式。
无监督机器学习的另一个优点是可以提供对新应用和问题的洞察。例如,如果数据科学家想要在生物学数据集上使用聚类,他或她可能会发现一个聚类包含与特定疾病相关联的基因。这可能会在生物学领域带来新的发现。
尽管无监督机器学习具有许多优点,但它仍然是一个新兴的研究领域。在无监督机器学习能够广泛应用之前,还需要解决许多挑战。例如,当前的无监督学习算法并不总能找到数据集中所有期望的模式。此外,无监督学习算法可能会运行缓慢且计算成本高昂。
然而,无监督机器学习是一个令人兴奋的领域,有可能在许多不同的研究领域做出深远的贡献。随着持续的研究和发展,无监督机器学习将变得更加强大和广泛应用。
强化学习
什么是强化学习?
最后一种类型是强化学习,它是一种可以通过对特定行为进行奖励来教会计算机执行任务的机器学习类型。强化学习通常涉及为计算机提供一个模拟环境,它可以在其中学习,最终目标是使其能够在现实世界中完成任务。
强化学习是机器智能研究的一个领域,涉及到软件代理如何在环境中采取行动以最大化某种累积奖励的概念。强化信号可以是明确的,例如在完成任务后提供的"奖励",也可以是更微妙的,例如在错误行动后的"惩罚";强化信号不仅限于纯正面或纯负面的形式,而是任何能够影响行为并影响未来决策的反馈(例如,如果你因为画了一幅画而受到称赞,这可能会使你将来更有可能画画)。
强化学习工作原理?
在强化学习中,强化信号通常是稀疏的,因为在强化学习中很难验证信号是否意味着强化。这意味着强化学习算法通常需要假设它们接收到的强化信号是有效的强化信号,因此学习一个目标值函数,旨在最大化未来奖励估计的加权和,而不仅仅是即时奖励。在这种假设不成立的情况下,强化学习算法将尝试最大化预期折现未来奖励。
最早的强化学习方法之一是在20世纪60年代初开发的Q学习算法。Q学习是一种无模型的强化学习技术,通过学习每个状态下的最优动作值函数(Q函数),使用强化信号来更新值函数。该算法从对每个状态s的Q(s)的估计开始,然后通过强化信号r(s,a)对这些估计进行迭代更新,告诉算法在状态s中采取的动作是好还是坏。换句话说,Q学习试图学习一个策略,将世界的状态映射到在这些状态下采取的最佳动作。
在强化学习中,有时我们可以将迁移学习定义为一种无需人类交互就能从过去经验中学习的强化学习方法。惩罚涉及减少奖励,例如杀死或将某物发送回发送者。奖励涉及增加奖励,例如在媒体播放器上点击播放按钮(这基于您的环境)。
强化学习的一些应用包括:
游戏开发:强化学习在基于奖励的拼图游戏(如Sokoban)和实时策略游戏(如 Age of Empires II: The Age Of Kings)中得到应用。它可以用于训练游戏智能体,在游戏环境中学习并改进其决策和行为。
在上述图中,黄色节点代表输入层的神经元,它从前一层接收输入。每个神经元在传递信号之前可以应用权重(in1、in2、in3),而该神经元的输入加权和将激活下一层的一个或多个节点。这个过程在每个连续的层中重复,直到确定输出值为止。正如您所看到的,这使得使用基于数学推导的算法来表示复杂的决策规则非常容易(尽管使其正确运行是另一回事)。
为了使人工神经网络(ANNs)学习,它们需要大量的信息输入,称为训练集。当您试图教会ANN如何区分猫和狗时,训练集会提供成千上万个标记为狗的图像,以便网络开始学习。一旦用大量数据进行了训练,它将尝试根据它认为从不同单元中看到的(或听到的,根据数据集)来对未来数据进行分类。在训练期间,机器的输出与人提供的应观察描述进行比较。如果它们相同,机器就被验证了。如果不正确,则使用反向传播来调整学习,通过回溯各层来微调数学方程。这就是所谓的深度学习,它使网络变得智能。
通常,深度神经网络需要相当强大的计算资源来进行训练和部署。然而,最近出现了一种称为TinyML的边缘机器学习或嵌入式机器学习的技术或研究领域。它代表了机器学习和嵌入式系统中的一种技术或研究领域,探索一旦减少、优化和集成,可以在微控制器等小型设备上运行哪些机器学习应用程序。
还有许多其他机器学习算法可以用于不同的任务。选择适合该任务的正确算法非常重要,不要试图强行让机器学习算法执行其不适用的任务。这可能导致分类准确性差或预测不正确。
深度学习入门
本节将对深度学习进行一个非常高级的概述,特别是与人工神经网络相关的部分,我们将简称为神经网络。人工神经网络(ANN)是一种模拟大脑的计算系统。
什么是神经网络?
总的来说,神经网络是一种用于理解和预测数据中复杂模式的强大工具。它们由大量相互连接的处理节点或神经元组成,可以学习识别输入数据的模式。首先有一组被称为输入神经元的节点,然后是一系列隐藏层,最后汇集成一些输出层,帮助做出明智的决策。通过正确的数据,神经网络可以被训练以学习并进行令人惊讶地准确的预测。然而,它们也需要非常高的计算资源,并且训练起来可能很困难。此外,神经网络在决策过程中通常是不透明的,这在试图向人类解释它们的预测时可能会成为问题。尽管如此,神经网络是一种强大的工具,在应用于正确的问题时可以发挥巨大的作用。
神经网络是一种用于理解和预测数据中复杂模式的强大工具。然而,它们也需要非常高的计算资源,并且训练起来可能很困难。此外,神经网络在决策过程中通常是不透明的,这在试图向人类解释它们的预测时可能会成为问题。尽管如此,神经网络是一种强大的工具,在应用于正确的问题时可以发挥巨大的作用。
什么是深度学习训练?
要训练一个神经网络,您需要为其提供一个训练数据集和一组确定网络学习方式的参数。训练数据集包含一组输入数据以及每个数据点的期望输出。神经网络将使用这些数据来学习如何识别输入数据中的模式并产生正确的输出。您需要设置的参数将取决于您使用的神经网络类型,但通常包括学习速率、迭代次数和隐藏层的大小。
机器学习训练中的权重在机器学习算法的成功中起着关键作用。位于神经元(边缘)交叉点的权重确定每个输入对机器学习模型输出的影响程度。为了获得最佳结果,选择适合您数据集的正确权重非常重要。确定正确权重的一种常见方法称为delta规则。delta规则是一个数学公式,用于计算预测输出与实际输出之间的误差。然后使用此误差来调整机器学习算法的权重。
有各种其他训练机器学习模型的方法,但最流行的方法是使用一种称为反向传播的技术。反向传播是一种用于训练神经网络的训练算法。它通过将误差梯度向后传播到网络中,以便更新权重以减小误差。反向传播是一种有效的神经网络训练方法,并在各种任务中证明成功。反向传播的一个好处是可以用于训练具有多个层的神经网络。这是因为误差梯度会通过网络中的所有层向后传播,以便更新所有权重。反向传播也相对容易实现,这使其成为训练神经网络的流行选择。
然而,反向传播也有一些缺点。其中一个是训练大型神经网络可能会很慢。另一个是反向传播有时可能不稳定,意味着权重可能会发散而不是收敛。最后,反向传播需要访问训练数据才能工作,如果数据不容易获取,这可能是一个问题。尽管这些缺点,反向传播仍然是训练神经网络的流行选择,因为它是一种高效且相对易于使用的算法。如果您有兴趣训练自己的神经网络,那么反向传播可能是一个不错的选择。
什么是深度学习推理?
机器学习推理是使用训练好的机器学习模型对新数据进行预测的过程。总的来说,有两种类型的机器学习推理:在线推理和批量推理。在线推理是在新数据到来时进行预测的过程,而批量推理是一次计算大量数据的预测结果的过程。神经网络非常适合在线推理,因为它们可以非常快速地进行预测。这对于诸如面部识别的任务非常重要,您需要能够实时识别人脸。批量推理对于许多应用程序也很重要,例如股市预测和天气预报,您需要一次对大量数据点进行预测。
机器学习生命周期
机器学习生命周期是一个循环过程,包括三个阶段(流程开发、训练阶段和推理阶段),由数据科学家和数据工程师通过大量数据的开发、训练和服务模型来实现,这些数据涉及到机器人技术、语音识别系统、搜索引擎优化(SEO)、医学、金融等各种应用。本文旨在深入理解机器学习生命周期及其在数据科学领域的重要性。
机器学习生命周期的第一个阶段是流程开发阶段。在这个阶段,数据科学家和数据工程师共同合作开发数据处理流水线,用于获取、清洗、处理和预训练数据集。这个阶段的主要目标是确保数据集准备好进行训练和推理。第二个阶段是训练阶段,模型实际上是使用数据集进行训练的阶段。这个阶段需要大量的时间和精力,因为它涉及尝试不同的算法和参数,以找到最佳模型用于预测。最后一个阶段是推理阶段,模型被投入使用进行预测。在这个阶段,数据科学家和数据工程师共同合作将模型部署到生产环境中,并确保其正常工作。
机器学习生命周期的重要性在于,它帮助数据科学家和数据工程师利用各种应用中涉及的大量数据来开发、训练和服务模型。它还帮助他们避免在训练和推理阶段可能出现的常见问题。机器学习生命周期是一个循环过程,意味着可以多次重复以提高模型的准确性。因此,它对于任何希望成为数据科学家或数据工程师的人来说都是一种必不可少的工具。
几乎任何机器学习的工作流程都可以通过以下步骤进行简化和总结:
- 收集和清洗数据
- 准备和配置参数
- 训练机器学习模型
- 评估机器学习模型的性能
- 在生产环境中部署/用于进一步训练,具体取决于情况。
虽然这些步骤看起来很简单,但完成它们可能需要相当长的时间。在接下来的章节中,我们将深入探讨每个不同步骤,并了解其中的细微差别。
数据收集
数据收集是机器学习生命周期的第一步。数据科学家和数据工程师需要收集大量数据,以便开发、训练和服务模型。这些数据涉及到图像识别、视频分析、自然语言处理、预测分析等各种应用。
预处理
预处理是机器学习生命周期中数据科学家和数据工程师需要进行的第二步。在将数据馈入机器学习算法之前,数据应该经过清洗和准备进行分析。数据预处理对于机器学习非常重要,因为它包括数据清洗、数据探索、数据可视化、数据降维、数据转换等任务。这些对于机器学习模型的开发非常重要,因为它们通常用于原始数据集。在数据经过处理之后,就是选择算法的时间了。算法将决定计算机如何从数据中学习。
训练
机器学习训练是机器学习生命周期的第三步。机器学习训练过程包括两个阶段:训练阶段和推理阶段。数据科学家训练一个机器学习模型,然后用它来预测不同的数据集上的结果,这些数据集在训练时不可用。训练过程包括选择最适合当前任务的神经网络架构。一旦选择了算法,下一步是配置神经网络架构的参数。这些参数包括神经网络中的层数、激活函数的类型和学习率。参数配置完成后,就可以开始训练机器学习模型了。这个过程可能需要很长时间,具体取决于数据集的大小和复杂性。
优化
机器学习模型可以通过压缩、修剪和量化等方式进行优化。压缩是减小机器学习模型大小的过程。这是通过消除与当前任务无关的特征来实现的。修剪是移除机器学习模型中不重要的神经元权重的过程。量化是将浮点数转换为整数值的过程。这样做可以节省空间和时间。这些优化不仅可以使模型运行更快,还可以帮助减少系统的内存消耗要求。
部署
部署阶段是机器学习生命周期的第四个也是最后一个步骤。在这个阶段,机器学习模型被部署到一个可以用来进行预测的环境中。这可能是在云端、本地、移动设备上,或者在我们的案例中是小型设备上!一旦机器学习模型训练完成,就可以在选择的平台之一上部署模型。模型可以在生产环境中部署,也可以用于进一步的训练。最后一步是评估机器学习模型的性能。可以通过将预测结果与实际结果进行比较来完成评估。
评估
机器学习推理是使用已经在不同数据集上训练过的机器学习模型对新数据集进行预测的过程。推理是重要的,因为它使我们能够使用机器学习模型对我们以前没有见过的数据集进行预测。这有助于我们改善对数据和机器学习模型的理解。
机器学习生命周期是一个循环过程,通过预测算法将原始数据转化为可操作的见解。该循环包括三个阶段:数据收集、预处理和机器学习训练。该循环的主要目标是通过使用机器学习模型提高预测的准确性。
问答环节
Q. 机器学习生命周期的三个阶段是:
Q. 哪一阶段对做出准确的预测最为重要?
Q. 如何评估机器学习模型?
数据收集
什么是数据收集?
为了使机器学习模型有效,必须使用高质量的数据进行训练。数据的质量取决于其包含的变化程度和标签的正确性。为了确保机器学习模型的有效性,重要的是选择代表您尝试解决的真实世界问题的数据。从无数不同的来源收集和测量信息的过程称为数据收集。
什么是训练数据?
训练数据是用于训练机器学习模型的数据。它是用于教授算法需要了解的内容,以便正确识别非结构化数据中的相关模式的数据。确定数据是否适合用于机器学习模型的最佳方法是对数据本身有更好的了解。如果您希望将其用作训练数据,那么它必须满足以下几个关键属性:
- 它必须代表从中收集的人口。
- 应该对可能存在于同一组被研究的人或物品中的多个类别(例如“猫”与“狗”)进行平等代表。这确保了当机器学习模型在预测一个类别与另一个类别时,数据没有偏差。
- 每个项目中的变量应具有有意义的测量水平。这意味着应将数值值分配给离散类别,而不是反过来。
什么是训练数据集拆分?
训练数据由不同的分区组成。在对机器学习数据进行分区时,您需要将机器学习数据集分为两个集合:训练集和测试集。机器学习算法首先在训练集上进行训练,然后在测试集上进行测试,以查看其在预测感兴趣的目标变量方面的效果如何。可以使用多种技术将机器学习数据集分区,包括但不限于:
- 将数据随机分成两组。
- 使用分层方法将数据分成两组,以便数据的分布在两组之间保持一致。
- 使用机器学习算法智能地将数据分成两组。
一般的经验法则是80:10:10规则。80%的数据用于模型训练。10%的数据用于验证训练数据,以提高其准确性。最后的10%是我们在将机器学习模型投入生产之前验证其准确性的保留数据。
训练数据的来源是什么?
为了将我们收集的数据用于开发实际的人工智能(AI)和机器学习解决方案,必须以符合业务问题的方式收集和存储数据,并且必须以高效的方式组织数据,以便在系统需要时能够快速访问。数据的主要来源有三种:
- 内部数据
- 公共数据
- 外部数据
内部数据是指已经存储在组织内部的数据。这可以是客户记录、购买信息或产品信息。使用内部数据的主要缺点是它经常不完整,并且以与机器学习解决方案兼容的格式不可用。然而,使用内部数据的主要优点是可以快速而轻松地访问。
公共数据是指在互联网上提供的任何免费数据源。这些数据通常以大量的数据格式出现,并且可能需要额外的处理才能准备好用于模型。这里的一个主要注意事项是确保您有权使用数据来训练模型。仅仅因为有免费数据可用并不意味着您可以使用它,特别是用于商业目的。
选择的公共数据将取决于模型的目标。例如,如果您想预测选举结果,可以使用公共数据,如以前选举的结果或选民注册记录。外部数据是您无法自己收集的任何数据-它可能来自第三方提供商或专门提供机器学习信息的其他公司。
如何获取带有标签的训练数据?
标记的训练数据对于监督式机器学习模型至关重要。该数据用于教授算法需要了解的内容,以便正确识别非结构化数据中的相关模式。为了获取带有标签的训练数据,您需要从愿意提供数据的来源进行收集。有几种方法可以做到这一点:
- 可以使用在线调查或实验来从大量人员那里收集数据。然后请参与者相应地为数据贴上标签。
- 数据还可以来自社交媒体平台,如Twitter,用户可以使用特定的关键词或标签对推文进行标记。
- 预先标记的项目数据库可以用作训练数据的来源。这通常由专门从事数据注释和标记的公司完成。
如何确定数据集是否适合机器学习模型?
确定数据集是否适合机器学习模型的最佳方法是更好地了解数据本身。如果要将其用作训练数据,那么必须满足以下几个关键属性
- 它必须代表从中收集的人口。
- 应该对可能存在于同一组被研究的人或物品中的多个类别进行平等代表。这确保了没有偏差在任何一个类别上比另一个类别,并且在基于特征预测某物的可能性时结果将更准确。
- 每个项目中的变量应具有有意义的测量水平。这意味着应将数值值分配给离散类别,而不是反过来。
有哪些不同类型的数据?
有两种类型的数据-结构化数据和非结构化数据。结构化数据是以表格或网格形式组织的数据。这种类型的数据易于处理,并且用于训练使用监督学习算法的机器学习模型。非结构化数据是没有以任何特定格式组织的数据。这种类型的数据很难处理,并且用于训练使用无监督学习算法的机器学习模型。
数据预处理
什么是数据预处理?
在收集到数据之后,下一步是对其进行清洗和准备,以便在机器学习模型中使用。这个过程被称为数据预处理。数据预处理的目的是通过消除不需要的变异和填充缺失值,使数据准备好用于建模。
您选择的预处理步骤将取决于您使用的数据类型和计划在模型中采取的方法。例如,如果您的数据包含大量缺失值(例如缺失的属性,如年龄或性别),则可能可以从其他可用信息中推断出缺失的信息。这将减少缺失数据的数量,并允许您在模型中包含更多记录。
数据预处理包括哪些内容?
通常,数据预处理涉及以下几个步骤:首先,需要清理数据并准备好进行分析。这包括去除任何异常值、噪声或不完整的数据。接下来,需要将数据转换为适合机器学习算法的形式。这通常涉及将数据转换为数值形式并提取相关特征。例如,我们可以将音频信号转换为图像以理解音频数据。这实际上就是大多数“关键词检测”算法的工作原理。在将机器学习数据转换为数值形式时,建议使用计数或分箱技术。这两种技术可以应用于分类和数值数据。当每个特征的取值有限时,使用计数技术,而当每个特征的取值很多时,则使用分箱技术。最后,需要将数据分割为训练集和测试集。训练集用于训练机器学习算法,而测试集用于评估算法的性能
数据预处理的重要性是什么?
数据预处理的重要性在于它有助于确保机器学习算法在训练时使用的数据代表了真实世界。通过清理和转换数据,我们可以消除数据中存在的任何噪声或偏差。这有助于提高机器学习算法的准确性。此外,数据预处理还可以通过从数据中提取有用的特征来提高性能。通过识别和提取最重要的特征,我们可以减少机器学习算法需要处理的数据量。这可以提高性能并加快执行时间。最后,将数据分割为训练集和测试集可以评估机器学习算法的性能。通过在算法之前对其进行测试数据,我们可以看到它的性能和准确性如何。我们使用这个测试的结果来确定我们的机器学习模型是否有效。
数据预处理的第一步是清理输入。这包括从数据中删除噪声和异常值,适当地格式化数据以供机器消费,并执行任何必要的转换。噪声可能是由于不正确或不一致的数据值,而异常值则是与数据集中的其他值相差很大的值。
接下来,应该探索数据以更好地了解其内容。这可以通过可视化数据并根据对数据的观察获得的洞察来完成。机器学习算法应该能够利用在探索数据时所学到的东西。
最后,完成所有这些工作后,可以开始训练机器学习模型。这个过程涉及选择一个算法并配置它,通过选择适当的损失函数和准确度指标来将数据映射到解决方案。我们将很快讨论更多相关内容。
如果您想在预测模型中包含大部分人口,但某些少数群体的样本很少,另一个选项是使用过采样或欠采样等统计技术来创建一个平衡的数据集。过采样涉及通过从人口中随机选择其他记录来为少数群体创建额外的记录。另一方面,欠采样涉及从少数群体中删除一些记录,以使其更能代表更大的人口。
准备好数据之后,可以开始训练机器学习模型。这个过程涉及选择一个算法并配置它,通过选择适当的损失函数和准确度指标来将数据映射到解决方案。我们将很快讨论更多相关内容。
机器学习的最后一步是评估模型,这涉及将实际的预测与之前收集的历史数据进行比较。这将允许您测试模型从训练数据中学到的程度,并确保它在新数据上具有良好的泛化能力。
特征提取
特征提取是机器学习流程中的重要步骤。它用于识别最具预测能力的特征子集。然后,使用这个子集创建分类或回归模型,其预测准确性比使用所有可用特征创建的模型更好。
有许多不同的算法可以用于特征提取。一些常见的算法包括:
- 主成分分析(PCA)
- 线性判别分析(LDA)
- 支持向量机(SVM)
- Random Forest
每个算法都有其自身的优点和缺点。对于特定任务来说,最好的算法将取决于数据类型和问题的解决方法。
一旦确定了特征子集,就需要进行选择。用于创建最终模型的特征子集不应受到哪个算法产生最佳预测准确性的影响。算法将始终生成不同的映射,显示每个特征对于预测任务的重要性。这可能会使在不知道将用于建模的算法之前选择最佳特征子集变得困难。
选择了算法后,选择特征子集的一种常见技术称为正则化选择。使用从包含逐渐减少属性(特征)的子集的较大子群计算的性能度量构建一个随机效用优化函数。该过程继续进行,直到每个子群中只剩下足够的属性来对任务进行建模。
具有预测准确性的模型。这并不总是容易的,因为有许多不同的算法用于创建预测模型,每个算法使用不同的可用特征子集进行预测。比较不同机器学习算法之间的结果的最佳方法是使用可以计算多种不同类型模型的评估指标。常见的性能指标包括训练误差、测试误差、曲线下面积(AUC)、提升图高度、提升图曲线下面积(AUAC)、对数损失得分、马修斯相关系数(MCC)和ROC曲线下面积(ROC AUC)。
特征提取是一个简单的概念,但在实施过程中并不总是有清晰的路径。有许多不同的特征提取算法,每个算法都有其自身的优缺点。此外,要使用哪些最佳特征通常取决于将用于分类或回归的算法。为了选择好的特征,首先选择适当的机器学习任务和评估指标非常重要。完成这些决策后,选择特征子集的一种常见技术是正则化选择。在成功完成这三个步骤之后,特征工程的过程才能开始。
特征工程是机器学习过程中的重要步骤,其目标是从一组特征中识别和选择最具预测性的子集,以用于当前任务。
模型训练
训练机器学习模型的第一步是选择合适的数据集。这个数据集通常是模型的输入,基于前期的数据收集、预处理和特征提取阶段。训练机器学习模型的第二步是设计其内部参数和网络架构。
选择训练数据集
在选择用于训练机器学习模型的数据集时,需要考虑以下几个因素:
1.模型的目的
首先要问自己的问题是机器学习模型的目的是什么。你想要预测或识别什么?一旦确定了这一点,就可以开始寻找代表你研究的人群的数据集。
2.数据集的大小和复杂性
数据集的大小和复杂性是另一个重要考虑因素。数据集应足够大,包含多种项目,每个项目包含多个可用于建模的变量。数据集越复杂,训练机器学习模型所需的时间和资源就越多。
3.数据的可用性
另一个需要考虑的问题是数据是否可用。如果你使用的是专有数据,那么在使用之前可能需要获得所有者的许可。可以在网上找到公开可用的数据集,或通过联系收集数据的组织来获取数据。
4.数据的标记
训练数据最重要的方面之一是必须进行标记。标记的数据意味着每个项目的输入变量已被分配了一个数值或分类值。这使得机器学习模型能够识别模式,并根据其在训练过程中学到的知识进行预测。训练集中的项目越多,模型在对新数据进行实时预测时的性能就越好。
5.线性与非线性关系
还需要考虑的一点是是否存在线性关系,如果存在,每个训练集中的项目有多少个自变量和因变量。例如:如果研究的是人,体重可以是身高的指标(也可能表示年龄)。因此,在这种情况下,只有一个因变量(身高)和一个自变量(体重)。然而,如果研究的是汽车,体重和速度可能是两个具有线性关系的自变量。这意味着随着体重的增加,速度也很可能增加。
6.算法类型
选择的机器学习算法也会影响用于训练的数据集。某些算法适用于处理分类数据,而其他算法适用于处理数值数据。您需要选择与您正在处理的数据类型兼容的算法。
7.资源的可用性
最后一点需要考虑的是训练机器学习模型所需的时间和资源。拥有更多的数据将使模型的性能更好。然而,如果没有足够的数据来训练模型,您也可以用合成数据进行补充。合成数据是人工创建的,以模拟真实世界数据集。在训练过程中,如果原始数据不足,合成数据可以提供帮助。
总之,在选择用于机器学习的数据集时,重要的是确保:
- 数据代表从中收集的人群。
- 同一组人或物品中可能存在的多个类别具有相等的表示。这确保了在机器学习模型对一个类别进行预测时不会有偏见
- 数据集的大小和复杂性适合您正在使用的机器学习算法类型。
- 数据集已进行标记,使机器学习模型能够识别模式。
- 数据的格式与您使用的算法兼容。
- 有足够的资源可用于训练模型。
- 数据集足够大,包含多种项目,每个项目包含多个变量。
- 两个以上自变量之间没有线性关系。如果存在线性关系,那么它们应该是简单的(即自变量很少)。
- 您对自己想要实现或识别的目标有一个概念,以便能找到合适的数据集。
找到合适的数据集的最佳方法是了解您要实现的目标。一旦有了大致的想法,就可以搜索适用于机器学习的公开数据集。还有许多在线资源可以帮助您找到符合您需求的合适数据集。例如,UCI机器学习库是一个包含大量可供机器学习使用的公共数据集的网站。需要注意的是,并非所有数据集都适用于每种类型的机器学习算法。因此,请确保选择与您使用的数据集兼容的算法。
近年来,由于数据的日益可用,机器学习模型的使用已经大幅增加。然而,机器学习行业的真正赢家是数据本身。现在不仅仅是进行预测,数据还是帮助我们更好地理解世界运作方式并基于这些信息做出更好决策的重要工具。
拥有更多的数据将使模型的性能更好。但是,如果没有足够的数据来训练机器学习模型,您可以提供合成数据,而不是真实世界数据(这几乎是不可能的)。另一种方法是使用较小的标记训练数据集,并结合一些无监督学习技术。这样可以选择哪些变量用于创建最终模型,同时仍使用非结构化数据。
在训练机器学习模型时拥有足够的数据非常重要。然而,有时候我们没有足够的原始数据可用。在这些情况下,我们可以使用合成数据,即人工创建的数据,以模拟我们正在使用的真实世界数据集。这在训练时没有足够的原始数据可用或者我们想提高预测准确性时非常有帮助。这是一个相当高级的主题,我们将在另一个时间,也许在另一本书中详细讨论。
神经网络体系结构
在深度学习中,有几种常用的神经网络体系结构。卷积神经网络(CNNs)、长短期记忆(LSTM)单元、循环神经网络(RNNs)和卷积受限玻尔兹曼机(CBRMs)是最常见的几种。每种不同类型的神经网络都有其自身的优势和局限性,并可用于不同的目的。在本节中,我们将介绍最常用的神经网络体系结构,以便您有一个入门的基础。
多层感知机(MLP)
多层感知机(MLP)神经网络是一种用于深度学习的神经网络类型。它们是一种简单但强大的神经网络类型,可用于训练复杂的模型。MLP网络由多个层组成,每个层包含多个神经元。第一层的神经元与第二层的神经元相连,依此类推。多层感知机是深度学习中最常见的神经网络类型。多层感知机可用于解决各种任务,包括回归和分类。当多层感知机的隐藏层和每层神经元数量很多时,其预测准确率很高;然而,随着训练样本数量的增加,它们的扩展性不太好,并且需要调整超参数,这使得它们难以训练。多层感知机最初在1960年代由斯坦福大学的研究人员提出,后来在1986年由David Rumelhart、Geoffrey Hinton和Ronald Williams广为流传[1]。
多层感知机架构
多层感知机(Multilayer Perceptron,MLP)由三组层组成:输入层、一个或多个隐藏层(也称为“隐藏单元”或“特征提取层”)和输出层。每一层都与下一层完全连接。
多层感知机由每个训练样本的一组输入 x1、x2、....xn、一个或多个隐藏单元 h1、h2...hn(取决于隐藏层的数量)和零个或一个输出(表示类标签)组成。通过使用梯度下降来最小化某个误差函数,可以学习到这种架构的最佳权重 W1、W2...Wm。
需要注意的是,多层感知机是通用函数逼近器,可以在具有足够隐藏单元的情况下逼近任何函数。多层感知机已经在许多应用中使用,包括医学诊断[2]、手写识别[3][4]和机器翻译[5]。多层感知机在机器人领域也很受欢迎。多层感知机最初仅用于监督学习,但现在主要用于无监督学习,例如深度置信网络(DBNs)和深度玻尔兹曼机(DBMs)。
训练多层感知机网络
多层感知机的训练算法设计简单;它通过从随机网络权重 W1、W2...Wm 开始,然后迭代更新这些权重以减小训练集上的某个定义的误差函数 E 来工作。这是一种监督学习方法,其中网络被训练以预测正确的类标签 y。
用于训练的多层感知机算法有两个阶段:
- 前向传播阶段:计算第一个隐藏层中每个神经元的输出,使用符号规则,例如神经元计算 f = sgn (w1inputs+b1)+sgn (w2hiddens+b2)+...+sgn(wm+bm) 然后应用激活函数,如 sigmoid。这给出了神经元之间每个连接的突触活动水平,并使下一层的神经元激活起来。
- 反向传播阶段:在此阶段,考虑实际的类标签 y,并对正确分类的示例给予更高的权重更新。根据这些值之间的差异,为隐藏层中的每个神经元计算一个误差函数 E,并将其向后传播到所有神经元。然后,使用梯度下降规则(例如 Wm+1 = Wm -(学习率)*partial E / partial wm)从该误差中学习 Wm+1 [6]。
多层感知机算法没有内置的停止准则;然而,许多实验在观察到进一步训练仅对网络性能或稳定性产生极小影响时停止,即进一步训练减小了均方误差 - 出现了过拟合现象。
深度学习的多层感知机
多层感知机也被称为前馈神经网络,因为它们的连接图中没有循环;然而,具有多个隐藏层的多层感知机通常被称为深度学习的多层感知机(MLP),这允许我们将多层感知机算法推广到具有许多层和数百万参数的网络。深度前馈网络通过将多个层堆叠在一起来构成,从而产生一个非常宽但浅的网络架构。深度学习的多层感知机可以使用多种不同的优化算法进行训练,如梯度下降、共轭梯度或拟牛顿方法。
卷积神经网络
卷积神经网络(CNN)是一种神经网络类型,已经在计算机视觉、图像识别和目标检测等应用中使用。它们用于通过将图像与程序已学习的其他图像进行比较来识别图像的小细节。卷积神经网络通常由三个主要层组成:
- 卷积层
- 池化层
- 全连接层
卷积层是程序通过将图像与其数据库中的其他图像进行比较来识别图像中的模式。如果当前图像的特征与程序已经学习到的特征存在显著差异,则程序将转到卷积层的下一个部分。虽然卷积神经网络在计算机视觉方面取得了很大进展,但它们仍在不同类型的卷积神经网络(如深度卷积神经网络(DCNN)和卷积限制玻尔兹曼机(CBRM))中不断改进。
卷积神经网络通过经验学习。卷积神经网络由多个层组成,每个层都有一个称为滤波器的不同数量的神经元。为了使网络学习,每个层都被提供一个训练集,在这个训练集上它训练自己来识别模式。训练数据越多,卷积神经网络在检测数据中的模式时就越准确。卷积神经网络还使用前馈机制,通过让数据通过多个层并测量其预测与数据关联的标签之间的接近程度。
为了使卷积神经网络达到所期望的准确度水平,您需要通过遵循一组定义好的数据来为其创建一个训练集。然后,卷积神经网络将学习如何从这些数据中准确地检测模式。这是通过调整卷积神经网络中滤波器的值,以最小化其预测与数据关联的标签之间的误差来完成的。您还可以使用反向传播来帮助训练卷积神经网络。反向传播通过将每个层在每个层上的表现情况的信息反馈给前面的层,帮助卷积神经网络更快地学习。这使得每个层可以相应地调整其滤波器,以便卷积神经网络可以从错误中学习并提高准确性。
循环神经网络
循环神经网络(RNN)是一种通过使用先前序列部分的状态信息来影响未来预测的网络类型,从而在图像或文本中识别模式。RNN已经在谷歌的翻译服务和语音识别技术等应用中使用。卷积限制玻尔兹曼机(CBRM)、深度卷积神经网络(DCNN)等都是一些使用循环神经网络作为核心的卷积神经网络类型。
长短期记忆(LSTM)单元是一种用于识别数据序列中的模式和趋势的循环神经网络。LSTM单元通过将新模式与先前学习到的模式进行比较,并在进行未来预测时考虑先前的状态信息来实现这一点。尽管循环神经网络已经存在多年,但长短期记忆单元在使循环神经网络更强大方面起到了重要作用。
变压器
变压器神经网络是使用称为变压器的深度学习算法来学习如何对新数据集进行推理的神经网络。变压器是由编码器和解码器两个主要部分组成的神经网络。编码器将输入数据转换为一组数字向量。然后将该向量传递给解码器,解码器将重构输入数据
变压器神经网络架构最早由谷歌在2017年提出,并且已被证明比深度神经网络和循环神经网络等其他神经网络架构更有效。变压器神经网络在自然语言处理方面非常有效,自然语言处理是人工智能的一个分支,旨在创建可以处理和学习人类语言(如英语)的机器。像变压器神经网络这样的神经网络本质上是大脑工作的一种近似,它将信息转化为另一种形式进行分析。
反向传播
一旦选择了神经网络架构,就需要对其进行训练。反向传播是一种简单而有效的算法,可用于训练神经网络。反向传播是一种基于梯度下降方法的算法,它使我们能够快速收敛到最佳的神经网络权重,而不仅仅是随机移动。
它如此有效的原因在于每个层的误差项向后传播到网络中,从而使我们能够计算梯度。给定节点处的误差项将调整与其相邻节点的连接权重,以减少来自这些节点的未来误差。
反向传播是在深度学习神经网络中经常使用的强大工具,它需要大量的训练数据。事实上,反向传播已经成功应用于许多领域,如优化、模式识别和函数逼近。
反向传播算法也称为反向传播或反向传播。
它如此有效的原因在于每个层的误差项向后传播到网络中,从而使我们能够计算梯度。给定节点处的误差项将调整与其相邻节点的连接权重,以减少来自这些节点的未来误差。反向传播算法也称为反向传播或反向传播。
反向传播在梯度下降方法上工作,这使得反向传播能够快速收敛到最佳权重,而不仅仅是随机移动。反向传播可以由许多不同类型的神经网络模型组成。反向传播是降低或打破分类器之间依赖关系的一个很好的工具。反向传播是深度学习神经网络中经常使用的强大工具,它需要大量的训练数据集。
收敛性
收敛性是指模型在训练更多数据时了解事物的速度。例如,如果您使用机器学习模型对未来进行预测,您将希望确保模型具有良好的收敛性,以便您的预测准确无误。另一个例子是,如果您使用机器学习模型来改进产品之类的东西,您将希望使用具有良好收敛性的模型,以确保您所做的更改实际上比起始状态更好。
机器学习中的慢收敛性可能不好,因为这意味着模型的学习速度不如可能。这可能导致不准确的预测和次优解。此外,慢收敛可能在时间和资源方面代价高昂。
慢收敛性有哪些好处?
选择具有慢收敛性的模型的主要优点是它将更准确。较慢的收敛速度可以导致更准确的预测或解决方案。此外,这种类型的模型可能适用于准确性最重要的情况。
但是,在选择具有慢收敛性的模型时,重要的是考虑将使用该模型的上下文。在某些情况下,准确性可能是最重要的因素,而在其他情况下,速度可能更重要。此外,您需要确保有足够的数据来使用这种方法来训练模型。如果数据不足,模型可能无法正确学习,也无法产生准确的结果。
总之,在选择机器学习模型时,考虑到收敛速度非常重要。具有良好收敛性的模型比具有慢收敛性的模型更准确和高效。还要记住模型将用于的上下文,以便为该用例选择具有良好收敛性的模型。
过拟合和欠拟合
机器学习中存在过拟合和欠拟合的问题。过拟合意味着算法在学习如何做某件事情时表现得很好,但它无法做其他事情,因为它对我们要求它做的事情学得太多了。欠拟合意味着算法没有经过足够的训练,因此它不知道我们希望它学习的有关世界运作方式的内容。当在训练数据中出现很多错误时,这可能是由于过拟合或欠拟合引起的。
例如,一种机器学习算法可能非常擅长学习如何在图片中识别物体。但由于它对我们要求它做的事情学得太多,它在其他方面表现不佳,比如在不同图片中识别其他物体或在不同环境中识别物体。
另一个例子是当机器学习算法只能从数据中学习非常基础的东西时。这发生在算法没有经过足够的训练,不知道我们希望它学习有关世界运作方式的内容时。当在训练数据中出现很多错误时,这可能是由于过拟合或欠拟合引起的。
防止过拟合的一种方法是使用更复杂的算法。这将帮助算法更多地了解数据,而不会过分关注我们希望它做的事情。另一种防止过拟合的方法是使用较少的训练数据。这将帮助算法学习更少关于我们希望它学习的内容。防止欠拟合的一种方法是使用更简单的算法,这将帮助算法从数据中学习更多,而不需要进行过多次训练。另一种防止欠拟合的方法是使用更多的训练数据,以便数据中包含更多关于世界运作方式的部分。
过拟合和欠拟合是机器学习中可能出现的两个问题。过拟合发生在算法对我们要求它做的事情学得太多时。欠拟合发生在算法没有经过足够的训练,因此不知道我们希望它学习有关世界运作方式的内容。通过使用更复杂的算法或更多的训练数据,我们可以帮助预防这些问题。
超参数
为了调整和解决这些问题,可以调整一系列不同的参数。以下是最常用的参数之一。
迭代次数(Epochs)
当使用反向传播训练神经网络时,通常有数千甚至数百万个连接需要调整。同时进行所有这些更新将需要指数级的计算时间,这对大多数应用来说是不可行的。这就是为什么反向传播逐个权重进行更新的原因。这样,反向传播就不必为每个训练实例重新计算所有传入连接的权重,这将花费太长时间。相反,反向传播逐个权重进行更新,并跟踪所有更改,以便在完成当前迭代后更新其他权重。
迭代次数是机器学习中的一种度量单位,表示所有训练数据已经处理的次数。当数据项数量非常大时,通常使用迭代次数。当需要将神经网络的权重重置为初始值时,迭代次数也很有用。
在初始化迭代次数时,反向传播算法将从数据集的开头开始,前进直到到达末尾。然后它将返回到开头,并从那里重新开始处理。这个过程将继续进行,直到处理完整个数据集中的所有数据项。
应该运行的迭代次数取决于神经网络在训练数据上的表现如何。如果网络无法从数据中学习,那么应该运行更多的迭代次数。相反,如果网络过拟合或从数据中学习了太多的噪声,那么应该运行较少的迭代次数。
迭代次数还可以在训练过程中节省时间。当反向传播通过训练数据时,它必须返回并从开头开始处理,当达到数据集末尾时。如果没有使用迭代次数,反向传播将需要每次处理整个数据集。这可能非常耗时。然而,由于反向传播返回到数据集的开头,它只需要返回一定数量的项目。这显著减少了每个迭代所需的时间。
学习率
学习率是确定模型训练速度(或数据捕获速度)的参数。如果将学习率设置得太低,模型可能无法进行有效训练;但如果学习率设置得太高,训练可能会变得低效,因为没有足够的时间进行错误修正。在设置适当的学习率时,你的目标取决于两个因素:1)可用于训练模型的数据量,2)训练模型的时间。
学习率如何影响模型?如果你正在训练神经网络,学习率越高,每个值越接近0或1(0表示没有效果;1表示具有100%的原始效果)。较低的学习率会使网络收敛速度较慢,但更准确。这是有道理的,因为在较低的学习率下,网络有更多机会调整权重以更好地匹配数据。
如何确定学习率的合适值?有几种方法可以做到这一点:1)试错法-各种模型需要不同的训练时间才能达到相同的准确性水平,因此很难知道应该使用什么学习率;2)阅读类似本文的文章!这将提供一般的指导方针。然而,还有更具体的方法可以设置学习率:1)运行网格搜索-这是当你测试许多不同学习率组合以找到最适合你情况的学习率时;2)使用验证曲线-这是当你将模型的准确性与训练时间绘制在一起时,可以显示出它的学习速度。如果你想在一定时间范围内获得最准确的结果,这是最好的选择。
决定正确学习率的因素有哪些呢?第一个因素是你可用于训练模型的数据量。如果你有大量数据可用于训练,那么使用较高的学习率是有意义的(因为这意味着有更多示例供模型学习,从而使其学习速度更快)。另一方面,如果你可用于训练模型的数据量较小,则应该设置较低的学习率。
第二个因素是你可用于训练模型的时间。如前所述,通过试错法或阅读文章来确定特定情况下最佳学习率是不可能的。这是因为一个人的最佳选择可能不适合另一个人。然而,如果你想尽快训练模型,就不要使用非常高的学习率;而如果你有更多时间,那么可以使用较高的学习率(并找出最佳选择)。
正如你所见,有多个因素决定你的学习率的合适值。幸运的是,有许多方法可以找出最佳选择!
学习率过低还是过高?
如果你的模型根本无法训练,那么说明你的学习率过低,应该增加它(但也要确保它不会太高)。另一种检查模型设置是否正确的方法是在数据集上使用验证曲线。如果你正确设置了学习率,那么曲线将类似于一条通过接近1的点的直线图。如果不是这样,那么你应该考虑更改学习率并运行另一个验证曲线。
如何加快模型速度?
如果设置较高的学习率,模型将学习得更快,但可能也不太准确。相反,如果设置较低的学习率,模型学习速度会较慢,但准确性会更高。这是有道理的,因为在较低的学习率下,网络有更多机会调整权重以更好地匹配数据。另一方面,如果使用非常高的学习率,那么模型可能会迅速学习如何根据数据集中的噪声进行预测,而不是根据实际数据。这不会很有帮助,因为它不会对其预测进行批判性分析或理解为什么错误(它只会继续犯类似的错误)。
如果将学习率降低得太多,那么模型的训练时间可能会非常长。这是因为权重更新得太慢,当新数据进入时,它可能无法快速适应。
选择最佳学习率
正如你所见,有多个因素决定模型的学习率,而最佳选择对于每个人而言是不同的。如果你有充足的时间但想快速训练,那么使用较低的学习率。然而,如果你想快速训练准确的模型,那么使用较高的学习率。
迁移学习
什么是迁移学习?
迁移学习是一种将知识从一个模型学习并转移到另一个模型的过程。这是为了填补另一个模型知识库中的空白。迁移学习的应用已经被证明非常成功,尤其是在机器学习领域。一个很好的例子是将深度神经网络应用于改进手机的语音识别功能迁移学习的重要性是什么?
为什么迁移学习很重要?
迁移学习之所以重要的主要原因是它可以帮助我们填补不同模型之间存在的差距。通过填补这些差距,迁移学习可以帮助我们利用在不同模型上学到的信息,否则我们将无法使用这些信息。另一个迁移学习重要的原因是它可以加快学习过程。这是因为迁移学习可以重复使用已经在不同模型上学习到的知识。最后,迁移学习之所以重要,是因为它可以提高模型的准确性。通过填补不同模型之间的差距,迁移学习可以帮助我们利用更多的信息,从而提高模型的准确性。
迁移学习在近年来成为机器学习系统中的一个强大工具。它的流行原因在于迁移学习可以帮助减少所需的训练数据量,并提高性能。此外,与传统的机器学习算法相比,迁移学习更容易实施和调试。
迁移学习的一些应用有哪些?
迁移学习在计算机视觉、自然语言处理和机器学习等领域找到了许多重要应用。其中一些显著的应用包括:
- 使用迁移学习改进移动电话的语音识别
- 使用迁移学习改进物体识别
- 使用迁移学习改进人脸识别
- 使用迁移学习改进机器学习
- 使用迁移学习改进文本分类
总而言之,迁移学习因其减少所需训练数据量和提高性能的能力而成为机器学习系统中的流行工具。迁移学习广泛应用于语音识别、机器翻译和计算机视觉等领域,并已成为研究人员和开发人员在不同领域的不同任务之间共享源代码的有价值工具。
优化器
总结
卷积神经网络、长短期记忆单元、循环神经网络和卷积受限玻尔兹曼机(Convolutional Restricted Boltzmann Machine,CBRM)是目前在深度学习领域中使用的不同类型的神经网络。这些不同类型的神经网络为当今许多成功的应用提供支持。尽管卷积神经网络最初是为计算机视觉任务设计的,但它们已成功地应用于其他任务,如语音识别和自然语言处理。循环神经网络和长短期记忆单元在使循环神经网络变得比以往任何时候都更强大方面起着重要作用。随着卷积神经网络和循环神经网络的持续进步,我们只能期望这些类型的神经网络变得越来越强大。
模型优化
在机器学习中,机器学习模型的大小是衡量其复杂程度的指标。机器学习模型越大,它在优化算法中不收敛的风险就越高,过拟合的程度也会更高。
为了克服这些缺点,可以使用机器学习优化技术来减小机器学习模型的大小,同时保持其预测能力。这些技术包括量化、修剪、知识蒸馏等,我们将在本节中讨论这些技术,旨在通过使机器学习算法在各种任务上更具计算效率来改善其性能。
广义上说,机器学习优化技术解决了两个方面的问题:
- 减小模型大小;
- 提高计算效率。
可以通过进行软件优化或依赖硬件支持来实现这些目标。
软件优化
压缩
模型压缩是一种机器学习优化技术,它使用机器学习模型集合来减小机器学习模型的大小。模型压缩的原理是基于不同的机器学习示例子集训练多个机器学习模型,然后使用投票或平均值来生成一个单一的机器学习模型。由于每个机器学习模型都比原始模型小,所以需要计算和存储的机器学习模型参数更少。
机器学习数据本身也可以进行压缩,以便更好地管理。可以通过多种方式实现,例如使用有损压缩算法或对数据进行子采样。有损压缩算法会舍弃部分机器学习数据以减小其大小,而数据的子采样则减少用于训练的机器学习示例的数量。
量化
量化是一种机器学习优化技术,通过用整数值替代机器学习模型参数来减小其大小。这是通过将机器学习模型参数四舍五入到最近的整数值来实现的。量化的优点是,它通常会导致比未量化的模型更具计算效率的机器学习模型。
权重修剪
权重修剪是一种机器学习优化技术,通过删除一些权重来减小机器学习模型参数的大小。这是通过将机器学习模型的权重或激活设置为零来实现的,如果它们被确定对机器学习模型的预测没有影响。通过删除机器学习模型的权重,可以使机器学习模型变得更小,从而减少训练所需的时间和存储所需的内存空间。
知识蒸馏
知识蒸馏是一种机器学习优化技术,可用于提高机器学习模型的性能。它是一个两步过程:首先,在大型数据集上训练一个更复杂的机器学习模型;然后,将该机器学习模型蒸馏成一个更简单的机器学习模型,可以用于对较小的数据集进行预测。知识蒸馏的优点是,经过大型数据集蒸馏的机器学习模型可以应用于较小的数据集,而无需重新训练。特别是,在蒸馏之前,知识蒸馏通常会产生比复杂模型更准确的预测的机器学习模型。
硬件加速
机器学习是人工智能领域的一个研究方向,重点是教会机器以更像人类的方式行为。硬件加速是一个术语,用于描述使用特定的硬件设备来提高计算机系统性能的方法。在机器学习方面,硬件加速可以在提高系统性能和效率方面发挥非常重要的作用。
以下内容将重点介绍机器学习的硬件加速以及工程师如何利用这项技术。第一部分将概述硬件加速,详细介绍其历史,并定义什么是硬件加速器,然后进入它们如何特别帮助机器学习。本文应该作为机器学习的一个入门指南,该指南以硬件加速为核心介绍了机器学习的一个特定方面。
从这个词的意义上讲,硬件加速器是一种集成电路,旨在比通用CPU更高效地执行特定任务。这是因为硬件加速器经过定制设计,可以快速高效地进行必要的计算。对于机器学习中的硬件加速来说,这意味着这些硬件设备可以改善系统的性能和效率。
图形处理单元(GPU)
图形处理单元(GPU)是专门设计用于执行与计算机图形相关的计算的硬件加速器。与传统的CPU相比,这些硬件设备在机器学习方面提供了显著的改进,因为它们针对与矩阵操作相关的浮点算术运算进行了优化,而这在机器学习算法中很常见。因此,在机器学习中,GPU通常用于训练和推断等任务。
张量处理单元(TPU)
最近,谷歌推出了一种名为张量处理单元(TPU)的硬件加速器,专门用于加速机器学习计算。这些硬件设备是基于对机器学习独特需求的理解而设计的,并且在性能上明显优于CPU和GPU。
神经处理单元(NPU)
总的来说,硬件加速是一种重要的工具,可以用于提高机器学习系统的性能和效率。就GPU而言,它们已被证明是特别有效的用于这类系统的硬件加速器。但随着机器学习领域的发展,可能会推出其他专门设计以满足这项技术需求的硬件设备。为此,我们正在看到各种专门针对机器学习训练和推断的神经处理单元的设备。
机器学习模型部署
许多因素会影响机器学习模型的准确性和延迟。其中一些因素是固有于机器学习算法的,而其他因素则取决于特定的实现或环境。然而,总的来说,有三个主要因素影响机器学习算法的性能:
数据集的大小和复杂性 算法的复杂性 超参数,如层数、层类型、激活函数等。
结论
机器学习是人工智能(AI)未来的重要组成部分,并将在许多新兴技术中发挥作用,包括自动驾驶汽车、虚拟助手和智能家电。需要机器学习工程师来帮助开发机器学习算法,使这些技术发挥其全部潜力。为此,我们希望通过本课程中所学的内容,能激发您对进一步了解机器学习的浓厚兴趣。
附录
嵌入式系统
在嵌入式系统中,微控制器是一种小型计算机,它位于单个集成电路上,包含了控制嵌入式设备所需的所有电路。这些嵌入式设备通常嵌入在其他产品(如家电或汽车)中,形态各异,从简单的逻辑门到带有输入/输出端口的微型计算机不等。例如,PICmicro是嵌入式控制系统的众多例子之一,它在计算机和外围硬件(如打印机、扫描仪、键盘、鼠标、数码相机等)之间进行接口。这种类型的设备可以用于监测环境条件或控制工业过程。首批可编程控制器是在20世纪60年代由通用电气为其洗衣机和烘干机内部使用而设计的嵌入式系统,它们可以感知衣物是否已经足够洗净,然后停止机器的运行。
如今,嵌入式系统可以在各种产品和家电中找到,嵌入式计算机被用作大多数现代家用设备(如微波炉、洗衣机、洗碗机甚至咖啡机)的主要计算单元。这些嵌入式计算机通过数字显示和LED等各种形式的输出向用户传递信息。嵌入式计算机还可以从外部环境接收输入,如设备外部的按钮或开关,这使得用户可以控制时间设置或温度等功能。您的汽车内部有一个嵌入式计算机,用于运行所有车辆控制,如转向信号、喇叭、速度计等;基本上,它让您完全控制汽车,而无需直接与其发动机组件进行接口。
嵌入式系统还可以执行复杂的计算或数据操作,以便根据环境条件进行监测和控制。基于数字信号处理器(DSP)的嵌入式系统可以用于收集气候数据进行研究,检测风速、湿度等因素的变化,然后用于对环境进行预测。例如,车辆内部的嵌入式计算机就使用了这种技术,以感知零件是否接近破损或过热。这些嵌入式系统对于我们今天世界的高效运行至关重要,然而,由于其尺寸和所需的功能水平,嵌入式系统开发在历史上一直受到限制。
但是,嵌入式计算正在迅速发展!由于微电子学的最新发展,嵌入式系统可以在以往任何时候都更小、更强大。芯片系统(SoC)技术使得嵌入式系统可以与射频、模拟和数字电路集成到单个芯片中,然后嵌入到其他产品中。这使得产品开发更加容易和快速,并降低了生产成本。随着嵌入式系统在我们生活的各个方面需求不断增长,可以说嵌入式系统对我们周围世界的运行至关重要!
嵌入式系统的历史
嵌入式系统的使用几乎与电子设备的出现一样久远。早期的一个例子是真空管控制器,它在二战轰炸机(如B-17飞行堡垒)中用来辅助导航和瞄准目标。这些嵌入式系统本质上是嵌入到较大系统中的小型计算机,用于提供额外的功能。
20世纪60年代初,通用电气开发了用于洗衣机和烘干机的第一个嵌入式控制器。这些控制器会感知衣物是否已经足够洗净,然后停止机器的运行。这在当时是一个突破性的发展,因为它展示了嵌入式系统控制和与外围硬件交互的潜力。
20世纪60年代后期,嵌入式系统在各种产品中得到广泛使用。阿波罗11号任务将第一位宇航员送上月球时,在其导航和控制系统中广泛使用了嵌入式系统。事实上,嵌入式系统对于任务的成功至关重要,如果其中一个系统发生故障,任务很可能会被中止。
随着嵌入式系统的不断普及,对这些系统如何与周围环境进行交互的标准化需求也越来越强烈。1981年,一群工程师聚集在一起,成立了嵌入式系统大会(ESC)。该组织的目标是开发和推广嵌入式系统开发的标准。他们最值得注意的成就之一是开发了通用嵌入式总线,使嵌入式系统能够轻松地相互通信。
嵌入式系统从早期以来已经取得了长足的发展,它们在我们今天的世界中继续发挥着至关重要的作用。随着技术的进步,嵌入式系统变得比以往任何时候都更小、更强大,成为产品开发的重要组成部分。随着嵌入式系统在我们日常生活中的进一步融入,嵌入式系统开发预计将快速发展!
嵌入式系统的具体传统示例包括:
- 数字手表/时钟
- 微波炉
- 汽车
- 路由器
- 嵌入式照明控制系统,例如LED标志或机场中使用的系统
- 嵌入式智能家居设备,例如语音助手和网络门锁
- 嵌入式工业自动化控制器,例如汽车生产线中的控制系统
清单还在继续!只要它使用嵌入式技术,就可以算作嵌入式系统。如果需要,可以参考“进一步阅读”部分中的一些优秀嵌入式技术文章作为参考资料。当然,您不必局限于这些例子!如果您了解其他做着有趣事情的嵌入式系统,也可以加入其中:
值得一提的是新技术将嵌入式系统推向了新领域。例如,嵌入式系统现在正在自动驾驶车辆的开发中得到应用。随着嵌入式系统越来越普及,它们的重要性只会继续增长!
深层阅读
我们将继续更新/修改此教程系列。版权归 Seeed Studio 和 Vijay Janapa Reddi 教授所有。