Azure AI 基础知识

- 30 mins

AI基础知识

AI简介

什么是 AI?

简而言之,AI 就是一种模仿人类行为和能力的软件。 关键工作负载包括:

了解机器学习

机器学习是大部分 AI 解决方案的基础。 自 20 世纪 50 年代以来,研究人员(通常称为数据科学家)一直在研究不同的 AI 方法。 大多数现代 AI 应用程序都起源于机器学习,这是一个结合了计算机科学和数学的 AI 分支。

首先,让我们看看使用机器学习来解决难题的现实示例。

在保护脆弱的环境的同时最大程度提高粮食产量方面,可持续农耕技术至关重要。 The Yield 是一家设在澳大利亚的农业技术公司,该公司使用传感器、数据和机器学习来帮助农民做出与天气、土壤和农作物情况相关的明智决策。

机器学习的工作方式

那么机器如何学习?

答案是从数据中学习。 在当今世界,我们在日常生活中会创建大量数据。 从我们发送的短信、电子邮件和社交媒体帖子,到我们用手机拍摄的照片和视频,我们产生了大量信息。 我们的房屋、汽车、城市、公共交通基础设施和工厂中的数百万个传感器也在创建更多数据。

数据科学家可使用所有这些数据来训练机器学习模型,这些模型可以根据它们在数据中找到的关系进行预测和推断。

机器学习模型尝试捕获数据之间的关系。 例如,假设一个环境保护组织需要志愿者使用手机应用来对不同种类的野花进行识别和分类。 以下动画展示了如何使用机器学习来实现此方案。

  1. 一个由植物学家和科学家组成的团队收集有关野花样本的数据。
  2. 团队给样本标上正确的物种种类。
  3. 使用算法对标记的数据进行处理,该算法可以找出样本特征与标记的物种之间的关系。
  4. 该算法的结果内嵌在模型中。
  5. 志愿者发现新样本后,该模型可以正确识别物种标记。

AI 方法已经发展到可以完成复杂得多的任务。 这些复杂的模型构成了 AI 功能的基础。

Microsoft Azure 中的机器学习

Microsoft Azure 提供 Azure 机器学习服务,这是一个基于云的平台,可用于创建、管理和发布机器学习模型。 Azure 机器学习工作室提供了多种创作体验,例如:

了解计算机视觉

计算机视觉是 AI 的一个领域,它负责处理视觉对象。 让我们了解一下计算机视觉带来的一些可能性。

Seeing AI 应用是一个很好的计算机视觉示例。 Seeing AI 应用专门面向盲人和弱视群体,它利用 AI 的力量来打开视觉世界,描述附近的人、文字和物体。

计算机视觉模型和功能

大多数计算机视觉解决方案都基于机器学习模型,这些模型可应用于来自相机、视频或图像的视觉输入。 下表描述了常见的计算机视觉任务。

任务 说明
图像分类 图像分类涉及训练机器学习模型,使其根据图像内容对图像进行分类。 例如,你可以在交通监控解决方案中使用图像分类模型,根据图像所包含的车辆类型(例如出租车、公共汽车、骑自行车的人等)对图像进行分类。
对象检测 对象检测机器学习模型经过训练,可以对图像中的单个对象进行分类,并使用边界框确定其位置。 例如,交通监控解决方案可使用对象检测来识别不同类别车辆的位置。
语义分割 语义分割是一种高级机器学习技术,其中图像中的各个像素根据其所属的对象进行分类。 例如,交通监控解决方案可能会在交通图像上覆盖“蒙版”图层,以使用特定颜色突出显示不同的车辆。
图像分析 你可以创建结合使用机器学习模型和高级图像分析技术从图像中提取信息的解决方案,包括可以帮助对图像进行归类的“标签”,甚至可以归纳总结图像中所示场景的描述性标题。
人脸检测、分析和识别 人脸检测是对象检测的一种特殊形式,可以在图像中找出人脸。 这可以与分类和面部几何分析技术相结合,用于根据他们的面部特征来识别个人。
光学字符识别 (OCR) 光学字符识别是一种用于检测和读取图像中文本的技术。 你可以使用 OCR 读取照片中的文字(例如:路标或店面),或从扫描的文档中提取信息,例如字母、发票或表格。

Microsoft Azure 中的计算机视觉服务

可使用 Microsoft 的 Azure AI 视觉来开发计算机视觉解决方案。 可在 Azure 视觉工作室和其他编程语言中使用和测试这些服务功能。 Azure AI 视觉的一些功能包括:

了解自然语言处理

自然语言处理 (NLP) 是 AI 的一个领域,它负责创建能够理解书面和口头语言的软件。

NLP 使你能够创建可以执行以下操作的软件:

例如,星舰指挥官是一款由 Human Interact 开发的虚拟现实 (VR) 游戏,故事发生在科幻世界中。 该游戏使用自然语言处理让玩家能够控制对白,并与游戏中的人物和星舰系统交互。

Microsoft Azure 中的自然语言处理

可以使用 Microsoft 的 Azure AI 语言构建自然语言处理解决方案。Azure AI 语言的一些功能包括理解和分析文本、训练能够理解语音或基于文本的命令的对话语言模型以及构建智能应用程序。

Microsoft 的 Azure AI 语音是另一项可用于构建自然语言处理解决方案的服务。 Azure AI 语音功能包括语音识别和合成、实时翻译、对话听录等。

你可以在 Azure Language Studio 中查看 Azure AI 语言功能,在 Azure Speech Studio 中查看 Azure AI 语音功能。 这些服务功能可在工作室和其他编程语言中使用和测试。

了解文档智能和知识挖掘

文档智能是 AI 的一个方面,用于管理、处理和使用在表单和文档中发现的大量各类数据。 借助文档智能,能够创建可自动处理合同、运行状况文档和财务表单等的软件

Microsoft Azure 中的文档智能

可使用 Microsoft 的 Azure AI 文档智能生成解决方案,来管理和加快从已扫描的文档中收集数据的操作。 Azure AI 文档智能的功能可帮助自动执行应用程序和工作流中的文档处理、增强数据驱动的策略并丰富文档搜索功能。 可使用预生成模型为发票、收据、医疗保险卡和税务表单等添加智能文档处理。 还可使用 Azure AI 文档智能创建具有自己标记的数据集的自定义模型。 可在文档智能工作室和其他编程语言中使用和测试这些服务功能。

知识挖掘

知识挖掘是一个术语,用于描述涉及从大量非结构化数据中提取信息来创建可搜索知识存储的解决方案。

Microsoft Azure 中的知识挖掘

其中一个 Microsoft 知识挖掘解决方案是 Azure AI 搜索,它是一种专用的企业搜索解决方案,具有用于生成索引的工具。 然后,这些索引仅可在内部使用,或在面向公众的 Internet 资产上启用可搜索内容。 Azure AI 搜索可以利用 Azure AI 服务的内置 AI 功能(例如图像处理、文档智能和自然语言处理)来提取数据。 通过产品的 AI 功能,可以对以前不可搜索的文档编制索引,以及快速从大量数据中提取和显示见解。

了解生成式 AI

生成式 AI 描述 AI 中用于创建原创内容的一类功能。 人员通常与聊天应用程序中内置的生成式 AI 交互。 生成式 AI 应用程序接受自然语言输入,并以自然语言、图像、代码和音频等各种格式返回适当的回复。

Microsoft Azure 中的生成式 AI

在 Microsoft Azure 中,可以使用 Azure OpenAI 服务生成生成式 AI 解决方案。 Azure OpenAI 服务是 Microsoft 的云解决方案,用于部署、自定义和托管生成式 AI 模型。 它将 OpenAI 最前沿的模型和 API 与 Azure 云平台的安全性和可伸缩性结合在一起。

Azure OpenAI 支持许多可满足不同需求的基础模型选项。 可在 Azure OpenAI Studio 和其他编程语言中使用和测试这些服务功能。 可以使用 Azure OpenAI Studio 用户界面来管理、开发和自定义生成式 AI 模型。

azure-openai-studio

AI 的挑战和风险

人工智能是一种强大的工具,可以极大地造福世界。 但是,像任何工具一样,必须负责任地使用它。

下表显示了 AI 应用程序开发人员面临的一些潜在挑战和风险。

挑战或风险 示例
偏差可能会影响结果 贷款审批模型因训练数据中的偏差而产生性别歧视
错误可能会造成伤害 自动驾驶车辆遇到系统故障并引发碰撞
数据可能被暴露 医疗诊断机器人使用敏感患者数据进行训练,这些数据存储不安全
解决方案可能并不适用于所有人 家庭自动化助手不为视觉障碍用户提供音频输出
用户必须信任复杂系统 一个基于 AI 的金融服务工具提供投资建议。这些建议的基础是什么?
谁对 AI 驱动的决策负责? 一个无辜的人因为基于面部识别的证据而被判有罪。 谁该为此负责?

了解负责任 AI

在 Microsoft,AI 软件的开发遵循六项原则,旨在确保 AI 应用程序能为棘手的问题提供出色的解决方案,而不产生任何意外的负面影响。

公平

AI 系统应该公平对待所有人。 例如,假设你创建了一个机器学习模型来为银行的贷款审批应用程序提供支持。 模型应该毫无偏见地预测贷款是否应批准或拒绝。 这种偏见可能基于性别、种族或其他导致特定申请人群体出现不公平优势或劣势的因素。

Azure 机器学习能够解释模型和量化数据的每个特性影响模型预测的程度。 此功能可帮助数据科学家和开发人员识别并减少模型中的偏见。

另一个示例是 Microsoft 通过人脸服务实现负责任的 AI,它停用了用于推断情绪状态和标识属性的人脸识别功能。 如果误用,这些功能可能会使用户受到成见、歧视或服务遭受不公平拒绝。

可靠和安全

AI 系统应可靠且安全地运行。 例如,想象一个基于 AI 的自动驾驶软件系统,或是一个诊断患者症状并推荐处方的机器学习模型。 这些系统一旦出现不可靠性,就可能会给生命安全带来重大风险。

基于 AI 的软件应用程序开发必须经过严格的测试和部署管理,以在发布前确保它们能达到预期。

隐私和安全

AI 系统应该保护并尊重隐私。 AI 系统所基于的机器学习模型依赖于大量数据,这些数据可能包含必须保密的个人详细信息。 即使在模型训练完成、系统投入生产后,也需要考虑隐私和安全性。 由于系统使用新数据进行预测或执行操作,因此数据和根据数据作出的决策都可能受到隐私或安全问题的约束。

包容

AI 系统应该成为人们的有力助手,并与人互动。 AI 应不分身体能力、性别、性取向、种族或其他因素,造福社会各个阶层。

透明度

AI 系统应该是可理解的。 应让用户能充分了解系统的用途、工作方式以及局限性。

问责

应有相关人员对 AI 系统负责。 设计和开发基于 AI 的解决方案的人员应在管理和组织原则的框架内工作,以确保解决方案符合定义明确的道德和法律标准。

其他资源

若要详细了解如何将负责任的 AI 原则应用到实践中,请参阅 https://www.microsoft.com/ai/responsible-ai-resources。 若要查看这些策略执行情况,可以阅读 Microsoft 用于构建负责任的 AI 系统的框架

总结

借助人工智能,可以创建功能强大的解决方案,以应对多种类型的问题。 AI 系统可以展现出人类特征,分析它们周围的世界,做出预测或推断,并以我们在不久以前只能想象的方式采取措施。

伴随这项强大功能而来的是责任。 作为 AI 解决方案开发人员,我们必须遵循一定的原则,确保让每个人都受益于 AI,而不对任何个人或社会特定人群造成不便。

机器学习基础知识

介绍

机器学习在很多方面都是数据科学和软件工程这两个学科的交叉部分。 机器学习的目标是使用数据创建可合并到软件应用程序或服务中的预测模型。 要实现这一目标,需要数据科学家与软件开发人员之间进行协作,前者负责在使用数据训练机器学习模型之前探索和准备数据,后者负责将模型集成到应用程序中,用于预测新的数据值(这一过程称为推理)。

在本模块中,你将探索机器学习所依据的一些核心概念,了解如何识别不同类型的机器学习模型,并检查机器学习模型的训练和评估方式。 最后,你将了解如何使用 Microsoft Azure 机器学习来训练和部署机器学习模型,而无需编写任何代码。

机器学习基于数学和统计技术,本模块对其中一些技术进行了简要描述。 如果你不是数学专家,也不用担心! 本模块的目标是帮助你对机器学习的工作原理有一个直观的认识 - 我们会将数学知识保持在理解核心概念所需的最低水平。

什么是机器学习?

机器学习起源于数据的统计和数学建模。 机器学习的基本理念是使用过去观测到的数据来预测未知的结果或值。 例如:

机器学习作为一种函数

由于机器学习基于数学和统计学,因此通常会使用数学术语来思考机器学习模型。 从根本上讲,机器学习模型是一种软件应用程序,它封装一个函数用于根据一个或多个输入值计算输出值。 定义该函数的过程称为训练。 定义函数后,可以使用它在称为“推理”的过程中预测新值。

让我们探讨一下训练和推理所涉及的步骤。

machine-learning

训练数据由过去的观测值组成。 在大多数情况下,观测值包括观测到的事物的属性或特征,以及要训练模型来预测的事物的已知值(称为标签)。 在数学术语中,你经常会看到使用速记变量名称 x 引用的特征,以及使用 y 引用的标签。 通常,观测值由多个特征值组成,因此 x 实际上是一个向量(包含多个值的数组),如下所示:[x1,x2,x3,…]。 为了澄清这一点,让我们分析前面所述的示例:

将对数据应用某种算法,以尝试确定特征与标签之间的关系,然后泛化这种关系,以便针对 x 执行计算来计算 y。 使用的具体算法取决于要解决的预测问题的类型(稍后会详细介绍),但基本原则是尝试将数据拟合到一个函数,其中的特征值可用于计算标签。

算法的结果是一个模型,该模型将算法派生的计算封装为函数 - 我们称之为 f。 采用数学表示法: y = f(x)

完成训练阶段后,训练的模型可用于推理。 模型本质上是一个软件程序,可以封装训练过程生成的函数。 你可以输入一组特征值,并接收相应标签的预测结果作为输出。 由于模型的输出是函数计算的预测值而不是观测值,因此你经常会看到函数的输出显示为 ŷ(戏称为“y-hat”)。

机器学习类型

机器学习有多种类型,必须根据尝试预测的内容应用适当的类型。 下图显示了常见机器学习类型的细目。

machine-learning-types

监督式机器学习

监督式机器学习是机器学习算法的一个通用术语,其中训练数据包括特征值和已知标签值。 监督式机器学习用于通过确定过去观测值中特征与标签之间的关系来训练模型,以便将来可以预测特征的未知标签。

回归

回归是监督式机器学习的一种形式,其中模型预测的标签是数值。 例如:

分类

分类是监督式机器学习的一种形式,其中标签表示一个分类或类。 有两种常见的分类场景。

二元分类

在二元分类中,标签确定观察到的项是(或不是)特定类的实例。 换句话说,二元分类模型预测两个互斥结果中的一个。 例如:

在所有这些示例中,模型为单个可能类预测二进制 true/false 或积极/消极预测。

多类分类

多类分类扩展了二元分类,以预测表示多个可能类之一的标签。 例如,

在涉及一组已知多个类的场景中,多类分类用于预测互斥标签。 例如,一只企鹅不能同时是巴布亚企鹅和阿德利企鹅。 但是,还可以使用一些算法来训练多标签分类模型,其中对于单个观测值可能有多个有效标签。 例如,一部电影可能同时被归类为科幻和喜剧。

非监督式机器学习

非监督式机器学习涉及使用仅包含特征值且没有任何已知标签的数据来训练模型。 非监督式机器学习算法确定训练数据中观测值的特征之间的关系。

群集

非监督式机器学习最常见的形式是聚类分析。 聚类分析算法基于观测值的特征识别观测值之间的相似性,并将它们分组到离散群集中。 例如:

在某些方面,聚类分析类似于多类分类;因为它将观侧值分类为离散组。 区别在于,使用分类时,你已经知道训练数据中的观测值所属的类;因此,该算法的工作原理是确定特征与已知分类标签之间的关系。 在聚类分析中,没有以前已知的分类标签,算法完全基于特征的相似性对数据观测值进行分组。

在某些情况下,聚类分析用于确定在训练分类模型之前存在的类集。 例如,可以使用聚类分析将客户细分到多个组,然后对这些组进行分析,以识别不同的客户类并对其进行分类(高价值 - 低交易量、经常购买小额产品等)。 然后,可以使用分类来标记聚类分析结果中的观测值,并使用标记的数据来训练预测新客户可能属于哪个客户类别的分类模型。

回归

回归模型经过训练,基于包括特征和已知标签的训练数据来预测数值标签值。 训练回归模型(或者实际上,任何监督式机器学习模型)的过程涉及多次迭代,在这些迭代中,你使用适当的算法(通常带有一些参数化设置)来训练模型,评估模型的预测性能,并通过使用不同的算法和参数重复训练过程来优化模型,直到达到可接受的预测准确性级别。

supervised-training

此图显示了监督式机器学习模型的训练过程的四个关键元素:

每次训练、验证和评估迭代后,可以使用不同的算法和参数重复该过程,直到达到可接受的评估指标。

示例 - 回归

让我们通过一个简化的示例来探索回归,在该示例中,我们将训练一个模型以基于单个特征值 (x) 预测数值标签 (y)。 大多数实际场景涉及多个特征值,这增加了一些复杂性;但原理是相同的。

对于示例,让我们继续使用之前讨论过的冰淇淋销售场景。 对于特征,我们将考虑温度(假设该值是给定日期的最高温度),我们希望训练模型以预测的标签是当天售出的冰淇淋数量。 我们将从一些历史数据开始,其中包括每日温度 (x) 和冰淇淋销售额 (y) 的记录:

温度 (x) 冰淇淋销售额 (y)
51 1
52 0
67 14
65 14
70 23
69 20
72 23
75 26
73 22
81 30
78 26
83 36

训练回归模型

首先,我们将拆分数据,并使用其中一部分数据来训练模型。 下面是训练数据集:

温度 (x) 冰淇淋销售额 (y)
51 1
65 14
69 20
72 23
75 26
81 30

若要深入了解这些 x 和 y 值如何相互关联,我们可以将它们绘制为沿两个轴的坐标,如下所示:

现在,我们已准备好将算法应用于训练数据,并将其拟合到将运算应用于 x 以计算 y 的函数。 其中一种算法是线性回归,它的工作原理是派生一个函数,该函数通过 x 和 y 值的交点生成一条直线,同时最小化直线和绘制点之间的平均距离,如下所示:

这条直线是函数的可视表示形式,其中直线的斜率描述了如何针对给定的 x 值计算 y 值。 这条直线在 50 处与 x 轴相交,因此当 x 为 50 时,y 为 0。 从绘图中的轴标记可以看出,直线倾斜,使得沿 x 轴每增加 5,沿 y 轴就会增加 5;因此当 x 为 55 时,y 为 5;当 x 为60时,y 为 10,依此类推。 若要针对给定的 x 值计算 y 值,函数只需减去 50;换句话说,函数可以如下表示:

f(x) = x-50

可以使用此函数来预测任何给定温度下一天售出的冰淇淋数量。 例如,假设天气预报告诉我们,明天将是 77 度。 我们可以应用模型来计算 77-50,并预测我们明天将销售 27 个冰淇淋。 但是我们的模型有多准确呢?

评估回归模型

为了验证模型并评估其预测效果,我们保留了一些已知标签 (y) 值的数据。 下面是我们保留的数据:

温度 (x) 冰淇淋销售额 (y)
52 0
67 14
70 23
73 22
78 26
83 36

可以使用模型根据特征 (x) 值来预测此数据集中每个观测值的标签;然后,将预测的标签 (ŷ) 与已知的实际标签值 (y) 进行比较。

使用前面训练的模型(该模型封装函数 f(x) = x-50),可生成以下预测:

温度 (x) 实际销售额 (y) 预测销售额 (ŷ)
52 0 2
67 14 17
70 23 20
73 22 23
78 26 28
83 36 33

我们可以针对特征值绘制预测标签和实际标签,如下所示:

预测标签由模型计算,因此它们位于函数线上,但是由函数计算的 ŷ 值与来自验证数据集的实际 y 值之间存在一些差异;这在绘图上表示为 ŷ 值和 y 值之间的线,显示预测值与实际值的差距。

回归评估指标

根据预测值和实际值之间的差异,可以计算用于评估回归模型的一些常见指标。

平均绝对误差 (MAE)

此示例中的方差指示每个预测错误的冰淇淋数量。 预测是高于还是低于实际值无关紧要(例如,-3 和 +3 都表示方差为 3)。 此指标被称为每个预测的绝对误差,并且可以被总结为整个验证集的平均绝对误差 (MAE)。

在冰淇淋示例中,绝对误差(2、3、3、1、2 和 3)的平均值为 2.33。

均方误差 (MSE)

均方误差有助于考虑误差的幅度,但是因为它对误差值进行平方,所以得到的指标不再代表标签测量的量。 换句话说,我们可以说模型的 MSE 为 6,但这并不能衡量它在被错误预测的冰淇淋数量方面的准确性;6 只是一个数字分数,表示验证预测中的错误级别。

如果要根据冰淇淋的数量来衡量误差,我们需要计算 MSE 的平方根;不出所料,这生成了一个名为均方根误差的指标。 在本例中,为 √6,即 2.45(冰淇淋)。

决定系数 (R2)

到目前为止,所有指标都比较预测值与实际值之间的差异,以评估模型。 然而,在现实中,模型考虑到了冰淇淋日销售额中的一些自然随机差异。 在线性回归模型中,训练算法拟合一条直线,使函数和已知标签值之间的平均方差最小化。 决定系数(通常称为 R2 或 R 平方)是一种指标,用于测量验证结果中可由模型解释的方差比例,而不是验证数据的某些异常方面(例如,由于当地节日,某一天的冰淇淋销售量非常不寻常)。

R2 的计算比前面的指标更复杂。 它将预测标签和实际标签之间的平方差之和与实际标签值和实际标签值的平均值之间的平方差之和进行比较,如下所示:

R2 = 1- ∑(y-ŷ)2 ÷ ∑(y-ȳ)2

如果这看起来很复杂,不要太担心;大多数机器学习工具都可以为你计算指标。 重要的一点是,结果是一个介于 0 和 1 之间的值,该值描述了模型所解释的方差的比例。 简单来说,此值越接近 1,模型就越拟合验证数据。 对于冰淇淋回归模型,根据验证数据计算的 R2 为 0.95。

迭代训练

上述指标通常用于评估回归模型。 在大多数实际场景中,数据科学家将使用迭代过程来重复训练和评估模型,包括:

在多次迭代后,选择产生特定场景可接受的最佳评估指标的模型。

二元分类

分类与回归一样,是一种受监督的机器学习技术,因此遵循相同的适用于训练、验证和评估模型的迭代过程。 用于训练分类模型的算法不是像回归模型那样计算数值,而是计算类分配的概率值以及用于评估模型性能的评估指标,将预测类与实际类进行比较。

二元分类算法用于训练模型,该模型可预测单个类的两个可能标签之一。 本质上是预测 true 或 false。 在大多数实际方案中,用于训练和验证模型的数据观测值包含多个特征 (x) 值和一个为 1 或 0 的 y 值。

示例 - 二元分类

为了了解二元分类的工作原理,我们来看一个简化的示例,该示例使用单个特征 (x) 来预测标签 y 是 1 还是 0。 在此示例中,我们将使用患者的血糖水平来预测患者是否患有糖尿病。 下面是用于训练模型的数据:

血糖 (x) 糖尿病? (y)
67 0
103 1
114 1
72 0
116 1
65 0

训练二元分类模型

为了训练模型,我们将使用一种算法将训练数据拟合为一个函数,该函数计算类标签为 true(换句话说,患者有糖尿病)的概率。 概率以某个 0.0 到 1.0 之间的值来度量,使得所有可能的类的总概率为 1.0。 例如,如果一名患者患糖尿病的概率为 0.7,那么该患者未患糖尿病的相应概率为 0.3。

有许多可用于二元分类的算法,例如逻辑回归,它会导出值在 0.0 到 1.0 之间的 sigmoid(S 形)函数,如下所示:

尽管名称如此,但在机器学习中,逻辑回归用于分类,而不是用于回归。 重点是它生成的函数的逻辑性质,该函数描述了下限值和上限值(用于二元分类时为 0.0 和 1.0)之间的 S 形曲线。

该算法生成的函数描述了 x 为给定值时 y 为 true (y=1) 的概率。 从数学上来说,可以这样表达该函数:

f(x) = P(y=1 x)

就训练数据中六个观测值中的三个来说,我们知道 y 肯定为 true,因此就这些观测值来说,y=1 的概率为 1.0;就其他三个来说,我们知道 y 肯定为 false,因此 y=1 的概率为 0.0。 S 形曲线描绘了概率分布情况,因此在曲线上标出 x 的值就可以确定 y 为 1 的相应概率。

该图还包含一条水平线,指示基于此函数的模型将预测 true (1) 或 false (0) 的阈值。 阈值位于 y (P(y) = 0.5) 的中间点。 对于此点或高于此点的任何值,模型会预测 true (1);而对于低于此点的任何值,模型会预测 false (0)。 例如,对于血糖水平为 90 的患者,该函数将得出的概率值为 0.9。 由于 0.9 高于阈值 0.5,因此模型会预测 true (1) - 换句话说,预测患者患有糖尿病。

评估二元分类模型

与回归一样,在训练二元分类模型时,我们会保留一个随机数据子集来验证训练后的模型。 假设我们保留以下数据来验证糖尿病分类器:

血糖 (x) 糖尿病? (y)
66 0
107 1
112 1
71 0
87 1
89 1

将我们之前派生的逻辑函数应用于 x 值会生成下图。

模型为每个观测值生成预测标签 1 或 0,具体取决于函数计算出的概率是高于阈值还是低于阈值。 然后,我们可以将预测的类标签 (ŷ) 与实际的类标签 (y) 进行比较,如下所示:

血糖 (x) 实际的糖尿病诊断 (y) 预测的糖尿病诊断 (ŷ)
66 0 0
107 1 1
112 1 1
71 0 0
87 1 0
89 1 1

二元分类评估指标

计算二元分类模型的评估指标的第一步通常是为每个可能的类标签创建正确预测和错误预测的数量矩阵:

此可视化效果称为混淆矩阵,它显示预测总计,其中:

混淆矩阵的排列是这样的:正确 (true) 预测显示在从左上角到右下角的对角线上。 通常情况下,颜色强度用于指示每个单元格中的预测数量,因此快速浏览一下预测良好的模型应该就会看出深阴影对角线趋势。

精确度

可以根据混淆矩阵计算出的最简单指标是准确度 - 模型正确预测的比例。

准确度的计算方式如下:

(TN+TP) ÷ (TN+FN+FP+TP)

在我们的糖尿病示例中,计算如下:

(2+3) ÷ (2+1+0+3)
= 5 ÷ 6
= 0.83

因此,就我们的验证数据来说,糖尿病分类模型在 83% 的情况下产生正确的预测。

准确度一开始似乎是评估模型的一个很好的指标,但请考虑这一点。 假设 11% 的人口患有糖尿病。 可以创建一个始终预测 0 的模型,即使在没有真正尝试通过评估患者的特征来区分患者的情况下,其准确率仍可达到 89%。

我们真正需要的是更深入地了解模型在预测 1(代表阳性病例)和 0(代表阴性病例)时的表现。

召回率

召回率是度量此模型正确识别的阳性病例比例的指标。 换句话说,与确实患有糖尿病的患者人数相比,此模型预测有多少人患有糖尿病?

召回率的公式为:

TP ÷ (TP+FN)

就我们的糖尿病示例来说:

3 ÷ (3+1)
= 3 ÷ 4
= 0.75

因此,我们的模型正确地将 75% 的糖尿病患者识别为糖尿病患者。

精度

精准率是与召回率类似的指标,但度量的是预测为阳性病例且真实标签实际上也为阳性的比例。 换句话说,在模型预测患有糖尿病的患者中,实际患有糖尿病的患者的比例是多少?

精准率公式为:

TP ÷ (TP+FP)

就我们的糖尿病示例来说:

3 ÷ (3+0)
= 3 ÷ 3
= 1.0

因此,在我们的模型预测的患有糖尿病的患者中,100% 的人确实患有糖尿病。

F1 分数

F1 分数是一个结合了召回率和精准率的总体指标。 F1 分数的公式为:

(2 x 精准率 x 召回率) ÷ (精准率 + 召回率)

就我们的糖尿病示例来说:

(2 x 1.0 x 0.75) ÷ (1.0 + 0.75)
= 1.5 ÷ 1.75
= 0.86

曲线下面积 (AUC)

召回率的另一个名称是真阳性率 (TPR)。此外还有一个称为假阳性率 (FPR) 的等效指标,其计算公式为 FP÷(FP+TN)。 我们已经知道,在使用阈值 0.5 时,我们的模型的 TPR 为 0.75。我们可以使用 FPR 的公式计算出 0÷2 的值为 0。

当然,如果我们更改模型预测 true (1) 的阈值,则会影响阳性和阴性预测的数量,因此会更改 TPR 和 FPR 指标。 这些指标通常用于通过绘制接收方操作特征 (ROC) 曲线来评估模型,该曲线会比较 0.0 到 1.0 之间的每个可能阈值的 TPR 和 FPR:

完美模型的 ROC 曲线会沿左侧的 TPR 轴直线上升,然后穿过顶部的 FPR 轴。 由于曲线的绘图面积为 1x1,因此该完美曲线下的面积将为 1.0(这意味着模型始终是正确的)。 相比之下,从左下角到右上角的对角线表示通过随机猜测二进制标签获得的结果;产生的曲线下面积为 0.5。 换句话说,给定两个可能的类标签,你可以合理预期猜对的概率为 50%。

就我们的糖尿病模型来说,会生成上面的曲线,曲线下面积 (AUC) 指标为 0.875。 由于 AUC 高于 0.5,因此我们可以得出结论:该模型在预测患者是否患有糖尿病方面比随机猜测的表现更好。

多类分类

类分类用于预测观察结果属于多个可能的类中的哪一个。 作为一种监督式机器学习技术,它遵循与回归和二元分类相同的训练、验证和评估迭代过程,保留一部分训练数据来验证训练的模型。

示例 - 多类分类

多类分类算法用于计算多个类标签的概率值,使模型能够预测给定观察结果最有可能属于哪个类。

让我们来探讨这样一个示例:我们对企鹅进行了一些观察,记录了每只企鹅的鳍状肢长度 (x)。 每次观察的数据都包括企鹅的物种 (y),其编码如下:

与本模块中前面的示例一样,真实场景中包含多个特征 (x) 值。 我们使用单个特征来简化操作。

鳍状肢长度 (x) 物种 (y)
167 0
172 0
225 2
197 1
189 1
232 2
158 0

训练多类分类模型

若要训练多类分类模型,需要使用一种算法将训练数据拟合到计算每个可能的类的概率值的函数。 可以使用两种类型的算法来执行此操作:

一对其他 (OvR) 算法

一对其他算法为每个类训练一个二元分类函数,每个函数计算观察结果属于目标类示例的概率。 每个函数计算观察结果与任何其他类相比属于特定类的概率。 对于企鹅物种分类模型,该算法实质上会创建三个二元分类函数:

每个算法都会生成一个 sigmoid 函数,用于计算概率值(介于 0.0 和 1.0 之间)。 使用这种算法训练的模型可以预测生成最高概率输出的函数的类。

多项式算法

另一种方法是使用多项式算法,该算法创建一个返回多值输出的函数。 输出是一个向量(值数组),其中包含所有可能的类的概率分布 - 每个类的概率得分总和为 1.0:

f(x) =[P(y=0 x), P(y=1 x), P(y=2 x)]

此类函数的一个示例是 softmax 函数,它可以生成如下所示的输出:

[0.2, 0.3, 0.5]

向量中的元素分别表示属于类 0、1 和 2 的概率;因此,在这种情况下,概率最高的类为 2。

无论使用哪种类型的算法,模型都使用生成的函数来确定一组给定特征 (x) 最可能属于哪个类,并预测相应的类标签 (y)。

评估多类分类模型

可以通过计算每个单独类的二元分类指标来评估多类分类器。 或者,可以计算将所有类都考虑在内的聚合指标。

假设我们已验证多类分类器,并得到了以下结果:

鳍状肢长度 (x) 实际物种 (y) 预测物种 (ŷ)
165 0 0
171 0 0
205 2 1
195 1 1
183 1 1
221 2 2
214 2 2

多类分类器的混淆矩阵与二元分类器的混淆矩阵类似,只不过前者显示 预测类标签 (ŷ) 和实际类标签 (y) 的每个组合的预测数:

multiclass-confusion-matrix

在此混淆矩阵中,可以确定每个单独类的指标,如下所示:

TP TN FP FN 准确性 Recall 精度 F1 分数
0 2 5 0 0 1.0 1.0 1.0 1.0
1 2 4 1 0 0.86 1.0 0.67 0.8
2 2 4 0 1 0.86 0.67 1.0 0.8

若要计算整体准确度、召回率和精准率指标,请使用 TP、TN、FP 和 FN 指标的总和:

整体 F1 分数是使用整体召回率和精准率指标计算的:

群集

聚类分析是一种非监督式机器学习形式,在此形式下,基于观察值的数据值或特征的相似性,将观察值分组到群集中。 这种就是非监督式机器学习,因为它不使用先前已知的标签值来训练模型。 在聚类分析模型中,标签是群集,仅根据该群集特征向群集分配观察结果。

示例 - 聚类分析

例如,假设一位植物学家观察花的样本,并记录每支花上的叶子和花瓣的数量:

flowers

数据集中没有已知的标签,只有两个特征。 目的不是识别花的不同类型(品种);而是根据叶子数和花瓣数将相似的花朵分组在一起。

叶子 (x1) 花瓣 (x2)
0 5
0 6
1 3
1 3
1 6
1 8
2 3
2 7
2 8

训练聚类分析模型

有多种算法可用于聚类分析。 最常使用的算法之一是 K-Means 聚类分析,其中包括以下步骤:

  1. 对特征值 (x) 进行向量化以定义 N 维坐标(其中 N 是特征数)。 在花的示例中,有两个特征:叶子数 (x1) 和花瓣数 (x2)。 因此,特征向量具有两个坐标,可用于在二维空间中以概念形式绘制数据点 ([x1,x2])
  2. 决定要使用多少个群集来给花分组,并将此值称为 k。 例如,若要创建三个群集,则 k 值为 3。 然后,在随机坐标中绘制 k 点。 这些点将成为每个群集的中心点,因此它们被称为质心。
  3. 每个数据点(在本例中为一朵花)都被分配到最近的质心。
  4. 每个质心将根据分配给它的数据点之间的平均距离,移动到这些数据点的中心。
  5. 移动质心后,数据点现在可能更接近其他质心,因此数据点将根据新的最近的质心重新分配给群集。
  6. 质心移动和群集重新分配步骤会重复执行,直到群集变得稳定或达到预定的最大迭代次数为止。

下面的动画展示了此过程:

clustering

评估聚类分析模型

由于没有可用于比较预测群集分配的已知标签,因此聚类分析模型的评估基于生成的群集彼此的分离程度。

可以使用多个指标来评估群集分离情况,包括:

深度学习

深度学习是一种高级的机器学习形式,它尝试模拟人类大脑的学习方式。 深度学习的关键是创建一个人工神经网络,它通过使用数学函数模拟生物神经元中的电化学活动,如下所示。

生物神经网络 人工神经网络
Diagram of a natural neural network. Diagram of an artificial neural network.
神经元会因电化学刺激而触发反应。 触发时,信号会传递给连接的神经元。 每个神经元都是一个函数,它会处理一个输入值 (x) 和一个权重 (w)。 该函数会包装在确定是否传递输出的激活函数中。

人工神经网络由多层神经元组成,它们实质上定义了深度嵌套函数。 此体系结构是该技术被称为深度学习的原因,它生成的模型通常被称为深度神经网络 (DNN)。 可以将深度神经网络用于多种机器学习问题,包括回归和分类,以及更专业的自然语言处理和计算机视觉模型。

与本模块中讨论的其他机器学习技术一样,深度学习涉及将训练数据拟合到一个函数中,该函数可以根据一个或多个特征 (x) 的值预测标签 (y)。 该函数 (f(x)) 是嵌套函数的外层,其中神经网络的每一层会封装对 x 以及与它们关联的权重 (w) 值进行操作的函数。 用于训练模型的算法涉及以迭代方式将训练数据中的特征值 (x) 通过层向前馈送,以计算 ŷ 的输出值,验证模型以评估计算的 ŷ 值与已知的 y 值相差多少(从而量化模型中的误差或损失级别),然后修改权重 (w) 以减少损失。 训练的模型包括最终的权重值,这些值可生成最准确的预测。

示例 - 使用深度学习进行分类

为了更好地了解深度神经网络模型的工作原理,让我们来探讨一个示例,其中神经网络被用于定义企鹅物种的分类模型。

deep-classification

特征数据 (x) 包括企鹅的一些度量值。 具体来说,这些测量值包括:

在这种情况下,x 是具有四个值的向量,或者从数学角度上来说,x=[x1,x2,x3,x4]。

我们要预测的标签 (y) 是企鹅的物种,它可能是以下三个物种之一:

这是分类问题的一个例子,在此过程中,机器学习模型必须预测观察对象最可能属于哪一类。 分类模型通过预测由每个类的概率组成的标签来实现此目的。 换言之,y 是三个概率值的向量,每个可能的类都具有一个概率值:**[P(y=0 x), P(y=1 x), P(y=2 x)]**。

使用此网络推断预测的企鹅类的过程是:

  1. 企鹅观察的特征向量被馈送到神经网络的输入层,在该层中,每个 x 值有一个神经元。 在此示例中,下面的 x 向量用作输入:[37.3, 16.8, 19.2, 30.0]
  2. 第一层神经元的每个函数会通过组合 x 值和 w 权重来计算加权总和,并将其传递给激活函数,该函数会确定它是否满足要传递到下一层的阈值。
  3. 层中的每个神经元都连接到下一层中的所有神经元(该体系结构有时被称为完全连接的网络),因此每个层的结果会通过网络向前馈送,直到它们到达输出层。
  4. 输出层会生成值的向量。在这种情况下,使用 softmax 或类似函数计算三类企鹅的概率分布。 在此示例中,输出向量为:[0.2, 0.7, 0.1]
  5. 向量元素表示类 0、1、2 的概率。 第二个值是最高的,因此模型预测企鹅的种类为 1 (Gentoo)。

神经网络如何学习?

神经网络中的权重对于它如何计算标签的预测值至关重要。 在训练过程中,模型会学习将产生最准确的预测的权重。 让我们更详细地探讨一下训练过程,从而了解此学习是如何进行的。

neural-network-training

  1. 定义训练和验证数据集,并将训练特征馈送到输入层。
  2. 网络每一层的神经元应用其权重(它们最初随机分配)并通过网络馈送数据。
  3. 输出层生成一个矢量,其中包含 ŷ 的计算值。 例如,企鹅类预测的输出可能是 [0.3. 0.1. 0.6]。
  4. 损失函数用于将预测的 ŷ 值与已知的 y 值进行比较,并聚合差异(这被称为损失)。 例如,如果在上一步中返回输出的事例的已知类是 Chinstrap,则 y 值应为 [0.0, 0.0, 1.0]。 此值与 ŷ 向量之间的绝对差值为 [0.3, 0.1, 0.4]。 实际上,损失函数会计算多个事例的聚合方差,并将其汇总为单个损失值。
  5. 由于整个网络本质上是一个大型嵌套函数,因此优化函数可以使用微分计算来评估网络中每个权重对损失的影响,并确定如何调整它们(增加或减少)以减少整体损失量。 特定的优化技术可能会有所不同,但通常会涉及梯度下降法,即每个权重都会增加或减少,以最小化损失。
  6. 权重的更改会回传到网络中的各个层,并替换以前使用的值。
  7. 此过程会在多次迭代(称为“时期”)中重复,直到将损失降到最低且模型能够在可接受的准确范围内进行预测。

虽然可以更轻松地想成训练数据中的每个事例通过网络进行传递,一次传递一个,但实际上,数据会被批处理成矩阵并使用线性代数计算进行处理。 因此,神经网络训练最好在具有针对向量和矩阵操作进行了优化的图形处理单元 (GPU) 的计算机上执行。

Azure 机器学习

Microsoft Azure 机器学习是用于训练、部署和管理机器学习模型的云服务。 它旨在供数据科学家、软件工程师、DevOps 专业人员和其他人员使用,以管理机器学习项目的端到端生命周期,包括:

Azure 机器学习的特性和功能

Azure 机器学习提供以下特性和功能来支持机器学习工作负载:

预配 Azure 机器学习资源

Azure 机器学习所需的主要资源是可在 Azure 订阅中预配的 Azure 机器学习工作区。 其他支持资源(包括存储帐户、容器注册表、虚拟机和其他资源)根据需要自动创建。

若要创建 Azure 机器学习工作区,可以使用 Azure 门户,如下所示:

azure-portal

Azure 机器学习工作室

预配 Azure 机器学习工作区后,可以在 Azure 机器学习工作室(基于浏览器的门户,用于管理机器学习资源和作业)中使用它。

在 Azure 机器学习工作室中,可以(除其他外):

azure-ml-studio

屏幕截图显示了 Azure 机器学习工作室中一个已训练的模型的“指标”页,可在其中查看一个已训练的多类分类模型的评估指标。

总结

机器学习是构建人工智能的基础。 在本模块中,你已了解机器学习所基于的一些核心原则和概念,以及可以训练和评估的不同种类的模型。

本模块还介绍了 Azure 机器学习:一个用于端到端机器学习操作的云平台,并支持你在 Azure 机器学习中自行使用自动化机器学习。

Azure AI 服务的基础知识

介绍

人工智能 (AI) 正在改变我们的世界,在各行各业产生广泛影响。 从改善医疗保健到在线安全,人工智能正在帮助我们解决一些社会重大问题。

Azure AI 服务是一系列 AI 功能,可实现语言、视觉、智能搜索、内容生成等工作负载的自动化。 它们易于实现,不需要专业的 AI 知识。

各组织正在以创新的方式使用 Azure AI 服务,例如在机器人内部通过表达快乐、关心甚至笑声,为老年人提供类似现实生活的陪伴。 在其他用例中,科学家们使用 AI 通过识别图片中难以发现的动物来保护濒危物种。 以前,这是一项耗时且容易出错的工作,而 Azure AI 视觉服务可以快速、高度准确地完成这项工作,让科学家们可以为其他工作腾出时间。

在本模块中,你将了解什么是 Azure AI 服务,以及如何在自己的应用程序中使用 Azure AI 服务。

Azure 平台上的 AI 服务

Azure AI 服务是可内置于 Web 应用程序或移动应用程序中的 AI 功能,其实现方式非常简单。 这些 AI 服务包括图像识别、自然语言处理、语音、AI 支持的搜索等。 有十多项不同服务可通过单独使用或结合使用向应用程序中添加 AI 功能。

现在看一些示例,了解可使用 Azure AI 服务完成哪些操作。 Azure AI 内容安全服务可检测文本或图像中的不良内容,包括暴力或仇恨性内容,并报告其严重性。 Azure AI 语言服务可用于汇总文本、将信息分类或提取关键短语。 Azure AI 语音服务提供强大的语音转文本和文本转语音功能,可将语音准确转录为文本,或将文本转录为自然语音音频。

Azure AI 服务基于三个可大幅提升上市速度的原则:

Azure AI 服务是预生成的且随时可用

除了极顶规模的科技公司外,大多数公司都对 AI 望而却步,这有几个原因,包括模型训练所需的巨量数据、所需的巨大计算能力,以及雇佣专业程序员的预算。 Azure AI 服务通过使用预先训练好的机器学习模型来提供 AI 即服务,使各种规模的企业都能轻松利用 AI。 Azure AI 服务使用高性能 Azure 计算将高级 AI 模型部署为资源,使各技能级别的开发人员都能够利用其数十年的研究成果。

Azure AI 服务是一系列服务的组合,可提供适用于各行业和领域用例的功能。

例如,教育领域正在通过根据学生的具体需求利用沉浸式阅读器来为学生提供支持。 不同的学习者可能会有不同需求,例如有的想更慢地阅读,有的想将字词或文本翻译成其他语言,有的想查看图片来帮助理解。 沉浸式阅读器可帮助有不同需求的学生按照自己的节奏并采用自己的方式学习。

虽然无需进行任何修改即可使用 Azure AI 服务,但某些 AI 服务也可以进行自定义,从而能更好地满足特定要求。 Azure AI 视觉、Azure AI 语音和 Azure OpenAI 中的自定义功能都支持向现有模型添加数据。

例如,在运动领域中,运动员和教练可自定义 Azure AI 视觉来提升成绩并减少受伤。 一个应用程序使网上冲浪者能够上传视频并接收 AI 生成的见解和分析。 之后教练、医生、评委和活动广播员便可以利用这些见解。

Azure AI 服务可通过 API 来访问

Azure AI 服务可在不同的开发环境中使用,且只需要最少的编码即可实现。 开发人员可以通过 REST API、客户端库访问 AI 服务,或将其与逻辑应用和 Power Automate 等工具集成。 API 是应用程序编程接口,用于定义一个组件若要使用另一个组件的服务时所需的信息。 API 使软件组件之间能够通信,这样一端更新时就不会妨碍另一端正常工作。 在此处详细了解 Azure AI 服务的开发选项。

Azure AI 服务在 Azure 上可用

AI 服务是基于云的,可通过 Azure 资源进行访问。 这意味着它们的管理方式与其他 Azure 服务相同,如平台即服务 (PaaS)、基础结构即服务 (IaaS) 或托管数据库服务。 从资源的创建或删除到可用性和计费,Azure 平台和资源管理器为所有 Azure 服务提供一致的框架。

在某些情况下,AI 的使用方式有可能会损害个人隐私或权利。 Microsoft 制定了六项负责任 AI 原则来帮助确保 AI 服务符合道德且公平。 基于此,某些 Azure AI 服务存在限制,目的是确保这些服务的使用方式是一种负责任的方式。

总结

Azure AI 服务是易于使用的 AI 功能,作为 Azure 平台上的资源提供。 Azure AI 服务功能包括语言、语音、视觉、决策、搜索和 Azure OpenAI。

在本模块中,我们使用了多个与 AI 服务相关的不同术语。 让我们回顾一下:

计算机视觉基础知识

借助 Azure AI 视觉服务,软件工程师能够创建可提取图像中信息的智能解决方案,这是许多人工智能 (AI) 方案中的一项常见任务。

介绍

计算机视觉是人工智能 (AI) 的核心领域之一,其重点是创建解决方案,使 AI 的应用程序能够“看到”并理解世界。

当然,计算机没有像我们那样工作的生物眼睛,但它们能够处理图像;无论是来自实时摄像头原始数据,还是来自数字照片或视频。 这种图像处理能力是创建能够模仿人类视觉感知的软件的关键。

在本模块中,我们将研究奠定计算机视觉基础的一些基本原则和技术。 我们还将介绍 Microsoft Azure AI 视觉,这是开发人员可用于创建各种计算机视觉解决方案的云服务。

图像和图像处理

在探索图像处理和其他计算机视觉功能之前,在计算机程序的数据上下文中考虑图像实际是什么会非常有用。

图像是像素数组

对于计算机而言,图像是数字像素值的数组。 例如,请考虑以下数组:

0   0   0   0   0   0   0  
0   0   0   0   0   0   0
0   0  255 255 255  0   0
0   0  255 255 255  0   0
0   0  255 255 255  0   0
0   0   0   0   0   0   0
0   0   0   0   0   0   0

该数组由七行七列组成,表示 7x7 像素图像的像素值(称为图像分辨率)。 每个像素的值介于 0(黑色)到 255(白色)之间:这些边界之间的值表示灰色阴影。 此数组表示的图像类似于以下(放大后的)图像:

white-square

此图像的像素值数组是二维的(表示行和列,或 x 和 y 坐标),并定义像素值的单个矩形。 像这样的单层像素值表示灰度图像。 实际上,大多数数字图像都是多维图像,包含三层(称为“通道”),这三层分别代表红色、绿色和蓝色 (RGB) 色调。 例如,我们可以通过定义三个通道的像素值来表示彩色图像,这些像素值可创建与之前的灰度示例相同的正方形形状:

Red:
 150  150  150  150  150  150  150  
 150  150  150  150  150  150  150
 150  150  255  255  255  150  150
 150  150  255  255  255  150  150
 150  150  255  255  255  150  150
 150  150  150  150  150  150  150
 150  150  150  150  150  150  150

Green:
 0    0    0    0    0    0    0          
 0    0    0    0    0    0    0
 0    0   255  255  255   0    0
 0    0   255  255  255   0    0
 0    0   255  255  255   0    0
 0    0    0    0    0    0    0
 0    0    0    0    0    0    0

Blue:
 255  255  255  255  255  255  255  
 255  255  255  255  255  255  255
 255  255   0    0    0   255  255
 255  255   0    0    0   255  255
 255  255   0    0    0   255  255
 255  255  255  255  255  255  255
 255  255  255  255  255  255  255

生成的图像如下所示:

color-square

紫色方块由该组合表示:

Red: 150 
Green: 0 
Blue: 255

中心的黄色方块由该组合表示:

Red: 255
Green: 255
Blue: 0

使用筛选器处理图像

执行图像处理任务的一种常见方法是应用筛选器来修改图像的像素值以创建视觉效果。 筛选器由一个或多个像素值数组定义,称为筛选器内核。 例如,可以使用 3x3 内核定义筛选器,如以下示例所示:

-1 -1 -1
-1  8 -1
-1 -1 -1

然后,内核在整个图像中“卷积”,计算每个 3x3 像素补丁的加权总和,并将结果分配给新图像。 通过浏览分步示例,可以更轻松地了解筛选的工作原理。

让我们从之前探讨的灰度图像开始:

0   0   0   0   0   0   0  
0   0   0   0   0   0   0
0   0  255 255 255  0   0
0   0  255 255 255  0   0
0   0  255 255 255  0   0
0   0   0   0   0   0   0
0   0   0   0   0   0   0

首先,将筛选器内核应用到图像的左上角补丁,将每个像素值乘以内核中的相应权重值并将结果相加:

(0 x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (0 x -1) + (255 x -1) = -255

该结果 (-255) 成为新数组中的第一个值。 然后,我们将筛选器内核向右侧移动一个像素,重复该操作:

(0 x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (255 x -1) + (255 x -1) = -510

同样,结果将添加到新数组,该数组现在包含两个值:

-255  -510

此过程将重复,直到筛选器已在整个图像中卷积,如以下动画所示:

filter

筛选器在图像中卷积,计算新的值数组。 某些值可能超出 0 到 255 像素值范围,因此这些值经过调整以适应该范围。 由于筛选器的形状,像素的外部边缘不参与计算,因此应用填充值(通常为 0)。 生成的数组表示筛选器将原始图像转换为的一个新图像。 在本例中,筛选器具有突出显示图像中形状边缘的效果。

若要更清楚地看到筛选器的效果,下面提供了应用于真实图像的相同筛选器的示例:

原始图像 筛选后的图像
banana-grayscale laplace

由于筛选器在图像中卷积,因此这种图像操作通常称为“卷积筛选”。 本示例中使用的筛选器是一种特定类型的筛选器(称为 laplace 筛选器),用于突出显示图像中对象的边缘。 还有许多其他类型的筛选器可用于创建模糊、锐化和颜色反转等效果。

适用于计算机视觉的机器学习

使用筛选器将效果应用于图像的功能在图像处理任务中非常有用,例如可能使用图像编辑软件执行的任务。 但是,计算机视觉的目标通常是从图像中提取含义或至少是可操作的见解,这需要创建经过训练以基于大量现有图像识别特征的机器学习模型。

本单元假定你熟悉机器学习的基本原则,并且拥有神经网络深度学习的概念知识。 如果你不熟悉机器学习,请考虑先完成 Microsoft Learn 上的机器学习基础知识模块。

卷积神经网络 (CNN)

计算机视觉最常见的机器学习模型体系结构之一是卷积神经网络 (CNN)。 CNN 使用筛选器从图像中提取数值特征图,然后将特征值馈送到深度学习模型中以生成标签预测。 例如,在图像分类方案中,标签表示图像的主要主题(换句话说,这是一张关于什么的图像?)。 你可以使用不同种类的水果(如苹果、香蕉和橙子)的图像训练一个 CNN 模型,使预测的标签是给定图像中的水果类型。

在 CNN 的训练过程中,筛选器内核最初是使用随机生成的权重值定义的。 然后,随着训练过程的进行,根据已知标签值评估模型预测,并调整筛选器权重以提高准确性。 最终,经过训练的水果图像分类模型使用能够最好地提取有助于识别不同种类水果特征的筛选器权重。

下图演示了图像分类模型的 CNN 的工作原理:

convolutional-neural-network

在训练期间,将输出概率与实际类标签进行比较,例如,香蕉(类 1)的图像应具有值 [0.0, 1.0, 0.0]。 预测类分数与实际类分数之间的差异用于计算模型中的损失,并修改完全连接的神经网络中的权重和特征提取层中的筛选器内核,以减少损失。

训练过程会重复多个时期,直到学习到一组最优的权重。 然后,保存权重,模型可用于预测标签未知的新图像的标签。

CNN 体系结构通常包含多个卷积筛选器层和附加层,以减小特征图的大小、约束提取值,或者操作特征值。 在此简化的示例中省略了这些层,重点介绍关键概念,即筛选器用于从图像中提取数字特征,然后在神经网络中使用这些特征来预测图像标签。

转换器和多模态模型

CNN 多年来一直是计算机视觉解决方案的核心。 它们不仅通常用于解决前面所述的图像分类问题,也是更复杂的计算机视觉模型的基础。 例如,物体检测模型将 CNN 特征提取层与图像中兴趣区域的识别相结合,在同一图像中查找多个类的物体。

Transformers

几十年来,计算机视觉的大多进步都是由基于 CNN 的模型的改进推动的。 然而,在另一个 AI 学科 - 自然语言处理 (NLP) 中,另一种类型的神经网络体系结构(称为转换器)使得复杂语言模型的开发成为可能。 转换器的工作原理是处理大量数据,并将语言标记(表示单个单词或短语)编码为基于向量的嵌入(数值数组)。 可以将嵌入视为表示一组维度,每个维度表示标记的某些语义属性。 创建嵌入,使得在相同上下文中常用的标记在维度上比不相关的单词更接近。

下图是一个简单的示例,显示了编码为三维向量并在三维空间中绘制的一些单词:

language-encoder

语义相似的标记在类似的位置进行编码,创建语义语言模型,从而可以为文本分析、翻译、语言生成和其他任务构建复杂的 NLP 解决方案。

我们只使用了三个维度,因为这很容易可视化。 实际上,转换器网络中的编码器会创建具有更多维度的向量,基于线性代数计算定义标记之间的复杂语义关系。 其中涉及的数学很复杂,转换器模型的体系结构也是如此。 在本文中,我们目标只是提供对编码如何创建封装实体之间关系的模型的概念性理解。

多模态模型

转换器成功作为构建语言模型的一种方法,促使 AI 研究人员考虑同样的方法是否对图像数据也有效。 研究结果是开发多模态模型,其中模型使用大量带有描述文字的图像进行训练,没有固定的标签。 图像编码器基于像素值从图像中提取特征,并将其与语言编码器创建的文本嵌入相结合。 整体模型封装了自然语言标记嵌入和图像特征之间的关系,如下所示:

multi-modal-model

Microsoft Florence 模型就是这样的模型。 此模型使用来自互联网的大量带有描述文字的图像进行训练,包括语言编码器和图像编码器。 Florence 是基础模型的一个例子。 换句话说,它是一个预先训练的通用模型,你可以基于此模型为专业任务构建多个自适应模型。 例如,可以将 Florence 用作执行以下操作的自适应模型的基础模型:

florence-model

Florence 等多模态模型普遍处于计算机视觉和 AI 的前沿,并有望推动 AI 使各种解决方案成为可能。

Azure AI 视觉

虽然你可以训练自己的计算机视觉机器学习模型,但计算机视觉模型的体系结构可能比较复杂,你需要大量的训练图像和计算能力来执行训练过程。

Microsoft 的 Azure AI 视觉服务提供基于 Florence 基础模型的预生成和可自定义的计算机视觉模型,并提供各种强大的功能。 借助 Azure AI 视觉,你可以快速轻松地创建复杂的计算机视觉解决方案,利用许多常见计算机视觉方案的“现成”功能,同时保留使用自己的图像创建自定义模型的能力。

Azure AI 视觉服务的 Azure 资源

若要使用 Azure AI 视觉,需要在 Azure 订阅中为其创建资源。 你可以使用以下两种资源中的任意一种:

使用 Azure AI 视觉服务分析图像

在订阅中创建适当的资源后,可以将图像提交到 Azure AI 视觉服务,以便于执行各种分析任务。

Azure AI 视觉支持多种图像分析功能,包括:

以上任务及更多任务都可以在 Azure AI 视觉 Studio 中执行。

vision-studio

光学字符识别

Azure AI 视觉服务可以使用光学字符识别 (OCR) 功能来检测图像中的文本。 例如,请考虑以下杂货店中商品的营养标签的图像:

nutrition-label

Azure AI 视觉服务可以分析此图像并提取以下文本:

Nutrition Facts Amount Per Serving
Serving size:1 bar (40g)
Serving Per Package: 4
Total Fat 13g
Saturated Fat 1.5g
Amount Per Serving
Trans Fat 0g
calories 190
Cholesterol 0mg
ories from Fat 110
Sodium 20mg
ntDaily Values are based on
Vitamin A 50
calorie diet

你可以在 Microsoft Learn 上的使用 Azure AI 视觉阅读文本模块中进一步探索 Azure AI 视觉的 OCR 功能。

使用描述文字描述图像

Azure AI 视觉可以分析图像、评估检测到的对象,并生成可人工读取的短语或句子来描述在图像中检测到的内容。 例如,考虑以下图像:

skateboard

Azure AI 视觉返回此图像的以下描述文字:

一名男子跳上滑板

检测图像中的常见物体

Azure AI 视觉可以识别图像中的数千个常见物体。 例如,使用 Azure AI 视觉检测之前讨论的滑板玩家图像中的物体时,将返回以下预测:

预测包括一个置信度分数,指示模型为预测物体计算的概率。

除了检测到的物体标记及其概率外,Azure AI 视觉还返回边界框坐标,这些坐标指示检测到的物体顶部、左侧、宽度和高度。 你可以使用这些坐标来确定在图像中检测到每个物体的位置,如下所示:

bounding-boxes

标记视觉特征

Azure AI 视觉可以根据图像的内容建议图像的标记。 这些标记可以作为汇总图像属性的元数据与图像相关联,如果想要将一组关键术语与某个图像一起索引,以便可以使用这些术语搜索具有特定属性或内容的图像,那么这种情况下这些标记会非常有用。

例如,为滑板玩家图像返回的标记(及相关的置信度分数)包括:

训练自定义模型

如果 Azure AI 视觉提供的内置模型无法满足你的需求,你可以使用此服务来训练用于图像分类或物体检测的自定义模型。 Azure AI 视觉在预先训练的基础模型上生成自定义模型,这意味着可以使用相对较少的训练图像来训练复杂的模型。

图像分类

图像分类模型用于预测图像的类别或分类。 例如,你可以训练一个模型来确定图像中显示的水果类型,如下所示:

苹果 香蕉 Orange

对象检测

物体检测模型检测图像中的物体并对其进行分类,返回边界框坐标来定位每个物体。 除了 Azure AI 视觉中的内置物体检测功能外,你还可以使用自己的图像来训练自定义物体检测模型。 例如,你可以使用水果照片来训练一个可检测图像中的多种水果的模型,如下所示:

有关如何使用 Azure AI 视觉训练自定义模型的详细信息超出了本模块的范围。 你可以在 Azure AI 视觉文档 中找到有关自定义模型训练的信息。

总结

计算机视觉基于对图像中数字像素值的分析和操作。 机器学习模型使用大量图像进行训练,以实现常见的计算机视觉方案,例如图像分类、物体检测、自动标记图像、光学字符识别等

虽然可以为计算机视觉创建自己的机器学习模型,但 Azure AI 视觉服务提供了许多可用于分析图像的预先训练功能,其中包括生成描述性文字、提取相关标记、识别物体等

可在服务文档中找到关于使用 Azure AI 视觉服务的详细信息。

面部识别基础知识

人脸检测、分析和识别是人工智能 (AI) 解决方案的重要功能。 通过 Azure 中的 Azure AI 人脸服务,可以轻松地将这些功能集成到应用程序中。

介绍

人脸检测和分析是人工智能 (AI) 的一个领域,它使用算法来定位和分析图像或视频内容中的人脸。

人脸检测和分析的用途

人脸检测、分析和识别有许多应用。 例如,

了解人脸分析

人脸检测涉及到识别包含人脸的图像区域,通常通过返回范围框坐标来形成以人脸为中心的矩形,如下所示:

使用人脸分析,面部特征可用于训练机器学习模型返回其他信息,如鼻子、眼睛、眉毛、嘴唇等面部特征。

面部识别

面部分析的进一步应用是训练机器学习模型,从面部特征中识别已知个体。 这称为面部识别,使用个人的多张图像来训练模型。 这样训练模型的目的是让它可以在未参与训练的新图像中检测到这些个人。

如果以负责任的方式使用,则面部识别是一项重要且有用的技术,可以提高效率、安全性和客户体验。 接下来,我们将探索 Azure AI 人脸服务,该服务提供预先训练的模型来检测、识别和分析人脸。

Azure 人脸分析入门

Microsoft Azure 提供了多款可用于检测和分析人脸的 Azure AI 服务,其中包括:

其中,人脸提供最广泛的面部分析功能。

人脸服务

Azure 人脸服务可以返回在图像中找到的任何人脸的矩形坐标,以及与这些人脸相关的一系列属性,例如:

负责任 AI 使用

重要:为了支持 Microsoft 负责任的 AI 标准,Azure AI 人脸和 Azure AI 视觉具有受限访问策略

任何人都可以使用人脸服务:

有限的访问权限策略要求客户提交登记表以访问额外的 Azure AI 人脸服务功能,包括:

人脸的 Azure 资源

要使用人脸服务,必须在 Azure 订阅中创建以下资源类型之一:

获得更准确结果的提示

有一些考虑因素可以帮助提高图像检测的准确性:

总结

Azure AI 视觉和 Azure AI 视频索引器提供了人脸检测功能,但人脸服务和相关 API 提供了更多的功能。 选择哪一项最终取决于想要从面部检测中获得的见解。 如果要查找有关面部标志的数据,人脸资源是最佳选择。

你可以在服务文档中找到人脸服务的相关详细信息。

清理

最好在项目结束时确定是否仍然需要所创建的资源。 持续运行资源可能会产生费用。

如果想要学习此学习路径中的其他模块,可保留你的资源以便在其他练习中使用。

如果已完成学习,则可以从 Azure 订阅中删除资源组或单个资源:

  1. 在 Azure 门户的“资源组”页面中,打开在创建资源时指定的资源组。
  2. 单击“删除资源组”,键入资源组名称以确认要删除资源组,然后选择“删除”。 你还可以选择删除单个资源,操作方法:选择资源,单击三个点以显示更多选项,然后单击“删除”。

光学字符识别基础知识

光学字符识别 (OCR) 使人工智能 (AI) 系统能够读取图像中的文本,从而使应用程序能够从照片、扫描的文档以及其他数字化文本源提取信息。

介绍

假设你有路标、广告或黑板板书的图像文件。 计算机可以使用光学字符识别 (OCR) 读取图像中的文本,这是人工智能 (AI) 将图像中的字词处理成计算机可读文本的功能。

在此模块中,我们将重点介绍如何使用 OCR 技术检测图像中的文本并将其转换为基于文本的数据格式,然后进行存储、打印或用作输入以进一步处理或分析。

OCR 的用途

自动化文本处理可以去除手动输入数据的需要,提高工作的速度和效率。 识别图像中的印刷文本和手写文本这项功能在记笔记、数字化医疗记录或历史文档、扫描支票以进行银行存款等场景中非常有用。

Azure AI 视觉入门

计算机系统处理书面和印刷文本的能力是 AI 中涉及计算机视觉与自然语言处理的一个交叉领域。 视觉功能需要“读取”文本,然后自然语言处理功能可以理解文本。

OCR 是处理图像中的文本的基础,并使用经过训练的机器学习模型将各个形状识别为字母、数字、标点符号或其他文本元素。 实现这种功能的早期工作大部分是由邮政服务完成,用于支持基于邮政编码的邮件自动分类。 从那时起,阅读文本的先进技术实现了向前发展,我们拥有了检测图像中的打印或手写文本并逐行和逐字进行阅读的模型。

Azure AI 视觉的 OCR 引擎

Azure AI 视觉服务能够从图像中提取计算机可读文本。 Azure AI 视觉的读取 API 是支持从图像、PDF 和 TIFF 文件提取文本的 OCR 引擎。 针对图像的 OCR 针对常规的非文档图像进行了优化,因此可更轻松地在用户体验方案中嵌入 OCR。

读取 API(也称为“读取 OCR 引擎”)使用了最新的识别模型,并且针对具有大量文本或具有相当视觉干扰的图像进行了优化。 它可以自动确定正确的识别模型,以考虑文本行数、包含文本的图像以及手写字体。

OCR 引擎将接收图像文件并识别图像中各项所在的边界框或坐标。 在 OCR 中,模型将识别图像中可能为文本的任何内容周围的边界框。

调用读取 API 时将返回排列为以下层次结构的结果:

每行和每个文字都包含指示其页面位置的边界框坐标。

开始在 Azure 上使用 Vision Studio

若要使用 Azure AI 视觉服务,必须先在 Azure 订阅中为其创建资源。 你可以使用以下两种资源中的任意一种:

创建资源后,可通过多种方式使用 Azure AI 视觉的读取 API:

总结

光学字符识别 (OCR) 已存在很长一段时间了。 读取 API 也能够帮助从图像中进行相同的提取。 通过读取 API,可从图像中提取大量打印文本或手写文本。

若要详细了解如何使用 Azure AI 视觉服务读取文本,可参阅服务文档

清理

最好在项目结束时确定是否仍然需要所创建的资源。 持续运行资源可能会产生费用。

如果要继续学习此学习路径中的其他模块,可保留你的资源以便在其他练习中使用。

如果已完成学习,则可以从 Azure 订阅中删除资源组或单个资源:

  1. 在 Azure 门户的“资源组”页面中,打开在创建资源时指定的资源组。
  2. 单击“删除资源组”,键入资源组名称以确认要删除资源组,然后选择“删除”。 你还可以选择删除单个资源,操作方法:选择资源,单击三个点以显示更多选项,然后单击“删除”。

有关使用语言服务进行文本分析的基础知识

探索 Azure AI 语言的自然语言处理 (NLP) 功能,其中包括情绪分析、关键短语提取、命名实体识别和语言检测。

介绍

为了让计算机系统以类似于人类的方式解释文本的主题,他们将使用自然语言处理 (NLP),这是 AI 中处理理解书面或口头语言并做出相应反应的领域。 文本分析描述从非结构化文本中提取信息的 NLP 过程。

可使用自然语言处理创建:

Azure AI 语言是一项基于云的服务,包含用于理解和分析文本的功能。 Azure AI 语言包括支持情绪分析、关键短语识别、文本摘要和对话语言理解的各种功能。

了解文本分析

在探索 Azure AI 语言服务的文本分析功能之前,让我们先了解一些用于执行文本分析和其他自然语言处理 (NLP) 任务的一般原则和常用技术。

用于通过计算机分析文本的一些最早的技术涉及对文本正文(语料库)进行统计分析,以推断某种语义。 简而言之,如果可以确定给定文档中最常用的单词,通常就可以很好地了解该文档的内容。

令牌化

分析语料库的第一步是将其分解为标记。 为简单起见,可以将训练文本中的每个不同单词视为一个标记,但实际上,可以为部分单词生成多个标记,或者将单词和标点符号组合起来。

例如,请考虑一下一个很著名的美国总统演讲中的这个短语:“we choose to go to the moon”。 该短语可以分解为以下带数字标识符的标记:

  1. we
  2. choose
  3. to
  4. go
  5. the
  6. moon

请注意,“to”(标记编号为 3)在语料库中使用了两次。 短语“we choose to go to the moon”可以用标记 [1,2,3,4,3,5,6] 表示。

我们使用了一个简单的示例,为其文本中的每个不同单词标识了标记。 但是,请考虑以下可能适用于词汇切分的概念(具体取决于你尝试解决的 NLP 问题的特定类型):

频率分析

对单词进行标记后,可以执行一些分析来计算每个标记出现的次数。 最常用单词(除“a”、“the”等停用词之外的单词)通常可以提供有关以下内容的线索:文本语料库的主要主题。 例如,我们之前考虑的“go to the moon”演讲全文中的最常用单词包括“new”、“go”、“space”和“moon”。 如果我们将文本标记为二元组(单词对),则该演讲中最常见的二元组是“the moon”。 从这些信息中,我们可以很容易地推测出该文本主要与太空旅行和登月有关。

简单的频率分析(只需计算每个标记出现的次数)可能是分析单个文档的有效方法,但当你需要区分同一语料库中的多个文档时,则需要一种方法来确定每个文档中哪些标记最相关。 “词频 - 逆文档频率”(TF-IDF) 是一种常见技术,根据单词或术语在一个文档中出现的频率(相对于其在整个文档集合中的更一般频率而言)来计算分数。 使用这种技术时,我们假设在特定文档中频繁地出现但在众多的其他文档中相对不频繁地出现的单词具有高度相关性。

用于文本分类的机器学习

另一种有用的文本分析技术是分类算法(例如逻辑回归),可以使用它来训练机器学习模型,该模型根据一组已知的分类对文本进行分类。 此技术的常见应用是训练一个模型,将文本分为“正面”文本或“负面”文本,以便执行“情绪分析”或“观点挖掘”操作。

例如,考虑以下餐厅评论,这些评论已经被标记为 0(负面)或 1(正面):

有了足够多的带标签评论,你就可以使用标记化文本作为特征并使用情绪(0 或 1)作为标签来训练分类模型。 该模型会封装标记和情绪之间的关系 - 例如,带有“great”、“tasty”或“fun”之类字词的标记的评论更有可能返回 1(正面)情绪,而包含“terrible”、“slow”和“substandard”之类字词的评论更有可能返回 0(负面)情绪。

语义语言模型

随着 NLP 技术的进步,慢慢可以训练那些封装标记之间的语义关系的模型,这就导致了强大的语言模型的出现。 这些模型的核心是将语言标记编码为向量(多值数字数组),称为“嵌入”。

将标记嵌入向量中的元素视为多维空间中的坐标可能会很有用,这样每个标记就会占据一个特定的“位置”。标记在特定的维度上彼此越近,它们在语义上的相关程度就越高。 换言之,相关单词会更紧密地组合在一起。 举个简单的例子,假设标记的嵌入由包含三个元素的向量组成,例如:

我们可以在三维空间中基于这些向量绘制标记的位置,如下所示:

标记在嵌入空间中的位置包括一些有关标记彼此关联程度的信息。 例如,“dog”的标记接近“cat”,也接近“bark”。“cat”和“bark”的标记接近“meow”。“skateboard”的标记离其他标记更远。

我们在行业中使用的语言模型就基于这些原则,但较为复杂。 例如,使用的向量通常有更多维度。 还可通过多种方式计算给定标记集的适当嵌入。 方法不同,自然语言处理模型生成的预测也会不同。

下图显示了大多数现代自然语言处理解决方案的概括视图。 大型原始文本语料库被标记化并被用于训练语言模型,这些模型可以支持许多不同类型的自然语言处理任务。

语言模型支持的常见 NLP 任务包括:

这些功能以及更多功能均由 Azure AI 语言服务中的模型提供支持,我们接下来将对此进行探讨。

文本分析入门

Azure AI 语言是 Azure AI 服务产品的一部分,可对非结构化文本执行高级自然语言处理。 Azure AI 语言的文本分析功能包括:

实体识别和链接

你可以向 Azure AI 语言提供非结构化的文本,它将返回其识别的文本中的实体列表。 一个实体是一个特定类型或类别的一个项目;在某些情况下,子类型如下表所示。

类型 子类型 示例
人员   “Bill Gates”, “John”
位置   “Paris”, “New York”
组织   “Microsoft”
数量 Number “6” 或 “six”
数量 百分比 “25%” 或 “fifty percent”
数量 Ordinal “1st” 或 “first”
数量 Age “90 day old” 或 “30 years old”
数量 货币 “10.99”
数量 维度 “10 miles”、“40 cm”
数量 温度 “45 度”
日期/时间   “6:30PM February 4, 2012”
DateTime 日期 “May 2nd, 2017” 或 “05/02/2017”
DateTime 时间 “8am” 或 “8:00”
DateTime DateRange “May 2nd to May 5th”
DateTime TimeRange “6pm to 7pm”
DateTime 持续时间 “1 minute and 45 seconds”
DateTime 设置 “every Tuesday”
URL   “https://www.bing.com”
电子邮件   “support@microsoft.com”
美国的电话号码   “(312) 555-0176”
IP 地址   “10.0.1.125”

Azure AI 语言还支持链接到具体引用的实体链接来帮助消除歧义。 对于已识别的实体,该服务会返回相关维基百科文章的 URL。

例如:假设你使用 Azure AI 语言检测以下餐厅评论摘录中的实体:

“上周我在西雅图的这家餐厅吃饭。”

实体 类型 子类型 维基百科URL
西雅图 位置   https://en.wikipedia.org/wiki/Seattle
上周 DateTime DateRange  

语言检测

使用 Azure AI 语言的语言检测功能识别文本所用的语言。 可一次提交多个文档进行分析。 对于提交的每个文档,该服务将检测:

例如:试想你经营着一家餐厅,客户可以在餐厅完成调查并提供有关食物、服务、员工等方面的反馈。 假设你收到以下客户评价:

评价 1:“A fantastic place for lunch. The soup was delicious.”(英语)

评价 2:“Comida maravillosa y gran servicio.”(西班牙语)

评价 3:“The croque monsieur avec frites was terrific.Bon appetit!”(英语和法语)

可以使用 Azure AI 语言中的文本分析功能检测每条评论使用的语言;并且可能会得出以下结果:

文档 语言名称 ISO 6391 代码 分数
评价 1 英语 en 1.0
评价 2 西班牙语 es 1.0
评价 3 英语 en 0.9

请注意,尽管评价 3 中的文本包含英语和法语的混合文本,但服务对该评价检测出的语言是英语。 语言检测服务侧重检测文本中的主要语言。 该服务使用一种算法来确定主要语言,例如将该语言的语句长度或文本总量与文本中其他语言进行比较。 返回的值即为主要语言,同时会返回语言代码。 如果是混合语言文本,则可信度分数可能小于 1。

可能文本本身不明确,或含有混合语言的内容。 这些情况可能会带来挑战。 内容不明确的一个示例是文档文本量不足或仅包含标点符号的情况。 例如,使用 Azure AI 语言分析文本“:-)”,语言名称和语言标识符会返回未知值,分数会显示为 NaN(用于表示非数字)。

情绪分析和观点挖掘

Azure AI 语言中的文本分析功能可以评估文本并返回每个句子的情绪分数和标签。 此功能有助于检测社交媒体、客户评价、论坛讨论等中的正负面情绪。

Azure AI 语言使用预生成的机器学习分类模型来评估文本。 该服务分三个类别返回情绪分数:正面、中性和负面。 在每个类别中,提供介于 0 和 1 之间的分数。 分数表示提供的文本归入特定情绪的可能性。 还提供了一个文档情绪。

例如,可以对以下两个餐厅评价进行情绪分析:

评价 1:“我们昨晚在这家餐厅吃晚餐,我注意到的第一件事是工作人员很有礼貌。我们受到了友好的欢迎,并立即被带到我们的餐桌就坐。餐桌很干净,椅子很舒服,食物也很棒。”

评价 2:“我们在这家餐厅的用餐经历是我有史以来最糟糕的经历之一。服务很慢,食物也很糟糕。我再也不会在这家餐厅吃饭了。”

第一条评论的情绪分数可能是:文档情绪:正面 正面分数:0.90 中性分数:0.10 负面分数:0.00

第二条评论可能会返回响应:文档情绪:负面 正面分数:0.00 中性分数:0.00 负面分数:0.99

关键短语提取

关键短语提取识别文本中的要点。 试想一下前面讨论过的餐厅场景。 如果调查内容繁多,可能需要很长时间才能通读评论。 但是,你可以使用语言服务的关键短语提取功能来汇总主要观点。

你可能会收到如下评价:

“我们共进晚餐,庆祝生日,并获得了美妙的体验。我们受到了热情的欢迎并立即被带到餐桌就坐。这里的氛围轻松,食物美味,服务周到。如果你也喜欢美味的食物和周到的服务,真应该来这个地方试试。”

通过提取以下短语,关键短语提取功能可以提供该评价的一些语境信息:

除了使用情绪分析来确定这是正面评论,还可以使用关键短语服务来识别评论的重要元素。

为 Azure AI 语言创建资源

若要在应用程序中使用 Azure AI 语言,必须在 Azure 订阅中预配适当的资源。 你可以选择以下两种资源之一:

总结

Azure AI 语言提供对原始文本的高级自然语言处理,包括四个主要功能:情绪分析、关键短语提取、语言检测和命名实体识别。

使用语言服务回答问题的基础知识

使用 Azure AI 语言创建自定义问题解答知识库,并使用 Azure AI 机器人服务创建机器人来回答用户问题。

介绍

我们习惯于在白天或晚上的任何时间进行沟通,不管身处何地,这让组织面临着对其客户做出足够快速的反应的压力。 我们希望我们的问题得到个人答复,而无需通过阅读深奥的文档来查找答案。 这通常意味着支持人员会因多种渠道的帮助请求而不堪重负,人们只能等待响应。

对话式 AI 描述了支持在 AI 代理与人之间进行对话的解决方案。 通常,对话式 AI 代理称为机器人。 人们可以通过 Web 聊天界面、电子邮件、社交媒体平台等渠道与机器人互动。

Azure AI 语言的问题解答功能使你能够创建对话式 AI 解决方案。 接下来,你将了解问题解答。

了解问题解答

问题解答支持需要自动聊天元素的自然语言 AI 工作负载。 通常,问题解答用于生成响应客户查询的机器人应用程序。 问题解答功能可以立即响应,准确回答问题,并通过自然的多转方式与用户交互。 机器人可以在一系列平台上实现,例如网站或社交媒体平台。

问题解答应用程序为人们提供了一种友好的方式来获取问题的答案,并允许人们在适合他们的时间(而不是办公时间)处理查询。

在以下示例中,聊天机器人使用自然语言,为客户提供了最好地处理查询的选项。 用户快速获取问题的答案,并且只有当查询更复杂时才会传递给某个人员。

接下来,了解如何使用 Azure AI 服务创建问题解答项目。

开始使用语言服务和 Azure 机器人服务

你可以结合使用两种核心服务在 Microsoft Azure 上轻松创建用户支持机器人解决方案:

创建自定义问题解答知识库

你可以使用 Azure AI Language Studio 来创建、训练、发布和管理问题解答项目。

你可以使用 Azure AI 语言 REST API 或 SDK 来编写代码,以创建和管理项目。 但是,在大多数情况下,使用 Language Studio 更加容易。

若要创建项目,必须先在 Azure 订阅中预配一个语言资源。

定义问题和答案

预配语言资源后,可以使用 Language Studio 的自定义问题解答功能来创建包含问答对的项目。 这些问题和答案可以是:

在许多情况下,项目是结合所有这些技术创建的;从现有常见问题解答文档中的基本问答数据集开始,并通过其他手动输入内容来扩展知识库。

可以为项目中的问题分配替代措词,来帮助合并具有相同含义的问题。 例如,你可能会提出类似以下的问题:

公司总部的位置在哪里?

可以通过添加其他措词来预测这个问题的不同提问方式,例如:

公司总部在哪里?

测试项目

创建一组问题和答案对之后,必须将其保存。 该过程将从字面上分析问题和答案,并应用内置的自然语言处理模型来匹配问题的合适答案,即使它们的措词不完全符合问题定义中的措辞规定。 然后,你可以使用 Language Studio 中的内置测试界面通过提交问题并查看返回的答案来测试知识库。

使用 Azure AI 机器人服务构建机器人

创建和部署知识库之后,可以通过机器人将其传递给用户。 可以使用 Microsoft Bot Framework SDK 写入可控制对话流并与知识库集成的代码,从而创建自定义机器人。 但是,一种更简单的方法是使用自动创建机器人功能,该功能支持为已部署的知识库创建机器人,然后单击几下鼠标即可将其发布为 Azure AI 机器人服务应用程序。

连接渠道

准备好将机器人交付给用户时,你可以将其连接到多个渠道;使用户可以通过 Web 聊天、电子邮件、Microsoft Teams 和其他常用通信介质与其进行互动。

用户可以通过机器人的任何渠道向其提交问题,并从机器人所基于的知识库中获得适当的答案。