处理向量和矩阵的必要性及处理方法

网友投稿 267 2022-11-09

处理向量和矩阵的必要性及处理方法

这些算法背后的数学和科学是几十年前开发的,但直到最近几年,神经网络驱动的人工智能才开始起飞。那么,是什么让神经网络在过去的不足之处取得了成功呢?

什么是数据处理?

当我们想到数据处理时,即广义上的数据处理,即获取一些信息并以某种方式对其进行转换时,有一个数据结构是任何和所有处理的核心,那就是向量。无论如何,向量有什么特别之处?

数据也可能是非可视的。考虑一个天气预报系统,我们希望系统预测一年中给定日期的最高和最低温度。在这种情况下,系统的输入可能是一组历史数据样本,这些样本描述了过去十年中给定位置的一年中每一天的温度范围。在任何情况下,数据样本都是一个信息单元。分析图像时,数据样本是单个图像。在分析患者的临床病史以尝试预测该患者患心脏病的风险时,数据样本是单个患者。数据样本由以某种方式描述样本的特征列表组成。在图像的情况下,特征是构成图像的像素。在医疗病人的情况下,这些特征是描述该患者的属性:年龄、性别、吸烟习惯、家族中的心脏病史以及与他们的临床病史相关的其他信息。当我们将每个数据样本视为特征的集合时,这种观点与向量的概念非常吻合。

将数据样本转换为向量

我们如何将图像和患者转换为向量?对于图像,我们将每个像素的颜色解释为一个数值并构造一个像素值列表。例如,一个宽度为 2 像素、高度为 2 像素的图像将生成一个具有 4 个值的向量,并且可能如下所示:[10,0,245,50],其中每个值表示该像素的颜色强度。 更高分辨率的图像会产生更高维度的矢量,例如,256x256 像素的图像会产生 65,536 个值的矢量。

患者信息也可以通过使用数字对每个特征的含义进行编码来向量化,例如 1 = 男性,0 = 女性,1 = 家族中有心脏病史,0 = 没有心脏病等。将数据样本转换为向量是在两个非常重要的方面很有用:它有助于以一种易于与每个单独样本相关的方式封装特征列表,其次,解释向量以几何方式揭示有关数据集中样本如何相互关联的信息。例如,假设我们要创建一种算法,可以学习区分汽车和行人的图像。我们首先将图像解释为向量。几何上,

图 1. 此图说明了笛卡尔坐标系中的 3D 矢量 V1。向量是从原点开始到由其 3 个分量定义的点结束的线:x、y、z。

虽然我们无法直观地表示维度高于 3D 的向量,但在数学上我们仍然可以使用相同的方程来操作它们。向量如此特别的原因在于,当我们对它们进行几何解释时,指向相似方向的向量具有相似的属性。例如,当我们将汽车和行人的图像解释为某个多维空间(称为超空间)中的向量时,虽然我们无法可视化该向量所指向的方向,但我们可以计算它,并且可以比较向量属于汽车的图像和属于行人图像的向量。事实证明,汽车图像的矢量指向大致相同的方向,行人图像的矢量指向与其他行人图像相似的方向,但远离汽车矢量。

要创建一种可以学习自动区分汽车和行人的算法,意味着以数学方式操纵这些向量以了解它们指向的方向并找到将汽车和行人向量所在空间一分为二的线或超平面。一旦我们找到超平面,算法就可以简单地通过知道它的向量落在直线的哪一侧、所有汽车向量所在的一侧或所有行人向量所在的一侧来对全新图像进行分类。

这就是为什么人工智能算法最终都会执行大量的向量运算。这是因为输入数据通常表示为向量,因为这样做在几何上是有利的。在 AI 中经常使用的另一种数据结构是矩阵。其原因不应该让人感到意外。向量是值的集合。矩阵只是一个堆叠在另一个之上的向量的集合。在某些情况下,将向量组合为矩阵很有用,这样我们就可以同时处理一组向量——例如一组输入样本。

计算工具——内容、原因和方式

至此,我们已经确定了人工智能中对向量和矩阵的需求。现在我们需要一种方法来快速执行这些计算。

所有这些框架和库都依赖于一个称为 BLAS 库的关键组件,如上所述,它提供了一组函数来加速向量和矩阵运算。不幸的是,这些框架没有按照功能安全标准实施。行业需要的是生产一套构建块工具和框架,按照安全关键标准和实践构建。这些框架必须包括保证确定性执行的 GPU 驱动程序实现。它们必须包括加速核心数学运算的工具——例如 BLAS API 的安全关键实现。工具和框架必须为计算机视觉和图像处理的基本预处理和后处理任务提供安全关键(确定性)解决方案,但也适用于一般机器学习任务,可帮助强大的人工智能管道中的每个决策过程。换句话说,该行业必须提供与非安全关键市场相同的解决方案,并且具有相同的复杂性,同时解决严重受限环境中的确定性和资源管理难题。

加速

到目前为止,我们已经讨论了处理向量和矩阵的必要性,并以确定的方式进行处理。我们还说过,要快速执行这些操作,我们需要一个执行加速的工具。我们所说的加速是什么意思?

这种方法的缺点是 CPU 擅长快速执行顺序操作,但不擅长并行化工作。不幸的是,为大多数 AI 算法处理向量和矩阵所涉及的任务被称为“令人尴尬的并行问题”。因此,在可以并行执行这些计算的机器上执行这些计算符合我们的最大利益,而不是顺序执行。

结论

OpenCV 等图像处理库通过为常用算法和技术提供内置功能,让工程师的生活更轻松。事实上,这些可用的框架是如此成功和无处不在,以至于当我们进入安全关键领域时,许多人还没有意识到这些工具在确定性和安全性很重要的地方是不可用的。但正如研究界使用的工具生态系统不仅仅是 CUDA 或 OpenCL™,安全关键行业也需要构建一个安全关键工具和框架的生态系统。

BLAS 和 FFT 的安全关键实施是朝着正确方向迈出的一步,但我们需要我们的合作伙伴以及整个嵌入式和自治社区来帮助定义将为未来所有可靠设备提供动力的工具和安全关键 API。开源社区已经展示了可以实现的目标,并为我们的产品和想法的原型制作提供了一个很好的平台,但我们知道 Python 库不能确定地执行。自主意味着责任。负责任的系统必须安全可靠。行业越早意识到这一点,我们就能越早离开沙箱,并根据严格的安全标准和准则构建基础设施,以促进安全自治的大规模部署。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:部署zabbix监控服务器
下一篇:详解RabbitMQ 消息中间件
相关文章

 发表评论

暂时没有评论,来抢沙发吧~