嬴图 | 图数据库系列 之 图算法与可解释性

2024年诺贝尔物理学奖颁发给了机器学习与神经网络领域的研究者,这是历史上首次出现这样的情况。这项奖项原本只授予对自然现象和物质的物理学研究作出重大贡献的科学家,如今却将全球范围内对机器学习和神经网络的研究和开发作为了一种能够深刻影响我们生活和未来的突出成果。比如,DeepMind开发的AlphaFold,它是一种革命性的人工智能(AI)系统,一举解决了过去50年都无法完成的蛋白质折叠问题,可以准确预测蛋白质的结构。

图1:世界上最有影响力的科学期刊Nature将其评价为:它将改变一切

在现实环境中,越来越多的商家、企业喜欢使用机器学习来增强它们对于商业前景的可预测性,有的采用了深度学习、神经元网络的技术来获取更大的预测能力。围绕这些技术手段,以下3个问题一直萦绕不断:
·生态中的多系统间割裂问题(siloed systems within AI eco-system)|
·低性能(low performance AI)
·黑盒化(black-box AI)

图2:AI机器学习技巧以及性能与可解释性

图2就很好地呼应了上面提到的3大问题。首先,机器学习的技巧很多,从统计学模型到神经元网络,从决策树到随机森林,从马尔科夫模型到贝叶斯网络到图模型,不一而足,但是这么多零散的模型却并没有一个所谓的一站式服务平台。大多数的AI用户和程序员每天都在面对多个相互间割裂的、烟囱式的系统——每个系统都需要准备不同类型、不同格式的数据、不同的软件硬件配置,大量的ETL或ELT类的工作需要完成。

其次,基于机器学习和深度学习的AI还面临性能与解释性的双重尴尬,所谓高准确率的深度学习往往并不具备良好的过程可解释性,这在各类神经元网络中体现得尤为强烈——人类用户作为最终的决策者是很难容忍过程不可解释、非白盒化的AI解决方案的。这也是为什么在欧洲、美国、日本、新加坡等地,金融机构、政府职能部门都在推动AI技术与应用落地时的白盒化、可解释性。

最后,性能问题同样不可忽视,数据处理、ETL、海量数据的训练和验证,整个过程是复杂和漫长的。这些问题都是不可忽视的存在。理想状态下,我们需要基础架构层的创新来应对并解决这些挑战。

图数据库恰好就是那个基础架构层的创新。我们在本文中会解读为什么和如何解决以上的问题。

传统意义上,数学和统计学的操作在图(数据集)上是非常有限的。在以前的文章中,我们也介绍过图数据结构的演进路线,感兴趣的读者可以翻阅。简而言之,在相邻矩阵或相邻链表类的数据结构中,很少的数学和统计学的操作可以被完成,在灵活性与性能上也存在很多挑战。为了在图数据集上可以支持更丰富的数学、统计学的计算与操作,引入向量型数据结构有其必然性与合理性,图嵌入也应运而生。

图嵌入是近几年来图计算领域中相当热门的研究方向,不仅仅是因为相当多的AI研究者把深度学习、神经网络的研究方向转为图嵌入、图神经网络,另一方面工业界也越来越多的发现结合图嵌入可以获得更好的反欺诈或智慧营销的效果。

对于图嵌入操作而言,这种底层的向量空间数据结构就是以嵌入的方式、原生图的方式存储图的基础数据(点、边、属性等),任何在此基础之上的数学、统计学计算等需求都可以更容易被实现。而当我们在数据结构、基础架构以及算法的工程实现层面做到了可以充分释放和利用底层硬件的并发能力的时候,在图上的很多非常耗时的图嵌入操作就可以非常高效和及时地完成。

举例来说,在一台双CPU的X86 PC服务器架构中,超线程数可达112甚至更高,也就是说如果全部100%并发,CPU最大并发规模可以达到11200%,而不是100%。遗憾的是,很多互联网后台开发程序员试图证明在不让一台服务器的最大并发能力充分释放(满负荷运转)的情况下,可以通过多机的分布式系统来实现更高的效率。高并发的正确打开方式是我们需要先把一台机器的并发能力释放出来后,才会以水平可扩展的方式去释放第二台、第三台的算力。

下面,让我们通过Word2Vec的例子来解释为什么图嵌入类的操作在嬴图数据库可以跑得更快,也更简洁(如轻量级存储、过程可解释)。Word2Vec方法可以看作是其他面向顶点、边、子图或全图的图嵌入方法的基础。简而言之,它把单词(word)嵌入(转换)到了向量空间——在低维向量空间中,意思相近的单词有相似的嵌入结果。著名的英国语言学家J.R.Firth在1957年曾说过:你可以通过了解一个单词的邻居(上下文)而了解这个单词。也就是说,具有相似含义的单词倾向于具有相似的近邻单词。

在以下三张配图(图3、图4、图5)当中,介绍了实现Word2Vec所用到的算法和训练方法:

·Skip-gram算法;
·Softmax训练方法;
·其他的算法,如Continuous Bag of Words、Negative Sampling(负取样)等。

图3:Word2Vec从原文到训练采样数据集

图3中展示的是当采样窗口大小为2时(意味着每个当前关注、高亮的单词的前两个和后两个相连的单词会被采样),采集到的样本集的效果。

为了表达一个单词并把它输入给一个神经元网络,一种叫做one-hot的向量方法被使用到了,如图所示。输入的对应于单词ants的one-hot向量是一个有1万个元素的向量,其中只有一个元素为1(对应为ants),其它元素为全部为0。同样的,输出的向量也包含1万个元素,但是包含着每一个近邻的单词出现的可能性。

图4:Word2Vec神经元网络架构示意图

假设我们的词汇表中只有1万个单词(words),以及对应的300个功能(features)或者是可以用来调优Word2Vec模型的参数。这种设计可以理解为一个10 000×300的二维矩阵对应在隐藏层(hidden layer)中的300个神经元(neurons),如下图所示。

图5:巨大的单词向量(3 000 000种权重组合)

从上图看到,隐藏层和输出层都负载着权重达3 000 000的数据结构。对于真实世界的应用场景,词汇数量可能多达数百万,每个单词有上百个features的话,one-hot的向量会达到数以十亿计,即便是使用了sub-sampling、negative-sampling或word-pair-phrase等(压缩)优化技术,计算复杂度也是不可忽略的。很显然,这种one-hot向量的数据结构设计方式过于稀疏了,类似于相邻矩阵。同样地,利用GPU尽管可以通过并发来实现一定的运算加速,但是对于巨大的运算量需求而言依然是杯水车薪(低效)。

现在,让我们回顾Word2Vec的诉求是什么?在一个搜索与推荐系统中,当输入一个单词(或多个)的时候,我们希望系统给用户推荐其他什么单词?对于计算机系统而言,这是个数学——统计学(概率)问题:有着最高可能性分值的单词,或者说最为近邻的单词,会被优先推荐出来。从数据建模的角度来看,这是个典型的图计算问题。当一个单词被看作是图中的一个顶点时,它的邻居(和它关联的顶点)是那些经常在自然语句中出现在它前后的单词。这个逻辑可以以递归的方式延展开来,进而构成一张自然语言中完整的图。每个顶点、每条边都可以有它们各自的属性、权重、标签等。

我们设计了两种近邻存储的数据结构(相邻哈希,adjacency hash),如下图所示,表面上看它们类似于bigtable,但是在实现层,通过高并发架构赋予了这些数据结构无索引查询(index-free adjacency)可计算性能。

基于此类数据结构,Word2Vec问题可以被分解为如下两个清晰(但并不简单)的步骤:

1)为图中每个关联两个单词(顶点)的有向边赋值一个“可能性”权重,可以通过基于统计分析的预处理方式实现。

2)搜索和推荐可以通过简短的图遍历操作来实现,例如对于任何出发的单词(顶点),查询并返回前X个数量的邻居顶点。该操作可以以递归的方式在图中前进,每次用户选定一个新的顶点后,就会实时地进行新的推荐。当然也可以进行深度的图路径计算以实现类似于返回一个完整的、长句子的推荐效果。

图6:原生支持图嵌入的图数据结构

第二步的描述非常类似于一套实时搜索与推荐系统,并且它的整个计算逻辑就是人脑如何进行自然语言处理的白盒化过程。

上面描述的就是一个完整的白盒化的图嵌入处理过程,每一个步骤都是确定的、可解释的、清晰的。它和之前的那种黑盒化和带有隐藏层(多层)的方法截然不同(参考图3、图4)。这也是为什么说深度的实时图计算技术会驱动XAI(eXplainable AI,可解释的人工智能)的发展。

相邻哈希数据结构采用图嵌入的方式构造——当图中的数据通过相邻哈希的结构被存储后,嵌入过程就自然而然地完成了,这也是相邻哈希类原生图存储在面向图嵌入、图神经网络时的一个重要优势。

图7:深度游走(DeepWalk)的步骤分解

让我们来看第二个例子:深度游走(deep walk)。它是一个典型的以顶点为中心的嵌入方法,通过随机游走来实现嵌入过程。利用相邻哈希,随机游走的实现极为简单,仅仅需要从任一顶点出发,以随机的方式前往一个随机相邻的顶点,并把这个步骤以递归的方式在图中深度前行,例如前进40层(步)。需要注意的是,在传统的计算及IT系统中,通常来说每一层深入查询或访问都意味着计算资源的消耗指数级增加。如果平均每个顶点有20个邻居,查询深度为40层的计算复杂度为

,没有任何已知的系统可以以一种实时或近实时的方式完成这种暴力运算任务。但是,得益于相邻哈希数据结构,我们知道每一层的顶点可以以并发的方式去访问它的相邻顶点,时间复杂度为O(1),然后每个相邻顶点的下一层邻居又以并发的方式被分而治之,如果有无穷的并发资源可以被利用,那么理论上的深度探索40层的时间复杂度为O(20*40)。当然,并发计算资源实际上是有限的,因此时间复杂度会高于O(800),但是可以想见,会指数级低于

上图中示意的是典型的深度游走的步骤。利用相邻哈希,随机游走、训练和嵌入过程被降解为原生的图操作,例如K-邻和路径查询操作。这些操作都是直观、可解释的,也就是说是XAI友好的!

图8:node2vec算法步骤中对于word2vec的依赖

深度游走(DeepWalk)在学术界和业界经常被批评缺少通用性(普适性),它没有办法应对那种高度动态的图。例如,每个新的顶点(及边)出现后都要被再次训练,并且本地的邻居属性信息也不可以被保留。

Node2Vec被发明出来就是要解决上面提到的DeepWalk非通用性中的第二个问题。图7中展示了整个学习过程的完整的步骤——10步(含子进程),其中每个步骤又可以被分解为一套冗长的计算过程。传统意义上,像Node2Vec类的图嵌入方法需要很长时间(以及很多的资源,例如内存)来完成(用过Python的读者可能会更有体会!),但是,如果可以把这些步骤都进行高并发改造,通过高效利用和释放底层的硬件并发能力来缩短步骤执行时间,node2vec完全可以在大数据集上以近实时的方式完成。

以图9为例,如下的进程(步骤)都被改造为并发模式:
·Node2Vec随机游走(random walks)
·准备预计算Exp. Table
·词汇学习 (from Training File)
·剔除低频词汇Low-Frequency Vocabularies
·常见单词(vectors)的Sub-sampling
·初始化网络 (Hidden Layer, Input and Output Layers)
·初始化Unigram Table (Negative Sampling)
·Skip-Gram训练

图9:中型图数据集上运行高并发node2vec算法

通过高度的并发实现,node2vec算法完全可以实现高性能与低延迟。在上图中,我们对增强的AMZ0601数据集运行node2vec,可以在完全实时的条件下完成以上列表中的全部操作。

值得指出的是:每一秒钟没有实现高并发的运算,对于底层的计算(或存储、网络)资源而言都是一种浪费——是对环境污染的一种漠视。还有其它的图嵌入技巧具有相似的理念和步骤,例如:

·取样和标签(Sampling and labeling)
·模型训练(i.e., Skip-Gram, n-Gram, and etc.)
·嵌入计算(Computing embeddings)

有些计算需要在顶点或子图级别完成,有些则需要对全图进行运算,因此也会因计算复杂度的指数级增加而耗费更多的计算资源。无论是哪一种模式,可以实现以下的效果将会是非常美妙的:

·在数据结构、架构和算法实现层面实现高性能、高并发;
·每一步的操作都是确定、可解释的以及白盒化的;
·理想状态下,每个操作都以一站式的方式完成(连贯的、统一的,无需数据迁移或反复转换的)。

现在,让我们回顾本文开头的地方,图2所触及的可解释性vs.性能的问题。决策树有着较好的可解释性,因为我们明白它每一步在做什么,树在本质上就是简单的图,但是它并不包含环路、交叉环路这种数学(计算)意义上复杂的拓扑结构——因为后者更难解释,当这种高难度的不可解释性层层叠加后,整个系统就变成了一个巨大的黑盒,这也是我们今天的很多AI系统所面临的真实的窘境——试问人类可以忍受一套又一套的AI系统在为我们服务的时候,始终以黑盒、不可解释的方式存在吗?例如通过AI来实现的人脸识别或者小微贷款额度计算,即便在10亿人身上经过认证它是准确的,你如何能确保在下一个新用户出现的时候它是准确的且公正的呢?只要人类不能精准、全面的回溯整个所谓的AI计算过程,这种风险就一直存在。不可解释的AI,注定是不会长久的,即便在一定时期内它可能还很火爆。不得不说,在XAI的方向上,有着巨大的IT系统升级换代的空间与机遇。

图是用来表达信息与数据的高维关联关系的,图数据库、图中台、图计算引擎是忠实的还原高维空间表达的终极方案。如果人脑是终极数据库,那么图数据库是迈进终极数据库的必然途径!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/56618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机怎么玩GTA5?GameViewer远程助你手机畅玩GTA5侠盗飞车

原来手机也可以玩电脑游戏!如果你想随时随地用手机玩GTA5,网易GameViewer远程能帮你实现,它的按键映射功能会让你在体验GTA5时非常好。你不仅可以享受4K蓝光144帧高画质的 驾驶、第三人称射击,还有开放世界探索,还可以…

服务器软件之Tomcat

服务器软件之Tomcat 服务器软件之Tomcat 服务器软件之Tomcat一、什么是Tomcat二、安装Tomcat1、前提:2、下载3、解压下载的tomcat4、tomcat启动常见错误4.1、tomcat8.0 startup报错java.util.logging.ErrorManager: 44.2、java.lang.UnsatisfiedLinkError 三、Tomca…

高级算法设计与分析 学习笔记13 线性规划

注意是线性规划不是动态规划哦 好家伙,这不是凸优化吗? 凸优化标准形式: 先改成统一最大化(凸优化那边怎么是统一最小化?) 原来的x2正负无所谓,但我希望每个x都是有限制的,所以把它改…

MySQL初识

在了解什么是MySQL前,我们先了解一下什么是数据库?? 1. 数据库简介 1.1 什么是数据库 数据库是20世纪60年代末发展起来的⼀项重要技术,已经成为计算机科学与技术的⼀个重要分⽀。数据库技术主要是⽤来解决数据处理的⾮数值计算问…

基于SpringBoot+Vue+uniapp的电影信息推荐APP的详细设计和实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不…

PCL 点云配准-4PCS算法(粗配准)

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 加载点云数据 2.1.2 执行4PCS粗配准 2.1.3 可视化源点云、目标点云和配准结果 2.2完整代码 三、实现效果 3.1原始点云 3.2配准后点云 PCL点云算法汇总及实战案例汇总的目录地址链接…

猫分鱼干 -算法题解

题目 假如有一群猫排成一行,要分配鱼干,每一只猫都有一个等级值。你作为管理员有很多鱼干但是需要按下边的分配制度分配: 1. 每一只猫至少要分配一斤鱼干,鱼干分配最小单位是斤,必须保证是整数。 2. 猫比他们邻居有更高…

沥川的算法学习笔记:基础算法(1)----快速排序

1.快速排序 快速排序是一种高效的排序算法,它利用了分治的思想。快速排序的基本思想是选择一个基准元素,将数组分成两个子数组,其中一个子数组的元素都小于等于基准元素,另一个子数组的元素都大于等于基准元素,然后对这…

JavaCove部署文档

1. 基础配置 1.1服务器: 2 核 2G 1.2. 一个域名 1.3. 项目地址: gitee:https://gitee.com/guo-_jun/JavaCove github:https://github.com/nansheng1212/JavaCove 2. CentOS 安装 Docker 官方网站上有各种环境下的 安装指南,这里主要介绍…

jquery实现点击菜单实现高德地图定位点与数据展示联动效果

🍊jquery实现点击菜单实现高德地图定位点与数据展示联动效果 版本介绍: jQuery v3.7.1高德地图JS API 2.0 代码仓库 ⭐ Gitee:实现点击菜单实现高德地图定位点与数据展示联动效果 1.启动说明 📔 推荐VS Code编辑器插件Live Ser…

论文笔记:RelationPrompt :Zero-Shot Relation Triplet Extraction

论文来源: ACL Findings 2022 论文链接:https://arxiv.org/pdf/2203.09101.pdf 论文代码:http://github.com/declare-lab/RelationPrompt 本篇论文是由阿里达摩院自然语言智能实验室于2022年发表的关于零样本关系抽取的顶会论文,本篇博客将记录我在阅读过程中的一些笔记…

jmeter中对于有中文内容的csv文件怎么保存

jmeter的功能很强大,但是细节处没把握好就得不到预期的结果。今天来讲讲有中文内容的csv文件的参数化使用中需要注意的事项。 对于有中文内容,涉及到编码格式,为了让jmeter能正确地读取csv文件中的中文,需要把文件转码为UTF-8BOM…

OPENSSL-2023/11/10学习记录-C/C++对称分组加密DES

对称分组加密常用算法: DES 3DES AES 国密SM4 对称分组加密应用场景: 文件或者视频加密 加密比特币私钥 消息或者配置项加密 SSL通信加密 对称分组加密 使用异或实现一个简易的对称加密算法 A明文 B秘钥 AB密文AB (AB)B A 密码补全和初始化 数…

数据操作学习

1.导入torch。虽然被称为PyTorch,但应导入torch而不是pytorch import torch 2.张量表示一个数值组成的数组,这个数组可能有多个维度 xtorch.arange(12)x 3.通过张量的shape属性来访问张量的形状和张量中元素的总数 x.shape x.numel() 4.要改变张量的形…

LangGraph - Hierarchical Agent Teams

本文翻译整理自 Hierarchical Agent Teams https://langchain-ai.github.io/langgraph/tutorials/multi_agent/hierarchical_agent_teams/ 文章目录 一、前言二、设置三、创建工具四、Helper Utilities五、定义代理 Team研究 Team文档写作Team 六、添加图层 一、前言 在前面的…

【高阶数据结构】揭开红黑树‘恶魔’的面具:深度解析底层逻辑

高阶数据结构相关知识点可以通过点击以下链接进行学习一起加油!二叉搜索树AVL树 大家好,我是店小二,欢迎来到本篇内容!今天我们将一起探索红黑树的工作原理及部分功能实现。红黑树的概念相对抽象,但只要我们一步步深入…

Java使用HttpClient5实现发送HTTP请求

1、HttpClient5 的介绍 HttpClient5 是 Apache HttpComponents 项目中的一个重要组件,它是一个功能齐全且高度可定制的 HTTP 客户端库,专门用于发送 HTTP 请求、处理 HTTP 响应并支持各种 HTTP 协议特性。 以下是对 HttpClient5 的详细介绍&#xff1a…

部署Qwen2.5-7b大模型详解

部署Qwen2.5-7b大模型详解 本文参考教程:https://qwen.readthedocs.io/en/latest/getting_started/quickstart.html 下载模型 https://modelscope.cn/organization/qwen 搜索 qwen2.5-7b 可以看到它提供了六个模型,以满足不同的需求,从下…

【RoadRunner】自动驾驶模拟3D场景构建 | 软件简介与视角控制

💯 欢迎光临清流君的博客小天地,这里是我分享技术与心得的温馨角落 💯 🔥 个人主页:【清流君】🔥 📚 系列专栏: 运动控制 | 决策规划 | 机器人数值优化 📚 🌟始终保持好奇心&…

【MATLAB代码,带TDOA数据导入】TDOA三维空间的位置(1主锚点、3副锚点),多个时间点、输出位置的坐标

TDOA介绍 TDOA(到达时间差)是一种用于定位和跟踪信号源的技术,常用于无线通信、导航和雷达系统。它通过测量信号到达不同接收器的时间差,来计算信号源的位置。 基本原理 TDOA的基本原理是利用多个接收器(或锚点&…