检查点
Create machine learning models
/ 50
Use the model
/ 50
TensorFlow:Qwik Start
GSP637
概览
在本实验中,您将了解机器学习的基本“Hello World”应用,在此过程中,您不是使用 Java 或 C++ 等语言编写明确的规则,而是构建一个使用数据进行训练的系统,以推断用来确定数字之间关系的规则。
目标
在本实验中,您将学习如何完成以下操作:
- 在 Jupyter 笔记本中设置开发环境
- 设计机器学习模型
- 训练神经网络
- 测试模型
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
- 完成实验的时间 - 请注意,实验开始后无法暂停。
简介
请考虑以下问题:您要构建一个能够识别运动状态的健身跟踪系统。您也许能获取用户的移动速度,并尝试使用以下条件,根据该速度推断用户的运动状态:
- 您可以增加一个条件来检测跑步运动:
- 同样,您也可以再增加一个条件来检测骑车运动:
- 现在考虑一下,如果您还想检测高尔夫运动,该怎么做?您就不太确定该如何创建规则来确定这类运动了。
如果要编写一个帮助检测高尔夫运动的程序(用代码实现),您会发现这极其困难。
那怎么办呢?使用机器学习可以解决这个问题!
什么是机器学习?
在上一部分,您在尝试确定用户的健身运动时遇到了一个问题。要检测高尔夫这类运动,条件必然更加复杂,因而您必须编写更多代码,甚至殚精竭虑也难以实现。
参考下图,想一想按照传统方式是怎样构建应用的:
您一般会使用一种编程语言来表达规则。程序会按照这些规则来处理数据,然后提供答案。就运动检测而言,程序按照您编写的代码所定义的规则(用于确定运动类型)来处理数据(用户的移动速度),从而得出答案,也就是用于确定用户运动状态(步行、跑步、骑车等)的函数的返回值。
通过机器学习检测这类运动的过程与传统编程十分相似,但数据处理方式有所不同:
您无需尝试定义规则,也不需要通过编程语言来表达规则,只需将答案(通常称为标签)和数据一起提供给机器学习模型。然后,机器就会推断出确定答案与数据之间关系的规则。例如,在机器学习中,运动检测场景可能如下所示:
您只需收集大量数据,并为其添加标签,有效地说明“什么情况下是步行状态”“什么情况下是跑步状态”等等。然后,计算机就可以根据这些数据推断出规则,用以确定代表特定运动的独特模式。
除了能在这些场景下代替编程,机器学习还支持对高尔夫等新场景的判断,这在基于规则的传统编程方法下可能无法实现。
在传统编程中,代码会编译为一个二进制文件(通常称为程序)。在机器学习中,根据数据和标签创建的项目称为模型。
因此,如果回到此图表:
将上述结果视为一个模型,它在运行时的使用方式如下:
您要向模型传递一些数据,基于这些数据,模型会利用通过训练推断出的规则来生成预测,比如说“这样的数据看起来像是在步行”“那样的数据看起来像是在骑车”等等。
在本实验中,您将构建一个非常简单的“Hello World”模型,该模型由可用于任何机器学习场景的基础组件构成!
任务 1. 在 Vertex AI Workbench 中打开笔记本
-
在 Google Cloud 控制台的导航菜单中依次点击 Vertex AI > Workbench。
-
找到
实例,然后点击 Open JupyterLab(打开 JupyterLab)按钮。
Workbench 实例的 JupyterLab 界面会在新浏览器标签页中打开。
安装 TensorFlow 和其他软件包
-
在“启动器”菜单的其他下,选择终端。
-
检查是否已配置 Python 环境。复制以下命令并粘贴到终端中。
输出示例:
- 运行以下命令以安装 TensorFlow 软件包。
- 如需升级
pip3
,请在终端运行以下命令。
Pylint 是一款用于检查 Python 代码错误的工具,它可以突出显示 Python 源代码中的语法和格式问题。
- 运行以下命令以安装
pylint
软件包。
- 安装
requirements.txt
文件中所列的实验所需软件包:
现在,您的环境已设置完毕!
任务 2. 创建您的首个机器学习模型
看看下面几组数字。您能看出它们之间的关系吗?
X: |
-1 |
0 |
1 |
2 |
3 |
4 |
Y: |
-2 |
1 |
4 |
7 |
10 |
13 |
从左往右看,请注意 X 值依次增加了 1,对应的 Y 值依次增加了 3。因此,它们之间的关系应是 Y = 3X 再加/减某个值。
接下来再看,当 X 值为 0,对应的 Y 值为 1。
根据这两项观察结果,您可以确定它们之间的关系为 Y = 3X + 1。
这基本上就是使用代码来训练模型(称为神经网络),从而找出数据中的规律的方式。
如果您要使用数据来训练神经网络,只需向神经网络提供一组 X 值和一组 Y 值,它应该就能找出这些数值之间的关系。
创建新笔记本并导入库
-
点击 Workbench 左侧的 + 图标以打开新的启动器。
-
在“启动器”菜单的笔记本下,选择 Python3。
系统会显示一个新的 Jupyter 笔记本。如需详细了解如何使用 Jupyter 笔记本,请参阅 Jupyter 笔记本文档。
- 为 Cloud Logging 导入并配置
logging
和google-cloud-logging
。在第一个单元中,添加以下代码:
- 导入
tensorflow
以训练和评估模型。为了便于使用,将其命名为tf
。在第一个单元中添加以下代码。
- 导入
numpy
来解析数据,以进行调试。为了便于使用,将其命名为np
。在第一个单元中添加以下代码。
-
如需运行该单元,请点击运行按钮或按 Shift + Enter。
-
保存笔记本。依次点击文件 -> 保存。将该文件命名为
model.ipynb
,然后点击确定。
准备数据
接下来,您将准备要用来训练模型的数据。在本实验中,您将使用之前用过的 6 个 X 值和 6 个 Y 值:
X: |
-1 |
0 |
1 |
2 |
3 |
4 |
Y: |
-2 |
1 |
4 |
7 |
10 |
13 |
可以看出,X 值和 Y 值之间的关系是 Y = 3X + 1,因此当 X = 1 时 Y = 4,以此类推。
名为 numpy
的 python 库提供了许多数组类型的数据结构,这些结构实际上是提供数据的标准方式。如要使用这些结构,可以使用 np.array([])
将相关值指定为 numpy
中的数组
- 在第二个单元中,添加以下代码:
设计模型
在此部分中,您将使用 TensorFlow 设计模型。
您将使用一种称为“神经网络”的机器学习算法来训练模型。您将创建最简单的神经网络,该网络的结构只有 1 层,其中有 1 个神经元。该神经网络一次只能输入一个值,因此输入形状必须为 [1]。
- 在第二个单元中,添加以下代码:
编译模型
接下来,您将编写代码来编译神经网络。编写代码时,必须指定 2 个函数:一个 loss
和一个 optimizer
。
如果您学习过很多与机器学习相关的数学知识,一般来说在这里可以用到,不过,tf.keras
已经封装了相关的数学计算函数。
-
根据先前的观察,您知道了这些数字之间的关系为
Y = 3X + 1
。 -
当计算机尝试学习这种关系时,先猜测的关系可能是
Y = 10X + 10
。loss
函数会将猜测的答案与已知的正确答案进行比较,并衡量猜测的正确度。
tf.keras
中不同类型的 loss 函数,请参阅“模块:tf.keras.losses”文档。- 接下来,模型会使用 optimizer 函数再次进行猜测。该函数会根据 loss 函数的结果,尝试最大限度降低损失。此时,模型可能会得出类似于
Y = 5X + 5
的答案。虽然这仍不正确,但更接近正确的结果了,也就是说,损失降低了。
tf.keras
中不同类型的 optimizer 函数,请参阅“模块:tf.keras.optimizers”文档。- 模型会根据您指定的周期数,重复上述过程。
- 在第二个单元中添加以下代码:
在上面的代码段中,您告诉模型 loss 函数使用 mean_squared_error
,optimizer 函数使用 stochastic gradient descent (sgd)
。您目前还不需要理解这些函数的数学原理,但您会发现它们能达到目的!
训练神经网络
为了训练神经网络来“学习”X 值和 Y 值之间的关系,您将使用 model.fit
。
此函数将通过循环来训练模型,在一次循环中,模型将进行猜测,再衡量猜测结果的准确度(即损失),然后使用优化器 (optimizer) 再进行一次猜测,以此类推。模型会根据您指定的周期数(本实验中为 500),重复执行这一过程。
- 在第二个单元中添加以下代码:
根据上面的代码,model.fit
将对模型进行固定周期数的训练。
model.fit
,请参阅“tf.keras.Model”文档中的“fit”部分。现在,您的文件应如下所示(请注意,这包括两个单元中的代码):
运行代码
您的脚本已准备就绪!运行脚本,看看会发生什么情况。
-
点击运行按钮或按 Shift + Enter,以运行笔记本中的第二个单元。
-
查看输出。请注意,该脚本会输出每个周期的损失。您的输出可能与下面显示的内容略有不同。
e-
的数字是以科学记数法显示的,其指数为负数。滚动浏览各个周期,您会看到前几个周期的损失很大,但是在逐步减小。例如:
随着训练的进行,损失变得非常小:
到训练完成时,损失变得极其小,这表明我们的模型能够很准确地推断数字之间的关系:
您可能不需要训练完 500 个周期,可以尝试设置不同的值。从这个例子来看,仅过了 50 个周期,损失就变得非常小了,所以这可能已经足够了!
点击“检查我的进度”以验证是否完成了以下目标:
使用模型
现在,您的模型已经完成学习 X 值和 Y 值之间关系的训练。
您可以使用 model.predict
方法,针对模型之前在训练期间未曾遇到过的 X 值预测对应的 Y 值。例如,如果 X = 10,您认为 Y 值会是多少?
- 在第三个单元中添加以下代码以进行预测:
cloud_logger
,以便生成可以检查进度的 Cloud 日志。-
按 Ctrl + s 或依次点击文件 -> 保存,保存笔记本。
-
点击运行按钮或按 Shift + Enter,运行第三个单元。
Y 值将在训练日志(周期记录)之后列出。
输出示例:
您可能认为 Y = 31,对吧?但结果略大一些 (31.005917)。您觉得这是为什么?
答案:神经网络处理的是概率问题。它计算出 X 和 Y 之间的关系极有可能是 Y = 3X + 1,但由于只有 6 个数据点,无法确定这种关系是否准确。因此,针对 X 为 10 计算出的结果会很接近 31,但不一定是 31。
在使用神经网络时,您会发现这种模式经常会出现。您要处理的几乎都是概率问题而非确定性问题,您需要编写一些代码,根据概率来确定结果,执行分类任务时更是如此。
点击“检查我的进度”以验证是否完成了以下目标:
恭喜!
恭喜!在本实验中,您使用 TensorFlow 创建、训练并测试了自己的机器学习模型。
后续步骤/了解详情
- 查看有关 Vertex AI 的所有须知信息。
- 利用 AI 探索有趣事物!请访问 Google 实验。
- 详细了解 TensorFlow。
- 使用 Google 机器学习预测对阵结果
- BigQuery ML 使用入门
- 使用 BigQuery ML 预测模型来预测出租车费
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2024 年 9 月 16 日
上次测试实验的时间:2024 年 9 月 16 日
版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。