构建由 AI 驱动的应用程序可能是一件痛苦的事。对此我深有感触。我曾忍受了很多痛苦,因为使用这一技术所付出的代价往往是值得的。正如他们所说的,果汁值得一榨。
令人欣慰的是,过去五年,得益于用户友好型的工具,利用机器学习技术进行开发已经变得更加容易。如今,我发现自己花在构建和调优机器学习模型上的时间很少,更多的时间被用于传统的应用程序开发。
在本文中,我将为您介绍一些我所喜爱的无忧 Google Cloud AI 工具,并且分享快速构建由 AI 驱动的应用程序的小窍门。让我们开始吧。
使用预训练的模型
机器学习项目最缓慢、最令人不快的部分之一就是采集标注的训练数据 —— 机器学习算法就是从标注的样本中学习。
但是对于许多常见用例,您无需这样做。不必从头开始构建自己的模型,而是可以充分利用由他人构建、优化并维护的预训练模型。Google Cloud 的 AI API 就是一个例子。
Cloud AI API 允许您将机器学习用于:
转录音频和视频文件
从文档读取文本
解析结构化文档,例如,表单和发票
检测图片中的面部、情绪和物体
检测图像/视频中露骨的内容
还有更多
支持这些 API 的机器学习模型与许多 Google 应用程序(例如,Photos)中所使用的类似。它们基于海量数据集训练而来,而且往往非常准确!例如,当我使用 Video Intelligence API 分析我的家庭录像时,它能够检测各种特定的标注,例如,“新娘婚前派对”、“婚礼”、“击球游戏”甚至“婴儿微笑”等。
更重要的是,Cloud AI API 是在云中运行。不过,如果您需要免费的离线解决方案,TensorFlow.js 和 ML Kit 可提供一系列经过预训练的模型,您可以直接在浏览器或者移动设备中运行。在 TensorFlow Hub 中甚至还有更大规模预训练的 TensorFlow 模型。
采用 AutoML 轻松定制模型
尽管您可以为许多用例找到预训练的模型,但有时您需要构建真正定制的东西。您也许要构建一个能够分析 X 光之类的医学扫描的模型以检测疾病的存在。也许您要从装配线上的物料中对小部件进行分类,或者在向您的客户发送目录时,预测哪些客户最可能采购。
为此,您需要构建定制模型。AutoML 是一个 Google Cloud AI 工具,能够让定制流程尽可能轻松无忧。它允许您基于自己的数据对定制模型进行训练,您甚至不必编写代码来进行此操作(除非您非要这样做)。
在下图中,您可以看到我如何使用 AutoML Vision 来训练一个检测电路板中损坏的元件的模型。针对标签数据的界面是拖放式操作的,对模型的训练极其简便,只需点击“Train New Model”(训练新模型)按钮。当模型完成训练时,您可以在“Evaluate”(评估)选项卡对其质量进行评估,并查看哪里存在错误。
它适用于图像 (AutoML Vision)、视频 (AutoML Video)、语言(AutoML Natural Language 和 AutoML Translation)以及文档和表列数据 (AutoML Tables),就如同您在数据库或电子表格可能看到的那样。
尽管 AutoML 界面很简单,但其生成的模型往往质量非常高。AutoML 能够在后台训练不同的模型(例如,神经网络),对比不同的架构和参数并选择最准确的组合。
在您的应用程序中使用 AutoML 模型非常简单。您既可以让 Google 为您在 Cloud 中托管模型并通过标准 REST API 或客户端库(Python、Go、Node、Java 等)来访问它,也可以将模型导出至 TensorFlow,这样,您就能够以离线方式使用它。
因此,或多或少,使模型训练变得简便易行。不过,您从哪里能得到一个大的训练数据集呢?
无需标注您自己的数据
我是说真的。
当我开始一个 ML 项目时,首先会检查以了解是否已经存在可满足我需求的预训练模型。
如果不存在,对于数据集,我要问自己相同的问题。Kaggle(一个数据集托管和竞赛网站)中几乎存在您可能想象到的任何类型的数据集。从关于新冠病毒 (COVID-19) 的推文、Chipotle 位置列表到一系列假新闻文章,您通常可以在 Kaggle 上找到至少一些将让您针对您的问题进行概念验证模型训练的数据集。Google Dataset Search 也是一个有用的数据集查找工具,可同时查询 Kaggle 和其他来源。
当然,有时您必须对自己的数据进行标注。不过,在聘用数以百计的实习生之前,要考虑使用 Google 的 Data Labeling Service。要使用此工具,您要说明您希望如何对您的数据进行标注,然后 Google 会将数据发送至人工标注者团队。所得到的标注数据集可直接插入 AutoML 或者其他 AI 平台模型以供训练。
从模型到可用应用程序
很多时候,构建(或者找到)一个有效的机器学习模型并不是一个项目的棘手部分。它使您的团队中的其他人能够将该模型用于他们自己的数据。在 Google Cloud AI 中我们频繁面对这一问题,这就是我们决定在我们的 API 产品页添加交互式演示以使您能够上传我们的 API 并快速尝试的原因所在。
我们将此演示添加到 Vision 产品页,这样,人们就能够轻松地基于自己的数据对我们的模型进行测试。
领导一个成功的机器学习项目通常要能够快速构建原型。为此,我有一些值得信赖的工具和架构:
将 ML 添加到 Google Sheets。*G Suite 应用程序(例如,Sheets、Docs 和 Forms )易于通过 Apps Script 框架使用 JavaScript 进行扩展。例如,您可以构建一个文本分类模型,每次当您在 Google Sheet 中添加一行时运行该模型。您也可以构建一个 Google Form,让您能够上传图像、利用 ML 模型对它们进行分析,然后将结果写入 Google Sheet。
Google Cloud Storage + Cloud Functions Duo。大部分的 ML 项目是数据输入,数据输出的。您上传一些输入数据 —— 图像、视频、音频录音、文本段等 —— 模型基于输入数据运行预测(“输出数据”)。对这类项目进行原型化的一个很好的方法是采用 Cloud Storage 和 Cloud Functions。Cloud Storage 就如同云中的文件夹:存储所有格式数据的位置。Cloud Functions 是一个无需专门的服务器即可在云中运行代码块的工具。通过让上传到 Cloud Storage 的文件“触发”要运行的云函数,您可以将二者配置为一起工作。
我最近在构建文档 AI 流水线时使用了这个设置:
当文档被上传到云存储桶时,它触发一个按类型分析文档并将其移至新的存储桶的云函数。触发新的云函数,使用自然语言 API 来分析文档文本。在此处可查看完整代码。
评论