0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

矢量到底有什么特别之处?

星星科技指导员 来源:嵌入式计算设计 作者:Kenneth Wenger 2022-11-18 15:56 次阅读

为什么人工智能AI)特别是神经网络如今如此受欢迎?

这些算法背后的数学和科学是在几十年前开发的,但直到最近几年,神经网络驱动的人工智能才起飞。那么,究竟发生了什么使神经网络能够成功,而过去却没有达到目标呢?

通常情况下,有一个关键事件催化了任何技术从“利基”到“转型”的相变。图形处理单元(GPU)从图形设备到通用计算机的重新构想是当前AI革命的核心。GPU 能够加速一组特定的数学运算:矢量和矩阵变换。它们使我们能够在实际时间内处理信息,但仅靠GPU不会将我们带到这里。人工智能革命的发生是因为除了提供马力的GPU之外,还有一个基础设施 - 互联网和开源开发人员社区 - 它促进了数千名研究人员和开发人员的协作,并创建了工具和库的集合,这些工具和库在当今的AI开发中无处不在。

如果没有研究人员和开发人员大军,那么加速神经网络的 GPU 驱动的突破仍将是利基市场,他们创建了抽象出直接编程 GPU 的细微差别和困难的库。这对于解决在各种用例中面临的挑战非常有效。但是,这些库不遵循安全关键开发指南,而安全关键型开发指南正日益成为许多应用程序的基本要求。

当我们看到自动驾驶,以及依赖于安全性、确定性和可靠性的嵌入式行业时,我们发现自己又回到了相变的起点。我们有GPU,通过Khronos Group的Vulkan® SC,我们有一个API支持安全关键图形和用于编程GPU的计算。现在,我们需要一个位于 Vulkan SC 安全层之上的图书馆补充集合,这些库遵循安全关键准则和标准,将我们从利基带到主流。

CoreAVI通过引入ComputeCore启动了这场革命。ComputeCore是CoreAVI对线性代数(BLAS)API的实现。线性代数,尤其是向量,是为所有人工智能算法提供动力的燃料。立即选择您最喜欢的 AI 引擎。该引擎运行速度很快,因为它有一个加速所有矢量操作的 BLAS 库。ComputeCore 正是这样做的,但它的实施是为了满足航空电子、汽车和工业市场的功能安全认证标准(DO-178C、A 级、ISO 26262 ASIL D 和 IEC61508 SIL 3)。矢量和矩阵是人工智能和数据处理的核心。这经常被提及,但几乎从未解释过。一起来看看吧。

什么是数据处理?

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

当我们谈到数据处理时,我们指的是获取信息并对其进行修改的能力。在某些情况下,我们希望转换信息,以便我们可以从中提取知识。机器学习就是这种情况。我们可以拍摄图像并以一种可以告诉我们场景中存在哪些对象的方式对其进行转换。我们这样做是为了计算机视觉,使自动驾驶汽车成为可能。我们还可以通过模糊、锐化或提取有关场景中结构的边缘信息来转换图像。这些操作是强大的视觉管道中的常见步骤。

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

将数据样本转换为向量

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

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

pYYBAGN3OtOARyblAAAxlW7czew621.png

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

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

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

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

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

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

当我们想到自动化时——例如,在繁忙的高速公路上无人协助驾驶的汽车,或者在仓库或工厂与人类一起工作的机器人——我们会想到实时执行的系统,并产生实时后果。当自动驾驶汽车未能检测到行人并有足够的时间避免碰撞时,人工智能算法本身可能不是故障的来源。事实上,该算法可能已经正确检测到行人,但检测可能只是花费了几毫秒的时间。此示例有助于说明几件事。首先,这些系统需要尽可能快地执行矢量和矩阵数学运算。其次,在安全关键应用中,这些操作需要在确定的时间内进行。也就是说,我们需要能够计算执行算法的最坏情况执行时间,以便我们可以确定对于每个可预见的情况,系统是否有足够的时间对该算法的执行结果做出反应。如果避开障碍物的机会之窗已经过去,那么发现障碍物就没有什么用处。

为了解决这些问题,应用程序和解决方案开发人员需要两件事。首先,他们需要一个可以加速向量和矩阵运算计算的工具。对于非安全关键用例,开源社区提供了大量免费提供的工具和框架。其中包括Tensorflow,Pytorch,Caffe和Scikit-learn等框架。

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

加速度

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

通常,当我们想到软件执行时,我们认为CPU是执行编程指令的终端设备。系统中的大多数软件都在 CPU 上运行。事实上,我们可以使用 C 编程语言实现 BLAS 并在 CPU 上执行计算。这种方法的好处是,嵌入式领域的大多数程序员(实时设备、汽车、机器人)都熟悉 C 编程语言,并且有用 C 语言开发安全关键软件的标准实践。

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

结论

过去十年对人工智能来说是伟大的。研究社区和开源工程社区已经开发了大量工具,为当今许多非安全关键产品提供支持。亚马逊的Alexa或谷歌的家庭助理等产品由最先进的自然语言处理(NLP)算法提供支持。

对这些算法的突破性研究得益于工具生态系统,这些工具使工程师和科学家能够相对轻松地开发和训练复杂的神经网络,并加速GPU设备上的操作。这些工具包括神经网络框架,如TensorFlow和PyTorch,统计和数据分析工具,如Python科学库scikit-learn,以及高性能计算框架,如CUDA®和SYCL。™

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

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

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4562

    浏览量

    98644
  • gpu
    gpu
    +关注

    关注

    27

    文章

    4402

    浏览量

    126562
  • 人工智能
    +关注

    关注

    1775

    文章

    43707

    浏览量

    230487
收藏 人收藏

    评论

    相关推荐

    鸿蒙系统和安卓的区别 鸿蒙系统有什么特别之处

    鸿蒙系统是华为公司自主研发的一款全新操作系统,旨在替代安卓系统。鸿蒙系统与安卓系统在多个方面存在不同,下面将详细介绍鸿蒙系统与安卓系统的区别以及鸿蒙系统的特别之处。 一、架构差异: 鸿蒙系统采用
    的头像 发表于 01-18 11:45 2562次阅读

    NUC123的USB外设到底有没有DMA功能?

    下载最新的TRM 1.07: 在最先前的描述以及USB的寄存器章节都有DMA相关的内容。但是DMA那一章节里的框图没有USB外设。同时关于USB外设DMA的用法也没具体说明。所以USB外设到底有没DMA功能,若是该怎么用?
    发表于 01-16 08:26

    AD7280AWBSTZ和AD7280ABSTZ之间到底有什么区别?

    替代吗?在网上找到的两个芯片的相关数据都是一样的,AD7280AWBSTZ和AD7280ABSTZ之间到底有什么区别?
    发表于 01-08 06:36

    #人工智能 #fpga培训 #FPGA刷题 明德扬的考试酷什么特别之处

    fpga人工智能
    明德扬助教小易老师
    发布于 :2023年12月27日 18:44:07

    到底有哪些原因会导致电枢绝缘阻值为零?

    对电机多大影响,现在这样用能安全使用多长时间,为什么电枢会是零呢,到底有哪些原因会导致电枢绝缘阻值为零?
    发表于 12-14 08:30

    dB到底有多少种不同的含义呢?

    此同时,我们在很多有噪声监控的十字路口也可以看到这样的指示牌:目前路口噪音60dB。那么dB到底有多少种不同的含义呢? 首先要说到dB的起源,所谓dB,指的就是Deci-Bel,也就是1/10个“Bell
    发表于 11-27 08:26

    O-RAN技术到底是什么?它有什么特别之处

    简单的说,RAN 就是基站,也就是网络。在 5G 时代来临之前,基站(RAN)是由三部分组成的:天线,RRU(射频拉远单元),BBU(基带处理单元)。RRU 是用来发射和接受信号的,BBU 是用来处理信令消息的。 首先,小编带领大家对无线接入侧的历史做一个简单的回顾。 在 1G 和 2G 时代,BBU,RRU 和供电单元等设备是放在一个柜子里的,十分臃肿…… 到了 3G 时代,提出了分布式基站。也就是将 BBU 和 RRU 分离,RRU 甚至可以挂在天线下边,不必与 BBU 放在同一个
    的头像 发表于 11-09 16:32 606次阅读

    请问MSP430到底有几个时钟呀?

    请问MSP430到底有几个时钟呀
    发表于 11-03 06:36

    COB与SMD到底有什么不同

    如今在应用领域,COB和SMD两种技术正在“平分春色”,但在微小间距LED领域,COB正在成为各大厂商都在争相研发的行业主流技术。那么COB与SMD到底有什么不同呢?
    的头像 发表于 11-02 09:37 1432次阅读
    COB与SMD<b class='flag-5'>到底有</b>什么不同

    ARM和DSP到底有什么区别?

    现在在学ARM,想知道ARM和DSP到底有什么区别?为什么有些地方用DSP有些用ARM
    发表于 10-19 07:20

    充电桩线路板的三个特别之处,你知道吗?它们可能影响你的充电体验

    充电桩线路板的三个特别之处,你知道吗?它们可能影响你的充电体验
    的头像 发表于 10-12 10:38 695次阅读

    物联网卡的流量到底是什么?超全详解!

    物联网卡的流量到底是什么?超全详解!
    的头像 发表于 08-31 09:13 921次阅读
    物联网卡的流<b class='flag-5'>量到底</b>是什么?超全详解!

    NUC123的USB外设到底有没有DMA功能?

    下载最新的TRM 1.07: 在最先前的描述以及USB的寄存器章节都有DMA相关的内容。但是DMA那一章节里的框图没有USB外设。同时关于USB外设DMA的用法也没具体说明。所以USB外设到底有没DMA功能,若是该怎么用?
    发表于 08-24 06:18

    肖特基二极管有什么特别之处

    肖特基二极管是一种特殊类型的二极管,其主要特点是具有低电压降和快速开关速度。这意味着它可以在高频率下进行快速开关操作,并且能够在低电压下实现高效电源管理。你真的会用肖特基二极管吗?跟其他的二极管相比,肖特基二极管又有什么特别之处?下面,我们一起来划重点吧!
    发表于 06-09 13:57 184次阅读

    FPGA和CPLD到底有什么区别?求具体例子说明

    FPGA和CPLD到底有什么区别,还有VHDL,一直分不清他们什么差别。求具体例子说明
    发表于 04-23 11:49