DLAI-商品人工智能笔记-全-

DLAI 商品人工智能笔记(全)

001:欢迎来到“AI for Good”专业课程 🎉

在本课程中,我们将介绍“AI for Good”专业课程的整体框架与目标。我们将探讨人工智能和机器学习如何成为应对公共卫生、气候变化和灾难管理等现实世界挑战的解决方案的一部分。本课程旨在提供实践经验,展示AI技术如何融入解决重大全球问题的更广泛背景中。

欢迎与课程介绍

欢迎来到“AI for Good”专业课程。如果你对人工智能和机器学习如何助力解决现实世界挑战感兴趣,例如公共卫生、气候变化或灾难管理,那么本专业课程将为你提供相关的知识与视角。

应对复杂的现实世界问题时,潜在的解决方案往往也非常复杂。这可能涉及许多不同的利益相关者、物流限制,有时还包括数据隐私等问题。因此,我们设计了这些课程,让你获得处理AI应用的实际操作经验,从而了解AI技术如何融入解决世界重大挑战的更广泛背景中。

认识你的导师

我很高兴向大家介绍本专业课程的导师——罗伯特·蒙纳克。他是构建机器学习系统以及如何将其融入人类工作流程方面的专家。他创立了自己的AI初创公司,并且曾在谷歌、亚马逊、微软、苹果等大型科技公司构建AI产品。罗伯特在将AI应用于全球灾难管理和公共卫生等关键领域方面拥有超过20年的经验。

他拥有斯坦福大学的博士学位,并且是《Human-in-the-Loop Machine Learning》一书的作者。

导师的跨领域经验

罗伯特,很高兴你能来教授这门专业课程。谢谢,安德鲁。我也非常兴奋能来到这里。我期待分享我在工业界和作为灾难响应者所积累的丰富经验,帮助大家思考AI可以(或在某些情况下不应该)如何用于帮助公共卫生、气候变化和灾难响应等领域。

你自称既是灾难响应者,又是AI/机器学习从业者。能分享一下你是如何在职业生涯中将这两者结合起来的吗?

当然可以。在搬到硅谷攻读博士学位之前,我曾在联合国于塞拉利昂和利比里亚从事冲突后发展工作,几乎有十年时间,我是将机器学习与灾难响应分开进行的。当时我在那里从事电力系统工作,负责在冲突后的环境发展中,为学校、诊所安装太阳能系统,并支持难民营。

在那段时间之后,我来到硅谷的斯坦福大学攻读博士学位,那是很多年前我们初次相遇的地方。我作为灾难响应者的经历让我印象深刻:在21世纪初相对较短的时间内,世界上大多数人都开始使用手机,但即使是当时我们认为理所当然的AI技术,如搜索引擎和语音识别,也无法在世界上大多数语言中正常工作。因此我认为,这不仅是在灾难响应中面临的问题,也是公共卫生和全球工业面临的一个有趣问题。世界正在联网,但为了接触和与人互动,许多支持的AI技术并不存在,对于许多语言来说,即使在近20年后的今天,情况依然如此。

在斯坦福大学期间,我继续并行从事灾难响应工作,同时研究自然语言处理,最终发现AI和灾难响应在某些领域存在重叠,从而能够将它们结合起来。

AI在现实挑战中的应用与局限

随着手机和数据的普及,数据变得可用,既可用于企业产品业务场景,也可用于解决这些社会挑战。然而,有时即使发生灾难时手机存在,神经网络也未必是解决现实世界问题的方案。

确实如此。当然,推出新技术的时机有好有坏。通常在灾难发生后,是推出未经测试技术的最糟糕时机。因此,我认为这里存在一种协同效应:我们用来帮助灾后人民的许多技术,最好是在灾难发生前就进行构建,也许可以与行业合作伙伴一起准备,他们可以帮助我们进行路测并确保技术运行良好,以便我们在将其部署给全球一些风险最高的人群时,能够理解其行为。

课程核心:将AI融入项目

本专业课程最令人兴奋的一点是,在公共卫生、气候变化和灾难响应的背景下,它将逐步讲解如何将机器学习/AI融入更大的项目中。我认为这些工具和技术不仅对这些重大的社会挑战有用,对于在公司内构建产品也同样重要。

在许多情况下,我看到机器学习工程师会说:“哦,我在测试集上表现很好。”这当然很棒,恭喜你。但有时,从在测试集上表现良好,到为气候变化建模或解决具体的商业应用,这之间可能存在巨大的鸿沟。作为一名机器学习工程师,我认为我的部分工作就是帮助弥合这一鸿沟。本专业课程将深入探讨如何思考这个问题。

这是一种很好的思考方式。你可以拥有一个良好的机器学习模型,但这并不一定意味着仅仅因为其准确性提高,下游的用例也会随之改善。事实上,在本课程中,我坦率地从一个公共卫生案例开始:我们部署了一个帮助孕产妇健康的系统,可以看到离线准确率上升,但最终用户(医疗保健专业人员)并未感受到这种好处,最终我们终止了那个项目。

因此,正如你所说,我们从工业界学到的关于使机器学习对帮助人类完成任务变得重要的许多经验,与我们在关注公共卫生、灾难响应和其他更具体关注近期效益的项目中所看到的情况有很多共通之处。

课程的技术门槛与适用人群

需要明确的是,这是深度学习AI目前提供的最不技术化(也许是最不技术化)的核心课程之一。你不需要具备大量的编码知识,甚至不需要有意义的AI知识,就能成功完成本专业课程。但如果你了解机器学习算法,那将非常棒,你可以看到学习算法如何融入更大的项目中。当你运行我们完整提供的代码示例时(你不需要编写代码,即使你以前从未编写过代码,也可以运行提供的代码),你将看到机器学习部分如何融入解决这些非常重要的社会问题中。

正如我们在这里反复强调的,在最关键的情况下,你通常不希望机器学习方面进行过多的创新。因此,这里不过多深入技术层面与实践是相符的。我特别兴奋的是,我在灾难响应行业的许多同事可能也能学习这门课程。在灾难响应和公共卫生领域工作的人大多处理数据和电子表格,我认为这些笔记本对于一直使用电子表格的人来说,是思考如何进行更复杂的探索性数据分析,并开始在编码环境中评估机器学习模型的正确下一步。

解决问题的系统性框架

事实上,我很欣赏你在处理全新问题时提出的系统性框架。这个框架通常从数据可视化开始,即探索性数据分析,然后这可以引向一个深思熟虑的评估:是否应该为此使用机器学习?有时机器学习非常出色,有时则不太合适。

然后,构建模型、运行项目,但要将这些步骤放入处理复杂问题的系统性框架中。我非常喜欢我们在这里提出的框架,它也与我在工业界使用的框架相似。你首先思考要解决的实际问题是什么,并且最好能在不提及机器学习的情况下定义问题。然后查看数据,凭直觉判断机器学习是否有帮助,之后再开始坐下来实现模型。

特邀嘉宾与课程展望

我注意到很多人开始学习机器学习或AI时,会思考:“如果我能将其应用于气候变化或公共卫生等问题,那该多酷啊。”因此,我真正兴奋的事情之一是我们邀请了许多人作为特邀演讲嘉宾。这些人工作在公共卫生、野火监测等不同领域,他们将AI作为解决方案的一部分。这些人将毕生精力都投入于社会公益和AI应用,因此我非常高兴能在本课程中重点介绍他们。

因此,我认为我们许多人都曾有过这种愿望:利用AI让世界变得更美好,将AI用于善行。我很高兴你能加入本专业课程。在学习过程中,我希望你能学会如何构建AI项目,理解罗伯特和我讨论的流程,如何评估并使AI项目成功。希望在完成本专业课程后,你能受到启发,去使用这些算法,真正着手应对、影响并改变当今我们面临的一些最重要的社会问题。

那么,让我们开始进入专业课程的学习吧。请继续观看下一个视频。

总结

在本节课中,我们一起学习了“AI for Good”专业课程的引入部分。我们了解了课程的目标是探索AI如何应对公共卫生、气候变化和灾难管理等全球性挑战。我们认识了导师罗伯特·蒙纳克及其跨领域的宝贵经验。课程强调了将AI技术融入更广泛项目背景的重要性,而非仅仅关注模型本身的性能。我们还了解到本课程设计为非技术导向,适合广大初学者,并介绍了一个从定义问题、探索数据到评估是否使用机器学习的系统性框架。最后,课程承诺将通过特邀嘉宾的分享,展示AI在社会公益领域的真实应用,激励学习者利用所学知识为世界带来积极改变。

002:什么是“AI为善”?🤖

在本节课中,我们将要学习“AI为善”这一概念的核心含义。我们将探讨人工智能如何被应用于解决人类面临的重大挑战,并理解在追求积极目标时,为何必须谨慎评估其潜在影响。


这个专业课程名为“AI为善”。你可能会疑惑,我们如何区分“AI为善”与其他类型的AI应用。事实上,并不存在一个独立的“AI为善”领域。长久以来,当人们思考如何帮助改善医疗健康,或帮助人们应对和准备自然灾害与人道主义危机时,一直在探索可以利用哪些技术来实现这些目标。几个世纪以来,这包括了统计学;几十年来,这包括了更现代的数据分析和机器学习形式。因此,当我们说“AI为善”时,我们实际上谈论的是AI的应用,它可以适用于任何用例,但在本课程中,我们特意聚焦于利用AI应对当今环境和人类面临的一些最重大问题。

在我自己的工作中,我特别关注那些能为低资源语言提供更好支持的项目。所谓“低资源”,通常指那些在机器翻译应用或搜索引擎等应用中得不到充分支持的语言。你会发现,这些应用对英语和其他广泛使用的语言效果很好,但对使用人数较少的语言则不然。

当我们在当今社会背景下思考“AI为善”时,这个社会正日益依赖AI来完成越来越多的应用。例如,当你使用一个程序提供研究结果时,你正在使用AI;当你与智能设备对话时,你正在使用另一种AI;当你使用地图应用从一地导航到另一地时,你正在使用第三种AI。在这种情况下,算法会综合考虑从一个地方到另一个地方的历史旅行时间数据、道路封闭信息以及实时交通信息,以建议最佳路线。许多新型车辆现在配备了AI,可以检测你是否偏离车道或有碰撞风险,从而使驾驶更安全。

所有这些应用的共同点是,它们都使用算法来基于数据做出决策或推断。这些数据可以是输入文本(如搜索引擎的情况),可以是音频数据(如智能音箱的情况),也可以是多个数据源(如自动驾驶汽车中的摄像头、雷达和其他传感器)。

AI也被用于一些可能更具争议性的领域,例如自动人脸识别,或试图预测某人是否可能贷款违约或犯罪。有时很难区分AI是用于行善还是作恶。例如,在自然灾害后,我曾见过AI被用于监控人群,名义上是提供援助,但实际上却被用来识别异见人士。

关于“AI为善”,可以说并没有一个官方的定义,甚至理性的人们对其应如何定义也存在分歧。但在整个课程中,我们将重点关注那些最有可能支持环境、健康、正义和人道主义行动等领域取得进展的AI应用。在审视这些项目时,我们也将思考如何最大限度地减少尽管出于善意但仍可能造成的任何伤害。我们将重点介绍那些旨在预防、减轻或解决对人类生活或环境产生不利影响的问题的项目。

例如,在亚马逊雨林,非法采矿迫使当地社区流离失所,导致森林砍伐并影响动物栖息地。这些非法矿场由于其偏远位置常常能逃避检测。但现在,利用AI计算机视觉技术与卫星图像结合,可以识别非法采矿活动并通知地方当局。希望你立刻能看出,这虽然是积极的一步,但也存在非常消极的一面:许多选择偏远生活的社会群体,现在其自身也可能被监控。

再举一个例子,考虑风力发电。这是一种比化石燃料碳足迹低得多的可再生能源。问题之一在于,很难预测风何时吹来、风力有多强,以及风电场中的每个涡轮机将如何响应风和其他条件的变化。这使得很难规划在任何特定时间可用的风力发电量,从而更难有效地用风能替代化石燃料。

为了应对这一挑战,可以应用AI,利用天气预报和历史风力涡轮机数据,更准确地提前一两天预测风能可提供的能量。谷歌DeepMind的团队已经证明,使用这类方法能够将风能的价值提高约20%。在本专业的第二门课程中,你将有机会亲自尝试预测风力发电。

在这三门课程中,你将看到各种不同的案例研究,就像我们已经提到的那些,并应用一个框架来思考设计和开发针对特定问题的解决方案所需的组成部分,以及AI作为该解决方案的一部分,是否以及如何增加价值。

当今人类面临着许多紧迫问题,世界各地的各种团体都在努力解决这些问题。在这些课程中,我们只会研究少数几个案例。但如果你有兴趣思考还有哪些类型的问题值得研究,那么联合国可持续发展目标是一个非常好的参考来源。

这些目标包括减少贫困和饥饿、应对气候变化、减少不平等和促进正义等。联合国于2015年启动了这些目标,作为讨论未来15年目标的共同框架。需要明确的是,联合国的目标本身并非没有争议,并非所有人都100%同意它们。但它们通常作为不同各方讨论目标、共同致力于更美好未来的有用共同框架。考虑到这一点,你可以看到,你可能试图解决的问题涵盖了广泛的主题和考量,从气候变化到小额信贷等方方面面。

在整个课程中,我将强调,即使在最善意的驱使下,你也必须谨慎考虑AI可能产生的影响。很多时候,造成的伤害可能大于益处。我建议你采用类似于世界各地许多医生所遵循的原则,即“不伤害”原则。在学术AI领域,一个项目通常根据其对某个问题或场景的净改善来评估。但“不伤害”原则更严格地意味着,受项目影响的每个人都应变得更好,或至少不受伤害。因此,你应该问自己:这个项目是否会对项目中即使是一小部分人产生负面影响,而这些人原本不会受到伤害?我们将在整个课程中反复审视“不伤害”原则。


本节课中,我们一起学习了“AI为善”的基本概念。我们了解到,“AI为善”并非一个独立的技术领域,而是指将人工智能技术有意地应用于解决环境、健康、正义等重大社会挑战。我们通过案例看到了AI在监测非法采矿、预测风能等领域的积极应用,同时也认识到必须警惕其潜在的负面影响,并应始终秉持“不伤害”的伦理原则。在接下来的课程中,我们将深入更多具体案例,学习如何系统地设计和评估“为善”的AI解决方案。

003:吴恩达《AI for Good专业课程》P3 🎯

在本节课中,我们将了解《AI for Good专业课程》的整体结构与核心内容。该系列课程包含三门课,分别聚焦于人工智能在公共卫生、气候变化与灾难管理三大关键领域的应用。我们将逐一探索这些课程如何通过具体案例和实践活动,展示AI技术如何为解决全球性挑战提供创新方案。


第一门课程:AI与公共卫生 🌡️

第一门课程旨在帮助你熟悉人工智能的基本概念,并了解其如何用于解决现实世界中的问题。

我将向你介绍一个用于构思“AI向善”项目的框架。实际上,这是一个适用于任何你感兴趣的、可能涉及AI的项目的通用思考框架。

首先,通过一个专注于我在尼日利亚母婴健康领域工作的案例研究,你将快速概览“AI向善”框架。你将理解AI如何帮助医疗保健提供者处理来自患者的大量文本信息。

接下来,在本课程中,你将深入一个专注于使用传感器数据监测空气污染水平的项目。空气质量监测传感器已部署在世界各地的城市,其目标是告知市民空气污染带来的公共卫生风险,并为制定改善空气质量的政策提供信息。

在本课程第二周和第三周的实验活动中,你将使用AI来改进哥伦比亚波哥大的实时空气质量估算。


第二门课程:AI与气候变化 🌍

本专业课程的第二门课程聚焦于AI与气候变化。

从化石燃料转向可再生能源有助于减少全球碳排放。而加速风能、太阳能等可再生能源采用的一种方法,是提高这些能源的可预测性。

在课程二的第一个案例研究中,你将使用AI进行风能预测,从而实现让风能成为化石燃料更可行替代品的目标。

随后,你将转向气候变化背景下的生物多样性监测。保护自然生态系统已被确定为缓解气候变化最有效的方法之一,而生物多样性可以被视为自然生态系统健康状况的衡量标准。

世界各地的团队正在使用各种技术来监测生物多样性。在实验活动中,你将使用计算机视觉技术,通过来自南非的相机陷阱数据来监测生物多样性。


第三门课程:AI与灾难管理 🚨

在第三门课程中,你将探索我个人的专业领域:灾难管理与响应。你将使用卫星图像评估美国飓风“哈维”过后的损害情况。

事实上,在2012年飓风“桑迪”过后,我曾部署过一个类似的系统,我们也会讨论这一点。

在课程三的第二个案例研究中,你将学习如何通过自动解读2010年海地地震后收集的文本信息来进行资源分配管理。地震后,人们需要帮助,并将短信作为主要的通信方式。大部分信息是海地克里奥尔语,许多救援人员并不懂这门语言。

我将向你展示我如何组织一个团队,将AI与人类志愿者相结合,创建一个自动翻译系统,帮助救援人员快速反应并提供援助。


项目聚焦与学习建议 🔍

在整个系列课程中,我们将推出一系列“项目聚焦”,你将有机会听取不同专家关于他们如何将AI应用于特定项目的分享。

下一个视频将是你的第一个“项目聚焦”,你将听到来自Ubenwa Health的Charles Onu的分享,了解他和他的团队如何通过一款手机应用程序,分析婴儿哭声中的疾病征兆,从而实现对新生儿重大健康问题的诊断。

请记住,对于这个以及其他“项目聚焦”视频,你可能会听到一些不理解的技术术语,但无需担心。这些视频的目标是让你对“AI向善”领域一些有趣的项目有一个高层次的了解,并且在整个课程学习中,你会逐渐熟悉这些术语。


总结 📝

本节课中,我们一起学习了《AI for Good专业课程》的三门核心课程:AI在公共卫生、气候变化和灾难管理中的应用。每门课程都通过真实的案例研究和动手实验,展示了AI技术如何为解决紧迫的全球性问题提供实际方案。从监测空气质量到预测风能,从保护生物多样性到灾后快速响应,本系列课程旨在为你提供一个坚实的框架和实践经验,让你能够思考并参与利用AI创造积极社会影响的项目。

004:利用AI识别婴儿哭声中的窒息风险 👶

在本节课中,我们将学习如何利用人工智能技术,特别是深度学习模型,通过分析婴儿的哭声来早期识别新生儿窒息这一严重健康问题。我们将了解该问题的背景、现有解决方案的局限性,以及AI如何提供一种快速、低成本且无创的检测方法。

大家好,我是查尔斯·奥努,我是Tubanno Health的创始人兼人工智能负责人。

Uwa的使命是创造一个世界,让每个婴儿无论出生在何处,都能获得快速的医疗诊断。

我们着手解决的第一个问题是新生儿窒息。

这是导致婴儿猝死和残疾的主要原因之一。

窒息基本上发生在新生儿无法维持自主呼吸时,这可能是由多种潜在原因造成的。

实际情况是,这是一种非常危急的状况,大脑细胞无法获得足够的氧气。如果这种情况持续较长时间,就可能导致不可逆的脑损伤。

目前,对窒息的医学诊断需要昂贵的设备、专业人员,通常涉及血液分析和神经学检查。

在发展中国家,常规进行此类测试对医疗中心来说是一个很大的限制。

另一方面,即使在发达国家,如果婴儿在资源充足的医院之外(例如在家中)发生窒息,也可能致命。

因此,由于这些原因,全球每年因新生儿窒息导致的伤亡数字相当高:超过100万婴儿死亡,另有120万婴儿出现听力丧失、瘫痪、学习困难等后遗症。

我本人在尼日利亚的家乡与非政府组织合作时首次接触到窒息病例,可以说情况很糟糕。这促使我开始研究关于哭声产生的生理学、声音与大脑的联系,以及像窒息这样的状况如何有效改变婴儿哭声模式的临床数据。

因此,今天我在Tubannoa的团队专注于通过关注婴儿哭声所携带的信息,来帮助新生儿存活并健康成长。

那么,我们的解决方案具体是什么?我们开发了一款智能手机应用程序,供父母和护理人员使用,通过简单的婴儿哭声录音,快速识别或检测神经异常的早期迹象。

其理念是,婴儿可以被早期识别,从而得到及时治疗。

与目前的筛查方法相比,这款应用程序至少提供了三个关键优势:第一,它快速,便于早期检测;第二,它具有成本效益,意味着全球可及性,无论经济状况如何,更多人都可以使用;第三,它是无创的,因此不会对患者造成伤害,并且可以根据需要重复测试。

在开发Uno的过程中,人工智能和机器学习发挥了非常重要的作用。这是因为新生儿窒息引起的哭声特征变化非常复杂。

因此,尽管我们知道一些特征,比如基频的高音调,但还有其他许多特征,通过手工工程提取并非易事,但对于开发一个准确的系统却很重要。

机器学习和特别是深度学习让我们能够做到的,是构建一个神经网络,自动从哭声录音中学习这些特征,然后在数学上找出应如何组合它们来进行分类。

在实践中,这通常涉及在输入音频信号的频谱图表示上训练一个卷积神经网络(CNN)。

用于训练CNN的数据可能是这个设置中最重要的组成部分。它必须庞大且多样化,因为哭声模式因人而异,我们希望学习真正具有普遍性的特征。同时,数据必须有强标注,否则生成的模型可能不具备临床效用。

为此,我们与巴西、加拿大和尼日利亚三个国家不同医院的新生儿学家合作。与他们一起,我们现在建立了最大的临床标注婴儿哭声数据库,该数据库在机器学习和模型的开发和训练中发挥了至关重要的作用。

您已经了解了我们开发Ubeno的原因。Ubeno实际上是我母语中的一个表达,意思是“婴儿的哭声”。

我们不仅仅是在开发一个单一的移动应用程序,实际上是一个灵活的软件平台,可以部署到一系列设备上,真正将婴儿的哭声作为一种生命体征来利用。

我们希望在不远的将来,能够拯救并改善全世界数百万婴儿的生命。


本节课总结

本节课中,我们一起学习了查尔斯·奥努及其团队如何利用AI应对新生儿窒息这一重大公共卫生挑战。我们了解到:

  1. 问题背景:新生儿窒息是导致婴儿死亡和残疾的主要原因,传统诊断方法昂贵且难以普及。
  2. AI解决方案:通过开发智能手机应用,利用婴儿哭声录音进行早期、快速、低成本且无创的筛查。
  3. 技术核心:使用卷积神经网络(CNN) 分析哭声的频谱图,自动学习复杂的特征模式以识别窒息迹象。
  4. 数据关键性:成功依赖于大规模、多样化且经过临床强标注的婴儿哭声数据库。
  5. 愿景:旨在创建一个灵活的平台,将婴儿哭声作为关键生命体征进行监测,以期在全球范围内挽救生命。

这项技术展示了AI在医疗诊断,特别是资源有限场景下的巨大潜力和人道主义价值。

005:4_快速概括什么是人工智能 🤖

在本节课中,我们将要学习人工智能的基本概念,了解它能做什么、不能做什么,并熟悉一些常见的术语。这将帮助我们为后续课程中探讨AI在公共卫生、气候变化等领域的应用打下基础。

到目前为止,我们已经多次提及“向善的人工智能”这一短语,并开始将其与其他用途的人工智能进行区分定义。但为了确保我们理解一致,现在需要退一步,先聚焦于人工智能本身。

什么是人工智能? 🧠

首先,当前的人工智能指的是一种基于数据模式进行决策的、相对简单的智能形式

为了全面了解人工智能及其对组织的影响,我推荐你学习DeepLearning.AI的《AI for Everyone》课程。该课程为你在本系列课程中将遇到的许多概念提供了很好的基础。

在我们即将应用于案例研究的框架中,你需要在开发的每个阶段都考虑数据——从数据质量和可用性,到数据隐私和安全问题,再到如何在AI模型中使用数据。虽然并非每个问题都需要AI作为解决方案的一部分,但如果你打算使用AI,那么几乎肯定需要大量优质的数据

机器学习:人工智能的一个子领域 📊

就我们的目的而言,你可以将AI视为应用一套规则或其他机制,以基于数据做出推断

你在新闻中听到或日常使用手机、互联网应用时遇到的许多应用,都属于机器学习的例子。机器学习是AI的一个子领域,其中的算法是学习识别数据中的模式,而不是根据一套固定的标准被明确编程来做出决策。

最常应用的机器学习算法是所谓的监督式机器学习算法,其目标是将某个输入(此处称为 A )映射到某个输出(此处称为 B )。

为了更具体地说明,如果你的输入 A 是一张动物的图片,你的输出 B 可能是动物的种类。像这样识别图像内容的应用程序就是图像识别的一个例子,你将在课程2中看到它的实际应用。

监督式机器学习的更多例子 🌐

监督式机器学习的另一个例子是将文本从一种语言翻译成另一种语言,比如在这个例子中,从海地克里奥尔语翻译成英语作为输出。当然,这可以在任何两种或更多语言之间进行,这就是所谓的机器翻译。这是你将在第三门课程中看到更多的一种监督式学习。

就像你在项目聚焦视频中看到的那样,输入可以是婴儿哭声的录音,输出可以是医疗诊断。因此,这实际上是一个可以被认为与语音识别非常相似的例子,与你对着智能手机或智能设备说话、让它为你提供餐厅推荐或天气预报时运行的应用程序是同一类型。

在本课程关于可再生能源的案例研究中,你将看到将预测风速和涡轮机传感器测量值作为输入 A,映射到风力涡轮机产生的能量作为输出 B。这是基于历史数据进行预测的一个例子。

虽然这些看起来可能是截然不同的应用(它们确实是),但它们也都是应用程序使用输入A到输出B的映射的例子。这意味着它们都是监督式机器学习的潜在用例。

深度学习与人工智能的能力边界 ⚙️

除了人工智能和机器学习,在算法学习识别数据模式方面,你可能还听说过深度学习这个短语。深度学习指的是一种特殊的机器学习算法,称为神经网络。因此,从某种意义上说,深度学习是机器学习和AI的一个子领域。

在这三门课程中,你将看到许多使用监督式机器学习的例子。总的来说,这些例子说明了AI可以比人类更好地完成某项工作,或者可以改进人类单独执行的任务。

然而,重要的是要记住,这并不意味着AI代表了某种更优越的智能形式。恰恰相反,AI擅长重复性任务,例如为特定问题分析数千行数据,或者能够快速参考大量信息以进行搜索、文本生成或其他类型的统计推断。

举一个具体的例子,一个智能音箱或手机可能能够理解超过10种不同的语言,比任何人都多,但它也可能无法像另一个人那样好地理解其中任何一种语言的语音。

或者再举一个例子,一个AI算法可能能够根据症状描述提供关于数千种疾病的医疗信息,但无法提供人类医学专家在其专业领域内的深度分析和诊断。

是的,算法在某些任务上表现得几乎令人惊叹,但同样重要的是要记住,在大多数情况下,关键不在于算法本身。任何AI应用程序的好坏,都取决于用于开发模型的数据以及运行该模型的代码背后的人

总结与预告 📝

本节课中,我们一起学习了人工智能的基本定义,了解了其核心子领域——机器学习(特别是监督式学习)的工作原理,并通过多个实例(如图像识别、机器翻译、语音识别和预测)加深了理解。我们还探讨了深度学习与AI的关系,并明确了AI当前的能力边界和局限性,强调了数据和人类在AI系统中的关键作用。

我们尚未讨论的是机器学习算法如何从数据中学习,而这正是我们接下来要做的。在下一个视频中,你将看到监督式学习如何工作的例子。请与我一起观看下一个视频。

006:快速概括监督学习的工作原理 🚴

在本节课中,我们将通过一个图像识别的例子,来快速概括监督学习的基本工作原理。我们将了解算法如何从数据中学习,并探讨其在公共卫生、气候变化等领域的应用潜力。


为了更好地理解算法如何从数据中学习,我们来看一个识别图像内容的例子。

例如,当你看到这张图片时,能立刻认出这是一位骑自行车的人在路上。对于自动驾驶汽车而言,识别骑行者、行人以及道路标记是一个重要问题。那么,如何让算法做到这一点呢?

需要说明的是,人类学习的方式与机器学习的方式有很大不同,但在定性层面存在一些相似之处。这些相似之处有助于我们更直观地理解其工作原理。

你之所以能学会识别此类图像中的骑行者,很可能是因为你从小就在路上见过骑行者,或者你小时候骑过自行车,或在电视上看过自行车比赛。无论如何,你最终达到了能轻松识别图像中骑行者的水平,即使你从未见过这张图片、这位骑行者或这条道路。这是因为你掌握了所有骑行者图片共有的特征。

假设你想训练一个机器学习算法来识别图像中的骑行者。使这项任务成为可能的关键在于,图像(尤其是数字图像)本质上也是一种数据,它以大量数字集合的形式存在,这些数字代表了每个像素中每种颜色的数值。

你可以将这个数字集合连同标签“骑行者”一起输入给机器学习算法。算法会在构成图像的数字中寻找规律。

这个概念是监督机器学习的核心,即:你可以向算法展示一些数据,并同时提供一个标签(在本例中是“骑行者”)。


接着,你向算法展示其他不包含骑行者的图像,并用“非骑行者”的标签来标注它们。

一旦你向算法展示了大量“骑行者”和“非骑行者”的示例,算法将开始能够根据其在已标注示例中观察到的规律,识别出它从未见过的图像中的骑行者。


上一节我们介绍了算法如何学习识别单一类别。实际上,你可以训练算法识别更多对象。

例如,如果你致力于自动驾驶汽车,可以训练算法识别行人、路标、车道标记和其他车辆。

同样,你可以向算法展示数千张包含非法采矿活动证据的卫星图像示例,并训练它自动在未见过的图像中识别此类活动。

监督学习的原理不仅限于图像,它可以应用于各种类型的数据。

考虑另一种数据:音频录音。这正是Charles Uno在其视频中描述Bennoir Health的工作时所提到的。他们收集了来自世界不同地区的数千段婴儿哭声录音,并将其标记为“健康”或“不健康”。利用这个带标签的数据集,他们创建了一个应用程序,允许世界任何地方的父母或看护人简单地录制婴儿的哭声,并将其作为判断婴儿健康状况的一个证据。

这里的要点是,你可以拥有任何类型的数据集,其中每个示例输入A都与一个适当的输出B相关联。

这些输入和输出可以是:

  • 输入:一张图片,输出:“骑行者”或“非骑行者”。
  • 输入:一张卫星图像,输出:“有采矿”或“无采矿”。
  • 输入:一段音频录音,输出:“健康”或“不健康”。
  • 或者任何你感兴趣的其他配对,例如:
    • 风速和能量输出。
    • 一种语言的文本和其另一种语言的翻译。

如果你能创建一个包含这些输入和输出的数据集,那么至少在原则上,你可以使用该数据集来训练一个机器学习算法,并评估它是否有助于执行这项任务。

在这些课程中,你将使用各种机器学习模型。但课程的目标不是教授你机器学习算法背后的数学和代码技术细节。

如果你确实决定想更深入地了解技术方面,那很好。我可以推荐DeepLearning.AI的机器学习专项课程深度学习专项课程,它们是关于机器学习技术方面的优秀基础课程。😊

尽管机器学习的潜力可能令人印象深刻,但必须记住,人工智能并非某种人类智能的替代品。

以下是关于AI应用的重要考量:

  • AI算法的好坏完全取决于其训练所用的数据。
  • 它们本身不具备任何内置的道德观,也不会关心其决策、表现或部署所产生的影响。

因此,如果你正在从事任何涉及AI的项目,即使你非常乐观地认为你的工作可能产生积极影响,你仍有责任调查并理解你考虑部署到世界上的技术可能带来的潜在负面影响。😊

接下来,我将概述一些需要牢记于心的事项,其中首要的是:避免造成伤害


本节课中,我们一起学习了监督学习的基本工作原理。我们了解到,通过向算法提供带有标签的示例数据(如图片与“骑行者”标签),算法可以学习识别模式,并将这种识别能力推广到新的、未见过的数据上。这种模式适用于图像、音频、文本等多种数据类型,是许多AI应用的基础。同时,我们也认识到,负责任地开发和应用AI技术至关重要。

007:评估AI向善项目的影响 ⚖️

在本节课中,我们将学习如何评估人工智能项目可能带来的影响,包括积极和消极的方面。我们将探讨在应用AI技术时需要考虑的关键伦理问题、数据隐私以及潜在风险,确保项目遵循“不伤害”原则。

正如你在之前的视频中所见,人工智能的应用范围非常广泛。让算法可靠地执行对你我而言相对简单的任务,例如识别图像内容,实际上可以成为许多项目的强大工具。

现在,我想花点时间讨论在将AI应用于项目时需要牢记的一些潜在问题。

明确项目目标与潜在风险

任何AI向善项目的目标当然是对世界产生积极影响,无论是改善人们的健康、减少气候变化的影响,还是帮助社区从自然灾害中恢复。然而,你所从事的任何项目也都存在产生负面影响的风险。在本视频中,我将概述启动任何AI相关项目时需要关注的几个主要领域。

需要明确的是,自人们开始思考如何利用技术改善人类和环境以来,人们也一直关注技术对人和环境的潜在负面影响。对于AI而言也是如此。目前有大量人员专注于AI伦理、公平性、偏见和代表性的研究,并有许多优秀的论文和教育材料发表在这些主题上。这里我将提及其中一些问题,但本课程没有足够的时间深入探讨。尽管如此,我确实建议你花时间查看一些相关资源,我们在本周课程末尾提供了许多,鼓励你去查看这些资源,思考它们如何应用于本课程的用例以及你项目中正在处理的任何用例。

AI并非万能解决方案

在考虑AI在各种项目中的影响时,首先,我想强调AI并不一定能为每个新项目增加价值。在我构建的大多数技术领域中,当我以为AI可能奏效时,大多数时候它并没有。因此,我们必须牢记,在尝试确定AI是否能提供帮助的过程中,我们不能伤害到人。鉴于围绕AI及其能力的炒作,在解决问题时很容易陷入某种“AI优先”的思维定式,即把每个问题都视为钉子,而AI是锤子。在处理现实世界的问题时,最好将AI视为你工具箱中的一个潜在工具,特别是要避免它分散你对原本可能更简单解决方案的注意力。

在本课程后续课程中,我们将介绍一个处理任何你可能想解决的、可能涉及AI的问题的框架。实际上,最初的步骤之一就是确定AI是否真的能为解决方案增加价值。对于许多现实世界的问题,AI根本不会增加价值,尽早认识到这一点非常重要,这样你就不会浪费时间和资源去尝试实施一个不必要的、过于复杂的AI解决方案。

在本课程中,我将重点介绍一些AI确实能增加良好价值的案例,以及另一些不能的案例。对于AI能增加价值的项目,正如我之前所说,拥有良好且充足的数据通常对你的项目成功至关重要。

数据:价值核心与伦理中心

数据也恰恰是围绕AI应用的许多伦理问题的核心。例如,在涉及图像数据的项目中,人物或财产的图像应被视为潜在的敏感信息。

当我在2012年美国飓风“桑迪”过后从事航空影像分析以进行损害评估时,虽然你无法在航拍照片中识别出个人,但如果你熟悉该地区,你可能能够推断出受损且最易遭受盗窃的具体地点。在灾难响应期结束后,我们让另一个组织分析了我们的航空损害评估有多成功,然后出于隐私和安全考虑,我们都删除了数据。

因此,尽管保留数据并允许更多人评估损害并对其进行研究有非常好的益处,但我们无法保证“不伤害”原则得到遵守,因为可能会有人根据图像中的财产被识别出来。

其他包含个人身份信息的数据形式,如姓名、电话号码、地址、医疗或财务信息,也需要以最大的谨慎和保密性对待。一方面,你需要确保在处理数据时采取适当的安全措施,以避免数据泄露或被盗;另一方面,你还需要确保不会无意中发布或共享任何可能泄露任何个人或特定群体个人信息的数据。

处理敏感数据的最佳实践

理想情况下,只要可能,你永远不应该存储任何个人身份信息。例如,当我在2010年海地地震后从事灾难响应工作时,虽然我们确实存储并提供了一些数据,但我们确保任何公开共享的数据都不包含任何个人身份信息,然后在响应期结束后,我们删除了所有可能包含个人身份信息的数据。

即使是看似已经公开的数据,如社交媒体上的帖子,仍应被视为潜在的敏感信息,你应该避免以不安全的方式存档或重新发布此类数据,就像对待任何其他包含个人身份信息的数据一样。

你需要极其谨慎地对待任何可被视为私人信息的数据,不仅因为这是正确的事情,还因为不这样做可能会对信息被泄露的个人的安全和福祉构成真实且可能严重的风险。不幸的是,有许多案例表明,从事初衷良好的项目的团体,他们收集、共享或发布的数据最终被专制政权用来针对那些其观点、政治立场或活动被视为对该政权延续构成威胁的个人。事实上,如今世界上许多国家的专制政权积极参与收集和分析社交媒体及其他数据的项目,表面上是为了某些公益项目,而实际上他们的目标是对持不同政见者进行画像和定位。这显然不符合大多数人对“向善”的定义,也肯定不满足“不伤害”原则。

评估AI解决方案的实际影响

除了与项目数据相关的伦理考虑之外,另一个需要关注的主要领域是你的AI解决方案的任何实际影响。例如,假设你部署的AI模型负责识别非法活动。它错误识别此类活动并最终给无辜者带来问题的几率有多大?

或者,一个会话模型负责提供医疗诊断,就像你在上一个视频中看到的,判断某人是否患有癌症。提供错误诊断意味着什么?如果你有时必须出现错误诊断,你更倾向于哪种错误?你更倾向于假阳性(即告诉某人他们患有癌症而实际上没有),还是假阴性(即告诉某人他们没有癌症而实际上有)?

对于你从事的每个项目,你都会有一套不同的具体考虑因素,涉及故障模式是什么样子,以及当事情出错时会发生什么。即使你构建的系统按你最初预期的方式运行,也常常会有意想不到的后果。因此,在某些情况下,设想特定的对抗性用例非常有用。我指的是其他人可能利用你构建的系统或你发布的数据来做坏事而不是好事的方式。在本课程中,我们将多次回到这一点。这是一个重要的领域,需要你与利益相关者,特别是技术的使用者和受影响者进行沟通,因为你不会自己想到所有潜在风险,你需要让那些可能受到这些潜在负面用例伤害的人参与进来。

与利益相关者合作

例如,假设你部署了一个用于自动追踪濒危物种(比如黑犀牛)数量的系统。如果你发布关于在哪里可以找到最多黑犀牛的确切数据,偷猎者会利用这些数据进一步威胁该物种吗?有可能,我不知道。因此,这是一个很好的例子,说明了为什么你应该与利益相关者——那些负责追踪和保护犀牛的人——交谈,并听取他们的意见,以判断这样的系统是否会遵守“不伤害”原则。

因此,无论你在做什么,都要应用“不伤害”原则。如果你花时间考虑项目的所有潜在影响,无论是积极的还是消极的,你将会最成功。同时请记住,作为从事AI向善项目的人,你不是唯一应该就如何“不伤害”做出判断的人。你需要考虑所有可能受影响人群的观点和意见。

课程总结与展望

我们与多位应用AI产生积极社会和环境影响的不同领域专家合作开发了这些课程。在本课程中,你将直接听到这些专家在项目聚焦中的分享。我们特别感谢微软AI向善实验室的合作伙伴在课程开发中的合作与支持。

在下一个视频中,你将听到微软AI向善实验室的首席科学家兼主任胡安·拉维斯塔·阿夫斯的分享。该实验室目前正在进行大量项目。请注意,下一个视频的风格和感觉与本课程的内容视频略有不同,我认为最好将其视为微软AI向善实验室正在进行的许多非常有趣项目的鼓舞人心的预告片,而不是本课程的实用内容。但如果你想了解更多关于胡安提到的任何项目的详细信息,可以在本周课程末尾的资源部分通过URL找到更多细节。


本节课中,我们一起学习了评估AI向善项目影响的重要性。 我们明确了AI并非适用于所有场景,探讨了数据隐私与安全的核心伦理问题,并学习了如何通过考虑潜在风险、设想对抗性用例以及与利益相关者合作来贯彻“不伤害”原则。记住,负责任的创新始于周密的思考和广泛的咨询。

009:吴恩达《AI for Good专业课程》 - 第1周总结 📚

在本节课中,我们将回顾第一周学习的主要内容,包括“AI for Good”的概念、监督式机器学习的基本原理,以及在AI项目中需要考虑的社会影响。


恭喜你完成了本课程第一周的学习。你现在已经为参与AI相关项目打下了坚实的基础。在进入第二周,开始探索问题解决框架和第一个案例研究之前,我将简要回顾本周的主要知识点。

什么是“AI for Good”? 🤔

本周我们首先讨论了“AI for Good”的含义,并看了一些应用实例。

以下是几个“AI for Good”项目的例子:

  • 监测亚马逊雨林中的非法采矿活动。
  • 预测风力涡轮机的发电功率。
  • 根据婴儿的哭声诊断其健康状况。

总的来说,“AI for Good”项目旨在预防、减轻或解决对人类或环境产生不利影响的问题。联合国可持续发展目标是一个流行的框架,用于讨论诸如减少贫困与饥饿、应对气候变化和推广清洁能源等目标。你可以在本周末尾的资源区找到链接,以获取关于这些目标以及旨在实现这些目标的具体项目进展报告的更多信息。

监督式机器学习如何运作? 🧠

上一节我们介绍了“AI for Good”的目标,本节中我们来看看AI是如何实际运作的。

你看到了一些关于最常见机器学习形式——监督式机器学习的直观例子。在监督式机器学习中,你的目标是让算法学会从输入A映射到特定的输出B。

这可以包括以下例子:

  • 识别图像中的内容。
  • 根据录音做出医疗诊断。
  • 将文本从一种语言翻译成另一种语言。

只要你能为算法提供一个用于训练的数据集,监督式学习就可以应用于各种问题。这个数据集是指,其中每个数据输入A都标注了正确的输出B。

实施AI项目需考虑哪些影响? ⚖️

最后,我们探讨了在实施AI项目时需要考虑的一些影响。首要的是,我强调必须记住,AI并不一定会为你参与的每个项目都增加价值。

因此,与其采取“AI优先”的问题解决方法,你真正应该将AI视为你工具箱中众多可能选项之一。

对于你正在进行的任何项目,在处理数据时,你需要将数据隐私和安全放在首位。世界上有许多有趣的项目并不一定涉及个人的私人信息,但对于任何涉及此类信息的项目,你都需要注意在项目的所有阶段保护个人隐私信息,存储必要的信息,并在项目完成后删除数据。

在发布结果或数据产品时,你需要确保不会无意中发布个人信息或其他可用于识别个人、进而给个人带来风险或伤害的信息。除了数据本身,你还需要仔细考虑你的AI解决方案可能产生的影响。这可能包括它在故障模式下的影响,甚至是在它按预期运行时的潜在影响。

在本周的多个节点,我都强调,为了确保将项目的任何潜在负面影响降至最低,你应该采取“不伤害”原则。务必花时间考虑你项目的所有潜在影响,无论是正面的还是负面的。请记住,要做到这一点,你需要收集所有可能受你项目影响的人的意见和观点,以确保不会造成伤害。


至此,你已经准备好深入学习本课程的第二周。在这里,我们将向你介绍一个可应用于任何AI产品的问题解决框架,并详细分析一个专注于母婴健康的案例研究。但在开始之前,我们还有另一个项目聚焦。本期将由来自微软AI for Good实验室的Felipe Ovido介绍他如何利用监督式机器学习协助放射科医生早期检测乳腺癌。


本节课总结:本节课中我们一起学习了“AI for Good”的核心概念与实例,理解了监督式机器学习的基本原理(从输入A到输出B的映射),并重点探讨了在AI项目中必须优先考虑的数据隐私、安全以及广泛的社会影响,强调了“不伤害”原则的重要性。

010:利用深度学习辅助乳腺癌MRI异常检测 🩺

在本节课中,我们将学习如何应用深度学习技术,辅助放射科医生通过磁共振成像(MRI)进行乳腺癌的早期检测。我们将了解项目背景、面临的挑战、解决方案以及最终成果。


概述

乳腺癌是全球最常见的癌症类型之一。在美国,每年约有30万新确诊病例和4万例死亡。放射科医生常使用MRI扫描对高风险女性(如有家族病史者)进行癌症筛查和早期检测。然而,即使使用MRI,小的病灶也可能被遗漏(假阴性),而良性病变可能被误判为恶性(假阳性),导致不必要的活检。人工智能可以成为一个有用的工具,为放射科医生的决策提供信息,既能减少解读时间,又能提高MRI检查的准确性。

项目背景与目标

本节介绍本项目的合作方与核心目标。

该项目是微软AI for Health、华盛顿大学和弗雷德·哈钦森癌症研究中心的合作项目。我们的目标是开发一个可解释的机器学习模型,以辅助放射科医生进行乳腺癌的早期检测。我们设想这个工具能通过减少分析MRI影像所需的工作量,并快速识别乳房中异常且需要随访的区域,从而为放射科医生提供帮助。

放射科医生面临的挑战

上一节我们介绍了项目目标,本节中我们来看看放射科医生在分析MRI时面临的具体问题。

在放射学中,一个常见的问题是区分正常和异常的检查。对于乳腺癌高风险女性,建议每隔几年进行一次MRI筛查。下图展示了一张MRI扫描的2D投影。放射科医生需要分析完整的MRI扫描,试图回答几个关键问题:

  • 乳房是正常还是异常?
  • 图像中的异常区域在哪里?
  • 如果存在异常,我们能否做出癌症诊断或风险预测?

MRI扫描是复杂的三维空间测量,因此回答这些问题需要经验非常丰富的放射科医生和大量的分析时间,尤其是在异常非常细微的情况下。

机器学习解决方案与数据挑战

面对上述挑战,我们可以尝试用机器学习来解决。然而,将机器学习应用于此类问题会带来显著的挑战。

这个问题可以通过训练一个神经网络来自动识别异常的MRI扫描来解决。但主要挑战在于数据的不平衡性:阴性病例(即正常的乳房图像)远比阳性病例(存在癌症)更为常见,尤其是在癌症早期阶段。

为了训练神经网络,我们获得了超过4000名患者的数据,总计超过1万次独立的MRI检查。但其中只有大约2%的患者最终罹患癌症。这在训练机器学习模型时带来的挑战是:模型可能简单地学会对每张图像都预测“无癌症”,并且能达到98%的正确率。为了有效识别那关键的2%的阳性病例,我们需要采取谨慎的方法。

核心技术:单类分类

我们解决数据不平衡挑战的方法是定制一个用于异常检测的模型。

我们采用的方法是定制一个用于异常检测的模型。这意味着通过在丰富的阴性数据上进行训练,模型能非常好地识别正常或阴性图像;然后,通过寻找数据集中不存在或与数据集中正常图像不同的特征,模型能够识别异常图像。这种方法通常被称为单类分类

因此,对于任何MRI扫描,该模型都能输出图像是正常还是异常的判断。

从分类到定位

我们可以将分析更进一步,超越简单的正常与异常分类,生成异常图像中的异常区域定位图。

我们可以将分析更进一步,超越简单的正常与异常分类,生成异常图像中的异常区域定位图。这些定位图随后可以被放射科医生用来可视化图像中具体哪一部分被判定为异常,以便进行更详细的分析或活检。

模型效果与对比

我们的最终模型在检测患者现有癌症方面表现出超过90%的准确率,在预测五年癌症风险方面超过80%的准确率。这一结果与训练有素的放射科医生在结合患者完整临床病史审阅MRI扫描时的准确性相当。

此外,通过自动分析图像,我们的系统能够将放射科医生的工作量减少80%以上。我们模型的输入和输出如下图所示,顶行是多名患者的MRI图像集合。

中间行图像中的红色区域是模型识别出的异常区域。

底行中的白色区域是放射科医生认为异常的区域。通过比较,我们观察到在没有任何手动标注的情况下,模型预测与放射科医生的判断有良好的匹配。

未来展望与总结

本节课中我们一起学习了如何利用单类分类的深度学习模型辅助乳腺癌MRI检测。

我们对该系统的下一步计划是将其整合到放射科医生的临床工作流程中,以减少他们的工作量,并帮助他们快速识别需要人类进一步分析的病例。

医学的未来无疑将包含许多像这样的AI辅助工具。但重要的是要记住,AI无法替代训练有素的医疗专业人员。相反,我们希望此类工具能够帮助减轻临床医生的日常工作负担,并帮助他们为患者提供更好的治疗结果。

总结:本节课中我们一起学习了如何利用单类分类的深度学习模型,解决医学影像数据不平衡的挑战,从而实现乳腺癌MRI图像的自动异常检测与定位,有效辅助放射科医生工作并提升诊断效率。

011:人工智能为善框架 🧭

在本节课中,我们将学习一个用于构建“人工智能为善”项目的方法框架。这个框架将项目生命周期划分为四个阶段,并指导你如何系统性地推进项目,从探索问题到评估最终影响。

欢迎回来。在本课程的第一周,你学习了机器学习的工作原理、当前“人工智能为善”领域团队正在开展的项目类型,以及在着手实际项目时需要考虑的一些实际问题。在课程的第二周,你将学习一个用于构建“人工智能为善”项目方法的框架。事实上,这个框架可以应用于任何现实世界、且人工智能可能成为解决方案一部分的项目。到本周结束时,你将掌握必要的工具,以便深入研究哥伦比亚波哥大空气质量评估的案例。

首先需要说明,目前并没有一个官方或普遍接受的“人工智能为善”项目框架。但这里展示的框架是基于一系列最佳实践、我个人在灾害响应和公共卫生领域的经验、在工业界构建人工智能驱动产品的经验,以及该领域其他许多利益相关者的经验总结而成。希望这个框架能对你本课程及未来的项目有所帮助。

与大多数项目类似,“人工智能为善”项目也遵循一系列阶段或步骤。在本课程中,我们将项目生命周期划分为四个阶段。

第一阶段:探索 🔍

你可以将其视为第一个阶段,即探索阶段。在此阶段,你需要与利益相关者建立联系,定义你想要解决的问题,评估可行性,并确定人工智能是否能作为解决方案的一部分来增加价值。

第二阶段:设计 ✏️

如果项目的探索阶段看起来前景良好,你就可以进入设计阶段。在此阶段,你需要对解决方案进行原型设计,制定模型策略,进一步调查数据,并思考如何确保数据隐私,以及潜在用户将如何与你的系统交互。

现在,在设计阶段,你可能会意识到从探索阶段得出的一些假设并不成立,因此需要返回并进一步探索,与利益相关者进行更多讨论,或者迭代修改你的问题陈述。如果是这样,这里从设计到探索的小箭头表明,这可能是一个迭代过程。有时,如果你发现没有完成当前阶段工作所需的条件,可能需要回到之前的阶段。

坦率地说,很多时候你会发现根本无法成功完成一个项目,这并不可耻。我参与过的大多数关注社会公益的项目,并未对我们试图帮助的社区产生可证明的影响;我参与过的大多数人工智能项目或由人工智能辅助的技术,也未能真正证明通过使用人工智能为该产品带来了非常显著的改进。因此,如果大多数人工智能项目不成功,大多数公益项目也不成功,那么当你尝试将这两个非常困难的领域结合起来时,大多数想法无论初衷多么良好,都不会成功,也就不足为奇了。能够认识到你不太可能达到成功的成果,实际上是你能够培养的最重要的领导力和设计技能之一。

对于本课程,我们将讨论那些我们认为你能够产生积极影响的用例。

第三阶段:实施 ⚙️

在这个模型中,一旦你确定了设计,就会进入实施阶段。在此阶段,你需要进行所谓的“模型产品化”。这实际上意味着将你在某种测试环境中设计的内容准备好,以便部署并与用户界面集成。然后,你还需要再次测试系统的性能和可用性。

在实施阶段的工作中,你可能会发现设计的某些方面确实行不通,需要返回设计阶段,这是完全可以接受的。因此,这里添加了另一个小箭头,从实施返回设计,因为这是你在迭代最终产品过程中可能采取的路径。

第四阶段:部署与评估 🚀

一旦你对实施结果感到满意,就可以准备部署了。当然,部署涉及的技术细节远不止按下一个按钮然后上线那么简单。但为了本课程的目的,这里用一个小火箭图标起飞来表示部署,并请注意,关于成功机器学习产品开发的技术方面,有完整的其他课程,但我们不会在这里讨论这些细节。

系统部署后,就是评估影响、沟通发现并决定下一步行动的时候了。此时,可能发生多种情况。

最常见的情况或许是,你通过部署系统发现,需要对实施进行一些调整,因此你返回实施阶段,最终重新发布产品的更新版本。

或者,你可能发现设计的某些方面最终未能达到预期,决定返回设计阶段,在实施新解决方案之前重新思考系统的某些组件。

又或者,你决定探索最初所处理问题的一个新方面,或者完全去探索一个新问题。所有这些都可能是非常常见的结果。根据经验,我可以告诉你,当你从事一个真实项目时,情况可能比这个相对简单的图表所显示的看起来要混乱得多。但我同样可以说,如果你在项目的每个阶段都牢记这个框架,那么你更有可能获得成功的结果,或者至少能意识到何时偏离了轨道,然后能够尽可能有效地调整并回到正轨。

我想顺便提一下,如果你熟悉软件开发实践,这看起来可能像瀑布式开发范式。但请注意,其中评估项目影响的理念同样适用于迭代更频繁的敏捷开发范式。

在接下来的几个视频中,我将引导你了解一个项目经历此框架所有四个阶段的示例,以便你能看到在特定场景下事情是如何推进的。


本节课总结

本节课我们一起学习了“人工智能为善”项目的四阶段框架:探索设计实施部署与评估。这个框架强调了项目的迭代性,允许在发现假设不成立或设计需要调整时返回之前的阶段。理解并应用这个结构化方法,能帮助你更系统、更有效地推进旨在产生积极社会影响的人工智能项目,并提高成功的可能性。

012:AI与公共卫生项目实战——尼日利亚母婴健康案例 🏥

在本节课中,我们将通过一个具体的项目案例,详细拆解“AI向善”项目框架的各个阶段。这个项目是我多年前与联合国儿童基金会合作,聚焦于尼日利亚母婴健康的实践。希望通过这个案例的逐步分析,你能清晰地了解在开发任何AI项目时,每个阶段需要关注的核心要点。

项目背景与通信革命

上一节我们介绍了“AI向善”的项目框架,本节中我们来看看这个框架在一个真实项目中的应用背景。

在21世纪的第一个十年,全球通信经历了一次重大变革。2000年,全球只有约10%到20%的人能使用手机。但到了2010年,这一比例已上升至全球人口的70%以上。当时联合国发布的一系列报告强调了一个事实:拥有手机的人数已超过了能获得基本卫生设施(如厕所或自来水)的人数。这个状态在十多年后的今天依然存在。

正是在2008年至2009年,我在马拉维的一家诊所工作。这家诊所只有一名医生和少数几名工作人员,却要为近10万人提供服务。这种状况至今变化不大,该地区的许多诊所仍保持着约1名医生对应10万人的比例。因此,我们当时首次遇到的许多通信问题,在今天为人们提供医疗服务时仍然是巨大的挑战。

初期实践:马拉维诊所的挑战

在马拉维的案例中,当地居民与诊所工作人员沟通的主要方式是通过手机短信。面对如此庞大的人群,诊所被海量的信息淹没,人工处理很快变得不可能。我的工作是帮助该诊所建立一个系统,利用一些基本的AI技术来自动分类收到的信息并进行相应路由。

如果你对这项研究的更多细节感兴趣,我们在本周材料的资源部分附上了我于2010年与斯坦福大学的克里斯·曼登共同发表的论文,这也是我博士论文的一部分。

随着全球手机普及率的快速提升,处理大量自发短信的挑战也成为一个新兴的全球现象。从工业界、政府到医疗保健和应急响应部门,各类组织都必须学会如何快速应对这一新挑战。

海地地震的应急响应

2010年,海地发生地震后,我被请求提供帮助。地震导致数十万人死亡,大部分基础设施遭到损坏或摧毁,但大多数手机信号塔仍然完好。因此,人们通过短信进行交流,寻求援助和信息。

这些短信绝大多数是海地克里奥尔语,而大多数国际救援人员并不懂这种语言。当时,还没有能够自动在海地克里奥尔语和英语之间进行翻译的应用程序。

作为响应工作的一部分,我帮助组织了来自全球海地侨民社区的数千名志愿者,他们可以快速地将收到的紧急信息在海地克里奥尔语和英语之间进行翻译。借助这些人工翻译,以及分类和地理位置信息,我们得以帮助以英语为主的国际救援界响应那些最紧急的信息。

除了为紧急信息进行众包翻译外,我们还能够将海地克里奥尔语和英语信息提供给机器翻译服务。因此,在地震后不久,微软和谷歌相继发布了海地克里奥尔语和英语之间的机器翻译系统。这些系统随后被两种语言的使用者用于信息重要性低于紧急响应的日常交流。

从实践到研究焦点

通过马拉维和海地的这些经历,以及当时我参与的其他公共卫生和灾难响应工作,我熟悉了处理多语言、大规模通信的问题。事实上,这成为了我最终博士研究的焦点:我们如何调整AI系统,以帮助应对过去通常不是自然语言处理重点的语言在灾难响应和公共卫生领域的挑战。

正是在这种灾难响应和公共卫生工作的背景下,我于2012年共同创立了Idibon公司。这是一家致力于构建各种自然语言处理技术的公司,目标是让这些技术能在尽可能多的语言中部署。在Idibon,我们为三星等大型手机公司以及其他金融、游戏等领域的大型行业参与者构建了生产系统,使他们能够将分类和信息提取系统适配到任何语言。

U报告系统与项目契机

2011年,联合国儿童基金会推出了一个名为“U报告”的系统。这是一个社交信息工具和数据收集系统,允许社区成员发送短信,直接报告影响其社区的各种问题,范围从安全、疾病爆发到基础设施问题等。

U报告系统面临着与跨国公司相同的挑战:他们需要监控、翻译、分类和路由大量多语言短信,但他们缺乏构建和部署此类系统的资源或专业知识。

2015年,联合国儿童基金会联系到我们在Idibon的团队,希望我们帮助他们在尼日利亚一家为母亲和新生儿服务的诊所应用U报告工具。这看起来是一个我们可以产生重大影响的项目,通过将已经为工业应用开发并经过生产测试的技术,引入到一个社区健康与发展项目中。因此,我们Idibon团队自愿免费提供服务,帮助联合国儿童基金会专门为他们在尼日利亚的工作开发系统。

本节总结

本节课中,我们一起学习了“AI向善”项目框架在一个真实公共卫生项目中的应用背景。我们回顾了全球通信变革如何创造了新的挑战与机遇,并通过马拉维诊所和海地地震响应的早期实践,看到了利用AI技术处理多语言、大规模通信的迫切需求。这些经验最终促成了与联合国儿童基金会在尼日利亚母婴健康项目上的合作。

在下一节视频中,请与我一同探讨我们如何在这个项目的“探索”阶段着手开展工作。

013:探索阶段——问题定义与利益相关者 📋

在本节课中,我们将学习AI项目探索阶段的核心步骤:如何与利益相关者沟通,并定义一个清晰、具体的问题陈述。我们将通过一个帮助尼日利亚医疗工作者的真实案例来理解这个过程。


项目背景与目标

本节视频深入探讨了一个具体项目的探索阶段:如何帮助尼日利亚的医疗工作者监测和支持母亲及其新生儿的健康状况。

尼日利亚使用联合国儿童基金会U报告系统的人群,加入了一个名为“1000天计划”的宏伟全球项目。该项目至今仍在运行,其核心目标是为所有母亲及其孩子提供营养和医疗保健,覆盖范围从母亲怀孕的第一天到孩子两岁。

在尼日利亚的“1000天计划”中,U报告系统的主要用途是作为发送和收集调查回复的工具,这些调查旨在追踪母亲和儿童的健康状况。


系统按设计运行,但他们很快开始收到除调查回复外的大量非结构化短信。这些信息使用多种不同语言,涉及社区内各种不同的问题,有些与调查相关,有些则无关。

这与我在马拉维诊所工作的经历类似。信息量迅速超过了医疗工作者实时回复的能力,尽管他们认识到需要尽快处理许多这类沟通。

当我们的团队加入这项工作时,目标是帮助诊所工作人员实施一种方法,对通过U报告系统收到的信息进行分类和优先级排序。


第一步:联系利益相关者

正如之前提到的,在任何你想开展的项目中,第一步都是与利益相关者建立联系。

在这个案例中,主要利益相关者包括:

  • 联合国儿童基金会的代表。
  • 诊所的医疗工作者。
  • 受U报告项目服务的社区内的人们,特别是母亲和她们的孩子。



我们与联合国儿童基金会合作,以更好地理解他们项目的整体目标。反过来,我们也让他们对AI在其特定情况下可能提供的帮助限度有了现实的预期。

我们还花了一些时间直接与诊所的工作人员交谈,他们将是使用我们即将构建的技术的人。这有助于我们更好地理解他们在尝试与“1000天计划”中的母亲们沟通时所面临的挑战,尤其是在他们必须支持多种语言的情况下(很多时候,某种语言在医疗工作者中只有一个人会说)。


第二步:定义问题陈述

与利益相关者建立联系后,重要的是将他们的需求和项目目标整合成一个清晰、简洁的问题陈述。

你的问题陈述应定义你希望解决的问题,包括提及关键利益相关者,并描述成功的大致模样,但不必深入你可能部署的具体技术细节。

这是一个重要的步骤,因为如果你不清楚你希望解决的问题是什么、涉及哪些人,而过于关注你试图构建的技术,那么在项目开发的后续阶段很容易偏离轨道。

在定义你试图解决的问题时,做到非常具体和透明至关重要。

例如,在这个案例中,我们可能会被诱惑将问题描述得有点模糊,比如“难以处理大量不同语言的短信”。虽然这是事实,但并不清楚我们是在为谁解决这个问题。

因此,你可以通过修改这个问题陈述来向正确的方向迈进一步,使其更准确,例如:“医疗工作者需要与社区中的母亲直接沟通以监测她们及其婴儿的健康状况,而他们面临着处理大量多语言短信的挑战。”



现在这样好一些了,因为明确了部分利益相关者是谁。但如果这些医疗工作者能够成功完成工作,好的结果具体是什么样子,仍然不完全清楚。

因此,一个更好的问题定义可以是:

医疗工作者需要通过调查与社区中的母亲直接沟通,以监测她们及其婴儿的健康状况。为此,他们需要能够快速处理大量涌入的多语言短信,包括调查回复和来自社区的其他无关信息。

现在,这是一个清晰得多的问题陈述。像这样清晰的问题陈述能让你看到项目成功的结果会是什么样子,并将帮助你和你的团队专注于构建解决这个问题的方案。

这个过程我也在工业界应用过。在某些情况下,撰写一页纸的问题陈述可能是一个长达三个月的过程。我记得当我们最终启动时,我思考的版本大约是第70版。当我担任亚马逊理解服务(亚马逊云服务上首个NLP服务)的产品经理时,我们花了大约四个月时间,在甚至决定开始构建问题并思考我们想要什么具体技术之前,就撰写了大约50个版本的一页纸问题陈述。当然,当你在医疗保健等关键用例中处理某些事情时,你希望确保你对自己正在处理的问题以及你能实现的现实目标非常清楚,同时将危害降到最低。


总结与回顾

上一节我们介绍了如何与利益相关者沟通并收集需求,本节中我们重点学习了如何将这些需求转化为有效的问题陈述。

一个好的问题陈述应该:

  • 清晰、简洁、具体
  • 明确关键利益相关者
  • 给出成功的大致模样
  • 不一定提及你计划部署的任何特定技术


在尼日利亚项目的这个阶段,我们通过接触利益相关者和定义我们希望解决的问题,完成了探索阶段的前两个步骤。


本节课中,我们一起学习了AI项目探索阶段的两个关键步骤:联系利益相关者定义问题陈述。我们了解到,一个精准的问题陈述是项目成功的基石,它能确保团队始终聚焦于解决真正的核心挑战,而非迷失在技术细节中。

在接下来的视频中,我们将探讨AI是否能在这一特定场景中创造价值。

014:探索阶段 - 人工智能能否增加价值?🤔

在本节课中,我们将学习探索阶段的最后一步:评估人工智能是否能为解决你所面对的问题增加价值。我们将通过一个公共卫生领域的实际案例,分析做出这一判断所需考虑的关键因素。

确定AI的价值潜力

探索阶段的最终步骤是确定人工智能是否能为解决你所处理的问题增加价值。实际上,在你深入了解问题、与更多利益相关者沟通的过程中,你会一直思考这个问题。你也会思考,为这个特定用例实施人工智能解决方案所需投入的精力、时间和专业知识是否值得。

在与利益相关者沟通后,你可能会发现一个更简单的解决方案就足以解决问题,这种情况经常发生。特别是考虑到,如果不这样做,你将需要为一个更复杂的人工智能系统投入大量资源。

对于我们一直在讨论的案例——帮助尼日利亚的医护人员处理短信,我们考虑了所有这些因素,与利益相关者合作,并最终决定探索人工智能作为潜在的解决方案。

然而,人工智能能否为任何特定解决方案增加价值,最终取决于你能获取的数据类型以及你试图解决的问题本身。

监督学习的数据基础

在本课程的第一周你了解到,对于监督式机器学习问题,你需要有数据。我们需要许多输入A和输出B的示例,以便训练机器学习模型学习从A到B的映射。你看到的这些输入A和输出B的示例,可能是图像和标签,例如输入是街拍图像,输出标签是“是否为骑行者”;或者输入是音频记录,输出是“健康”或“不健康”的标签。这对于任何你可能想处理的监督式机器学习问题都是类似的。

针对我们关注的孕产妇和婴儿健康这一具体案例,需要处理的数据是过去由诊所工作人员手动分类的短信数据库。从这个意义上说,我们拥有诊所收到的短信作为输入A,以及与这些短信相关的类别作为输出B。这些类别包括:

  • 短信使用的语言
  • 短信的特定主题
  • 信息的时效性要求
  • 是否是对之前发出的特定调查的回复

评估数据与可行性

作为开发人工智能模型的训练数据集,这个用例的可用数据在总量上(尤其是某些语言的数据)似乎有些有限。但我们得出结论,在诊所工作人员的帮助下,我们可以通过新分类的示例来扩展训练数据。

有了这些输入的短信文本和输出的类别,看起来有足够的数据开始设计一个AI应用。这个应用可以自动分类和优先处理收到的短信,从而提高医护人员的工作效率,同时不影响其准确性。

在考虑人工智能能否为你正在进行的特定项目增加价值时,思考“不伤害原则”并考虑你的工作可能产生的任何负面影响非常重要。这些负面影响可能并不总是显而易见,尤其是你的工作最终可能造成伤害的方式。但如果你在项目开发的每个阶段都考虑潜在的负面结果,并与利益相关者就此合作,那么你将更有可能避免这些负面结果。

识别潜在危害

在我们的尼日利亚项目中,存在多种可能造成伤害的方式。以下是一些主要的方面:

  • 隐私与安全:短信包含个人身份信息和人们的健康状况信息,两者都是敏感信息和个人信息,需要保密并安全存储。
  • 过度信任AI:在AI辅助系统中,始终存在人们过度信任AI输出从而做出错误决定的可能性。在这个特定案例中,这可能导致AI对短信的错误分类,从而为母亲或孩子提供不正确或延迟的医疗建议。
  • 特定情境风险:我们还有一些更具体的可能造成伤害的情况,特别是与我们支持的一种语言相关,该语言与一个曾遭受迫害的特定民族密切相关。

对于你正在处理的任何问题,都会有一些你经常遇到的普遍问题,如隐私和安全;也会有一些普遍问题,如人类与AI决策之间的权衡;还会有一些针对你特定情况的非常具体的问题。作为一个外来者,你无法提前知道所有这些。这就是为什么我们需要持续与利益相关者合作的原因之一。在这个案例中,必须有该特定语言社区的成员,他们能让我们理解可能造成伤害的全部程度。如果不与这些特定的利益相关者沟通,我们无法完全理解这一点。

探索阶段结束时的关键问题

在框架的每个阶段结束时,你应该问自己和团队许多问题,以确保你具备进入下一阶段所需的条件。

在探索阶段结束时,你需要能够回答以下问题:

  • 具体问题:你正在解决的具体问题是什么?
  • 利益相关者:利益相关者是谁?
  • 数据:你是否能够获取或收集到必要的数据?
  • AI价值:人工智能能否增加价值?如果能,在哪里以及如何增加?
  • 不伤害原则:“不伤害原则”在此如何体现?

案例回顾:公共卫生项目

在我们一直研究的公共卫生示例中:

  • 具体问题:医疗服务提供者需要通过调查直接与社区中的母亲沟通,以监测她们及其婴儿的健康状况。为此,他们需要能够快速处理大量涌入的、包含多种语言的短信,包括调查回复和来自社区的其他相关短信。
  • 利益相关者:包括联合国儿童基金会代表、发送调查的诊所医护人员、母亲及其孩子,以及受U报告系统支持的社区中的其他人。
  • 数据:我们能获取的数据包括发送到诊所的短信,以及分配给它们的类别或关键词。我们确定可以通过诊所工作人员的帮助进一步标注更多收到的短信,来扩展这个带标签的数据集。
  • AI价值:考虑到我们打算创建的带标签短信数据库,如果我们能开发一个系统来自动分类和优先处理收到的信息,人工智能就有可能增加价值。
  • 潜在危害:首先,短信包含个人可识别信息和人们的健康状况信息,需要保密并确保安全。此外,我们旨在设计的系统将提供AI对问题的回复,如果一个人错误地信任了AI,这可能导致较差的体验,并可能为母亲提供不正确的医疗信息。此外,我们还有许多针对这个特定用例和特定人群的危害示例。

何时进入下一阶段

如果你在未来探索一个项目时,发现对一些问题的答案仍不清楚,最好在探索阶段花更多时间。你可以花更多时间研究问题并与利益相关者沟通,直到你们共同认为可以进入下一阶段。

在我们的案例中,我们已经准备好进入项目的设计阶段。为了让大家了解这在现实中是什么样子,我想我们在探索阶段花了大约三到六个月的时间,只是为了弄清楚我们是否有条件继续推进,以及投入资源看看AI能否在此提供解决方案是否值得。我认为这可能是一个非常典型的时间线,甚至可能更长。

本节课中,我们一起学习了如何在探索阶段评估人工智能项目的价值潜力。我们分析了判断所需的数据基础、可行性考量,以及至关重要的“不伤害原则”与风险识别。最后,我们明确了结束探索阶段前必须回答的关键问题,并通过案例进行了回顾。

请加入下一节课,我们将一起探讨如何为医护人员设计自动分类和优先处理这些信息的系统。

015:设计阶段 🎨

在本节课中,我们将学习AI项目流程中的“设计阶段”。在成功完成探索阶段后,你已经明确了问题,并确认AI可能带来价值。现在,我们将进入设计阶段,学习如何构建解决方案的原型,同时处理数据隐私、安全以及用户体验设计等关键问题。


设计阶段概述

设计阶段是连接问题定义与具体实施的桥梁。在此阶段,你需要深入审视数据、测试模型,并规划如何保障数据隐私与安全,同时设计出符合用户需求的体验。

上一节我们介绍了探索阶段,本节中我们来看看如何将初步构想转化为具体的设计方案。


设计阶段的核心步骤

设计阶段主要包含三个核心步骤:解决方案原型设计、数据隐私与安全考量,以及用户体验设计。

以下是每个步骤的详细说明:

1. 解决方案原型设计

首先,你需要构建解决方案的原型。这包括更深入地分析数据,并测试一些初步的模型。

在之前的探索阶段,我们分析了数据并确定AI方案可能为项目增值。现在,在设计阶段,我们需要更深入地研究数据,以验证数据是否需要为特定用例进行清洗或准备。

以母婴健康项目为例,我们拥有的数据包含文本消息以及工作人员为这些消息分配的关键词或类别。在此阶段,我们着手确定训练数据中所需标签或类别的最少数量,并考虑哪些类别难以自动处理,哪些相对容易。

例如,识别消息的语言相对容易。事实上,语言识别是自然语言处理任务中较为简单的一类。其核心公式可以简化为:

语言识别 = 识别文本所属语种

另一方面,对消息内容进行分类可能非常困难。例如,尝试分类消息是否与孕产妇健康或其他问题相关,即使是这种简单的二元决策,准确率也不高,且准确率在不同语言间存在差异,这主要与特定语言的数据量有关。

在更详细地调查数据后,我们设计了一个模型和标注策略:让诊所工作人员为更多传入的消息进行标注,特别是在我们初始数据较少的特定主题和语言上。这将使我们能够将这些额外的标注用作新的训练数据,从而更快地更新模型并实现更多处理流程的自动化。

2. 数据隐私与安全考量

在处理涉及人员或财产信息的数据时,必须在项目的所有阶段慎重考虑如何处理数据,以确保其安全与私密性。未经明确许可,不应将任何个人数据用于特定用途。

无论你从事何种项目,都应默认采用隐私数据实践,确保所涉及数据的隐私性、安全性和个人尊严

在母婴健康项目中,数据集包含个人(特别是医疗健康方面)的敏感信息。因此,我们谨慎确保数据存储和处理的安全。例如,消息从未暴露给在其常规工作之外无权查看的人员。这意味着,项目团队(如Idibon公司)本身也无法以任何方式访问、查看或下载数据

这是一个很好的例子,说明我们在工业界的经验如何帮助应对医疗用例中的挑战。对于许多行业客户,由于敏感性和监管原因,我们同样无法查看他们正在处理的数据。因此,已经构建并经过第三方验证的防护措施,让我们更有信心能够尽力保护医疗社区的安全与隐私。

3. 用户体验设计

用户体验设计根据项目不同而差异很大。其目标是确保最终系统易于使用,并能有效解决问题。

对于母婴健康项目,最终用户是诊所的医护人员。因此,我们的目标是利用自动消息分类工具提高他们的工作效率。该项目的成功实施将使医护人员在减少处理传入短信工作量的同时,以更快的响应时间为患者提供更好的服务,并通过处理更多消息来帮助社区。


设计阶段的验证与迭代

完成设计阶段后,在进入下一阶段前,团队应共同回答一系列问题,以验证设计的可行性。

以下是需要回答的关键问题列表:

  • 关于数据:你将如何解决数据不平衡、偏见、隐私或其他相关问题?
  • 关于模型:你将实施何种模型?如何衡量其性能?
  • 关于问题解决:你的设计将如何成功解决在探索阶段定义的问题?
  • 关于用户交互:最终用户将如何与你的系统交互?

在回答这些问题时,你可能会发现遇到了未预见的挑战,例如数据问题、模型构建困难或用户体验设计缺陷。

在这种情况下,你可能需要返回探索阶段,从利益相关者那里获取更多信息,调查其他数据资源,甚至重新审视你试图解决的问题。


案例回顾:母婴健康项目设计决策

让我们回顾一下母婴健康项目的具体设计决策。

数据考量:涉及安全存储和处理个人信息。我们采用了已为行业客户设计的系统,确保无权限人员无法访问数据。

模型设计:我们采用了一个已在行业客户中部署过的模型版本。这让我们能够将大规模工业场景中积累的知识免费应用于此医疗场景。我们还采用了让现有诊所工作人员对传入短信进行额外标注的策略,以构建数据库,使模型在分类我们所关心的各种语言和类别时更加稳健。

系统价值:该系统通过让诊所医护人员处理更大量的短信并为患者提供更快的响应时间,来解决我们正在处理的问题。

用户交互:系统的用户(诊所工作人员)将收到关于新消息分类和优先级的自动更新。他们会审查相同的类别和优先级以确保准确性,并可以手动重新分配类别或优先级,以帮助模型的进一步改进。

当然,对于这个特定用例,我们略过了许多细节。设计阶段可能持续数月甚至数年,尤其是对于需要缓慢、慎重、仔细构建的复杂系统,以确保不违反“不伤害”原则。在你自己的项目中,你可能需要花费大量时间来验证你选择的AI模型和最终用户体验相关的设计决策。


总结与下一步

本节课中我们一起学习了AI项目流程中的设计阶段。我们了解了如何构建解决方案原型,深入探讨了数据隐私与安全的至关重要性,并学习了如何设计以用户为中心的体验。设计阶段是一个需要反复验证和迭代的过程,确保方案切实可行。

一旦你认为已经有了一个设计良好的解决方案,那么就可以准备进入实施阶段了。

在下一节课中,我们将一起探讨如何从设计阶段过渡到实施阶段。

016:实施阶段 🚀

在本节课中,我们将学习AI项目流程中的“实施阶段”。我们将了解如何将设计好的模型策略和系统投入生产环境,进行最终测试,并确保其性能与可用性达到要求。我们将通过一个尼日利亚孕产妇健康项目的具体案例,来理解实施阶段的关键步骤与考量。


在完成了数据审视、模型策略设计、标注方案制定、数据隐私安全规划以及用户体验设计之后,您便已准备就绪,可以开始实施您的系统了。

在这个阶段,您将通过运行模型的最终训练与测试,并将其部署到可扩展的生产环境中,为正式上线做好准备。我们将重点关注监控模型性能、理解潜在的失败模式等问题。这里的“生产”意味着,将您在设计阶段于测试环境中开发的模型,变得更加可用、可靠和健壮,使其成为生产系统的一部分,并可供最终用户应用程序使用。

当您准备将模型部署到生产环境并进行迭代与集成时,您将进入一个能够进行端到端测试的阶段。

这意味着需要审视系统中从一端到另一端的所有环节,包括数据吞吐量、模型监控与可靠性、系统更新以及用户体验


上一节我们介绍了实施阶段的总体目标,本节中我们来看看一个具体案例的实施过程。

对于之前描述的尼日利亚孕产妇健康项目,我们使用的模型最初是为行业应用开发的一个非常简单的单层模型。我们针对这个特定用例、可用的语言、元数据、指令和非结构化数据对其进行了重新训练。

在我们为该用例设计的系统中,有一项要求是标注工作必须由诊所的工作人员完成。

这主要有两个原因:一是他们具备专业知识,已经处理过这些信息;二是出于隐私考虑。我们不想仅仅为了更新机器学习模型,就雇佣额外的人员来查看受助者的个人健康信息。


考虑到这些医护人员的时间有限,这项工作的安排如下:对于语言检测等极少数任务,由于模型准确率很高,几乎以全自动方式完成。如果遇到模型无法识别的语言,工作人员可以快速手动重新分配。

在其他情况下,则由人工复核模型的预测结果,但重点放在模型不确定的预测上。

因此,我们会特别提出模型无法做出准确预测的用例,而不是直接给出模型预测结果,并确保在这些情况下仍然进行人工标注。这样,我们就避免了因过多不正确的模型预测而给输出结果带来偏差。


以下是完成实施阶段需要满足的两个核心条件,您需要能对这两个简单问题给出肯定的回答:

  1. 您的模型性能可以接受吗?
  2. 最终用户能够成功使用您的系统吗?

在实施阶段,您可能会发现模型性能或系统可用性存在问题,这时就需要返回设计阶段去解决这些问题。

在我们的案例中,经过数月的工作,我们开发了模型,将其与用户体验集成,并以诊所工作人员作为最终用户对整个系统进行了测试。

模型性能是可以接受的,并且我们能够证明模型性能在持续改进,进而持续提升诊所工作人员的整体处理量和响应速度,尽管他们仍然需要手动复核和分类一部分新收到的信息。至此,我们已准备就绪,可以上线并部署该系统了。

😊 实际上,这里讨论的项目只是众多可能的设计与实施方案中的一个例子。您特定的项目可能会涉及大量与技术挑战相关的问题。

例如系统正常运行时间、低延迟预测、模型重新训练时间等,以及许多其他关于现实世界AI应用的实际问题,这些问题通常不属于更偏理论或学术的AI课程或您可能习惯的实验内容。

因此,我们不会在此详细讨论这类问题,但我想强调它们确实存在。如果您有兴趣成为部署真实AI系统的一员,我强烈建议您也要了解和体验在规模化部署任何技术时会面临的各类问题。

在本课程中,您需要关注的重点是从探索阶段确定的问题定义,到项目评估,直至最终阶段的整体流程。在最后,您仍然应该能够根据最初设定的问题定义来评估您的项目。

这就是对您成果的评估,以及对使用并从您所创建系统中获益的用户体验的评估。


本节课总结

在本节课中,我们一起学习了AI项目流程中的“实施阶段”。我们了解了如何将模型部署到生产环境,进行端到端测试,并确保其满足性能和可用性标准。通过尼日利亚孕产妇健康项目的案例,我们看到了在实施过程中需要考虑的实际因素,如隐私保护、人机协作流程设计等。最后,我们明确了成功进入下一阶段的两个关键条件:可接受的模型性能和成功的用户体验。下一节课,我们将进入本项目的最后一个阶段——评估阶段。

017:评估阶段 📊

在本节课中,我们将学习AI项目框架的最后一个阶段——评估阶段。我们将探讨如何衡量项目的成功与否,如何与利益相关者沟通结果,并通过一个实际案例理解即使技术成功,项目也可能因其他因素而失败。


概述

系统部署后,项目将进入评估阶段。在此阶段,你需要尝试衡量项目的成功程度,并将结果传达给所有相关利益相关者。

衡量项目的影响可能很棘手。但如果你一直遵循本框架,早在探索阶段,你就应该通过详细且具体的问题陈述,至少定性地定义了成功的模样。


定义成功

在之前介绍的案例项目中,问题陈述是:医疗保健提供者需要通过调查直接与社区中的母亲沟通,以监测她们及其孩子的健康状况。为此,他们需要能够快速处理大量涌入的多种语言的短信,包括调查回复和来自社区的其他无关信息。

正如之前强调的,对于任何AI项目,AI的技术组件只是解决方案的一部分。它是一个更庞大、可能更复杂的技术或产品中的一个组件。因此,AI模型本身的性能可能不是成功结果中最重要的方面,当然也不是唯一的方面。


案例评估:技术成功与用户体验失败

在我们的案例中,我们发现模型确实表现良好,并且随着诊所工作人员提供的新标记数据的增加而不断改进。这使得工作人员的工作效率得以提高,他们能够处理更多的患者沟通,且平均响应时间更短。

然而,随着项目的进行,诊所工作人员最终发现这对他们来说是一种糟糕的用户体验。他们感觉自己现在将更多时间花在了标记数据上,而不是照顾病人。

即使系统在信息自动分类方面有所改进,诊所工作人员仍需花费相同的时间来审查边缘案例、模型错误或低置信度的预测。他们无法直接体验到一些自动化任务,例如基于语言自动重新路由信息。因此,他们不太能直观感受到模型的改进或他们个人整体生产力的平均提升,尽管在他们的日常手动任务中感觉并非如此。

这种涉及人工标记和编辑数据的系统在AI应用中并不少见。可以说,我参与过的大多数AI系统都考虑到了持续获取人工标记以更新模型,其中大多数标记工作由专家(如诊所工作人员)完成。因此,这种特定的架构并不罕见,然而,这种类型的人机交互在这个特定案例中并不成功。


用户体验的重要性

这正强调了我们的观点:确保标注员(无论是外包标注员还是专家标注员)拥有良好的用户体验,与设计AI解决方案中纯粹的机器学习部分同等重要且复杂。

为了具体说明提供良好用户体验的复杂性,以下是一些人们尝试改善AI协作中用户体验的方法,这些方法旨在解决标注员可能因工作而感到沮丧或疲劳的问题:

  • 游戏化系统:例如,让标注员看到他们的改进如何提高模型性能,从而提升整体准确性的计数。然而,许多最初听起来不错的方法往往效果不佳。有大量证据表明,试图将系统游戏化本身会成为一种疲劳源,只有那些在排行榜或游戏化评分系统中名列前茅的人才会在工作中获得更好的体验。

因此,思考如何创建能够结合人类与机器智能的界面是非常困难的。


项目结果与反思

在我们的案例中,虽然我们实施的系统似乎成功解决了问题陈述中概述的一些问题,但最终对于关键利益相关者——医疗保健提供者自身——来说,用户体验很差。没有大量的标注工作,这个系统就不会特别有用。因此,我们最终终止了该项目,因为替代方案要么需要诊所工作人员投入更多时间和精力(这对他们来说是糟糕的体验),要么我们需要寻找外部方来标注数据,但在这个特定案例中,我们不愿意为了让更多人标注数据而牺牲隐私。

显然,我们对项目最终未能成功感到失望,不是为我们自己,而是为我们试图支持的社区。然而,我们在此过程中吸取了宝贵的教训。

例如,我们了解到这类系统如何在医疗保健的某些应用中提高效率,但我们也突显了一个事实:在更广泛地推广此类系统之前,需要解决重要的用户体验挑战。


后续发展与原则坚持

自我们完成这个项目以来的八年里,实际上还有其他一些尝试将AI整合到通过U-report系统半自动化管理医疗保健的案例。例如,我十分尊敬的“无国界译者”组织进行了一次尝试,这是一个你可以查看的开源解决方案,他们也遇到了一些相同的问题,即无法充分向医护人员传达他们所做的改进。就在最近,在我们失败的尝试八年之后,我终于看到了一些来自自然语言处理研究人员的早期研究论文,他们正在与联合国儿童基金会和U-report合作,似乎已经解决了问题——前提是有一个良好的用户体验。

但我认为,即使是这些研究人员也不会宣称这个问题已经最终解决。归根结底,我认为这对于任何思考“AI向善”项目的人来说都是一个非常好的用例:你可能做对了一切,但最终仍然没有产生成功的影响。 正如我之前所说,大多数社会公益项目会失败,大多数AI项目也会失败,将它们结合起来并不会产生魔力,反而会让事情变得更难。

希望这也是一个很好的例子,说明了为什么“不伤害”原则如此重要。如果我们当时在那个原则上妥协,比如在隐私方面,那么最终我们所做的就是在没有长期利益的情况下损害了人们的隐私。如果我们采用的解决方案在开始时标注员的准确性实际上较低,那么我们就在标注员的工作、临床医生的工作以及患者的健康方面都做出了妥协,以换取一个可能更积极的未来结果——而这个结果从未发生。

因此,你需要记住,即使规划良好,并且有强烈信号表明你的解决方案直到最后都在有效工作,你也不能在依赖你所构建系统的任何人的健康和安全方面妥协。


其他领域的挑战与启示

我想分享其他一些领域的例子,在这些领域,AI似乎显然可以提供帮助,例如医疗保健和公共卫生,但当我们尝试构建系统时,并不清楚我们能否在不造成伤害的情况下推广这些系统,或者它们最终是否会对利益相关者产生积极影响。

我认为COVID-19是一个很好的例子。在COVID-19之前,有相当多的研究表明,AI在通过CT扫描、X光和其他医学影像识别某些疾病方面可能有用。因此,在COVID-19大流行期间,一些研究小组自然开始研究通过医学影像(如胸部X光、CT扫描等)来诊断COVID-19。其中一些小组发表了论文,并根据结果表明基于胸部影像有可能提供准确的COVID诊断,从而宣布他们的项目成功。

然而,相对廉价且有效的COVID鼻拭子检测在大流行早期就已广泛普及。因此,几乎没有(如果有的话)实际需要使用更昂贵、更耗时的胸部影像来诊断COVID。此外,从未明确的是,在少量X光和CT上进行的离线测试,当推广到世界各地,面对更多样化的X光机、人群和患者成像体位时,是否仍能保持准确性和可扩展性。因此,尽管构建这些COVID-19影像检测系统的人是善意的,但最终没有一个对COVID诊断产生影响。


保持积极与务实

我意识到,我首先介绍了一个失败的项目,这在你可能上过的任何AI课程中都从未见过。但我认为这是一个重要的教训:你着手进行的任何AI项目,失败的可能性都大于成功。 因此,这也有积极的一面:如果你专注于“AI向善”,你不妨瞄准那些潜在收益极高的领域,因为在你成功的时候,可以积极影响最多的人。

就像我说的,虽然我们的孕产妇健康案例没有成功,但它后来为现在看起来更成功的、能够通过短信帮助孕产妇健康的系统提供了信息。这与我过去的一些其他案例类似。例如,我在2011年曾致力于大规模疾病暴发检测。我们当时对这些技术进行了很长时间的迭代,但那时我们未能赶在疫情暴发之前。然而,我合作过的同一家公司后来成为最早识别出COVID-19的机构之一。这再次是在我们首次尝试某事但未成功的八年之后。当时我们没有伤害到我们意识到的人,我们强调了像疫情监测这样的监控可能伤害人们的方式,这为后来非常重要的COVID早期检测提供了信息,并在更大范围内帮助影响了全球政策。

在思考“AI向善”项目时,请保持积极和务实。回报可能需要比你最初预期的更长的时间,但大多数AI项目都是如此。因此,当你瞄准更大的目标时,财务回报之外的收益也会大得多。


确定后续步骤

当涉及到为你自己的项目确定后续步骤时,在评估结果后,你可能会意识到需要回到实施阶段,调整你的模型或改进用户体验。或者你可能发现设计中存在问题,需要回到设计阶段,开发系统的新版本。

也有可能你会发现无法提供有意义的影响,因此需要一路返回到探索阶段,调查你最初着手解决的问题的其他细节或角度,甚至可能完全转向处理一个新问题。

在我们这里强调的、致力于为尼日利亚孕产妇健康提供更好支持的项目案例中,我们考虑的后续步骤包括如何改进用户体验,使诊所工作人员能更直接地看到系统的好处。我们评估了在时间和项目投入方面对诊所工作人员要求的潜在权衡,并确定虽然可能存在一条路径,但造成更差用户体验或对患者响应时间更长的风险是明显存在的,因此我们没有继续这个项目。

然而,十年后,U-report系统已在全球数十个国家部署,并通过借鉴我们和其他类似项目的经验教训,实现了真正的改进。现在,它确实开始包含各种AI工具,看起来可能开始支持诊所工作人员,进而支持他们所服务的社区。


总结

本节课结束了关于“AI向善”项目框架的介绍,我们走过了探索、设计、实施和评估项目的四个步骤。你将把这个框架应用到本课程中呈现的案例研究中。随着每个新案例研究,你将从广泛的“AI向善”项目中获得关于细微差别和挑战的新视角。

我想用另一个项目聚焦来结束本周的材料,这次来自Iva Gumnishka,她是“Humans in the Loop”公司的创始人兼CEO,该公司专注于赋能受危机影响的社区,在全球AI项目中从事重要工作。Iva将重点介绍每当你在工作中涉及来自受危机影响社区的协作者时需要牢记的事项。

018:构建AI伦理供应链 👥➡️🤖

在本节课中,我们将学习如何为人工智能系统构建一个道德的供应链。我们将探讨人类在AI开发周期中的关键作用,以及如何通过包容性和公平的实践来确保AI系统的多样性与公正性。


大家好,我是伊娃,是社会企业“Humans in the loop”的创始人兼首席执行官。

我们是一家为AI系统提供数据和人类输入的道德供应商,我们帮助公司、学术机构和政府为其AI系统获取、收集数据,并整合人类的输入与反馈。

我们致力于多个与AI相关的项目,涵盖地理空间、汽车、医疗、工业、农业和零售等应用场景。

我们数据集的一些应用包括:用于检测海岸垃圾和可回收材料的标记垃圾数据集;用于训练AI驱动机器人手术的数千个标记手术帧;以及为保险公司自动化理赔流程而检测车辆损伤的数据集。

除了收集和标注数据集,我们的人类操作员还参与了实时验证与批准工作。在所有项目中,我们的参与对于将人类对数据的理解和解释传递给AI系统是必要的。

否则,计算机视觉模型如何知道外科医生正在进行所谓的“抽吸”操作,或者汽车上的损伤应被归类为“划痕”?


人类参与的重要性与伦理考量

上一节我们介绍了人类在数据标注中的角色,本节中我们来看看为何这种参与至关重要。

人类输入和反馈对于训练可信赖的AI系统至关重要。而伦理和多样性是贯穿整个过程都应考虑的关键因素。

否则,模型可能会学习到有偏见的知识。例如,模型可能只学会识别进行手术的白人手掌,或者只能分析美国典型的车辆损伤类型,这最终可能伤害许多终端用户。

其他潜在的偏见也可能发生:如果AI模型学会将穿手术服的男性归类为医生,而将穿手术服的女性归类为护士;或者模型在检测一种肤色上的皮肤癌时准确率远高于另一种肤色。




AI开发周期中的人类介入点

那么,这个过程是怎样的?我们又在何时介入呢?

在整个AI训练和部署周期中,即所谓的机器学习运维周期或MLOps周期,始终需要人类的参与。

以下是人类介入的几个关键阶段:

  • 训练阶段:当你训练模型时,需要收集和标注训练数据。
  • 测试阶段:测试模型时,可能需要人类反馈来强化期望的行为。
  • 部署阶段:系统部署后,人类可能需要参与实时监控和处理警报。
  • 部署后阶段:你可能需要审查模型的输出并审计其性能。

这些都是全球各地的人们可以参与的领域,他们贡献自己对数据的理解和道德判断。这项工作很多是手动的,但也要求操作员在特定领域发展专业知识并运用判断力。


创造包容性的就业机会

上一节我们了解了人类在技术流程中的作用,本节我们来看看这种工作如何与社会价值结合。

任何人都可以从事这项工作。仅仅因为你是人类,你就已经具备为AI标注和解释数据的资格,你独特的观点对于使AI系统更加多样化很有价值。

我们从中看到了为弱势群体创造就业机会的巨大潜力。更具体地说,我们专注于那些受世界各地武装冲突影响而流离失所的人们。

迄今为止,我们已为中东、欧洲和非洲的1000多人提供了就业。他们的参与有助于消除AI系统中的西方中心主义偏见,并融入不同的观点。

例如,在收集和标注食物图像时,我们的工作者能带来对面包外观或不同菜肴名称的多种理解。


此外,我们确保他们因其重要工作而获得有尊严的报酬。通过这种方式,我们保证了AI系统的创建不会建立在剥削人类劳动力的基础上(即所谓的“血汗工厂”)。

通过我们的社会企业,我们正在对弱势群体的生活产生影响(通过连接他们与在线远程工作),同时也对AI系统产生影响(通过确保它们能够获取多样化且符合道德来源的数据和人类输入)。


构建道德供应链的三大准则

当你开始自己的“AI向善”项目时,请记住考虑以下三点:

以下是构建道德供应链的三个核心准则:

  1. 贯穿全程的人类参与:你是否在整个AI模型的训练和部署周期中融入了人类输入和反馈?
  2. 多样化的参与者:你是否使用了多样化的人类群体来提供这些输入?
  3. 有尊严的报酬:你是否确保他们因其工作获得了有尊严的报酬?

遵循这三条准则,你将确保为你的AI模型创建一个道德的供应链。祝你好运!


本节课总结:本节课我们一起学习了构建AI伦理供应链的重要性。我们认识到人类在AI开发周期中不可或缺的作用,包括数据标注、反馈提供和系统监控。我们探讨了确保参与者的多样性和给予其公平报酬对于消除偏见、创建更公正、更可信AI系统的关键意义。记住,道德的AI始于道德的供应链。

020:空气污染的来源与危害 🌫️

在本节课中,我们将学习空气污染的主要来源、其对公共健康的严重危害,并重点了解最常见的空气污染物——PM2.5。


正如上一节视频所述,污染是一个重大的公共卫生问题。每年有数百万人因长期暴露在污染的空气中而死亡。

事实上,每年因空气污染导致的过早死亡人数,与新冠疫情高峰期间因COVID-19导致的年死亡人数相当。

空气污染可能来自许多不同的来源,既有人为来源,也有自然来源。

例如,如果你像我一样在加利福尼亚,可能会经历野火造成的空气污染;在世界其他地区,则可能遭遇沙尘暴或活火山喷发。然而,大多数空气污染,特别是长期持续的空气污染,都源于人类活动。而在人类活动中,最主要的污染源是燃烧化石燃料。

本节视频,我们将具体了解什么是空气污染,以及它对公共健康构成的危险。


如果你曾见过工厂或炼油厂的烟囱冒出浓烟,闻过道路上车辆或路过火堆排放的废气,那么你就对空气污染有了亲身体验。这是我们许多人日常都会经历的事情。

与空气污染相关的健康问题并非新问题,事实上,它已存在数千年之久。

近期最大的不同在于,过去的空气污染主要是一种室内现象,主要由家庭内用火烹饪和取暖产生。事实上,在那些使用明火烹饪或取暖且通风不良的地方,空气污染仍然是一个严重问题。

关于这种长期存在的空气污染形式,一个令人鼓舞的消息是,随着更好的技术和信息让更多人了解如何更安全地烹饪和取暖,这种情况正在减少。

然而,根据《柳叶刀》杂志2022年发表的一篇文章,所谓的现代环境空气污染正在加剧。

现代环境空气污染指的是室外空气污染,它由大规模影响大量人口的人类活动引起。例如,在城市中,道路上数十万辆汽车以及工厂和发电厂都在向空气中排放烟雾,这些都是现代环境空气污染的例子。

尽管一些城市和国家通过政策和更好的技术,在区域范围内减少了空气污染,但在全球范围内,随着我们对商品、燃料和电力的需求增长,以及越来越多的人生活在城市化社区中,污染仍在持续加剧。

因此,如今因空气污染导致的死亡率,比仅仅20年前高出50%。


最常见的空气污染物由人类活动产生,其中包括被称为颗粒物的物质(指非常微小的物质颗粒,通常只有几微米大小),以及其他如臭氧、铅、氮氧化物、硫氧化物和碳氧化物等。

在这些污染物中,最常见且在全球范围内导致最多死亡的是颗粒物,特别是直径小于2.5微米的颗粒物,简称PM2.5

如果你不熟悉“微米”这个计量单位,可以通过以下方式直观理解。

取一根你的头发,一根典型的人类头发直径约为50至70微米。

因此,如果将2.5微米的颗粒首尾相连,需要20到30个这样的颗粒才能跨越一根人类头发的直径。可见这些颗粒极其微小。

正是由于其极其微小,当你吸入它们时,它们可以进入肺部最深处,甚至穿过肺部进入你的血液系统。这就是它们如此危险的原因:吸入后,它们会深入你的体内并常常滞留其中。这些细颗粒物可能由灰烬、灰尘、金属或其他种类的毒素组成。

当你长期吸入过量的PM2.5时,会导致肺部和心血管系统出现问题,引发慢性肺部疾病、肺癌和心血管疾病。

因此,虽然需要记住空气污染包含多种不同类型的污染物,但在本课程接下来的部分,我们将主要关注PM2.5,因为它是影响公共健康的最常见污染物。幸运的是,对于这个应用场景而言,PM2.5也是当前技术下相对更容易检测的污染物之一。


由人类活动引起的空气污染正在加剧。尽管我们深知其危险性和来源,但我们距离建立减缓这一问题所需的政策和实践还相差甚远。

为这些政策提供信息支持的最重要步骤之一,是部署传感器网络。这使我们能够测量当前存在的污染水平,并告知公民他们所面临的真实且紧迫的风险。

在本周的实验环节中,你将使用空气质量传感器数据。接下来我们将进入该部分。

请与我一起观看下一个视频,了解如何测量空气质量。


本节课总结

本节课我们一起学习了空气污染的主要人为和自然来源,认识到其作为全球性公共卫生危机的严重性。我们重点剖析了最常见的致命污染物——PM2.5(直径小于2.5微米的颗粒物),了解了其微观尺寸、侵入人体的途径以及对心肺健康造成的长期危害。最后,我们指出了通过传感器网络监测污染是制定有效应对政策的关键第一步。

021:空气质量测量 🌍📊

在本节课中,我们将学习空气质量测量的目的、方法以及如何通过现有工具(如Purple Air网站)获取和理解实时空气质量数据。我们还将了解空气质量指数(AQI)和PM2.5等核心概念,为后续在波哥大的实际数据分析项目打下基础。


空气质量测量的目的

在世界许多地方,公共和私人的个人与机构都在测量污染物水平,以便对空气质量有更量化的理解。这些测量的目标既有长期的,也有短期的。

在短期,测量有助于告知公众其特定区域的污染物何时上升到危险水平,或揭示一天中或一周内哪些时段更适合安全外出。

在长期,监测和污染数据帮助我们量化问题的严重程度,识别不同区域的趋势,并为最终有助于减少空气中污染物含量的政策和实践提供信息。

实时空气质量数据来源

现在有各种网站和应用程序发布实时的空气质量数据。如果你附近有传感器,你很可能可以立即看到室外空气质量的好坏。

其中一个网站是Purple Air。你可以在世界地图上导航并放大,查看全球数千个地点的传感器数据。

生成这些测量数据的传感器体积小、成本相对较低,仅测量颗粒物、温度、压力和湿度。这些传感器由希望了解所在地空气质量的个人购买,所有传感器的数据都被共享,以便世界上的任何人都能看到测量结果。

理解空气质量指数(AQI)

这里我们看到的是美国西部的加利福尼亚州,显示的数据是所谓的“空气质量指数”(AQI)的估计值。

这是一个综合指数,试图用一个数字来表示空气的好坏。

AQI低于50 被认为是良好的,而 AQI超过150 则被认为是不健康的,这意味着如果可能,你应该完全避免户外活动或佩戴口罩。

这些都是实时测量数据,因此你可以快速了解在特定时间、特定地点的空气污染程度。

关注PM2.5水平

与空气质量指数相关,我也可以选择“原始PM2.5”来直接查看PM2.5水平。

现在显示的数据是以 微克/立方米 为单位的PM2.5测量值。在美国,环境保护署已确定,健康的PM2.5暴露水平是长期平均低于 12微克/立方米

这意味着,与你呼吸的空气中PM2.5含量相比,某些日子或某些地点的含量可能更高或更低。在很长一段时间内,比如一年,你希望这个平均值低于12。

在这张地图上,你可以快速看到,虽然许多地方显示空气质量良好,但在某些区域,PM2.5水平相当高。例如,在我所在的旧金山,目前的水平看起来就不太好。

深入查看历史数据

在这张地图上,你可以点击一个数据点,查看该地点过去测量的更多信息,包括不同时间段的平均值。

你还可以看到该地点的测量历史记录。在上方,我可以切换到更长的平均周期,比如一日平均值。在这种情况下,我可以看到更长的历史时间跨度,回顾过去一年左右的数据。

如果你想自己对污染水平随时间的变化进行分析,也可以下载任何这些传感器的数据。

我可以缩小地图,查看整个北美洲或整个世界的地图。如果你好奇,可以看看你居住地附近是否有传感器,它们可以让你了解你所在区域的空气质量。

关于数据可靠性的重要说明

需要注意的是,与我们在波哥大的例子不同,这些传感器不一定是由具备专业知识的人员或在战略位置安装的。大量传感器可能安装在烟囱附近或其他可能产生错误高值或易出错信号的地方。


总结与下节预告

本节课中,我们一起学习了空气质量测量的目的,如何通过Purple Air等平台获取和解读实时空气质量数据,理解了AQI和PM2.5的核心概念及其健康标准,并认识了现有公民科学数据的潜在局限性。

接下来,我们将前往哥伦比亚的波哥大。该市部署了一个空气污染传感器网络,你的任务将是直接使用这些数据,构建类似于我们刚才在Purple Air网站上看到的空气质量地图产品。请跟随我进入下一个视频,我们将更仔细地研究波哥大的空气质量。

022:波哥大空气质量监测网络 (RMCAB) 🏙️🌫️

在本节课中,我们将学习波哥大空气质量监测网络(RMCAB)。我们将了解该网络如何运作,其使用的传感器类型,以及如何利用其数据构建一个改进的空气质量地图应用。课程最后,我们将明确本项目的具体目标。

概述

正如我们之前探索的空气质量在线地图所示,获取特定区域的实时污染测量数据和历史数据非常有用。这有助于我们了解空气是否安全可呼吸,以及污染趋势如何随时间变化。在本课程的后续项目中,你将参与一个测量波哥大空气质量的项目。

波哥大与空气质量挑战

波哥大是哥伦比亚的首都,位于南美洲北端。它拥有超过800万人口,是南美洲最大的城市之一,规模与纽约市或班加罗尔相当。与任何大城市一样,波哥大有道路上的汽车和卡车,以及为满足人口需求而存在的大量工业和发电厂。所有这些都导致了空气污染和整个城市空气质量的变化。

RMCAB监测网络

自1997年起,波哥大当地政府一直在全市范围内开发一个传感器网络。该网络目前在全市20个地点定期测量颗粒物、臭氧、硫氧化物、氮氧化物、碳氧化物以及大气状况。

这些传感器并非像上一视频中提到的Purple Air网络那样的小型廉价传感器。它们是科学级传感器,整套设备大约有一辆大型送货卡车那么大。与Purple Air网络不同,这20个传感器被放置在非常具有战略意义的位置。

因此,如果你想把这里学到的方法应用到像Purple Air这样的网络(也许在你的社区),考虑这一点会很有趣。这20个传感器比许多人在Purple Air网络上使用的更廉价的传感器可靠得多,并且部署在更具战略意义的位置。在Purple Air网络中,传感器可能更集中在特定的居民区,并且可能部署不当。例如,我经常收到我家附近空气质量警报,因为有人将Purple Air传感器部署在他们的厨房里。虽然烹饪是空气污染的一大来源,但这并非Purple Air网络的初衷。

因此,如果你考虑将波哥大学到的模型和方法应用于其他类型的传感器数据,你需要考虑网络的分布方式及其部署方式可能对你特定系统成功的影响。

城市目标与你的任务

该城市的长期目标是根据联合国特定的可持续发展目标,管理和降低全市的空气污染水平。

具体而言,这些目标是大幅减少因空气、水和土壤中的有害化学物质导致的死亡和疾病人数,并减少城市对环境的人均不利影响,包括特别关注空气质量。考虑到这些目标,到2030年,波哥大市的目标是让城市70%的区域达到世界卫生组织推荐的空气质量健康限值,高于2015年测量的仅25%。

短期来看,该城市旨在为其公民提供空气污染物的实时测量数据,以及未来48小时的空气质量预报。他们将数据发布在网站上,供人们搜索或下载。这就是你发挥作用的地方。

现在,让我们仔细看看部署在波哥大各地的传感器网络记录的空气质量测量数据。

现有应用与改进方向

该城市已经开发了一个地图和应用程序。你可以看到整个城市每个传感器站的位置。点击某个特定站点,你可以看到该站点的照片以及过去一周记录的一些历史数据。你还可以看到一个叠加或插值地图,它提供了站点之间空气质量的估计值。

在接下来的实验中,你将组装一个类似的应用,并专注于对现有系统的两项特别改进,这两项都与估计测量值有关。

以下是两项核心改进任务:

  1. 传感器数据填补:传感器有时会意外宕机。这意味着有时某个传感器没有可用的测量数据。当地图上的某个站点显示“维护中”图标时,就表示该站点的PM2.5传感器离线了。因此,你将致力于开发一个功能,即使传感器暂时离线,也能估计给定站点的PM2.5值。
  2. 改进的插值地图:全市有20个监测站。你希望更好地提供监测站之间(而不仅仅是监测站本身)的空气污染估计值。鉴于PM2.5对人口健康的巨大影响,我们将特别关注它,但同样的方法也可应用于其他类型的污染物。

项目目标总结

简而言之,你的目标是提供一个产品,让波哥大市民能够看到改进的、全时段、全市所有位置的PM2.5浓度实时估计值。

因此,你将创建一个基于你估计值的地图产品,该产品能够:

  • 提供PM2.5读数,即使特定传感器宕机。
  • 在传感器之间做出更准确和插值的空气质量估计。

在开始之前,我想向你介绍这个项目的一些实际利益相关者。为了了解波哥大空气质量工作的所有相关细节,我们拜访了主要利益相关者,即波哥大市环境秘书处办公室。正是这些人运营着空气质量监测网络,并制定政策以改善城市空气质量。

总结

本节课中,我们一起学习了波哥大空气质量监测网络(RMCAB)的背景、目标和挑战。我们了解到这是一个由20个科学级传感器组成的战略网络,旨在监测和改善城市空气质量。你的项目任务是构建一个改进的应用,重点实现传感器宕机时的数据填补和更精确的空间插值,以提供更全面、可靠的PM2.5浓度信息。

请观看下一个视频,以了解更多关于他们测量和改善波哥大空气质量的努力,然后我们将进入本项目的探索阶段。

023:AI与公共卫生、气候变化、灾难管理 🌍

概述

在本节课中,我们将学习波哥大地区环境秘书处如何利用人工智能技术应对空气污染问题。我们将了解其背景、核心策略以及技术应用的具体细节。


背景介绍

波哥大是哥伦比亚的首都。该地区面临严重的空气污染挑战。波哥大地区环境秘书处负责应对这一环境问题。

上一节我们介绍了课程的整体背景,本节中我们来看看波哥大面临的具体环境挑战。


核心策略与技术应用

环境秘书处制定了一系列策略来监测和改善空气质量。其核心方法是利用数据驱动的方法进行决策。

以下是应对空气污染的几个关键措施:

  • 部署传感器网络:在全市范围内部署空气质量监测传感器。
  • 数据收集与分析:传感器实时收集空气中的污染物数据(如PM2.5、PM10、NO2)。这些数据被传输到中央处理系统。
  • 人工智能模型预测:利用历史数据和实时数据训练AI模型。模型可以预测未来几小时或几天的污染趋势。公式可以表示为:污染水平 = f(历史数据, 气象数据, 交通流量, ...)
  • 发布预警与制定政策:基于预测结果,秘书处可以向公众发布健康预警。同时,为交通管制、工业排放限制等政策提供数据支持。

总结

本节课中我们一起学习了波哥大地区环境秘书处应对空气污染的案例。我们了解到,通过部署传感器、收集数据并应用AI模型进行预测分析,可以有效监测空气质量并为公共决策提供科学依据。这展示了人工智能在环境保护和公共卫生领域的实际应用价值。

024:空气质量项目探索阶段 🕵️

在本节课中,我们将学习AI项目流程中的“探索阶段”。我们将以波哥大空气质量项目为例,了解如何与利益相关者沟通、明确问题定义、评估AI的适用性,并初步查看可用数据。

在上一节视频中,我们对需要解决的问题以及成功的成果有了初步了解。现在,我们准备进入波哥大空气质量项目的探索阶段。

与利益相关者沟通

在项目的探索阶段,你的目标是与利益相关者进行沟通,以确保你理解他们的需求。

你需要清晰地识别将要处理的问题,并确定AI是否确实能作为潜在解决方案的一部分提供价值。

对于与利益相关者沟通这一步,在这个场景中,你需要花一些时间与城市代表交流,以确保你清楚地理解对他们而言,成功的成果是什么。

你可能还需要花时间与将成为你所创建产品的最终用户的市民们进行沟通。

与在其他地方实施过类似解决方案的人员交流也是一个好主意,以便更好地理解最佳实践和需要避免的事项。

在探索阶段与不同的利益相关者群体沟通时,你还会了解到其他应该与之交谈的利益相关者。

明确问题陈述

当涉及到你的问题陈述时,正如我在上一个视频中提到的,该市希望在其空气质量地图应用中纳入两个关键功能。

首先,他们希望即使在某个特定的PM2.5传感器离线时,也能提供PM2.5水平的估计值。其次,他们希望改进传感器之间区域的估计值。

在这种情况下,你的问题定义可以是:与波哥大市合作的公共卫生专业人员需要能够提供全市空气质量的实时估计,以便市民能够意识到因空气质量差而带来的任何健康风险,并相应地规划他们的户外活动。

请注意,在这个问题陈述中,你完全没有描述技术。相反,你关注的是所涉及的个人以及他们需要解决的问题。

通过这样构建问题,可以清楚地表明部分利益相关者是谁、成功的成果会是什么样子,以及你不打算做什么。我们并非试图或能够完全解决哥伦比亚的空气质量问题,我们只是在改善哥伦比亚一个非常小区域(即波哥大这些传感器周围的区域)的传感器测量,这反过来可以帮助我们在空气质量方面推动政策和实践朝着正确的方向发展。

评估AI的价值与数据可用性

最后,你需要确定AI是否能为这个项目增加价值。如果你自己不是AI专家,这可能涉及与一些过去在实际AI环境中工作过的人交谈,以了解AI是否曾用于类似项目,以及潜在的风险和注意事项。

这一步还将涉及确定成功项目所需且可用的数据类型。

在这种情况下,提供给你的数据看起来是这样的。

你会注意到这里有几列数据,在这个例子中,每一列都对应一种特定的污染物。你可以看到这里有PM10(较大的颗粒物)、我们关注的PM2.5,以及其他污染物,如氮氧化物和一氧化碳。

你还有一个标识符,用于标记每个测量值来自哪个监测站,以及测量的日期和时间。

因此,你可以从日期和时间列中看到,这些是历史数据,来自2021年。

在日期和时间列中,第一个日期是2021年1月1日,最后一个日期是同年的12月,所以大约是一年的数据

你还可以看到,新的数据点是每小时记录的,因此你将拥有大约一年时间跨度的每小时数据

最终,对于这个项目,你希望构建一个能够实时接收数据并进行预测的系统。但拥有这样的历史数据集,可以让你在开始处理当前数据之前,考虑解决方案的各种实现方式并进行测试。

如果你查看其他一些列的详细信息,可以看到有效数据点的数量(或此处显示的计数)对于每一列是不同的,这应该是你判断数据集中数据缺失程度的第一个指标。

你也可以向下滚动数据,开始看到一些数据缺失的地方。

例如,在这里,你可以看到PM2.5传感器数据看起来是离线的。

但你可以看到,在那个监测站,我们记录了其他一些污染物的测量值。这很重要,因为这将转化为我们可以用来构建模型的特征,以创建关于PM2.5数据应该是什么样子的更好估计。

初步数据探索

现在你对数据的样子有了一点概念,这几乎是任何项目中你应该做的第一件事:查看数据

无论你是AI专业人士还是灾难响应专业人士,我们首先做的很多事情就是查看数据表格,以了解数据的分布、缺失数据、潜在异常值、数据的多样性,以及我们能解释和不能解释的内容。

因此,查看数据表格是正确的第一步。当我们想要开始在这些数据之上构建更具扩展性的系统时,我们会转向代码环境。

在这里,我们将在Jupyter notebook环境中使用Python处理相同的数据。如果你从未使用过Python或Jupyter,不用担心,我将在下一个视频中指导你如何操作实验环境。

总结

在本节课中,我们一起学习了AI项目“探索阶段”的关键步骤。我们了解了如何通过与利益相关者沟通来明确需求,如何清晰地定义问题陈述,以及如何初步评估AI的适用性和数据基础。这些步骤为后续的方案设计和实施奠定了重要基础。

025:Jupyter Notebook实验室简介 🧪

在本节课中,我们将学习如何开始第一个实验,并演示你将使用的Jupyter Notebook环境的一些基本功能。

概述

Jupyter Notebook是一个开源的Web应用程序,广泛用于原型设计和编程。它允许你创建和共享包含代码、可视化和文本的文档。本节将引导你熟悉这个环境的基本操作。

启动实验室

如果你想跟随操作,可以在另一个浏览器标签页中打开实验室。如果你已经熟悉Jupyter Notebook环境,可以跳过本节,直接观看下一个视频。

在本课程中,你可以在“Week 2”部分找到这个特定的实验室,标题为“Lab: Air Quality Exp the Data”。点击“Launch Notebook”后,实验室将在新的浏览器标签页中打开。

Jupyter Notebook环境介绍

Jupyter Notebook是一种非常流行的编程应用原型设计格式。从现在开始,我将这个环境简称为“你的笔记本”。

你可以向下滚动,快速浏览笔记本的内容。你会注意到,笔记本中包含文本块和代码块。通常,文本部分会包含代码功能的说明或描述。当你运行每个代码单元时,你会看到代码的输出结果。

通常,笔记本会与一些其他文件(如数据集和其他代码文件)存放在同一个文件夹中。你可以通过点击左上角的Jupyter图标来查看文件夹中的其他内容。

文件夹内容

在这个案例中,我们有一个包含数据的文件夹。

以下是你将在文件夹中看到的文件:

  • CSV文件:这个文件与我们上一个视频中看到的电子表格是同一个数据集。它现在以“逗号分隔值”格式显示,即CSV文件。
  • IPYNB文件:这个以.ipynb结尾的文件就是你正在查看的笔记本本身。
  • Python文件:在这个名为us.py的文件中,我们放置了一些你将在笔记本中使用的代码。

你不需要担心这里的代码内容。我展示它只是为了说明,我们将一些功能放在后台,以避免弄乱你的实际笔记本。

现在,我可以点击Jupyter图标,然后点击这个笔记本文件,返回到笔记本环境。

运行代码单元

这些笔记本的工作方式是,你需要从顶部开始,按顺序运行每个代码单元。

每个后续的代码单元都能够基于你在前一个单元中执行的操作进行构建。如果你熟悉编程但不熟悉笔记本,可以将其视为一个逐步执行应用程序的过程,而不是一次性全部运行。

运行代码单元的方法是:首先选中该单元,然后点击顶部的“运行”按钮。你也可以同时按下ShiftEnter键作为键盘快捷键来运行代码单元。

接下来,我将运行笔记本顶部的第一个代码单元。

导入Python包

这个单元现在正在导入我们在这个实验室中需要的一堆Python包。这是在Jupyter Notebook中运行Python程序时常见的第一步。第一步是导入你将需要的各种包。

你还可以看到,我们正在导入你刚才看到的那个us.py文件,以便也能使用该文件中的函数。就像我说的,这些代码本可以放在这个笔记本里,但这不是我们在这里查看或修改的内容,所以我们为了方便将其放入了另一个文件。

读取和处理数据

向下滚动,你可以看到我们接下来要做的是再次读取数据。

同样,我将通过选中该单元并点击运行按钮来运行这个单元。

这可能需要几秒钟才能运行完成。现在你可以看到它打印出了一些输出。

这段代码的功能是:通过第一行代码,我读取了我们在上一个视频的电子表格中看到的同一个CSV文件。

读取数据文件后,我们对导入的数据进行了一些修改,以便更容易地使用它。这里,我们只是将CSV文件中的日期时间转换为代码中更容易操作的日期时间格式。你还可以看到,我们预先标记了不同的PM值,并且因为本课程是用英语教学的,我们将“Ozzoone”自动翻译为“Ozone”。

通过下一行代码,我们打印出数据集的前五行,这只是查看数据是否成功读取的一种简单方法。

处理错误

现在,有可能在点击和运行代码的过程中,你不小心在代码中引入了拼写错误,即使是像添加一个额外的空格这样简单的事情,Python对此也非常敏感。

然后,当你尝试运行该单元时,你会收到这样的错误。

当Python抛出这样的错误时,它会尝试告诉你问题出在哪里。在这个案例中,它正确地指出这是一个“缩进错误”,这就是额外空格导致的问题。但如果你不熟悉Python,这些错误信息可能看起来有点令人困惑。

所以,如果你在某个时候看到错误,不用担心,这完全正常,可能只是意味着代码单元中某处有拼写错误。

你可以尝试找出错误发生的原因并进行纠正。或者,如果你无法找出原因并卡住了,你可以直接重置实验室。

要重置实验室,你需要点击顶部的“帮助”菜单,然后选择“获取最新版本”。这将使你返回到实验室的最新、干净的版本。

如果实验室确实有新版本,你可以在这里更新到新版本。但你也可以使用这个功能来刷新你的实验室,获得一个新的干净副本,这应该可以清除你在编辑代码时可能引入的任何错误。

就像我之前说的,我不会要求你从头开始编写任何代码,但在某些情况下,我会建议更改一两个参数,以查看一些不同的输出。所以,你不必认为编辑代码是完全禁止的,只需记住,如果你有拼写错误,可能会收到错误提示。

总结

本节课中,我们一起学习了Jupyter Notebook环境的基本操作,包括如何启动实验室、运行代码单元、导入必要的Python包、读取和处理数据,以及如何处理可能遇到的错误。掌握这些基础知识将帮助你在后续课程中顺利进行实验。

在下一个视频中,我将逐步讲解这个实验室的其余部分,在那里你将有机会探索数据,更清楚地了解你正在处理的内容。

026:空气质量数据探索与缺失数据可视化 📊

在本节课中,我们将一起学习波哥大空气质量项目数据探索笔记本的第一部分。我们将通过查看数据的汇总统计信息和可视化图表,来更好地理解数据集本身的特性,以及在进行数据分析时可能面临的挑战。


导入必要的包

首先,我们需要运行一个单元格来导入所有必要的包,这与我们在上一个笔记本开始时看到的一样。

import UTs

通过导入名为 UTs 的模块,我们导入了与笔记本在同一文件夹下的 UTs.py 文件中定义的所有功能。

你可以通过点击 Jupyter 界面顶部的图标并打开该文件,来查看 UTs.py 文件的内容。

我们为每个笔记本设置了这些实验,在 UTs 文件中定义了各种你将使用的函数。如果你已经是 Python 程序员,你可能会发现其中一些可视化工具和建模函数对你自己的项目很有用,请务必看一看。

回到笔记本,我们运行第一个单元格来导入包。


读取数据集

接下来,我将运行这个单元格来读取数据集。

role_underscore_the_score_dataator = pd.read_csv('your_data_file.csv')
print(f"数据集行数: {len(role_underscore_the_score_dataator)}")
print(role_underscore_the_score_dataator.head())

我将其读入一个名为 role_underscore_the_score_dataator 的变量中。同时,我还会打印出数据集中包含的行数,以及数据的前五行内容,以检查数据是否成功读入。

你可以看到,这与之前你在电子表格中查看的是同一个数据集,其中包含不同列的各种污染物数据,以及站点标识符和列出日期时间的时间戳。


检查缺失数据

在接下来的步骤中,这个命令会打印出每列中缺失的数据点数量。

print(role_underscore_the_score_dataator.isnull().sum())

这些数字中的每一个都让你了解每列中有多少缺失数据。你应该能看到,在一个大约有 160,000 行的数据集中,每列有 15,000 到 30,000 个缺失值,这意味着各列大约缺失了 10% 到 20% 的数据。这将是分析中的一个重要问题。

这意味着,大约有 10% 到 20% 的时间,各种传感器可能无法为它们试图检测的某种污染物生成读数。在下一个笔记本中,用估计值替换缺失值将是你需要应对的挑战之一。


查看数据分布(直方图)

当你运行下一个单元格时,你将看到一个特定站点的 PM2.5 值分布以直方图的形式绘制出来。

# 示例代码:绘制特定站点和污染物的直方图
plot_histogram(station='USM', pollutant='PM2.5')

像这样查看数据可以让你了解数值的分布情况。例如,我可以看到 USM 站点的 PM2.5 值范围大约在 0 到 70 之间,峰值大约在 5 左右。这是一个非常不均匀的分布,偏向于较低的值,这显然是一件好事,因为我们希望大多数时候 PM2.5 的值较低。

你可以使用这里的选项来选择不同的站点或不同的污染物,并调查每种污染物在每个站点的分布情况。

了解不同特征(在本例中是不同污染物和不同传感器站点)的数据分布情况非常重要。通过这种方式,你可以在考虑人工智能是否能为你的项目增加价值时,熟悉数据集的特征。


查看数据分布(箱线图)

当你运行下一个单元格时,你会为特定污染物(本例中是 PM2.5)生成另一种类型的图表,称为箱线图。

# 示例代码:绘制所有站点的PM2.5箱线图
plot_boxplot(pollutant='PM2.5')

现在,所有站点的情况会同时显示。X 轴(底部)是站点名称,Y 轴是 PM2.5 的值和范围。

这些箱线图的工作原理是:每个箱子中间的横线显示分布的中位数,阴影箱子的范围显示了围绕中位数的 50% 数据的范围。单个数据点也沿着垂直轴绘制在这里。

这个图本质上显示了你在直方图中看到的相同信息,只是方式略有不同。如果你想象自己从直方图上方俯视,那么你可以看到沿垂直轴覆盖的数值范围,并从不同的角度了解分布情况,包括数据的完整范围和任何异常值。

当我查看这里的数据时,有几件事让我注意到:在较高数值处数据非常稀疏。这对波哥大市及其市民来说是好事,PM2.5 高于 50 的情况相当罕见,高于 100 则非常罕见。

虽然这对空气质量来说是好事,但这确实意味着在空气污染最严重的时候,我们没有那么多数据点来进行训练。因此,这告诉我,当污染可能处于最危险水平时,我不期望我的机器学习模型在预测缺失值或预测站点之间的数值时能同样准确。我们稍后会在实验中讨论,当污染严重时,不准确的预测(无论是假阳性还是假阴性)可能会对现实世界的应用造成更大的危害。


创建散点图进行比较

笔记本中的下一个单元格允许你为任意两种污染物创建散点图,并比较它们之间的分布。

# 示例代码:绘制两种污染物的散点图
plot_scatter(pollutant_x='PM2.5', pollutant_y='PM10')

现在你可以看到,X 轴是一种污染物,Y 轴是另一种污染物。每个点显示了在特定时间和站点进行传感器测量时,这两种污染物的各自数值。

首先,我们可以查看 PM2.5 与 PM10 的对比图。毫不奇怪,两者之间存在很强的正相关性。

我建议你点击查看不同站点、不同污染物的散点图,看看哪些污染物之间存在相关性,直观感受它们之间可能的相关性强弱,以及是否存在负相关而非正相关的情况。

查看单个散点图、直方图以及其他类似的可视化图表,是所谓的“探索性数据分析”中非常常见的步骤。在这个阶段,你试图了解数据集的特征。


总结

在本节课中,我们一起学习了如何对波哥大空气质量数据集进行初步探索。我们完成了以下步骤:

  1. 导入必要的包并了解了辅助工具文件 UTs.py
  2. 读取数据集并检查了其基本结构和内容。
  3. 识别了缺失数据,发现各列约有 10%-20% 的数据缺失,这是后续分析需要解决的关键问题。
  4. 使用直方图查看了单个污染物在特定站点的分布,发现数据分布不均匀且偏向低值。
  5. 使用箱线图同时比较了所有站点某污染物的分布,直观看到了数据范围、中位数和异常值。
  6. 使用散点图探索了两种污染物之间的相关性,例如发现了 PM2.5 与 PM10 之间存在强正相关。

通过这些探索性数据分析步骤,我们熟悉了数据集的基本特性,认识到了数据缺失和分布不均等挑战,这为后续构建和评估机器学习模型(如下一个笔记本中将进行的缺失值估算)奠定了重要基础。请继续学习下一个视频,我们将完成本次数据探索实验。

027:空气质量数据探索与相关性分析 📊

在本节课中,我们将继续博加尔空气质量项目的探索性数据分析。我们将学习如何通过更多汇总统计量和数据可视化来深入理解数据集的特性,并确认数据是否足以支持项目目标。

上一节我们介绍了如何通过散点图和直方图初步探索数据。本节中,我们将进一步学习如何同时查看多个可视化图表,并量化分析变量间的相关性。

启动环境与数据准备

如果你刚刚打开实验环境,需要从顶部开始运行所有单元格,直到当前步骤。

如果你一直跟随操作并已运行了上方单元格,可以直接从这里开始。

多变量可视化网格图

查看单个散点图和直方图是了解数据集特性的好方法。有时,同时查看多个可视化图表会更有帮助。

运行下一个单元格后,你将看到一个网格图,它展示了所有污染物两两组合的散点图,以及每个污染物的分布直方图。

以下是该网格图的构成:

  • 网格的横轴和纵轴列出了数据集中的每种污染物。
  • 每个网格单元格显示的是横轴污染物与纵轴污染物的散点图。
  • 对角线上的单元格显示的是单个污染物的直方图,因为该单元格横纵轴的变量相同,绘制散点图意义不大。

从某种意义上说,这个网格图是冗余的,因为右上部分和左下部分的信息是相同的,只是横纵轴互换了。

通过这些图表集合,你可以快速总结之前探索过的变量关系和分布情况。

相关性矩阵分析

如前所述,观察散点图时,一个有趣的探索方向是检查数据集中不同变量之间是否存在明显的相关性。如果你考虑将AI应用于特定问题,变量间的相关性可能意味着你可以用一个或多个变量来预测另一个变量的值。

例如,你可以看到PM2.5和PM10之间可能存在一些相关性,或者NO2和CO之间也可能存在相关性。

查看变量间相关性更定量的方法是生成所谓的相关性矩阵。运行下一个单元格即可实现。

现在你看到的网格展示了与散点图和直方图相同的比较内容,每种污染物同样列在网格的纵轴和横轴上。

每个网格单元格中的数值现在表示该单元格对应纵轴和横轴两种污染物的皮尔逊相关系数

  • 相关系数接近0表示两个变量之间没有关系。
  • 相关系数接近1-1分别表示存在强烈的正相关或负相关。

因此,对角线上的相关系数值为1,仅表示每个变量与自身完全相关。但在其他单元格中,你可以看到最强正相关和负相关的位置。

从某种意义上说,这个数值网格也是冗余的,因为沿对角线存在镜像。但现在,你可以利用这个结果更仔细地查看哪些污染物彼此相关。

例如,你可以看到NO2和CO之间存在显著的正相关。你还可以看到不同尺寸的颗粒物之间存在强相关性,因此PM2.5(较小颗粒)与PM10(稍大颗粒)呈正相关或许并不令人意外。

时间序列数据探索

运行下一个单元格,你将看到特定站点、特定污染物随时间变化的传感器测量值。

你可以使用这些下拉菜单选择不同的站点和污染物。

使用这个滑块,你可以调整绘图的时间范围,并可以放大特定的日期范围进行详细调查。

目前,图表显示的是2021年1月的数据。但你可以将这里的开始日期和结束日期变量更改为2021年的其他日期,然后再次运行代码,以在初始图表中查看不同的日期范围。

在图表的一些区域,你会看到数据缺口,这表示特定传感器在该时段数据缺失。

在下一个笔记本中,你将学习一种用估计值填补缺失数据的方法。为此,了解缺失数据的特征(例如特定传感器离线的频率和时长)非常重要。

通过这个图表,你可以更好地理解缺失数据的时间特性。

地理空间数据可视化

最后,查看地图总是很有趣的,这也是可视化数据中更多信息的好方法。

在最后一个单元格中,你将传感器站点的经纬度信息添加到数据集中,然后生成一张叠加了传感器站点位置的地图。

在地图表示中,你可以看到每个传感器的位置由一个圆圈标记,这些圆圈的颜色目前表示每个站点PM2.5的长期平均值。

  • 像这样的绿色表示长期平均值低于美国环保署建议的每立方米12微克。

如果你点击一个传感器位置,可以看到一天中不同时间平均值的函数图。

例如,你可以在此站点看到,中午的平均PM2.5值约为每立方米12微克,而在早上7点左右平均值更高,大约为25。

  • 这条绿色虚线显示了PM2.5的建议水平。
  • 这条蓝色虚线显示了该站点的长期平均值。因此,在该站点,长期平均值略高于建议水平。

这里的每个单独数据点显示了该站点在一天中特定时间的平均值,该值是对全年数据平均的结果。蓝色阴影区域显示了这些平均值上下一个标准差的范围。

因此,你可以将阴影区域视为捕捉了该站点一天中大部分传感器测量值的典型范围。

如果你将这里的参数“一天中的小时”更改为“一周中的天”,然后再次运行代码,那么你可以点击一个站点来查看按星期几的平均值,以及一条显示长期平均值的虚线。

总结

在本节课中,我们一起学习了如何通过多变量可视化网格、相关性矩阵、时间序列图和地理空间地图来深入探索空气质量数据集。

在整个数据探索过程中,你的目标是了解将要使用的数据集的特性,并思考AI是否以及如何能为这个项目增加价值。

在本案例中,考虑到不同污染物之间的相关性,以及PM2.5水平对站点位置、一天中的时间和一周中的天等因素的明显依赖性,AI似乎适合用于估计数据中缺失值的问题。

此外,由于传感器分布在整个城市,应该可以利用数据来估计这些传感器之间的污染水平。

当你准备好后,可以进行接下来的测验,内容是关于你在数据中的发现。请将其视为开卷测验,最重要的是记住输出结果,而是在进入设计阶段之前,确保你对数据的特性感到熟悉。

正如我之前在本课程中多次强调的,这对于你正在进行的任何类型的项目都很重要:确保你熟悉数据,了解缺失了什么、可能有什么错误、什么是异常值,这些直觉将帮助你以更高效、更有效的方式设计和思考正确的模型。

028:空气质量项目探索阶段检查点 📋

在本节课中,我们将回顾并总结一个AI向善项目在“探索阶段”需要完成的关键任务。我们将以虚构的“巴戈阿尔市”空气质量改善项目为例,学习如何确认项目是否已具备进入下一阶段的条件。

在之前的课程中,我们介绍了一个用于指导AI向善项目的通用框架。我们通过一个在尼日利亚妇幼保健领域的详细案例研究,了解了项目如何逐步推进,以及在每个开发步骤中需要考虑的因素,特别是“不伤害”原则的贯彻。

本节课程,我们将探索一个具体场景:巴戈阿尔市邀请你和你的团队,帮助他们朝着改善城市空气质量的长期目标迈出下一步。正如我们在尼日利亚公共卫生案例中讨论的那样,在探索阶段结束时,是时候进行检查,确认你是否已具备进入项目下一阶段所需的一切。

探索阶段成果回顾

此时,你已经与利益相关者会面,我们假设这包括代表城市的公共卫生专业人员以及市民,以更好地理解你希望解决的问题。你写下了具体的问题陈述,并探索了数据,以努力确定AI是否能为这个项目增加价值。

因此,现在你处于探索阶段末期,你和你的团队应该能够回答以下问题。

以下是需要回答的核心问题清单:

  • 具体问题:你正在解决的具体问题是什么?
  • 利益相关者:谁是利益相关者?
  • 数据:你是否能够获取或收集到必要的数据?
  • AI价值:AI能否增加价值?具体在何处以及如何增加?
  • 不伤害原则:“不伤害”原则在此如何体现?

具体问题陈述 🎯

在本案例中,你正在解决的具体问题是:与巴戈阿尔市合作的公共卫生专业人员需要能够提供整个城市的空气质量实时估算,以便市民能够意识到因空气质量差而带来的任何健康风险,并据此规划他们的户外活动。

项目利益相关者 👥

这里的利益相关者包括与市政府合作的公共卫生专业人员、阿加塔尔的市民,以及维护传感器网络的人员。

数据可用性 💾

你可以访问一个丰富的历史传感器测量数据集,用于开发你的解决方案。数据看起来非常适合用于解决估算缺失传感器读数,以及对传感器之间区域进行估算的问题。

AI的潜在价值 🤖

AI似乎非常适合解决估算缺失值的问题,以及为传感器之间的区域进行估算。这可以通过建立预测模型来实现,例如:
空气质量指数 = 模型(传感器历史数据, 气象数据, 地理位置)

不伤害原则的考量 ⚖️

在这个特定场景中,数据风险相对较低,因为你将处理来自科学仪器且旨在公开的数据。因此,关于数据隐私或数据是否会通过泄露个人信息而使个人面临风险,没有明显的顾虑需要考虑。

然而,你需要记住,该应用程序本身旨在向公众告知健康风险,并提供有关与空气质量差相关的行为建议。因此,你的工作可能对公共健康产生直接影响,这是你在开发模型和设计最终用户体验时需要持续反思的问题。


阶段总结与过渡

考虑到以上所有因素,你已经准备好进入“设计阶段”。在设计阶段,你将开始试验模型,并决定你希望最终应用程序如何工作。

本节课中,我们一起学习了如何对一个AI向善项目的探索阶段进行收尾检查。我们明确了要解决的具体问题、识别了利益相关者、确认了数据的可用性与适用性、评估了AI增加价值的潜力,并初步考量了“不伤害”原则。下一周,我们将开始学习设计阶段的材料,正式启动解决方案的设计工作。

029:空气质量项目设计与实施阶段 🏭

在本节课中,我们将学习空气质量映射产品的设计与实施阶段。我们将重点关注设计阶段,包括数据与模型策略的原型设计、处理数据隐私与安全问题,以及设计最终用户体验。

数据与模型策略设计 📊

上一节我们介绍了项目背景,本节中我们来看看数据与模型策略的具体设计。

在项目的探索阶段,我们发现波哥大空气污染传感网络存在显著的数据缺失问题。在许多情况下,当一种污染物数据缺失时,其他污染物的记录仍然有效。

我们还观察到,不同污染物水平之间存在相关性。污染物水平似乎取决于一天中的时间、星期几以及监测站的位置。这让我们思考,人工智能或许可以利用其余数据,对这些缺失值进行相对准确的估算。

建立基线方法 📈

然而,在这个阶段,与其直接采用“AI优先”的方法,更好的做法是花时间尝试最简单的解决方案,以建立一个基线。这个基线能展示在不实施复杂方案的情况下,我们能达到的效果。

对于数据缺失的情况,我们看到传感器测量是每小时记录的。有时,传感器会中断一小时,然后下一小时又恢复在线。

在这种情况下,场景类似这样:传感器进行每小时测量,数值在一天中起伏,然后出现一个缺失值,接着传感器恢复在线,再次获得有效测量。请思考,估算这个缺失值最简单的方法是什么?

这里有一个关键点:如果我们进行实时估算,显然无法使用缺失点之后的数据。因此,我们不能简单地使用缺失点两侧数据的平均值进行插值。

针对这个具体用例,我们能想到的最简单的估算方法或许是:取该传感器最近一次的实际测量值,直接将其作为估算值。

另一种你可能考虑的方法是:寻找最近的在线的、有实际测量值的传感器,然后用该最近监测站记录的值来替换缺失值。

这两种方法各有优缺点。一种方法是使用同一地点的过去测量值,另一种方法是使用附近地点的当前测量值。无论如何,这两种方法都是合理的,特别是作为衡量基于机器学习方法效果的基线。

在下一节中,我们将通过实践看看这些基线方法在实际中的表现。

总结 🎯

本节课中,我们一起学习了空气质量项目设计阶段的核心任务。我们探讨了如何针对数据缺失问题设计简单的基线估算策略,包括使用同一传感器的历史值和邻近传感器的当前值。这些策略为后续更复杂的机器学习模型提供了重要的性能比较基准。

030:建立空气质量数据基准 📊

在本节课中,我们将学习如何为空气质量数据中的缺失值问题建立一个简单的性能基准。我们将测试两种基础方法,并量化它们的表现,为后续更复杂的AI模型提供一个比较标准。


概述

上一节我们介绍了两种估算传感器缺失值的方法:使用该传感器最近一次测量值,以及使用最近邻传感器的当前测量值。本节中,我们将通过实验来测试这些方法,并建立一个基准性能。这样做的原因是:如果简单方法足以满足目标,我们就不必追求复杂方案;同时,它也为衡量更复杂模型的性能提升提供了参照。


进入实验环境

要跟随本实验,你可以在另一个浏览器标签页中打开实验环境,并对照本视频进行操作。提醒一下,你可以点击这里的Jupyter图标查看文件夹内容。

首先,你会看到一个data文件夹,其中包含一个数据表。数据表是了解数据集的重要方式,它说明了数据收集的原因、标注者或创建者以及数据的具体内容。

在本课程使用的所有数据集中,你都会看到类似的数据表。


如果你是Python程序员,并且有兴趣查看本实验背后的一些代码,可以查看这里的ULs文件。但一般来说,为了完成本实验,你不需要关心这个文件中的代码。我们特意将一些功能放在这个文件中,以保持你的笔记本界面整洁。






点击回到你的笔记本,首先要做的是从顶部开始,运行第一个代码单元格。

同样,第一个单元格只是导入本实验所需的各种包。

接下来,你将读入数据集,并准备开始研究处理缺失值的不同方案。

这里,你再次打印出数据集的前五行,以验证数据是否被正确读入,结果应该如下所示。

下一步是读入另一个数据集,其中包含每个传感器站点的位置信息,即纬度和经度。然后,我们将一些列名从西班牙语改为英语,以便在这个英文实验中更容易理解。

接着,你将把这些信息添加到现有数据集中,以便能够计算传感器站点之间的距离,为最近邻方法做准备。

接下来的两个单元格旨在提醒你,在上一个实验中查看数据集时,缺失值问题是什么样子的。

首先,这里打印出每列中缺失值的数量。

运行下一个单元格,查看你在上一个实验中看过的缺失数据可视化图。在这里,你可以再次选择不同的站点名称和污染物,然后使用滑块查看不同的日期范围。

这应该与上一个实验中的内容相似。

这里主要需要注意的是,在某些情况下,你只有一两个小时的小缺口。

但重要的是,在其他情况下,存在更大的缺口,持续数小时,甚至在某些情况下持续数天或数周。此时,了解缺失数据中有多少是由于小缺口造成的,有多少是由于大缺口造成的,这一点很重要,因为这将对你如何建模这个问题产生影响。

当你运行这个Excel单元格时,你正在统计与不同大小缺口相关的数据点数量,特别是针对PM2.5数据。

这张图在底部的X轴上显示以小时为单位的缺口大小,在Y轴上显示与该大小缺口相关的缺失数据点数量。

这张图一开始可能有点令人困惑,所以让我们花点时间来分析它。解读方式是:左侧的这个峰值对应仅持续一小时的缺口,换句话说,每个缺口只导致一个数据点缺失。你可以看到数据中大约有700个这样的缺口。

向右移动,你可以看到最大的缺口大小约为3600小时,即某个特定传感器停机了大约五个月。当你看这个大小的缺口导致了多少个单独的小时数据点缺失时,你会发现也大约是3600个。这意味着这个峰值表明数据中只有一个大约3600小时(五个月)的单一缺口。

同样,你也有一些持续数百小时的单一缺口,以及许多在0到200小时范围内的缺口。从这张图中得到的主要启示应该是:虽然大多数单个缺口很小,但大部分缺失数据实际上来自持续数十或数百小时的大缺口。正如你现在可以想象到的,缺口时间越长,提供合理估计的难度就越大。

接下来我想做的是开始可视化解决方案可能的样子。当你运行下一个单元格时,你正在模拟一个传感器停机一小时的情况。


红色显示的是实际数据。

现在,你正在可视化如何用黄色显示的最远一次测量值替换那个点,这里只是一条平直线,因为我们重复了最远一次的测量值。对于另一种方法,你可以用最近邻传感器站点的值替换它,这就是这里用绿色显示的。所以,在这个特定的小时,最近的工作站实际上有一个相当高的PM2.5读数。

你可以使用这个下拉菜单更改起始变量,以查看在这个示例数据中不同小时的比较情况。你可以看到,在某些情况下,最远值看起来更接近真实值。但在其他情况下,最近邻方法表现得更好。

你还可以在这里更改窗口大小,以模拟存在超过一小时缺口的情况。

你会注意到,无论窗口大小如何,最远值方法只是简单地记录传感器离线前的那个值,而最近邻方法在每个小时都会有一个不同的值,该值基于最近的工作邻站记录的值。

你也可以更改日期以查看不同的示例数据。

查看一些不同的日期和窗口大小,你可以看到,随着窗口变大,你认为哪种方法往往会表现得更好?

正如上面所看到的,很多时候传感器会离线数十或数百小时。在这些情况下,仅仅使用最远数据的方法,随着缺口变大,其估计效果会变得更差。所以你可以看到,对于这种情况,这个方法似乎效果不佳。

最近邻方法提供了可变的结果,但它不一定随着缺口大小增加而性能下降。因此,在这一点上,你将放弃使用最后记录测量值的方法,并进一步测试最近邻方法作为你的基准。

接下来要做的是测试这种方法在真实数据缺口分布上的表现如何。

运行下一个单元格来运行一个模拟,你随机选择数据中的位置,然后使用你的最近邻方法来估计该时间该站点的传感器测量值。这将需要几分钟时间运行,所以请耐心等待,或者当你看到代码单元格左上角的小星星时稍作休息,这意味着它仍在运行。

你将针对实际数据中识别出的各种大小(从一小时到数百小时)的模拟缺口进行这个练习。原则上,这种方法不应该受缺口大小的影响,因为你只是用另一个站点的最近记录测量值替换缺失值,但为了保持一致性,我们在这里模拟了实际数据中的缺口。

为了衡量你的表现,你将计算平均绝对误差,这只是你的估计值与真实传感器测量值之间差异的平均值,模拟运行后会在这里打印出来。

平均绝对误差是衡量预测准确性的常见且直观的方法。之所以说它直观,是因为平均绝对误差的误差度量单位与你试图估计的事物单位相同,在本例中是PM2.5水平,单位为微克/立方米。

话虽如此,它并不是误差度量的唯一可能选择,对于不同的应用,你可能会选择不同的度量标准,例如均方误差,或者与实际测量值相比的百分比误差。这里我们将使用平均绝对误差,作为直观比较不同模型结果的简单方法。

当你运行这个模拟时,你会发现你得到的平均绝对误差大约为8。这意味着,平均而言,你的估计值与传感器测量值相差8个单位。对于PM2.5,如前所述,单位是微克/立方米。所以,这个结果告诉你,平均而言,你的最近邻方法返回的值与真实测量值相差8微克/立方米。

这个误差估计现在可以作为你的基准,来衡量在不实施任何更复杂AI算法的情况下你能做到多好。我认为这是一个很好的时机来提醒一下,PM2.5的最大推荐值是12微克/立方米,因此平均误差为8,我们处理的误差范围很容易高于或低于该推荐水平。

这个误差估计现在可以作为你的基准,来衡量在不实施任何更复杂的AI方案的情况下你能做到多好。所以,请你自己尝试操作一下,感受一下这是如何工作的,然后进入下一个视频,我们将开始研究使用神经网络来估算缺失值。


总结

本节课中,我们一起学习了如何为空气质量数据填补问题建立基准。我们测试了两种简单方法,并最终选择最近邻方法作为基准,其平均绝对误差约为8微克/立方米。这个基准为我们后续评估更复杂的AI模型(如神经网络)的性能提升提供了明确的量化标准。

031:空气质量训练和测试神经网络 🧠

在本节课中,我们将要学习如何使用神经网络来改进空气质量传感器缺失值的估算。我们将从回顾上一节建立的简单基线方法开始,然后探索如何利用更复杂的机器学习模型来捕捉数据中的深层模式,从而获得更精确的预测结果。

回顾基线方法

上一节我们介绍了如何使用“最近邻传感器”方法来估算缺失的PM2.5值。该方法仅依据最近传感器的测量值进行估算,其平均绝对误差(MAE)约为 8 微克/立方米。这意味着,使用此方法估算的缺失值,平均会与真实值相差正负8个单位。

虽然在某些情况下该方法效果尚可,但在其他情况下表现不佳。这表明我们有改进的空间。

探索数据模式

在数据探索阶段,我们发现数据中存在一些明显的模式。例如,污染物水平会随着一天中的时间或一周中的某天而变化,并且不同污染物之间的水平也存在关联。

通过计算相关系数,我们可以量化这些模式。这些发现是一个良好的早期迹象,表明AI可能通过学习数据中的这些模式来发挥作用。特别是当特征数量较多、关系复杂时,简单的基于规则或线性模型可能难以捕捉这些预测性信号及其相互关系。

引入神经网络

接下来,我们将尝试使用神经网络算法来学习数据中的模式,并观察是否能对缺失的传感器值做出更好的估算。

神经网络是一种算法,其核心原理相对简单:它接收输入并预测输出。如果你不熟悉神经网络,主要需理解的是:它能够学习数据中那些难以用规则系统或简单线性关系捕捉的复杂相关性

例如,在预测缺失值时,邻近传感器的值是否有用,可能取决于一天中的时间、一周中的某天或检测到的特定颗粒物类型。数据中存在大量我们称之为“维度”的信息,这让人难以直观理解,但对人工神经网络来说,找到应用于每个信号的最佳权重组合以基于历史数据做出最优预测,是相对简单的过程。

神经网络的工作原理

本质上,人工神经网络是一种计算机器。其中的神经元接收一系列输入(如我们一直在看的传感器数据),运行简单计算,然后生成输出(在本例中是对传感器缺失值的估算)。

如果网络中有多层神经元,一层的输出不会直接成为最终预测,而是会传递到下一层神经元,每一层都会生成自己的输出。我们使用多层结构的原因是,它们能够发现超越线性组合的信号组合。

例如,神经网络可能发现PM10仅在一天中的某些时段或一周中的某些天是PM2.5的良好预测指标。使用这些隐藏层的神经网络能够发现这类更细微、更复杂的相关性,而这些在纯手动分析或纯基于规则的系统实现中是难以发现的。

构建与训练神经网络

在我们的具体任务中,神经网络的输入将包括:一天中的时间、一周中的某天、传感器站点ID以及其他所有污染物的测量值。然后,我们将要求网络输出对PM2.5的预测。

按照惯例,我们随机初始化神经网络。因此,一开始网络完全不会做出好的预测。但我们将使用已知正确答案的示例来训练网络。随着网络看到每个新示例,它会逐步更新或学习从数据中做出更好的估算。

需要记住的重要一点是,在基线方法中,我们只考虑了一个信息:最近传感器站点的测量值。而现在,在神经网络中,我们考虑了更多的信息,包括站点位置、时间、星期几以及其他所有污染物的值。

实验步骤详解

以下是实验中的关键步骤:

1. 数据准备

在开始之前,我们需要处理数据。代码会将日期时间列中的值解析,并创建新的列来表示每个测量的月份、星期几和小时。同时,还会创建所谓的独热编码数组,用于向神经网络指示特定测量来自哪个站点。

此步骤还会从数据集中删除所有包含缺失值的行。这样做的原因是,我们需要在已知正确答案的示例上训练神经网络。目前,我们为了训练和测试的目的移除了缺失值。

2. 划分数据集

运行代码单元格会将数据分为训练集测试集。在许多项目中,通常还会划分一个验证集用于调整模型参数。但在本实验中,我们将只运行一次训练而不调整任何模型参数,因此我们将80%的数据用于训练,保留20%用于测试。

3. 训练神经网络

训练神经网络是一个迭代过程。在代码运行时,你可以看到每次迭代(或称周期)都会输出一个损失值的估计。你只需要知道,损失值越低,意味着你的网络在做出预测方面变得越好。

同时,代码还会打印每个周期的平均绝对误差(MAE)。但请注意,这是在训练数据本身上测量的误差,尚不能代表模型在最终测试集上的性能。我们稍后会为之前分离出的测试集计算MAE。

值得一提的是,在神经网络训练的背后,它实际上是在优化均方误差。在处理数据中的异常值时,这可能是一个更稳健的指标,并且其数学特性使得神经网络更容易收敛到正确的解。

4. 评估模型性能

当网络训练完成后,我们将在之前创建的测试数据集上进行预测,以测试其表现。运行下一个单元格可以打印出基线模型与神经网络的比较结果。

对于这个测试集,神经网络的平均绝对误差显著降低,大约是基线方法的一半

5. 结果可视化

我们可以通过可视化来比较新的神经网络模型在不同场景下与基线最近邻模型的差异。我们可以选择要查看的站点、模拟传感器失效的窗口大小(小时数),并通过滑块在时间轴上移动这个窗口。

图表中,红色代表实际测量值,绿色代表最近邻模型预测值,黄色代表神经网络预测值。在某些情况下,神经网络可能看起来比最近邻方法更差。但解读的关键在于平均误差:神经网络的平均绝对误差为4,而最近邻方法为8。这意味着,平均而言,神经网络的估算值比最近邻方法更接近真实值

填补全部缺失值

在验证了模型性能后,下一步是完善解决方案的原型,包括估算传感器之间PM2.5值的方法,并进一步完善用户界面。

为此,我们现在将使用模型来填补数据集中的所有实际空缺,以便在原型中拥有连续的数据可供使用。

需要注意的是,我们的神经网络模型需要所有其他污染物的输入值,以及日期、时间和站点ID。因此,下一步将是首先使用简单的线性插值方案估算所有非PM2.5污染物的缺失值,然后运行神经网络来估算缺失的PM2.5值。

当然,这样做会创建一个情况:我们的一些PM2.5值是使用其他污染物的估算值得出的,而这些估算值本身的误差可能会传播。但此处的重点只是填补空缺,以便在下一个实验中继续构建原型。

在现实场景中,你可能会选择训练多个不同的神经网络模型来处理其他污染物值缺失的情况,甚至可能将邻近传感器的测量值也加入神经网络的输入特征中。但在这里,我们保持简单。

数据标记

完成上述步骤后,我们还向数据集中添加了一些额外的列:估算标志列。这些列用于指示当前数据集中的哪些值是估算值,哪些是原始的真实传感器测量值。

  • 对于PM2.5,标志为 neural_network 表示该值是使用神经网络模型估算的。
  • 对于其他污染物,标志为 interpolated 表示该值是使用线性模型填补的。
  • 标志为 none 的地方,则是原始的传感器测量值。

添加这些标志的目的是,以后在地图上显示污染水平时,可以区分哪些是直接测量值,哪些是估算值。同时,如果后续要使用这些数据进行进一步处理或建模,也能跟踪测量值与估算值。

最后,我们可以将结果写入一个新的CSV文件,供后续实验使用。

总结

本节课中,我们一起学习了如何应用神经网络来改进空气质量传感器缺失数据的估算。我们从回顾简单的最近邻基线方法开始,认识到其局限性。然后,我们探索了数据中的复杂模式,并引入了能够学习这些模式的神经网络。

我们详细介绍了神经网络的构建、训练和评估过程。通过实验,我们成功将PM2.5估算的平均绝对误差从基线方法的8降低到了4,性能提升了一倍。最后,我们使用训练好的模型和线性插值方法,填补了数据集中所有的缺失值,并为估算值添加了标记,为下一阶段的原型开发做好了数据准备。

现在我们已经设计出了估算缺失值的方法,接下来将设计估算传感器站点之间污染物水平的方法,这将是下一节视频的内容。

032:空气质量最邻近方法 🏙️

概述

在本节课中,我们将学习如何利用最邻近方法来估算传感器站点之间的污染物水平。我们将从最简单的基线方法开始,逐步探讨如何通过机器学习技术进行改进,最终完成空气质量监测系统的设计阶段。


设计阶段收尾:估算站点间污染物水平的方法

上一节我们介绍了如何处理传感器站点的缺失值,本节中我们来看看如何估算传感器站点之间的污染物水平。

首先,我们需要建立一个简单的基线方法。设想你在波哥大市的某个位置,试图估算该位置的空气污染水平。最简单的方法是查找最近空气质量传感器的最新测量值,并假设该值适用于你的位置。这就是我们在之前实验中使用的基线方法,不过现在我们要估算的是城市中任意位置的污染水平。

在机器学习中,这种方法被称为最邻近方法。它基于一个假设:数据集中邻近的观测点在某些特征上具有相似性。这种邻近可以是物理空间上的(如我们这里的情况),也可以是时间上或其他可测量维度上的。


最邻近方法的直观理解

考虑到空气污染测量,这种方法具有一定的直观意义。因为任何位置的空气特征很可能与最近传感器位置的特征最为相似。当然,这不一定总是成立,但作为基线方法,它是一个合理的初步猜测。因此,在实验中你将首先尝试这种方法。


改进方法:K最邻近(KNN)

如果你思考如何改进这种方法,考虑到城市中有多个传感器站点,你可以考虑不仅使用一个最近邻,而是使用两个、三个甚至更多个最近邻来估算你所在位置的空气质量。

这种最邻近方法的扩展被称为K最邻近方法,其中 K 代表为每次估算所考虑的邻居数量。那么问题来了:给定多个邻居,应该如何进行估算?你可以取所有邻居值的简单平均值,但对于像空气质量测量这样的数据,你可能会假设最近邻居的测量值应该比更远邻居的测量值具有更大的权重。

事实上,这正是当前最邻近技术在实际应用中常见的做法。


距离加权方案

有多种加权方案可以考虑。在本周的实验中,你将使用反距离加权方法。具体来说,你为每个邻居分配一个权重,该权重等于该邻居与你想要估算位置距离的平方的倒数

以下是反距离加权的公式表示:

权重 w_i = 1 / (d_i)^2

其中,d_i 是第 i 个邻居到目标位置的距离。

让我们进入实验,看看这种方法的具体应用。


实验步骤

1. 导入必要包

与之前的实验一样,你首先需要运行第一个单元格,导入本实验所需的所有包。

# 导入所需库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import NearestNeighbors

2. 读取数据集

运行导入后,你将读取数据集并打印前五行,以检查一切是否导入正常。

# 读取数据
data = pd.read_csv('air_quality_data.csv')
print(data.head())

现在你可以看到,这是你在上一个实验结束时生成的数据集,其中使用神经网络模型估算了PM2.5的缺失值。

3. 定义估算模型

接下来,你将定义一个模型来估算传感器之间的PM2.5值。

首先,为波哥大市创建一个网格,并基于最邻近方法(这里K=1)估算每个网格单元内的PM2.5值。这类似于上一个实验中的做法,但现在是估算覆盖整个城市的网格上的值。

# 创建城市网格并估算PM2.5值
def estimate_pm25_grid(data, k=1):
    # 此处为估算逻辑
    pass

运行后,你将得到一张地图,上面显示了传感器站点的位置,以及覆盖在城市上的彩色编码网格。

4. 分析估算结果

你可以点击站点位置查看该站点的PM2.5测量值。带有白色边框的圆圈表示直接传感器测量值,而带有黑色边框的圆圈表示由神经网络估算的值。在弹出的窗口中也会标明“估算值”。

在这个例子中,你隔离了数据中的单个时间戳(即日期和时间)。你可以更改时间戳以查看不同日期和时间的结果。这可以成为你地图应用中的一个功能,用户可以选择日期和时间来查看城市的PM2.5地图。

5. 计算误差并尝试不同的K值

接下来,你将计算与K=1相关的平均绝对误差,然后逐步尝试不同的K值场景。

# 计算不同K值下的平均绝对误差
def calculate_mae(data, k_values):
    mae_results = {}
    for k in k_values:
        # 估算并计算误差
        mae = compute_mae_for_k(data, k)
        mae_results[k] = mae
    return mae_results

运行后,你会发现使用K=1时,PM2.5水平的估算平均偏差约为8微克/立方米。计算误差的方法是对每个传感器站点位置运行估算,并将基于最邻近方法的估算值与该站点的实际测量值进行比较。

6. 尝试更高的K值

接下来,你可以将K值更改为其他值,例如3。这意味着对于地图中的每个网格单元,你将考虑三个最近的站点,并取加权平均值。

# 使用K=3进行估算
estimate_pm25_grid(data, k=3)

运行后,你会得到一个更平滑的PM2.5估算表示。与仅考虑一个最近邻不同,现在每个网格单元都考虑了三个最近邻,并根据距离的平方倒数进行加权平均。

同样,如果你将K增加到4、5或其他数字,那么你将基于该数量的附近站点进行估算,并根据每个传感器站点的距离平方倒数对平均值进行加权。


设计阶段完成

至此,你的设计阶段基本完成。你已经设计了一个用于估算特定站点缺失值的神经网络方法,以及一个基于最近邻估算传感器之间值的系统。你还在一个美观的地图中展示了所有内容,这可以作为你的用户界面。

值得一提的是,在估算传感器站点之间值时,你还可以尝试其他算法,甚至尝试K最邻近方法的不同加权方案。使用其他方法,你可能在平均绝对误差方面做得更好一些。但在这种情况下,你面临一个非常现实的物理约束:你实际上并不知道传感器之间的污染物水平。因此,无论参数如何,你采用的任何模型都只是一个粗略的估计,并且你可能无法比这里使用的K最邻近方法有太大改进。


总结

本节课中我们一起学习了如何利用最邻近方法估算空气质量传感器站点之间的污染物水平。你首先使用K=1建立了基线方法,然后通过使用更高的K值和距离加权,设计了一个更复杂的算法,以更好地估算波哥大市任意位置的空气污染水平。至此,你完成了项目的设计阶段。在下一个视频中,我们将回顾在进入实施阶段之前需要回答的关键问题,以结束设计阶段。

033:空气质量项目设计阶段检查点 🧭

在本节课中,我们将回顾波哥大空气质量项目设计阶段的成果,并明确进入实施阶段前需要确认的关键问题。

恭喜你完成了波哥大空气质量项目的设计阶段。在此阶段,你完成了解决方案的原型设计,考虑了如何处理数据中关于隐私或个人信息的任何问题(在本项目中应极少),并设计了用户体验。做得很好。

此时,在进入实施阶段之前,你应该能够回答以下问题。

以下是进入下一阶段前需要明确的四个核心问题:

  1. 你如何解决数据中的不平衡、偏见、隐私或其他问题?
  2. 你将实现何种模型,以及如何衡量其性能?
  3. 你的设计将如何解决问题?即,它如何解决?
  4. 最终用户将如何与你的系统交互?

数据隐私与潜在风险分析

上一节我们列出了设计检查点,本节中我们来看看如何具体分析数据风险。

如前所述,你始终需要对数据进行彻底分析,关注数据隐私、安全、偏见或其他问题。对于这个项目,你使用的是来自科学仪器的公开可用数据,因此在保护个人信息方面没有重大顾虑。

然而,请记住,数据是公开的这一事实并不意味着它不会造成伤害。你正在开发的应用旨在成为波哥大市更广泛的空气质量公共卫生倡议的一部分,因此你需要确保你的产品至少不会因提供错误或令人困惑的信息而造成伤害。

我认为你可以考虑此信息可能被滥用的其他潜在情况,并与利益相关者讨论。例如,如果你能更准确地估算出污染的突然爆发,这可能与非法制造、非法焚烧或其他犯罪活动有关。这可能会吸引监控用例,不仅是对污染物的监控,还有对犯罪的监控。

如果这些信息随后被用于起诉犯罪或识别罪犯,那么社区可能会因此失去对这些传感器的信任,并对信任传感器数据甚至未来安装更多传感器产生抵触。

因此,对于任何用例,即使你一开始就知道它不包含个人信息,你也应该与利益相关者一起花时间思考潜在风险,以及通过机器学习提供更丰富体验可能带来的潜在负面影响。


模型设计与性能评估

在分析了潜在风险后,我们来看看为解决核心问题所设计的模型方案。

通过这里的实验,你为估算传感器缺失值和估算传感器之间的PM2.5值提出了一个模型设计,并使用平均绝对误差(MAE) 来建立模型相对于基线的性能。

性能评估公式示例:
MAE = (1/n) * Σ|y_i - ŷ_i|
其中,y_i是真实值,ŷ_i是模型预测值,n是样本数量。


解决方案与用户交互设计

有了性能达标的模型,接下来我们看看整个解决方案如何落地并与用户连接。

通过这一设计,你旨在解决我们着手处理的问题,即为波哥大市提供一个应用程序,让市民能够获取全市范围内的实时空气质量估算。

最终用户将通过一个支持Web的移动应用程序与你的系统交互。这将使他们能够查看当前的估算值以及来自各个传感器站点的历史数据。

当然,你在实验中实际进行的设计仍然是一个原型。但在这些实验过程中,你已经能够演示一个可以估算缺失传感器值、估算传感器之间污染水平,并在点击传感器站点位置时提供历史数据快照的系统。


总结与下一步

至此,你已经完成了本项目设计阶段的所有工作。现在是时候在实施阶段将所有部分整合起来了。

本节课中我们一起学习了设计阶段的成果验收,包括对数据风险的思考、模型方案的确立以及用户体验的设计。请加入下一节视频,共同完成关于产品实施的实验部分。

034:空气质量项目实施阶段 🚀

在本节课中,我们将探讨如何将空气质量监测应用从实验室原型推进到实际部署阶段。我们将回顾已构建的映射应用,为其添加新功能,并讨论在实际部署中可能遇到的技术挑战。


实施与部署的挑战

上一节我们完成了模型构建与评估。本节中我们来看看,当您像在这些实验中所做的那样,开发并准备部署一个空气质量监测应用时,会遇到一系列实际挑战,其中许多本质上是技术性的。

以下是您需要考虑的主要技术挑战:

  • 系统部署:如何将您的系统部署到云端或托管服务器上。
  • 数据处理:如何接收和处理来自传感器的实时测量数据流。
  • 系统监控:如何监控系统的正常运行时间。
  • 异常处理:如何处理与之前所见不同类型的异常值(离群点)。
  • 用户体验:如何根据用户是通过网页还是移动应用访问,来展示相应的用户界面。

所有这些技术挑战都需要克服,才能让这样一个系统真正投入生产环境。在本课程中,我们会花时间讨论这些技术策略,并提醒您它们的存在。如果您具备一些软件工程经验,或者您所在的团队有此能力,您可以思考如何将您的映射应用部署到生产环境中。

为了总结这个项目,我们将跳转回实验环境,为您一直在开发的映射应用添加几个小功能,然后花些时间讨论在项目的最终实施评估中您可能还需要关注哪些方面。首先,让我们回到实验。


回到实验室:完善映射应用

如果您一直在跟进本实验,并且已经运行了至此的代码单元,那么您可以直接从这里开始,运行以下代码单元。如果您是刚刚打开这个实验,那么您需要从顶部开始,按顺序运行这些代码单元。

从导入库开始,然后依次运行每个单元,直到这里。

现在,您需要做的是选择一个 K 值,定义一个开始和结束日期。当您运行此代码时,将生成一张地图,显示每个传感器站在结束日期时间戳的当前PM2.5水平,以及站点之间的插值。

再次说明,当传感器站点的圆圈边框为白色时,表示这是直接测量值;当边框为黑色时,表示这是由您的神经网络模型生成的估计值。

此外,除了地图,您还可以点击每个传感器站点,查看从您选择的起始点开始的历史数值图表。在本例中,我们获取了2021年8月某24小时的数据。

您已经使用特定的K值(本例中K=1)创建了传感器间插值的地图表示。

现在,基于之前的分析,我将把我的K值改为3。因为之前的分析显示,超过K=3或4后,改进并不明显。当然,您可以选择任何您喜欢的K值。我还会选择一个不同的开始日期,以便在图表中显示更长的历史数据。

运行后,您可以看到我得到了一个更平滑的插值地图,并且当我点击传感器站点时,图表中有了更多的历史数据。

目前这仍然是一个在Jupyter笔记本中运行代码的原型,但您可以开始想象它在更友好的用户界面中会是什么样子:用户或许可以通过下拉菜单选择开始日期,或者选择查看过去一周或一个月的数据图表。您可以想象地图会定期更新以显示最新数值,类似于您之前在Purple Air应用中看到的那样。

这只是用户应用可能形态的一个设想。您可以在此尝试不同的日期和不同的K值,查看您生成的示例用户界面。


创建时间动画

接下来,您将创建一个特定时间范围的动画,本例中是此处指定的开始日期和结束日期之间的过去24小时。同样,您可以选择一个K值。我先用K=1来运行。

当您运行这个单元时,它正在构建将在下方显示的动画。运行完成后,它会显示“动画创建成功”。

然后,您可以运行最后一个单元来显示您的动画。运行后,您将看到类似的效果:现在您可以暂停动画以研究特定帧,也可以逐帧前进,或者播放动画并在此处调整播放速度。

这仍然有些原型化,但原则上,它与当前在线的许多空气质量地图应用相似。同样,您可以设想让用户指定他们想要观看动画的日期,或者点击传感器站点以查看有关这些近期测量的更多信息。

我将用K=3再次运行,看看效果如何。在这里,您可以看到不同传感器之间更平滑的插值。

如果您的应用要构建预测功能,这类动画也可能用于展示未来的空气质量预测。


总结与展望

如前所述,当要将此类应用在线部署到网页或移动应用时,会伴随许多软件开发挑战。但您可以想象,就像其他一些在线的空气质量监测应用一样,在设计师和一些工程师的帮助下,您可以拥有一个界面,让用户能够观看此类动画,或者与地图交互,查看当前测量值、特定位置传感器的历史测量数据,或城市内其他位置的估计值。

以上就是使用K=3创建的更平滑地图的效果。

波哥大空气质量项目的实施阶段到此结束。当然,在实际实施一个要投入生产、用以支持波哥大市民或关心空气质量的卫生专业人员的系统时,需要考虑更多细节。但我希望此刻您能感受到,至少从高层面上,了解一个项目从最初的探索、到设计、再到最终实施的全过程是怎样的。

在本节课中,我们一起学习了将AI项目从原型推向实际部署所面临的技术挑战,并通过实验完善了空气质量地图应用的功能,包括静态地图展示、历史数据查询以及动态时间动画的创建。我们认识到,一个完整的生产系统还需要解决部署、数据处理、监控和用户体验等诸多实际问题。

035:空气质量项目总结 🌍

在本节课中,我们将对空气质量监测系统项目进行总结。我们将回顾从探索、设计到实施的全过程,并讨论在系统部署前需要评估的关键问题,最后对整个“AI向善”框架在本项目中的应用进行梳理。


系统部署前的关键评估 🔍

目前,您已经完成了空气质量监测系统的探索、设计和实施工作。在将系统部署到现实世界之前,有几个关键问题需要解决。

您需要能够肯定地回答以下两个问题:

  1. 您的模型性能是否可接受?
  2. 最终用户能否成功地与您的系统进行交互?

评估模型性能 📊

对于本项目中的两个模型——估算缺失值的模型和估算传感器之间污染的模型——在估算PM2.5浓度时,其相关误差大约在每立方米4到7微克之间。

对于向公众提供区域呼吸安全建议这一目的而言,拥有一个带有此类误差的估计值,很可能比完全没有测量要好。在本课程中,我们可以假设这是一个合理的误差范围。

需要注意的是,对于不同类型的项目,其他误差估计(如均方误差)或性能指标(如精确率召回率)可能更为合适。这一切都取决于您特定项目的目标、具体规范以及利益相关者的要求。


评估用户体验 👥

关于最终用户如何与您的系统交互,您需要进行一些最终用户测试来了解实际情况。

  • 他们是否对当前的软件交互方式感到舒适?
  • 他们的交互方式是否符合您的预期?

同时,您也需要与其他利益相关者沟通,以了解您的产品是否足以满足他们的需求。

根据您从最终用户和其他利益相关者那里得到的反馈,您可能会决定:

  • 对现有实施方案进行更新迭代。
  • 为您的系统开发一个新的设计方案。
  • 重新开始,探索空气污染问题的其他方面,或者转向一个完全不同的问题。

回顾“AI向善”框架的应用 🔄

在为波哥大估算空气质量的工作中,您完整地实践了我们“AI向善”框架的所有步骤。

探索阶段

在此阶段,您分析了在此类项目中可能涉及的相关利益相关者,包括公共卫生官员、政策制定者、空气质量传感器管理人员以及市民。您制定了问题陈述,并探索了数据,以确定AI是否真的能为该项目增加价值。

以下是探索阶段的关键发现:

  • 您发现了数据中的模式,包括不同污染物之间的相关性。
  • 您识别出污染物浓度随时间(如一天中的不同时刻、一周中的不同天数)和传感器站点位置而变化的趋势。
  • 所有这些发现都强有力地表明,AI确实有能力在此领域增加价值。

设计阶段

在设计阶段,您更深入地研究了数据缺失问题,并开发了用于估算缺失传感器测量值的模型。

  • 首先是一个简单的基线模型。
  • 随后是一个性能更优的神经网络模型。

在利用模型估算数据集中所有污染物的缺失值后,您还开发了一种估算传感器站点之间污染水平的方法。

实施阶段

在实施阶段,您将模型投入应用,生成了对最终用户有用的地图。这些地图能够显示:

  • 当前的污染物水平。
  • 近期全市范围内污染物水平随时间(如几天或几小时内)的变化趋势。

项目的延伸与启发 💡

如果您对在空气质量监测项目中遇到的一些挑战仍有兴趣继续探索,那将非常棒。您可以考虑:

  • 从波哥大市下载更多数据。
  • 甚至寻找您所居住区域的空气质量数据。

此时,我也鼓励您花点时间思考一下,您可能对哪些类型的项目感兴趣,以及如何运用我们本课程中一直使用的相同框架来着手这些项目。例如,您可以思考:

  • 关键的利益相关者会是谁?我如何联系他们?
  • 您将解决什么样的问题?
  • 这个问题是否可能包含数据组成部分?

带着这些问题,您就可以顺利开启自己的项目之旅了。


课程总结与下一个亮点 🎬

在结束本课程之前,我们为您准备了另一个项目聚焦。Tipewa Chawewei是一位技术战略家,曾在南非从事空气污染相关工作。正如我们所说,您可以将为哥伦比亚波哥大所做的这个项目,应用到任何其他地点。

在下一个视频中,您将听到Tipewa如何在他的祖国南非开发解决方案。


本节课中,我们一起回顾并总结了空气质量监测项目的完整流程,从模型性能与用户体验的评估,到“AI向善”框架(探索、设计、实施)各阶段工作的梳理。希望这个项目能为您将来利用AI解决实际问题提供一个清晰的范式和启发。

036:AI与公共卫生、气候变化、灾难管理 🌍🤖

概述

在本节课中,我们将跟随Tapiwa Chiwewe的分享,学习如何利用人工智能技术应对空气污染这一全球性公共卫生挑战。课程将展示从发现问题到构建解决方案的全过程,并总结出初学者也能实践的指导原则。


大家好,我是Tapiwa Chiwewe。
“呼吸新鲜空气”——当你听到这句话时,会想到什么?
其字面含义指的是我们可能轻易视为理所当然的事物。
但请想象一个世界,你吸入的每一口空气都是有毒的。
几年前,我在约翰内斯堡的一个冬日清晨就瞥见了这样的景象。
当时我正努力开始工作,注意到城市上空笼罩着一片不祥的污染云。
这激起了我的好奇心。
在那一刻,我感到一种必须为此做点什么的冲动,但我并不知道具体该做什么。
我只知道,我不能袖手旁观。

上一节我们了解了Tapiwa发现问题的契机,本节中我们来看看他如何开始探索。

我从学习更多关于空气污染的知识开始。
我惊讶地了解到,空气污染每年导致全球数百万人死亡,并造成巨大的疾病负担。
我还了解到,发展中国家98%的城市地区空气质量不符合可接受的标准。
好消息是,空气污染的解决方案在很大程度上已被理解,并能产生积极的连锁效应。
事实上,据估计,在控制空气污染上每投资1美元,就能产生约30美元的效益。

基于我的计算机工程背景,我萌生了一个想法:创建一个由人工智能驱动的空气质量管理系统。
然而,我很确定自己无法单枪匹马解决这个空气污染问题,并很快意识到需要一种协作的方法。
因此,我决定最好去结识一些在该领域工作的人。
最终,我与普通公民、政策制定者、技术人员、律师等建立了联系。
我所投入的参与过程帮助我更深入地理解了问题领域和相关利益方。
这帮助我避免了在尚未牢固掌握手头问题之前就急于应用技术的陷阱。

现在,到了创建解决方案的过程。这个过程有时会很艰难。
关键在于坚持不懈,并且永远不要忘记大局。
我与合作者们一起,利用超过十年的空气质量和天气数据,开发了一个基于云的系统解决方案。
该系统能够分析空气质量数据,以揭示趋势并预测未来不同污染物的水平,例如碳氧化物、氮氧化物、硫氧化物,以及臭氧和颗粒物等其他污染物。
这意味着公民和官员可以在微观和宏观层面,就与个人及环境健康相关的活动与政策,做出更明智的决策。
这展示了人工智能工具如何能让我们更好地关爱我们的社区和环境。

只有少数组织和人员能够使用这个解决方案,部分原因是许可和数据使用方面的限制。
采用开放数据和开源的方法或许能让更多人获得访问权限。
我本希望花更多时间开发解决方案,并让更多利益相关者参与进来。
总而言之,这项工作在社会中引起的强烈共鸣,让我深感谦卑。

有一天,你可能会发现自己处于与我相似的境地。
或者,你可能已经感觉到自己想要为一个具有积极社会使命的人工智能项目做出贡献。
你只需要从总体上关心并对手头的具体问题感兴趣,并且渴望实现一个明确的积极成果。
如果具备了这些,事情就会开始步入正轨。
当我从事空气质量项目时,我利用了我的技术背景优势。
你也可以利用你的背景优势,无论它是什么。
你在特定领域之外的专业知识,可能正是解决该领域内重大挑战的关键。

以下是你可以用来快速起步的三条指导原则。

首先,仔细思考在何处使用人工智能。
人工智能是一项具有广泛应用的前沿技术,提供了令人兴奋的新能力。
因此,在你的项目中使用人工智能将是一种超能力。
但请务必审慎使用,而不是为了用而用。

其次,利用能够让你创建自己解决方案的技术平台。
这将使你免于重复造轮子,并让你能够以更低的成本更快地创造价值。
通过重用、本地化和在已有成果(例如开源项目)的基础上进行构建,来推动你的工作。
你可以利用基础模型和云平台。
此外,还有一些无需编写代码的工具可用,它们能让你描述数据并创建人工智能模型。

第三,遵循多学科社区协作的方法。
没有任何个人或组织能够解决所有问题。
因此,要寻找方法,利用全球社区中丰富的人才和资源。
正如你所见,你不需要成为人工智能专家也能参与人工智能项目合作。
你也不需要直接参与人工智能技术本身。
你可能了解问题背景、能够获取数据、可以转译社区需求等等。
这些其他维度对于创建合适且可持续的解决方案是必需的。
它们也确保了我们所创建的人工智能解决方案能够保留人类价值观。

所以,请满怀信心地去从事你热衷的、具有深刻社会意义的事业。
祝愿你在“AI向善”项目中一切顺利。
愿它们成为比喻意义上的“新鲜空气”。


总结

本节课中,我们一起学习了Tapiwa Chiwewe如何将个人观察转化为一个利用AI应对空气污染的实际项目。我们了解到,成功的AI for Good项目始于对问题的深刻理解、跨学科协作以及对技术应用的审慎思考。无论你的专业背景如何,都可以通过关心社会问题、利用现有平台和积极寻求合作,为创造积极影响贡献自己的力量。

037:AI for Good 专项课程第一课 🎯

在本课程中,我们学习了“AI for Good”的实际含义,探讨了人工智能的潜力与局限,并通过案例研究和实际项目,深入了解了如何将AI技术应用于解决现实世界的问题。

恭喜你完成了“AI for Good”专项课程的第一门课。

通过本课程,你从实践层面掌握了“AI for Good”的含义。你看到了一些关于人工智能能做什么的例子,并理解了一些局限性。你探索了一些案例研究,并看到了一些令人兴奋且有影响力的项目。我希望,通过对这里所呈现主题的探索以及你直接参与的空气质量项目,你对这类项目的关键方面获得了一些新的见解,并且在将所学知识应用到自己的项目中时,感觉准备得更充分了。

通过详细研究空气质量项目的每个阶段,你看到了在为像波哥大这样的城市构建AI辅助空气质量解决方案时,一些关键的考虑因素可能是什么。更重要的是,你逐步体验了一个项目框架,现在可以将这个框架应用到你感兴趣的任何项目上。


如果你受到启发,开始考虑自己的项目,但你不是软件开发人员或AI从业者,请不要让这阻碍你。我鼓励你尝试学习如何编码,或者联系那些可以帮助你处理项目中可能涉及的技术方面的人员。如果你已经熟悉软件开发和AI,并且有动力参与“AI for Good”项目,那么我鼓励你联系你所热衷领域的领域专家,看看是否有办法参与到他们感兴趣的项目工作中。

如果你喜欢本课程的内容,我邀请你加入本专项课程的下一个课程——AI与气候变化。在那里,我们将使用全球温度数据,并关注可再生能源和生物多样性相关的案例研究。

期待在下个课程中与你相见。

038:🌍 欢迎来到人工智能与气候变化

在本课程中,我们将学习人工智能如何成为应对气候变化挑战的解决方案的一部分。气候变化正通过干旱、洪水、野火、海平面上升等不利现象,影响着人类和自然生态系统。我们将通过案例研究,了解全球团队如何应对气候变化带来的问题,并探索人工智能在可再生能源和生物多样性监测等领域的应用。

我是你们的讲师罗伯特·莫纳克。很高兴来到这里,我认为在这个领域,你(吴恩达)可能比我更有经验。你过去在人工智能应对气候变化方面做过一些工作。

事实上,我和我的合作者撰写了许多论文,关于使用卫星图像来理解森林砍伐和甲烷排放的驱动因素等。因此,我认为气候变化不仅对每个人都很重要,其技术方面也与我个人密切相关。

这与我们今天要讨论的用例非常相似。我们将讨论生物多样性监测和风电功率预测。这两个主题对于理解如何减少对化石燃料的依赖以及监测气候变化对生物圈的影响非常重要。

事实上,风电功率预测是人工智能已经对风电场运营和电网规划产生重大影响的技术之一。

作为一名人工智能从业者,我为此感到自豪。

这确实非常令人兴奋。我认为我们现在已经达到了一个阶段,即风能和太阳能等对化石燃料影响较低的发电方法正变得非常有效。然而,预测部分非常困难,我们并不总是知道天气会多晴朗或风力会如何。这类问题非常适合机器学习解决方案,因为你本质上是在处理大量信号,多到无法用基于规则的人工系统来整合。你可以使用机器学习来获得更好的预测。即使是风能或太阳能预测的几个百分点的改进,也能对减少碳排放量产生巨大影响,因为它们可以更好地预测未来几小时或几天内有多少太阳能和风能。这有助于决定何时启动或关闭高污染工厂,并优化电网。也许你可以在一天中更好的时间为人们的电动汽车充电。这些信息以我看来非常令人兴奋的方式在电网中流动,这正在使电力供应更高效。

我认为这是一个非常好的视角。基于化石燃料的电网通常只有几个百分点的波动,过高或过低都会导致停电或限电。因此,我们正在重新思考电网的形态,当我们能够利用家庭或汽车中的分布式电池储能,并能够根据可再生能源在不同时间的发电能力,在多个电网之间共享电力时。

因此,在本课程中,你将了解更多关于应对气候变化这方面的内容。第二个主要项目是生物多样性监测。思考气候变化如何已经影响生物多样性也很重要。

第二个项目真的很有趣。我们正在查看南非一个国家公园的图像,试图估算动物的数量。这可以告诉我们环境影响或其他人类活动如何减少了特定地点的动物数量。我认为这是一个很好的例子,既有积极的一面,也有消极的一面。在这个领域,我们可以非常有效地部署现有的机器学习技术,但同时我们也必须问自己,什么是最重要的事情。对于许多生物多样性监测,我们关心植物或细菌,但这更难做到。所以我认为这很有趣,我们正在观察那些被称为“魅力巨型动物”的生物。观察这些动物很有趣,我们有很好的目标检测方法可以用于此。但同时,我们必须思考,由于当前机器学习技术的限制,我们检测大型动物比检测小型动物更容易。因此,这也是思考当前技术差距的好方法,并希望这能激励人们思考未来解决这些差距的方法。

我认为在之前的课程中,你已经开始看到一个解决复杂问题的系统框架。在本课程中,你将看到这个框架继续被完善和调整,以适应风电功率预测和生物多样性监测这两个非常令人兴奋的应用。

因此,我很高兴能带领你学习这些主题。请继续前进,让我们进入下一个视频。

039:什么是气候变化?🌍

在本节课中,我们将学习气候变化的基本概念、其背后的驱动因素以及全球变暖的主要表现。我们将通过数据和图表来理解这一全球性现象。

气候变化是一个全球性现象。如果你关注新闻,无疑会听到关于气候变化及其如何影响全球人口和生态系统的报道,以及各国为应对气候变化制定了哪些政策和承诺。本课程假设你已经对气候变化有所了解,并希望进一步学习人工智能如何帮助解决其中的一些问题。

为了开始学习,我们先简要概述气候变化:哪些因素导致了气候变化,以及我们需要采取哪些措施来避免未来最糟糕的结果。气候变化的影响范围广泛,可能包括看似矛盾的现象,例如一个地区极端干旱,另一个地区却发生严重洪涝。

全球气温上升是核心驱动因素

然而,在所有现象背后,驱动气候变化各种表现的核心事实是:全球气温正在逐年上升。

这张图表显示了从1850年到1900年测量的全球平均气温(以摄氏度为单位),相对于工业化前平均水平的比较。纵轴上的零点代表20世纪前50年的平均气温。红色和蓝色条形图显示了相对于该零点的年度平均气温,红色表示比平均气温更暖的年份,蓝色表示更冷的年份。

从图表中可以看出,直到20世纪初,有些年份稍暖,有些年份稍冷,但长期全球平均气温相对稳定。然后在20世纪中叶的某个时间点,年度平均气温开始持续高于工业化前的平均水平。近几十年来,全球气温一直在稳步上升。

观察全球平均气温上升的幅度,可以发现现在比100年前的平均气温高出约1.1摄氏度。这听起来可能变化不大,但将整个地球的温度提高1摄氏度需要巨大的能量。正是全球气候系统中新增的这些能量导致了极端天气、危险的热浪、冰川和极地冰盖融化,进而导致海平面上升。

能源消耗与温室气体排放

那么,为什么全球气温在上升呢?

如果我们观察过去几百年间演变的另一个现象,即我们的能源消耗,可以看到一个类似的趋势:在20世纪初的某个时候,人类开始逐年消耗更多能源,而这些能源主要来自化石燃料,如煤炭、石油和天然气。从这张图表中可以清楚地看到,自20世纪中叶以来,化石燃料的消耗量急剧增加。

所有这些化石燃料消耗之所以令人担忧,是因为燃烧化石燃料会向大气中释放气体,如二氧化碳、一氧化碳和甲烷。所有这些气体都加剧了地球大气层的温室效应。

其原理是:当阳光照射并温暖地球时,地球会将热量辐射回太空。随着大气中温室气体的增加,更多的热量被捕获,导致大气变暖。经过几十年来向大气中排放温室气体,我们已经捕获了大量来自太阳的额外热量。因此,我们看到现在的全球年平均气温比过去高出约1摄氏度。

大气中二氧化碳浓度的变化

另一个自然的问题是:到目前为止,我们向大气中添加了多少温室气体?或者简单地说,我们相对于正常水平处于什么位置?

要回答这个问题,可以查看大气中二氧化碳的长期平均浓度。二氧化碳不是大气中唯一的温室气体,但它是全球变暖最重要的贡献者。

我们能够测量过去80万年的二氧化碳浓度,这听起来可能非常惊人。实际上,这是通过一种巧妙的技术实现的:钻探南极冰盖深处,每一层冰都可以被视为像树木的年轮一样标记其年龄。在这些冰层中,有微小的气泡,它们就像是冻结在时间中的微小大气样本。因此,我们可以直接测量过去数十万年大气中的二氧化碳。

从数据中可以看到,这里有一些有趣的周期性和其他行为。但总体而言,大气中的二氧化碳水平在许多千年里一直非常稳定,直到现在——也就是最近的一百年左右,二氧化碳的含量比过去测量的任何时候都要高得多。这种上升直接源于人类燃烧化石燃料并将这些气体排放到大气中。

二氧化碳浓度加速上升

我们可以放大观察最近几十年,更仔细地观察二氧化碳浓度的上升情况。你会发现,不仅大气中的二氧化碳浓度在强劲上升,而且每过十年,其上升速度都比以往任何时候都快,换句话说,上升正在加速。这意味着每年我们捕获的太阳能更多,这些能量将导致全球气温上升,未来几年的平均升幅将比过去更大。

全球变暖的不均匀性

最后,重要的是要注意地球表面温度的变化并不均匀。为了可视化这一点,美国国家航空航天局的科学家们制作了这段从19世纪末到现在的全球温度异常动画。蓝色区域显示地球在特定年份比平均温度更冷的地区,红色区域显示地球在特定年份比平均温度更暖的地区。

你可以看到,随着时间的推移,一些地区变暖,另一些地区比平均温度更冷,但到了20世纪末进入21世纪,全球大部分地区的平均温度更高。总体而言,陆地上的变暖程度比海洋上更强,而北极地区的变暖程度比地球上任何其他地方都更强。

陆地上变暖更强是预料之中的,因为水比陆地更能反射阳光。为什么极地变暖速度比地球上任何其他地方都快,目前还存在一些争议,但普遍认为这与海冰融化导致的区域反射率变化,以及这些地区的大气模式和天气系统有关。

总结与下一步

简而言之,这就是全球气候变化的“是什么”和“为什么”。我相信你以前已经了解了很多这方面的内容,但我想从这个简单的复习开始,以便在我们深入研究解决气候变化问题的细节之前,大家对基础知识有共同的理解。

除了讨论全球变暖,我还想让你有机会实际操作一些真实的全球温度数据。这就是接下来要做的:在下一个视频中,加入我一起完成本课程的第一个实验,探索全球温度数据。

040:Jupyter Notebook实验室简介 🧪

在本节课中,我们将学习Jupyter Notebook实验室环境的基本操作。如果你已经完成了本专业课程的第一门课,那么你对这个环境应该已经有所了解。本视频将快速概述实验室环境的工作方式,为下一节探索全球温度数据做好准备。如果你已经熟悉Jupyter Notebook,可以直接跳到下一个视频。

概述

Jupyter Notebook是一个用于原型设计和编程的流行开源Web应用程序。它允许你创建和共享包含代码、可视化和文本的文档。在本课程中,我们将这个环境简称为“你的笔记本”。

启动与界面

当你点击“启动笔记本”时,实验室会在新的浏览器标签页中打开,界面如下图所示。

你可以向下滚动,快速浏览笔记本的内容。你会注意到,笔记本中包含文本块和代码块。通常,文本部分会包含操作说明或对代码功能的描述。

文件结构

笔记本通常位于一个包含其他文件(如数据集和其他代码文件)的文件夹中。你可以通过点击左上角的Jupyter图标来查看文件夹中的其他内容。

以下是文件夹中常见的文件类型:

  • CSV文件:这是一种以逗号分隔数值的文件格式,通常用于存储数据。
  • .ipynb文件:这是你正在查看的笔记本文件本身。
  • .py文件:例如 utils.py,我们会在其中放置一些将在笔记本中使用的代码,以保持笔记本界面的整洁。

你无需担心这些后台代码的具体内容,它们只是为了方便而设置的功能。

运行代码单元

要返回笔记本环境,可以点击Jupyter图标,然后选择笔记本文件。

笔记本的工作方式是,你需要从顶部开始,按顺序运行每一个代码单元。后续的每个代码单元都能够基于你在前一个单元中执行的操作进行构建。

如果你熟悉编程但不熟悉笔记本,可以将其理解为一种分步执行应用程序的方式,而不是一次性全部运行。

运行代码单元的方法是:

  1. 首先选中该单元。
  2. 然后点击顶部的“运行”按钮。
  3. 你也可以使用键盘快捷键 Shift + Enter 来运行代码单元。

我将运行笔记本顶部的第一个代码单元。

这个单元的作用是导入本实验所需的一系列Python包。这是在Jupyter Notebook中运行Python程序的常见第一步。我们还会导入之前提到的 utils.py 文件,以便使用其中的函数。

错误处理

在点击和运行代码的过程中,你可能会无意中在代码中引入拼写错误,即使是像多打一个空格这样简单的错误,Python对此也非常敏感。

当你尝试运行该单元时,就会收到类似下图的错误提示。

Python会尝试指出错误所在,例如本例中正确地指出了这是一个“缩进错误”。但如果你不熟悉Python,这些错误信息可能看起来有些令人困惑。

如果你看到错误,请不要担心,这完全正常,很可能只是代码单元中某处存在拼写错误。你可以尝试找出错误原因并纠正它。

如果你无法找出原因或遇到困难,可以重置实验室环境。重置的方法是:点击顶部的“帮助”菜单,然后选择“获取最新版本”。这将使你返回到实验室的最新、干净的版本。即使没有新版本,你也可以使用此功能刷新实验室,获得一个全新的副本,从而清除你在编辑代码时可能引入的任何错误。

总结

本节课我们一起学习了Jupyter Notebook实验室环境的基本操作,包括如何启动、界面结构、文件组成、运行代码单元的顺序与方法,以及遇到错误时如何排查和重置环境。掌握这些知识将帮助你在本课程的实验环节中顺利进行。请继续观看下一个视频,我们将开始探索数据。

041:全球气温变化数据探索 🌡️

概述

在本节课中,我们将学习如何探索和分析全球气温变化数据。我们将使用一个包含自19世纪末以来全球数百个地点记录的实际温度测量值的数据集。通过动手实践,我们将深入了解全球气温变化的模式、数据中的潜在偏差,以及如何可视化这些变化。


数据来源与准备工作

在开始之前,我们需要了解数据的来源和准备工作。在笔记本的顶部,你可以找到一个链接,指向本实验所用数据的下载来源。

如果你是一名Python程序员,可能会对点击此处Jupyter图标找到的utils.py文件感兴趣。

这个文件包含了一些将在实验中使用的函数。本课程中的每个实验通常都有这样一个utils.py文件,用于存放部分代码,以避免笔记本内容过于杂乱。

通常,你无需关心其中的具体内容。但如果你好奇,完全可以查看一下,了解一些可视化或建模步骤是如何实现的。

同样,你还应该看到一个数据表,描述了本实验使用的具体数据、其来源以及编码方法。

你可以随时通过点击Jupyter图标,然后点击此处的笔记本文件名,导航回我们正在使用的笔记本。


加载与查看数据

上一节我们介绍了实验环境和数据文件,本节中我们来看看如何加载和初步查看数据。

回到笔记本后,你可以运行第一个单元格。如果一切顺利,你将看到所有包成功导入的提示。

通过运行这个单元格,你将读入全球温度数据,并打印出数据集的最后几行,以验证数据是否被正确读取。

当你读入数据后,可以在此处进行抽查,看到它包含一个站点ID列表、站点位置、每个站点的经纬度,以及此处列出的每个年份在该位置的平均温度(摄氏度)。

年份从1880年运行到2021年,因此你拥有全球794个站点大约140年的温度数据。


思考数据偏差

在查看任何数据集时,思考其中可能存在的偏差总是有益的。例如,在本案例中,过去140年来全球温度测量可能发生了哪些变化?花些时间思考可能存在的偏差,以及哪些数据无法被测量。

这是一个小测验,你可以思考哪些因素可能影响了实际进行的测量。无论你查看什么数据,思考数据收集中可能存在的偏差都是有益的。因此,在本案例中,过去140年来全球温度测量可能发生了哪些变化?我们的温度测量能力是否变得更精确?测量地点的分布情况如何?不同测量地点的位置可能如何受到历史上不同时期较富裕社会状况的影响?

在许多情况下,你会看到此处列出的是NaN(非数字),而不是温度值。这仅意味着该年份在该地点没有记录数据。

在本专业课程中,你看到了空气污染传感器测量数据,其中也包含缺失值,在某种意义上与此类似。现在你拥有的是温度传感器数据,而不是空气污染传感器数据。有时没有记录数据,可能是因为该地点的传感器尚不存在,或者传感器因某种原因离线。

因此,你并非在所有年份的所有地点都有温度测量值。但我们限制了这个数据集,只包含在时间范围内至少有90年数据的地点。选择这个阈值(只包含有90年或以上数据的站点)是任意的。你可以选择使用更低的阈值查看更多的站点位置,或者使用更高的阈值查看数据完整性更高的站点。这里我们选择了90年或以上,以仅包含记录年份中至少有大约三分之二具有有效温度的站点。我鼓励你尝试一下,看看那些恰好拥有较长温度记录历史的站点是否存在任何位置偏差。


绘制全球平均温度变化图

了解了数据的基本情况和潜在偏差后,本节我们将通过可视化来观察全球平均温度的变化趋势。

运行这个单元格,你将绘制出本数据集中所有站点合并后的全球平均温度图。此处的文本细节是:通常,当你听到人们谈论全球平均温度上升1度或2度时,他们指的是相对于1850年至1900年工业化前时期计算的基线的上升。

实际上,20世纪之前全球那个时间范围的数据是稀疏的。因此,在实践中计算这个基线的方法是:取1981年至2010年的现代值平均值,然后减去0.69摄氏度,这已被确立为最近几十年与工业化前时期之间的转换因子。你可以点击此处的链接查看参考资料,了解更多关于该转换因子是如何确立的。

因此,你在这里所做的也是同样的事情:取1981年至2010年的平均值,减去常数0.69,然后用每个单独年份的平均值减去所得结果,得到这个图表,其中每个条形都略高于或低于零点。

因此,这里的零代表工业化前基线,这些红色和蓝色条形表示特定年份的年平均温度高于或低于该基线。你可以点击这些条形以查看每个测量的更多细节。

与你在上一个视频中看到的类似,这里的温度正在上升。然而,看起来温度平均从基线上升了约1.5度,而不是你在上一个视频中看到的约1度上升。这是因为本数据集中的所有温度测量都来自陆地测量站,而事实上,陆地上的平均温度上升幅度超过了全球平均水平,这就是你在这里看到的情况。


创建数据地图表示

上一节我们观察了全球平均温度的整体趋势,本节中我们来看看如何在地图上查看各个站点的具体数据。

当你运行下一个单元格时,你将创建数据的地图表示,可以放大查看你正在使用的温度传感器的位置,并且可以点击任何传感器或位置,查看该位置随时间变化的平均温度。

请注意,你现在看到的是垂直轴上的不同刻度。在这里,每个图表都基于该站点位置在整个数据集上的平均值设为零。

需要关注的是大尺度趋势。

你会发现,在许多情况下,温度随时间上升。但在某些情况下,它看起来是平坦的。在少数情况下,它甚至略有下降。这反映了地球表面温度演变并不均匀的事实。因此,请查看全球不同地点的温度是如何变化的。


可视化全球温度演变

运行下一个单元格,你将创建一个由NASA整理的关于过去140年左右整个地球表面温度演变的数据可视化。

因此,你可以使用这个滑块在年份之间前后移动,查看全球温度随时间的变化情况。

最后,在底部,你可以运行这些单元格中的每一个,查看全球变暖在特定地区长期影响的图像。

例如,你可以使用这个滑块来比较全球变暖导致冰融化的影响。

第一个显示的是1989年11月至2022年1月期间南极洲的格伦泽康冰架。

下一个显示的是西藏的冰川正在融化,本例中是1987年10月至2021年10月期间。

最后一个显示的是阿拉斯加的大保罗冰川,从1984年9月到2019年9月。


总结

本节课中,我们一起学习了如何探索全球气温变化数据。我们加载并查看了包含全球794个站点约140年温度记录的数据集,思考了数据收集中可能存在的偏差,例如测量技术、地点分布和历史社会经济因素的影响。我们绘制了全球平均温度相对于工业化前基线的变化图,观察到陆地温度上升幅度(约1.5°C)高于全球平均水平。通过交互式地图,我们查看了各个站点的温度变化趋势,发现变化并不均匀。最后,我们通过NASA的可视化数据和冰川对比图像,直观地看到了全球变暖的长期影响。希望这次动手探索能帮助你更深入地理解全球气温变化的模式和复杂性。接下来,我们将进一步探讨气候变化的影响、应对措施以及人工智能可能提供的帮助。

042:气候变化的影响 🌍

在本节课中,我们将要学习全球变暖已造成的具体影响,以及未来不同温室气体排放情景下的可能后果。我们会看到,即使全球平均气温仅上升1摄氏度,其影响也已十分显著。同时,我们也将了解国际社会为应对气候变化所设定的目标,以及实现这些目标所面临的挑战。

全球变暖的当前影响

在上一节实验中,我们探讨了全球气温如何上升。我们看到,陆地气温的上升速度通常快于海洋,而地球最北端的气温上升速度又比其他任何地方都快。全球气温上升的影响已经以戏剧性的方式在世界各地显现。

以下是当前已观测到的一些主要影响:

  • 冰盖与冰川融化:导致海平面上升,威胁沿海社区,甚至使一些岛屿变得不适宜居住。
  • 极端高温与干旱:引发比过去规模更大、更频繁的野火。热浪导致更多人死亡,并助长疾病传播。
  • 极端天气事件:大气中热能增加,导致飓风、洪水等极端天气事件变得更频繁、更严重。例如,2022年巴基斯坦因气候变化引发的极端洪水使数百万人流离失所数月。
  • 海洋生态系统破坏:海洋变暖导致许多珊瑚礁死亡,引发海底生态系统的极端生物多样性丧失。

因此,气候变化已在全球引发诸多问题。事实上,人们早在几十年前就开始关注气温的上升趋势。

国际社会的应对与目标

面对这些挑战,国际社会已采取行动。1979年召开了第一次世界气候大会。1990年,政府间气候变化专门委员会(IPCC)发布了第一份报告。2005年的《京都议定书》和2015年的《巴黎协定》使世界各国齐聚一堂,承诺减少温室气体排放以应对气候变化。

根据《巴黎协定》,各国同意将全球变暖控制在2摄氏度以内,并努力寻求将升温限制在1.5摄氏度的解决方案。

正如我们所看到的,目前全球气温已上升约1摄氏度。因此,《巴黎协定》代表了一个雄心勃勃的目标,即扭转全球变暖的趋势,阻止当前态势,将总体升温控制在1.5至2度范围内。

然而,联合国最近的一份报告指出,按照当前趋势,到本世纪末全球气温可能上升2.5度或更多,这将对人类和自然生态系统造成灾难性影响。

未来的排放情景

为了直观展示从今天起,不同减排力度与气温上升之间的关系,我们可以先绘制出近几十年来温室气体的增长情况。

在下面的图表中,纵轴是CO₂当量,这是一个将各种温室气体折算成等效二氧化碳的度量单位,单位为十亿吨/年。可以看到,过去几十年,温室气体排放量一直在稳步上升。图中出现的小幅下降是由于COVID-19疫情,但随着生活恢复正常,排放量再次开始增加。

一个名为“气候行动追踪”的组织汇总了一种可视化不同未来排放情景的方法。

以下是几种关键的未来情景路径:

  • 1.5摄氏度路径:为实现将升温控制在1.5摄氏度的目标,温室气体排放的未来轨迹必须如此。这意味着从现在开始排放量需急剧下降,到2030年减少约50%。到本世纪末,排放量需达到净负值,这需要通过减少排放和从大气中清除温室气体(如保护森林、植树造林及新的碳捕集技术)共同实现。但鉴于当前趋势,这种轨迹的急剧转变显然不太可能。
  • 1.8摄氏度路径:基于我们能多快扭转排放趋势的一些乐观但或许并非不现实的假设。
  • 2.1摄氏度路径:基于《巴黎协定》中各国承诺和目标所达成的效果。
  • 2.4摄氏度路径:仅考虑各国为2030年设定的承诺和目标。
  • 2.5-2.9摄氏度路径:根据联合国报告,这是基于当前趋势和政策外推的结果。

纵轴显示的单位是每年十亿吨CO₂当量。需要记住的一个关键数字是:到2030年,每年需要减少或清除300亿吨的排放,才能走上最激进的、仅升温1.5摄氏度的轨迹。如果通过减排和从大气中清除碳的结合,我们能在2030年前实现每年总计300亿吨的减排量,就能走上这条最佳路径。任何不足都将导向其他未来。

理解现状:浴缸比喻

理解我们所处情况的一个简单方法,是将地球大气层想象成一个浴缸,这个浴缸是一个巨大的碳储存库。

碳的自然汇,如植物和海洋,就像是浴缸的排水口。

但我们向大气中添加碳的速度(如同向浴缸注水)快于其通过排水口排出的速度,导致大气中的碳含量随时间不断上升。

如果我们能将排放减少到净零,意味着碳从大气中排出的速度与其注入的速度一样快,这将阻止碳含量进一步上升。但由于大气中碳总量的增加,变暖仍将持续。换句话说,浴缸的水位将保持过高,即使进出水量相等。

要扭转局面并使地球降温,我们需要达到净负状态,即年复一年,我们实际上能够减少大气中的总碳量。

显然,我们现在正处于一个关键时刻,我们所采取的行动将对子孙后代产生深远影响。

总结与展望

本节课中,我们一起学习了全球变暖已造成的广泛影响,包括海平面上升、极端天气和生态系统破坏。我们回顾了国际社会为应对气候变化设定的目标,特别是《巴黎协定》中将升温控制在1.5-2摄氏度的雄心。通过分析不同的未来排放情景,我们了解到到2030年每年需减少或清除300亿吨CO₂当量,才能走上最佳路径。最后,我们用“浴缸比喻”形象地说明了实现“净零”与“净负”排放的重要性。

尽管在目前情况下正确的选择似乎显而易见,但采取行动减少温室气体排放将对许多政府、企业和个人带来实实在在的经济成本,这使得变革困难重重。尽管如此,全球许多团体正在研究帮助减缓或适应气候变化的解决方案。在许多情况下,人工智能可以成为这些解决方案的一部分。在下一节视频中,我们将一起探讨可以采取哪些行动来减缓和适应气候变化,以及人工智能可能在哪些方面提供帮助。

043:人工智能与气候变化 🌍

在本节课中,我们将探讨人工智能如何作为应对全球变暖与气候变化复杂解决方案的一部分。我们将了解缓解与适应两大策略,并分析AI在其中可能发挥的具体作用。


全球变暖与气候变化带来的问题出现在地方、国家和全球各个层面。任何针对这些问题的解决方案都将是复杂的,并且需要个人、组织和政府之间的协作。与本专业系列第一门课程中介绍的案例研究类似,在应对气候变化问题时,确实存在一些AI可以提供帮助的领域,但在几乎所有情况下,AI都只是更庞大、更复杂解决方案中的一部分。

因此,在本视频中,我们将简要介绍几个AI可以作为气候变化解决方案一部分的示例。


两大核心策略:缓解与适应 🛡️

首先,在思考应对气候变化的解决方案时,可以将其分为两大类:缓解适应

  • 缓解:旨在解决问题的根源,主要是减少大气中的温室气体。
  • 适应:旨在帮助我们更容易地适应并承受气候变化带来的影响。

上一节我们介绍了应对气候变化的两大策略框架,本节中我们来看看这两类策略下的具体措施。

以下是缓解策略的一些关键措施:

  • 保护和重新造林:这是目前从大气中去除温室气体的最佳机制。
  • 用可再生能源替代化石燃料,并转向更节能的系统:这是减少温室气体排放的最佳途径。
  • 新的碳捕获技术:未来可能在从大气中去除温室气体方面发挥作用。

以下是适应策略的一些关键措施:

  • 建设更具韧性的基础设施和主动的灾害管理:以承受或更容易从由气候变化引发或加剧的洪水、火灾、风暴或疾病爆发中恢复。
  • 生物多样性监测:监测动物种群或植物物种分布等生态系统,以识别趋势并为政策制定提供信息,从而帮助保护这些生态系统免受气候变化影响。

此外,还有一些解决方案兼具缓解和适应的特性:

  • 城市绿化:在城市景观中增加植物和树木,有助于降温和净化空气,同时减少大气中的温室气体。
  • 水资源保护:有助于减少水资源短缺的影响、保护生态系统,并降低水分配基础设施的碳足迹。
  • 投资可持续农业:即使用更少土地、水和能源,最终对环境影响更小的农业。可持续农业有助于减少关键资源的消耗和温室气体排放,同时也在许多情况下使农业实践适应不断变化的气候。

这只是一个不完整的列表。关于缓解和适应气候变化的更多可能方法,请查阅本周课程末尾列出的一些资源。


AI在应对气候变化中的角色 🤖

了解了主要的应对策略后,我们来看看AI如何在这些领域提供助力。在缓解和适应这两个方面,AI都有一系列的应用机会。

以灾害管理为例,AI可以在早期预警系统以及灾害响应工作中发挥关键作用。具体方式包括通过自动翻译和解释多种语言,以及通过分析灾后图像和其他数据进行损害评估和资源分配。


您将在本专业系列的下一门课程中看到这两个应用的具体示例。

在生物多样性监测方面,AI已通过自动解释图像和音频信号,在陆地和海洋的大量应用中得到部署。您将在本课程的后半部分有机会使用其中一个系统。


在缓解方面,对于可再生能源,AI可以在风能和太阳能发电预测中发挥关键作用,使这些可再生资源作为化石燃料的替代品更具价值和可行性。

您将在本课程的下一周进行风力发电预测的实践。

AI还可以帮助规划新的商业太阳能装置,使其生产力最优且影响最小。

以上只是AI作为更广泛的缓解和/或适应气候变化影响解决方案一部分的几个例子。在下一个视频中,您将听到来自微软“AI for Good”实验室的研究科学家Caleb Robinson的分享,他们将使用AI计算机视觉技术分析现有的商业太阳能装置,以识别在大规模安装太阳能时的潜在风险和机遇。


总结 📝

本节课中,我们一起学习了应对气候变化的两大策略——缓解与适应,并探讨了AI在其中扮演的角色。我们看到,AI可以在灾害预警、生物多样性监测、可再生能源预测与优化等多个具体领域提供技术支持,成为应对这一全球性挑战的复杂解决方案中的重要组成部分。

044:利用AI与卫星影像识别太阳能板

在本节课中,我们将学习如何利用深度学习与卫星影像技术,识别太阳能光伏(PV)系统的位置,并探讨这一技术对可持续能源规划与生态保护的重要意义。


我叫Caleb Robinson,是微软“AI for Good”研究实验室的研究科学家。机器学习与卫星影像技术在全球性问题解决中具有巨大潜力,这令我感到非常兴奋。我将介绍我们利用深度学习方法在卫星影像中识别太阳能板的研究项目,并解释为何这项工作至关重要。

🌞 太阳能光伏系统简介

太阳能光伏系统(简称PV系统)利用阳光发电。2019年,这类可再生能源满足了全球约2%的电力需求。它是实现可持续发展目标的关键技术,例如联合国可持续发展目标七——提高可再生能源在能源需求中的占比。

好消息是,太阳能成本低廉,且建设速度正在加快。根据国际能源署的《世界能源展望》报告,在阳光充足的地区,太阳能光伏已成为历史上最便宜的电力来源。因此,太阳能光伏装置正在快速扩张。2021年,全球新增太阳能发电容量约156吉瓦。

然而,太阳能板需要占用土地。以印度最大的太阳能电站为例,建设1吉瓦的太阳能容量大约需要15平方公里的土地。这意味着,仅2021年新增的太阳能容量就占用了约2400平方公里的土地。

⚖️ 选址的重要性与挑战

太阳能系统的建设地点至关重要。如果选址不当,可能引发当地社区冲突或破坏现有生态系统。

这是一个平衡问题。一方面,可再生能源对于替代化石燃料、减缓气候变化至关重要。另一方面,必须考虑多种需求。例如,将农田改建为太阳能电站可能影响粮食安全,而砍伐树木为太阳能板腾出空间则会损害生态系统、威胁生物多样性。

理解这一过程的第一步,是确定每个太阳能板当前的位置,以及它在建设时取代了何种土地利用或土地覆盖类型。目前,这类数据并不存在。我们仅有国家层面的太阳能容量汇总估算,而不知道每个具体太阳能农场的位置。

🛰️ 卫星影像与人工智能的解决方案

这正是卫星影像与人工智能可以发挥作用的地方。我们可以训练机器学习模型来识别卫星影像中的太阳能光伏装置,然后让这些模型处理覆盖整个国家、跨越不同时间段的影像,从而构建太阳能光伏装置及其建设位置的数据集。

例如,下图展示了在2016年至2020年间,某处农田被改建为大型太阳能电站的卫星影像。

现在的问题是,在初始数据匮乏的情况下,我们如何训练模型来完成这项任务?

🔄 “人在回路”与硬负样本挖掘方法

在我们的研究(发表于《自然·科学数据》的《印度太阳能位置的人工智能数据》)中,我们采用了“人在回路”的方法。

以下是具体步骤:

首先,在已知的少量太阳能位置数据集上,由人工生成粗略的标签。

其次,利用这些标签创建初始训练数据,其中卫星影像的每个像素都被标记为“太阳能光伏”或“背景”。

第三步,使用现有数据集训练一个深度学习模型,然后用该模型对大量卫星影像进行预测。

由于初始训练集质量不高,这些预测结果不会很理想。但我们可以再次引入人工标注员,来逐一判断模型的每个预测是否真的是一个太阳能装置,然后将这些新标记的样本添加回我们的数据集中。

这个过程被称为硬负样本挖掘

现在,利用扩展后的数据,我们可以重复前两个步骤,并不断迭代,直到我们的模型能够准确识别卫星影像中商业太阳能装置的位置。

📊 研究成果与应用

利用上述方法,我们训练了一个模型,并将其应用于覆盖印度全国的影像,最终构建了一个包含1363个太阳能光伏农场的数据集。这些农场的位置如下图所示,每个彩色点代表一个太阳能农场。

为了评估每个农场的选址情况,我们将太阳能农场位置数据集与土地利用数据相结合。分析发现,印度超过74%的太阳能开发项目,建设在了具有自然生态系统保护价值或农业价值的土地覆盖类型上。

该数据集及其洞察,是自然保护协会为印度开发的“Siterite”工具的关键输入。Siterite帮助政策制定者、开发商和金融机构,通过为新的太阳能和风能项目选择影响更低的选址,来减少意外的社会生态影响及相关风险。

最后,我们正在将始于印度的这项工作扩展到全球。我们开发了一个名为“全球可再生能源观察”的工具,您可以通过访问 globalrenewswatch.org 来查看。


总结:本节课中,我们一起学习了如何结合卫星影像与深度学习技术来识别和定位太阳能光伏装置。我们探讨了可再生能源选址面临的平衡挑战,并介绍了通过“人在回路”和硬负样本挖掘方法构建高质量数据集的过程。最终,这些数据为可持续能源规划提供了关键支持,有助于在推进清洁能源的同时,保护生态环境与社区利益。

045:第1周总结 🌍

在本节课中,我们将回顾第一周的核心内容,包括气候变化的基本原理、其影响、应对措施,以及人工智能在其中的潜在作用。我们将以简洁明了的方式梳理关键概念,帮助初学者建立清晰的理解框架。

气候变化概述

气候变化主要由全球变暖驱动,而全球变暖则源于大气中温室气体的增加。温室气体增加的主要原因是化石燃料的燃烧。

公式
全球变暖 ∝ 温室气体浓度增加
温室气体增加 ∝ 化石燃料燃烧

全球温度数据分析

上一节我们介绍了气候变化的驱动因素,本节中我们来看看全球温度的具体变化趋势。

通过分析世界各地的温度数据,我们可以更清晰地了解全球平均气温随时间上升的趋势,以及这种趋势在世界不同地区表现出的不同特征。

气候变化的影响

以下是气候变化带来的主要影响:

  • 洪水与干旱
  • 生物多样性丧失
  • 疾病传播范围扩大

应对气候变化的行动

在了解了气候变化的影响后,我们来看看人类可以采取哪些行动来应对。

为了将全球变暖限制在1.5摄氏度以内,我们需要在2030年前实现每年约300亿吨二氧化碳当量的减排与碳清除总量。并且,我们需要在本世纪末之前实现净负排放。

我们明确了减缓适应这两大行动类别,并识别了属于其中一类或同时具备两类特征的具体行动。

人工智能的潜在作用

当谈到人工智能如何提供帮助时,我们简要提及了一些示例,例如预测风能、灾害准备与响应以及生物多样性监测。这些只是人工智能可助力气候变化解决方案的部分领域。

在思考减缓与适应气候变化的潜在方法时,必须牢记,即使是潜在的解决方案也可能成为新问题的源头。

例如,正如你在上一个视频中Caleb Robinson的演示中所见,商业太阳能农场是一种潜在的减排方式,但如果其选址未经审慎考虑,也可能导致森林和农田的破坏。

从这个意义上说,你需要在项目的所有阶段始终将“不伤害”原则置于首位,以确保不会给人类或环境制造新的问题。

后续课程预告

考虑到这一点,在本课程的剩余部分,你将专注于两个案例研究:一个是风能预测,另一个是生物多样性监测。你在这些案例中将学习的技术并非这些应用所独有,而是可以适配于多种类型的解决方案。

因此,请随我一起进入课程的第二周,深入探讨风能预测。


本节课中我们一起学习了气候变化的基础知识、其广泛影响、人类所需的应对行动,并初步探讨了人工智能作为解决方案一部分的潜力。同时,我们强调了在应用技术时遵循“不伤害”原则的重要性。下一周,我们将通过具体案例开始实践之旅。

046:风力发电简介 🌬️⚡

在本节课中,我们将学习风力发电的基本概念,并探讨人工智能如何帮助预测风力发电量,以应对气候变化挑战。我们将了解风力发电的潜力、面临的独特挑战,以及预测技术对于构建可靠可再生能源电网的重要性。

概述:风力发电的潜力与挑战

风力能源作为化石燃料的替代品,具有巨大的潜力。然而,要使风力能源成为一种可靠的替代能源,存在一些独特的挑战。

最大的挑战之一是,预测明天甚至一小时后风力有多强本身就非常困难。此外,即使提前知道风力强度,要准确确定这如何转化为风电场中每台涡轮机的功率输出,也可能很复杂。

在深入探讨之前,需要快速说明一下。你可能已经听到我使用了“风力发电”和“风能”这两个词。在接下来的课程中,你还会听到我在描述这个项目时,从技术角度使用“功率”和“能量”这两个词。这两个词并不等同。

功率是能量产生或消耗的速率。能量的物理单位是焦耳。功率的单位是焦耳每秒,通常也称为瓦特。因此,在讨论发电时,你可能会听到千瓦或兆瓦。

为了通过一个简单的例子来理解两者的区别:如果你有一个像风力涡轮机这样的电源,你可以用它给电池充电,而电池可以储存一定量的能量。然后,如果你将电池连接到像灯泡这样的设备上,灯泡以特定的功率水平运行,例如40瓦,那么你的电池就能为灯泡供电,直到电池的能量耗尽。

这听起来可能有点令人困惑,但不必担心。功率和能量之间的区别对于你本周材料的学习并不关键。但对于那些热衷于物理单位术语的人来说,本周你将预测的是风力发电功率。不过,在讨论用可再生资源替代化石燃料的更大图景时,你可能会听到我说“风能”。

风力预测的重要性

提前一两天预测近期可用的风力发电量,对于使风力成为可靠的能源至关重要。为了向电网上的所有用户提供不间断的电力供应,风力发电必须与其他能源(包括化石燃料)保持平衡。这将确保在任何给定时刻,供应都足以满足需求。

这要求我们不仅要知道风的行为,还要知道在考虑其他气象因素以及风电场中每台涡轮机的具体特性后,这种行为将如何转化为功率输出。

事实上,能够可靠地预测风力发电是一个非常令人兴奋的潜在解决方案,世界各地的AI研究人员和可再生能源公司已经深入研究这个问题一段时间了。最近的一个例子是,谷歌DeepMind的一个团队发表了一篇论文,证明利用天气预报和风电场涡轮机的历史数据,他们能够有效地将风能的价值提高约20%,因为他们可以提前36小时更可靠地预测风电场的功率输出。

2022年,中国最大的可再生能源公司龙源电力集团与中国大型科技公司百度合作,发起了一项竞赛。他们发布了一个数据集,包含中国一个风电场的历史数据,挑战AI社区的个人利用这些数据开发模型来预测风力发电输出。参与原始提交的研究人员有机会赢得35,000美元的奖金。因此,世界各地的团队都参与了这项激动人心的挑战。在本周的实验中,你将使用相同的竞赛数据集来尝试预测风力发电。

从太阳能预测看风力预测

在更详细地讨论风力发电之前,我们先简要了解一下太阳能预测。这是我曾经工作过的一个领域,当时的方式非常手动。大约20年前,我为联合国以及在利比里亚和塞拉利昂运营的组织工作,我们主要在学校和卫生诊所安装太阳能系统。那时,我们很难预测能源消耗,因此不得不大量超额配置我们所安装的设备。事实上,我们在电池上的花费比太阳能电池板本身还要多,以确保即使出现连续多日阴天等情况,我们也有足够的发电能力。

令人兴奋的是,现在在预测太阳能和风能方面已经取得了许多进展,甚至可以精确到小时,这可以精确地确定需要何种可再生能源和化石燃料的组合。在下一个重点视频中,来自Open Climate Fix的Jack Kelly正在做这件事。他将谈论他和他的团队如何解决预测太阳能发电输出量的问题,以使太阳能成为更可预测、更有价值的化石燃料替代品。

总结

本节课中,我们一起学习了风力发电的基本原理及其在应对气候变化中的重要性。我们探讨了准确预测风力发电量对于电网稳定和整合可再生能源的关键作用,并了解了AI技术在此领域的应用潜力。我们还通过太阳能预测的例子,看到了类似挑战的解决思路。在接下来的课程中,我们将深入分析风力预测的数据集并着手设计解决方案。

047:使用机器学习预测太阳能发电 🌞⚡

在本节课中,我们将跟随杰克·凯利(Jack Kelly)了解他如何利用机器学习技术来预测太阳能发电,以及这项工作对于应对气候变化和优化电网运行的重要意义。

背景介绍

我是杰克·凯利,是“开放气候修复”(Open Climate Fix)的联合创始人。我是一名机器学习研究员,同时也对气候变化深感忧虑,并致力于为此做出贡献。

我的博士研究方向是电力分解,即尝试为用户提供按电器分类的详细电费账单。例如,用户可能会收到一封邮件,告知他们在冰箱上花费了10英镑电费,在电视上花费了2英镑。这项工作的初衷是希望人们能以更经济理性的方式使用能源。

博士毕业后,我进行了一段短暂的博士后研究,随后加入了谷歌DeepMind团队,从事风电功率预测工作。我非常热爱那份工作。之后,我离开了谷歌DeepMind,并于2019年初共同创立了“开放气候修复”。

创立“开放气候修复”的初衷

我们将“开放气候修复”设立为非营利组织,其中一个主要原因是,我们相信有许多人(可能就像正在观看课程的你们一样)热切地希望为解决气候变化贡献力量,但可能因为无法获取合适的数据或不清楚具体该解决哪些问题而受阻。

如果我们能够为这些人扫清障碍,至少能汇集大量的集体智慧和知识,共同致力于解决这些问题。

当前工作:太阳能发电临近预报

目前,我们专注于太阳能发电的临近预报。这意味着我们试图对未来几小时的太阳能发电量进行预测。

那么,为什么这很重要?为什么人们需要更精确的电力预测?原因有很多,但我们目前最关注的是帮助电网运营商更好地调度所谓的“可调度发电”。

通常,这指的是由天然气驱动的大型发电机组。目前,只要电网中有太阳能发电,负责调度电网的人员就清楚地知道,随时可能有一大片乌云飘过,在短短一分钟左右的时间里导致巨大的发电量(例如千兆瓦级别)消失。

电网的物理特性要求,在任何时刻,电力供应必须与需求精确匹配。我们允许电力需求几乎自由变化(虽然有一些调节机制),因此,任务就是尝试调度发电,使其跟随需求变化。

电网调度的挑战与“旋转备用”

然而,许多大型可调度发电机组从冷启动到并网发电需要很长时间,有些甚至需要数小时。因此,当一大片乌云导致大量光伏发电(太阳能发电)突然消失时,你无法临时决定启动那个巨大的发电厂。

相反,你需要让这些大型发电机组保持低功率运行状态,例如以最大输出功率的50%运行。在这种状态下,机组处于热运行状态,控制室有人值守,并且可以在几分钟内快速提升功率。这种状态下的机组统称为“旋转备用”。

顾名思义,这就是与电网同步旋转、随时可以快速增加功率的备用发电能力。但事实证明,这些燃气发电机组在50%功率下运行时,其燃料效率只有满负荷运行时的约一半。

精确预测的价值

如果我们有更精确的预测,我们就可以让更少的燃气电厂以更高的负荷率(接近其最大输出)运行,因为我们对未来几小时的太阳能发电情况更有把握。这样,我们就可以优化掉系统中的一些冗余,即那些为旋转备用预留的巨大容量空间。

这不仅能降低终端用户的成本(因为平衡电网的成本最终由我们这些能源用户承担),更重要的是,它能减少碳排放。这正是我们专注于太阳能发电预测的核心原因。

技术方法:卫星图像与机器学习模型

具体来说,我们使用卫星图像进行预测,每五分钟就能获取一张新的卫星图像。我们正在试验一些相当新的机器学习模型。

目前,我们正在试验DeepMind于2021年夏末发布的Perceiver IO模型。在Perceiver IO的论文中,他们讨论了结合视频和音频数据并取得优异成果的方法。

在能源预测领域,我们有一个直觉:你仍然希望使用这种多模态的理念。这里的“模态”可以包括气象站的测量数据、卫星图像、数值天气预报等。所有这些都可以被视为对同一物理系统的不同视角。

在人工智能领域,人们长期认为,要创造一个能在现实世界中导航的真正智能体,不能只训练它处理单一模态的数据。它需要能够处理图像、声音、触觉等,这样才能获得对物理世界更深层次的理解。

我们推测,能源预测可能也是如此,你可能需要所有这些对同一物理系统的不同视角。因此,我们对Perceiver IO模型感到非常兴奋,也非常感谢DeepMind发表了那篇论文并抽时间与我们交流。

开源与合作

这就是我们正在从事的工作。我们所有的项目都是开源的,代码托管在GitHub上。我们非常欢迎大家的贡献。你只需要访问 github.com/openclimatefix(所有字母连在一起)就能找到我们的资料。

最后,我衷心感谢大家学习这门课程,感谢你们花费时间和精力思考如何利用机器学习——虽然听起来有点老套——让世界变得更美好。世界需要更多像你们这样的人。你们正在做的事情让我感到非常兴奋,非常感谢。希望以后能再见,谢谢,再见。

048:AI为善框架 🧭

在本节课中,我们将学习AI项目开发的通用框架。该框架包含四个阶段:探索、设计、实现与评估。我们将以风力发电预测项目为例,逐步讲解每个阶段的核心任务与注意事项。


项目框架概述

在开始具体项目前,我们先回顾本专业课程第一课中介绍的项目框架。该框架将项目开发分为四个阶段:探索、设计、实现与评估。每个阶段都有其特定目标与任务。

以下是框架的四个阶段:

  1. 探索阶段:联系利益相关者,定义待解决问题,评估可行性,并判断AI是否能为核心解决方案增添价值。
  2. 设计阶段:构建解决方案原型,制定模型策略,深入调查数据,并思考如何确保数据隐私及用户如何与系统交互。
  3. 实现阶段:将模型“产品化”,即把测试环境中的设计部署到生产环境,并与用户界面集成,同时测试系统性能与可用性。
  4. 评估阶段:评估系统影响,沟通研究发现,并决定后续步骤。

这个框架并非严格的线性流程。在后续阶段,你可能会发现需要返回之前的阶段进行迭代优化。


阶段详解与迭代过程

上一节我们介绍了框架的四个阶段,本节中我们来看看各阶段的具体工作内容以及它们之间如何迭代。

探索阶段

探索阶段是项目的起点。在此阶段,你需要与利益相关者沟通,明确要解决的核心问题,并评估使用AI技术的可行性与价值。

设计阶段

在确认项目前景后,便进入设计阶段。此阶段的核心是构建解决方案原型并规划技术细节。

以下是设计阶段的主要任务:

  • 原型设计:创建解决方案的初步模型。
  • 模型策略制定:规划将使用的AI模型与方法。
  • 数据深度调查:进一步分析数据的可用性与质量。
  • 隐私与交互设计:考虑数据隐私保护方案以及系统的用户交互方式。

在设计阶段,你可能会发现探索阶段的一些假设不成立。这时,你需要返回探索阶段,与利益相关者进行更多讨论,或重新定义问题陈述。这个过程是迭代的。

实现阶段

设计确定后,进入实现阶段。此阶段的目标是将设计“产品化”,并为部署做好准备。

以下是实现阶段的主要任务:

  • 模型产品化:将测试环境中的模型部署到生产环境。
  • 系统集成:将模型与用户界面等其他系统组件集成。
  • 性能与可用性测试:全面测试系统的表现和用户体验。

在实现过程中,你可能会发现设计的某些部分不可行,需要返回设计阶段进行调整。这也是一个常见的迭代路径。

评估与部署阶段

系统实现并满意后,便可部署。部署远不止“按下一个按钮”那么简单,它涉及大量技术细节,但本课程不深入讨论这些。

部署后,便进入评估阶段。你需要评估系统产生的影响,沟通你的发现,并决定下一步行动。

此时,可能有几种常见情况:

  • 你可能希望调整实现细节,于是返回实现阶段,最终重新发布产品的更新版本。
  • 你可能发现设计未能达到预期,于是返回设计阶段,重新构思系统的某些组件。
  • 你可能决定探索初始问题的新方向,或开始研究一个全新的问题。

实际项目开发过程可能比这个简化的框架图更为复杂。但时刻牢记这个框架,能大大提高项目成功的概率,或至少在你偏离轨道时,帮助你尽快识别问题并回归正轨。


总结

本节课中,我们一起学习了AI项目开发的四阶段框架:探索设计实现评估。我们了解到各阶段的核心任务,并认识到阶段间的迭代是项目成功的常态。在接下来的课程中,我们将以风力发电预测项目为例,正式开始“探索阶段”的实践。

049:风力发电探索阶段 🌬️⚡

在本节课中,我们将学习风力发电如何融入现代电网,以及为何准确预测其发电量对于替代化石燃料至关重要。我们还将探讨在AI项目中,如何通过“探索阶段”来明确问题、识别关键利益相关者并制定清晰的问题陈述。


人类利用风能已有数千年历史,但将风能转化为电能仅有一个多世纪。近几十年来,风力发电已发展到相当规模,如今在许多国家的电网能源构成中占据了重要份额。例如在美国,风能目前提供了约10%的总电力。

然而,与化石燃料不同,我们无法选择在特定日期有多少风力可用。这使得完全用风能替代化石燃料变得困难。不过,我们现在可以利用天气预报和描述单个涡轮机在不同条件下行为的传感器测量数据,来预测可用的风力发电量。我们在这方面做得越好,风能作为化石燃料替代品的可行性就越高。

为了更好理解其工作原理,让我们来看一个简化版的电网如何为一座假设城市供电。

在任何一天,电力需求都会根据人们家中使用的电器种类、所需的供暖或制冷量,以及工业和其他基础设施的用电情况而上下波动。电力公司需要监控这种需求,并准备好根据需要增加或减少电力供应。

电网运营商实现这一目标的方式,是组合来自不同来源的电力输出。这些来源包括煤炭和天然气等化石燃料,以及核能、风能和太阳能等其他可再生能源。这样,电网在任何时刻提供的总电量都足以满足需求。

如今,大多数电力公司通过化石燃料满足绝大部分需求,核能可能占10%左右,风能可能占另一个10%,太阳能或水力发电等其他来源可能占一小部分。

因此,电网上的能源供应组合在一天中不断变化。使可再生能源的预测更加准确,能让电力公司避免过度依赖化石燃料供应。

任何时刻可用的风力发电量,很大程度上取决于风力强度,但也取决于大气温度和压力等其他因素,以及风力涡轮机本身的特性。

要使风能被视作可靠的能源,电力公司需要提前许多小时(例如至少提前24小时)知道大约有多少风力发电可用。这样,他们就可以规划来自其他来源的足够输入,以满足需求变化。

这背后的原因是,至少目前,还没有地方可以储存足以供整个城市使用的大规模过剩能源。这意味着发电量需要不断调整以匹配需求。化石燃料和核电站通常需要几个小时才能启动。因此,如果最终可用的风力发电量少于预测,可能会导致电力公司匆忙弥补差额,或被迫让部分用户在一段时间内断电。另一方面,如果发电量超过预测,同样是个问题,因为过剩的能源可能使电网不稳定,而处理掉多余电力并非易事。我甚至见过电网付费请其他电网接收其多余电力的案例。

话虽如此,随着电池技术的改进和规模化,我们可以期待这样一个时代:将风能和太阳能发电场产生的电力储存在大型电池中供日后使用变得更加可行。要了解更多关于可再生能源时代平衡电网挑战的信息,请查看本周课程结束时的资源部分。

现在,让我们回到预测风力发电的问题上。

你现在正处于项目的探索阶段,并开始了解关键利益相关者是谁,例如运营风电场和其他能源生产设施的人员、电力公司的电网运营商,以及天气预报员等。

你也开始思考你的问题陈述可能是什么样子。一个好的问题陈述应该清晰、简洁且具体。它应表达你希望解决的实际世界状况或问题,以及涉及的关键人员或群体,但不应涉及你可能用来解决问题的具体技术。

你的问题陈述还应从具体细节上,清晰地说明项目成功的结果会是什么样子。

电网运营商需要提前若干小时或数天知道有多少风力发电可用。具体提前多久取决于你正在处理的场景,但在本周的实验中,我们选择提前24小时作为预测所需的时间范围。

因此,结合你已识别的利益相关者以及目前所知,一个好的问题陈述可能是:电力公司需要至少提前24小时对风力发电输出进行可靠预测,以便更好地规划电网中其他电力输入源的需求。

撰写一个好的问题陈述是重要的早期步骤,因为如果你对自己试图解决的问题不够清晰,在项目开发的其余部分很容易偏离轨道。像这样清晰的问题陈述,能让你看到项目成功的结果是什么样子,并帮助你和你的团队专注于为相关利益相关者构建解决此问题的方案。

它还将帮助你在探索阶段的其余部分,识别能够评估你产品影响的其他领域专家。因此,在识别和接触利益相关者以及定义问题陈述的过程中,你已经完成了探索阶段的前两个步骤。

实际上,你无需将这两个步骤视为顺序进行。你可能首先关注可再生能源整体,并了解到风能是化石燃料有前景的替代品。合乎逻辑的下一步可能是联系过去研究过此问题的其他人。

然后,你可能联系了风力涡轮机专家、负责规划电网供应的人员以及专业天气预报员,以了解更多关于这些事物如何运作的信息。通过在探索阶段迭代这两个步骤,你完善了问题陈述,将其带回给相关利益相关者,并确保大家对目标达成一致。

此时,你也将开始确定在项目结束时衡量哪些类型的成功指标是相关的。这些指标将包括你最终证明已成功解决在问题陈述中详述的问题的所有方式,以及这些方式如何与利益相关者相关。

至此,你已经完成了探索阶段的前两个步骤。在下一个视频中,与我一起思考AI是否以及如何能为你的项目增添价值。


本节课总结:我们一起学习了风力发电在现代电网中的作用和挑战,理解了准确预测其发电量的重要性。同时,我们深入探讨了AI项目“探索阶段”的核心任务:识别利益相关者和制定清晰、具体的问题陈述,这是确保项目方向正确并最终成功的关键基础。

050:风力发电数据探索 🍃

在本节课中,我们将学习探索阶段的关键一步:如何通过分析现有数据,判断人工智能(AI)是否有助于解决我们关注的问题。我们将以风力发电预测为例,具体演示数据探索的流程。

概述:探索阶段的核心任务

探索阶段的最终步骤是确定AI能否帮助你解决希望处理的问题。实际上,在你从利益相关者那里了解更多信息并完善问题陈述的过程中,你应始终思考这一点。与其他现实世界的用例一样,这个过程可能需要数周甚至数月时间。

最终,AI能否作为解决方案的一部分增加价值,很大程度上取决于你能获取何种数据。尽管如此,无论有无数据,都存在许多AI无法增加价值的项目。因此,尽早认识到这一点至关重要,以避免浪费你的时间,更重要的是,避免浪费利益相关者的时间在一个最终不会成功的项目设计上。

评估AI的适用性

上一节我们介绍了探索阶段的目标,本节中我们来看看如何具体评估AI的潜力。

在风力发电预测的案例中,全球许多团队已经在应用AI并取得了有希望的结果。因此,可以安全地假设这里至少存在一些显著的潜力。在本专业课程的第一门课中你了解到,要让AI在解决问题中发挥作用,你需要能够获取数据。

公式:AI发挥作用的条件

AI发挥作用 = 问题适合 + 数据可用 + 模型有效

这些数据将用于开发和测试潜在的模型。因此,无论其他团队是否已成功解决你希望处理的问题,你都需要仔细查看你能获取的数据,以确定是否拥有继续推进所需的资源。

风力发电预测的数据构成

以下是风力发电预测数据集可能包含的内容:

  • 历史风速预测记录:对未来风速的预测数据。
  • 实际记录的风速:真实测量的风速数据。
  • 其他气象数据:如温度、气压、湿度等。
  • 风机控制系统传感器测量值:来自每个风力涡轮机的运行数据。

这些数据将与每个涡轮机在任何给定时间产生的电量相结合,作为本项目的目标函数

你将使用的竞赛数据集包含了风速、涡轮机控制系统传感器测量值和功率输出的历史数据。让我们进入实验环节,打开Jupyter笔记本来探索你将用于本案例研究的数据。

实验:开始探索数据

对于本项目,你将使用的数据被称为“特殊动态风力发电预测数据集”。通过此链接,你可以找到详细描述数据集的论文。

数据本身由中国龙源电力集团提供,用于他们与百度在2022年合作举办的KDD Cup挑战赛。你可以通过此链接找到关于比赛的更多信息。

1. 导入必要的Python包

与所有实验一样,本实验的第一步是导入所需的Python包,这正是你在第一个代码单元格中所做的。

# 示例:导入常用库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

在这里,你可以看到我们导入了一个名为utils的文件,这是我们为你创建的。与其他实验一样,你可以通过点击Jupyter图标并打开该文件来查看其内容。通常,我们在每个实验中都会提供这样的utils文件,其中包含一些你不一定需要在笔记本中查看的代码。因此,你无需了解其中的具体内容。但如果你是一名Python程序员,完全可以查看每个实验的utils文件,研究幕后运行的代码,你可能会发现一些对未来项目有用的东西。

同样,与所有其他实验一样,你可以在此目录中找到数据,以及描述你将使用的数据集性质的数据表。

回到实验中,当你运行第一个单元格并看到所有包成功导入后,就可以开始了。

2. 读取并初步查看数据

通过这个Excel单元格,你将读入数据集并打印出该数据的前几行。需要牢记的是,无论你探索什么项目,即使数据是公开的,也并不意味着它一定包含敏感数据或可能被用于造成伤害的信息。

在这个特定案例中,龙源电力集团没有透露记录数据的风电场位置。因此,在某种意义上,泄露专有信息的风险已被最小化。但仍然值得考虑使用任何你正在处理的数据集可能造成的潜在风险。

深入研究数据,你会发现数据集中包含以下列:涡轮机ID、日期编号、风速、风向、一些温度和其他值,以及最后两列的功率输出。

在下方,你可以看到关于数据集中每一列包含内容的更多详细信息。同样,你可以查看此论文以获取关于数据的更多细节。

3. 处理缺失值

作为下一步,你将打印出数据每一列中缺失值的数量。你会看到所有列的缺失值数量是相同的。

一个合乎逻辑的后续问题是:这表明确实存在整行数据完全缺失,还是缺失值分散在各行中?

通过下一个单元格,你可以使用“检查”按钮随机抓取五个存在缺失值的行。每次点击“检查”,你都会得到一组新的随机行来查看。这是一个非常好的抽查方法,这里的结论是:当一行包含缺失值时,所有值似乎都缺失了。因此,这些看起来是在分析中无用的行。

对于构建一个实时运行的应用程序,你需要进一步了解这些缺失值的来源,并开始考虑在设计中对它们进行处理。

但现在,我们只是注意到缺失的数据行约占总数的1%。因此,在运行下一个单元格时,你将删除所有包含缺失值的行。

你应该能够在这里确认操作成功,再次打印出缺失值的数量,并发现所有列的缺失值都为零。

4. 计算描述性统计

运行此处的Excel单元格,计算数据集中所有数值列的描述性统计。描述性统计包括最小值、最大值、中位数、四分位数、平均值和标准差等。

通过查看统计信息,你可以了解数据集的一些特征并寻找异常情况。例如,你可能会想知道为什么记录的最低温度约为零下273度,或者风向的范围为何从负3000到超过2000。我不确定那是什么情况。在某些情况下,这些可能只是你可以安全忽略的值,但为了开发模型,了解数据的特征和任何异常情况非常重要。

5. 选择数据子集

该数据集包含134台风力涡轮机的输出信息。如果你正在研究预测整个风电场的输出,你最终需要提出一个包含所有涡轮机的解决方案。

为了在本课程中探索数据,我们将只使用一个数据子集。这里的默认子集是选择功率输出方面表现最好的10台风力涡轮机。当然,你也可以通过更改此数字来选择更多或更少的涡轮机。

至此,你已准备好开始可视化数据。请加入下一个视频,继续完成本实验的其余部分,并可视化你的风力发电预测数据。

总结

本节课中我们一起学习了探索阶段的关键步骤:通过分析数据评估AI项目的可行性。我们以风力发电预测为例,具体操作了数据导入、初步检查、缺失值处理、描述性统计计算以及数据子集选择。这个过程帮助我们理解数据特征,为后续的模型开发奠定基础。记住,扎实的数据探索是任何成功AI项目的第一步。

051:风力发电数据可视化 📊

在本节课中,我们将深入学习风力发电预测数据集的可视化探索方法。我们将通过一系列图表,直观地理解数据的分布、特征间的关系以及时间序列模式。


数据探索概述

上一节我们介绍了风力发电预测数据集的基本情况。本节中,我们将通过生成多种可视化图表,来更细致地观察数据。

请确保您已打开实验环境,并运行了至此为止的所有代码单元格。如果尚未准备数据,请先运行所有前置单元格。

单台风机数据分布分析

现在您已选择了部分风机数据,可以运行下一个单元格,为特定风机的某一列数据生成直方图。

您可以使用下拉菜单,探索不同风机、不同数据列的分布情况。

风机间数据分布对比

直接比较不同风机间的数据分布也很有意义。

在下一个单元格中,您可以选择两台风机以及想要查看的数据列进行对比。尝试选择不同的风机和特征,观察它们在分布上的相似性或差异性。



在任何项目的数据探索过程中,您可能对将要看到的数据特征没有明确的预期,例如单个数据列的分布、描述性统计或缺失数据。现阶段的关键不是试图完全理解数据,而是保持开放的心态,寻找异常值、模式或其他任何突出的特征,以便进一步探索。


多风机整体分布对比

同时比较所有风机的分布也很有用,您可以通过运行下一个单元格来实现。


您可以选择查看数据的箱线图或小提琴图表示。

在小提琴图中,数据分布沿垂直轴显示,而各个风机则沿水平轴排列。

您可以将小提琴图理解为垂直摆放并沿垂直轴对称镜像的直方图。

因此,小提琴图中白色的部分表示数据分布最集中的区域,较薄的部分则表示数据较少。

对于箱线图:

箱体显示了中间50%数据所跨越的范围,而延伸出的“须”则显示了数据的完整范围。

到目前为止,在数据探索中我注意到,不同风机之间,各种传感器测量值和功率输出的分布似乎具有高度的一致性。


原则上,这似乎表明我们或许可以专注于为单台风机建立输出模型,并希望相同或类似的模型也能适用于其他风机。如果每台风机的行为完全不同,那么您当然需要为大量不同的风机建立原型。


但请记住,我们目前只查看了表现最佳的10台风机作为样本。因此,您需要进一步调查,以确认这种一致性是否在数据集中的所有风机中都成立。


特征间关系散点图

在数据探索中,通过散点图观察不同数据列之间的关系也很有趣,您可以通过运行下一个单元格来实现。

这里您看到的是特定风机的风速与功率输出关系图。

您可以使用下拉菜单为不同风机选择不同的变量。

我们包含这个示例散点图是为了向您展示典型风力发电机的风速与功率输出关系。


以及该风机在不同风速下的理论输出。

或许不出所料,您可以看到风速与有功功率之间存在很强的相关性。蓝点显示了在不同风速下测量到的功率输出,橙色线则显示了理论功率曲线,即在任何给定风速下理论上预期的功率输出。

请注意,此示例中的数据并非来自您正在使用的数据集。您可以看到此处水平和垂直轴的范围与您在自己数据图中看到的不同。

对于您正在使用的数据集,龙源电力集团没有提供理论功率曲线的信息,但您可以通过观察风速与功率输出的关系图来了解其可能的样子。

解读此图的方式是:对于这台特定的风机,记录的风速范围从0到约25米/秒,功率输出范围从0到约1500千瓦。在某些情况下,风机显然没有运行,因此无论风多大,功率输出都是0,这由底部这些点表示。

然后,在某个数值范围内,您可以看到随着风速增大,风机通常产生更多的功率输出。大约在每秒10或9米的风速时,功率输出开始达到最大值1500千瓦。超过这个风速后,无论风多大,发电量都不会超过1500千瓦。

这就是理论功率曲线所展示的内容:对于任何给定的风速,显示该风力发电机的预期功率输出。

如前所述,您手头的数据集没有理论功率曲线。但给定这样的图表,您可以对理论功率曲线可能的样子做出相当有根据的猜测。

您也可以查看其他散点图,例如涡轮叶片桨距角与功率输出的关系。


因此,请探索一些不同变量之间、针对不同风机的散点图,看看您能发现什么。

全特征网格图与相关性分析

能够一次性查看数据中所有数值特征的直方图和散点图也很有用。

当您运行下一个单元格时,将生成一个绘图网格,类似于您在本专业课程一的空气质量监测项目中所做的那样。在对角线上,是每个变量的直方图。在网格单元格中,是垂直轴上列出的特征与水平轴上列出的特征的散点图。

与课程一类似,从某种意义上说,这个网格是冗余的,因为右上角和左下角存在对角线镜像。但这可以快速查看数据分布和关系。在这些散点图中,您要寻找的是变量之间的潜在相关性。

因此,运行相关性分析以准确查看这些相关系数的样子也很有用。当您运行下一个单元格时,将为每个数值特征与其他所有特征组合计算皮尔逊相关系数。同样,这是沿对角线镜像的。

对角线上的1仅表示每个特征当然与自身完全相关。

但在所有其他网格单元格中,您可以看到两个特征之间关系的度量,其中接近-1或1的值表示较强的相关性,接近0的值表示没有显著相关性。

在此配色方案中,红色或橙色表示负相关,蓝色表示正相关。

一些立即引人注目的地方是,对角线外有一些值为1,这仅仅意味着这些是冗余特征。在本例中,这三个特征给出了涡轮机三个独立叶片的桨距角,因此在这些特定的涡轮机中,所有三个叶片必须一起移动,使得它们始终处于相同的桨距角。

或许不出所料,与功率输出相关性最强的是风速。😊

查看此处显示的其他相关值,并与上面的散点图进行比较,开始思考哪些其他特征对于预测风力发电输出可能很重要。

时间序列分析

最后,您可以查看数据中每个变量的时间序列图。首先需要将日期和时间戳列合并为一个单一的日期时间特征。

如果您查看描述此数据集的论文,会发现数据集中的第一个日期是2020年5月1日。因此,在运行下一个单元格时,您将从该日期开始创建日期时间。

然后,当您运行下一个单元格时,将为特定风机绘制时间序列图。

现在您看到的是数据集中包含的约八个月的数据,针对特定特征和特定风机。您可以选择其他风机并查看每个变量的时间序列。

为了方便起见,我们添加了这个“修正温度”按钮,以修复我们上面注意到的问题:温度似乎有一个非常低的最小值,看起来不具有代表性。因此,此按钮允许您通过插值填充这些值,以便于可视化。



您可以使用这些字母来放大特定的日期范围。

查看不同的风机,并运行下面的代码,比较两台风机之间单个变量的时间序列。



总结

本节课中,我们一起完成了风力发电预测的数据探索实验。现阶段需要掌握的关键点是:数据中变量之间存在一些强相关性,特别是风速和功率输出之间存在着预期的强相关关系。😊

鉴于风速与功率输出之间的关系,能够进行功率输出预测在很大程度上取决于能够进行风速预测。😊

在本案例中,您的数据集中缺失的一个关键组成部分是风速预测。这通常是任何风力发电预测解决方案中包含的部分。当您进入设计阶段时,将首先研究仅包含历史数据的潜在解决方案,但之后您将创建合成风速预测,以观察这如何提高您的模型性能。

052:风力发电探索阶段检查点 🧭

在本节课中,我们将回顾风力发电预测项目的数据探索阶段。我们将学习如何评估是否已具备进入下一阶段(设计阶段)所需的一切条件,并了解在此过程中需要回答的关键问题。

数据探索回顾

上一节我们介绍了风力发电预测项目的数据探索实验。在本节中,我们来看看探索阶段的主要发现。

在数据探索中,你观察到数据集中的某些变量是相关的。事实上,风速与功率输出之间存在强烈的相关性,但这种关系是非线性的。数据中的这些模式和关系是一个良好的指标,表明人工智能可能有助于利用这些变量的组合来预测输出。

具体来说,这种非线性关系可以用一个公式来描述:功率输出 = f(风速),其中 f 是一个非线性函数。

AI应用的现实依据

现在,正如我们所看到的,现实中有许多团队正在使用人工智能进行风力发电预测,并且结果令人鼓舞。因此,可以更稳妥地说,人工智能通常能为风力发电预测问题增加价值。

对于此类项目,除了直接的利益相关者(如风电场运营商和电力公司)外,联系其他曾处理过此问题的团队并向他们学习最佳实践和需要避免的陷阱,也是非常重要的。

评估项目可行性

无论如何,即使其他团队已经取得成功,你仍然需要确定你所掌握的数据是否足以构建解决方案。

在考虑人工智能能否作为解决方案的一部分增加价值时,开始思考“不伤害”原则并考虑你的工作可能带来的任何负面影响,同样至关重要。

在项目开始时,你的工作可能如何造成伤害可能并不明显。但如果你在项目开发的每个阶段都考虑潜在的负面结果,你将更有可能避免这些结果。

探索阶段结束的检查点

在框架的每个阶段结束时,你都应该向自己和团队提出一系列问题,以确保你已具备进入下一阶段所需的条件。

以下是探索阶段结束时你需要能够回答的问题:

  • 问题一:你要解决的具体问题是什么?
  • 问题二:利益相关者是谁?
  • 问题三:你是否能够获取或获得必要的数据?
  • 问题四:人工智能能否增加价值?具体在何处以及如何增加?
  • 问题五:“不伤害”原则在此如何体现?

风力发电预测案例解答

在你正在进行的风力发电预测示例中,上述问题的答案如下:

具体问题:电力公司需要至少提前24小时对风力发电输出进行可靠预测,以便更好地规划电网所需的其他电力输入源。

利益相关者:包括建造、维护风力涡轮机并从中输送电力的公司、天气预报机构、电力公司内部负责平衡风力发电与其他来源的人员,以及过去或现在研究过此问题的团队。

数据获取:运行风力涡轮机的公司提供了解决此问题所需的数据,因此你能够获取必要的数据。

AI价值:在探索中,你识别了数据中复杂的关系和模式,这意味着人工智能可能能够从这些模式中学习。全球许多团队正在将人工智能应用于此问题并取得有希望的结果,这也证实了这一点。

“不伤害”原则:你已经在重点视频中看到了一个例子,说明太阳能发电场的选址可能会影响当地社区的环境,风力发电场也是如此。在我们正在研究的这个特定用例中,我们关注的是提高现有风力发电系统的效率,而不是寻找安装新系统的地方。但如果你的研究是预测新风电场选址解决方案的一部分,那么你就需要考虑这些以及其他潜在的危害。

总结与过渡

如果你发现自己在未来探索另一个项目时,对其中一些问题的答案仍不清楚,那么最好花更多时间探索问题,直到收集到足以让你安心推进的所有信息。

在本案例中,你已经准备好进入风力发电预测的设计阶段。在下一节课中,我们将一起深入探讨设计阶段。

053:风力发电预测 - 建立基准模型 🌀

在本节课中,我们将进入风力发电预测项目的设计阶段。我们将深入调查数据,开始测试不同的建模策略,并思考最终用户体验。首先,我们将尝试基于数据集中的所有数据(包括风速、温度和每个风力涡轮机的配置)来估算风力发电输出。请注意,这还不是风力发电预测,我们只是用数据建模问题,暂时不涉及未来预测。

数据清理与异常值处理

上一节我们介绍了项目背景和目标,本节中我们来看看如何处理数据中的异常值。首先,我们需要清理数据,移除异常值和其他异常情况。

以下是数据清理的主要步骤:

  1. 导入必要的Python包:首先导入所有需要的Python库。
  2. 读取数据并执行基本操作:读取数据集,将涡轮机数量减少到发电量最高的前10台,并将日期和时间戳列转换为正确的日期时间格式。
  3. 识别并剔除异常值:根据数据描述论文中的“注意事项”部分,识别缺失、未知或异常的条目,并将其标记为排除项。

在现实应用中,需要考虑如何在处理流程中处理这些缺失或异常值。在本实验中,我们将直接剔除所有标记为异常的条目。

建立基准模型

完成数据清理后,下一步是建立一个基准模型。基准模型是指用你能想到的最简单、合理的模型来衡量你能多好地建模这个问题。

在开始探索更复杂的解决方案之前,建立简单模型的基准有几个原因:

  • 你可能会发现,一个简单模型的结果对于最终用例来说已经足够好,从而节省开发和支持长期解决方案的时间和成本。
  • 简单模型的结果通常更容易理解和解释。
  • 如果你后续转向更复杂的建模工作,基准可以提供一个量化的方式,来展示从更复杂模型的投资中获得了多少性能提升。

在之前探索数据的实验中,我们发现风速和发电输出之间存在强烈的相关性。表示相关变量之间关系的最简单方法之一是使用线性模型,即画一条最拟合数据的直线。

公式表示功率输出 ≈ 斜率 × 风速 + 截距

虽然风速与功率输出的关系并不完全遵循直线,但作为简单的基准,这是一个完全合理的起点。这将是接下来实验的第一步。

特征工程

有了基准之后,我们希望看看如何通过更复杂的模型来改进这个基准。为此,下一步是清理数据集并进行一些特征工程,为建模准备数据。

数据集中的每一列都可能包含关于你预测目标(即功率输出)的信息,这些列被称为特征

以下是特征工程的主要步骤:

  1. 合并冗余特征:例如,涡轮机叶片桨距角特征完全相关,是冗余的,可以将其三个特征减少为一个。
  2. 处理角度特征:将用度数表示的角度特征(如风向)转换为正弦和余弦表示。这是因为对于模型来说,0度和360度是截然不同的数字,但通过正弦/余弦转换,模型能识别它们在数值上是相近的。
    • 代码示例
      # 假设 `wind_direction` 是角度列
      df[‘wind_direction_sin‘] = np.sin(np.radians(df[‘wind_direction‘]))
      df[‘wind_direction_cos‘] = np.cos(np.radians(df[‘wind_direction‘]))
      
  3. 清理温度和功率数据:修正温度数据中的异常值(如接近-273°C的值),并将负的功率读数设置为零。
  4. 转换时间特征:将一天中的时间也转换为正弦和余弦表示,原理与处理角度特征相同,以确保模型能理解23:59和00:01在时间上是接近的。
  5. 重新排列列:将所有用于预测的特征放在左侧,将目标变量(本例中为有功功率)放在右侧。

总结

本节课中我们一起学习了风力发电预测项目设计阶段的前期工作。我们首先清理了数据,移除了异常值。然后,我们建立了一个简单的线性模型作为基准,以评估问题的基本可建模性。最后,我们进行了特征工程,包括处理冗余特征、转换角度和时间数据、清理异常值等,为后续尝试更复杂的模型(如使用全部特征的线性模型和神经网络)做好了数据准备。

在接下来的课程中,我们将使用准备好的数据集,尝试用包含所有特征的线性模型和神经网络模型来提升预测性能。

054:风力发电预测 - 改进基准模型 🌀

在本节课中,我们将学习如何改进风力发电预测的基准模型。我们将从简单的单特征线性模型出发,扩展到使用多个特征进行预测,并初步了解特征重要性的概念。


在上一节视频中,我们完成了风力发电预测设计实验的第一部分。我们首先清理了数据集以移除异常值,然后建立了一个使用简单线性模型拟合风速与风力涡轮机输出功率之间关系的基准模型。

之后,我们进行了一些特征工程,以便更好地为更复杂的模型准备数据。

实验下一部分的第一步,是尝试使用不止一个特征的线性模型。

在二维空间中,线性模型相对容易可视化,它仍然只是一条直线。但如果进入三维空间,线性模型实际上会变成一个平面。而在高维空间中,没有很好的可视化方法,但你可以将这个高维线性模型视为一个仍然简单、但使用更多信息来尝试估计目标变量(功率输出)的模型。

因此,在某种意义上,你可以将其视为一个仍然简单、但使用了数据中更多信息的基准。

回到实验笔记本中,此时你已经准备好使用除风速外的所有特征来开发模型,以预测功率输出。

如果你一直跟随实验并运行了至此的所有单元格,你可以从这里继续。但如果你是现在才打开实验,请确保运行至此的所有单元格。

当你运行下一个单元格时,可以在下拉菜单中选择你想在模型中使用的特征。

使用鼠标的Shift键和点击,或使用向下箭头键,可以选择多个特征。然后按下运行按钮来运行模型。

首先,我可以只使用风速来运行,以确认我得到了与上面基准模型相同的结果——一个简单的线性模型。我们之前查看了涡轮机3的基准模型,因此你可以在这里确认你得到的平均绝对误差与上面看到的相同。

在任何数据分析中,加入这类抽查和冗余检查都非常重要。

在这里,你可以再次看到蓝色绘制的是真实数据,而你的模型是这条橙色的点线。右侧则是实际功率输出与预测功率输出的对比图。

然后,你可以回到这里,现在可以从列表中选择多个特征并再次运行模型。

你可以通过点击一个特征,然后使用Shift键和键盘箭头来选择多个特征。我将选择所有特征,看看效果如何。

现在,你会看到你的模型(再次由这里的橙色点表示)在这个风速与功率输出的二维空间中不再遵循一条直线。这是因为它从更多特征中提取了信息。在本例中,它使用了数据集中的所有特征,这使你能够做出稍好一点的预测。

你现在可以看到,平均绝对误差比仅使用风速时要低一些,现在大约为135。这表明,由于你使用了所有特征,你的模型在估计功率输出方面做得更好。

当你使用多个特征时,下方会出现一个名为“特征重要性”的指标。在机器学习中,特征重要性是一个分数或排名,表示每个特征对给定预测的贡献程度。

在这里,你可以看到风速是最重要的特征,这并不意外。但叶片的桨距角也很重要。这些是该特征的正弦和余弦表示形式,以及内部和外部温度。然而,你的其余特征在预测价值方面贡献不大。

但需要注意的是,不应过于从字面上理解这些特征重要性值,它们会因你选择的模型类型而异。现在,请尝试为不同的涡轮机和不同的特征组合运行你的线性模型,看看这些特征重要性排名以及平均绝对误差可能会如何变化。

如果你学习过本专业课程的第一门课,你已经使用过神经网络来估计空气质量。在本实验的下一部分,你将使用非常相似的技术来估计风力发电。请加入下一个实验,我们将使用神经网络来估计风力涡轮机的功率输出。


本节课总结

本节课中,我们一起学习了如何改进风力发电预测的基准模型。我们从单特征线性模型扩展到多特征线性模型,观察到使用更多特征可以降低预测误差。我们还初步了解了特征重要性的概念,它帮助我们理解哪些特征对模型预测的贡献更大。这为后续使用更复杂的神经网络模型奠定了基础。

055:风力发电预测 - 使用神经网络模型 🌀

在本节课中,我们将学习如何使用神经网络模型来预测风力涡轮机的发电功率。我们将看到,相比于之前使用的线性模型,神经网络能够更好地捕捉数据中的非线性关系,从而提供更准确的预测。

概述 📋

在上一个视频中,我们尝试使用数据集中的所有特征来拟合一个线性模型,以估算风力涡轮机的发电功率。我们发现,与仅使用风速相比,使用所有特征时,平均绝对误差(MAE)的估算结果实际上更好一些。

现在,我们将尝试使用神经网络,它能够学习数据中的非线性模式来估算发电功率。如果您学习过本专业课程的第一门课,那么您已经使用神经网络来估算空气质量。现在,您将使用非常相似的技术来估算风力发电。

神经网络简介 🧠

理解神经网络的一种有用方式是,将其视为多个线性模型的堆叠。当我们拥有一个堆叠的或多层的线性模型时,该网络就可以开始学习非线性关系。因此,神经网络是一种核心策略相对简单的算法。

神经网络由这些所谓的“人工神经元”层组成。正如您在之前的课程中所见,神经网络是跨越这些神经元的计算机器,它们接收一组输入,运行计算,然后生成输出。

正如我所说,您可以将单个神经元视为一个简单的线性模型。然后,您将一堆神经元连接在一起,形成神经网络的一层。这样,您就得到了一个可以表示我们在数据中观察到的非线性模式的模型的雏形。

核心概念:一个简单的神经元可以表示为:
输出 = 激活函数(权重 * 输入 + 偏置)

当网络中具有多个层时,一层的输出会被馈送到下一层,该层再生成自己的输出。最终,您到达网络的末端,网络生成最终输出。

应用于风力发电预测 ⚡

在我们的项目中,这个输出将是一个简单的数字,代表对风力涡轮机输出功率的估算。

在左侧,您将输入每组测量值所拥有的所有信息,即:风速、一天中的时间、叶片角度特征以及温度。然后,您要求网络对输出功率进行预测。

您将在已知正确答案的历史示例上训练网络。通过这个练习,网络将学会做出更好的预测。

回到实验环境 🔬

让我们跳回实验环境,看看这是如何工作的。

我们回到了笔记本中。和往常一样,如果您一直跟随学习并运行了实验室中到此为止的所有单元格,那么您已准备就绪。如果您刚刚打开实验室,请确保运行直到这里的所有单元格,然后就可以继续了。

就像之前为线性模型所做的那样,您可以从下拉菜单中选择不同的特征子集,然后单击“运行交互”按钮来训练您的模型。

现在,您可以看到网络训练时的一些输出。您不需要过多担心这些输出的细节,只需知道您的网络正在尝试最小化所谓的损失函数,因此随着每个训练周期(epoch),您的网络都在学习。

模型结果分析 📊

然后,在下方您会看到与之前类似的输出,其中风速与输出功率的真实数据以蓝色显示,而您的模型以橙色显示。

与您的线性模型相比,很明显您的网络在预测输出功率方面做得更好。这在右侧最为明显,您正在查看真实输出功率与预测输出功率的对比。

虽然代表完美模型的直线周围存在一些噪声,但您的模型看起来相当稳定,并且在整个输出值范围内没有系统地偏向一个方向或另一个方向。

您还可以看到,此处打印的平均绝对误差明显低于线性模型。现在,我可以尝试使用数据集中的所有特征,看看效果如何。

特征重要性 🔍

然后,再次向下看,您可以查看特征重要性,这是衡量数据集中每个特征对于此预测模型的相对重要性的指标。

您可以看到,风速仍然是最重要的特征,但叶片角度和温度也很重要。再次强调,将特征重要性视为理解模型行为原因的一个视角很重要。事实证明,仅仅选择不同的模型就会影响特征的相对重要性,当您在此处比较线性模型和神经网络模型的特征重要性时,就可以看到这一点。

动手尝试 🛠️

以下是您可以进行的操作:

  • 尝试为不同的涡轮机和不同的特征组合运行此模型。
  • 看看您能得到什么结果。
  • 您能否在不损失绝对误差性能的情况下,从模型中完全删除某些特征?

总结与展望 🎯

本节课中,我们一起学习了风力发电预测设计阶段的第一部分。到目前为止,您已经证明,如果您知道风的强度、风力涡轮机的一些配置情况以及环境温度,那么您就可以很好地预测该风力涡轮机将产生多少电力。

然而,请记住,这里真正的挑战是预测未来24小时内将有多少能源可用。这就是我们将在下一个实验中要做的事情。请在下一个视频中与我一起,看看我们如何进行风力发电预测。

本节课总结:我们介绍了神经网络的基本概念,并将其应用于风力发电功率预测。通过实验,我们发现神经网络模型比线性模型表现更好,能够更准确地捕捉数据中的复杂关系。我们还探讨了特征重要性,并鼓励您尝试不同的特征组合以优化模型。

056:什么是序列模型 🧠

在本节课中,我们将要学习序列模型的基本概念,并了解如何将其应用于风力发电预测任务。我们将探讨序列到序列模型的工作原理,以及它们在处理时间序列数据时的应用。


在之前的两个视频中,我们完成了设计阶段的第一部分。你清理了数据集,并通过拟合风速与功率输出的线性模型建立了基线。之后,你进行了一些特征工程,为使用更复杂的模型准备数据。你发现了为什么通过包含数据中的所有特征可以稍微改进线性模型。一个神经网络在根据这些输入预测功率输出方面表现得更好。

你还看到,考虑到我们已经讨论过的关于特征重要性的注意事项,风速仍然是模型中最重要的特征。内部和外部温度,以及涡轮叶片的桨距角,也有助于改进你的估计。


在接下来的设计阶段部分,你将应对预测未来风力发电的挑战。你将通过实现一系列不同的模型来尝试预测风力涡轮机未来24小时的功率输出。

你将从一些简单的基线模型开始,看看在不实现任何复杂模型的情况下能做得有多好。然后,你将尝试一种称为序列到序列模型的神经网络模型。在AI模型的世界里,序列到序列模型用于各种任务,如自动补全或文本翻译。

你可能使用过语言翻译应用程序,在那里你可以输入一种语言并立即获得另一种语言的翻译。这是机器翻译的一个例子,在应用程序的背后是一个序列到序列的机器学习模型,将输入文本映射到输出文本。

在这种情况下,你有一个西班牙语的输入序列和一个英语的输出序列。当然,这可以是任何两种语言。虽然机器翻译应用程序远非完美,但它们在最近取得了很大进展,尤其是在广泛使用的语言之间。

这些序列模型在尝试预测任何感兴趣变量的未来行为时也很有用,就像本项目中的风力发电输出一样。因此,像这样的序列模型可以将历史数据以及其他特征作为输入序列,然后生成预测作为输出序列。

如果你学习了本专业课程的第一门课,你会了解到监督机器学习模型需要一组输入和输出来进行训练,而序列到序列模型是监督机器学习的另一种形式。

要训练这些模型之一,你需要提供它想要学习的那种输入序列的示例,以及代表正确答案的输出序列的示例。

在风力发电的情况下,输入序列可以是过去24小时内每小时产生的功率,输出序列可以是未来24小时内每小时产生的功率。你也可以为模型提供多个序列来学习,就像在这种情况下,不仅仅是历史功率,还包括过去24小时内的历史风速、温度和风力涡轮机的配置。

然后,这些输入被组合起来,以生成对未来24小时功率的预测。

在接下来的实验中,你将尝试这两种方法,并发现不幸的是,在风力发电的情况下,仅使用过去来预测未来实际上效果并不好。之后,你将把风速预测纳入你的模型,并发现情况确实有显著改善。在下一个视频中与我一起开始风力发电预测的实验。


本节课中我们一起学习了序列模型的基本原理及其在时间序列预测中的应用。我们了解到序列到序列模型如何将输入序列映射到输出序列,并探讨了在风力发电预测任务中结合多种特征的重要性。

057:建立风力发电基准预测 ⚡

在本节课中,我们将学习如何为风力发电建立基准预测模型。我们将从数据准备开始,测试几种简单的预测方法,并评估它们的性能。通过这个过程,我们将了解预测未来24小时风力发电量的挑战,并为后续更复杂的模型建立一个性能比较的基准。


数据准备 📊

上一节我们介绍了风力发电预测的背景。本节中,我们来看看如何为建模准备数据。

首先,运行代码导入本实验所需的软件包。

# 导入必要的库,例如pandas, numpy, matplotlib等
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

接着,运行下一个单元格来读取数据集。

# 读取经过特征工程处理后的数据集
data = pd.read_csv('wind_turbine_data.csv')

现在,你可以看到数据集已经包含了上一个实验完成的所有特征工程。其中,include列用于指示哪些行包含有效数据,哪些包含缺失值或异常值。此外,这里只包含了性能排名前10的风力涡轮机数据。

以下是数据准备的具体步骤:

  • 选择单一涡轮机:为了简化分析,我们将数据进一步缩减,只包含一台涡轮机(当前设置为6号)。你可以将其更改为其他前10的涡轮机。原则上,分析可以扩展到风电场中的任何涡轮机。
  • 降低采样频率:通过prepared_data函数,将数据从原始的10分钟记录频率降采样为每小时一次。这是为了简化分析,但你同样可以在10分钟的频率上运行后续所有步骤。
  • 处理缺失值与列:用虚拟值替换缺失或异常值,以指示模型应忽略它们。最后,删除turbine ID列和include列。

下一步是将数据分为训练集、验证集和测试集。

# 划分数据集
train_data = data[data['date'] < '2020-11-01']
val_data = data[(data['date'] >= '2020-11-01') & (data['date'] < '2020-12-01')]
test_data = data[data['date'] >= '2020-12-01']

对于接下来要运行的基准建模,实际上并不需要这些分开的数据集。但我们在这里进行划分,是为了让你可以用与后续测试神经网络模型相同的数据来测试基准模型。

你还需要在这里对数据进行归一化。在本例中,这意味着将所有列的值缩放到相同的范围。


建立基准模型 📈

现在我们已经准备好了数据,接下来将建立几个简单的基准预测模型。

基准模型一:随机猜测

你的第一个基准将是一个非常朴素的模型:对未来24小时的功率输出进行随机猜测。你可以运行下一个单元格来测试这个模型。

# 随机猜测模型
predictions = np.random.choice(train_data['active_power'], size=len(test_data))
mae_random = np.mean(np.abs(predictions - test_data['active_power']))
print(f"随机猜测模型的平均绝对误差(MAE)为: {mae_random:.2f} 千瓦")

在绘图中,你会看到模型的预测值(黄色)与实际功率输出(绿色)的对比。这是针对2020年12月几周内的测试数据集。

这里的猜测并非完全随机。它们是从数据集中有功功率值的实际分布中抽取的猜测值。因此,在图中你会看到你的猜测覆盖了实际数据的范围。

这看起来可能不像一个真正的模型。但它现在可以作为一种最坏情况的基准。这里的平均绝对误差(MAE) 告诉你,模型预测值平均偏离真实值多少,单位是你试图预测的目标变量(本例中是千瓦为单位的功率输出)。

公式:MAE = (1/n) * Σ|y_i - ŷ_i|

在这里,你平均偏离了大约380千瓦。这是从实际数据分布中抽取随机预测值的最坏情况。

我们在这里报告的是平均绝对误差。根据你正在处理的应用,其他误差指标如均方误差(MSE)或均方根误差(RMSE)可能更合适。本例选择平均绝对误差是因为它直观,可以直接解读为你试图预测事物的单位(本例中是千瓦)。所以,你的估计平均偏离了380千瓦。任何其他模型至少必须比这个随机猜测模型更好。

基准模型二:昨日重现

接下来,你将尝试运行另一个简单但稍微聪明一点的基准模型。在这种情况下,你的模型将取过去24小时的风力输出,并将其作为未来24小时的预测。你可以运行这个单元格来测试该基准模型。

# “昨日重现”模型:用过去24小时的数据预测未来24小时
predictions_persist = test_data['active_power'].shift(24).fillna(method='bfill')
mae_persist = np.mean(np.abs(predictions_persist - test_data['active_power']))
print(f"‘昨日重现’模型的平均绝对误差(MAE)为: {mae_persist:.2f} 千瓦")

同样,这里你的模型(黄色)和实际值(绿色)是针对2020年12月部分的测试集数据绘制的。你可以看到,你的模型只是通过将实际值在时间上向前移动24小时来进行预测。

这确实是一个非常简单的模型,但你可以看到,在功率输出日复一日相似的那些日子里,它的表现还可以。

尽管如此,这里打印的平均绝对误差表明,你的预测平均仍然偏离大约335千瓦。这并不比随机猜测好多少。因此,从误差减少的角度来看,从前一天预测后一天只比完全随机的基线好大约12%。

你还可以使用滑块来尝试预测未来更少的小时数。它当前是24小时,但可以将其滑回。

# 使用交互式滑块调整预测步长(例如12小时、1小时)
# 此部分代码通常涉及交互式控件,此处为概念展示
prediction_horizon = 12 # 可调整为1, 6, 12, 24等

这里发生的情况是,使用这个基准,我们现在不是猜测24小时后的功率与现在相同,而是猜测12小时后的功率相同。你可以看到你的总体误差减少了。

现在,只预测未来12小时,你能更好地捕捉到这些大的峰值。但那些低输出日期的预测几乎完全错误。

如果将其减少到仅预测未来1小时,意味着你的模型只说一小时后的风力发电功率将与当前测量的相同,那么结果看起来非常棒。我们从24小时预测时基线改进约12%,到仅预测未来1小时时改进约80%。这应该让你很好地体会到,预测一天后的风力发电比预测一小时后要困难得多。

基准模型三:移动平均

运行下一个单元格,尝试一个不同的基准:计算历史数据的移动平均值来预测未来。

# 移动平均模型:用过去24小时的平均值预测未来
window_size = 24
predictions_ma = test_data['active_power'].rolling(window=window_size).mean().shift(1)
mae_ma = np.mean(np.abs(predictions_ma - test_data['active_power']))
print(f"移动平均模型的平均绝对误差(MAE)为: {mae_ma:.2f} 千瓦")

这里,你现在取过去24小时的平均值来做出未来预测。你可以使用这个滑块查看未来1到24小时的预测情况。

你可以看到,这个模型也比随机猜测好不了多少。当你预测未来24小时时,它实际上比你上一个基准模型表现更差。如果你将滑块向下滑动到1,那么你就是在用过去24小时的平均值来预测未来1小时,这比预测24小时后的表现要好。所以,再次证明预测1小时后比预测24小时后更容易。但总体而言,这个模型并没有比之前的基准做得更好,事实上,这比仅用最近一小时进行预测还要差一点。


总结 🎯

本节课中,我们一起学习了为风力发电预测建立基准模型。

我们首先准备了数据,包括选择单一涡轮机、降采样和处理缺失值。然后,我们建立并测试了三个简单的基准模型:

  1. 随机猜测模型:作为最坏情况基准,其平均绝对误差约为380千瓦。
  2. “昨日重现”模型:用过去24小时数据预测未来24小时,误差约为335千瓦,仅比随机猜测稍好。
  3. 移动平均模型:用过去24小时的平均值预测未来,性能并未显著优于前一个模型。

通过这些基准模型,我们了解了预测未来24小时风力发电的难度,并获得了模型性能的底线参考值。最重要的是,我们发现预测一小时后的发电量远比预测一天后要准确得多。

虽然这些简单模型的表现并不出色,但请不要气馁。一旦我们开始结合其他变量,我们将看到这些预测值得到改善。请继续学习下一课,我们将开始测试一些序列模型。

058:20_风力发电用序列模型改进性能 🍃

在本节课中,我们将学习如何使用序列模型来改进风力发电的预测性能。我们将从数据准备和基线模型出发,逐步构建更复杂的神经网络模型,并评估其预测效果。


在风力发电预测实验的第一部分,我们准备了数据集并建立了一些基线模型用于比较。接下来,我们将从上次结束的地方开始,转向更复杂的序列模型。

如果你已经打开了实验环境并运行了至此为止的所有代码单元,那么你可以从这里开始,跟随接下来的步骤。如果你刚刚打开这个实验,请务必从顶部开始,运行所有直到此处的代码单元。


在训练和测试模型之前,我们将运行接下来的两个代码单元来可视化训练集、验证集和测试集数据,以便更好地理解如何训练一个序列模型。

第一个代码单元创建了数据集的版本,这些版本通过屏蔽缺失或异常值,更容易进行可视化。

当你运行下一个代码单元来可视化数据时,你将看到两个图表。

上方的图表展示了数据集中包含的整个八个月期间,特定涡轮机的功率输出。这是我们旨在预测的变量。对于第一个模型,我们将简单地使用历史功率输出来预测未来的功率输出。之后,我们会在输入中包含其他特征来进行预测。

下方的图表展示了其中一个其他特征,例如风速。你可以使用这里的下拉菜单来更改第二个图表中查看的特征。

蓝色和绿色部分分别代表训练集和验证集,它们将在神经网络的训练过程中使用。红色部分代表测试集,我们已经用它来测试基线模型,并将用它来测试每个神经网络模型的性能以进行比较。

数据的划分方式是:前五个月左右的数据用于训练,接下来的两个月左右用于验证,最后一个月用于测试。这里的主要要点是,你的神经网络将尝试从每个变量的历史数据中学习。


目标变量和预测变量都是为了预测未来。学习过程包括在蓝色所示的数据上进行训练,并在绿色所示的数据上进行定期评估。当模型似乎不再有改进时,我们将停止训练,然后在红色所示的数据上进行测试,这些数据在训练过程中从未见过。

为了更好地可视化训练过程的工作原理,运行下一个代码单元,查看在训练中使用的输入和输出序列示例。

这里,你看到的是左侧绿色显示的24小时数据,以及右侧橙色显示的另一24小时数据,它们都是关于目标变量“有功功率”(即我们所说的功率输出)。因此,在这种情况下,网络的输入将是左侧绿色的数据序列,而你想要预测的输出是右侧橙色的序列。

在训练过程中,你将向网络展示许多这样的示例,以便它学习可能有助于预测未来24小时情况的任何模式。

这里你看到的只是一个示例,展示了如何使用过去24小时的有功功率来预测未来24小时。但你也可以在输入中包含其他变量(如风速、温度和涡轮机配置)过去24小时的数据,你将在下面看到这样的示例。

通过这个滑块,你可以看到在训练中使用更多历史数据(例如长达14天)会是什么样子。这里只是向你展示,你可以使用这里绿色显示的整个14天数据序列,再次预测右侧橙色显示的未来24小时序列。

从这个意义上说,你在输入序列中使用的历史数据量本质上只是模型的另一个参数。同样,你可以决定训练一个模型来预测少于或多于24小时的未来。


现在,你准备好训练第一个神经网络模型了。

运行下一个代码单元,仅使用目标变量“有功功率”的历史数据进行训练。

这里的参数 days_in_past 默认设置为1,但你可以将其更改为另一个值,以尝试使用更多历史数据进行训练。

如果你是Python程序员,可以查看 utils.py 文件并查看 train_lstm_model 函数,以了解更多关于这个特定神经网络序列模型的内部工作原理。你会注意到模型开始训练,并计数周期(如1/20、2/20等),然后它在仅仅四个周期后就停止了。这是因为对于这些特定模型,很容易对数据过拟合,即仅仅拟合训练数据中的精确模式,而不是数据中更普遍的模式。所以你会看到这里的打印输出,上面写着“训练提前停止以防止过拟合,因为验证损失连续两个步骤增加”。换句话说,虽然训练数据的损失在下降,但留出的验证数据告诉我们,这种损失下降是由于过拟合,而不是因为模型变得更准确。


你可以在这里的 Val loss 中看到验证损失被打印出来,并且在连续步骤中上升。如果你不是AI从业者,不必太担心这意味着什么,但我只是想提一下,这样就不会对训练为何提前停止感到困惑或神秘。

一旦你的模型完成训练,你将在这里看到一个图表,其中模型预测以黄色显示,真实值以绿色显示。


你会发现,预测未来24小时,你的模型表现并不好。事实上,它并不比你的基线模型好。这是一个很好的例子,不幸的是,一个复杂的模型相对于简单的基线(即预测未来24小时与过去24小时相同)几乎没有改进。

你可以再次运行这个滑块,让模型只预测未来一小时,你会看到它做得更好。但请记住,我们的目标是预测未来24小时。所以接下来,我们将尝试添加更多特征。

运行下一个代码单元,使用数据集中所有特征的历史数据来训练一个新的序列模型。同样,你可以尝试更改 n_days 变量,在每个训练集中使用更多历史数据。


这个图表显示的输出与你之前看到的相同。在这里,你可以看到预测24小时后的情况似乎并没有变得更好。


事实证明,至少在这种情况下,使用过去来预测未来并不是很成功。值得庆幸的是,在风力发电预测的真实场景中,你还可以获得天气预报,这将允许你改进模型的预测功率。

正如你在上一个实验中看到的,风速和温度都是预测功率输出的重要特征,其他气象因素也可能产生影响。


本节课中,我们一起学习了如何为风力发电预测构建和训练序列模型。我们从仅使用目标变量历史数据的简单模型开始,然后扩展到包含所有特征。我们发现,仅依靠历史数据预测未来24小时具有挑战性,模型性能并未显著超越简单基线。这突显了在实际应用中结合天气预报等外部信息的重要性。

059:风力发电预测(二)—— 整合风速预测 🌬️📈

在本节课中,我们将学习如何将风速预测数据整合到风力发电预测模型中。上一节我们介绍了仅使用历史数据进行序列模型训练的局限性,本节中我们来看看如何通过加入风速预测信息来显著提升模型的预测能力。

概述:整合预测信息的重要性

在之前的视频中,我们完成了使用数据集中历史数据训练序列模型的实验部分。我们发现,仅使用过去的输入数据很难准确预测未来。考虑到风力发电输出与风速密切相关,而知道今天的风速情况并不能告诉你太多关于明天风速的信息,这个结果或许并不令人意外。

第一步:模拟“完美”风速预测

作为向模型添加风速预测的第一步,你可以运行这个代码单元,来模拟在模型训练中包含完美风速预测数据会是什么样子。

# 模拟代码:在训练数据中加入未来24小时的真实风速记录
# 这本质上是一种“作弊”方法,因为在现实训练中无法获得未来的真实测量值

具体做法是,除了历史数据,你将在训练中加入接下来24小时实际记录的风速。这当然是一种理想化情况,因为在现实世界的模型训练中,你不可能拥有未来的风速测量值。

但你可以看到,与本节开头建立的随机猜测基线模型(最差情况)相比,你的模型现在表现要好得多。你可以将这个例子视为一种最佳情况,即你拥有未来24小时风速的完美信息。

第二步:迈向更现实的预测

不过请记住,如果你能在模型中纳入温度、气压或许其他一些气象数据,模型的表现可能会更好。当然,在现实世界中你不会有完美的风速预测。因此,接下来你将通过向风速数据添加噪声,来模拟一个更现实的预测。

但在添加噪声之前,我们先思考一下如何生成一个现实的合成预测。

现实世界风速预测数据来源

如前所述,原始数据集不包含风速预测信息,并且收集数据的风电场位置也未公开。

如果你查看原始竞赛的参与者,你会发现,就像你一样,他们也无法对未来做出非常准确的预测。在这里,通过查看我们可能想从其他地方导入的合成数据,我们可以观察地球上一些实际建有风电场的地区的风数据。

澳大利亚的杰隆就是这样一个地方。下图显示了2022年12月某些日期内,实际风速(蓝色)与预测风速(橙色)的对比。在这个例子中,你看的是对未来三小时的风速预测与实际风速的对比。

通过这个滑块,你可以看到对未来更长时间的预测,其对比情况如何。在这个案例中,最长可以看到对未来五天(120小时)的预测。我们使用OpenWeather API的数据整理了这个例子,并感谢OpenWeather团队允许我们将这些数据用于本课程。

OpenWeather API提供未来最多五天的风速预测,时间间隔为三小时。我们记录了这些未来的预测值,然后在那些日子过去后,也获取了实际记录的风速数据。

我们还为其他一些地点做了同样的工作。你可以使用这个下拉菜单,查看巴西的Porto O Lereb或美国宾夕法尼亚州匹兹堡的相同对比情况。这两个地方都是拥有大型风电场的其他地点。

你可以看到,总体而言,对较近未来的预测至少在定性上比预测更远的未来要好,这符合直觉。

第三步:量化分析预测误差

现在你可以运行这个单元,从量化角度查看风速预测的准确性。这里,横轴是预测未来的小时数,纵轴是对应未来小时数预测的平均绝对误差。同样,你可以在上面查看的三个地点之间进行选择。

因此,你可以看到,根据地点不同,情况略有差异,但总体而言,预测平均偏差大约在每秒1到2米,并且预测的时间越远,误差往往越大。

了解了这种典型误差后,让我们继续通过向从OpenWeather数据中获得的实际数据添加类似数量的噪声,来模拟风速预测。

第四步:生成并可视化合成预测

运行这个代码单元,以可视化实际风速值和模拟的带噪声的预测。你可以移动这个滑块,查看添加不同范围噪声值(从接近零到超过每秒2米的平均误差)时,合成预测会是什么样子。

第五步:使用合成预测训练最终模型

最后,是时候使用你的合成风速预测以及历史数据,训练最后一个序列模型了。

在这里你可以看到,预测未来24小时,你的模型表现相当不错。与基线模型相比,误差减少了近70%。你可以使用这个滑块查看预测少于24小时的情况。与上面的例子类似,预测的未来小时数越少,你通常能做得更好,这是因为你的合成风速预测在这些情况下噪声更少。

正如你所见,这比你之前仅基于历史数据的序列模型有了巨大改进。因此,天气预报将是任何风力发电预测模型的关键组成部分。

总结与展望

在本节课中,我们一起学习了如何将风速预测信息整合到风力发电预测模型中,通过模拟“完美”预测和添加噪声的现实预测,显著提升了模型的准确性。

在现实场景中,你可能会将天气预报的更多方面纳入预测模型,例如温度、湿度、季节变化(因为在这个数据集中我们只有大约八个月的数据),或许还有其他一些气象变量。

就本课程而言,你已经拥有了一个可工作的模型,并对风力发电预测相关的一些挑战有了实际的认识,做得很好。接下来,我们将通过回答在进入解决方案实施阶段之前你需要思考的问题,来结束设计阶段。请加入下一个视频,共同完成风力发电预测的设计阶段总结。

060:风力发电预测设计阶段检查点 🍃

在本节课中,我们将学习如何评估一个风力发电预测项目的设计阶段是否完成,并准备好进入实施阶段。我们将依据“AI for Good”项目框架,通过回答一系列关键问题来进行检查。


上一节我们介绍了风力发电预测的设计工作。本节中,我们来看看如何通过回答几个核心问题,来确认设计是否成熟,能否进入实施阶段。

以下是设计阶段完成前必须审视的四个关键检查点:

  1. 数据问题处理:如何处理数据中的不平衡、偏见、隐私或其他问题?
  2. 模型选择与评估:计划实现何种模型?如何衡量其性能?
  3. 问题解决有效性:你的设计如何解决最初设定的问题?
  4. 最终用户交互:最终用户将如何与你的系统交互?

1. 数据问题处理

针对本风力发电预测案例,所使用的竞赛数据集存在一些问题,包括数据缺失异常值以及缺乏天气预报数据。要在现实世界中推进此项目,你至少需要获取天气预报数据。同时,拥有更高质量的历史数据也会大有裨益。

从“不造成伤害”的角度看,在偏见或隐私方面没有明显问题。然而,在相关的风力发电设施部署领域可能存在一些担忧。因此,这是一个需要与各方利益相关者以及过去处理过此问题的人员进行沟通的领域,以识别潜在的风险和危害。

2. 模型选择与评估

关于计划部署何种模型,同样,在拥有更好数据的真实场景中,你可能会在设计阶段花费大量时间测试不同的模型实现并评估其权衡。

对于风力发电预测,即使预测准确率仅提升1%,也可能在减少化石燃料消耗方面产生巨大影响。

在本案例研究中,你已经有了一个可运行的模型,并使用平均绝对误差来衡量其性能。你可以证明,该模型比随机猜测的准确率提高了约70%

3. 问题解决有效性

我们最初要解决的问题是:电力公司需要至少提前24小时获得可靠的风力发电输出预测,以便规划接入电网的电源平衡。

考虑到如果获得更好、可能更多的数据,结果可能会更优,但基于本项目可用的资源,你的设计已经解决了这个问题。

4. 最终用户交互

在本案例中,最终用户是电力公司的个人或团队。你的设计很可能不会为他们专门设计一个用户界面,而是以一种能够平滑集成到他们现有工作平台或用户界面的方式,来提供你的模型预测结果。具体实现形式可能因项目实施地点和数据使用者的不同而有所差异。


本节课中,我们一起学习了风力发电预测项目设计阶段的检查流程。我们审视了数据、模型、问题解决和用户交互四个关键方面,以确保设计足够扎实,能够进入下一阶段。

虽然本案例没有实施阶段的实验,但这主要是因为解决方案的实施很大程度上取决于你所处项目的具体环境,涉及部署特定的技术软件组件。不过,你仍然可以加入下一节视频,我们将简要讨论在实施和评估风力发电预测项目时可能需要考虑的一些因素。

061:风力发电项目总结 🌬️💡

在本节课中,我们将总结风力发电预测项目的设计阶段,并探讨在现实世界中进行项目实现与评估时需要考虑的关键因素。

上一节我们完成了风力发电预测项目的设计阶段。实际上,全球许多团队正在致力于解决这个问题,并针对我们在实验中遇到的挑战开发解决方案。

正如之前提到的,本项目没有需要您完成的实现阶段实验。这是因为在现实中,此类项目的实现主要涉及定制和优化您的模型,并与不同电力公司使用的各种现有软件进行集成。

尽管如此,在继续之前,我想讨论一下在项目实施和评估过程中您可能会面临的一些考量。

实施阶段的考量 🔧

在数据探索中您已经看到,风速是估算涡轮机发电量时最重要的特征。但其他因素,如温度以及涡轮机本身的配置,也起着作用。

您还发现,虽然不同涡轮机在不同条件下的功率输出行为相似,但每台涡轮机都略有不同。

实际上,在建模功率输出时,可能不存在一个“一刀切”的解决方案。

很容易想象,不同的涡轮机构造略有不同,或者处于我们特征未能完全捕捉的略有差异的环境中,又或者其性能会随着使用年限而下降。

在此类项目的实施阶段,您最终可能需要为每台涡轮机设计一个定制模型。

这可以优化您预测的准确性。

我们在实验中未涉及但同样需要考虑的一个因素是,涡轮机的响应是否会随时间变化。您可能需要开发一个能够随着涡轮机行为变化而自适应调整的模型。

例如,涡轮机可能随时间推移而性能下降,可能随季节变化,或者可能因固件更新使其在给定风速下效率提高而随时间改善。

如果您拥有一个模型,能够在给定特定外部天气条件和涡轮机配置的情况下,准确描述每台涡轮机的功率输出,那么您就为提供有价值的风电预测奠定了良好基础。

再次回顾“AI for Good”项目框架,要成功完成项目实现,您需要肯定回答以下两个问题:

  • 您的模型性能是否可接受?
  • 最终用户能否成功与您的系统交互?

项目评估指标 📊

在项目评估方面,模型的性能是衡量成功的一个指标。但从更高层面看,能够准确预测风电,其真正目的是使风电成为化石燃料的可行替代品,并最终减少化石燃料消耗。




在这种情况下,可行性的一个方面是风电产生的实际经济价值。

正如谷歌DeepMind团队在其关于提升风电价值的博文中指出的,使用AI预测风电并能够提前向电网做出承诺,使其风电场的风电价值提升了约20%。



因此,这反过来使风电成为更具吸引力的投资,并有助于加速从化石燃料向可再生能源的转型。


归根结底,评估您项目最重要的指标,将是您能够减少化石燃料消耗的量。


过渡到天气预测 🌤️

天气预报本身是一个非常复杂的问题。虽然本课程不会深入探讨天气预报的复杂性,但接下来我们将为您带来一个项目聚焦视频,由微软研究员、前斯坦福大学教授莱斯特·麦基介绍如何利用机器学习改进次季节预报。

请观看下一个关于天气预报的视频,之后我将再次与您见面,总结风力发电预测项目的探索阶段。

062:气候建模与预测 🌍🤖

在本节课中,我们将学习气候建模与预测的基本概念,了解传统物理模型的局限性,并探索机器学习如何提升次季节尺度(未来2到6周)气候预测的准确性。

大家好,我是莱斯特·麦基。今天我想讲述一个故事。这个故事关于气候、机器学习以及美国西部。故事从犹大·科恩开始。

犹大是一位气候学家,也是大气与环境研究中心的季节性预测主任。有一天,犹大找到我,表达了他的担忧。

担忧一:历史数据未被充分利用

犹大担心,气象和气候预测领域未能充分利用历史数据。相反,当前的预测格局由动力模型主导。这些是纯粹基于物理的模型,用于模拟海洋和大气的演变过程。

我对动力模型并非专家,但可以简述其原理。首先,我们需要估算当前的天气状况。我们可以在某些地点测量天气,然后估算其他所有地方的情况。接着,我们利用已知的物理定律,了解大气和海洋如何演变,从而模拟出给定当前天气条件下的未来天气。这涉及到模拟所谓的偏微分方程

在实践中,我们无法精确求解这些方程。实际做法是将空间划分为小的网格单元(就像这个地球仪上显示的那样),并将时间离散化为小的增量,然后使用超级计算机进行模拟。

然而,这种方法的准确性是有限的,至少自20世纪60年代以来人们就知道这一点。其局限性源于所谓的混沌现象。这意味着,如果输入数据存在任何误差,这些误差将被迅速放大。因此,当我试图预测两周后的天气时,预测结果会变得非常糟糕。

应对混沌的两种传统方法

业界有两种主要方法来尝试克服混沌带来的问题。

第一种方法称为集合预报。 这意味着使用不同的初始条件(即对当前观测值进行一些扰动)来运行我们的模型,模拟未来,然后从每个模型中获取预测结果,并将它们平均在一起。

第二种常用方法称为偏差校正。 我获取模型的预测结果,查看其过去20年的预测记录,减去预测的平均值,然后加上实际观测值的平均值。在某些情况下,这是历史数据进入预测的唯一方式。

以上是第一个担忧。犹大表示他还有第二个担忧。

担忧二:次季节预测尤其困难

次季节预测尤其不准确。这意味着什么?我们都熟悉天气预报,这是对温度和降水的短期预测。通常,我们信任未来一天左右的天气预报,但对于未来10天或14天的预报,我们就不再信任了。这是有充分理由的,因为那些预测非常糟糕。

在另一个极端,我们有所谓的气候预测,这是对数月、季节、数年甚至数十年的预测。通常,我们在预测这些气候现象时具有更高的技巧和准确性,因为它们平均了更长的时间,目标噪声更小,我们可以做得更好。

然而,在天气预报和气候预测这两个领域之间,存在所谓的次季节预测。这是预测未来2到6周的温度和降水。

这里的预测尤其糟糕,因为天气模型由于混沌现象已经失效,而气候模型又因为平均时间不够长而尚未表现良好。此外,对未来2到6周的预测既依赖于本地的当前天气,也依赖于全球的天气状况,这使得它成为一个极具挑战性的预测问题。

美国垦务局的挑战

事实证明,在犹大最初联系我的时候,并非只有他一个人担心这个问题。美国垦务局(一个政府机构)也关注这个问题。美国垦务局负责管理美国西部的水资源,他们通过美国第二大水力发电生产商向农民提供灌溉用水。他们指出,在过去十年中,美国西部的每个州都经历了干旱,这影响了当地经济和全球经济。

他们非常担心能否提前预测这种情况,因此决定举办一场比赛。他们称之为“次季节气候预测竞技赛”。之所以叫“竞技赛”,是因为在美国西部,那里有牛仔。他们说,如果你能在次季节尺度(未来2到6周)上更好地预测温度和降水,我们将提供80万美元的奖金。

我们决定参加这场比赛。但这项数据科学挑战的一个棘手之处在于,主办方没有提供任何数据。美国垦务局只是说,做任何你想做的事,只要找到更好的方法来预测温度和降水。

构建数据集与解决方案

因此,我们创建了自己的数据集,称之为“美国次季节气候数据”。它包含温度数据、降水数据、气压数据,以及一些更大尺度的现象,如马登-朱利安振荡、厄尔尼诺状态,甚至包含了一些动力模型的预测。



我们将数据放在Azure上,每天在云端更新,你可以通过subseasonal数据Python包访问它。

在此基础上,我们决定构建一些混合(学习+物理)预测模型。我们发现,这些模型将美国使用的业务化纯物理模型的预测技巧提高了一到两倍,并且也优于针对此问题的最先进的机器学习和深度学习方法。

我在这里顶部展示的是CFSV2(气候预测系统第二版),这是美国使用的业务化次季节预测系统。底部展示的是我们新的自适应偏差校正方法,它融合了CFSV2的预测和机器学习校正。你可以看到,在美国各地,我们的方法将预测准确性提高了一到两倍。这是针对温度的预测,我们在降水预测上也看到了类似的效果,预测技巧同样提高了一到两倍。

总结与延伸阅读

本节课中,我们一起学习了传统气候动力模型的原理及其因混沌现象带来的局限性,了解了次季节预测的特殊挑战,并看到了如何通过构建专用数据集和开发混合机器学习模型,显著提升预测准确性。

今天的时间就到这里。如果你想了解更多关于这项工作的信息,我可以向你推荐以下论文。我们在arXiv上有几篇预印本出版物:一篇名为《利用机器学习改进美国西部的次季节预测》,另一篇名为《使用Optimal和Dean进行在线学习》,以及《次季节预测的学习基准》。

感谢大家。

063:吴恩达《AI for Good专业课程》 - 第2周总结 🌬️📊

在本节课中,我们将回顾第二周关于风力发电预测项目的核心内容。我们将梳理从问题定义、数据探索、模型设计到最终思考的完整流程,并总结关键的学习要点。


概述:风力发电预测项目回顾

本周,我们深入探讨了风力发电预测这一具体应用。通过与龙岩电力公司的合作数据集,我们学习了如何利用AI技术预测风力发电量,以帮助电力公司更好地平衡电网供需。

问题定义与背景

上一节我们介绍了项目的背景,本节中我们来看看具体的问题陈述。

电力公司需要平衡输入电网的多种能源,以满足不断变化的电力需求。

对于化石燃料和核能等传统能源,只要有足够的提前通知,就可以增加供应以满足需求。

然而,要使风能和太阳能等可再生能源成为化石燃料或核能的可行替代品,就必须提高其可预测性。这样,可再生能源供应商才能提前向电网承诺他们能够提供的供应量。

针对风力发电这一具体用例,我们写下了一个问题陈述来描述该场景:

电力公司需要至少提前24小时对风力发电输出进行可靠预测,以便更好地规划电网其他电力输入源的需求。

数据探索与关键发现

在数据探索阶段,我们分析了影响风力发电的关键因素。

以下是数据探索中的主要发现:

  • 风速与风力涡轮机的发电输出之间存在强相关性。
  • 这种关系对于每个涡轮机而言略有不同。
  • 发电输出与其他变量(如温度)之间也存在相关性。



模型设计阶段

在模型设计的第一部分,我们确认了风速是预测发电输出的最强特征,同时温度和涡轮机配置等因素也起着作用。

我们比较了不同模型的性能:

  • 线性模型Power_Output ≈ β0 + β1 * Wind_Speed + β2 * Temperature + ...
  • 神经网络:能够更有效地将特征映射到发电输出,表现显著优于线性模型。

在模型设计的第二部分,我们着手解决对未来风力发电进行实际预测的问题。

我们建立了一系列基线模型,以设定最坏情况场景,并测试简单模型(如“未来等于过去”)的表现。

我们测试了一系列序列到序列(Seq2Seq)神经网络模型,使用了数据集中不同的特征组合。结果发现,仅依据过去知识来预测未来尤其困难。

为了模拟更真实的场景,我们生成了合成的风速预测数据。结果发现,将风速预测作为模型的输入,可以显著改进我们的发电量预测。

实施挑战与项目价值

虽然我们可以在设计阶段花费更多时间测试更多模型,但我们总结了设计阶段,并探讨了在真实世界的实施和评估中可能面临的挑战。

以下是需要考虑的关键点:

  • 最终的解决方案可能需要为每个风力涡轮机进行定制。
  • 模型可能需要适应涡轮机行为长期变化的情况。
  • 项目的成功最终取决于预测的准确性,以及这些预测如何使风能成为更具价值的化石燃料替代品,从而减少化石燃料消耗。

核心方法论与迁移应用

本周课程最重要的收获,并非风力发电预测的具体细节,而是掌握了一套可迁移的问题解决框架。

以下是将此框架应用于其他项目时的关键步骤:

  1. 利益相关者分析:识别项目涉及的不同方。
  2. 潜在影响评估:考虑项目可能带来的益处与风险。
  3. 明确问题陈述:清晰定义要解决的核心问题。
  4. 数据探索与理解:深入分析可用数据。
  5. 模型设计与迭代:从探索到设计、实施,并不可避免地循环几次。




尽管不同项目在细节上千差万别,但底层的过程本质上是相同的。当你反思这个风电项目时,请思考如何将相同的框架应用到你感兴趣的问题上。

总结与展望

本节课中,我们一起学习了风力发电预测项目的完整流程,从问题定义、数据探索、模型设计到框架总结。我们看到了AI如何帮助提高可再生能源的可预测性,并掌握了一套可应用于广泛问题的通用方法论。

在接下来的课程中,我们将转向新的主题:监测南非卡鲁国家公园的生物多样性。我将在下周的课程材料中与大家再见。

064:AI与气候变化(第3周)🌍

在本节课中,我们将要学习人工智能如何应用于气候变化与生物多样性监测领域。我们将探讨气候变化与生物多样性之间的相互关联,并介绍一个具体的案例研究:利用AI技术监测南非考国家公园的动物种群。通过本周及下周的实践项目,你将学会使用目标检测技术来自动识别和分类相机陷阱拍摄的动物图像。


气候变化与生物多样性的关联 🔄

上一节我们介绍了本周的学习目标,本节中我们来看看气候变化与生物多样性是如何相互影响的。

气候变化导致全球气温上升、极端天气事件增多,这些变化对生态系统造成压力,从而减少生物多样性。相反,保护自然生态系统和生物多样性有助于吸收二氧化碳,是缓解气候变化的重要工具。

因此,监测生物多样性变化不仅能追踪气候影响,还能为制定缓解政策提供依据。


案例研究:监测南非考国家公园的生物多样性 🦁

在理解了基本关联后,我们将深入本课程的最终案例研究。

该案例研究基于气候变化与生物多样性紧密相连的事实。通过监测生物多样性,可以追踪气候变化的影响,并为制定缓解政策提供信息。

以下是案例研究的具体内容:

  • 项目地点位于南非考国家公园。
  • 使用相机陷阱记录动物图像。
  • 应用AI方法分析图像数据。

实践项目:动物图像自动识别与分类 📸

本节我们将介绍本周及下周的实践项目。

在本周和下周的实验课中,你将创建一个应用程序,用于自动识别和分类国家公园相机陷阱记录的动物图像。

图像目标检测是一种广泛应用于AI领域的技术,从本项目中的动物种群趋势建模,到工业机器视觉和机器人技术,都有其应用。

以下是本项目的几个关键点:

  • 使用目标检测技术。
  • 代码示例:model.detect(image)
  • 方法适用于多种不同场景。

你可以将在本课程中开发的工具应用于你感兴趣的项目,无论是在后院监测生物多样性,还是从事自动驾驶汽车相关工作。


总结 📝

本节课中我们一起学习了气候变化与生物多样性的相互关联,并介绍了利用AI监测生物多样性的案例。通过接下来的实践项目,你将亲身体验如何应用先进AI技术来解决实际问题。

接下来我们将详细探讨气候变化与生物多样性的具体联系,之后会审视AI如何在旨在监测生物多样性的项目中应用,以制定保护自然生态系统的政策。

065:气候变化与生物多样性 🌍🦋

在本节课中,我们将探讨气候变化与生态系统生物多样性之间的深刻联系。我们将了解气候变化如何威胁物种生存,以及健康的生物多样性如何成为应对气候变化的关键部分。

概述:第六次大灭绝与人类活动

我们正处在保护生物学家所称的“第六次大灭绝”之中。这指的是许多生物物种正以恐龙灭绝以来最快的速度消失。大约6600万年前,恐龙以及当时地球上75%的动植物物种一同灭绝。

总体而言,灭绝率的急剧上升归因于过去几个世纪的人类活动,从狩猎、渔业到土地开发和环境污染。然而,近几十年来,人们普遍认为气候变化加速了物种灭绝的速率。

气候变化如何威胁物种生存 🌡️

当动植物面临捕食和疾病等外部压力,或者它们所依赖的生态系统发生剧烈变化时,就会走向灭绝。虽然很难确切指出近几十年成百上千的动植物灭绝事件中,哪些具体归因于气候变化,但不难想象气候变化在其中许多灭绝事件中扮演了重要角色。

总体而言,气候变化给动植物种群带来压力,迫使它们要么适应新环境,要么迁移到条件更适宜的地区。对于陆地上的动植物和其他生物而言,这些压力可能包括干旱、洪水、野火、极端高温,或因海平面上升导致咸水入侵淡水水源。

物种迁移与灭绝案例 🐾

在某些情况下,种群确实可以迁移。《科学》和《自然·气候变化》期刊近期的文章得出结论,我们一半的动植物物种正在迁移。陆地物种正以每十年约17公里的速度向更寒冷的地区移动,而海洋物种向冷水区域移动的速度则快达四倍。

这已经对全球生态系统产生了巨大影响。例如,北极熊因北极海冰逐年减少而受到威胁,这减少了它们的狩猎场,并迫使它们进入新的区域。

在其他情况下,承受压力的物种会直接灭绝,比如布兰布尔礁裸尾鼠。这是一种仅在南太平洋特定低洼岛屿上发现的小型啮齿动物。近年来,当海平面上升淹没该岛后,它变得不再适宜居住,这种鼠类便灭绝了。2019年,它成为首个因气候变化而正式灭绝的哺乳动物物种。

海洋变暖与珊瑚白化 🐠

对于水下动植物而言,迁移或灭绝的主要驱动力是海洋温度的上升。珊瑚礁是地球上生物多样性最丰富的生态系统之一。当水温上升到正常水平以上时,珊瑚会经历一个称为“白化”的过程。在这个过程中,它们会排出通常与之共生的藻类,从而呈现白色。极端的白化事件会导致珊瑚死亡,而随着海洋温度上升,全球的珊瑚礁正在经历这种情况。

联合国气候行动小组估计,仅全球变暖1.5摄氏度,世界上70%至90%的珊瑚礁就会死亡;如果变暖达到两度或更多,超过99%的珊瑚礁将会消失。

未来的风险与基于自然的解决方案 🌳

2022年发表在《自然·气候变化》期刊上的一篇论文中,一组研究人员估计,如果不遏制温室气体排放,到2100年,所有海洋、植物和动物物种中的90%可能面临灭绝风险。不过他们补充说,如果排放量能削减到2015年《巴黎协定》所概述的水平,大部分风险是可以避免的。

构成自然生态系统的动植物物种不仅仅是气候变化的潜在受害者,它们也是潜在解决方案的重要组成部分,尤其是植物。为了实现《巴黎协定》设定的目标,我们需要到2030年每年减少300亿吨排入大气的碳排放。这将通过减少温室气体源(如燃烧化石燃料)的排放,以及从大气中清除温室气体(也称为碳封存)相结合的方式来实现。

植物吸收二氧化碳,它们目前是我们从大气中清除碳最有效的解决方案。联合国减少毁林和森林退化所致排放量计划估计,仅通过停止毁林,我们每年就可以从大气中封存超过30亿吨的温室气体。通过积极管理和恢复森林,到2030年,这个数字将上升到每年50亿吨,并且随着生态系统的恢复,未来还会继续增长。

在联合国另一份近期报告中,他们估计,到2030年,在所有生态系统中实施基于自然的解决方案,每年可减少或清除高达117亿吨的温室气体。

“基于自然的解决方案”这一短语,对于减缓气候变化而言,统指保护、可持续管理和恢复作为天然碳汇或碳库的自然或经改造的生态系统的行动。请注意,这不仅仅意味着保护或恢复某些特定的植物或其他物种,而是保护整个生态系统,而生物多样性可以被视为这些自然生态系统健康状况的衡量标准。

总而言之,保护和恢复所有生态系统的生物多样性,是我们对抗气候变化的关键组成部分。

气候变化与生物多样性的相互影响 🔄

显然,气候变化和生物多样性是紧密相连的,两者相互作用、调节或放大彼此的影响。除了气候变化是生物多样性丧失的主要驱动因素外,生物多样性的丧失也增加了我们对气候变化的脆弱性,并削弱了自然对气候变化的调节能力。

例如,洪水和野火等极端天气事件会导致自然生态系统的丧失。另一方面,生态系统的破坏削弱了自然调节温室气体排放的能力。因此,保护和恢复生态系统对于减缓气候变化至关重要。

然而,从适应的角度来看,湿地、森林和沿海生态系统也有助于抵御洪水和其他极端天气事件。因此,自然生态系统的丧失增加了我们对气候变化的脆弱性。

现状与未来行动方向 📊

不幸的是,与你在第一门课程中看到的空气污染问题类似,生物多样性丧失问题已经处于令人担忧的状态,并且由于人类活动和气候变化本身,情况逐年恶化。生物多样性的保护和恢复将通过政府制定的政策来实现,这些政策可以导致行业实践和文化规范的重大转变。

为了迈向这些未来的政策,我们现在采取步骤监测广泛生态系统的生物多样性、量化人类活动和气候变化的当前影响,并确定向相反方向推动的机会至关重要。

因此,世界各地的团体都在开展监测生物多样性的项目,而在许多情况下,人工智能是解决方案的一部分。在下一个视频中与我一起,我们将看看生物多样性监测领域正在进行的一些激动人心的工作。

总结 🌟

本节课中,我们一起学习了气候变化与生物多样性之间复杂的相互作用。我们了解到气候变化如何通过改变栖息地、引发极端事件和导致海洋变暖,对物种生存构成严重威胁,甚至加速了“第六次大灭绝”。同时,我们也认识到健康的、具有生物多样性的生态系统,特别是森林和植物,是应对气候变化、进行碳封存的关键“基于自然的解决方案”。两者相互影响,形成了一个循环:气候变化威胁生物多样性,而生物多样性的丧失又削弱了我们应对和适应气候变化的能力。因此,监测、保护和恢复生物多样性,对于减缓气候变化和增强人类社会的韧性至关重要。

066:监测生物多样性 🌍

在本节课中,我们将学习如何监测生物多样性。生物多样性监测对于了解和保护生态系统至关重要。我们将探讨几种不同的监测方法,并了解人工智能如何在这些方法中发挥作用。

气候变化与自然生态系统的健康紧密相连。因此,我们减缓气候变化影响和适应其影响的努力,与保护和恢复生态系统密不可分。一项关键行动是监测生物多样性,以便为制定保护和恢复此类生态系统的政策提供信息。

生物多样性监测的多种形式

监测生物多样性可以采取多种不同的形式。以下是几种主要的方法。

  • 安装摄像头和麦克风,以观察陆地或海洋上的动物种群。
  • 进行空中或卫星成像活动,以追踪森林砍伐或动物种群的迁徙。
  • 为单个动物安装地理定位设备,以追踪种群的移动。

在接下来的内容中,我们将通过几个例子来了解不同的监测方法,以及人工智能如何参与其中。

方法一:生物声学监测 🎤

了解特定区域存在何种动物种群的一种方法是倾听它们的声音。

在生物声学监测领域,研究人员在自然环境中(如海洋或森林)放置麦克风,以监听鸟类、昆虫或其他动物的声音。随后可以分析这些数据,以确定录音中听到了哪些动物物种。

虽然训练有素的人类有可能识别录音中不同动物或鸟类的声音,但这些项目通常会在许多不同地点录制数百或数千小时的音频。因此,可以训练人工智能算法来识别录音中的动物和鸟类声音,并实时自动记录多个地点的动物种群。这种规模如果仅靠人力,将是难以完成的。

方法二:空中成像监测 🛰️

监测生物多样性的另一种方法是对自然生态系统进行空中成像。

例如,可以使用卫星成像来绘制森林砍伐地图。美国宇航局的地球观测站有一个项目,用于追踪亚马逊雨林随时间的森林砍伐情况。另一个使用卫星成像的例子是“珊瑚哨兵”项目,欧洲航天局正在通过该项目监测珊瑚白化事件。

空中成像也可以从飞机或无人机上进行,以监测动植物种群。例如,在纳米比亚,环境、林业和旅游部会进行航空调查,以追踪该地区公园和保护区内大象等动物的种群数量。

与生物声学监测类似,空中成像调查会产生大量数据。人工智能计算机视觉技术特别适用于自动检测物体或绘制不同类型地形范围的任务。

方法三:地面图像监测 📸

监测生物多样性的另一种方法是深入生态系统并拍摄照片。

例如,iNaturalist 是一个网站,任何人都可以通过记录当地环境的图像来启动项目或参与现有项目。其中一个项目是“欧洲植物”项目,欧洲各地的个人可以上传自己拍摄的植物照片。

在世界许多地区,研究人员采用的方法是安装固定摄像机或所谓的“相机陷阱”。这些设备由运动探测器触发,能自动捕捉经过其前方的任何物体的图像。多个相机陷阱每天24小时、每周7天持续拍摄图像,一个项目可以快速生成数十万甚至数百万张图像。使用人工智能自动识别这些图像中的内容,可以成为大规模相机陷阱项目中的关键一环。

总结与展望

本节课我们一起学习了监测生物多样性的几种主要方法:生物声学监测、空中成像监测和地面图像监测。这些方法都生成了海量数据,而人工智能在自动分析和处理这些数据方面发挥着关键作用,使得大规模、高效的生物多样性监测成为可能。

需要指出的是,这里提到的项目只是生物多样性监测的几个例子。自然生态系统由从微生物到巨型动物的许多不同物种组成,其中一些生物(通常是最小的那些)很难直接观察。量化最微小生物多样性的方法也可能计算密集。

尽管自然界中所有形状和大小的生物对生态系统的生物多样性都很重要,但通常只有那些引人注目的巨型动物的图片最能引起人们对生物多样性监测或保护的关注或兴趣。

为了确保你在本课程后续部分保持兴趣,我们设计了一系列实验,让你与世界上一部分最具魅力的巨型动物——南非的大型哺乳动物——的图片打交道。在本周及本课程后续的实验中,你将使用来自 Snapshot Safari 项目的相机陷阱数据,该项目旨在监测南非卡拉哈里国家公园内的生物多样性。

下一节课,我们将更深入地了解 Snapshot Safari 项目。

067:快照卡罗项目概述 🦓

在本节课中,我们将学习“快照卡罗”项目。这是一个利用相机陷阱网络监测生物多样性的实际案例。我们将了解项目背景、核心目标、关键利益相关者,并探讨如何定义问题陈述以及评估人工智能在该项目中的潜在价值与伦理考量。


项目背景与目标

快照相机项目是一个名为“快照游猎网络”的大型相机陷阱网络的一部分。该网络建立的目的是测量广泛生态系统和动物物种(包括许多受威胁物种)的基线生物多样性指标和趋势。

快照游猎网络是世界上最大的相机陷阱网络之一,每年收集数百万张图像,以追踪整个非洲受保护生态系统中的动物种群。他们与Zooniverse.org合作,吸引公民科学家帮助标注数据,以便最终能使用人工智能技术进行自动目标检测。

卡罗尔国家公园是位于南非大卡罗地区的一个野生动物保护区。该公园是一个高沙漠生态系统,拥有众多大型哺乳动物物种,包括大羚羊、开普山斑马、红麋羚、西南黑犀牛等。


项目场景与任务

在本项目中,我们假设你是一个团队的一员,团队成员包括保护生物学家和国家公园工作人员。你的工作是构建一个系统,能够自动追踪公园内的生物多样性和动物种群趋势,从而为制定保护公园生态系统的政策提供信息。

在此过程中,你将使用部署在国家公园内的相机陷阱网络收集的图像数据。以下是一个特定相机陷阱拍摄的示例图像。

你的任务是识别任何给定图像中出现的动物。让人工手动审查和标注数百万张图像是不切实际的。我之前提到的Zooniverse项目旨在吸引人类标注足够的数据,以启动构建自动动物检测器的工作。这就是你将在本项目中开始的地方,数据集已通过Zooniverse.org平台由人类志愿者标注。

目前,你正处于项目的探索阶段。你需要采取的关键步骤是与利益相关者接触、定义你的问题陈述,并确定人工智能是否确实能提供价值。


关键利益相关者

在这种情况下,关键利益相关者可能包括安装相机陷阱的研究人员、希望研究数据的保护生物学家、公园工作人员、当地社区以及最终需要根据你的工作结果制定法律或法规的政策制定者。

你在本项目中的角色将是向这些利益相关者提供他们进行必要研究所需的信息,同时确保当地社区不会因你的项目受到任何负面影响。


定义问题陈述

在问题陈述方面,一个好的问题陈述应该清晰、简洁,描述你希望解决的实际问题,并确定关键利益相关者以及你需要向这些关键利益相关者提供什么,且无需提及你认为可能实施的任何具体技术。

在这种情况下,你的问题陈述可能是这样的:研究人员和保护生物学家需要关于卡罗尔国家公园内各个地点每日观测到的动物数量的信息,以便监测生物多样性和动物种群的趋势,从而为制定保护和维护公园生态系统免受伤害的政策提供依据。


伦理与隐私考量

从数据伦理的角度来看,每当你在公共场所(如本例中的公园摄像头)收集数据时,有几件事你应该考虑。本例中的摄像头旨在拍摄任何经过移动的物体,特别是动物,但也可能是人类或车辆。任何包含人类或车辆的照片都有可能等同于个人身份信息,因为个人或车主的身份可能与特定的时间和地点相关联。

就像任何其他个人身份信息一样,其标准应被视为私密信息,未经照片中信息被披露的个人的明确许可,不得存储、共享或发布。

除了个人身份信息的担忧,你还应考虑你的项目可能产生的其他负面后果。在本例中,照片中出现的许多物种因狩猎和偷猎而濒临灭绝。如果你的项目最终揭示了濒危物种在国家公园中最可能出现的地点,并使偷猎者更容易找到它们,这无疑会对当地社区构成伤害,必须避免。事实上,当我处理一个类似的监测动物以防偷猎的用例时,我们正是出于这个原因故意没有公开数据。


总结与下一步

考虑到这一点,探索阶段的下一步是确定人工智能是否能为此项目增加价值。在下一节视频中,我们将一起探索你将在快照卡罗项目中处理的数据。

在本节课中,我们一起学习了快照卡罗项目的背景、目标、利益相关者以及如何定义清晰的问题陈述。我们还深入探讨了在公共空间收集数据时必须考虑的伦理和隐私问题,特别是保护濒危物种信息的重要性。接下来,我们将进入数据探索阶段,评估人工智能解决方案的可行性。

068:生物多样性探索数据 🐘

在本节课中,我们将学习如何为一个生物多样性监测项目探索和分析数据。我们将以南非卡鲁国家公园的动物监测项目为例,了解数据的基本结构、分布特点以及可能存在的挑战。


在上一节视频中,我们启动了一个项目,任务是监测南非卡鲁国家公园的生物多样性和动物种群趋势。我们确定了关键利益相关者并定义了问题陈述。接下来,我们需要确定人工智能是否能为解决方案增添价值。当然,我们已经指出了许多在生物多样性监测项目中应用人工智能的例子。但为了确定人工智能在您的特定项目中是否能增加价值,您需要从查看数据开始。这就是我们接下来要做的事情。让我们进入实验室,深入研究数据。

当您首次打开这个实验室时,会在顶部看到项目描述。如果您点击此链接,可以查看有关CA项目和数据访问的更多信息。

如果您点击另一个链接,将进入Zooniverse.org平台,在那里您可以了解更多关于帮助标注您将要处理的图像的公民科学项目的信息。

在开始运行任何代码之前,请点击左上角的Jupyter图标,打开实验室所在的文件夹。

从那里,请打开数据文件夹。和往常一样,您会在这里找到一份数据表,描述了数据的来源。

数据文件夹内部有更多文件夹,包含动物的图像。每个文件夹都以该文件夹中图像所识别出的动物名称命名。

例如,这里有一个包含狒狒图像的文件夹。您可以点击每张图像查看这些图片的样子。或者,您可以查看另一张照片,比如这张南非林羚(也称为羚羊)的照片。您可以查看图像以了解这些图片的外观。

我建议您花一些时间在这里手动探索数据,看看能发现什么,尝试直观地了解识别这些图像中的动物可能面临的一些挑战。您可能会看到一些情况,比如有些动物被遮挡或几乎完全不可见,有些动物可能距离很远,或者因为图片是在夜间拍摄的,所以不清楚到底是什么动物。

一旦您稍微探索了数据,请返回笔记本。

首先运行顶部的第一个单元格,导入本实验室所需的所有Python包。

运行此Excel单元格,打印出数据文件夹内的文件夹名称列表。在这里,您将再次看到动物的名称,对应您拥有的每个图像文件夹。

运行此处的下一个命令,查看打印特定文件夹(本例中是黑犀牛文件夹)内图像名称列表的示例。

这个快速检查还会告诉您,这里只有10张犀牛图像。在本例中,每个图像的文件名包含有关图像记录地点和时间的信息。这里的KAR_S1和R1标签仅表示这来自Kery数据集,第一季,第一次重复。A01、B03等数字表示相机陷阱的位置。您可以看到这些图片是从,让我数一下,一到三,从不同的相机拍摄的。所以变化不大。

您可以看到,总共有四个不同的相机陷阱捕捉到了这总共十张图像。最后,这个图像标签给出了图像的编号,这是整个数据集中唯一的标识符。

当您运行此Excel单元格时,将运行一个命令,搜索文件结构并提取所有图像信息的数据框。

现在,使用每个图像的文件路径,您提取了相机位置(这是每个图像文件名的一部分)、该图像中识别的动物名称以及该图像的文件路径。您将在整个实验室中使用这些信息来自动访问图像。

使用下一个单元格,您可以高级查看上一个单元格生成的数据框,看到它包含了不同相机位置的所有动物名称。

运行此处的Excel单元格,计算每个相机位置的图像数量。您可以看到,有些位置有数百张图像,而其他位置只有几张。

使用下一个单元格,您可以计算每种动物的图像数量。

在这里,您再次会发现,对于某些动物,有数百张图像,而其他动物的图像相对较少。这是我们在整个实验室中会反复遇到的问题:图像较少时,我们预计机器学习算法的准确性会较低。

如果您不熟悉这些动物名称中的许多,不用担心,您将在这些实验室中逐渐熟悉它们。请注意,这里列出的名称有时顺序不对,例如这个是红麂羚,这个是山斑马,这个是黑背豺,这个是卡鲁鸨(一种鸟)。上面这个是南非林羚,也称为羚羊。

可视化数据集中动物分布的另一种方式是占总数的百分比。这就是您运行下一个单元格时要做的。

现在,这张图表显示了您拥有的每种动物图像总数所占的相对百分比。

在数据探索的这个阶段,主要要理解的是,这是一个不平衡的数据集。正如我们所说,您的数据在所有希望识别的对象类别(本例中是动物类型)中分布并不均匀。

因此,如果您尝试用不平衡的数据集开发模型,将会遇到问题。例如,在这种情况下,您可以看到,即使是一个总是猜测南非林羚的模型,其正确率也会超过25%。在本项目的设计阶段,您将看到一些在建模前平衡数据的方法。

将这项调查更进一步,您可以运行下一个单元格,查看每个单独相机位置拍摄的动物的相对分布。

现在,在水平轴上,您有相机位置标识符的列表。在垂直轴上,您有每种类型动物(在图例中显示)在每个位置拍摄的图像中所占的比例。您可以看到,不仅数据集中动物的相对分布不平衡,而且毫不奇怪,分布也根据相机位置发生了相当显著的变化。

那些从事保护生物学工作的同学,可能已经能够从这些相对分布中得出关于动物在公园中的位置、哪些动物占据相同空间等重要信息。

我们将继续查看实际图像,并思考用于自动动物检测器的人工智能解决方案。请在下一个视频中与我一起开始查看此数据集中的图像。


总结

在本节课中,我们一起学习了如何为一个生物多样性监测项目探索数据。我们查看了数据的结构,了解了它是一个不平衡的数据集,并且动物分布因相机位置而异。这些发现对于后续设计和构建有效的人工智能模型至关重要。在下一节中,我们将开始查看图像本身,并探讨构建自动动物检测器的可能性。

069:生物多样性数据可视化分析 🦁

在本节课中,我们将深入观察生物多样性监测项目中的图像数据,识别数据集中可能存在的挑战,并为后续构建动物检测模型做好准备。

概述

上一节我们探索了不同动物物种和不同相机位置之间的图像分布情况。本节中,我们将仔细查看图像本身,并调查此数据集可能存在的一些潜在问题。

查看同一相机位置的图像

以下是查看来自同一相机位置的一组图像的步骤。

  1. 运行指定的代码单元格,查看从同一相机位置拍摄的一组图像。
  2. 你可以反复运行该单元格,以查看从该位置随机选择的另一组图像。

仔细观察这些图像。你会发现,即使是同一相机位置拍摄的图像,由于天气和时间的不同,图像本身看起来也可能有很大差异。

每张图像都标有在该图像中识别出的动物类型。

识别数据标注的挑战

你会发现,在某些情况下,很难确定动物在图像中的位置,或者可能只看到看起来像动物的一小部分。

很难想象标注者是如何将图像标记为包含特定类型动物的。

至少在某些情况下,造成这种情况的原因是这些图像是作为一个序列拍摄的。

完整的序列可能显示动物从画面的一侧移动到另一侧。因此,基于在该序列的其他帧中看到的动物,可以标注一些仅包含动物一小部分、动物距离很远或被遮挡的图像。

在这些实验中,你将开发一个适用于单张图像的动物检测器。

但作为动物检测器规则或实现的一部分,值得考虑的是开发一个也能处理图像序列的模型。

每次运行此单元格,你都会获得一组新的图像进行调查。因此,请尝试多次运行它以更仔细地查看数据。

查看不同相机位置的图像

现在运行下一个单元格,以显示从不同位置拍摄的一组图像。

现在你可以了解不同环境下的相机陷阱图像会是什么样子。

同样,每次运行此单元格,你都会获得一组新的图像进行调查。

分析图像序列案例

运行下一个单元格,查看数据集中的一个特定图像序列,这次是一只狒狒穿过画面的序列。

如果你仔细观察第三帧,很难找到狒狒,我认为它可能根本不在那里。

因此,这是你在此数据集中将面临的一个挑战:图像被标记为包含动物,但在许多情况下,即使是人类都难以识别相关动物,更不用说机器学习算法了。😊

运行下一个单元格,查看其他被归类为序列一部分的图像示例,但这些单张图像本身很难分类。

数据探索的重要性

像这样详细查看数据是理解在开发任何AI解决方案时需要克服的挑战的关键一步。

😊,虽然一开始并不总是显而易见,但你的项目中哪些方面会给建模工作带来复杂性。在处理图像时,查看数据并设想人类在执行你希望AI执行的任务时可能遇到的困难是非常有用的。

在这种情况下,正如我之前提到的,你将创建一个基于机器学习的动物检测器,它适用于单张图像,而不是序列。因此,正如人类难以或无法判断某些图像中的内容一样,如果机器学习模型没有序列的完整上下文,预计它也会遇到困难。

项目设计阶段的考量

在本项目的设计阶段,你将开发一种方法,从训练数据中移除不包含任何可识别动物的图像。

人类相当擅长但AI可能难以完成的一项任务是扫描图像以寻找感兴趣的对象。我的意思是,我们人类可以浏览这些图像,并快速确定应将注意力集中在哪里,或者判断图像中是否没有感兴趣的内容。

确定图像中是否有感兴趣的内容,以及如果有需要识别的对象,应将模型的注意力集中在哪里,这些是几乎所有采用相机陷阱的生物多样性监测项目都面临的基本问题。

如前所述,这些相机陷阱由运动触发。触发因素可能是动物经过,也可能是车辆、行人,甚至只是强风导致树木摇晃。

在本实验中,你还发现了不同动物类型以及不同相机位置之间图像数量的不平衡。这类数据不平衡也是相机陷阱项目中的常见问题,你将在设计阶段的第二部分使用一种称为数据增强的技术来缓解这个问题。

项目聚焦视频

在结束探索阶段之前,我们为你准备了一个令人兴奋的项目聚焦视频。Sarah Bery是麻省理工学院的教授,也是利用AI技术进行生物多样性监测的专家。

在这个视频中,她将阐述生物多样性监测的重要性及其面临的挑战。

她还将向你介绍她在微软期间开发的Mega Detector模型。在接下来的实验周,你将有机会在自己的项目中应用Mega Detector。

总结

本节课中,我们一起学习了如何可视化分析生物多样性监测的图像数据,识别了数据集中因图像序列、环境差异和标注模糊性带来的挑战,并了解了在后续项目中处理数据不平衡和设计有效动物检测器时需要考虑的关键因素。

070:生物多样性探索阶段检查点 🧭

在本节课中,我们将回顾并检查在“生物多样性监测项目”探索阶段完成的工作。我们将依据“AI向善”项目框架,确认是否已具备进入设计阶段所需的所有要素。


概述

上一节我们介绍了在探索阶段对数据(如不平衡样本和难以分类的图像)的初步分析。本节中,我们将通过一系列关键问题,系统性地评估项目现状,确保可以顺利进入下一阶段。

以下是进入设计阶段前,你和团队需要确认的核心问题列表:

  1. 具体问题:你正在解决的具体问题是什么?
  2. 利益相关者:项目的利益相关者有哪些?
  3. 数据获取:你是否能够获取或获得必要的数据?
  4. AI价值:AI能否增加价值?具体在何处以及如何增加?
  5. 无害原则:“不伤害”原则在此如何体现?

项目回顾:卡拉国家公园生物多样性监测

对于你正在参与的卡拉国家公园生物多样性监测项目,你已撰写了以下问题陈述:

研究人员和保护生物学家需要每日获取卡拉国家公园内各地点观测到的动物数量信息,以监测动物种群趋势和生物多样性,从而为制定保护和维护公园生态系统的政策提供依据。

请注意,此类问题陈述通常需要数周或数月才能完善,本课程中我们加速了这一过程。该陈述明确了关键利益相关者、希望构建的解决方案类型以及项目成功的可能样貌。

利益相关者

你已识别出的利益相关者包括:

  • 研究人员和保护生物学家
  • 公园工作人员
  • 政策制定者
  • 当地社区

数据评估

你已探索了可访问的数据,并确认尽管存在数据不平衡和图像难以分类等问题需要处理,但总体上,你拥有所需类型的、已标注的图像样本,可用于预期的分类任务。

AI的潜在价值

在确认数据基本可用后,AI确实有可能为此项目增加价值。前提是你能利用这些数据设计和训练一个自动图像识别流程。该流程的代码逻辑核心可概括为:

# 伪代码:自动图像识别流程
def automatic_image_recognition_pipeline(image_batch):
    # 1. 预处理图像批次
    processed_images = preprocess(image_batch)
    # 2. 使用训练好的模型进行预测
    predictions = trained_model.predict(processed_images)
    # 3. 汇总并输出结果(如动物数量统计)
    daily_animal_counts = aggregate_predictions(predictions)
    return daily_animal_counts

此流程将能够快速处理每日产生的大量图像批次。

“不伤害”原则的考量

在本项目中,你使用的是原始数据集的子集,仅包含动物图像。但原始数据集的详细信息显示,卡拉国家公园的相机陷阱还拍摄到了许多人员和车辆的图像。

  • 人员图像已从公开数据集中移除。出于本项目目的,我们也移除了标记为“空”或包含“车辆”的图像。
  • 对于此类可能拍摄到盗猎目标动物的项目,另一个潜在风险是:必须小心避免无意中发布可能引导盗猎者找到目标动物的信息。
  • 在现实世界实施此类项目(或任何在公共空间记录图像、视频或音频的项目)时,必须依法依规确立是否可以这样做。如果可以,则需要制定计划来处理不可避免地记录到人员活动的问题,这应被视为敏感个人信息。
  • 在项目实施中,理想情况是准备好快速识别并删除此类敏感个人信息,而非存储或发布。

如果你已准备好从数据集中识别并删除人员和车辆图像(本项目已为你完成此步骤),并且确信你的项目不会在刺激盗猎或产生其他负面影响方面对当地社区构成威胁,那么你就已准备好进入设计阶段。


总结

本节课中,我们一起学习了如何对项目的探索阶段进行系统性检查。我们回顾了问题陈述、利益相关者、数据状况,评估了AI的潜在价值,并重点讨论了“不伤害”原则在实际项目中的应用要点。至此,你已完成“Snapshot卡拉生物多样性监测项目”的探索阶段。

在下一个视频中,我们将总结本周内容,并在下周的课程材料中进入设计与实施阶段。

071:P71

概述

在本节课中,我们将总结第三周关于气候变化背景下生物多样性监测的学习内容。我们将回顾物种灭绝与气候变化的相互关联,探讨基于自然的解决方案的重要性,并介绍一个具体的AI实践项目。


第三周内容总结

本周,我们探讨了气候变化背景下的生物多样性监测。我们了解到,我们正处于保护生物学家所称的“第六次大灭绝”之中。这指的是自大约6600万年前恐龙以及75%的动植物物种灭绝以来,生物体正以最快的速度走向灭绝。

总体而言,灭绝率的上升归因于人类活动,例如狩猎和捕鱼、土地开发以及环境污染。人们普遍认为,气候变化加速了这些灭绝的速度。

气候变化与生态系统的相互影响

上一节我们介绍了物种灭绝的现状,本节中我们来看看气候变化与生态系统健康之间的深层联系。

当我们考虑到气候变化正在以剧烈的方式给自然生态系统施加压力并改变它们,从而对动植物物种构成压力时,这当然在直觉上是合理的。作为回应,许多动植物物种被迫迁入新的区域。这威胁到了那些区域现有的生态系统,同时它们在其原生环境中也面临着灭绝的威胁。

然而,需要强调的是,动植物灭绝速度的加快以及由此导致的自然生态系统生物多样性的丧失,不仅仅是气候变化的附带损害。相反,气候变化与自然生态系统的健康是深度相互关联的,因为两者相互驱动和调节。

基于自然的解决方案

以下是基于自然的解决方案在减缓气候变化方面的潜力数据:

  • 联合国估计,仅通过停止森林砍伐,我们每年就可以减少大气中30亿吨的温室气体。
  • 通过在所有生态系统中积极推行基于自然的解决方案,到2030年,我们每年可以减少约117亿吨的温室气体。这几乎代表了要将全球变暖限制在1.5摄氏度以内所需减排量的40%。

保护与恢复生态系统的重要性

除了作为减缓气候变化的强大工具外,保护和恢复自然生态系统对于适应气候变化也至关重要。湿地、森林和沿海生态系统有助于抵御由气候变化引发的洪水、火灾和其他极端天气事件。

在保护和恢复生态系统方面,重点不应仅仅放在特定物种或一组物种上,而应放在整个生态系统上。在某种意义上,生物多样性可以被视为这些生态系统健康状况的衡量标准。作为保护和恢复生态系统的第一步,生物多样性监测对于制定政策至关重要,这些政策可以扭转人类对自然环境的影响及其对气候变化的影响。

项目实践:Snapshot Caro

基于以上背景,我们开始了Snapshot Caro项目的探索阶段。在该项目中,您将使用来自南非卡鲁国家公园的相机陷阱数据,构建一个自动动物检测器。

以下是项目探索阶段的主要任务列表:

  • 确定项目利益相关者。
  • 写下问题陈述。
  • 探索数据,以确认您拥有推进到项目设计阶段所需的一切。

引入机器学习工具:MegaDetector

我们听取了Sarah Bery关于大规模相机陷阱项目所面临的一些挑战的介绍,以及她与微软的合作者如何开发出一个名为MegaDetector的机器学习模型来应对其中一些挑战。

在下一周的材料中,我们将开始设计阶段。届时,您将在自己的工作中运用MegaDetector,来监测卡鲁国家公园的生物多样性。


总结

本节课中,我们一起学习了气候变化与生物多样性丧失之间的紧密联系,认识到保护和恢复生态系统对于减缓和适应气候变化的关键作用。我们还介绍了利用AI技术(如MegaDetector模型)进行生物多样性监测的实践项目Snapshot Caro,并完成了项目的初步探索阶段。下一阶段,我们将进入具体的设计与实施环节。

072:生物多样性监测项目实践 🦁

概述

在本节课中,我们将进入AI与气候变化课程的最后一周。本周我们将通过一系列实验,为南非卡鲁国家公园设计并实施一个生物多样性监测解决方案。我们将从项目探索阶段过渡到设计阶段,重点关注原型构建、数据隐私和最终用户体验设计。


从探索阶段到设计阶段

上一周,我们完成了项目的探索阶段。在该阶段,我们与包括保护生物学领域的研究人员、关心自然生态系统生物多样性保护的政策制定者、国家公园工作人员以及当地社区在内的利益相关者建立了联系。

我们的项目目标是为研究人员提供每日报告,内容是基于分布在整个国家公园的相机陷阱所记录图像中识别出的各种动物物种的目击数量。

通过探索数据,我们确定AI很可能在此项目中增加价值。因此,我们现在准备进入设计阶段。

在设计阶段,我们将专注于原型化新解决方案、思考数据隐私以及设计最终用户体验。


回顾数据挑战

在项目的上一阶段,我们探索了可用于构建自动动物检测系统的数据。

我们发现了数据中存在的一些问题,这些问题将在开发解决方案时构成挑战。

以下是我们在数据集中识别出的主要挑战:

  • 类别不平衡:数据集中每种动物出现的图像数量存在不平衡。同时,每个相机位置出现的动物数量和类型也存在不平衡。
  • 图像识别难度:在某些图像中,识别动物非常困难甚至不可能。这是因为许多图像是作为一个系列的一部分被标记的,动物可能在该系列的某些帧中容易识别,但在其他帧中则难以识别。
  • 目标尺度与数量变化:在某些情况下,动物离相机非常近,而在其他情况下则非常远。此外,还有在同一帧中出现多个动物的情况。

对于创建自动动物检测器的目的而言,所有这些问题都构成了重大挑战,需要在开发解决方案时加以解决。


引入 Mega Detector 模型

事实证明,我们在此项目数据中发现的这些挑战,在几乎所有尝试使用相机陷阱数据进行自动动物检测的项目中都很常见。

克服这些挑战,正是Sarah Beri及其在微软的 collaborators 开发 Mega Detector 模型的主要原因之一。

Mega Detector 是一个经过数百万张图像预训练的模型,能够自动检测相机陷阱数据中最常出现的事物,即动物、人物和车辆

除了能够判断图像是否包含动物、人物或车辆外,Mega Detector 还能通过提供所谓边界框的坐标,精确识别该物体在图像中出现的位置。

这个边界框会框住每个物体。此外,它还能在单张图像中同时检测多个物体。

训练一个机器学习模型,使其能在各种图像、相机位置和动物类型中稳健地完成这项任务,是一项巨大的工程。通常,任何一个仅使用少数几个相机陷阱数据的团队都无法独立完成。

因此,世界各地的团队在各种项目中都将 Mega Detector 用作其动物识别流程的第一步。


下一步:应用模型

在接下来的实验中,你将有机会在自己的数据上使用 Mega Detector 模型。通过首先识别哪些图像确实包含动物以及动物在图像中的位置,你将快速简化动物识别的任务。

请与我一起观看下一个视频,更详细地了解如何将预训练的 Mega Detector 模型作为你项目的起点。


总结

本节课中,我们一起学习了如何从项目探索阶段过渡到设计阶段,回顾了在构建自动动物检测系统时面临的数据挑战,并介绍了强大的 Mega Detector 预训练模型作为解决这些通用挑战的起点。在下一节,我们将动手应用这个模型。

073:36_卷积神经网络与预训练 🧠

在本节课中,我们将要学习卷积神经网络(CNN)以及预训练模型的概念。我们将了解为何在某些情况下,使用他人已经训练好的模型比从零开始训练更为高效,特别是在处理图像识别任务时。


在本课程的第二周,你开发了多个不同的神经网络模型,用于风力发电预测。

如果你学习了本专业课程的第一门课,那么你还构建了一个用于估算空气污染水平的神经网络模型。

在上述每个案例中,你都是从零开始训练你的模型。

这意味着你首先定义了模型结构,例如决定神经元的数量和网络的层数。

然后,你通过向网络展示许多输入A(如传感器测量值或气象变量)和输出B(如课程第二周中的风力发电输出)的示例来训练网络。

通过这个训练过程,神经网络学会了越来越准确地预测输出。


虽然对于许多机器学习应用而言,从零开始训练神经网络是一种合理的方法,但在其他情况下,从一个为其他任务训练好的现有模型开始,可能更具优势。

这在处理图像数据时尤为常见,因为这类任务通常是识别图像中的内容。

在某些情况下,如果你能获得一个已经训练好、可以识别你感兴趣的特定类型物体的模型,你可以直接将该预训练模型用于你的任务。

例如,这里展示的是一个预训练物体检测模型的输出,该模型可在互联网上免费获取。

你可以查看幻灯片上显示的网站以获取更多详细信息。

该模型经过训练,能够识别城市环境中的汽车、人物等物体。

我在这里用它来识别一段交通路口视频素材中的这些物体。

因此,如果我的项目是监控某个特定路口的交通情况,那么我可以直接使用这个模型,并获得相当不错的结果。

对于你在这些实验中的项目,任务是动物识别。

完成该任务的挑战之一,是首先要能够识别图像中是否包含动物,然后确定动物在图像中的具体位置。


如前所述,这些挑战是所有相机陷阱项目共有的。幸运的是,Sarah Berry和她在微软的同事们开发了MegaDetector模型来应对这些挑战。

MegaDetector在数百万张相机陷阱图像上进行了训练,以识别图像中是否包含动物、人物或车辆。

它在如此多不同的相机视角和不同的动物上进行训练,以至于研究人员可以直接在他们的项目中使用它,来识别它可能从未见过的动物,或者从未训练过的相机视角下的动物。


作为AI驱动的动物检测器的开发者,MegaDetector应该能让你的项目工作轻松许多。

因此,在下一个视频中,请和我一起开始为你的项目使用MegaDetector模型。


本节课中我们一起学习了卷积神经网络与预训练模型的核心概念。我们了解到,从零开始训练模型是基础,但利用为通用任务(如图像识别)预训练好的强大模型(如MegaDetector),可以极大地提高特定项目(如动物识别)的开发效率和效果。下一节我们将开始实践应用。

074:生物多样性监测项目设计阶段(全)——使用MegaDetector模型 🦁

概述

在本节课中,我们将学习生物多样性监测项目设计阶段的第一部分。我们将使用MegaDetector模型来识别数据集中哪些图像包含动物,并确定动物在每张图像中的具体位置。目前,我们暂不关注识别动物的具体种类,这将在后续步骤中完成。

项目设计阶段第一部分

上一节我们介绍了课程的整体目标,本节中我们来看看如何在项目中具体应用MegaDetector模型。

你可以通过实验室顶部的链接获取关于MegaDetector模型技术细节的更多信息。从那里,你还可以通过另一个链接开始使用MegaDetector,或了解如何将此模型集成到你的项目中。

接下来,点击Jupyter图标查看实验室文件夹中的内容。你会发现里面有两个笔记本文件,即扩展名为.ipynb的两个文件。目前,你将使用第一个文件进行工作,第二个文件将用于设计阶段的下一部分。此外,文件夹中还包含了MegaDetector模型文件(扩展名为.p2),以及运行模型所需的其他软件和资源照片。

在数据文件夹中,你可以找到之前实验中已经熟悉的数据集以及数据表。

与之前的实验一样,这里也有一个utils文件,其中抽象化了一些代码,以使笔记本更易于理解。

实际上,这个文件被命名为utils2.py,因为utils这个名字已被其他库占用,我们想避免混淆。如果你是Python程序员,并希望了解更多幕后细节,可以查看这个utils2.py文件。

回到笔记本,第一步始终是运行顶部的单元格,导入本实验所需的Python包。这里的代码主要是为了设置MegaDetector模型的使用环境。

然后,我们将通过下一个单元格检查不同动物的图像文件夹是否都存在。

加载并测试MegaDetector模型

通过下一个单元格,你现在可以读入MegaDetector模型。成功运行后,运行下一个单元格来读取并显示一张秃鹫的示例图像。你将使用这张图像作为第一个测试案例,观察MegaDetector模型的工作原理。

以下是MegaDetector模型的文本输出。每次在图像上运行该模型时,你都会看到类似的输出,其中包含了检测到的物体位置信息。

在下方,你可以看到对此文本输出每个组成部分的描述。

以下是每个输出字段的含义:

  • 文件:这是正在处理的图像的路径名。
  • 最大检测置信度:这是一个从0到1的置信度估计值。低值表示模型对该特定检测的信心较低,高值表示信心较高。本例中只有一个检测到的物体(动物)。如果图像中有多个物体被检测到,这个“最大检测置信度”数字将对应置信度最高的那个物体,并且会有一个更长的列表。在这里,检测到的最高置信度是0.968,即96.8%的置信度。
  • 检测列表:如果未发现任何物体,此列表将为空;如果图像中发现多个物体(动物),则可能包含多个条目。此处的其余文本仅代表一个检测。

在检测文本内部,包含以下信息:

  • 类别1代表动物,2代表人类,3代表车辆。请注意,我们已从数据集中移除了人类和车辆图像,但请记住这些是敏感类别。在实际解决方案中,你可能需要确保快速删除或从不存储包含人类或车辆的图像。这也是为什么你可能需要依赖置信度阈值的一个好例子:超过某个置信度水平,你就能过滤掉几乎所有人类和车辆图像,或许可以将一些交给人类审核,同时避免漏报,从而保护个人隐私。鉴于我们的数据集,这里显示为1(动物)并不意外。
  • 置信度:该检测的置信度。在本例中,最高置信度检测也是唯一的检测。
  • 边界框:这个字段包含四个数字的列表,描述了一个围绕检测到的物体的边界框。

这四个数字的含义如下:

  1. 边界框左上角的x和y坐标。这里的值范围是0到1,表示该角点距离图像顶部和左侧的距离占图像总尺寸的比例。如果你熟悉物体检测算法,可能会看到用具体像素值表示,但原理相同。例如,这里的角点位于x=0.199,意味着从左到右大约20%或1/5的位置;y=0.354,意味着从顶部向下大约35%或1/3的位置。因此,一个xy坐标为(0, 0)的点位于图像的左上角,而这个检测框的角点大约在(0.2, 0.35)
  2. 框的宽度和高度,同样以占整个图像的比例为单位。这里宽度约为0.4,意味着从这个x坐标约为0.2的角点开始,框向右延伸了0.4;高度约为0.6,意味着从这个y坐标约为0.35的角点开始,框向下延伸了0.6

通过这个输出,MegaDetector告诉你它以很高的置信度在图像中发现了一个动物,并提供了围绕该动物的边界框坐标。但请注意,它没有给出这是哪种动物的任何指示,这将在后续步骤中完成。MegaDetector只是一个通用的动物检测器,适用于任何种类的动物。

这张图像经过注释,以明确边界框数字的含义。但通过运行下一个单元格,你将使用MegaDetector在原始图像上实际绘制那个边界框。

此时,你尚未识别出这是哪种动物,但通过首先确认这里确实有一个动物以及它在图像中的位置,你已向这个目标迈进了一步。

处理更多图像示例

接下来,你将对数据集中的其他随机图像运行相同的过程。你可以反复运行此单元格,查看图像中检测到动物的不同示例。

运行下一个单元格,查看同一图像中有多个动物时的有趣示例。在这里,你将看到与之前类似的输出,但MegaDetector识别出了三个动物。你可以在这里看到,检测列表包含三组边界框和与之关联的动物置信度。这里有一个类别为1(动物)的检测,置信度为0.73,以及一个像这样的边界框,然后是另一个类别为1的检测,以及第三个。在本例中,这三个检测对应于图片中三个被框起来的羚羊。

如果你放大看,会发现还有另一组腿。因此,看起来MegaDetector可能在这里漏掉了一只动物。尽管如此,在有些动物被遮挡且距离相机不同距离的情况下,能检测到四只中的三只,这已经是相当不错的结果了。

你最终的目标是利用这些检测结果,裁剪出每张图像中包含动物的部分,以便仅将包含动物的裁剪部分传递给下一步将要处理的模型。这将是用于识别你检测到的动物种类的模型。

图像裁剪与标准化

将裁剪后的图像传递给另一个模型的一个要求是,它们必须具有相同的大小和形状。这实际上是当前流行图像处理技术的一个限制。

正如你所见,边界框不是正方形的。但在下一步中,你将了解如何通过扩展边界框来使这些图像变为正方形。例如,对于这个检测,MegaDetector的边界框高度大于宽度,你将水平扩展这个框。在这种情况下,你在动物的左侧和右侧都添加了更多图像内容,而在框会超出原始图像边缘的地方,则用零值(全黑)填充。

运行这个单元格,查看MegaDetector输出的随机示例以及你将生成的裁剪图像,这些图像将用于后续训练分类模型。

因此,当你用随机图像运行此代码时,在某些情况下可能检测不到动物,你会收到相应的提示信息。MegaDetector的输出将有一个空列表,并且你会在这里看到一小段文本输出,说明“在此图片中未检测到动物”。

查看一些示例后,你可以运行下一个单元格,将此过程应用于整个数据集。这需要一点时间。

之后,运行下一个单元格,查看你生成的输出示例集合。同样,每次运行此单元格,你都会看到一组新的示例。正如你所见,这里仍然会有一些图像,无论对人类还是机器学习算法来说都难以识别。

但是,通过使用MegaDetector来识别动物在图像中的位置并隔离图像的那些部分,你使得人类或AI算法处理起来都更加直接。因为至少现在,你可以看到每张裁剪图像中出现的主要物体是动物或动物的一部分,这将使分类任务更容易处理。

设计阶段第一部分总结

以上就是设计阶段的第一部分。通过项目的这一部分,你研究了如何实现解决方案的一部分,并且也开始了解最终用户体验可能是什么样的。例如,你可以想象,除了关于动物数量的报告之外,你可能还想提供一个用户界面,允许用户查看原始图像以及模型识别动物的位置。

在下一个实验中,我们将处理分类任务。但首先,请和我一起观看下一个视频,了解你将如何使用另一种预训练模型来识别数据集中的动物。

本节课总结

在本节课中,我们一起学习了生物多样性监测项目设计阶段的第一部分。我们重点介绍了如何使用MegaDetector模型来检测图像中是否存在动物并定位其位置。我们了解了模型的输出格式,包括置信度和边界框坐标,并实践了如何根据这些输出裁剪图像,为后续的动物种类分类任务做准备。这个过程是构建有效AI解决方案的关键步骤,它简化了数据,使后续的分类工作更加可行。

075:迁移学习与微调 🧠➡️🦓

在本节课中,我们将要学习迁移学习与微调的核心概念。你将了解如何利用一个已训练好的模型,将其知识应用到新的、类似的任务上,从而节省大量训练时间和计算资源。


在之前的实验中,你使用了一个预训练模型——MegaDetector。这个模型用于识别数据集中哪些图像包含动物,并定位动物在图像中的位置。你学习了如何裁剪出检测到动物的图像部分,以供后续的分类模型使用。这对于你的AI动物检测项目而言,是一个巨大的进步。

下一步,是对检测到的动物进行分类,识别出具体是哪种动物。

为何需要迁移学习?🤔

对于MegaDetector,该模型恰好是针对你的用例(在图像中寻找动物)进行预训练的,因此你可以直接将其用于后续的分类任务。然而,在大多数其他项目中,你通常无法获得一个完全针对你特定用例训练的模型。

机器学习中的一个常见做法是:使用一个为不同分类任务训练的现有模型,然后使用你自己的数据集进行一些额外的训练,这个过程被称为微调。这样做可以结合两者的优势:既利用了现有模型中的知识,又融入了针对你新任务的新数据。

例如,如果你有一个能识别汽车的预训练模型,但你想要一个能识别飞机的模型。这个识别汽车的模型一开始可能无法很好地识别飞机。但如果你在一个包含飞机图像的标注数据集上对它进行少量额外训练,它就能快速学会识别飞机。事实上,这比从零开始训练一个新模型要快得多。

迁移学习为何有效?🔬

这之所以可能,是因为当神经网络模型学习执行一项任务时,你可以将模型中的每一层视为在学习该任务的不同方面。

对于物体检测任务,其中许多方面与你具体想在图像中识别什么几乎没有关系。相反,机器学习模型在任何物体识别任务上所做的大部分学习,都是对物体识别任务通用的学习。例如,学习检测物体的边缘或某些纹理。这种学习无论你希望检测什么类型的物体都可能有用。

因此,与其从零开始为你的任务训练一个模型,更常见的做法是从一个预训练模型开始,然后将该网络的学习成果迁移到类似任务中,并应用于你想要执行的任务。

在AI机器学习领域,这被称为迁移学习,即将学习从一个模型转移到另一个模型,以从两者中获益。

神经网络如何“看”图像?👁️

为了理解其工作原理,让我们仔细看看神经网络如何处理图像。

数字图像通常被表示为一个数字网格。在每个像素位置,都有一个数字代表该像素应显示的亮度或暗度。例如,在这张狐狸的灰度图中,如果我们放大图像的一小块,它可能看起来像这样:

[[255, 240, 220],
 [230, 200, 180],
 [210, 190, 170]]

在这里,每个小方块代表一个像素。在每个像素内部,你会看到这样的数字集合,其中较大的数字代表更接近白色的颜色,较小的数字代表更接近黑色的颜色。

对于彩色图像,你看到的是由三层(有时是四层)或彩色通道组成的图像,每层代表图像在特定颜色通道中的亮度。

以这张彩色狐狸为例,你有蓝色通道、绿色通道和红色通道。

现在,在原始图像的每个像素位置,你都有这三个值,分别对应红、绿、蓝(简称RGB)。例如,狐狸鼻子上这个几乎全黑的像素,其所有通道的值可能都非常低,像这样:[10, 10, 10]。而狐狸皮毛上的另一个像素,其值可能像这样:[220, 200, 180],表示一种更接近白色的亮色。

卷积神经网络(CNN)🔍

当使用图像作为神经网络的输入数据时,最常见的方法是使用卷积神经网络。网络的每一层都对图像的小块进行计算,每个图像小块包含一组数字。

在CNN中,你会取图像的每个小块,并像这样在其上运行一个过滤器:

这个过滤器所做的就是进行计算。在你的训练过程的每一步,你都会重新运行这个卷积过程,并更新计算中使用的过滤器值,以识别出对识别物体重要的图像模式。

实际上,这意味着网络的早期层将学习非常基本的特征或模式,如边缘和角落。而在网络的更深层,过滤器将学会识别与你感兴趣的目标相关的特定特征。




但仍然相当通用。在所示的例子中,感兴趣的目标是人脸。但在网络的中间层,你可以开始看到像眼睛、鼻子和嘴巴这样的特征,这些特征对于任何人脸检测模型都是通用的。

最后,在网络的最深层,你的模型学会识别与你感兴趣的目标相关的特定特征。例如在这里,你可以看到最深层的过滤器正在识别完整的人脸。

因此,在检测特定类型动物的情况下,你可以想象网络早期层的情况可能非常相似,只是识别边缘和角落等。然后在中间层,可能会出现更像动物的眼睛、耳朵、嘴巴,以及角、尾巴、腿等特征。最后,在最后一层,你将开始看到观察整个动物的过滤器,并且这些过滤器看起来是针对网络所训练的动物类型而特定的。

应用:动物分类模型 🦒

在下一个实验中,你将使用一个名为神经架构搜索网络的模型,简称NasNet。这是目前最先进的模型之一,但这个领域发展非常迅速。因此,当你观看此视频时,可能已有其他最先进的模型。不过,你在此课程中获得的直觉将适用于你使用的任何计算机视觉模型。

你将使用的模型已经在包含各种物体的数百万张图像上进行了训练。因此,它已经学会了如何识别许多物体。


基于广泛的特征,它可能无法直接识别出羚羊或狷羚。但你会发现,只需进行少量训练,它就能快速学会区分羚羊和狷羚,或者区分捻角羚和弯角羚,这毫无困难。这非常令人印象深刻,因为我(以及大多数人)都无法区分这些动物中的大多数。这也告诉你,这类任务或许能够超越人类的识别能力。


本节课中,我们一起学习了迁移学习与微调的核心思想。我们探讨了为何可以利用预训练模型的知识来加速新任务的学习,了解了卷积神经网络如何处理图像,并看到了模型不同层次学习特征的抽象过程。在下一节视频中,我们将动手实践,使用预训练的NasNet模型进行动物分类的迁移学习。

076:生物多样性迁移学习 🦁

在本节课中,我们将学习如何利用迁移学习技术,将一个预训练的图像识别模型,微调为能够识别特定国家公园内动物的分类器。我们将使用一个名为NASNet的预训练模型,它最初在ImageNet数据集上训练,能够识别1000种常见物体。通过迁移学习,我们可以利用该模型已学到的通用图像特征,仅用少量新数据对其进行微调,使其适应我们的特定任务。


神经网络如何“看”图像

上一节我们介绍了神经网络识别图像数据的直观原理。当一个神经网络经过训练能够识别特定物体时,它会学习到一些可迁移的关键特征,这些特征几乎适用于识别任何图像中的物体。

这并不意味着一个训练用来识别自行车的神经网络也能识别马。而是说,一个识别自行车的模型,只需经过少量额外训练,也能学会识别马、火车或任何其他你有标注图像的物体。


迁移学习与预训练模型

在本实验中,我们将从一个已经训练好、能识别多种物体的模型开始。用于训练该模型的数据集是著名的ImageNet,这是一个历史上常用于测试图像识别模型性能的基准数据集。

我们将使用的预训练模型是神经架构搜索(NASNet)模型。它开箱即用就能准确识别许多物体类别。

然而,我们的目的是应用迁移学习技术:我们将采用这个已能识别多种物体的模型,并对其进行微调,使其能够识别我们感兴趣的物体——即特定国家公园中的动物。


实验流程概述

这是设计阶段的第二部分。在第一个设计实验中,我们应用了MegaDetector来识别数据集中图像里动物的位置,然后裁剪并调整这些图像,创建了一个仅包含动物的图片数据集。

在本实验中,我们将微调一个预训练的NASNet模型,以对我们数据集中的动物进行分类。

以下是本实验的核心步骤:

  1. 加载并测试预训练的NASNet模型。
  2. 准备和增强我们的动物图像数据集。
  3. 微调模型以适应我们的特定分类任务。
  4. 评估微调后模型的性能。


加载与测试预训练模型

首先,运行代码单元格导入本实验所需的所有Python包。

接下来,加载预训练的NASNet模型,并在微调前先测试其原始性能。

这个过程可以简单理解为:传入一张图片(例如一张狒狒的图片),然后要求NASNet模型将其分类到它训练时所学的1000个物体类别之一。

运行以下单元格时,你可以通过下拉菜单选择要传递给NASNet模型进行分类的动物类型。

输出将显示原始图像,以及模型预测的前三名结果及其置信度。

例如,传入一张狒狒图片,模型可能正确识别。但传入一张鸵鸟图片时,模型可能会错误地预测为“卡通”或“钢拱桥”。同样,传入黑犀牛图片,模型再次给出了“钢拱桥”和“卡通”等错误预测,且置信度非常低(低于5%)。这表明模型实际上是在说“我不知道”。

这个测试清晰地展示了基于一个数据集(ImageNet)训练的模型,当应用于一个全新数据集(我们的动物图片)时,可能会变得非常不准确。ImageNet数据集本身存在已知的偏见,它偏向于英语世界(尤其是北美和欧洲)常见的动物分类,以及特定时期有能力拍摄数码照片的人群所拍摄的内容。

尽管直接分类效果不佳,但ImageNet数据集中的许多纹理和边缘特征,可以作为识别我们数据集中图像的有用基础组件,这正是迁移学习的价值所在。


准备与增强数据

接下来,我们将加载数据。首先定义存储了上个实验中裁剪好的图像的文件夹路径。

同时设置一些训练细节,例如每个训练批次使用的图像数量(本例中为32),以及图像的像素尺寸。这些都是为模型训练做准备。

我们的数据集在不同动物类型和相机位置之间存在不平衡。为了补偿这一点,我们将应用一种称为数据增强的技术。

运行接下来的两个单元格,可视化一些图像样本。你可以通过更改代码中的索引数字(0到31),查看不同图像的增强效果。

通过数据增强,我们可以利用现有数据生成新的带标签图像样本,以平衡数据集并帮助模型学习。

以下是几种数据增强技术:

图像翻转
运行下一个单元格,可以看到简单的图像翻转增强技术示例。

  • 水平翻转:将图像从左到右翻转。这可以生成一个与现有数据不同但依然合理的样本。
  • 垂直翻转:将图像从上到下翻转。虽然现实中很少看到倒立的动物,但对于模型训练来说,这仍然是一个合法的增强样本,因为它包含了动物主体,并能帮助模型避免学习天空、灌木或动物方向等可能干扰后续分类的无关特征。
  • 同时进行水平和垂直翻转:可以产生第三种变体。

通过翻转图像,可以为模型训练创建三个新的示例图像。

图像缩放
另一种增强数据的方法是应用缩放因子。运行下一个单元格,可以使用滑块调整缩放比例,查看不同缩放因子下生成的图像变体。

图像旋转
同样,可以对原始图像应用旋转来创建增强变体。运行下一个单元格,可以在-45度到45度之间对原始图像应用旋转。

调整对比度
最后,可以调整对比度来模拟在更亮或更暗条件下拍摄的图像。运行下一个单元格,可以使用滑块应用不同的对比度。

在实践中,我们会随机组合使用翻转、缩放、旋转和对比度调整,为数据集中不同类别(本例中是不同动物类型)生成补充数据,以尽力平衡数据集。


平衡数据集与划分数据

接下来,在微调之前,我们将尽力平衡数据集。与课程第二周的风电预测实验类似,你需要将数据分为训练集验证集测试集

  • 训练集:用于微调NASNet模型的数据。
  • 验证集:用于在训练过程中迭代评估模型性能。
  • 测试集:用于在训练和验证完成后,最终测试模型在从未见过的数据上的表现。

回顾数据探索可知,某些动物类型的示例图像非常少,这对于微调来说是个问题。因此,为了微调模型,我们将限制训练集只包含那些在数据集中拥有相对较多示例图像的动物。

在本实验中,我们设定了一个至少65张示例图像的阈值,这对应了大约11种不同的动物。你可以将数字0到10映射到这些动物上进行训练。当然,也可以根据实际情况设定更高或更低的图像数量阈值。

接着,查看训练集中每种动物的图像数量。然后,对每个图像类别进行重采样,这意味着对某些类别进行上采样(复制现有图像),对另一些类别进行下采样(丢弃多余图像),使得每个类别用于训练的图像数量相同。

仅仅复制训练样本听起来可能不是增加训练集样本数量的聪明方法,但结合之前介绍的数据增强技术,我们可以模拟出不同的训练示例。


微调模型

接下来,加载另一个版本的NASNet模型用于针对我们的特定数据进行微调。为此,我们将冻结模型的底层。这些网络层已经学习到了对检测任何物体都通用的特征(如边缘和特定纹理)。在训练过程中,我们将保持这些层不变,不修改它们。

如果你是AI从业者并对模型架构细节感兴趣,可以运行相应的代码单元格来打印模型架构的摘要。

如果你在本课程之前不熟悉神经网络模型,这里的一个要点是:NASNet模型包含非常多的层,这对于大规模图像识别系统来说是典型的。

下一步是训练模型。这涉及添加一个最终的输出层,该层被设置为对应我们希望训练的11个动物类别。

下面的代码允许你设置训练模型的轮数(epoch)。为了充分微调模型的最后一层以优化识别数据集中动物的能力,需要进行足够轮数的训练。

实际上,进行足够轮数的微调训练可能需要很长时间(可能几个小时)。因此,我们已经为你完成了150轮的训练并保存了结果。运行指定单元格,即可加载这个训练了150轮的模型。

为了了解训练过程的样子,你可以运行下一个单元格,将模型再训练一个额外的轮次(大约需要一分钟)。你也可以通过更改数字来尝试训练更多轮次。

为了判断模型是否训练了足够的轮数,你可以查看下面显示的图表,这些图表展示了我们为你完成的原始150轮训练过程的数据。

  • 左图:横轴是训练轮数,纵轴是模型准确率。蓝色曲线代表模型在训练集上的准确率,红色曲线代表在验证集上的准确率。
  • 观察结果:虽然训练数据的准确率随着每轮新训练持续提高,但验证集的准确率在大约100轮之后并没有显著提升。这表明进一步训练可能不会改善模型性能,实际上你正在经历所谓的过拟合,这可能导致置信度指标不可靠(就像之前我们看到动物被以接近100%的置信度预测为桥一样)。

评估模型性能

接下来,通过在训练过程中未使用过的测试集上计算准确率来评估模型。

运行相应单元格后,你会发现模型在测试集上的准确率大约为80%。这意味着,在所有11个训练过的动物类别中,你正确预测图像中动物的概率约为80%。

80%的准确率听起来可能不高,但考虑到你只用了一个相对较小的数据集(某些动物类型的示例甚至少于100张)训练模型来识别11个不同的动物类别,这实际上是一个相当令人印象深刻的结果。

通过利用预训练模型和迁移学习,我们能够用一个相对较小的数据集创建一个相当强大的动物检测流程。这类数据集即使在工业界,也可以作为起点,通过引入更多标注数据和专家人工输入,来引导构建更准确的数据集。

除了查看模型的整体准确率,查看混淆矩阵也很有帮助,它能让你更好地理解模型在哪些地方成功,在哪些地方失败。

混淆矩阵将每个动物类别分别绘制在纵轴和横轴上。沿着对角线,你可以看到模型在测试集中正确预测该动物的比例。例如,模型正确识别狒狒的比例是94%,但识别捻角羚的比例只有74%。

观察非对角线的单元格,可以了解模型失败时是如何出错的。阅读任何一行,可以看到对于特定动物,模型将其误判为其他动物的频率。例如,对于黑背胡狼,有6%的时间模型将其误分类为狒狒;对于长颈羚,有8%的时间被误分类为大象。

最后,对单个图像的模型结果进行视觉检查也很重要。运行最后一个单元格,可以显示测试集中的示例图像以及模型预测的置信度最高的前三个结果。

你可以使用下拉菜单查看测试集中其他动物的示例以及模型的结果。例如,一张秃鹫的图片被模型以接近100%的置信度正确预测;而一张长颈羚的图片被误分类为大象(正确的分类仅以低于10%的置信度排在第三位);一张黑背胡狼的图片再次被以约100%的置信度正确识别。


总结

本节课中,我们一起学习了如何构建一个从原始相机陷阱图像到最终动物分类的完整模型流程原型。

我们探讨了从一个与目标数据差异很大的预训练模型出发的局限性,并思考了通过迁移学习能在多大程度上弥补这种差距。

关键步骤包括:

  1. 理解迁移学习:利用预训练模型学到的通用特征。
  2. 数据准备与增强:通过翻转、缩放、旋转、调整对比度等技术平衡和扩充数据集。
  3. 模型微调:冻结预训练模型的底层,仅训练新的顶层以适应特定任务。
  4. 性能评估:使用测试集、混淆矩阵和可视化检查来全面评估模型。

下一步,我们将把这些模型流程整合到一个带有用户界面的最终实现中。在进入下一阶段之前,我们将在下一个视频中总结设计阶段的内容。

077:吴恩达《AI for Good专业课程》 P77 - 生物多样性项目设计阶段检查点 🧐

在本节课中,我们将回顾并总结生物多样性监测项目的设计阶段。通过前两个实验,我们已经构建了一个图像处理流程。现在,我们需要系统地审视整个设计,确保其具备进入实施阶段的条件。

上一节我们完成了动物分类模型的初步构建,本节中我们来看看如何评估设计的完整性,并准备进入实施阶段。

项目概述与当前进展

在之前的两个实验中,你使用了预训练的神经网络模型,构建了一个图像处理流程。该流程现在可用于对相机陷阱图像中的动物进行分类。

目前,你的模型远非完美。在真实世界实施该项目时,你很可能需要在设计阶段投入更多时间,例如收集更多带标签的数据,或调整方法以提升模型性能。然而,就本项目目的而言,你已经拥有了一个具备所有功能部件的设计。

现在,是时候通过回答以下问题来检查你是否具备进入实施阶段所需的一切。

设计阶段关键问题检查

以下是评估设计是否完备需要回答的几个核心问题。

1. 如何处理数据相关问题?

数据相关问题包括不平衡性、偏见、隐私等。

对于这个动物分类项目,你已识别出数据存在不平衡问题。这体现在两方面:一是某些动物的图片数量很多,而其他动物的图片相对较少;二是不同相机点位之间的动物分布差异很大。

在你的设计中,你通过数据增强部分解决了这个问题,尽管为代表性不足的类别收集更多带标签数据也会有所帮助。

关于隐私问题,你意识到在一个真实的相机陷阱项目中,很可能会拍摄到人和车辆的照片。在你的数据处理流程中,你需要将这些图像视为机密个人信息,并尽快删除,而不是存储或发布它们。

此外,从“不造成伤害”的角度出发,我们之前识别出的风险是:防止你的项目结果被偷猎者用于定位动物。事实上,在过去处理类似用例时,这是我们不更广泛分享数据的主要原因。

除此之外,关于偏见或隐私问题,你应继续留意可能对社区产生影响的其他任何潜在问题。

2. 将部署何种模型?如何衡量其性能?

你计划部署的模型类型如下:

首先,你使用了流行的 MegaDetector 预训练模型来识别图像中动物出现的位置。

然后,你对一个预训练的 ResNet 模型进行了微调,使其能够对 MegaDetector 识别出的动物进行分类。

你的模型在测试数据集上表现出合理的准确度。你探索了混淆矩阵以及单张图像,以了解模型在哪些地方表现良好,在哪些地方表现不佳。为了提升模型性能,你很可能需要收集更多的训练数据。

3. 你的设计如何解决预设问题?

你着手解决的问题是:研究人员和保护生物学家需要关于卡拉国家公园内各点位每日动物出现数量的信息,以监测生物多样性和动物种群趋势,从而为制定保护和维护公园生态系统的政策提供依据。

考虑到通过更多训练数据可能获得更好结果,你的设计将能够通过自动分类每日数百或数千张图像并在报告中提供结果来解决这个问题。

4. 最终用户将如何与你的系统交互?

在本案例中,最终用户很可能是研究人员或公园工作人员,他们需要定期获取公园内动物出现情况的更新,并且可能也希望直接查看图像数据,以了解动物是如何被识别的或其他细节。

在你目前的设计中,你已经研究了多种图像显示方式,例如叠加边界框以展示图像如何被裁剪用于分类,以及用各种指标(如置信度准确度)来展示图像分类结果的图表。这些都可能是有趣的可视化方式,对你的用户也很有价值。

在项目的下一部分,你将探索如何将所有功能整合到一个简单的用户界面中。

总结与过渡

本节课中我们一起学习了如何对生物多样性监测项目的设计阶段进行系统性检查。我们审视了数据处理、模型选择、问题解决和用户交互等关键方面,确保设计具备实施的基础。

至此,本项目的设计阶段就结束了。在实施阶段,你将整合完整的图像处理流程,使其能够从输入图像开始,快速获得其中出现的任何动物的分类结果。

078:吴恩达《AI for Good专业课程》 P78 🧩 生物多样性项目实施阶段

在本节课中,我们将学习如何将图像处理流程的各个组件整合在一起,构建一个可用于从相机陷阱数据中自动检测动物的完整系统。我们将进入项目的实施阶段,专注于将模型投入生产、开发用户体验并与最终用户测试系统。


上一节我们介绍了模型的设计与调优,本节中我们来看看如何将它们整合成一个可运行的流程。

首先,你需要导入所有必需的Python包,并设置好使用模型和数据的环境。

以下是运行环境设置所需的步骤:

  • 运行第一个代码单元以导入所有必需的Python包。
  • 运行下一个代码单元以准备一些在运行模型和显示图像时将用到的元数据。

环境准备就绪后,接下来我们将加载用于检测动物的模型。

以下是加载核心模型的步骤:

  • 运行此代码单元以加载Mega Detector模型,该模型用于在图像中识别并框出动物。
  • 随后,加载你在设计阶段微调好的NASNet模型,该模型用于对检测到的动物进行分类。

现在,你已经准备好运行完整的动物检测流程了。

让我们通过一个示例图像来测试整个流程。

以下是测试流程的步骤:

  • 运行下一个代码单元,使用你的流程处理一张示例图像。
  • 你将看到图像中包含三只黑背胡狼,其中一只似乎在地上打滚。在每个检测框上方,会显示模型预测的前三个类别及其对应的置信度,这与你在设计阶段实验室中看到的类似。

为了更灵活地测试,你可以从数据集中选择任意图像进行处理。

以下是交互式测试的步骤:

  • 运行此代码单元,你将能够从数据集中选择任何图像并通过流程运行它。
  • 点击选择按钮后,你可以进入测试或训练文件夹并选择一张图像。
  • 选择图像后,系统需要一些时间进行处理。如果检测到动物,你将在图像上看到边界框以及显示的预测结果。

在实际应用中,相机陷阱每次被触发时都会上传新图像。为了模拟这一过程,你可以在此代码单元中上传自己的图像进行测试。

例如,你可以上传一些鸟类图片,系统会尝试识别它们。如果图片是创作共享许可的,你可以下载到本地然后上传进行处理,以观察系统的表现。

此外,我们还需要关注系统对潜在敏感图像(如人物或车辆)的处理能力。

以下是测试敏感图像识别的步骤:

  • Mega Detector模型能够识别这些敏感类别。
  • 我们可以找一张车辆的图片,确保它是创作共享许可的,下载到本地后上传给系统处理。
  • 你会看到系统正确地识别出这是一辆车辆。

至此,本项目的实施阶段就完成了。当然,要实际部署这样一个系统,还需要做更多工作,例如实现图像的自动上传、分类、编目、生成报告,并确保敏感图像不会被不当处理或泄露。

但一个用于自动动物检测的图像处理流程的关键要素都已齐备。

本节课中我们一起学习了如何整合图像处理流程的各个组件,构建了一个从相机陷阱数据中自动检测动物的原型系统。我们实践了环境设置、模型加载、流程测试以及对敏感内容的识别,为项目的实际部署奠定了基础。

079:生物多样性项目总结 🌿

在本节课中,我们将回顾并总结之前几节实验课中构建的生物多样性监测项目。我们将梳理整个图像处理流程的关键组成部分,讨论如何评估与改进系统,并展望项目在现实世界中的应用与潜在发展方向。


项目概述

在过去的几节实验课中,我们共同构建了一个图像处理流程。该流程可以作为一个自动动物检测工具,用于生物多样性监测。当然,要在现实世界中实施这样的项目,需要考虑更多细节,项目的每个阶段也会更加复杂。

但你现在已经了解了所有关键组成部分,包括如何构建一个最先进的神经网络模型。原则上,你可以基于此,利用相机陷阱数据进一步开发成任何生物多样性监测项目。


实施阶段回顾与评估

上一节我们介绍了项目的整体流程,本节中我们来看看如何评估和改进我们的实现。

在实施阶段结束时,你需要能肯定地回答以下两个问题:

  1. 你的模型性能可以接受吗?
  2. 最终用户能否成功与你的系统交互?

目前,你的模型性能尚可,但如果能获得更多训练数据,性能很可能得到显著提升。你构建的原型用户界面允许用户浏览数据库中的现有图像,或上传自己的图像进行处理。

如果你有软件工程经验或与相关团队合作,那么你可能已经准备好部署你的系统。通过进一步迭代,你可以将模型的准确率提升到对最终用户更有用的水平。

与课程中的其他项目类似,部署步骤包含许多我们在此不涉及的技术挑战。但原则上,你可以应用这样一个程序来接收来自相机陷阱的自动图像上传、处理这些图像、在用户界面中显示结果,并生成结果摘要报告。


项目影响评估

对于一个这样的项目,在评估阶段,你可以从以下几个方面衡量其影响:

  • 为保护生物学领域的研究人员提供的价值。
  • 能够提供给政策制定者的信息。
  • 从长期来看,你的项目在多大程度上帮助引导必要资源用于自然生态系统的保护和恢复。

在结束之前,让我们快速回顾一下这个项目从开始到结束的整个过程。


项目全流程梳理

探索阶段

在探索阶段,除了与利益相关者沟通并定义你想要解决的问题外,你还需要一个带标签的图像数据集才能开始本项目。

本项目使用的带标签数据集来自 Snapshot Serengeti 项目,这些数据是在 Zooniverse 平台上借助公民科学家的帮助完成标注的。虽然能够从他人已标注的数据开始很好,但你也看到了,通过利用预训练模型,你能够从一个相对较小的带标签图像集开始,构建出一个可工作的动物检测流程。

原则上,如果你想明天启动自己的相机陷阱项目,收集和标注类似规模项目的数据并不会花费太长时间。

现实挑战与改进思路

Snapshot Serengeti 数据带来了一些有趣的挑战,例如在标注图像中,动物并不总是容易被识别。

在现实世界的项目实现中,你可能会考虑开发一个处理图像序列的系统。这样,即使在某张特定图像中你只看到了一只角或一条尾巴,你的分类置信度也能更加稳健。

处理图像序列的另一个合理原因是,你的目标是计数动物。例如,如果有一只狒狒在视野范围内来回走动,你可能会多次计数它,而仔细检查图像序列可能会发现这只是同一只动物被反复拍摄。

说到这一点,如果你真的想认真统计个体动物,你可能会尝试构建一个动物识别流程,类似于人类的人脸识别系统。这样你可以区分个体动物,从而尝试对种群中的个体进行计数和追踪,这样你就能知道同一只狒狒是否在不同时间多次经过你的相机。

但这显然超出了本项目的范围。实际上,即使你不考虑追踪图像序列或识别个体动物,仅仅通过收集更多训练数据,你就能提升模型性能。然后通过统计方法,了解公园内动物种群和生物多样性的普遍情况。

本质上,你可以平滑处理同一动物的多次计数。这对于研究人员和政策制定者可能很有价值。


总结与展望

本节课中,我们一起学习了生物多样性监测项目的完整构建与评估流程。希望你觉得这个项目有趣、鼓舞人心且充满乐趣。就像本课程中的其他项目一样,这里的目标不一定是让你成为能区分角马和红羚的专家,而是给你一些思路,并让你了解如果你要着手处理这样一个现实项目,可能需要哪些工具。

希望你的脑海中已经开始构思,也许你已经准备好不久后开始探索你自己的项目了。


项目聚焦:气候变化与AI

在本周课程结束前,我想再与你分享一个项目聚焦。

Priya DontiClimate Change AI 的联合创始人兼董事,也是麻省理工学院的准教授。她将简要介绍她在 Climate Change AI 方面的工作,以及你如何能参与到感兴趣的气候变化工作中。

080:机器学习应对气候变化 🌍🤖

概述

在本节课中,我们将学习机器学习如何应用于应对气候变化这一全球性挑战。课程将介绍机器学习在气候变化领域的几个核心应用主题,并探讨如何开始参与这一重要工作。


自我介绍与背景

我叫普里亚·多蒂,是卡内基梅隆大学的博士研究生。

我的研究工作专注于开发机器学习方法,以优化整合了大量可再生能源的电网。

我也是“气候变化人工智能”组织的联合创始人兼主席。

该组织旨在通过教育、资助和社区建设,促进气候变化与机器学习领域产生有影响力的工作。


机器学习在气候变化中的作用

我想退一步,对这个领域进行一个广泛的概述,并谈谈你如何参与其中。

为了应对气候变化,我们需要社会各界的行动,并利用我们掌握的所有工具。这包括机器学习。

机器学习可以通过支持减少温室气体排放和适应气候变化影响的策略,在气候行动中发挥关键作用。




应用领域概览

认识到这一点后,我和一些同事共同撰写了一篇名为《用机器学习应对气候变化》的论文,详细介绍了该领域的数十个机会。

这些机会涵盖能源、交通、农业、灾害响应等多个领域。

虽然我们没有时间涵盖所有这些应用,但我强烈建议你查阅这篇论文以了解更多信息。


核心应用主题

我想重点介绍贯穿所有这些应用的几个关键主题。

主题一:信息收集

在许多情况下,获取额外的数据有助于为气候行动提供信息。

例如,准确了解温室气体排放的时间和地点,可以使政策制定者更有效地监管这些排放。

机器学习可以通过分析大型数据集中的模式,为其中一些信息提供估算。

以下是机器学习在信息收集方面的几个应用实例:

  • 机器学习可应用于卫星图像,以检测全球温室气体排放或甲烷泄漏。
  • 机器学习可用于收集有关建筑能效特征的信息。
  • 机器学习可用于精确定位森林砍伐区域。

主题二:预测

预见性在许多气候变化情境中至关重要。

例如,太阳能和风能的发电量会随天气变化,提前获得准确的发电量预测可以帮助电网运营商管理含有大量可再生能源的电网。

在适应气候变化的背景下,提前预测气候引发的干旱、洪水或饥荒同样有用,以便为农民或疏散规划者提供关键预警。

在这些以及许多其他情境中,机器学习可以利用传感器或物理模型等异构数据源来预测相关量。

主题三:优化现实世界系统

现实世界系统通常存在许多低效之处,导致浪费和过量排放。

例如,建筑物的供暖和制冷系统通常消耗比实际所需更多的能源。

通过动态考虑天气、人员占用模式和建筑物理特性,可以显著提高其效率。

另一个例子是,全球供应链庞大而复杂,通过智能地将货物捆绑运输,或自适应地调整货运时间表以适应中断或延误,可以节省大量资源。

机器学习可用于优化此类现实世界系统,应用领域包括供暖和制冷、供应链管理和智能农业。

不过,这里有一个重要的注意事项:提高系统效率通常会导致其使用量增加,从而可能抵消部分减排效益。

这被称为“反弹效应”。在这一领域进行应用时,应注意减少这些反弹效应。

主题四:加速科学实验

科学发现的过程往往很缓慢。

例如,据说托马斯·爱迪生尝试了数千种灯泡配置才找到一种可行的方案。

机器学习可以通过学习过去的实验来建议下一步尝试哪些实验,从而帮助加速科学发现的过程。

此类技术可用于以下应用:

  • 设计更好的电池。
  • 制造低碳合成燃料。
  • 寻找最佳设备设置以指导太阳能电池板的制造。
  • 设计更有效的二氧化碳吸附剂(基本上就像从大气中去除二氧化碳的海绵)。

重要考量与协作

虽然这些代表了机器学习在气候变化方面的许多有影响力的应用,但值得注意的是,机器学习并非万能灵药。

即使有用,它也只是一个更宏大拼图中的一块。

例如,虽然我之前描述了机器学习可以提供太阳能和风能预测,但为了产生影响力,这些预测最终需要被使用。

例如,将其整合到现有的电力系统优化模型中,或与鼓励使用低碳电力的政策激励措施相结合。

气候变化本质上也是一个跨学科问题,涉及多个领域。

因此,与来自这些背景的利益相关者进行协作和共同开发,是开展有影响力工作的关键。


如何开始参与

你如何找到想要解决的具体问题?如何找到合适的合作者,或者如何开始?

首先,我鼓励你查看“气候变化人工智能”组织提供的一些资源,以便了解更多信息并与他人建立联系。

有很多方式可以参与其中。

以下是你可以参与的几种途径:

  • 数字资源:我们有数字资源可供查阅,提供关于气候变化和机器学习领域的更多信息,包括我们的基础报告、摘要、教程、资源维基和博客。
  • 研讨会:我们在主要的机器学习会议上举办研讨会,你可以在那里了解更多信息、结识他人,如果你有相关工作,也可以展示自己的成果。
  • 导师计划:如果你是这个领域的新手,我们还有一个导师计划,你可以与专家导师配对,以帮助进一步发展你的工作。
  • 资助计划:我们有针对有影响力研究的资助计划,你可以申请。
  • 社区参与:我们还有各种方式让你持续参与,结识他人并了解更多关于整个领域的信息。例如,我们有一个在线社区讨论平台,你可以在那里提问、结识他人和参与讨论;一个社区目录,你可以在其中注册并发现其他人;以及一份每月通讯,介绍活动、读物和工作机会。
  • 线上活动:我们还每月举办一次网络研讨会系列,邀请该领域的专家分享,并每两周举办一次虚拟社交聚会。

你可以访问我们的网站或在社交媒体上关注我们,以了解更多信息。


总结

气候变化是我们这个时代最严峻的挑战之一。

我希望你能加入我们,共同应对这一挑战。谢谢。

😊

081:AI与气候变化 🌍 第4周与课程总结

在本节课中,我们将回顾整个课程的核心内容,总结人工智能在应对气候变化领域的关键应用,并展望未来的学习方向。


恭喜你完成这门关于人工智能与气候变化的课程。

我们首先审视了全球平均气温正在上升的事实。目前的气温已比100年前的平均水平高出超过1摄氏度。虽然1摄氏度听起来不多,但要使整个星球的温度升高一度,需要消耗巨大的能量。气温上升代表着一个事实:由于大气中温室气体增加,近几十年来我们从太阳捕获了巨量的额外能量。正是这些额外能量导致了更极端的天气事件、海洋水温升高,并加速了动植物物种的灭绝。

上一节我们介绍了气候变化的基本事实,本节中我们来看看应对气候变化需要采取的行动。

我们探讨了为实现将全球变暖限制在1.5摄氏度以内的目标,需要如何减少大气中的温室气体,以及未能实现这些目标可能带来的一些后果。

必要的温室气体减排将通过以下组合方式实现:

  • 用更清洁的可再生替代能源(如风能和太阳能)取代化石燃料。
  • 采取基于自然的解决方案,保护和恢复森林及其他自然生态系统。

在我们通过减少温室气体来缓解气候变化的同时,鉴于即使在最乐观的情况下其影响也不可避免,开发适应气候变化的方法同样重要。

适应气候变化意味着:

  • 更好地准备应对极端天气和其他自然灾害。
  • 采用节水方法和可持续农业,以增强对干旱和热浪的抵御能力。


在探讨了气候变化的挑战与应对策略后,我们来看看人工智能在其中扮演的角色。

人工智能可以在许多方面帮助旨在缓解和适应气候变化的项目。

在本课程中,你看到了人工智能如何被用于降低商业太阳能装置的影响,并使其发电输出更可预测。

你完成了一个项目,使风能成为比化石燃料更可行的替代能源。

你了解了人工智能如何用于天气预报,使应对极端天气的准备更加充分。

在本课程的最终项目中,你构建了一个示例,展示了人工智能如何用于监测生态系统的生物多样性。


我希望你从这门课程中获得的是:

  • 一种紧迫感。
  • 对参与缓解和适应气候变化项目的多种可能方式感到鼓舞。
  • 认识到机器学习可以成为解决方案中强大的一部分。

凭借你在这里学到的知识,我鼓励你开始探索自己的项目。

我也邀请你加入本专业系列的下一门课程。在那里,我将深入探讨我的专业领域——人工智能在灾害管理中的应用。

期待在下一门课程中与你相见。


本节课总结

本节课中我们一起回顾了气候变化的核心挑战、减排与适应策略,并总结了人工智能在可再生能源优化、灾害预警和生态监测等关键领域的具体应用。课程旨在激发行动,并展示了技术作为解决方案一部分的潜力。

082:🤖 人工智能与灾害管理

在本课程中,我们将学习人工智能如何应用于灾害响应与管理。我们将通过具体案例,探讨AI技术如何在自然灾害发生后提供关键支持,并了解在应用技术时必须考虑的重要原则,如隐私保护。


欢迎来到“人工智能与灾害管理”,这是“AI for Good”专业系列的第三门课程。

在前两门课程中,我们学习了人工智能如何在公共卫生和气候变化这两个重大挑战中发挥作用。在这门专业系列的第三门也是最后一门课程中,我们将着眼于自然灾害的案例研究,探讨人工智能如何协助灾害响应和管理。

再次由罗伯特·蒙什担任本课程的讲师。除了在硅谷开发了许多人工智能产品外,罗伯特也是灾害响应领域的资深专家。在过去的几十年里,他参与了众多灾害响应和恢复工作。

罗伯特在进入硅谷之前,曾在联合国于塞拉利昂和利比里亚从事冲突后发展工作。移居硅谷后,他继续投身于灾害响应,例如在美国,他经营的公司曾在飓风“桑迪”登陆后立即为联邦应急管理局进行航空影像分析。他的工作还涉及2010年海地地震、同期巴基斯坦洪水,以及最近与多个组织合作应对新冠疫情。

罗伯特的工作表明,即使在他接触AI之前,他的技术专长也已经帮助了世界各地许多人更好地从悲剧中恢复。他最初学习AI时,并未想到它与灾害响应会有太多交集。但随着时间推移,AI变得无处不在,这意味着在人们因灾害而面临最大风险时,AI可以成为帮助他们自我恢复的解决方案的一部分。


上一节我们介绍了课程和讲师的背景,本节中我们来看看课程将涉及的核心项目与原则。

以下是本课程将深入探讨的两个主要项目:

  1. 卫星影像评估灾害损失:第一个项目将展示如何使用卫星影像来评估飓风等灾害后的损失,并辅助恢复工作。其中将强调一个关键概念——隐私保护。卫星影像可能是非常敏感的数据,即使在追求快速响应的灾害场景中,也必须尊重隐私。例如,在飓风“桑迪”的响应中,所使用的航空影像分辨率足以识别单个房产。响应期结束后,数据仅与一个用于评估质量的组织共享,随后所有人便删除了数据,确保其未被公开或长期存储。
  2. 灾后文本信息分析:第二个项目涉及理解灾害发生后发送的文本信息。以2010年海地地震为例,当时国际响应人员通用英语,而大多数海地人只说海地克里奥尔语。罗伯特组织了约2000名海外海地人进行实时翻译,并对信息进行分类和地理定位。本课程的实践部分将使用隐含狄利克雷分布 等机器学习方法,分析这些信息,理解灾后人群沟通话题随时间的变化。

在应用AI技术时,尤其是在公共卫生和灾害响应等关键情境下,我们必须遵循“不伤害”原则。我们的目标不是像学术论文那样追求算法净准确率的提升,而是寻求在确保没有人因此受到额外伤害的前提下产生积极影响。


本节课中,我们一起学习了“人工智能与灾害管理”课程的概述。我们了解到AI可以通过卫星影像分析和灾后通讯处理来辅助灾害响应,同时也必须高度重视数据隐私和“不伤害”伦理原则。接下来的视频将开始深入讲解这些重要的概念和案例。

083:什么是灾害?🌪️

在本节课中,我们将要学习灾害的基本定义、不同类型以及灾害管理的核心概念。课程将重点探讨人工智能如何帮助我们在灾害的减缓、准备、响应和恢复阶段发挥作用。


灾害是指对人员、财产或环境造成广泛损害的事件或情况。本课程的重点是探讨人工智能如何帮助减缓灾害、进行灾害准备,以及在灾害发生后的响应和恢复工作。

首先,关于什么构成灾害,目前并没有一个被广泛认同的定义。但联合国减少灾害风险办公室将灾害定义为:对社区或社会功能的严重破坏,涉及广泛的人员、物质、经济或环境损失与影响。


灾害的实例:2021年河南洪灾

上一节我们介绍了灾害的抽象定义,本节中我们来看看一个具体的实例。

2021年7月,中国河南省经历了有记录以来最严重的洪灾之一。连续三天的强降雨迅速超出了该地区的排水系统承载能力,导致大面积洪水,造成超过200人死亡。

以下是此次洪灾造成的主要影响:

  • 超过150万人流离失所。
  • 造成约140亿美元的经济损失。
  • 道路、桥梁等关键基础设施被毁,交通和通信网络中断,导致许多人被困于洪水中。
  • 河南省作为中国主要的农业和制造业中心之一,此次洪灾还造成了重大的经济损失,并扰乱了全球供应链。

灾害的类型:自然与人为

灾害也可以是人为造成的,例如武装冲突的结果或工业事故(如核电站故障)。在某些情况下,灾害的成因实际上是两者结合或有些模糊。

例如,2018年11月8日,强风导致电线倒塌,引发了北加州最具破坏性的野火之一。气候变化加剧的极端高温和干旱条件,以及数十年的灭火努力,共同导致火势迅速失控。这场大火烧毁了超过600平方公里土地,摧毁了超过18000座建筑,并夺走了85人的生命。

在这种情况下,很难简单界定这究竟是一场自然灾害还是人为灾害。一方面,它始于大风,损害由野火造成;但另一方面,是电线引发了火灾,而人为造成的气候变化和数十年的灭火政策使得火势比原本可能的情况更为严重。

在本课程中,我们不会纠结于区分自然灾害和人为灾害,因为有时灾害的根本原因很难完全厘清。自然灾害甚至可能导致人为灾害,特别是通过政治不稳定和受灾社区流离失所人群的脆弱性。无论如何,在本课程中,我们将主要关注至少源于自然因素的灾害,即由风暴、洪水、地震、野火和干旱等情况造成的事件。


灾害管理的核心:风险管理

在灾害管理领域,你会经常听到人们谈论风险管理,这确实是灾害管理的核心。

例如,某个地区异常干燥的条件可能导致更高的野火风险。然而,野火本身并不一定是坏事。事实上,许多植物依赖野火来发芽。但当火灾对人员和财产造成损害时,其结果通常就被视为一场灾害。在这种情况下,风险管理可能意味着采取灭火活动以使火势远离建筑物,以及进行早期疏散以使人员远离危险。

同样,地震和火山喷发是自然现象,它们在陆地和海洋中定期发生,并存在影响人员和基础设施的风险。在许多情况下,它们发生在远离人口中心的地方,不会造成损害。然而,当这些事件发生在人口中心附近时,它们可能导致广泛的破坏和人员伤亡。通常,损害的程度更多地反映了事件发生前所采取的风险管理或风险降低措施,而非事件本身的严重性。


突发性灾害与缓发性灾害

灾害可以根据其发展速度进行分类。

以下是两种主要类型:

  • 突发性灾害:指迅速或意外发生的灾害,如地震、海啸、洪水、火灾或飓风造成的损害。
  • 缓发性灾害:指逐渐发展的危机或事件,通常持续数周、数月或数年,如干旱、饥荒和流行病。

灾害的官方认定与政治因素

一个事件是否被官方指定为灾害,可能取决于特定政府通过宣布灾害状态所能获得的利益或可能遭受的损失。在某些情况下,政府可能由于潜在的负面影响而不愿将某个事件归类为灾害。

例如,报告灾害可能使一个国家或地区更难吸引商业或旅游业,引发公众恐慌或社区动荡,或反映出政治领导力或效能的不足。反之亦然,在一个地区宣布官方灾害可以开启用于抗击灾害的资金和响应资源,并且更具争议的是,可以以效率为名规避正当程序,例如宣布戒严。

因此,将灾害的官方宣布与政治因素完全分开并不总是容易的。


总结与展望

无论灾害的性质如何,政府、应急管理机构、人道主义组织和受危机影响的人群都需要思考如何应对这种情况,不仅仅是在灾害发生后,还包括如何采取措施来准备和减轻灾害的影响。

本节课中我们一起学习了灾害的定义、实例、类型(自然/人为、突发/缓发),并了解了风险管理是灾害管理的核心,以及灾害认定中可能涉及的政治因素。在下一个视频中,我将带你了解灾害响应组织如何努力减少灾害的影响。

084:灾害管理周期 🔄

在本节课中,我们将学习灾害管理的核心框架——灾害管理周期。我们将了解其四个阶段,并探讨每个阶段的目标与行动,以及数据与人工智能在其中可能扮演的角色。

灾害会对受灾社区产生长期影响。这种影响可能包括基础设施的重大损坏,以及经济和社会的中断。一些社区可能需要数月、数年甚至数十年才能从灾害中恢复,在某些情况下,受灾社区可能永远无法完全恢复。

通常,受灾社区的恢复程度与灾害发生前后的风险管理、响应和恢复工作密切相关。这正是我们接下来要讨论的内容。

灾害管理周期的四个阶段

你可以将灾害管理视为由四个阶段组成:减灾、准备、响应和恢复

这些阶段在某种意义上可以被看作是一个循环的一部分,每个阶段都导向下一个阶段。这个循环没有必然的起点或终点,且各阶段的工作可能存在显著的重叠。

有效的减灾和准备措施对于减少灾害对受灾社区的影响至关重要。在突发性灾害发生后,响应工作在紧随其后的数小时和数天内至关重要,而长期的恢复工作则有助于社区重建。

基于灾后吸取的经验教训,减灾和准备工作将持续进行,以减少未来事件的影响。

在本课程的背景下,需要指出的是,灾害刚发生后通常是向社区或灾害响应组织引入新技术的最糟糕时机。因此,人工智能与灾害响应的许多工作都集中在准备和减灾阶段

这个灾害管理周期是许多组织用来规划和减少灾害影响的一个框架序列。你可能会看到不同组织发布的不同版本,它甚至可能被称为应急管理周期,并应用于广泛的场景。

根据特定灾害的性质和相关风险,这个周期中每个阶段的细节可能略有不同,但总体而言,每个阶段的目标在不同类型的灾害或紧急情况下通常是一致的。

接下来,我们来看看在灾害管理周期的每个阶段,针对不同风险和灾害所采取的一些具体行动示例。

各阶段行动示例

以下是每个阶段的具体行动示例。

减灾阶段

在减灾阶段,应急管理专业人员专注于采取行动,以减少或消除与潜在灾害相关的风险和危害。

例如,在荷兰,该国大部分地区处于或低于海平面,海洋本身因可能引发洪水而被视为一种风险。为了降低洪水风险,该国建立了广泛的堤坝系统。

准备阶段

在准备阶段,个人和社区会制定计划并为灾害发生时的响应做准备。

例如,在日本,建立了先进的地震和海啸预警系统,并开展了广泛的公众教育活动,以提高对自然灾害风险的认识。

响应阶段

在响应阶段,重点转向采取行动拯救生命、满足基本需求和管理灾害的直接后果。

例如,在菲律宾,1991年皮纳图博火山喷发期间,政府协调了对受灾地区的搜救工作,以帮助被困或受伤的人员。设立了临时避难所和救济中心提供援助,国际援助组织也提供了食品、其他物资和医疗护理。

恢复阶段

最后,在恢复阶段,努力恢复受灾地区至灾前状态,并帮助社区重建。

例如,在美国,2005年卡特里娜飓风过后,政府实施了一系列恢复计划。这包括为受影响企业和个人提供财政援助、重建受损基础设施(包括建筑物和堤坝)的计划,以及为流离失所者提供的住房援助计划。

数据与人工智能的作用

贯穿灾害管理周期所有阶段的一个共同挑战是,在大多数情况下,数据驱动的决策至关重要。虽然需要一定量的手动处理和分析,但手动处理大量数据可能耗时且容易出错。

这正是人工智能可以成为解决方案一部分的机会所在。

  • 在响应阶段,需要快速分析和处理的数据包括卫星图像、气象传感器数据、文本和语音通信等。
  • 随着工作从响应转向恢复,需要数据来为长期的物流规划和资源分配做出明智决策。
  • 在减灾阶段,数据在许多预警系统中发挥着关键作用,包括预测和实时测量数据集。
  • 在准备阶段,分析有关灾害原因和结果的历史数据有助于制定更稳健的应急响应计划。

如果成功实施,人工智能可以通过提供及时准确的信息、优化资源和物流,帮助减少灾害对受灾社区的影响,从而在灾害管理周期的所有阶段发挥重要作用。

正如你在之前课程的案例研究中看到的,需要注意的是,并非所有的灾害管理工作都能从人工智能中受益。如果数据在问题中扮演重要角色,那么可能值得考虑人工智能方法。但在实践中,人工智能可能不会提供附加价值,甚至可能分散对更直接解决方案的注意力,因此审视所有选项非常重要。

同样值得注意的是,许多人在灾害发生后立即感到有采取行动的动力。考虑到灾害的影响可能出现在媒体报道中,并且存在紧迫感,这是很自然的。然而,如果你希望参与救灾工作,响应阶段通常是最糟糕的起步时机,因为应急响应人员通常已经不堪重负,他们最迫切需要的是拥有现有专业技能的人员以及稳健的数据处理和决策系统的帮助。

相反,如果你想要提供帮助,通常更好的做法是参与长期的恢复工作,或者致力于灾害的减灾和准备工作。一旦你通过其他阶段的工作明确了需要解决的问题,那么你在响应阶段的努力才更可能产生影响力。

总结

本节课中,我们一起学习了灾害管理周期的四个阶段:减灾、准备、响应和恢复。我们了解了这是一个循环的、各阶段可能重叠的框架,并通过具体例子看到了每个阶段的行动重点。我们还探讨了数据驱动决策的重要性,以及人工智能在提供信息、优化资源以帮助减少灾害影响方面的潜在作用,同时也认识到需要根据实际情况评估AI的适用性。最后,我们明确了在减灾和准备阶段进行长期投入,比在灾害响应高峰期仓促介入更为有效。

接下来,我们将以2019年莫桑比克接连遭受两次气旋袭击的具体案例,来审视灾害管理周期的各个阶段是如何展开的。

085:台风伊代与肯尼思案例概述 🌪️

在本节课中,我们将了解2019年先后袭击莫桑比克的两场气旋(台风)事件的基本情况及其直接冲击。我们将看到灾难的规模、造成的破坏以及初期响应的挑战。


灾难事件背景

上一节我们介绍了课程的整体框架,本节中我们来看看2019年莫桑比克遭遇的具体灾难事件。

莫桑比克位于非洲南部东海岸。2019年3月14日,气旋“伊代”登陆。气旋是一种热带风暴,通常伴随强风和暴雨。根据您所在地区,您可能更熟悉将其称为飓风或台风。

当气旋“伊代”来袭时,风暴带来了强降雨、洪水和高达每小时195公里的强风。作为对比,每小时195公里的风足以卷起混凝土块甚至汽车等重物。在这种风力下,站立或移动几乎是不可能的。

预警与疏散行动

在风暴来临前,莫桑比克发布了红色警报,并敦促居民到高地或坚固建筑中避难。在某些地区,应急服务人员挨家挨户鼓励人们撤离。因此,风暴袭击前有超过80万人被疏散。

然而,尽管有警告和疏散努力,受影响地区的许多人仍对风暴的严重性措手不及,一些人未能及时撤离。灾难的巨大规模使许多疏散中心不堪重负,导致过度拥挤和卫生条件恶劣。

灾难造成的直接冲击

以下是风暴造成的主要直接破坏:

  • 基础设施与基本服务破坏:风暴导致停电。
  • 生计与粮食安全受损:风暴对农作物造成损害,导致粮食短缺。
  • 次生伤害与伤亡:在某些情况下,强风卷起了房屋的铁皮等危险碎片,造成了进一步的破坏、严重伤害和死亡。

第二次打击:气旋肯尼思

2019年4月25日,就在气旋“伊代”过后仅六周,气旋“肯尼思”在莫桑比克北部登陆。

风暴对关键基础设施造成重大破坏,包括道路、桥梁和机场,这导致援助物资运抵受影响社区的时间被延迟。

由于“肯尼思”袭击了莫桑比克的不同地点,救援力量被分散,这进一步加剧了基本资源和援助的稀缺。

灾难的总体影响

根据莫桑比克政府2020年5月的最终报告,两次气旋的影响是广泛的。

人员伤亡与流离失所:造成超过1500人死亡,16万人流离失所。

经济损失:给该地区造成约32亿美元损失。

房屋与生计破坏:风暴还损坏或摧毁了超过70万所房屋,使许多家庭无家可归。洪水对农作物造成严重损害,重创了经济,并导致受影响地区的粮食不安全。

灾后初期的挑战

在气旋“伊代”登陆后的最初几个小时,受影响社区面临大范围洪水、停电和通信中断,这使得当局难以评估损害程度并启动响应工作。

为了确保快速有效的响应,现场的协调和关键信息共享至关重要。


本节课中我们一起学习了2019年袭击莫桑比克的两次强气旋“伊代”与“肯尼思”的基本情况。我们看到了灾难的规模、预警疏散的努力、造成的巨大生命财产损失以及灾后初期面临的严峻挑战。下一节,我们将详细探讨灾后的具体响应和恢复工作。

086:台风“伊代”与“肯尼思”的响应与恢复 🌪️

概述

在本节课中,我们将学习人工智能(AI)在灾害响应与恢复阶段的具体应用。我们将以2019年先后袭击莫桑比克的台风“伊代”和“肯尼思”为案例,探讨AI技术如何帮助评估灾情、协调救援、预测疫情并支持社区重建。


灾害响应阶段的快速行动

上一节我们介绍了灾害管理的完整周期。本节中我们来看看响应阶段的具体行动。

2019年3月14日台风“伊代”登陆后,灾害响应组织必须迅速行动,以评估损失、定位安全避难所、派遣搜救团队并确定受灾地区的需求。

“伊代”袭击数小时内,莫桑比克政府便部署了国家灾害管理研究所,以协调包括搜救在内的紧急响应工作。

AI在灾情评估中的应用

以下是AI技术在此次灾害响应中的关键应用。

  • 卫星图像分析:在联合国训练研究所和欧洲航天局领导的一个项目中,AI被用于分析卫星图像,以识别和绘制受损基础设施地图。这使得组织能够快速评估损害程度并确定响应工作的优先级。
  • 优化救援路径:AI分析还能定位受洪水影响的道路和桥梁,从而优化向受灾社区运送紧急物资的路线。

沟通与援助请求处理

为了收集并响应个人和社区的援助请求,联合国儿童基金会(UNICEF)使用了其U报告系统中的AI驱动聊天机器人。

该聊天机器人能分析请求并确定适当的援助响应。该项目支持包括葡萄牙语以及绍纳语和贝拉语等当地语言在内的多种语言。

需要说明的是,此类聊天机器人需要多年的试错才能完善,并非首次在灾害中部署。UNICEF从2011年就开始开发U报告。早期在尼日利亚的母婴健康项目中,曾尝试构建AI系统来自动分类和优先处理短信。虽然该项目最终未成功,但从该项目及其他类似项目中汲取的经验教训,使U报告工具在莫桑比克响应等情况下变得更加稳健。

紧急状态与国际响应

随着灾情发展,正式的紧急状态宣告启动了更广泛的国际援助。

3月19日,即“伊代”登陆五天后,莫桑比克政府宣布进入紧急状态,并建立了紧急行动中心,作为协调响应工作和国际援助联络的中心点。

3月25日,世界卫生组织(WHO)将局势宣布为三级紧急情况(其应急框架中的最高级别)。这些宣告是重要行动,使得国际社会的资源和专业知识得以动员起来帮助应对灾害。

AI在公共卫生危机预警中的应用

台风引发的洪水导致了水源污染、卫生设施损坏、居住条件拥挤且不卫生,以及医疗服务获取受限。这些因素共同创造了霍乱等水传播疾病快速传播的完美环境。

3月27日报告了首批霍乱病例,随后疫情迅速蔓延。到4月15日,即首例病例报告仅三周后,共确诊了4000例霍乱病例,并报告了28例死亡。

世界卫生组织部署的早期预警系统中包含一个机器学习算法。该算法通过分析降雨模式、水位和水质数据,来预测霍乱等水传播疾病最可能爆发的区域。

这些机器学习信号,连同大量人工收集的信号,共同帮助指导医疗人员和资源部署到高风险地区。

为抗击疫情,世卫组织提供了技术支持,帮助建立霍乱治疗中心并为高风险人群提供霍乱疫苗。该地区现有的医疗机构、UNICEF、无国界医生以及红十字会与红新月会国际联合会等组织,协助建立了治疗中心、医疗团队,并提供了医疗设备和应急物资(如净水片、卫生包和肥皂)。

恢复阶段的目标与行动

当局势稳定后,恢复阶段开始。但需注意,恢复阶段的开始并不一定意味着响应阶段的结束,仅意味着一些组织开始商讨社区的修复和重建工作。

一般而言,任何灾害的恢复阶段都有四个主要目标:

  1. 恢复基本服务:如获取食物、水、卫生设施、医疗保健和学校开学,以及关于如何获取这些服务的信息。
  2. 重建基础设施:包括道路、桥梁和建筑物。
  3. 为受灾社区提供支持:以重建家园和生计。
  4. 支持减灾工作:为未来的灾害做好准备。

以下是莫桑比克政府及各组织在“伊代”过后的恢复工作中提供的部分援助:

  • 国际移民组织:以修复受损房屋和向家庭提供重建材料的形式提供支持。
  • 世界卫生组织:协助恢复卫生设施并提供医疗护理。
  • 联合国儿童基金会:促进学校修复,为儿童提供教育材料,并提供心理社会支持以帮助儿童应对台风造成的创伤。
  • 联合国开发计划署:通过支持农业、渔业和小型企业,协助恢复受影响社区的生计,并提供职业培训,试图建立新的经济机会。

本地组织的关键作用

绝大多数灾害响应者通常不是国际组织,而是本地组织和个人,他们在灾后重建和支持社区方面至关重要。他们通常更善于识别和应对受影响人群的具体需求,并能与该社区建立信任、促进沟通。

尽管作用关键,但本地组织和个人获得的媒体关注往往少于资源更丰富、 outreach 能力更强的国际同行。例如,作者曾在利比里亚为联合国难民署工作,但技术上受雇于一个本地组织,由当地长大的人管理,只是由联合国提供资金和卡车等后勤援助。

认识到并支持本地组织的工作非常重要,他们通常是第一时间到达现场,并在国际组织离开后仍长期工作。在本地组织的支持下,社区能够可持续且公平地重建和恢复。因此,支持灾害响应工作的最佳方式是直接与本地组织合作,这将产生更直接、更即时的影响。

二次灾害的挑战与教训

在应对“伊代”的响应与恢复工作期间,台风“肯尼思”于4月25日袭击了莫桑比克,这距离上一场风暴仅六周。

这第二场台风引发了政府和援助组织的立即响应,但其严重性和影响摧毁了正在进行的人道主义救援工作,并对道路、桥梁和机场造成进一步破坏,使得援助人员难以进入受灾地区,并延误了基本援助的交付。

在台风发生前的几年里,莫桑比克已努力改善防灾准备,建立了自然灾害管理机构并制定了减灾战略。然而,这些努力仍处于早期阶段,并未对这场毁灭性的连续台风做好充分准备。

这里的启示是:为了在灾害管理的响应和恢复阶段工作中最高效,你在减灾和准备阶段的工作至关重要。这正是我们接下来要讨论的内容。


总结

本节课中,我们一起学习了AI在2019年莫桑比克台风灾害响应与恢复中的实际应用。我们看到AI如何通过卫星图像分析加速灾情评估,通过聊天机器人处理援助请求,以及通过机器学习预测疾病爆发。同时,我们也认识到恢复工作的多维目标,以及本地组织在长期重建中不可替代的关键作用。最后,连续灾害的案例凸显了扎实的减灾和准备工作对于有效应对极端事件的重要性。

087:台风伊代与肯尼思的缓解与准备 🌀

在本节课中,我们将学习莫桑比克在经历了“伊代”和“肯尼思”两次强台风后,如何通过投资预警系统、加固基础设施和开展社区培训等措施,从被动应对转向主动的灾害管理。这些经验对于任何面临自然灾害的地区都至关重要。


灾害暴露的脆弱性

莫桑比克原有的基础设施和通信系统无法应对“伊代”和“肯尼思”台风的强度。这些风暴突显了转向更积极主动的灾害管理方式的必要性。

投资于缓解措施

为了减轻未来灾害的影响,莫桑比克在早期预警系统上进行了大量投资。联合国开发计划署参与了安装气象监测站的工作,这些监测站提供了天气模式的实时数据,并帮助预测极端天气事件的可能性。

此外,基于电话的警报系统也得到了改进。改进包括更广泛、更可靠的覆盖范围,以及对更多语言(如绍纳语和恩扬加语)的支持。

为了使基础设施具备抗灾能力,许多建筑使用混凝土和钢材重建,以更好地抵御极端天气事件。建筑师还考虑了该地区的地形,在更高的地方建造了新基础设施,并实施了排水系统和湿地以防止洪水。

为了预防未来的疾病爆发,医疗专业人员为超过70万名儿童接种了霍乱疫苗。

转向准备阶段

除了实施各种缓解措施,工作重点随后转向了准备阶段,旨在增强国家预测、准备、培训和应对未来灾害的能力。

莫桑比克政府与国际伙伴合作,以提高未来灾害发生时的备灾和应对能力。

以下是准备阶段采取的关键行动列表:

  • 改进应急计划:包括在靠近可能受影响的社区的地点,预先储备基本救援物资。
  • 社区培训:国际移民组织培训社区制定灾害风险降低策略,包括疏散和应急响应计划。
  • 卫生宣传:包括联合国儿童基金会、世界卫生组织和当地非政府组织在内的许多组织开展了卫生宣传活动,培训社区卫生工作者和志愿者如何推广安全用水实践,并进行卫生和清洁活动。

社区参与对于提高认识和建立对未来灾害的抵御能力至关重要。人们接受了备灾和降低风险措施的培训,并被鼓励在监测和应对潜在危险方面发挥积极作用。

后续考验与成效

自2019年“伊代”和“肯尼思”台风以来,莫桑比克又经历了三次重大的台风。其中,2023年2月在印度洋形成的“弗雷迪”台风,被测定为有记录以来持续时间最长、威力最强的台风。

该台风于当年3月2日在莫桑比克登陆,伴有暴雨和每小时270公里的持续风速。

得益于社区预警系统,莫桑比克得以在“弗雷迪”到来之前,通过多种语言的短信、地方广播和电视公告向居民发出警报。这为人们提供了更多时间转移到避难所,导致的死亡人数远低于以往的灾害。

不幸的是,对水和卫生系统以及医疗设施的影响是广泛的,霍乱的爆发甚至比2019年台风后更严重。但几乎可以肯定的是,如果没有在2019年事件后为那70万名儿童接种疫苗,这次霍乱爆发的情况会更糟。

总结与启示

希望这能说明,为什么在任何面临自然灾害事件的地区,为疾病爆发和其他风险或持续挑战进行缓解和准备是如此重要。

研究和分析灾害在这些缓解和准备阶段的影响,有助于找到改进应急响应系统、基础设施和未来事件准备工作的方法。

通过将这些经验教训纳入未来的规划和行动,社区和政府可以努力减少未来灾害的影响,并最终挽救更多生命。

在下一课中,我们将探讨人工智能在灾害管理中的应用,以及如何结合人类与机器的智慧,为受灾个体带来更好的结果。

088:人工智能与灾害管理 🚨

在本节课中,我们将探讨人工智能(AI)在灾害管理领域的应用、具体案例以及其潜在的益处与局限性。我们将了解AI如何帮助监测灾害、预警、优化响应以及协助灾后恢复工作。


灾害管理涉及多种信息来源,包括数字通信、预报和传感器数据、航空影像等。这些数据可用于监测和预测灾害发展、识别高风险区域,并帮助确定响应工作的优先级。

在许多情况下,人工手动处理所有相关数据既耗时,有时甚至不可能。这正是AI能够发挥价值的地方。

事实上,如果你使用像英语这样的主流语言,你可能会对一些通用的AI产品习以为常,例如搜索引擎和翻译应用。这些工具在灾害后促进沟通和信息传播,或作为预警系统的一部分时,可能非常有用。

不幸的是,世界上大多数语言在搜索或翻译应用中并未得到支持。因此,帮助支持灾害准备和响应工作的一个有效途径,是为使用资源匮乏语言的人群构建更多通用AI应用。这将帮助他们更轻松地沟通、查找信息或辨别新闻真伪。

接下来,我们来看看AI可以参与灾害管理的几个具体例子。


AI在灾害风险预警中的应用 🌍

为了提升全球的灾害风险降低和早期预警能力,联合国开发计划署创建了一个多灾种早期预警系统。该系统利用AI处理和分析各种数据源,包括气象数据、水文数据、地震与地球物理数据以及卫星图像,以提供严重事件的准确预报和灾害地图。这包括诸如风暴、干旱、野火等事件。

该工具利用数据丰富地区的历史数据,然后进行外推,以协助现场观测数据相对较少的地区。该项目的最终目标是减少社区、生计和基础设施暴露于天气相关灾害的风险。

一旦数据分析完成,该工具会使用AI基于特定标准自动检测并触发预警警报,以快速动员响应工作。包括孟加拉国、印度、印度尼西亚和菲律宾在内的几个国家已经启用了该系统。


AI在野火响应中的应用 🔥

一家名为Pano AI的公司采用超高分辨率摄像头和AI技术来检测、评估和精确定位新的野火位置。因为火灾发生后的最初几分钟对于最小化对生命和财产的潜在损害至关重要。

Pano AI的深度学习计算机视觉算法及其“人在回路”监控中心能够实时快速检测、验证和分类事件。传统上,旁观者会向地方当局报告野火,有时需要数小时才能精确定位火灾位置并派遣首批响应人员。然而,当Pano AI检测到潜在威胁时,它可以立即提醒火灾监控专业人员,并提供经过增强的智能自动生成图像,使专业人员能够确认或排除特定地点是否真的发生了火灾。


AI在灾后家庭团聚中的应用 👨‍👩‍👧‍👦

微软的“人道主义行动AI项目”与土耳其红新月会合作,开发了一个AI驱动的平台,帮助在灾害或冲突中失散的家庭团聚。这项工作是红十字会“重建家庭联系”项目的延伸,该项目数十年来一直致力于在冲突和自然灾害后重新联系人们。

我在2010年海地地震后与谷歌合作开发了一个类似的系统,该项目后来演变成一个通用工具,供人们在灾害后发布信息并与亲人重新取得联系。你可以在本周课程结束时的资源部分找到关于这两个项目的更多信息。


AI的益处与局限性 ⚖️

AI在灾害管理中有潜力带来诸多益处,例如改善态势感知、加快响应时间以及更有效地分配资源。

然而,AI在此背景下也存在一些重要的局限性,包括:

  • 对准确数据的需求:AI模型的性能严重依赖于输入数据的质量。
  • 数据偏见与非代表性的潜在风险:如果训练数据不能代表所有受影响群体,AI系统可能会产生偏见或无效的结果。
  • 与受影响社区沟通的挑战:AI解决方案需要考虑到当地语言、文化和技术可及性。
  • 部署所需的资源与技术专长:实施AI系统可能需要大量的资源和专业知识。
  • 伦理考量:在使用AI时,隐私、问责制等伦理问题往往会被放大。

因此,在灾害管理中,必须评估AI的潜在益处和局限性,并将其作为更广泛的、综合性的灾害风险降低与响应方法的一部分。


总结 📝

本节课中,我们一起学习了人工智能在灾害管理中的多种应用。我们看到了AI如何通过分析多源数据来提升早期预警能力,如何利用计算机视觉加速对野火等紧急事件的响应,以及如何协助灾后的人道主义工作,如家庭团聚。

同时,我们也认识到AI的应用并非没有挑战,它依赖于高质量的数据,并需要谨慎处理偏见、资源需求和伦理问题。将AI作为综合灾害管理策略的一部分,并充分考虑其局限性,对于最大化其积极影响至关重要。

在接下来的几个视频中,我将介绍一些我用来确保我所参与或评审的项目能够成功设置并最大限度减少伤害的指导原则。

089:AI与灾难管理中的社区自助 🆘

在本节课中,我们将探讨如何应用机器学习工具来帮助社区在灾难中进行自助,并了解其中的关键原则与潜在风险。


全球有许多个人和团体正在积极研发旨在帮助灾难管理的机器学习工具。这些人的目标大多是产生积极影响,并且许多人确实在致力于能带来积极成果的解决方案。几年前,我主持了一个主要机器学习会议的首个专注于灾难响应的专题讨论会。该专题名为“用于紧急情况和危机管理的自然语言处理技术”。尽管它在COVID-19高峰期以线上形式举行,但其更广泛地关注自然语言处理与灾难响应。

当时,我撰写了一篇文章,阐述了将机器学习应用于灾难管理的一些通用准则。这些准则旨在为研究人员提供信息,但我所写的大部分内容也普遍适用于任何在AI和灾难管理领域工作的人。在这里,我将简要总结那篇文章的一些要点,你也可以在本周课程末尾的资源部分找到完整文章的链接。

在开始介绍这些准则之前,需要预先提醒一下:我们将要涉及灾难管理工作中一些相当沉重的内容。即使怀着最好的意图,也可能弊大于利。数据处理不当、未能考虑当地语言或社会习俗、与压迫性政权合作以及其他失误,都可能导致生命处于危险之中。

接下来的几个视频中,我们将触及所有这些要点。但首先,对于任何大型灾难,我们根本没有足够的资源直接帮助大多数人。例如,在大流行期间,个人自身必须直接负责保持社交距离和卫生。地震后,你的邻居比专业的搜救队更有可能将你从倒塌的房屋中救出。

因此,在任何地方帮助减轻灾难影响,最重要的事情之一就是帮助社区做好准备进行自助。支持受灾难影响社区的最重要方式是清晰的沟通。使用低资源语言的人更可能成为自然灾害和人为灾害的受害者。所谓“低资源语言”,我指的是那些在搜索引擎或翻译应用等技术应用中通常得不到像英语和其他更主流语言那样支持的语言。

当涉及到社区获取最佳信息和表达自身需求时,这类技术绝对至关重要。任何有助于将信息传递给语言多样化社区的技术,都将在包括灾难在内的许多情况下帮助他们。事实上,我相信,我帮助大公司在更多语言中部署技术的一些工作,可能比我为联合国在难民营工作所花费的一些时间,对灾难响应产生了更大的影响。

例如,当疾病爆发时,它们最有可能首先在一种低资源语言中被讨论。这是因为世界上大部分的语言多样性,与大部分陆地生态多样性(包括病原体)一样,都发生在同一条狭窄的热带带中。因此,如果你恰好致力于改进搜索引擎和翻译应用等设备和应用的语言支持,那么我有一个好消息要告诉你:你已经致力于解决机器学习在灾难响应中最重要的单一问题之一。这些工具将帮助灾难响应者与受影响社区沟通,并帮助受影响社区在线搜索正确的资源进行自助。

我曾多次目睹翻译和沟通出错带来的负面影响。例如,在塞拉利昂的埃博拉危机期间,一家国际新闻机构在一个说林巴语(Limba)的地区用曼德语(Mende)广播公告,这造成了不信任,因为曼德语在当时被视为执政的反对党派的语言。结果,林巴语使用者更可能因为害怕在那里感染埃博拉而避开医疗诊所。

后来,我与援助机构合作,得出了一个非常令人悲伤的结论:每有一个死于埃博拉的人,附近就有十个人死于其他可预防的疾病,因为他们以这种方式避开诊所。将富裕国家的恐惧通过当地媒体进行广播放大,再加上对当地语言的关注太少,导致死亡人数是埃博拉本身致死人数的十倍。

正确的语言和沟通也能产生积极影响。例如,2010年海地地震后,数千名海地侨民通过在海地克里奥尔语(Haitian Creole)和国际响应者使用的英语之间进行翻译,帮助了海地境内的人们。翻译人员的工作挽救了许多生命。它也为灾难响应的机器学习研究提供了支持,作为多语言灾难响应数据集的一部分,该数据集现在被广泛使用。事实上,在本课程的最后一周,你将有机会使用那个数据集。

因此,任何为低资源语言提供更好技术支持的工作,都可能对灾难管理有用,因为它可以成为基础技术的一部分,使受灾难影响的人群能够更容易地沟通、获取信息和服务。


本节课中,我们一起学习了在灾难管理中应用AI帮助社区自助的重要性。核心在于通过技术,特别是对低资源语言的支持,改善沟通和信息获取,从而赋能社区进行自救。同时,我们必须认识到,不当的技术应用可能带来严重的负面影响,因此在工作中必须保持谨慎,充分考虑当地的语言、文化和社会背景。

090:努力获得有影响力的解决方案 🎯

在本节课中,我们将探讨如何在灾难管理等关键领域开发有实际影响力的AI解决方案。我们将重点关注信息管理这一核心挑战,并理解为何通用型技术往往比前沿但未经测试的方案更具价值。

信息管理的核心挑战

信息管理是灾难响应者最常面临的最大问题之一。这个问题并非灾难管理所独有,而是广泛存在于公共卫生、政治或供应链物流等任何领域。在这些领域中,信息可能通过电子表格、调查问卷、表格或其他文档等多种不同方式收集,都会面临相同的信息管理挑战。

灾难响应的大部分工作涉及物流,大多数灾难响应专业人员通过电子表格或其他结构化或半结构化文档(如PDF)共享信息。许多电影造成了一个误解,认为灾难期间的分析和机器学习主要专注于预测下一个热点区域。这类用例确实存在,但非常罕见。事实上,我认为电影中模拟这类场景的预算,超过了实际灾难响应中用于此类态势感知的预算。

从文档中提取信息的价值

例如,一位负责规划饮用水分配的灾难响应负责人,可能会收到来自不同地区、不同机构的数百份报告。每份报告都包含估算总体需求所需的部分信息。然后,需要可靠地从每份报告中提取这些信息,而目前这通常是一个非常手动的过程。

因此,如果你能开发出可以从半结构化表格、表单、电子表格和PDF文档中提取信息的机器学习系统,那么你已经在为解决支持灾难响应专业人员的最重要问题之一而努力。

一个至今仍具相关性的、十多年前的好例子,是Quem Chen及其合作者发表的论文《Deing adaptive feedback for improving data entry accuracy》。这篇论文评估了机器学习辅助技术,旨在帮助专业数据录入员将乌干达农村诊所的病人数据数字化,这些诊所服务着大量刚果难民。

除了在乌干达农村的工作,Kangchn也在美国工作,并建立了一个组织,致力于处理来自纳税申报表等来源的非结构化文本。我认为这是一个很好的例子,说明了那些在非灾难情况下有用的技术,如何也能应用于难民营、健康诊所等场景的关键数据处理中。

开发通用型技术

我在此强调,在灾难管理中可以做的、最具影响力的工作之一,是开发通用型技术,例如搜索引擎、低资源语言的翻译支持,或从非结构化文档中进行信息检索。

然而,我也想强调,与领域专家和受影响社区合作非常重要,以确保你没有为错误的事情进行优化,或者没有在开发一个在现实世界中无实际应用的“实验室解决方案”。一个有用的类比是思考许多灾难响应工作中使用的车辆。

“陆地巡洋舰”软件哲学

如果你曾在援助领域工作过,你就会知道丰田陆地巡洋舰是一个经典车型。在我所见过的某些响应场景中,它们通常是车辆中的大多数。陆地巡洋舰并非专门为优化援助交付而设计,但几十年来,它们在全球绝大多数国家被使用,因此在紧急情况出现时,它们可靠且可预测。

当它们出现问题时,附近会有很多人知道如何修理它们,并且更有可能找到合适的替换零件。

那么,一个学术研究实验室能否设计出比陆地巡洋舰更适合灾难响应的车辆?毫无疑问,他们可以。但这些车辆是否应该在关键情况下首次部署?绝对不行。备用零件将很难获得,能够修理它们的人可能只有少数已经转向其他工作、或许根本无法帮助解决机械问题的学者。

因此,来自学术实验室的科学可能会为未来的发展提供信息,但他们不应该制造实际的车辆。这同样适用于任何软件解决方案。软件原型可以为科学提供信息,并在非关键时期的受控环境中使用,特别是当存在重要的人机交互组件需要测试时。

在实践中应用可靠方案

例如,正如我在本专业课程的第一门课中所说,当我在尼日利亚与联合国儿童基金会合作开展母婴健康项目时,我们没有为希望解决的问题构建一个全新的AI系统,而是依赖于我们已经在许多行业应用中测试并扩展的系统。通过这种方式,我们部署了一个“陆地巡洋舰”式的软件解决方案,而不是试图构建一个前沿但未经测试的解决方案。

即使在我任职于斯坦福大学——可以说是最注重工业应用的顶尖技术大学时,当我在灾难响应情况下需要快速开发工具时,我也没有与那里的同事合作。我选择了商业软件解决方案,因为可靠性比创新更重要。只有在特定响应工作结束后,我才领导研究机器学习如何改进未来的响应。

因此,无论你决定从事什么工作,请记住,在通用型技术的基础上进行扩展或构建,通常是你在灾难管理中可以做的、最具影响力的工作之一。

在下一视频中,我将讨论灾难管理中数据隐私这一重要问题。


本节课中,我们一起学习了在灾难响应等关键领域开发AI解决方案的核心思路。我们认识到,信息提取是应对现场混乱数据的关键,而采用经过验证的、可靠的“通用型技术”(类比丰田陆地巡洋舰),往往比追求前沿但脆弱的“实验室方案”更能产生实际影响力。成功的AI for Good项目需要紧密结合领域需求,优先考虑可靠性、可维护性和可扩展性。

091:数据隐私与相关风险 🔒

在本节课中,我们将要学习在AI应用于公共卫生、气候变化和灾难管理等“向善”领域时,如何处理数据隐私问题以及识别相关的伦理与政治风险。我们将探讨为何默认应遵循隐私保护实践,以及在不同情境下,即使是公开数据也可能带来意想不到的危害。


无论你从事何种工作,你的默认实践都应是保护数据隐私。在持续的灾难期间尤其如此。

今天看似不敏感的数据,未来可能变得敏感,因此无法确定。所以不要发布任何个人数据,这包括重新发布社交媒体上已有的公开信息。相反,应等待受影响人群不再处于风险之中,然后与隐私专家及受影响社区合作,共同决定哪些信息可以或不可以分享。

即使对于被视为公开且不敏感的数据,也需要知道,如果你在新的语境下重新发布这些数据,它也可能变得敏感。

此外,聚合数据,包括机器学习模型本身,可能比其单个数据点更为敏感。


上一节我们介绍了数据再语境化的风险,本节中我们来看一个具体的案例。

例如,在“阿拉伯之春”期间,我看到许多人在社交媒体上分享当地情况,比如道路封闭、难民等信息。虽然这些是公开帖子,但它们显然只是为少量关注者而写。人们可能没有意识到,报告道路封闭也会帮助描绘军队的动向。

作为一个反面教材,其中一些帖子被复制到一个联合国控制的网站上重新发布,并且原作者无法从联合国网站上删除它们。


当时,中东和北非地区的许多行为者将联合国视为负面的外国影响者,甚至是最坏的入侵者。因此,发布这些帖子的人被视为合作者。

语境因此丢失了,该地区压制性政权的当局并不关心这些人是否只是打算与少数关注者分享实用信息。


所以你需要问自己:重新语境化数据或模型,使其现在由你、你的组织或其他组织发布,会产生什么影响?

灾难响应也经常被用作侵犯人权的掩护。虽然灾难后犯罪率通常会下降,但少数掠夺者和机会主义者会试图从混乱中获利。这在压迫性政府中尤其如此,他们利用灾难作为掩护来识别和压制批评者。

如果你正在考虑涉及个人信息的项目(这可能包括种族、宗教、性别或政治偏好等信息),那么你应该考虑其使用场景,以及它是否可能被用于侵犯人权。这种情况在世界各地都可能发生,但在威权政体下更为普遍。


作为评估世界各地风险水平的一般指南,可以查看经济学人智库(EIU)编制的民主指数。

EIU对各国进行排名,并将其分为四类:完全民主国家、有缺陷的民主国家、混合政体和威权政体。

如果存在敏感的使用场景,比如识别在社交媒体上抱怨政府或表达政治观点的人,那么该领域的研究通常不能保证对这些人是安全的。这种情况非常频繁。

在我几年前于KDD会议上的一次演讲中,我谈到了一些国家如何利用第一次主要的冠状病毒爆发(SARS或MERS)作为掩护来识别异见人士。我们在COVID-19疫情中再次看到了这种情况。


通常,为威权政体工作的研究人员无法像民主国家公共机构的研究人员通常独立于政府那样保持独立。但请注意,民主指数高的国家仍然存在侵犯人权的行为,因此这并不意味着任何人可以在不考虑风险的情况下,在世界这些地区部署机器学习。

EIU的民主指数主要关注国家内部因素。一个对任何国家来说都复杂的领域是军队。世界各国的军队也是最大的灾难响应组织,这使得风险评估变得复杂,通常需要逐案调查。


有些案例是明确积极的。2012年,我们一小群非军事灾难响应人员参加了美国海军研究生院主办的演习,旨在探索灾后从航空影像进行损害评估的更好方法。

我们研究了FEMA中的民间空中巡逻队,他们在技术上是美国军方和国土安全部的一部分。民间空中巡逻队在灾后立即飞越灾区拍照,然后FEMA使用这些照片进行损害评估以协助响应。

就在2012年这次演习的几个月后,我们使用这些新技术帮助应对飓风桑迪。毫无疑问,这完全是积极的。如果使用民间空中巡逻队和FEMA当时使用的现有方法,我们无法将响应规模扩大到那种灾难级别。


然而,美国军方也参与了2010年海地地震的响应。正如我在那次地震的事后报告中所述,存在一种不安的紧张关系,因为许多海地人将美国军方视为前占领者。

在其他情况下,比如我与联合国儿童基金会合作支持西非的孕产妇健康时,我们选择不与任何美国政府组织合作,因为在帮助其他国家时,这会被视为缺乏独立性。

因此,无论研究人员或响应者的雇主是谁,都需要逐案考虑政府参与的伦理问题,特别是当灾难和响应者来自多个不同国家时。


过去我曾多次看到,社交媒体分析被描绘成灾难中的积极干预,但这几乎总是错误的。

正如我所说,在灾难管理和响应工作中分析社交媒体的大部分工作,都是由怀有不可告人动机的压迫性政权进行的。

例如,在COVID-19大流行期间,许多项目使用自然语言处理技术来检查社交媒体帖子。不幸的是,资助这些项目的一些政府机构,其目的是追踪异见人士。

一些国家在COVID-19开始时通过了法律,规定在大流行期间传播虚假信息是非法的。虽然表面上听起来不错,但当你查看法律条文时,其中许多规定任何对政府的批评都算作虚假信息。

因此,这些国家建立了一种手段来逮捕,在某些情况下甚至杀害任何批评政府的人。随后,这些国家立即资助并启动了通过自然语言处理识别社交媒体中虚假信息的项目。


即使在英语这样广泛使用的语言中,社交媒体通常对灾难响应者也没有用处。英语国家往往已经拥有资金最充足的灾难响应组织,因此这是英语相关性被放大的一个领域。

除此之外,压迫性政权经常将知识分子视为政治对手。说英语通常标志着一个人受教育程度更高,并且是在向国际受众发言。

无力应对灾难会使政府显得软弱,这尤其会暴露那些通过展示力量来领导的威权领导人。

例如,2013年台风海燕袭击菲律宾时,在批评政府响应的人中,我们识别出一些说英语的人,由于他们在社交媒体上拥有大量国际受众,他们特别容易遭到政府的报复。因此,在这种情况下,我们认为将英语社交媒体数据作为灾难响应数据集的一部分发布是不道德的。


对于我们这些从事灾难响应工作的人来说,我们通常建议的最佳实践是,将社交媒体用作灾难响应组织向受危机影响人群传播信息的广播媒介。

但是,不应将开放的社交媒体用作受灾人群的直接沟通渠道。


最后,作为对灾难管理工作感兴趣的人,我希望你能为成功做好准备,而不是陷入我在这个领域工作中看到的常见陷阱。

因此,请和我一起观看下一个视频,了解一些关于如何最好地参与其中并在工作中不造成伤害的指导方针。


本节课中我们一起学习了:在AI for Good项目中,尤其是在灾难响应等敏感领域,必须将数据隐私保护作为默认实践。我们认识到,数据的敏感性会随语境变化,聚合数据和模型可能带来更大风险。通过具体案例,我们分析了数据再发布、政府参与、社交媒体分析等环节中潜在的伦理与政治风险,特别是威权政体下技术可能被滥用于侵犯人权。最终,我们明确了谨慎处理数据、逐案评估风险、优先考虑受影响人群安全的重要性。

092:参与而不造成伤害 🛡️

在本节课中,我们将学习在AI for Good项目中至关重要的“不伤害原则”。我们将探讨该原则的具体含义、如何在灾难管理的不同阶段应用它,以及如何以最有效且安全的方式参与到相关工作中。


不伤害原则的核心

前面讨论的所有案例和用例都有一个共同点,即强调无论你从事什么工作,在评估工作影响时,都应遵循“不伤害原则”来做出决策。

正如我在本专业系列课程中提到的,灾难管理中的“不伤害原则”与许多医疗专业人员遵循的原则相似。其核心是:任何人都不应因为你的干预而遭受比原本情况下更多的伤害或风险

在灾难管理中,“不伤害”不仅指避免身体伤害,还包括尊重受影响社区的尊严和社会规范,并以优先考虑他们的需求和观点的方式与他们互动。


原则的延伸含义

上一节我们介绍了原则的核心定义,本节中我们来看看它更广泛的含义。

这也意味着确保个人隐私的保护。如果项目涉及个人数据,你需要调查使用这些数据是否会对原本不会受到伤害的人造成伤害风险

请记住,作为AI for Good项目的工作者,你并非唯一有权判断如何“不伤害”的人。当地社区成员和组织是你项目设计、实施以及风险评估的主要利益相关者。

因此,仅论证你的工作有“净收益”是不够的。如果一个项目存在明确的负面用例,可能伤害到原本不会受伤害的人,那么这个项目就不应该进行

此外,认识到这一点很重要:在人道主义工作中,最重大的影响可能发生在恢复、缓解和准备阶段,而非响应阶段。


如何有效参与

了解了原则及其重要性后,你可能会问:我该如何开始参与?以下是参与灾难管理工作的建议路径。

人们常问我如何开始或参与灾难响应。事实证明,如果你想在“不伤害”的前提下产生持久的积极影响,那么从灾难管理的恢复阶段、或缓解/准备阶段开始工作,最有可能成功

这是因为在这些阶段,行动的时间敏感性较低,可获得更多信息,并且工作重点是评估和解决长期问题,经过深思熟虑的准备,因此与通常仓促的灾难响应工作相比,造成意外伤害的风险更小。

话虽如此,如前所述,响应阶段通常获得更多关注和资金,也往往是人们最受触动而想要采取行动的时候。

如果你想在正在发生的灾难中提供帮助,但缺乏经验,请记住:在灾难的即时响应期间,人们最没有时间培训你。所以,如果你最有价值的技能是一些非常基础的工作,如体力劳动或数据录入,请不要惊讶。

同理,如果你没有任何医疗培训却去医院急诊室帮忙,就不应抱怨他们只给你拖把和水桶。灾难响应也是如此。

因此,如果你想参与,灾难响应当然可以是你工作的领域,但若想产生持久影响并最小化伤害,从灾难管理的恢复、缓解和准备阶段开始你自己的工作是成功率最高的


给初学者的实践建议

如果你没有经验但想立即开始工作,可以考虑以下用例方向:

  • 支持低资源语言:开发相关工具。
  • 从半结构化文本中提取信息:例如处理电子表格和PDF文档。

这些用例也能帮助医疗保健和环境等其他影响领域,因此具有巨大的潜在影响力,同时无意中造成伤害的几率要小得多。

在构建AI系统时,通常需要人类参与数据整理和系统评估。在灾难管理场景中,参与构建任何解决方案的最重要的人类成员,就是受影响社区本身的成员。

无论你是为低资源语言使用者开发沟通工具,还是从非结构化文档中提取信息,都可能需要大量熟悉当地社区语言和文化背景的个人深度参与。


本周总结

本节课中,我们一起学习了“不伤害原则”在AI for Good项目中的应用。我们明确了该原则要求避免对任何人造成额外伤害,并延伸到尊重社区和隐私保护。我们了解到,在灾难管理的恢复、缓解和准备阶段开展工作,比在紧急响应阶段更能有效降低风险并产生持久影响。最后,我们为初学者指出了可以从支持低资源语言和信息提取等相对安全的领域入手,并强调了让受影响社区成员参与项目全过程的重要性。

093:虚假信息与仇恨言论检测 🛡️

在本节课中,我们将学习联合国开发计划署如何利用人工智能技术应对数字时代的挑战,特别是通过开源工具“I Verify”来检测和应对虚假信息与仇恨言论,以维护选举公正和社会稳定。


概述:数字时代的挑战与机遇 🌐

我是马克·贝林斯基,来自联合国开发计划署。作为联合国最大的机构,我们在超过170个国家开展工作,致力于消除贫困和减少不平等。

在日益数字化的世界中,我们面临着一个重大挑战:互联网在这项工作中的角色。互联网有启迪我们的力量,但也有误导的潜力。例如,全球选举中令人不安的虚假信息回响,或在公共平台上出现的、煽动不和与分裂的仇恨言论,而我们需要的是对话与理解。

一个具体的例子是,曾有关于COVID-19疫苗的虚假信息流传,谎称疫苗含有牛血,因此违背了印度教的传统。结果,这些社区的一些人因此对接种疫苗产生了犹豫。互联网可以是推动进步的强大工具,但我们也必须正视其潜在的破坏力。

在联合国开发计划署,我们致力于提供符合道德、以社区为中心的解决方案。具体来说,我所在的团队专注于包容性数字发展,目标是创造一个数字技术为人民和地球赋权的世界。


核心挑战:选举与信息完整性 🗳️

每年,全球有数亿甚至可能超过十亿人受到国家选举的影响。这是全球人口中相当大的一部分,他们受到所接收信息完整性的影响。

我们经常在那些寻求我们帮助以确保选举公正性的国家开展工作。为了应对这些挑战,并恪守我们对道德和社区中心解决方案的承诺,我们开发了“I Verify”——一个开源的虚假信息和仇恨言论检测工具。


解决方案:“I Verify”工具的三步工作流程 ⚙️

“I Verify”在三个协作阶段中工作:识别事实核查响应。这些步骤由人工智能驱动,但由人类的判断力主导。

以下是其工作流程的详细步骤:

1. 识别阶段:搜索潜在问题
通过与社交媒体公司的API集成,“I Verify”快速筛查在线内容,搜索潜在的虚假信息和仇恨言论。公民也可以通过热线提交问题,询问他们看到的信息是否准确。

2. 事实核查阶段:机器与人工协同验证
所有输入内容首先会由一个名为“Thetify”的机器学习工具扫描,以检测仇恨言论。我们使用一个评估标准来分析内容,包括:

  • 毒性
  • 淫秽内容
  • 威胁
  • 侮辱
  • 身份攻击
  • 色情内容

每个方面都会被打分,这提供了一个我们可以查看的总体分数,或者我们可以查看这些类别中的峰值。接下来,此步骤的输出结果会由我们专门的核查员团队进行验证,他们检查信息来源并为信息打上标签,使用的是另一个机器学习工具“Me Dan”。这个“人在回路”的机器学习步骤确保了由人类进行的严格而准确的评估,并利用人工智能确保相同信息无需被重复核查。机器学习工具与人工核查员的结合,实现了规模化的事实核查和内容标注。

3. 响应阶段:警报与沟通
最后,在响应阶段,我们的合作伙伴网络和公众会通过博客文章、社交媒体消息和广告,收到关于虚假信息和仇恨言论实例的警报。此外,我们还通过合作伙伴沟通和一个用于监测与评估的仪表板来跟进。


应用与影响:守护民主进程 🛡️

我们已在非洲和拉丁美洲的选举前部署了该工具,通常作为唯一的资源,帮助在虚假信息被武器化之前揭穿它,并在不确定时期增强民主进程的完整性。


未来展望:扩展覆盖与持续创新 🚀

展望未来,我认为“I Verify”将扩展其覆盖范围。我们仍需做更多工作来直接识别虚假信息,特别是在国际背景下。为了扩大覆盖范围,我们需要改进语言支持。虽然“I Verify”支持数十种语言,但我们关注的是数千种语言。此外,还有更多的媒介需要整合,从广播到新近发展的社交媒体平台。

随着更多的数字内容被审查和标记,我们可以赋能所有互联网用户辨别真伪。我们将“I Verify”开发为一个数字公共产品。对我们而言,这项工作以负责任、透明的方式进行,并拥有一个开源社区来帮助持续推动创新,这一点非常重要。


总结:构建可信的数字未来 🤝

作为一名开发者,我相信像“I Verify”这样的工具的潜力。凭借道德准则以及人工智能与人类努力的结合,我们的目标是帮助每个人更自信地驾驭数字世界。共同努力,我们可以将我们的数字环境转变为一个信息灵通的对话空间。


本节课中,我们一起学习了联合国开发计划署如何利用“I Verify”这一开源AI工具,通过识别、核查、响应三步流程,有效应对虚假信息和仇恨言论的挑战,以保护选举公正性和社会凝聚力,并展望了通过技术创新和社区合作构建更可信数字未来的愿景。

094:第1周总结 📚

在本节课中,我们将回顾第一周课程的核心内容,总结关于AI在灾难管理中应用的关键概念与指导原则。

你已经完成了本课程第一周的学习。在进入第一个案例研究——关于如何使用卫星图像进行飓风后的损害评估——之前,我将简要回顾本周的主要观点。

本周核心概念回顾 🔄

上一节我们介绍了课程的整体框架,本节中我们来具体看看第一周涵盖的核心内容。

我们本周首先讨论了灾难的确切构成要素,以及灾难对当地社区、基础设施和环境可能产生的影响。你学习了一个被许多灾难响应组织采纳的灾难管理框架。该框架被设置为一个包含四个阶段的循环:减灾、准备、响应和恢复。我们以2019年袭击莫桑比克的一对气旋所造成的灾难为例,探讨了这四个阶段如何展开,以及AI如何参与这些不同阶段。

在此之后,我们探讨了AI在其他灾难管理工作中的应用,并分享了一些指导原则,以确保在你自己的项目中,能够优化以产生积极影响并避免伤害。

关键指导原则 📋

以下是确保AI项目在灾难管理中产生积极影响、避免伤害的关键指导原则列表:

  • 聚焦通用技术:通过开发稳健的通用技术来最大化你的影响力,这些技术能帮助社区实现自助。
  • 支持低资源语言:利用翻译和搜索等技术更好地支持低资源语言的工作,将对灾难响应和恢复产生积极影响。
  • 默认保护隐私:在所有工作中默认采用隐私数据实践,并记住聚合数据和机器学习模型本身可能会放大隐私风险。
  • 规避风险项目:避免涉及分析社交媒体数据的项目,以及由压迫性政权资助的工作。
  • 与受影响社区互动:与受影响的社区互动,以确保你的项目有最高的成功机会,并将造成伤害的可能性降至最低。

如果你牢记这些指导原则,无论具体情境如何,你在帮助减少灾难影响方面的努力都将更有可能成功。

总结与预告 🎯

本节课中我们一起学习了灾难管理的基本框架、AI在其中的应用实例,以及开展相关项目时需遵循的重要伦理与实践原则。

在下一周的材料中,我们将深入探讨AI与灾难管理中一些更技术性的方面,并将进行一个案例研究,重点是将计算机视觉技术应用于飓风后的损害评估。期待在课程的下周与你相见。

095:基于卫星图像的灾后损害评估案例 🛰️

概述

在本节课中,我们将学习如何利用人工智能技术,特别是卫星图像分析,进行灾后损害评估。我们将通过一个具体案例——2017年美国飓风“哈维”——来探索这一过程。课程将涵盖从数据收集、模型构建到实际应用的全流程,并强调在灾难管理的不同阶段(特别是缓解和准备阶段)提前开展工作的重要性。


空中图像在灾难管理中的应用

上一节我们介绍了AI在灾难管理中的整体框架。本节中,我们来看看一种关键的数据来源:空中图像。

空中图像是多种应用中的重要工具,例如地图绘制、导航、天气预报。它也被用于追踪森林砍伐、冰川和海冰融化,或观察动物种群。

在灾难管理中,俯瞰图像可用于评估灾难对某个区域或社区的影响范围和程度。它能提供进入难以到达或危险区域的途径和视野,这些区域在地面可能难以接近。

以下是获取俯瞰图像的几种主要平台及其特点:

  • 卫星:覆盖范围广,但图像分辨率可能相对较低,且云层覆盖可能使卫星图像无法用于评估地面损害。
  • 飞机:有时能在云层下飞行,收集分辨率相对较高的图像,并能快速覆盖较大区域。
  • 无人机:小巧灵活,能更靠近地面飞行,但飞行距离有限。

案例研究:飓风“桑迪”的损害评估

现在,让我们通过一个实际案例来理解这个过程。我将分享我在飓风“桑迪”灾后评估工作中的经验。

2012年飓风“桑迪”袭击美国东部后,隶属于美国军方的民间空中巡逻队飞越受损区域,拍摄了超过35,000张图像。使用飞机的一个优势是,持相机的人员可以观察到受损更严重的区域,从而在数据收集环节重点关注这些区域。

然而,处理35,000张图像是一个巨大挑战。为此,美国政府机构首次与第三方合作,包括我当时所在的公司Idibon等,以支持信息处理流程。

我们建立了一个系统,让数千名非专业的公众志愿者通过在线众包系统评估图像中的损害程度。贡献者每次查看一张图像,并给出三档判断:无损害中度损害重度损害。为确保个体误差或偏见最小化,我们将同一张图像分发给多人进行评估。

# 伪代码示例:众包标签聚合逻辑
def aggregate_labels(image_id, all_responses):
    # all_responses: 针对同一image_id,所有志愿者提交的标签列表
    # 例如: ['轻度', '重度', '中度', '轻度']
    label_counts = count_occurrences(all_responses)
    # 采用多数投票等策略确定最终标签
    final_label = majority_vote(label_counts)
    return final_label

利用这些标注数据,我们得以研究如何部署一个分类器来自动进行初步损害评估。这里我想强调一个关键点:我们构建的系统之所以成功,是因为我们提前数月进行开发、测试,确保飓风来袭时它可以立即部署。

我们后来还邀请了专业损害评估员查看部分相同数据,以验证众包结果的准确性。我们发现,只要将同一任务分发给多人并汇总结果,非专家提供的损害评估可以与专家一样准确。这是一种通过集体智慧弥补个体误差的有效方式。


有效介入的重要性:经验与教训

上一节我们看到了一个成功的合作案例。本节中,我们来看看一个反面教训,以理解在灾难响应中建立长期关系的重要性。

我们的一位合作者,人道主义OpenStreetMap的凯特·查普曼,讲述了一个关于2015年尼泊尔地震后的故事。一些人在响应阶段才介入,之前未与当地社区建立联系,并试图在受损区域部署无人机。这引起了当地居民的困惑甚至恐惧,因为该地区历史上曾与尼泊尔中央政府关系紧张。最终,尽管投入了大量资源,这些人的努力未能对响应结果产生积极影响。

因此,即使意图良好,在灾难发生时才首次介入一个地区,是最不可能成功的,并且在许多情况下可能弊大于利。若想在灾难响应阶段有效发挥作用,最好在长期的恢复、缓解和准备阶段就开始你的工作。


本周实验:飓风“哈维”损害评估项目

基于以上背景,在本周的实验中,你将探索受飓风“哈维”影响区域的卫星图像,进行类似于我们在飓风“桑迪”后所做的损害评估。

你将构建一个模型,将每张图像分类为受损未受损,并将每张图像的位置标记在地图上,从而为灾难管理人员提供信息。

请为这个项目设想以下场景:你正在开发一个系统,旨在飓风后为损害评估提供自动化的图像分析。这是一个你将在缓解和准备阶段进行的项目。

以下是此类工具可能带来的帮助:

  • 帮助灾难响应者确定资源部署地点。
  • 估算区域损害成本。
  • 确定重建工作的优先顺序。


总结与下节预告

本节课中,我们一起学习了空中图像在灾难管理中的应用,分析了飓风“桑迪”损害评估的案例,理解了提前准备和社区参与的重要性,并介绍了本周即将动手实践的飓风“哈维”评估项目。

在下一个视频中,我们将快速回顾“AI for Good”框架。如果你刚学完前两门课程,对该框架的四个阶段记忆犹新,可以跳过下一个视频。在随后的视频中,我们将详细了解飓风“哈维”的具体情况以及风暴过后的即时状况。之后,我们将正式进入本项目的探索阶段。

096:人工智能为善框架 🧭

在本节课中,我们将学习“人工智能为善”项目框架,并通过“哈维飓风损害评估”项目来实践该框架。该框架包含四个阶段:探索、设计、实施与评估。我们将逐一解析每个阶段的核心任务与目标。


探索阶段 🔍

上一节我们介绍了课程的整体目标,本节中我们来看看框架的第一个阶段:探索。

在探索阶段,你需要与利益相关者建立联系,明确要解决的问题,评估项目的可行性,并确定人工智能是否能为解决方案带来价值。

以下是探索阶段的核心步骤:

  • 联系利益相关者:与项目相关的人员或组织进行沟通。
  • 定义问题:清晰界定你希望解决的具体问题。
  • 评估可行性:分析项目在技术、数据和资源方面的可行性。
  • 确定AI价值:判断人工智能技术是否能有效提升解决方案。

如果探索阶段的结果显示项目前景良好,便可以进入下一阶段。


设计阶段 ✏️

完成了问题的初步探索后,我们进入设计阶段。

在设计阶段,你需要构建解决方案的原型,制定模型策略,深入研究数据,并思考如何确保数据隐私以及用户将如何与你的系统交互。

设计阶段可能是一个迭代过程。有时,你可能会发现探索阶段的一些假设并不成立,这时需要返回探索阶段,与利益相关者进行更多讨论,或者重新修订问题陈述。这个过程可以用以下方式表示:

设计阶段 -> 返回 -> 探索阶段

一旦确定了最终的设计方案,就可以进入实施阶段。


实施阶段 ⚙️

设计蓝图完成后,接下来就是将想法变为现实,即实施阶段。

在实施阶段,你需要将设计环境中测试的模型“产品化”,这意味着为部署和与用户界面集成做好准备。同时,你还需要对系统的性能和可用性进行测试。

实施阶段同样可能存在迭代。在实施过程中,你可能会发现设计的某些方面无法奏效,这时需要返回设计阶段进行调整。这个过程可以表示为:

实施阶段 -> 返回 -> 设计阶段

当你对实施结果感到满意时,便为部署做好了准备。


部署与评估阶段 🚀

系统实施完成后,便是部署与评估阶段。

部署涉及大量技术细节,远不止“按下按钮,上线运行”那么简单。成功部署后,你需要评估项目的影响,沟通你的发现,并决定下一步行动。

评估后,通常会有几种常见的后续路径:

  • 返回实施阶段:你可能希望微调系统的某些实现,然后重新发布更新版本。
  • 返回设计阶段:你可能发现设计的某些部分未达预期,需要重新思考系统组件。
  • 返回探索阶段:你可能决定探索初始问题的新方向,或开始研究一个全新的问题。

实际项目的过程往往比这个简化的框架图更为复杂。但牢记这个框架,能帮助你在每个阶段保持方向,更有可能获得成功,或至少能在偏离轨道时及时发现并有效回归。


总结 📝

本节课中,我们一起学习了“人工智能为善”项目框架的四个阶段:探索、设计、实施与评估。这是一个非线性的迭代过程,各阶段之间可能需要根据实际情况灵活回溯。接下来,我们将以“哈维飓风损害评估”项目为例,开始本项目的探索阶段。

097:损害评估探索阶段 🧭

在本节课中,我们将学习如何为一个灾害响应项目进行探索阶段的工作。我们将以2017年飓风“哈维”后的损害评估为例,了解如何识别关键利益相关者、定义问题陈述,并初步判断人工智能是否能为此类项目带来价值。


飓风“哈维”的灾害背景

飓风“哈维”是一场强大的风暴,于2017年8月25日袭击了美国墨西哥湾沿岸各州。

风暴为该地区带来了破纪录的降雨,许多地区在四天内降雨量超过一米。

其结果是灾难性的洪水,造成超过100人丧生和1250亿美元的经济损失。

飓风“哈维”过后,政府响应机构立即行动。

这些机构包括联邦紧急事务管理局(FEMA)、国民警卫队和美国海岸警卫队,他们被部署去援助因洪水上涨而受困的人们。

美国红十字会和地方食品银行在建立临时避难所、为受风暴影响的人们提供食物、水和其他物资方面发挥了关键作用。除了强降雨,风暴还带来了高达每小时250公里的强风。

强风刮倒了树木,损坏了电线,并对建筑物、房屋和其他基础设施造成了结构性破坏。


灾后通信与响应挑战

随着停电、电话线中断和手机信号塔受损,许多人失去了电话或互联网服务,这使通信和获取关键信息变得复杂。

联邦通信委员会与公司合作建立了临时通信网络,包括卫星电话和便携式手机信号塔。此外,社交媒体和其他在线平台使人们能够分享信息、请求援助,并提供他们所在社区的情况更新。

到了九月中旬,即风暴过去几周后,响应工作开始稳定,许多临时避难所因需要紧急援助的人数减少而开始关闭。


从应急响应转向重建

随后,FEMA开始协调修复和重建受损基础设施的工作。

虽然强风造成了重大破坏,但风暴最大的影响是大范围的洪水。你将在探索数据时看到更多细节。

一场重大灾害发生后,卫星图像可以成为获取地面状况信息的一种方式。对于这个项目,请设想一个场景:你作为一个团队的一员,正在为未来的灾害响应人员构建一个损害评估工具。


项目目标:构建损害评估工具

你计划构建的工具将以卫星图像作为输入,并生成一张标有受损和未受损位置的地图。

这张地图随后将被灾害管理人员用来为他们的决策提供信息,以分配援助和确定重建工作的优先级。需要指出的是,此类项目的结果不应是识别受损位置的唯一真相来源,而是应与其他信息来源结合,为地面救援和资源分配团队提供信息并指导部署。

由于这个工具是为人类决策者提供信息,这也会影响你评估工具准确性的方式。例如,你可能希望强调工具不能遗漏任何潜在的受损区域,因此其准确性将由召回率决定,而不是图像中识别受损与非受损区域的整体准确率。我们将在后续的实验中,从精确率召回率两方面来评估这个项目。


探索阶段的关键步骤

此时,你正处于项目的探索阶段。你需要采取的关键步骤是:与利益相关者沟通、定义你的问题陈述,并确定人工智能是否能增加价值。

以下是探索阶段需要完成的主要任务列表:

首先,也是最重要的利益相关者是受灾社区的成员。你提供的损害评估不仅有助于向这些社区分配资源,还可能影响他们在长期恢复阶段如何获得政府救济资金或保险索赔。当地社区成员还拥有关于该地区基础设施的宝贵知识,这些知识有助于为损害评估过程提供信息。

关键利益相关者还可能包括像FEMA这样的政府机构、州和地方政府,以及参与响应的任何军事组织。其他利益相关者可能是非政府组织,例如美国红十字会和其他有处理灾害善后经验的组织。


定义问题陈述

确定了关键利益相关者后,是时候撰写你的问题陈述了。

请记住,一个好的问题陈述应清晰、简洁、具体,能识别关键利益相关者,并且不需要提及你计划部署的具体技术。

在这种情况下,你为这个项目撰写的问题陈述可能是:
“灾害管理人员需要利用大量高空图像来识别和评估受损区域,以确定响应工作的优先级、分配资源并规划和开展恢复与重建活动。”

如果你学习过之前的课程,你会知道我要在这里提醒你,一个好的问题陈述通常需要与利益相关者进行数周或数月的反复迭代,才能最终确定你试图实现的目标。


判断AI是否能增加价值

探索阶段的下一步是确定人工智能是否能为你项目增加价值。

要回答这个问题,请与我一起进入下一个视频。你将探索用于飓风“哈维”后损害评估的数据集。


总结

本节课中,我们一起学习了灾害响应项目探索阶段的核心工作。我们以飓风“哈维”为例,了解了灾害背景、通信挑战以及从应急到重建的过渡。我们明确了构建一个基于卫星图像的损害评估工具的目标,并学习了探索阶段的关键步骤:识别利益相关者、撰写清晰的问题陈述,以及初步评估人工智能的应用价值。下一节,我们将开始探索具体的数据集。

098:损害评估项目 - 数据探索阶段 🛰️

在本节课中,我们将学习如何为卫星图像损害评估项目进行数据探索。在明确了关键利益相关者并定义了问题陈述之后,下一步就是探索数据,以确定人工智能是否能为解决方案带来价值。

数据来源与背景

上一节我们介绍了项目背景,本节中我们来看看具体的数据集。本实验探索的数据集来自2017年飓风“哈维”案例研究,由IE Dataport平台托管。该平台托管了用于推进研究的各种数据集。

以下是关于数据集的详细信息:

  • 数据来源:原始数据来自一颗名为GOI1的商业遥感卫星。
  • 数据标注:数据通过Tomnod平台(现更名为Maxar Geohive)上的众包方式进行标注。

实验环境与数据概览

在深入实验之前,需要先熟悉Jupyter环境中的数据组织方式。

首先,在窗口左上角点击Jupyter图标。在此视图中,可以查看文件夹内容。打开data文件夹,会看到一个数据表,它描述了数据集的来源以及任何潜在的注意事项。

数据文件夹下包含三个子文件夹:testtrainvalidation。每个文件夹内又包含damageno_damage两个子文件夹,里面存放着相应的图像文件。

图像文件相对较小,有时甚至难以辨认内容,特别是显示损坏的图像。总体而言,这些是建筑物和财产的图像,由人类志愿者标注为显示损坏证据或未显示损坏证据。

此外,还有一个utils.py文件,其中存储了实验中将运行的部分代码。熟悉Python的用户可以查看此文件以了解部分函数背后的逻辑。

数据加载与初步分析

回到主笔记本,第一步是导入本实验所需的Python包。

# 导入必要的Python包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# ... 其他导入语句

当看到包成功导入的消息后,就可以继续下一步。

接下来,运行一个单元格,会出现一个选择按钮,允许你浏览之前查看的文件夹中的图像数据。你可以在test文件夹中,也可以导航到trainvalidation文件夹。

图像文件名中包含的数字是图像在地面上的经纬度坐标。通过此工具,可以查看每张图像及其在地图上的位置。

所有图像都位于data文件夹下,其结构可以总结如下:

data/
├── train/
│   ├── damage/
│   └── no_damage/
├── validation/
│   ├── damage/
│   └── no_damage/
└── test/
    ├── damage/
    └── no_damage/

运行下一个单元格,会将所有文件名解析到一个表格数据框中。数据框包含以下列:

  • subset:图像来源(训练、验证或测试)。
  • label:被识别为damageno_damage
  • latlon:纬度和经度。
  • path:图像的完整路径。

这个数据框将用于处理图像,并为不同步骤选择所需的数据。

数据统计与观察

接下来,可以创建一个数据透视表,查看每个子集中damageno_damage图像的数量。

从统计结果可以看到,总共有14,000张图像,其中10,000张用于训练,2,000张用于验证,2,000张用于测试。每个子集中,damageno_damage的图像数量相等。

这提示我们,这是一个经过高度整理的数据集。在现实中,灾后航拍图像中未损坏的图像数量很可能远多于可见损坏的图像。因此,在评估所构建模型的质量时,需要理解这一数据偏差。

图像对比分析

现在,我们可以对比查看飓风前后同一地点的图像。可以使用滑块滚动浏览不同的图像,或使用键盘上的方向键逐一查看。

需要注意的是,前后图像并不总是完全对准同一位置的中心。因此,有时可能需要一点时间来识别共同的特征。

例如,在查看图像时,可能会发现飓风前完好的游泳池和池边小屋,在飓风后的图像中,游泳池不再可见,而那个结构可能也完全消失了。这很可能是人类标注者判定该特定图片存在可见损坏的原因。

在许多图像中,建筑物看起来完好无损,但出现平坦的棕褐色区域,那就是洪水。洪水通常是损坏图像中最一致、最可识别的特征。

我们的目标是区分显示损坏和未损坏的照片。通过查看不同的图像,你可以感受这项任务的难易程度,从而对算法完成相同任务的成功率有一个初步判断。

数据地理分布可视化

最后,运行最后一个单元格,将在地图上显示所有图像的位置。

从地图上可以看到,数据集中在德克萨斯州的休斯顿地区。飓风从东南方向袭来,在德克萨斯州海岸登陆。

放大地图时,数据分布会以更精细的方式显示,展示不同区域的记录数量,最终显示为单个图钉。

单个图钉显示了图像的拍摄地点。点击图钉,可以看到分类(红色图钉表示damage,绿色图钉表示no_damage)以及该位置的图像。通过浏览地图,可以了解数据的地理分布以及损坏在该区域的分布情况。

总结

本节课中,我们一起学习了损害评估项目的数据探索阶段。我们探索了一个包含数千个已标注的损坏和未损坏财产示例的数据集。通过对比查看特定地点的前后图像,了解了损坏的表现形式。我们还学习了如何将数据显示在地图上,以理解其地理分布。

接下来,我们将着手训练一个模型来自动识别损坏。但在开始建模之前,请继续观看下一个视频,我们将总结探索阶段的工作。

099:损害评估探索阶段检查点 📋

在本节课中,我们将回顾并检查在“利用卫星图像进行飓风哈维灾后损害评估”项目探索阶段所完成的工作。我们将确认是否已具备进入下一设计阶段的所有必要条件。

上一节我们介绍了如何利用卫星图像进行灾后损害评估的初步探索。本节中,我们来看看在进入设计阶段前,需要完成哪些关键检查点。

根据我们一直遵循的“AI for Good”项目框架,此时你和你的团队需要考虑以下几个核心问题。

以下是需要回答的关键问题列表:

  • 需要解决的具体问题是什么?
  • 利益相关者是谁?
  • 是否能够获取或获得必要的数据?
  • 人工智能能否增加价值?具体在何处以及如何实现?
  • “不伤害”原则在此如何应用?

问题陈述回顾

在本案例研究中,你写下的问题陈述是:灾难管理者需要利用大量高空图像来识别和评估受损区域,以优先安排响应工作、分配资源,并规划恢复和重建活动。

在这个问题陈述中,关键的利益相关者、希望构建的解决方案以及项目成功的愿景都已清晰界定。

利益相关者确认

你识别出的利益相关者包括:

  • 受灾社区。
  • 政府机构,例如联邦紧急事务管理局、州和地方政府,以及军事灾难响应组织。
  • 非政府组织,例如红十字会等。

数据与AI价值评估

你拥有大量包含标签的卫星数据,这些标签标明了图像是否包含可见损害。

鉴于拥有这个带标签的数据集,可以合理假设,如果你能利用这些数据训练一个自动图像分类系统,人工智能就可能增加价值

“不伤害”原则考量

关于“不伤害”原则,与任何对公共或私人场所的成像一样,数据可能包含人员或财产的图像,其中隐私和安全将成为关注点。

特别是在灾难进行期间部署此类项目时,确保数据的安全存储,并且不发布任何可能泄露风险社区或受损财产细节的信息至关重要。

在我参与飓风桑迪的响应工作中,我们处理的图像分辨率非常高,包含了可辨识的个人和受损财产图像。在那次响应结束后,我们让另一家组织私下审查了我们收集和标记的数据以验证结果,然后我们所有人都删除了数据。

尽管这些数据可能为其他希望提供类似本课程工具的组织带来价值,但在飓风桑迪的案例中,我们无法保证发布数据不会造成伤害,因为某些区域需要数月或数年才能完全恢复。

在你当前的项目中,事件本身发生在五年多以前,因此图像中显示的区域大部分已从灾难中恢复。此外,图像分辨率相当低,无法识别任何个人。可以合理地假设,这个特定项目不存在重大的伤害风险。

然而,你可以设想,如果你对这些数据不那么确定(特别是如果这些数据不是为本课程提供的),那么你可能还需要考虑一个额外的标记任务:除了损害评估,人员还可以评估特定图像是否敏感,并立即将其从数据集中移除。


本节课中我们一起学习了如何对AI项目的探索阶段进行系统性检查。我们回顾了问题陈述、利益相关者、数据与AI潜力,并重点讨论了至关重要的“不伤害”原则及其在实际项目中的应用考量。

至此,你已完成飓风哈维项目的探索阶段。在下一课中,我们将共同进入项目的设计阶段。

100:损害评估设计阶段 🏗️

在本节课中,我们将学习如何为损害评估项目设计数据与建模策略。我们将探索如何使用神经网络进行图像分类,以区分显示“受损”与“未受损”的卫星图像,并评估模型的性能。

概述

上一节我们介绍了哈维飓风损害图像数据集,并探索了受损与未受损图像的外观及其地理位置。

设计阶段的目标是:在考虑数据隐私和安全问题的前提下,对数据和建模策略进行原型设计,并为解决方案构建用户界面。

设计策略

在之前课程的案例研究中,我们通常从开发一个基线模型开始,以了解在不实施更复杂AI解决方案的情况下能做到多好。对于像这里的图像分类任务(区分受损与否),可能存在一些传统的图像处理技术可以作为基线。

例如,在显示受损的图像中,最显著的特征通常是建筑物周围棕色的洪水。因此,可以构建一个简单的图像处理流程,通过颜色阈值来识别棕色洪水,作为潜在损害的简单指标。编写大约50行代码来构建这个基线,并对比机器学习模型的性能提升,会是一个有趣的尝试。

然而,这里我们将跳过这个基线建模步骤,直接使用神经网络进行分类。神经网络入门相对容易,虽然它们不是解决此类问题的唯一选择,但在拥有足够标注数据的情况下,它们在图像分类任务中已被证明表现尤为出色。

在本专业的先前课程中,我们已将神经网络用于各种任务,包括空气污染估计、风电预测和动物识别。本项目将与生物多样性监测项目最为相似,在那个项目中我们识别动物。不同之处在于,本项目将训练模型仅区分显示受损与未受损的图像。

实验步骤

以下是本实验中将完成的步骤列表。

首先需要说明,由于实验环境计算能力有限,我们不会在此进行实际的模型训练,而是加载一个预训练模型。但我们会在下方提供一个链接,供您访问训练笔记本自行尝试。

运行第一个单元格以导入所需的Python包。

接下来,使用一种称为“生成器”的方法加载训练数据,为模型训练做准备。

下一个单元格用于为图像分配标签:将可见受损的图像标记为1,未受损的图像标记为0。

数据增强

接下来,我们将探讨如何通过数据增强使训练更加稳健。

在本专业的第二门课程中,我们通过对动物图像进行翻转、旋转、缩放和调整对比度来执行数据增强。现在,我们将对卫星图像进行同样的操作。

运行下一个单元格,将选取一张图像来探索增强效果。如果将索引值更改为0到127之间的另一个数字,可以查看其他图像的相同增强步骤。

首先,可以水平或垂直翻转图像,并通过选择不同的按钮查看效果。

在第二门课程中翻转和旋转动物图像时,可能会觉得数据中出现倒置的动物很奇怪。但对于卫星数据,翻转后的图像是完全正常的示例,它们只是从不同角度拍摄的相似或不同图像,因此应有助于模型泛化到更广泛的示例集。

让我们看看其他增强方式。

这里,可以通过调整缩放级别来可视化不同的示例。

这里可以查看图像旋转的示例。

最后,可以改变图像的亮度,查看作为增强示例的效果。

就像处理动物图像时一样,可以应用这些增强的不同组合,查看它们的效果。

执行这些增强的目的,当然是为模型提供更多训练示例。通过这些增强后的示例,模型可以学习显示受损或未受损图像可能呈现的不同变化。

要为增强训练做准备,需要运行此单元格,以创建一个内置了上述每个增强步骤的数据生成器。

但如前所述,我们不会在此进行训练。相反,我们已经使用训练和验证数据为您训练好了模型。运行此单元格,将加载该预训练模型。

模型架构

这是一个卷积神经网络,类似于第二门课程中用于动物分类的模型,但更简单。

网络的输入同样是图像,输出则是对“受损”或“未受损”的分类。

可以运行下一个单元格来打印模型架构的技术摘要。无需担心细节,只需知道这是一个相对简单的神经网络,只有大约十几层。该网络是在训练和验证文件夹中的数据上从头开始训练的。

为了了解训练过程,可以运行下一个单元格查看一些训练指标。

左侧是准确率,右侧是损失,两者都作为水平轴上训练周期数的函数绘制。

可以看到,随着训练周期增加,准确率上升,损失下降。这正是我们所期望的。准确率是模型做出正确预测的次数除以预测总数。可以看到,在大约20个周期后,模型准确率已超过90%,整个训练共进行了100个周期。请记住,我们的训练和验证数据中受损和未受损项目的数量是相等的,因此这90%的准确率是相对于50%的基线而言的。

损失只是一个量化模型表现的数字,无需过多担心其单位,只需知道损失越低意味着性能越好。如果您熟悉机器学习,会欣慰地发现这里的训练损失和验证损失大致相同。这表明我们没有对特定的训练数据过度拟合。图例中的“训练”和“验证”分别表示模型在训练数据上的性能,以及在每个周期未用于训练的验证数据上的性能。

在神经网络模型中,当训练和验证的准确率或损失大致相同时,通常表明训练效果良好,这里似乎就是这种情况。

可以运行下一个单元格,在一个较小的数据集上进行仅3个周期的迷你训练。这只是为了向您展示,如果您在能够处理完整训练集的环境中自己运行训练过程,它会是什么样子。

可以看到,在运行每个迷你训练周期时,会打印出新的损失和准确率值。

请注意,为了视频演示,我们加快了速度。如果查看每个周期实际花费的时间,每次大约不到一分钟。希望这也能帮助您理解为什么我们没有让您从头开始训练整个模型。

模型测试与评估

最后,在测试数据上测试模型性能,这些数据在训练或验证中从未被模型见过。为此,运行此单元格首先加载测试数据,然后运行下一个单元格,使用训练好的模型在测试集上进行预测。

预测步骤运行完毕后,可以运行下一个单元格为测试预测生成混淆矩阵。这与上一门课程中动物分类实验所做的类似,但这里只有两个类别:受损或未受损。

在此混淆矩阵中,可以看到测试预测中正确分类的实例数量,它们位于左上到右下的对角线上。

左上角是未受损图像被正确分类为未受损的实例。右下角是标签为可见受损且模型预测为可见受损的实例。在其他单元格中,可以看到模型出错的实例数量,即模型预测为受损但标签是未受损的情况,反之亦然。

请注意,图像并非简单地标记为“受损”,而是“可见受损”。我认为这是一种有趣且诚实的评估,因为我们无法确定地面是否实际受损,因此只是表明从航空影像中可见的损害。这实际上就是机器学习中“地面实况数据”一词的由来,它源自遥感领域,其中“测量真值”可能是遥远的信号(通常是航空影像或其他类型的航空传感器),而“地面实况”则是来自地面本身的最佳可能测量。因此,您会经常听到人们在机器学习中提及地面实况数据,有时我也用它来泛指任何类型的数据。我认为始终要记住,即使是地面实况数据,也仍然只是您的最佳可能测量,并不总是绝对的或客观的真理。

根据这样的混淆矩阵来解读模型性能的方法是查看不同的指标。首先,在这种情况下,真正例可以是任何一种情况,但我认为将真正例理解为存在损害且模型识别出损害的情况最为合理。

因此,这里我们将右下角的实例称为真正例。

真负例则是没有损害且模型预测为无损害的情况,即左上角的实例。

假正例是模型预测为损害,但真实标签是无损害的情况,即右上角的实例。

假负例是模型预测为无损害,但标签是可见损害的情况,即左下角的实例。

在机器学习中,这种分类常用于预测疾病存在等模型。然后,根据您想要优化的目标,可以查看不同的指标。

总体准确率是正确预测的总数除以预测总数。但根据使用场景,您可能对精确率或召回率等其他指标更感兴趣。

精确率衡量的是真正例占所有阳性预测的比例。在本例中,精确率等同于:在模型预测为损害的所有情况中,实际存在损害的百分比是多少?

召回率是真正例数除以实际阳性数。在本例中,召回率询问的是:在测试集中所有实际存在损害的示例中,模型正确识别出了多少?

根据使用场景,其中一个或多个指标,甚至其他一些指标,可能是评估工作准确性的相关标准。例如,如果您有许多图像,但显示损害的实例相对较少(即数据集不平衡),那么如果总是预测为无损害,准确率也会很高,但召回率将为零,表明您的模型作为损害检测器完全无用。

运行下一个单元格,打印出模型的实际准确率、精确率和召回率。

可视化模型输出

可以运行下一个单元格来可视化模型的输出。左侧是模型预测,它实际上是一个从0到1的连续尺度,其中0表示无损害,1表示损害。

请注意,这并非旨在衡量损害程度,而是对图像中存在损害的置信度的近似值。

这里有一个无损害且模型做出正确预测的示例。可以使用滑块或键盘上的箭头查看更多示例。如您所见,这些大多是正确预测的示例。

但专门查看错误预测也很有启发性。

我们将“显示错误”设置为“是”,以查看一些错误预测的示例。在第一个图像(image0)中,可以看到模型预测值几乎在0.5,这可以解释为模型表示它不确定,而不是做出硬性预测。

然而,转到image1时,我们可以看到模型非常确信存在损害,而事实上这里的标签是无损害。很难说这是为什么,也许是道路或某些区域的棕色或草地被误认为是洪水。

同样,在image2中,我们有一个正好在决策边界0.5的预测。因此,可以想象这样一种场景:鉴于预测如此接近决定一方或另一方,您可能会在更大的产品中排除此类预测,或确保人工审核。

可以看到,在许多情况下,模型的预测实际上处于尺度的中间位置,并非 confidently 指向损害或无损害。这本身可能就是有用的信息。在类似系统的实际实施中,常见的做法是获取这些置信度较低的预测,并标记它们以供人工手动审核,这将是下一个实验中本项目实施阶段要做的内容。

因此,请查看模型正确和错误预测的更多示例,以了解模型在何时表现良好,何时表现不佳。

总结

以上就是设计阶段的内容。当然,如果您是为现实世界部署构建此系统,您将在设计阶段花费更长时间,探索模型性能,并可能尝试不同的配置和数据集。

对于本项目,您已采用了通过增强数据从头训练神经网络的策略。您测试了模型,发现其表现相对良好,甚至还原型设计了一个简单的用户界面,人们可以在一个从无损害到损害的连续尺度上查看模型预测,以及正在考虑的图像。

在下一个视频中,我们将在进入实施阶段之前,一起完成设计阶段的检查点。

101:损害评估项目设计阶段检查点 🧐

在本节课中,我们将回顾并总结损害评估图像分类项目的设计阶段。我们将检查在数据、模型、问题解决和用户体验方面的关键考量,以确保项目具备进入实施阶段的条件。


数据考量与处理

上一节我们介绍了用于飓风后损害图像分类的神经网络模型。本节中,我们来看看如何处理数据相关的核心问题。

对于这个损害分类项目,我们认识到在许多情况下,即使是人类也很难正确识别图像中的损害。这至少部分是由于洪水是主要的损害原因,而建筑物本身常常保持完好。

以下是针对数据问题的处理方案:

  • 数据不平衡与模型鲁棒性:在设计阶段,我们实施了数据增强技术,以使模型更加鲁棒。虽然从其他灾害中收集更多带标签的数据有助于模型更好地泛化到其他场景。
  • 隐私问题:我们意识到,对于一个真实世界的灾害响应项目,可能会处理包含人员和财产的照片。在我们的数据处理流程中,这些需要被视为机密个人信息,并在项目完成后尽快删除,而不是存储或公开发布。
  • 偏见与社区关切:除此之外,关于偏见或隐私问题,我们应持续关注任何受影响社区中可能出现的其他关切。

模型选择与性能评估

在明确了数据基础后,我们来看看为实现分类目标所选择的模型及其评估方式。

我们训练了一个基础的卷积神经网络模型,用于将图像分类为“显示损害”或“无损害”。我们的模型在测试数据集上表现出相对较高的准确率,并且我们通过混淆矩阵以及单个图像的检查,来了解模型的工作情况及其不足之处。

为了提升模型性能,可以考虑从其他灾害响应场景中收集训练数据,以帮助模型泛化到不同的条件和环境。

模型性能的核心评估指标可以总结为以下公式:
性能 = f(准确率, 精确率, 召回率)
我们需要根据项目目标(如最小化漏报)来选择最合适的评估指标。


解决方案与问题匹配

接下来,我们需要确认我们的设计方案是否真正解决了最初设定的问题。

我们着手解决的问题是:灾害管理人员需要使用大量航空影像来识别和评估受损区域,以便优先安排响应工作、分配资源以及规划恢复和重建活动。

考虑到目前我们的模型可能无法很好地泛化到其他灾害场景,但我们的设计能够通过快速自动分类数千张图像,并在某种用户界面中提供结果,来应对这个问题。


最终用户与交互设计

最后,我们聚焦于系统的使用者,思考他们将如何与我们的系统互动。

在本案例中,最终用户很可能是一位灾害响应人员,他需要考虑资源分配、特定区域的准入许可以及长期恢复计划等问题。

在我们目前的设计中,我们已经探讨了针对特定图像显示模型结果的一种方式,即同时展示模型预测结果和置信度,使其易于可视化。

这可以成为可视化工具的一部分,帮助响应人员理解损害的状况以及模型的工作情况。


总结与下一阶段展望

本节课中,我们一起学习了损害评估项目设计阶段的检查要点。我们回顾了如何处理数据不平衡、隐私和偏见问题;选择了卷积神经网络模型并讨论了其性能评估与改进方向;确保了设计方案能有效解决灾害管理中的核心问题;并初步规划了面向灾害响应人员的用户交互界面。

至此,本项目的设计阶段就结束了。在接下来的实施阶段,你将整合图像处理流程,以便能够从一批图像开始,快速显示分类结果并将其位置标注在地图上。

102:损害评估实施阶段 🚀

在本节课中,我们将学习如何将设计阶段训练好的模型,推进到实施阶段。我们将重点构建用户界面,以可视化模型预测的依据,并将所有预测结果在地图上展示出来。


导入必要的Python包

首先,我们需要导入本实验所需的Python包。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# ... 其他必要的库


加载数据与模型

上一节我们介绍了实施阶段的目标,本节中我们来看看具体的操作步骤。首先,我们需要加载测试数据集。

test_data = load_dataset('test_set_path')

接下来,为“可见损害”和“无损害”这两个类别分配标签。

labels = {0: '无损害', 1: '可见损害'}

然后,加载在设计阶段训练好的模型,并在测试数据集上评估其性能,同时绘制混淆矩阵以回顾模型表现。

model = load_model('trained_model.h5')
evaluation_results = model.evaluate(test_data)
plot_confusion_matrix(true_labels, predictions)

可视化模型关注点:Grad-CAM方法

评估完模型后,我们将开始探索如何可视化模型在做出每个预测时所关注的图像区域。

这里使用一种名为 Grad-CAM 的方法。你无需担心其具体实现细节,只需知道Grad-CAM可以展示图像中哪些像素对模型的预测最为重要。

以下是两个示例,一个显示“无损害”,另一个显示“损害”。在每个图像的右侧,有一个类似热图的覆盖层和一个颜色条,颜色从浅蓝(低重要性)过渡到粉色(高重要性)。

  • 在这些热图中显示为蓝色的像素,表示它们对模型预测的相对重要性较低。
  • 显示为粉色的像素,则表示它们具有高重要性。

在上方的图像中,模型似乎捕捉到了一些尖锐的线条和阴影。
在下方的图像中,模型看起来更多地关注了洪水和树木区域。

值得注意的是,对于人眼而言,有时并不总是能立刻理解图像中的某些特征为何对分类重要。但Grad-CAM提供了一种相对用户友好的方式,让我们能一窥神经网络内部的运作。因为神经网络有时就像一个黑箱,输入数据,输出结果,但得出特定结论或预测的过程可能并不直观。本质上,你可以将Grad-CAM视为一种让神经网络预测变得更可解释的方法,这对许多应用至关重要。


交互式查看预测结果

运行下面的代码单元格,你将看到飓风前后的图像对、模型输出的置信度指示器,以及叠加了Grad-CAM热图的图像。

display_interactive_comparison(test_data, model)

你可以使用滑块或键盘方向键来检查不同的图像对,从而了解模型的结果以及网络在预测时的关注点。

需要澄清一点,在这些比较中,Grad-CAM覆盖层中显示的粉色像素,仅仅指示了哪些像素在模型预测中很重要。它们并非在预测损害最严重的位置,而是告诉你图像的哪些部分对预测“损害”或“无损害”最具指示性。


在地图上展示预测结果

最后,运行最后一个单元格,将所有预测结果展示在地图上。就像在探索阶段所做的一样,地图上将显示数据集中每张图像位置的图钉。

然而,此时展示的是测试数据集。图钉根据模型预测被分为三类:

  • 红色图钉代表“损害”,由模型预测值大于 0.6 表示。
  • 绿色图钉代表“无损害”,由模型预测值小于 0.4 表示。
  • 橙色图钉代表建议人工复核的情况,因为模型预测值在 0.4 到 0.6 之间,这本质上表明模型对此预测的信心较低。

你可以根据需要调整这些阈值,以设置更宽的人工复核范围或其他标志。可以想象,预测模型置信度并调整该置信度本身就是一个广阔的研究领域。

点击任意图钉,你可以看到模型的预测结果以及对应的图像。请花些时间查看地图上的结果,看看你能发现什么。


总结

本节课中,我们一起完成了损害评估项目的实施阶段。当然,你的实施和用户界面仍然是一个原型。但我希望你能看到,通过几个简短的Notebook,你已成功从探索阶段的初始数据分析,推进到了一个有趣的原型,它至少展示了最终用户体验的某一部分可能是什么样子。

在下一个视频中,我们将完成实施阶段的检查点并总结整个项目。

103:损害评估项目总结 🏁

在本节课中,我们将回顾并总结之前课程中构建的自动损害评估工具项目。我们将梳理整个项目流程的关键组成部分,讨论模型评估与部署的考量,并思考如何将此类项目应用于现实世界。


在之前的几个课程实验中,你已经构建了一个图像处理流程,它可以作为一个自动损害评估工具,用于灾难响应和恢复工作。

当然,要在现实世界中实施这样一个项目,还需要处理更多细节,项目的每个阶段也会更长、更复杂。

但你现在已经掌握了所有关键组件,包括已实现的神经网络模型。因此,原则上你可以进一步开发它,将其应用于任何涉及航拍图像的救灾项目中。

在本视频中,我将回顾你实现中的这些关键组件,并简要讨论如何改进你的实现以及评估结果。

要完成实施阶段,你需要能肯定地回答两个问题:你的模型性能是否可接受?最终用户能否成功与你的系统交互?

在这个案例中,你的模型性能相当不错。但你需要意识到,你训练的图像来自一个特定场景,你的分类器在灾后环境和条件完全不同的地区可能效果不佳。

你构建的原型用户界面允许用户通过地图应用程序探索已分类的图像,他们可以看到单个图像的位置和模型结果。如果你具备软件工程经验或与相关团队合作,你就可以着手部署你的系统。

与这些课程中的其他项目类似,部署步骤会包含许多我们在此不涉及的技术挑战。但原则上,你可以部署一个类似的应用,以接收来自新图像采集活动的自动上传图像,处理这些图像,并将损害评估结果与交互式地图一同展示。

对于此类项目的评估阶段,你可以通过为现场响应人员或其他参与灾后响应和恢复工作的利益相关者提供的价值来衡量项目的影响。

从长远来看,你可以通过项目在多大程度上帮助将所需资源导向受灾社区,以及在没有此类工具的情况下可能更困难的恢复工作中所提供的帮助来衡量成功。

在我们结束之前,我想快速回顾一下你在这个项目中从开始到结束的历程。

在探索阶段,除了与利益相关者接触并定义你想要解决的问题,你还需要一个带标签的图像数据集才能开始这个项目。

你在本项目中使用的带标签数据集最初由一家私人卫星成像公司提供,并由Tomnod平台上的志愿者进行标注。虽然从他人已标注的数据开始很不错,但你看到,你能够从一个相对较小的带标签图像集合开始,构建出一个可用的损害评估模型。

原则上,如果你需要为新的灾难响应场景快速重新训练这样一个系统,你可以获取一批新场景下的图像样本,并让人工对其进行标注,就像本案例和我之前在飓风桑迪中的工作一样。这可以是志愿者,但在当今实际的灾难响应场景中,我们倾向于更多地依赖专业的众包工作者或标注员,因为我们更了解他们的经验,并且与向互联网上的业余工作者开放任务相比,与专业标注公司合作时,我们更容易解决安全和隐私问题。

来自飓风哈维的这些数据带来了一些有趣的挑战,因为标签图像中的损害在现实世界中并不总是容易识别。在这个项目的实际实施中,你永远不会知道是否能够获取受灾区域的灾前和灾后图像。如果你确实能获取,这可能是简化人工标注任务的一个潜在方法。你甚至可以考虑开发一个系统,在神经网络模型的输入中同时包含灾前和灾后图像,前提是你的项目能同时获得这两种图像。

我希望你觉得这个项目既有趣又鼓舞人心。就像这些课程中的其他项目一样,这里的目标不一定是让你成为识别德克萨斯州飓风后洪水损害的专家,而是给你一些想法,并让你感受到未来某天你可能感兴趣并需要为此类项目进行原型设计和解决的工具。

我希望这激发了你的一些思考,也许你已经准备好在未来某天开始探索你自己的项目了。


本节课总结

在本节课中,我们一起回顾了自动损害评估项目的完整流程。我们从探索阶段的数据集获取与标注开始,讨论了模型构建的关键组件,并展望了部署与评估阶段需要考虑的实际问题。我们认识到,虽然原型项目展示了核心概念,但现实应用需要处理数据泛化、用户交互、安全隐私以及长期影响评估等更复杂的挑战。这个项目为你提供了一个框架,未来你可以基于此框架,为特定的救灾场景开发和优化你自己的AI工具。

104:第2周总结 🎯

在本节课中,我们将总结第二周的核心内容。本周我们重点探讨了如何利用航空影像进行自然灾害后的损害评估。我们将回顾不同影像平台的优缺点,介绍本周的项目实践,并展望相关领域的研究进展。

航空影像平台对比 📡

上一节我们介绍了利用航空影像进行损害评估的背景。本节中,我们来看看获取这些影像的不同平台及其特点。

以下是三种主要航空影像平台的优缺点分析:

  • 卫星

    • 优点:覆盖范围广。许多卫星会定期执行拍摄任务,这使其成为获取灾前区域影像的绝佳来源。
    • 缺点:云层会遮挡卫星对地面的观测。在飓风等可能持续数日的风暴情况下,卫星影像的实用性会降低。
  • 飞机

    • 优点:机动性更强,有可能在云层下方飞行。
    • 缺点:覆盖区域较小。
  • 无人机

    • 优点:机动性更强,有可能在云层下方飞行。
    • 缺点:覆盖区域较小。

本周项目实践:自动损害评估系统 🏗️

了解了数据来源后,我们进入实践环节。本周的项目是构建一个基于卫星影像的自动损害评估系统。

该系统在原则上也可以扩展应用于无人机或飞机拍摄的影像。项目使用了美国飓风“哈维”过后收集的数千张已标注影像数据集,该飓风引发的洪水和大风造成了广泛破坏。

通过在有标注的数据集上训练神经网络分类器,你的模型在准确率方面能够达到相对较高的性能。其核心过程可以简化为一个监督学习公式:

模型 = 训练(神经网络, 标注数据集)

项目价值与行业应用 🌍

我们构建的系统并非孤立的练习,它在现实世界中具有重要价值。我曾参与过与本周项目类似的解决方案开发。

在我的过往案例中,我们通过规模化处理损害评估流程,为灾难响应人员提供了巨大价值,其效率是单靠灾难响应组织自身难以实现的。目前,全球有许多人正在致力于开发此类解决方案。

本周亮点:研究者聚焦 👨‍🔬

为了结束本周的学习,我们特别关注一位该领域的研究者。Shahzd Galamami 是微软“AI for Good”实验室的高级研究科学家,主要从事与卫星影像相关的损害评估工作。

请观看下一个视频,了解他的工作。然后,我们将在本课程的第三周,也是最后一周再见。


本节课中我们一起学习了:如何利用卫星、飞机和无人机等平台的航空影像进行灾后损害评估,完成了构建自动评估系统的项目实践,并了解了该领域在实际救灾中的应用价值及前沿研究。

105:利用卫星图像进行灾害损害评估 🛰️

在本节课中,我们将学习如何结合人工智能与卫星图像技术,对自然灾害后的建筑损害进行自动化评估。我们将跟随微软“AI for Good”实验室的研究科学家Shahrzad Gholami,了解一个与国际红十字会合作的具体项目。


概述

本节将介绍微软“AI for Good”实验室的使命,以及人工智能在解决全球性挑战(如公共卫生、气候变化和灾害管理)中的应用实例。

我是Shahrzad Gholami,是微软“AI for Good”团队的一名高级研究科学家。

在微软的“AI for Good”实验室,我们与领域专家合作,应用人工智能技术为现实世界的问题开发跨学科的解决方案。

我参与过的一些项目包括:为马拉维南部的粮食不安全问题开发预测模型;在非洲国家公园识别偷猎热点以拯救濒危物种;以及通过视网膜图像为患有黄斑变性的患者预测眼部疾病。


项目背景:AI与自然灾害响应

上一节我们了解了AI在多个领域的应用,本节中我们来看看一个聚焦于自然灾害响应的具体项目。

我想向你们介绍我们在人工智能与自然灾害响应交叉领域的一个项目。

这个项目是与荷兰红十字会的一项倡议——510全球组织合作进行的。

在此项目中,我们的目标是开发一个模型。该模型以灾前和灾后的卫星图像作为输入。

模型需要精确识别图像中建筑物出现的位置,并提供灾后的损害评估。

以下是输入图像的示例。在灾害发生前,该区域状况良好;灾害发生后,部分建筑物出现了损坏。

我们训练模型来执行两项任务。


模型的双重任务

基于上述输入,我们的模型被设计来完成以下两个核心任务。

首先,是识别每张图像中哪些像素对应着建筑物。

其次,是对该区域提供损害评估。下图中的不同颜色代表了不同的损害等级。

我们在这项研究中使用了xBD数据集。这是目前最大规模的数据集,包含了来自19场自然灾害的灾前和灾后卫星图像,覆盖面积超过45,000平方公里。

它由超过22,000张图像组成,其中人类标注员已经识别出了建筑物,如下图中绿色标记所示。


数据与标签说明

了解了模型任务后,我们来看看训练模型所使用的具体数据及其标注方式。

我们用于训练模型的数据看起来是这样的:我们拥有灾前和灾后的图像对。

每一对图像都附有标签,标明建筑物的位置,并将每栋建筑的损坏程度分为四个等级。

等级1(绿色) 表示无损坏。你可以看到左侧这栋建筑在第二张图像中仍然完好,因此被判定为无损坏。

等级2(橙色) 表示轻微损坏。如图所示,这些建筑在第二张图像中可见损坏。

等级3(紫色) 表示严重损坏。底部的这栋建筑看起来有大部分区域受损。

等级4(深粉色) 表示建筑被完全摧毁。顶部的这栋建筑似乎已被完全摧毁。


模型结果与评估

在模型训练完成后,让我们通过实例来观察其预测效果。

训练后,以下是我们模型结果的一个示例。模型自动识别建筑物,然后对图像中与建筑物相关的每个像素进行损害评估。

第一行显示的是“地面实况”,即由人类标注员确定的、与建筑多边形和损害等级对齐的灾前灾后图像训练数据。

第二行显示了我们模型的预测结果。前两幅图像仅显示建筑物的位置,右侧最后一幅图像显示了图像中每个像素测量到的损害等级。

有趣的是,你可以看到,在地面实况掩码中漏掉的两栋建筑,被我们的模型正确地捕捉到了。

这是另一个结果示例。在此结果中,你可能会注意到一些被错误分类的建筑,可以通过对比上面的地面实况图和下面的模型输出看出差异。

我们模型的工作原理是,根据像素的畸变程度来分类损害。

这意味着,将损坏光谱两端的建筑分类为“摧毁”或“无损坏”,实际上比分类部分损坏的建筑更容易。


部署与应用

为了将分析结果有效地传达给利益相关者,我们将模型部署到了一个可视化工具中。

我们部署了我们的模型,与一个可视化工具结合使用,以便将结果传达给我们的利益相关者。

使用这个交互式地图,你可以比较左侧的灾前图像和右侧的灾后图像。

你还可以通过切换右下角的“预测损害层”选项,来叠加显示受损建筑的预测结果。

通过这个项目,我们验证了一个概念:利用深度学习和卫星图像,可以提高分析受灾区域的效率,并改善灾害响应。


未来工作方向

这是一个在微软“AI for Good”地理空间团队内持续进行的项目。

为了提升我们模型的性能,我们正在研究模型的预训练方法,以便能够轻松地进行微调,从而在新的灾害场景和地点提供结果。

此外,我们正在研究将人类专家整合到建模循环中的方法。


总结与资源

本节课中,我们一起学习了如何利用AI模型处理卫星图像,以自动化、高效地评估自然灾害后的建筑损害。该项目展示了AI技术在灾害响应中的实际应用潜力。

若想了解更多关于我们项目的信息,你可以查阅我们的论文,并在微软“AI for Good”网站上关注我们的工作。

106:第3周课程介绍 🚀

在本节课中,我们将学习如何利用人工智能技术分析灾后文本数据,以洞察受灾人群需求的变化趋势,从而为未来的灾害响应与恢复工作提供参考。

欢迎来到第三周,这也是本门关于人工智能与灾害管理课程的最后一个教学周。本周,你将通过一个具体案例进行研究。在该案例中,你将分析一个文本消息数据集,这些消息是在2010年海地地震发生后的数日及数周内发送的。你的目标是确定人们对援助、食物、水以及信息等资源的相对需求,是如何随着时间推移而演变的。

在这个场景中,你可以将自己想象成一个由个人及各类组织(如联合国、红十字会与红新月会以及其他非政府组织)组成的团队中的一员。你们的任务是在灾害的响应与恢复阶段结束后,分析相关的通信记录。你的目标是为灾后响应与恢复阶段中人们不断变化的需求提供深入见解,以便你的组织在未来灾害发生后能更好地帮助受灾人群。

案例研究的特点 📊

这与你在本专业系列课程前几门课中看到的案例研究略有不同。在这里,你不会开发一个软件产品。相反,你可以将其设想为这样一个场景:你通过分析灾害响应与恢复数据,来生成一份能够指导未来响应与恢复工作的报告。

事实上,在灾害响应领域,这类分析比你目前所了解的机器学习应用更为常见。在灾害响应圈内,你经常会听到此类报告被称为“事后行动报告”。我曾为参与响应的各种灾害撰写过此类报告。就海地地震而言,我作为灾害响应人员参与工作,并撰写了一份事后行动报告,该报告最终成为了我博士论文的一部分。

背景回顾:海地地震与短信通信 📱

但在开始分析之前,让我们先更仔细地回顾一下当时发生的事件,以及短信通信是如何在灾后迅速成为响应工作中关键组成部分的。

107:2010年海地地震案例研究

在本节课中,我们将详细回顾2010年海地地震后的紧急响应情况,并探讨如何利用技术与社区协作来协调救援工作。我们将重点关注信息传递、语言翻译和地理定位在灾难响应中的关键作用。

🌍 地震发生与初步影响

2010年1月12日当地时间下午5点左右,一场7.0级地震袭击了海地。

地震立即导致超过10万人死亡,数百万人无家可归,急需援助。

地震发生后的几天里,许多国家和国际组织派遣了援助物资和志愿者,协助救援工作和物资分发。

🚨 紧急响应的核心挑战

上一节我们介绍了地震造成的直接破坏,本节中我们来看看灾后响应的主要挑战。

许多人仍被困在废墟下,或缺乏食物、水和住所等基本必需品,因此初步响应本质上是一个巨大的物流问题。

响应者需要知道受灾人员的位置以及他们需要什么支持,以便规划搜救队、医务人员和物资、食物、水及其他援助的部署。

📱 通信基础设施与信息传递

尽管大部分基础设施遭到损坏或摧毁,但大多数手机信号塔仍然完好并正常运行。

因此,人们通过短信进行交流,寻求帮助或信息。

地震后,我与多个组织合作建立了一个名为“Mission 4636”的短信服务。

海地境内的任何人都可以免费向号码4636发送短信,将他们的需求和位置传达给灾难响应者。

🗣️ 语言障碍与社区协作

绝大多数短信使用的是海地克里奥尔语,而大多数国际响应者并不懂这种语言。

当时,没有应用程序可以自动在海地克里奥尔语和英语之间进行翻译,而英语是国际响应者之间唯一的通用语言。

作为Mission 4636的一部分,我招募并与数千名散居世界各地的海地侨民合作,他们在线快速翻译并定位这些信息。

以下是此类信息的一些示例,你可以看到人们正在寻求帮助,描述情况,并提供地址或特定地点名称等位置信息。

示例短信(翻译后):

  • “我们需要食物和水,在Delmas 33。”
  • “有人被困在Pétion-Ville的建筑物废墟下。”

🗺️ 信息翻译与地理定位

现在,有了英文翻译,这些信息在许多情况下也通过Mission 4636的海地志愿者的本地知识,被匹配到了确切的位置。

这些翻译和位置信息随后被路由给响应者,响应者可以首先与发出信息的人进行后续沟通,以提供更多信息或部署实地支持。

为了说明这是如何运作的,你可以看这样一条信息,它会被翻译成如下英文:

原始信息(克里奥尔语): “Ospital Sacre Coeur nan Ocapap ouvri.”
翻译信息(英语): “Sacre Coeur hospital in Ocapap is open.”

你可以看到,这实际上是来自当地社区的一条信息,指引人们可以找到一家开放的医院。

然而,理解“Ocapap”的位置并不简单。即使我告诉你“Ocapap”可能是“Cap-Haïtien”的俚语,你也不会知道这里所指的医院实际上位于城市以南10多公里处。

因此,在这种情况下,为了告知该地区的人们应该去哪里寻求医疗帮助,这条信息的翻译和定位都依赖于对语言的本地知识以及医院的位置信息。

👥 本地参与的关键作用

除了翻译和对事物位置的本地知识外,让受危机影响的人群参与灾难响应工作始终是必要的。

毫无疑问,应对这次海地地震最重要的人就是海地人自己。

通过Mission 4636,海地侨民在地震后的几天和几周内处理了超过80,000条信息,世界各地海地侨民的工作无疑拯救了海地境内的生命。

在响应和恢复阶段之后,我们能够将这个系统移交给海地境内的带薪工作人员运营,它继续成为人们可以依赖的服务。

📊 数据共享与长期影响

为了支持未来的灾难响应和翻译工作,我们在删除了所有包含个人身份信息(甚至是个人的名字)的信息后,发布了一个短信子集。

这个数据集已成为许多灾难响应规划研究的基础,也是各种机器翻译服务的初始数据,包括微软和谷歌从海地克里奥尔语到英语的翻译服务,这两项服务都在地震发生后相对较快地发布。

在这些信息中首次被标注的地点名称也首先与OpenStreetMap共享,然后与其他地图服务共享。

由于基于这些数据集开发的技术,翻译这样一条信息并定位Ocapap的Sacre Coeur医院,对于不懂海地克里奥尔语但可以访问互联网并能在海地搜索这家特定医院的人来说,现在实际上是一项可管理的任务。

💡 经验总结与未来挑战

这是一个非常好的例子,说明了与低资源语言社区合作部署翻译、地图或搜索等通用应用程序,如何在包括灾难响应工作在内的许多任务中,日后为这些社区提供巨大价值。

然而,在今天世界上许多使用低资源语言的地区,我们在2010年海地面临的同样挑战仍然存在。

即,没有针对当地语言的自动翻译服务,地图功能有限,尤其是使用这些语言的地名。

🧪 本周实验任务

在本周的实验中,你将使用由海地侨民和地震后海地境内的带薪工作人员翻译和地理定位的短信数据。

你将作为一个有兴趣研究灾难发生后几天和几周内援助和信息请求如何演变的人来处理这个项目。

这将帮助我们灾难响应社区更好地理解和规划未来的灾难响应工作。

请加入下一视频,开始本项目的探索阶段,在那里你将识别利益相关者并定义问题陈述。


本节课总结:
本节课我们一起学习了2010年海地地震后紧急响应的协调过程。我们看到了通信技术(短信服务)如何成为生命线,但也遇到了严重的语言和地理定位障碍。通过“Mission 4636”项目,海地侨民社区的本地知识在翻译和定位信息方面发挥了不可替代的作用,拯救了许多生命。这个案例突显了在灾难响应中,结合技术解决方案与本地社区参与的重要性,以及为低资源语言开发工具(如翻译和地图服务)的长期价值。最后,我们了解到这些努力产生的数据至今仍在为灾难规划和机器学习研究提供支持。

108:主题建模探索阶段 📊

在本节课中,我们将学习如何为AI项目定义探索阶段,特别是针对灾难响应场景。我们将以2010年海地地震后的短信数据集为例,了解如何识别利益相关者、定义问题,并初步判断AI能否为解决方案增添价值。


背景回顾

上一节我们介绍了2010年海地地震后,海地侨民和当地工作人员如何通过Mission 4636项目,在翻译和地理定位受灾社区发出的短信通信中发挥关键作用。这些信息随后被转发给响应人员。

正如我在本专业课程第一门课中提到的,在21世纪的头十年,手机的使用从相对有限变得几乎在世界各地无处不在。因此,在2010年,灾后许多受灾社区的个体能够直接寻求帮助,这还是一个相对较新的现象,尽管当时许多周边基础设施已被摧毁。如今,人们期望数字通信——无论是通过电话、短信、社交媒体还是其他消息服务——在危机期间能够成为人们发送和接收信息的一种方式。在规划未来灾难的响应时,研究此类平台的使用方式、哪些方法在路由或响应此类通信方面可能有用,以及所交换消息的内容,都至关重要。

探索阶段的目标

目前,我们正处于项目的探索阶段。此阶段的目标是与利益相关者互动,定义你打算解决的问题,并确定AI能否作为解决方案的一部分增添价值。

对于与利益相关者互动这一步,在本案例中,你可能需要联系许多个人和组织。

以下是需要考虑的利益相关者类型:

  • 首先,你需要联系受灾社区的成员。在本案例中,包括海地国内和全球侨民中的海地人,以更好地了解他们的经历。
  • 其他利益相关者可能包括参与响应的组织,例如当地组织和国际非政府组织,以及可能参与未来响应工作的组织。
  • 还可能包括运营数字通信平台的公司。在2010年的海地,这是少数几家手机公司和广播电台。但如今,这可能包括手机运营商、广播电台、社交媒体平台等。例如,我在这些课程中多次提到联合国儿童基金会的U-Report系统。该系统以前通过短信工作,但现在在WhatsApp消息平台上运行。

在任何灾难中,对支持和服务的不同需求的具体细节,以及这些需求如何演变,将取决于具体地点、灾难的性质以及灾难发生前存在且灾后仍能运行的基础设施。

定义项目范围

与其试图考虑所有可能的情况,我建议你设想目标是帮助一个资源匮乏的语言社区,度过突发性灾难的响应和恢复阶段。

在这种情况下,你还需要与曾经处理过你希望解决的问题的人员交谈,并听取曾参与Mission 4636及类似工作的人们的意见。

即使将本项目范围缩小到支持单个资源匮乏的语言社区,这个问题仍有许多不同的方面可以考虑着手解决。

以下是几个可能的工作方向:

  • 你可以致力于翻译环节,为该语言构建更好的翻译服务。
  • 你也可以考虑实时从非结构化文档中提取信息,以支持资源分配。
  • 你还可以考虑根据消息中描述的地址,自动对这些消息进行地理映射。

为了本项目的目的,我们将进一步缩小范围,专门研究人们提出的请求内容,以及这些请求在灾后数天和数周内如何演变。请记住,这只是巨大拼图中的一小块。但类似于我们在这些课程中看到的其他用例,应用此处的框架,你也可以处理此数据集中的另一块拼图,或完全不同的用例。

确定利益相关者与问题陈述

那么,在这种情况下,假设你项目的利益相关者是:

  • 你希望服务的社区成员。
  • 过去曾参与相关解决方案工作的个人。
  • 可能参与响应和恢复工作的组织。
  • 维护人们可能使用的通信平台的公司。

因此,针对此场景的问题陈述可以是:受灾社区的人们和援助组织希望了解在突发性灾难后,需求如何随时间变化,以便更好地为世界任何地方未来的灾难做规划。

评估AI的价值

在确定了利益相关者并定义了问题陈述后,你就可以进入探索阶段的第三步。当然,从这一点出发,你可以通过多种方式进行一个有影响力的项目,其中许多并不涉及AI。但这些课程是关于"AI向善"的,所以这就是我们下一步的方向。

因此,本项目的下一步是确定AI能否为你希望解决的问题增添价值。如前所述,Mission 4636的数据集已在线发布,这将是你在本项目中使用到的数据集,就像我们在这些课程中看到的其他项目一样。为了确定AI是否确实能为你的工作增添价值,你需要首先探索数据。

这就是接下来的内容。在下一个视频中与我一起,开始探索数据。


本节课中,我们一起学习了如何为AI项目构建探索阶段。我们回顾了海地地震案例的背景,明确了探索阶段需要识别利益相关者、定义具体问题范围,并初步评估AI应用的可行性。通过定义清晰的问题陈述和利益相关者,我们为后续的数据探索和AI价值评估奠定了基础。

109:主题建模探索数据 📊

在本节课中,我们将学习如何探索和分析一个包含2010年海地地震后发送的文本消息的数据集。我们的目标是理解数据内容,并评估人工智能是否能为这类项目提供价值。

数据集概述

我们分析的数据集包含了2010年海地地震后发送的文本消息。具体目标是描述灾后数天至数周内,人们对援助、信息和其他请求等需求的演变情况。

为了确定人工智能是否能为你希望开展的项目提供实际价值,我们将从探索消息内容本身、每条消息被分配的各种类别以及数据集的其他特征开始。

需要提醒的是,许多消息内容令人痛心。即使灾难已过去十多年,过去仅阅读这些消息就曾给人们带来创伤。请记住,如果你选择继续,你将非常真实且悲伤地了解灾难后的情况。

在实验的顶部,你可以找到数据来源的链接,本例中是我自己的GitHub仓库。

以下是数据集的摘要。如你所见,数据集总共包含25,000条消息,这些消息来自不同的灾难响应,包括2010年海地地震、同年晚些时候的巴基斯坦洪水、2012年美国的飓风桑迪,以及一组关于灾难的新闻报道。

向下滚动,你可以看到每行数据包含内容的更多细节。这些内容包括消息的ID、消息内容、消息是否与灾难相关以及其他细节。

每条消息都由人工标注者根据其内容细节进行了标记。因此,对于每条消息,你还有几十个二进制标志来指示该消息是否与援助相关。

然后,标志会详细说明具体内容,例如这是否与医疗帮助、安全或失踪人员有关。

还有关于基础设施和天气相关主题的标志。

此外,还有一列指示消息来自哪个事件以及消息发送的日期。在本例中,只有海地的消息包含日期。

再次强调,在项目的探索阶段查看数据的主要目的是确定人工智能是否可能作为解决方案的一部分增加价值。

向下滚动一点,你可以看到这个数据集已被用于大量不同的机器学习相关项目,包括各种分类和翻译任务,其中一些列在这里。事实上,我们发布这些数据,正是为了给从事灾难响应和恢复研究的人们提供资源。

开始探索数据

回到笔记本,我首先要提醒你,对于每个实验,你的实验笔记本都位于一个包含其他内容的文件夹中,你可以通过点击这里的Jupyter图标来查看文件夹内容。

这里有一个数据文件夹,其中包含来自GitHub仓库的数据集。和往常一样,你还有一份数据表,描述了数据的来源,本例中指向GitHub仓库,你可以在那里找到关于此数据集细节的更多信息。

与这些课程中的其他实验一样,这里有一个U文件,我放置了你将在本实验中运行的一些代码。如果你熟悉Python并对本笔记本中某些步骤背后的操作感到好奇,可以查看其中的内容。

然后就是笔记本本身。我可以点击这里返回到笔记本。

首先,运行第一个单元格以导入本实验所需的包。当你看到“包已成功导入”的消息时,就可以继续下一步了。

接下来,你正在读取数据集,这里读取的是完整的数据集,它已被分为训练集、验证集和测试集。但在这里,由于我们要对整个数据集进行无监督分析,我们将把它们全部合并。

之后,你将打印出数据的前几行,以确保一切准备就绪且正常。

在这里,你可以看到你获得了近24,000行数据,列就是刚才在GitHub仓库中看到的那些。在这些列中,你可以看到有ID、英文消息以及原始语言,然后是不同类别的各种标志。

这个PII标志用于指示哪些消息包含个人身份信息。正如我们所说,这些信息在发布前实际上已从数据集中移除,但为了确认,我们稍后会检查以验证其值为零,这意味着数据中没有指示个人信息的标志。

这里还有一个字段指示消息来自哪个事件,所以在本例中,顶部的这些消息都来自海地地震。

当你运行下一个单元格时,你将打印出所有的列名。然后,你可以运行下一个单元格来检查PII列中的条目值。该单元格的作用是打印出PAI列中出现的所有唯一值,所以在这种情况下,你可以说只有一个唯一值,那就是零。因此,正如我已经提到的,数据中所有条目的PAI标志都设置为零,这是设计好的。

在地震后记录的全部消息数据集中,当然,许多消息确实包含个人身份信息,但我们在公开之前非常仔细地识别、标记了这些信息,并将其从数据集中移除,实际上是完全删除了它们。在你从事的任何涉及个人之间直接通信的项目中,你都需要非常小心,不要存储或发布任何包含私人信息的数据,除非获得信息被披露的个人的明确同意,并且你还需要确保这些人有机会在未来要求删除他们的数据。

运行下一个单元格,你将打印出事件列中的唯一值,在那里你可以看到不同的事件包括海地地震、美国的飓风桑迪、巴基斯坦洪水,以及这个“Nan”条目,它只是一个空值,用于指示数据集中哪些条目来自新闻报道。

之后,你将把数据过滤到仅包含海地的数据集,但如果你感兴趣,可以更改此过滤器以查看来自其他事件的数据。请记住,你将查看的某些字段(例如日期)在其他数据集中不存在。因此,如果你更改此过滤器,本笔记本中的某些代码可能无法正常工作。

现在你可以看到,你的数据中专门针对海地事件的行数约为9,900行。

当你运行下一个单元格时,你将打印出数据集中每列的缺失值数量,并发现所有列的缺失值均为零。这与你在之前课程的实验中看到的一些存在缺失值的数据集不同。这里你使用的是经过相当精心整理的数据,因此它已经为你清理和注释好了。

总结

本节课中,我们一起学习了如何开始探索一个包含约10,000条2010年海地地震后发送的消息的数据集。我们读取了数据,并了解了数据集的基本结构和特征,包括消息类别、事件来源以及数据隐私处理。现在,是时候开始进一步探索了。在下一个视频中,我们将开始可视化这些数据。

110:主题建模与数据可视化 📊

在本节课中,我们将学习如何通过可视化手段探索和分析文本数据集。我们将使用一个与灾难相关的短信数据集,通过图表和工具来理解消息的分布、内容以及随时间变化的趋势。目标是判断人工智能是否能在后续分析中提供价值。


概述

上一节我们开始探索了短信数据集。本节中,我们将继续完成实验的其余部分,通过可视化数据来更好地理解消息类型的分布、消息内容以及不同类型消息随时间的变化情况。

探索的目标是确定人工智能是否可能为分析提供价值。在我们深入探讨人工智能如何处理文本数据的具体细节之前,您需要在这些可视化图表中寻找信息:消息是否根据其内容、发送时间和其他特征自然地分离成不同的组、集群或主题。

如果您刚刚打开实验,需要运行到此为止的所有单元格。如果您一直在跟随操作,可以从这里开始。

运行下一个单元格时,您将看到名为 related 的列中标志的分布情况。

该列指示一条消息是否与灾难相关。

在这个条形图中,您可以看到被归类为与灾难相关的消息(在此列中值为1),以及不相关的消息(值为0),还有那些标注不明确的消息(标记为2)。

可以看到,大多数消息与灾难相关,不相关的消息大约是其一半,还有少量消息标注者不确定。

为了更好地理解消息内容,您可以运行 Excel 单元格。它会根据您在下拉菜单中选择的条件,打印出数据集中符合条件消息的样本。

在这里,您可以选择“是”、“否”或“不确定”,来筛选与灾难相关或不相关的消息。

现在可能需要提醒您,很多消息非常难以阅读。即使是我这样参与过灾难响应工作的人,回头再看这些消息也不容易。

如果您想从事灾难响应工作,理解人们在灾后关心什么、表达什么确实很重要。但如果您觉得不适合查看这些消息,也完全可以跳过这些特定的实验部分。

您还可以使用此菜单选择消息的子集,再次选择“全部”或标识特定主题消息的具体类别之一。

打印出的消息是那些符合您设定条件的消息。对于这些二元类别,您看到的是特定标志被设置为1的消息。

这里每条消息都包含原始的海地克里奥尔语及其英语翻译。建议您调查不同类别下的消息是什么样的。例如,如果您选择“金钱”。

您会看到一些人们询问或提出与金钱相关请求的例子。

如果您选择另一个类别,比如“医院”,您将看到与医院相关的消息示例。在某些情况下,这可能是可以接收病人的医院,而在其他情况下,可能是人们寻找哪些医院可能开放的信息。

在某些情况下,您可能会遇到显示“数据集中没有符合所选参数的样本”的消息。在这种情况下,这意味着除了PI之外,我们移除了所有与“无人陪伴的未成年人”或“单独儿童”相关的消息,正如这里所标记的。

要回顾每个类别的含义,您可以返回GitHub仓库,那里描述了每个标志。

阅读不同条件组合下的消息,看看您能发现什么。

运行下一个单元格,您将生成另一个条形图,查看被归类为“提供”、“请求”或“两者都不是”的消息数量。

同样,您可以尝试不同的类别,看看分布情况如何。您会发现在大多数类别中,大部分消息都是请求。尽管分布情况因具体类别而异。

运行下一个单元格以显示每天记录的消息数量。

在这里,您可以使用下拉菜单查看不同类型消息的数量如何随时间演变。

查看所有消息,您可以看到在灾难发生后的最初几天发送的消息更多。观察一下,看看您是否能弄清楚事件发生后立即最常见的是哪些类型的消息,哪些是随时间推移更持久出现的,甚至是后来首次出现的。

从这里,您可以开始粗略地了解不同需求如何随时间变化。查看每日趋势可能有些杂乱,但您可以运行下一个单元格,现在按月统计消息来进行相同的分析。

在这里,您应该能够查看当我们将数据聚合到月度级别时,您在上面看到的一些见解是否仍然成立。

最后,我们可以使用词云来查看数据。通常,词云可能不像看起来那么有用,但在这里它们实际上向我们展示了关于数据以及我们想要如何处理数据的一些重要信息。

词云,如果您不熟悉的话,就是最常见单词的集合(在本例中是您选择的给定消息类型)。单词越大,它在数据中出现的频率越高。查看所有消息类型,您可以看到英语翻译中最常见的单词是相对无趣的单词,如“in”、“the”、“we”、“are”等。如果您会说海地克里奥尔语,您会看到相同类型的单词以最大的字体出现在原始海地克里奥尔语消息的词云中。

通常,这类文本分析工具默认会避免包含这类单词,但我已将 use_stop_words 参数默认设置为 False,以便所有单词都包含在此词云中。我这样做的原因是,在下一个实验我们将遵循的文本处理和建模步骤中,您将考虑每条消息的全部内容,因此这些非常常见的单词将是您需要考虑的因素。

如果您想先睹为快,看看更重要的描述性单词在词云中如何显示,您可以简单地将 use_stop_words 参数设置为 True(首字母大写T),而不是 False

然后尝试查看不同消息类型的词云,看看您能发现什么。

实验的探索阶段到此结束。在这里,您查看了数据集以更好地了解其包含的内容以及数据的一些特征。您看到不同类别的消息似乎在内容、发送时间以及是否与灾难相关方面自然地分成了不同的组。因此,看起来值得进入该项目的设计阶段,更深入地研究数据,并开始研究如何对不同的主题进行建模。

然而,在此之前,您将完成探索阶段检查点,以确保您已具备进入设计阶段所需的条件。请在下一个视频中与我一起进行探索阶段检查点。

111:吴恩达《AI for Good专业课程》 P111 - 主题建模探索阶段检查点 🧭

在本节课中,我们将学习如何对一个AI项目进行探索阶段的总结。我们将以2010年海地地震后的短信通信数据为案例,分析如何定义问题、识别利益相关者、评估数据价值,并考虑潜在的伦理风险。


上一节我们介绍了探索阶段的目标,本节中我们来看看针对海地地震案例的具体分析结果。

具体问题陈述
你正在处理的具体问题是:受灾社区和援助组织希望了解在突发灾难后,援助请求如何随时间变化,以便为未来全球任何地方的灾难制定更好的应对计划。

项目利益相关者
以下是本项目的关键利益相关者列表:

  • 受灾社区的成员,以及未来希望服务的社区。
  • 过去曾参与相关解决方案工作的个人。
  • 可能参与响应和恢复工作的组织。
  • 维护人们可能使用的通信平台的公司。

这个问题的陈述和利益相关者列表在此定义得较为宽泛。但正如之前所说,你可以设想为一个特定的低资源语言社区开展此类项目,并根据该社区的地理位置和可能面临的灾害类型,进一步定制这份利益相关者列表。


上一节我们明确了问题和相关方,本节中我们来看看数据情况和AI的潜在价值。

数据与AI价值
计划使用的数据已为研究目的进行了整理,看起来非常适合追踪援助请求随时间变化的任务。
在数据探索中,你发现信息似乎根据内容自然地分成了不同的组或主题。因此,值得探索一些自然语言处理技术来建模这些主题随时间的演变。例如,可以使用主题建模算法(如LDA)来分析文本集合。

潜在风险与伦理考量
在这种情况下,数据中的所有个人身份信息以及每条信息的具体地理位置都已被移除。并且是由海地社区自己决定了在此背景下什么应被视为个人身份信息。
在任何使用类似信息的实际应用中,个人身份信息和信息发送者的位置都可能带来潜在的伤害风险。但在本案例中,不存在这种风险。
一个可能造成伤害的领域是将其应用于未来的灾难。主要风险在于:因为目标是为未来的灾难响应和恢复计划提供信息,而任何未来的灾难都必然具有独特的要素和挑战,这些可能在你试图研究的过去案例中并不存在。
例如,即使你根据海地的数据经验,为灾难响应和恢复制定了详细、周密的计划,你的计划也可能无法解决甚至加剧一个具有不同挑战的新灾难场景中的问题。


本节课中我们一起学习了如何完成AI项目探索阶段的检查点。我们明确了具体问题、识别了利益相关者、评估了数据的适用性以及AI(特别是自然语言处理技术)的潜在价值,并重点讨论了应用模型时需考虑的伦理风险(如朱诺伤害原则)。基于以上分析,现在可以准备进入设计阶段,开始尝试使用自然语言处理技术对数据进行更深入的分析。我们将在下一课开启设计阶段的学习。

112:处理文本数据 📝

在本节课中,我们将学习如何为后续的文本分析准备数据。我们将重点介绍文本处理的核心步骤,包括分词、清洗和标准化,以便算法能够有效地比较和理解文本内容。


项目背景与设计阶段

你现在正处于海地TMes项目的设计阶段。此阶段的目标是分析数据中的消息,以确定在地震后,人们对信息、援助和其他需求的请求是如何演变的。

对于任何项目,设计阶段需要关注的步骤包括:数据与建模策略的原型设计处理隐私与安全问题,以及设计产品的最终用户体验


本案例研究的特殊性

这个案例研究与我们在课程中看到的其他案例略有不同。你将使用一个经过高度整理、更偏向学术研究的数据集,并且不会开发一个软件产品。因此,我们对数据未来的安全性担忧较少。

你的思考重点将不是构建一个具有用户体验的平台或产品,而是将分析结果作为一份关于灾难响应行动的“事后报告”的一部分进行呈现。


从数字/图像到文本数据

在之前的课程项目中,你主要处理由数字或图像组成的数据集。而在这个项目中,你将处理文本数据,因此需要应用自然语言处理(简称NLP)领域的技术。

NLP是一个结合了语言学、计算机科学和人工智能的研究领域,旨在实现诸如语言翻译、情感分析、文本生成、摘要或搜索引擎等任务。


主题建模简介

在接下来的设计实验环节,你将使用一种名为主题建模的技术。该技术旨在为文本语料库中的一组不同主题建立模型。

例如,假设你有一批新闻文章作为文本语料库,其中一些文章与科学相关,另一些与食物相关,还有一些可能与体育相关。通过主题建模算法,你可以训练一个模型来发现数据中的这些不同主题,并找出哪些特定词语最能标识文章与某个主题的关联。

实际上,你甚至可能不需要提前知道主题是什么,或者(取决于你的方法)你的文本数据中实际包含多少个主题。


分析步骤概述

你将在分析中包含一个步骤,以发现文档语料库中的主题及其正确数量,并进一步探索以确定每个主题的特征。这就是你在下一个实验中要做的事情。

首先,你将处理短信数据,为分析做好准备。然后,你将应用主题建模技术来发现数据中的主要主题。

接下来的实验将专注于为分析处理和准备数据。下面我将简要介绍其工作原理,然后我们将进入实验本身。


文本处理的目标与挑战

要理解如何处理文本数据,你可以先直观地思考你想要实现的目标:你希望能够根据内容对不同的短信进行分组。因此,你需要一种能够比较不同消息内容的方法。

一种比较内容的方法是直接阅读每条消息并寻找相似性或差异性。作为人类,你可以阅读不同消息的文本并直接比较它们。例如,这里有三条关于需要食物、水和其他援助的相似消息。

然而,你的目标是让算法来寻找文本消息之间的相似性或差异性,以便在纯人工分析难以处理的规模上发现这些相似性。


算法面临的挑战

例如,这三条消息中都含有单词“food”。对人类来说,很容易识别它们是相同的。但对算法而言,这些单词只是数字表示。除非你特别处理,否则全小写的“food”在算法看来,与全大写的“FOOD”和首字母大写的“Food”是不同的。

同样,你的算法不会自动识别不同时态的动词。因此,“need”和带有后缀的“needing”虽然在这里明显表示相同的意思,但除非你能将单词分解为其组成部分,否则它们在算法看来也是不同的。


文本处理的核心步骤:分词与标准化

为了处理上述例子,你将把文本处理成所谓的词元。你可以将这些词元视为单词的“清理”版本,目的是让算法更容易平滑处理后缀、前缀和大小写等方面的差异。

以下是处理步骤:

第一步,将单词与任何前导和尾随的标点符号分开,形成一个列表。

第二步,删除所有标点符号,因为在此分析中,我们不考虑标点符号对文本含义的影响。

第三步,将所有字母转换为小写。这样,本例中“food”这个词的所有三个实例现在看起来就完全一样了。

第四步,移除所谓的停用词。至少在英语中,这些词往往不会为语句增添任何含义,例如“the”、“and”等词在此阶段将被移除。

最后,执行一个称为词形还原的步骤。这是一个花哨的说法,意思是你将去除单词的前缀和后缀,将其还原为词根形式。举一个具体例子,“needing”通过词形还原将变成“need”,然后两者都将作为单词“need”的相同实例出现。


处理后的结果与应用

经过这些步骤,你得到的是每条消息的词元。现在,你可以使用算法直接在消息之间比较词元,查看词语出现的频率以及哪些词语倾向于一起出现。

这种数据标准化在文本处理中非常常见。你可能也想象得到,这是一种非常简化的处理方式,并且可能会丢失信息。例如,有些情况下大小写是有意义的;我们称之为停用词的词语有时也会影响含义;如果你说另一种语言,你可能已经意识到,英语以外的语言往往有更多的前缀和后缀,并且它们携带的意义通常比在英语中更重要。

在这个场景中,我们不会深入探讨如何处理英语以外的语言的细节。只需知道,一旦我们走出像英语这样非常标准化的语言范围,处理其他语言就变得非常重要且非常困难。


总结

本节课中,我们一起学习了为文本分析准备数据的关键步骤。我们了解了从原始文本到标准化词元的处理流程,包括分词小写转换去除停用词词形还原。这些步骤是进行有效主题建模和其他NLP任务的基础。在接下来的实验中,你将亲自应用这些技术来处理海地项目的短信数据。

113:主题建模处理文本消息 📝

在本节课中,我们将学习如何为文本消息数据集应用文本处理步骤,为后续的主题建模做准备。我们将使用海地地震后的短信数据集,通过一系列处理步骤,将原始文本转换为可用于分析的数值向量。


概述

在上一个笔记本中,我们探索了海地地震后发送的短信数据集。在本笔记本中,我们将应用上一视频中介绍的文本处理步骤,为建模准备数据。

笔记本顶部提供了数据来源的GitHub仓库链接。我们将从导入本实验所需的包开始。


导入所需包

首先,导入本实验所需的Python包。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

加载数据

运行以下代码加载数据。

data = pd.read_csv('path_to_your_data.csv')

这里加载了整个数据集,然后筛选出仅包含海地地震后发送的短信。你可以更改筛选条件,对其他事件进行相同的分析。

打印数据的前几行,确认数据读取正常。

print(data.head())

文本处理步骤

接下来,我们将运行上一视频中介绍的所有步骤:分词去除标点小写转换去除停用词词形还原

你可以使用下拉菜单选择不同的消息类型,就像在上一个实验中所做的那样。每次选择不同的类型,你都会看到在处理每个步骤时其他消息的变化。

以下是处理步骤的简要说明:

  • 分词:将文本大致分解为不同的单词,尽管在某些情况下可能会拆分单词并去除尾随的标点。
  • 小写转换:将所有大写字母转换为小写字母。
  • 去除标点:移除完全由标点符号组成的标记。
  • 去除停用词:移除英语中那些非常常见但往往不携带太多意义的单词。
  • 词形还原:通过去除不同的前缀或后缀来简化单词,至少在英语中,这些词缀本身往往不携带太多信息。

尝试在不同消息上运行这些步骤,以熟悉这个处理流程。


扩展停用词列表

在停用词步骤中,我们应用了一个标准的英语停用词列表,例如“the”、“and”等。在文本处理中,你经常会发现需要排除超出此标准列表的额外单词。如果你查看URLs文件,你会看到我们根据这些消息的内容稍微扩展了标准列表。

在下一个实验中,你还有机会移除额外的停用词。

运行此单元格后,你将把处理流程应用到整个数据集,并在数据框中创建一个名为Message tokens的新列,用于存储每条消息的标记列表。


查看处理结果

如果你将原始消息列与消息标记列并排查看,现在可以看到每条消息是如何转换为标记的。

运行下一个单元格,查看初始消息和处理后标记的不同类别示例。

# 示例代码,查看特定类别的消息和标记
category = 'your_selected_category'
sample_messages = data[data['category'] == category].head()
print(sample_messages[['original_message', 'message_tokens']])

同样,你可以从下拉菜单中选择不同的类别来查看不同的示例。


分析标记数量

查看每条消息生成了多少标记也很有趣。这里,我们在数据框中添加另外两列:一列是原始消息中的单词数,另一列是每条消息的标记数。

data['word_count'] = data['original_message'].apply(lambda x: len(x.split()))
data['token_count'] = data['message_tokens'].apply(len)

然后,绘制单词数和标记数的直方图。

plt.figure(figsize=(12, 5))
plt.subplot(1, 2, 1)
plt.hist(data['word_count'], bins=30, edgecolor='black')
plt.title('Distribution of Word Counts')
plt.xlabel('Number of Words')
plt.ylabel('Frequency')

![](https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai4gd/img/3169f4d67216520fe7446eea96072ae7_35.png)

plt.subplot(1, 2, 2)
plt.hist(data['token_count'], bins=30, edgecolor='black', color='orange')
plt.title('Distribution of Token Counts')
plt.xlabel('Number of Tokens')
plt.ylabel('Frequency')
plt.show()

你可以看到,通常标记数少于单词数,但每种情况都不同。同样,你可以为不同类型的消息可视化这一点。

有趣的是,有许多消息被简化为仅一个标记。你可以通过运行下一个单元格来查看这些消息。

single_token_messages = data[data['token_count'] == 1]
print(single_token_messages[['original_message', 'message_tokens']].head())

每次运行该单元格,你都会看到另外五个示例。在某些情况下,看起来确实只有一个感兴趣的单词,如“earthquake”,但在其他情况下,消息看起来只是噪音。


词袋表示法

接下来,你将把每组标记转换为一个向量或数字列表,表示每个单词在每组标记中出现的次数。

运行此单元格,你将看到这如何一次处理几条消息。同样,你可以选择不同的消息类型,以了解这个额外处理步骤的样子。

以下是处理流程:

  1. 原始消息:你的小型语料库。
  2. 标记:这些消息被转换成的标记。
  3. 小型词典:出现在上述消息中的每个唯一单词的列表,每个单词分配一个数字索引。
  4. 词袋向量:使用该小型词典创建一个数字对列表,一个数字对应每个单词或标记,以及该单词在你的小型语料库中所有消息的标记中出现的次数。

在人类可读的示例中,你可以看到这些单词大多只出现一次,尽管少数如“problem”和“people”出现了两次。

这种简单地计算一组文档(在本例中是小型语料库)中单词出现次数的过程被称为词袋方法。基本上,你正在以这样的方式准备数据:对于整个文本语料库,你可以知道每个单词出现了多少次。

最后,这里是词袋的人类可读版本,其中包含文本中的每个单词以及该单词在上述消息中出现的次数。


应用于整个数据集

当你对整个数据集运行此操作时,将为语料库中出现的每个唯一标记分配一个不同的数字。

运行下一个单元格,将此技术应用于完整的数据集。

from sklearn.feature_extraction.text import CountVectorizer

![](https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai4gd/img/3169f4d67216520fe7446eea96072ae7_53.png)

vectorizer = CountVectorizer()
X = vectorizer.fit_transform(data['message_tokens'].apply(lambda x: ' '.join(x)))

现在,你可以查看整个数据集中单词或标记的频率。同时,你将把该列表减少到仅出现至少五次的单词。

运行下一个单元格,打印出整个数据集中前20个最常出现的标记列表。

# 获取词频并排序
word_freq = pd.DataFrame(X.sum(axis=0), columns=vectorizer.get_feature_names_out()).T
word_freq.columns = ['frequency']
top_20 = word_freq.sort_values('frequency', ascending=False).head(20)
print(top_20)

你可以看到,这些词是“help”、“need”、“sadly”、“pleased”、“people”等。尽管情况很糟糕,但人们非常有礼貌。

在这里,你可以看到在这个数据集中总共有超过80,000个标记。或者平均每条消息大约有八个标记,因为我们开始时大约有10,000条消息。

你可以从这些下拉菜单中选择查看每种消息类型的前20个单词。


可视化

接下来,你可以为不同的消息类型运行词云可视化。

from wordcloud import WordCloud

![](https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai4gd/img/3169f4d67216520fe7446eea96072ae7_62.png)

# 示例:为特定类别生成词云
category_text = ' '.join(data[data['category'] == 'your_category']['message_tokens'].apply(lambda x: ' '.join(x)))
wordcloud = WordCloud(width=800, height=400, background_color='white').generate(category_text)
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()

请注意,现在不同主题的词云不再被像“and”或“the”这样携带很少内容的单词所主导,就像上一个实验中的情况一样。这当然是因为你在分析中过滤掉了停用词。

最后,你可以查看不同消息类型的所谓树状图,其中每个矩形的相对面积表示一个单词在数据中出现的频率。

import squarify

# 示例:为特定类别生成树状图
category_freq = word_freq_for_category.head(50) # 假设已计算
squarify.plot(sizes=category_freq['frequency'], label=category_freq.index, alpha=0.8)
plt.axis('off')
plt.show()

这里我展示了前50个单词,但你可以更改此参数来查看更多或更少的单词。

同样,这样做的目的是了解什么特征化了不同的类别,并开始了解数据集中一些更广泛的主题可能是什么。


保存处理后的数据

最后一步是展示如何保存处理后的数据集。我们为你完成了这一步,你将在下一个实验中再次使用它,但如果你取消注释这行代码,你可以在此处保存自己的副本。

# data.to_csv('processed_messages.csv', index=False)

总结

在本节课中,我们一起学习了如何将文本消息语料库处理成标记,然后进一步将这些标记表示为向量。这有助于我们查看不同消息类别中单词的相对频率。接下来,我们将开始构建模型,请加入下一个视频,开始对此数据集中的主题进行建模。

114:主题建模与潜在狄利克雷分布 (LDA) 🧠

在本节课中,我们将学习如何应用潜在狄利克雷分布(LDA)算法对文本数据进行主题建模。我们将从准备数据开始,运行LDA模型,评估模型质量,并最终分析主题如何随时间演变。


概述

上一节实验中,我们通过将每条消息中的单词转换为词元(token)并进行计数,为建模准备好了文本数据。本节中,我们将应用一种称为潜在狄利克雷分布(LDA)的技术。你可以将LDA视为一种在整个文档语料库(在本例中是短信)中进行统计比较的方法。通过这种方法,我们将能够根据相关词汇(更具体地说是它们包含的词元)在统计上的相似性对消息进行分组。


导入必要包

首先,运行第一个单元格以导入本实验所需的所有包。

# 导入所需库的代码示例
import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.decomposition import LatentDirichletAllocation


加载数据

运行下一个单元格时,你将加载数据,包括在上一实验中准备好的已处理词元。

# 加载数据
data = pd.read_csv('processed_data.csv')
processed_tokens = data['tokens'].tolist()


创建词袋表示

接下来,你将再次把词元语料库转换为词袋表示。

# 创建词袋模型
vectorizer = CountVectorizer()
bag_of_words = vectorizer.fit_transform([' '.join(tokens) for tokens in processed_tokens])

这仅为数据集中的每个唯一词元分配一个数字,以便LDA算法能够利用它。


运行LDA模型

在下一个单元格中,你将在数据上运行LDA方法,这里指定将数据建模为包含两个主题。

# 运行LDA,指定主题数为2
lda_model = LatentDirichletAllocation(n_components=2, random_state=42)
lda_model.fit(bag_of_words)

输出显示了模型识别出的主题中最常见的单词。请注意,你并未指定希望这些主题的内容是关于什么的,你只是运行了一个模型,根据数据集中消息之间的统计相似性和差异性将数据分为两个主题。


评估主题一致性

接下来,你将了解一种称为“一致性分数”的指标。以下是关于一致性分数的更多学习链接(如有兴趣)。关键点是,这是衡量你所识别主题的一致性或质量好坏的一个指标。

# 计算一致性分数(示例,实际使用需要coherence模型)
from gensim.models import CoherenceModel
# ... 计算一致性分数的代码 ...

关于使用一致性来衡量主题建模质量的利弊有大量文献,如果你有兴趣,我鼓励你阅读。简而言之,一致性是通过计算最常出现单词之间相似度的估计值来衡量的。通常,分数是一个负数,越接近零的数字表示一致性越高,或者说模型越好。无论你有多少个主题,都只会得到一个一致性度量值。

为了可视化其工作原理,你将计算在上一步建模中识别的两个主题的前10个单词的一致性,然后与数据集中随机单词列表的一致性分数进行比较。每次运行此操作,你都将与不同的随机单词集进行比较,你会发现模型主题中顶部单词的一致性比随机单词更接近零。这表明你的模型主题比随机单词集合更具一致性。这是一个很好的完整性检查,以确保你正确构建了数据管道,并创建了有意义而非半随机的主题。


探索不同主题数量

如前所述,你也可以运行包含更多主题的模型,这就是下一步要做的。在这里,你将生成主题数量从2到6不等的模型。

# 尝试不同数量的主题
coherence_scores = []
for n_topics in range(2, 7):
    lda = LatentDirichletAllocation(n_components=n_topics, random_state=42)
    lda.fit(bag_of_words)
    # ... 计算并存储一致性分数 ...

与之前的实验一样,你可以在视频中看到我们会稍微加快速度。完成后,你可以可视化每个主题的顶部单词结果以及每个模型的一致性分数。例如,对于一个包含两个主题的模型,一致性分数约为-2.43,并且两个主题的顶部单词按相对频率列出在此。然后,你可以使用下拉菜单查看具有不同主题数量的模型的一致性分数和顶部单词。


可视化一致性分数

运行下一个单元格时,你将生成上面生成的每个模型的一致性分数与主题数量的关系图。

# 绘制一致性分数 vs 主题数量
import matplotlib.pyplot as plt
plt.plot(range(2, 7), coherence_scores, marker='o')
plt.xlabel('Number of Topics')
plt.ylabel('Coherence Score')
plt.show()

同样,更好的模型具有更高(负值更小)的分数。在这里,你可以看到在这种情况下,两个主题似乎仍然是最好的模型。

为了进行下面的分析,你可以指定一个主题数量并选择最终模型。这里我将选择两个主题,因为它具有最佳的一致性分数,但你也可以查看其他数量的主题。然后,这里再次显示双主题模型的顶部单词。


分析单个消息的主题归属

为了更好地理解单个消息如何在主题之间分解,运行下一个单元格以比较单个消息在各个主题中的相关性。

# 分析单条消息的主题分布
message_index = 0
message_topic_distribution = lda_model.transform(bag_of_words[message_index])
print(message_topic_distribution)

这里你看到的是一个图表,显示了特定消息与模型中每个主题的关联强度。在这种情况下,该消息是关于某个地区缺乏资源的人群,它与主题一的关联远比与主题二更密切。

尝试对一些不同类型的消息进行此操作,以了解它们与不同主题的关系。


分析主题随时间的变化

接下来,你可以通过运行这里的单元格来绘制这些主题如何随时间变化。

# 按周分组并计算主题重要性随时间的变化
# ... 数据处理和绘图的代码 ...

此图显示了两个主题随时间变化的相对重要性。在X轴上,是收到第一条消息后的天数。在垂直轴上,是两个主题的相对重要性。计算方式是将消息按周分组。你可以按天进行,但按周分组可以在统计上提供更好的平滑效果。然后,你使用模型评估所有消息,以确定它们与主题一和主题二的相关程度,就像上面所做的那样,但现在针对整周的消息。对于每一周的消息,这里绘制了两个主题中每个主题的平均相关性或重要性,阴影误差范围显示了该平均值周围两个标准差的范围。

因此,这里似乎有一个清晰的信号表明,灾难发生后,主题二比主题一更相关。回顾这些主题的顶部单词,这开始变得直观,因为在主题二中,最常见的词是如“需要帮助”、“食物”、“水”、“援助”和“庇护所”等,而在主题一中,你有如“无信息”、“工作”、“学校”等词。

回顾随时间变化的图表,看起来主题二随着时间的推移变得不那么受关注,而主题一则有所增长。大约在地震发生一个月后,主题一的相关性实际上超过了主题二。三个月后,主题一比主题二更受人们关注。

你认为这些主题可能有什么好的名称或描述?也许你可以将它们分类为“长期需求”与“紧急需求”,或者主题二中的“响应相关主题”与主题一中的“长期恢复主题”。当然,这只是建模的第一步,但拥有这种关于灾难后几周和几个月内需求如何演变的基本信息,对于响应者和从事灾难响应的组织非常有帮助。


优化模型(可选)

作为可选的额外部分,你可能已经注意到上面顶部单词中有一些词看起来不太相关。因此,如果你有兴趣进一步探索,可以使用这里的列表。我已经建议了几个词,如“and”、“would”,你可以考虑将它们添加到停用词列表中(即考虑移除)。你可以在此列表中添加更多单词,只需像这样用单引号括起来并用逗号分隔。

然后运行此代码单元格以从字典中删除这些单词。之后,你可以回到上面的步骤六,再次运行代码以训练一组新模型。运行时,只需逐个单元格地运行笔记本,看看你会发现什么。你可能会发现,通过排除某些单词,可以发现不同数量的主题似乎是最优的,并可能识别出不同类型的随时间变化的趋势。

如果你想从头开始,可以从步骤3重新开始,根据原始数据集重新计算你的词袋。


总结

本节课中,我们一起学习了如何将LDA应用于数据集内的主题建模。通过识别出的主题,你能够将数据中的消息分类为与“紧急需求”和“长期恢复”等相关的内容,并且能够看到关于每个主题的消息量相对于彼此是如何随时间演变的。在下一个视频中,我们将总结本项目的设计阶段。

115:主题建模项目总结 📊

在本节课中,我们将对“海地地震后短信分析”主题建模项目进行总结。我们将回顾项目设计阶段的关键问题,并探讨如何评估此类分析项目在灾难管理中的实际影响。


项目设计阶段回顾

您现已完成本项目的设计阶段,工作出色。

正如之前所述,本项目与您在本系列课程中接触的其他案例研究有所不同。在本项目中,您是在灾难的响应和恢复阶段之后进行数据分析,目的是为未来灾难的响应和恢复工作提供信息。因此,您并非将成果部署到软件产品中,而是可能将这些发现作为事后行动报告的一部分进行呈现。

这种探索性数据分析在将人工智能应用于灾难响应时,比构建软件产品更为常见。

在您所从事的任何项目的设计阶段结束时,您和您的团队需要回答以下问题。

以下是设计阶段结束时需要回答的核心问题列表:

  • 数据问题处理:您将如何处理数据中的不平衡、偏见、隐私或其他问题?
  • 模型与评估:您将实现何种模型?如何衡量其性能?
  • 问题解决:您的设计将如何解决旨在解决的问题?
  • 用户交互:最终用户将如何与您的系统交互?

在本案例中,您所使用的数据集是经过高度整理的,所有个人身份信息均已移除,因此不存在重大的隐私问题。

就偏见而言,正如之前提到的,每场灾难都有其独特的挑战和情况。因此,虽然这个数据集可能很好地捕捉了海地地震后响应和恢复阶段的细节,但它显然也会偏向于这一特定事件的具体情况。

我们实现的模型是LDA主题模型,您使用一致性分数来衡量其性能。

您在本项目中的目标是分析在这场灾难的响应和恢复阶段中,援助或信息请求的趋势。您已经能够展示出有趣的结果,显示了信息请求和关键需求在此次灾难后是如何演变的。

在本案例中,您的最终成果将是一份报告,因此无需考虑软件用户界面。然而,您需要确保报告中包含的文字和图表能够清晰地阐明您的方法和发现。

实施与评估考量

本项目没有实施阶段的实验,因为您在本案例中的实施工作将是撰写报告中的发现。

在项目评估方面,重要的是要记住,您在此处进行的分析只是事后行动报告的一小部分,需要结合报告的其他部分来考虑其影响评估。

在这种情况下,利益相关方组织最关心的是报告中呈现的分析如何服务于受灾社区,以及如何影响未来的响应和恢复工作。

在基本层面上,您可以观察由于您的报告而采取了哪些行动,例如针对未来的灾难,因此进行了何种额外的规划或准备工作。您可以尝试衡量这些计划和准备工作的影响。

课程总结与展望

至此,我们完成了这个分析2010年海地地震后所发送短信的项目。我希望通过这个项目,您对这场灾难的响应和恢复阶段有了大致的了解,并理解了数字通信在灾难管理周期的这些阶段中可以发挥的关键作用。

我也希望您对任何突发性灾难后可能产生的需求和通信类型有了一定的认识,从而对灾难管理工作的含义有了更清晰的理解。

如果您想查看基于此数据集以及响应和恢复的其他方面所发布的实际事后行动报告,您可以在本周课程结束处的资源部分找到我发布的报告。

请继续观看下一个视频,我们将在那里总结本周内容、本课程以及整个专项课程。


本节课总结:在本节课中,我们一起回顾了主题建模项目的设计要点,探讨了如何处理数据偏见与隐私问题,明确了LDA模型在本项目中的应用与评估方式。我们认识到,此类分析项目的产出是报告而非软件,其价值在于为未来的灾难响应与恢复提供信息支持。最后,我们总结了项目在灾难管理背景下的意义,并提供了进一步学习的资源指引。

116:AI与灾难管理 🆘 - 第3周及课程总结

在本节课中,我们将回顾第3周的学习内容,并对整个“AI与灾难管理”课程进行总结。我们将重点分析海地地震的案例,并重温在灾难管理工作中应遵循的核心指导原则。

第3周内容回顾:海地地震案例分析

本周,我们深入研究了2010年海地地震这一具体灾难事件。

我们通过分析灾后数日及数周内,受灾社区成员发送的短信,研究了该事件的响应与恢复阶段。

我们首先了解了地震发生后立即发生的情况,以及海地侨民如何通过翻译和地理定位短信,在响应和恢复阶段发挥了关键作用。

他们的工作不仅在灾后立即提供了重要服务,还为翻译和地图服务奠定了基础。这些服务在许多方面都具有重要价值,包括未来在海地的响应和恢复工作。

在本周的项目中,我们重点进行了分析,旨在撰写一份事后行动报告,以帮助受灾社区和响应者更好地为未来的灾难做准备。在本课程第一周学习的灾难管理周期背景下,可以认为本项目涉及了该周期的所有四个阶段:我们所处理的数据来自响应和恢复阶段,而事后行动报告旨在帮助未来灾难的减灾和准备工作。

在实际的地震响应工作中,我们撰写的报告和分析也是如此。

例如,地震后不久,海地遭遇了非常强烈的风暴。通过了解短信的分布和普及情况,我们能够以每个手机信号塔为单位,向人们发送关于即将到来的风暴的预警,并指引他们前往当地最安全的建筑。

课程核心框架与案例重温

我们以讨论灾难的确切构成及其对人员、财产、地方经济和环境可能产生的影响开始了本课程。

我们学习了一个由四个阶段组成的循环式灾难管理框架:减灾、准备、响应、恢复

我们研究了2019年袭击莫桑比克的一对气旋所引发的灾难中,这些阶段是如何展开的,以及AI如何参与不同阶段。

灾难管理工作指导原则 🧭

之后,我们分享了一些在灾难管理领域工作的指导原则。这些原则可以作为起点,帮助您优化工作以产生积极影响,同时将危害降至最低。

以下是这些原则的再次总结:

在灾难管理工作中,遵循以下原则有助于最大化积极影响并最小化潜在危害:

  1. 开发通用技术:致力于开发稳健的通用技术,以帮助社区实现自助。这能最大化您的影响力。
  2. 支持低资源语言:通过翻译搜索等技术,更好地支持低资源语言的工作,将在包括灾难响应与恢复在内的许多用例中产生积极影响。
  3. 默认保护隐私:在您所有的工作中,默认采用保护隐私的数据实践。请记住,聚合数据和机器学习模型本身都可能放大隐私风险。
  4. 规避风险项目:避免涉及分析社交媒体数据的项目,或由压迫性政权资助的工作。
  5. 与社区互动:与受影响社区互动,以确保您的项目有最高的成功机会,并将造成伤害的可能性降至最低。在许多情况下,最好的互动社区是您已经是其中一员的社区。

如果您牢记这些指导原则,无论具体背景如何,您在帮助减少灾难影响的任何努力中都更有可能取得成功。

课程总结与展望 🌟

至此,您已经完成了这门关于AI与灾难管理的课程,以及整个“AI向善”专业课程。

我希望这对您来说是一次发人深省、鼓舞人心的旅程。我衷心希望您能从这些课程中领悟到:通过应用像在这些案例研究中使用的那样的框架,您可以对任何想要解决的问题采取深思熟虑且能减少危害的方法,并优化以产生积极影响。

这可以应用在灾难响应、环境发展、公共卫生,或您在现实世界中正在处理的任何类型的应用中。

我期待看到您未来的建树,并祝愿您在产生积极影响的道路上一帆风顺。


本节课总结:本节课中,我们一起回顾了以海地地震为案例的第3周学习内容,重温了灾难管理的四阶段框架及其在莫桑比克气旋案例中的应用,并系统总结了在利用AI进行灾难管理时应遵循的五项核心指导原则。最后,我们对整个课程进行了总结,鼓励大家应用所学框架,以审慎和减少危害的方式,在各自关注的领域创造积极影响。

posted @ 2026-03-26 08:16  布客飞龙II  阅读(1)  评论(0)    收藏  举报