如何构建一个成功的AI PoC(Prove of Concept)

2024-06-21 09:08
文章标签 ai 构建 poc 成功 concept prove

本文主要是介绍如何构建一个成功的AI PoC(Prove of Concept),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”


作者:Arnault

编译:ronghuaiyang

导读

如何把你的人工智能想法转化为可用的软件。

建立一个 AI PoC 是困难的。在这篇文章中,我将解释我的思维过程,使我的人工智能 PoCs 成功。

“我的闹钟能不能利用交通信息及时叫醒我去上班?”我们都想过求助于人工智能来解决我们的一个问题。概念证明(PoC)的目标是测试是否值得在其中投入时间。构建 PoC 是困难的,但构建 AI PoC 则更加困难,因为它需要大量的技能。

在构建 AI PoC 时,数据科学只是工作的一小部分,但它是最重要的技能之一。很容易找到一些非常好的教程来教你如何解决一个特定的任务,如何构建一个检测算法来停车入库。如何部署一个 flask app 到云上。但是,为你的特定问题设计一个解决方案要困难得多,这主要是因为你需要后知后觉地将问题重新组织成标准化的任务。

在这篇文章中,我将解释我实现这一目标的方法。

首先,我将回顾一下人工智能系统是什么样子的。然后,我将描述我设计一个人工智能的 3 个步骤的过程。最后,我们将看到两个示例,一个简单的示例和一个完整的带有 python 实现的示例。

人工智能系统概述

作为一个例子,我将使用一个分类文件的系统来说。它回答的问题是,“这是什么类型的文件?答案是类似于“电子发票”或“待办事项”这样的类。

AI 工作流程包含 5 个步骤:

  • 收到问题:“这是什么类型的文件?”

  • 在用户或上下文中添加补充数据:“用户拥有什么类型的文件?”

  • 使用数据回答问题:“这个文件属于哪种类型?”,"这是能源发票"

  • 存储结果:添加新文件到数据库

  • 回答客户的问题:“这是能源发票”

你可以把它分成 3 个任务或语义块:

  • 处理客户:接受问题,让他等待……

    示例:HTTP 服务器

  • 数据调取:与“公司知识库”沟通,增加或接收相关数据。

    与数据库的通信

  • AI 部分:回答这个问题的 AI 本身,以及上下文。

    例子:专家系统,支持向量机,神经网络…

回答问题“这是什么类型的文件?

你可以在网上找到关于如何架设你的服务器或数据调取层的教程。Python 中最简单的 AI PoC 解决方案是使用 Flask 和 SQL 数据库,但这在很大程度上取决于你的需要和你已经拥有的东西。我们将专注于设计 AI 本身。

设计 AI 部分

人工智能任务可能涉及多个异构输入。例如,用户的年龄和位置或整个电子邮件讨论。

人工智能的输出取决于任务:我们想要回答的问题。人工智能有很多不同的任务。在下面的图片中,你可以看到一些常见的计算机视觉任务。

一旦你从标准化的输入和任务中走出来,想办法构建一个人工智能就会变得很复杂。

为了让我了解构建 AI 的复杂性,我使用了一个 3 步的过程。

步骤 1:浏览相关的输入

首先,收集你觉得能够回答手头任务的所有输入,并选择在大多数情况下能够自给自足的输入。

在测试人工智能想法时,很容易变得贪婪,并考虑包含大量输入的解决方案:例如,用户的位置可能会让我了解他们的下一封电子邮件是什么。事实是:人们很容易迷失在各种不同含义或性质的输入中,最终什么也得不到。

在建造你的 AI 时,坚持简单的,自给自足的输入。

步骤 2: 数据向量化

第二步是对这些输入进行预处理,使其可用于各种算法。在某种程度上,每一个 AI 过程都要经过一系列的步骤来获得一个向量表示。

文本到向量: 基于词的计数来构建向量

这个过程非常简单,比如计算单词在文档中出现的频率,或者直接使用图像像素的值。它也可以变得非常复杂的多层预处理。

图像矢量化: 根据像素值将PNG图像矢量化为48x48灰度矢量

输入可以是非常不同的:不同的大小、颜色比例或图像格式。请记住,这里的思想是构建所有输入的有意义的、规范化的表示。

构建规范化的输入和有意义的表示。

步骤 3:处理向量

第三步是考虑输出和如何实现输出的时刻。

与输入一样,输出也需要“向量化”。对于分类,它很简单:按类划分一个字段。

然后,我们需要找到从输入向量到输出向量的方法。最后,这是我们开始寻找 AI 时学到的第一件事。它可以涉及到一些简单的任务,比如找到最近的向量或最大值,也可以涉及到更复杂的任务,比如使用巨大的神经网络架构。

大多数任务,如回归、分类或推荐,都有详细的文档记录。对于 PoC,最简单的操作是使用一个预先实现的算法库,如scikit-learn[1]并进行测试。

分类任务上的向量输出

找一些简单的和预先实现好的算法。

一个直接的例子

任务:文本是法语还是英语?

解决方案:

步骤 1:浏览相关输入。如果没有任何源或其他元数据,文本是惟一可能的输入。

步骤 2:向量化数据。向量化的一个简单方法是计算英语单词和法语单词的数量。我们将使用特定语言中最常用的单词。它们被称为停用词:the, he, him, his, himself, she, her…

步骤 3:处理向量。然后,我们可以选择使用这两个值中最高的值进行分类,以获得二进制输出:True 或 False。

维基百科中法语和英语的页面按照词缀比例随机划分。蓝色的异常值是关于 Ferroplasmaceae 的法语页面,遗憾的是,它包含的英语参考文献比法语句子还多。

构建人工智能通常是人类专长(商业知识)和计算机智能(机器学习)的混合。在这个例子中,由于法语和英语的停用词,我使用了人类的专业知识来选择如何构建我的向量。我也可以使用机器学习来训练一个模型,要么构建一个相应的向量(步骤 2),要么学习更复杂的向量的分类(步骤 3)。

一个更复杂一点的问题

在一次会议上,我与一个从事数字安全项目的人交谈。他告诉我,他想帮助他的用户对他们的个人文档进行分类和排序:合同、账单、文件……他注意到,随着存储的内容越来越多,文件夹树也越来越复杂,人们往往会对自己的文档进行错误的分类。找到他们想要的内容也变得更加困难。搜索引擎只是在“修补”问题,而不是消除根本原因:只有在知道准确信息的情况下才能找到文档,而文件夹仍然很混乱。

那么我们该如何解决这个问题呢?

注:我真的开发了这样一个系统:https://github.com/Wirg/digital-safe-document-classification

阐明 PoC 的思想并定义其范围

我们将设计一个用户界面,用户可以上传一个文档,然后提示用户这个文档最适合的文件夹是什么。我们希望支持这些类型的文件:txt、text、markdown 和 pdf。

“data_to_read”是我放想要阅读的文章的文件夹。Work 是一个文件夹,里面有我以前的学校报告(主要是数据科学项目)。在 15 个文件夹中选择 2 个。具体实现:https://github.com/Wirg/digital-safe-document-classification。

我们想要提示用户的是他们当前的文件夹,而不是旧的或来自其他人的文件夹:答案必须是特定于用户和特定于时间的。

步骤 1:浏览相关的输入

首先,我们需要知道用户的文件夹,否则我们将无法回答。要做出选择,我们可以使用:

  • 文件的内容

  • 添加时间:有些账单可能是按月支付的,有些任务可能大部分是在特定时间内完成的

  • 文件名和类型:" energy_invoice_joe_march.pdf "、“pdf”

在我们的例子中,最可靠的输入可能是文档的内容。我们将使用上传的文档和用户文件夹的内容作为比较。我们来关注一下。

步骤2: 输入向量化

现在,我们有不同的输入格式:pdf、markdown、text、txt…我们可以直接处理 markdown 和其他文本格式的文件内容。但是我们必须处理 pdf 文件,才能像其他文件一样使用它们。

我通过谷歌搜索找到了这里使用的工具 Pdftotext。它是有效的,但有一个巨大的缺点,它不执行光学字符识别(OCR)。这意味着它将读取大多数 pdf 文件,但无法读取由图像或扫描件创建的文件。为了解决这个问题,我可以使用像 Tesseract 这样的替代方法,但是我不会在这个例子中使用。

我们想把文本转换成向量,让我们来看看scikit-learn[2]。我们找一个文本向量化的工具,我们找到一个文本的特征提取包。这正是我们要找的。它有两个向量化工具:一个基于单词计数,另一个称为 TfidfVectorizer,我们使用的就是这个。

首先将发票pdf转换为文本,然后转换为向量

Tfidf 表示词频和逆文档频率。它基本上是数字,但用了一种更聪明的方法。其思想是,我们不只是计算单词的数量,而是通过计算单词的频率,并将其与文档中的单词数量进行比较,从而了解文档中某个单词的重要性:词频(term frequency, TF)。然后,我们将其频率与文档数量进行比较。文档中出现的频率越少,它对文档的影响就越大:逆文档频率(IDF)

步骤 3:处理向量

我们需要一个最佳文件夹的列表作为最终输出。将文件夹名映射到数字很简单。但是我们不能得到一个简单的标准化输出向量因为输出向量的大小会改变。实际上,文件夹的数量在很大程度上取决于用户及其当前文件夹。由于这个原因,我们不能使用固定数量的类的普通分类算法。我们需要每次都对模型进行重新训练,并为每个用户构建一个模型,或者为所有用户构建一个大型模型。

但是我们已经在向量化过程中加入了“智能”。因此,我们将采取另一种方法,更类似于搜索引擎:对上传的文档、文件夹中已经存在的文档进行矢量化,并比较结果向量。

为了找到最好的文件夹,我们寻找与上传文档最匹配的文档。

我们找到向量表示与上传文档最相似的文档,并将通过它找到原始文件夹。

使用余弦相似性查找最佳文件夹。

总而言之,解决 AI 问题可以简化为以下 3 个步骤:

  • 首先,浏览相关输入

  • 其次,向量化数据

  • 第三,处理向量

我希望它能帮助你实现你的人工智能想法。

—END—

英文原文:https://www.sicara.ai/blog/2019-03-29-how-build-succesful-ai-poc

请长按或扫描二维码关注本公众号

喜欢的话,请给我个好看吧

这篇关于如何构建一个成功的AI PoC(Prove of Concept)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1080793

相关文章

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了