Applications Kit ML101 with Prof. Vijay Course

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