DLAI 商品人工智能笔记(二)
项目利益相关者 👥
这里的利益相关者包括与市政府合作的公共卫生专业人员、阿加塔尔的市民,以及维护传感器网络的人员。
数据可用性 💾
你可以访问一个丰富的历史传感器测量数据集,用于开发你的解决方案。数据看起来非常适合用于解决估算缺失传感器读数,以及对传感器之间区域进行估算的问题。
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:空气质量项目设计阶段检查点 🧭
在本节课中,我们将回顾波哥大空气质量项目设计阶段的成果,并明确进入实施阶段前需要确认的关键问题。
恭喜你完成了波哥大空气质量项目的设计阶段。在此阶段,你完成了解决方案的原型设计,考虑了如何处理数据中关于隐私或个人信息的任何问题(在本项目中应极少),并设计了用户体验。做得很好。
此时,在进入实施阶段之前,你应该能够回答以下问题。
以下是进入下一阶段前需要明确的四个核心问题:
-
你如何解决数据中的不平衡、偏见、隐私或其他问题?
-
你将实现何种模型,以及如何衡量其性能?
-
你的设计将如何解决问题?即,它如何解决?
-
最终用户将如何与你的系统交互?
数据隐私与潜在风险分析
上一节我们列出了设计检查点,本节中我们来看看如何具体分析数据风险。
如前所述,你始终需要对数据进行彻底分析,关注数据隐私、安全、偏见或其他问题。对于这个项目,你使用的是来自科学仪器的公开可用数据,因此在保护个人信息方面没有重大顾虑。
然而,请记住,数据是公开的这一事实并不意味着它不会造成伤害。你正在开发的应用旨在成为波哥大市更广泛的空气质量公共卫生倡议的一部分,因此你需要确保你的产品至少不会因提供错误或令人困惑的信息而造成伤害。
我认为你可以考虑此信息可能被滥用的其他潜在情况,并与利益相关者讨论。例如,如果你能更准确地估算出污染的突然爆发,这可能与非法制造、非法焚烧或其他犯罪活动有关。这可能会吸引监控用例,不仅是对污染物的监控,还有对犯罪的监控。
如果这些信息随后被用于起诉犯罪或识别罪犯,那么社区可能会因此失去对这些传感器的信任,并对信任传感器数据甚至未来安装更多传感器产生抵触。
因此,对于任何用例,即使你一开始就知道它不包含个人信息,你也应该与利益相关者一起花时间思考潜在风险,以及通过机器学习提供更丰富体验可能带来的潜在负面影响。
模型设计与性能评估
在分析了潜在风险后,我们来看看为解决核心问题所设计的模型方案。
通过这里的实验,你为估算传感器缺失值和估算传感器之间的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向善”框架在本项目中的应用进行梳理。
系统部署前的关键评估 🔍
目前,您已经完成了空气质量监测系统的探索、设计和实施工作。在将系统部署到现实世界之前,有几个关键问题需要解决。
您需要能够肯定地回答以下两个问题:
-
您的模型性能是否可接受?
-
最终用户能否成功地与您的系统进行交互?
评估模型性能 📊
对于本项目中的两个模型——估算缺失值的模型和估算传感器之间污染的模型——在估算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图标,然后选择笔记本文件。
笔记本的工作方式是,你需要从顶部开始,按顺序运行每一个代码单元。后续的每个代码单元都能够基于你在前一个单元中执行的操作进行构建。
如果你熟悉编程但不熟悉笔记本,可以将其理解为一种分步执行应用程序的方式,而不是一次性全部运行。
运行代码单元的方法是:
-
首先选中该单元。
-
然后点击顶部的“运行”按钮。
-
你也可以使用键盘快捷键 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项目开发的通用框架。该框架包含四个阶段:探索、设计、实现与评估。我们将以风力发电预测项目为例,逐步讲解每个阶段的核心任务与注意事项。
项目框架概述
在开始具体项目前,我们先回顾本专业课程第一课中介绍的项目框架。该框架将项目开发分为四个阶段:探索、设计、实现与评估。每个阶段都有其特定目标与任务。
以下是框架的四个阶段:
-
探索阶段:联系利益相关者,定义待解决问题,评估可行性,并判断AI是否能为核心解决方案增添价值。
-
设计阶段:构建解决方案原型,制定模型策略,深入调查数据,并思考如何确保数据隐私及用户如何与系统交互。
-
实现阶段:将模型“产品化”,即把测试环境中的设计部署到生产环境,并与用户界面集成,同时测试系统性能与可用性。
-
评估阶段:评估系统影响,沟通研究发现,并决定后续步骤。
这个框架并非严格的线性流程。在后续阶段,你可能会发现需要返回之前的阶段进行迭代优化。
阶段详解与迭代过程
上一节我们介绍了框架的四个阶段,本节中我们来看看各阶段的具体工作内容以及它们之间如何迭代。
探索阶段
探索阶段是项目的起点。在此阶段,你需要与利益相关者沟通,明确要解决的核心问题,并评估使用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%数据所跨越的范围,而延伸出的“须”则显示了数据的完整范围。
到目前为止,在数据探索中我注意到,不同风机之间,各种传感器测量值和功率输出的分布似乎具有高度的一致性。
更多推荐


所有评论(0)