云布道师
作者简介:本文作者曾志明博士毕业于中科院地理所 GIS(地理信息系统)专业,从事 GIS 基础软件开发 20 余年。今年整个 IT 界、甚至科技界最火爆的技术就是 AI 大模型了,没有之一。
今年整个 IT 界、甚至科技界最火爆的技术就是 AI 大模型了,没有之一。
以 OpenAI 的 GPT 为代表、国内外一众大模型跟进,形成了百模齐奔的态势。围绕着大模型,各项周边的应用也在快速发展。在 2023 年年底的云栖大会上,论坛标题带有“大模型”的搜索一下,有三十个之多。搞技术的同学朋友一聊天,不提大模型,都没得可聊了。
笔者从事 GIS 开发多年,现在在阿里云-政企事业部-解决方案研发部,从事“空间数据中台”的研发。原本对 AI 技术尤其是 NLP 自然语言处理领域了解有限,但机缘巧合,也了解和学习了一些与大模型相关的知识和应用。在 AI 大模型时代已经来临的当下,对 GIS 与大模型可能能碰撞出的火花,做一点自己的分享。
首先还是阐述我对大模型重要性的认识。无论是从 IT 角度、还是从科技发展角度、甚至从人类演化角度,大模型的出现都是划时代的。
从 IT 角度,有人把大模型类比为带动移动互联网的智能手机;也有人把大模型类比为互联网,甚至能和发明计算机的意义比肩。
从科技发展角度,大模型已经具备了能替代人的部分脑力劳动,那么它的重要性甚至就可以与蒸汽机、或者与电动机的重要性比肩了。
从人类演化角度来说,在语言出现之前,物种对环境的适应只能通过基因突变和自然选择来演化,时间是以十万年为起点的;有了语言,知识和经验可以面对面的交流和传递,物种代际之间就能传递知识和经验;有了文字和纸张,知识和经验可以记录下来,传播到远方和未来;有了互联网和搜索引擎,知识和经验可以即时、廉价的传播到全世界,人人都可以从知识的海洋中通过关键词挖掘自己想要的信息。
现在有了大模型,能把全球浩瀚的知识海洋转化为模型的亿万个参数,人人就有了一个无所不知、不知疲倦的超级老师在身边,可随时随地的获取知识,解疑答惑。这时,人的时间精力就可以放到知识的联系和创新突破上,而不用再受限于未知的知识领域,整体的效率提升不是一星半点。从这个意义上讲,未来人类会分为两种:用大模型的,和不用大模型的。而到具体的行业和应用系统层面,也是如此,没有运用到大模型能力就注定会被淘汰。所有行业与产品,都值得且必须用AI大模型再做一遍。
那么,在 GIS(地理信息系统)领域,如何能发挥 AI 大模型的威力呢?我综合这几个月的所学、所思、所见和所做,总结为以下几个方面。
一.遥感影像的识别和提取
首先想到的就是对遥感影像数据的识别和提取。这个能力很早就广泛的运用了卷积神经网络(CNN),并取得了不错的效果。
在以“Transformer”网络架构为核心的大模型技术出现后,已经有不少基于(或者叠加)Transformer结构来优化遥感影像的识别和提取。典型的代表有:视觉Transformer(Vision Transformer, ViT) 和 Swin Transformer 等。
图片来源:https://arxiv.org/pdf/2010.11929.pdf
比较多的研究表明:在训练数据和算力足够的情况下,采用了 Transformer 的遥感影像识别和提取的效果,能优于只基于 CNN 的效果。
这部分工作,现在已经支持的厂商包括:商汤、航天宏图、达摩院 AIEarth 和超图软件等。
这个领域另一个很惊艳的技术是以 SAM 和 SEEM 为代表图片切割,以 CLIP 和 BLIP 为代表的图片和文字关联的多模态技术。SAM 和 SEEM 是无需再训练,或者只提供一个或少量样本,实现对图片的万物分割。CLIP 和 BLIP 则是在统一框架内实现对文字和图片的编码,这样就能以文索图,做到对图片的语义检索。这两者背后都是以 Transformer 为核心的大模型技术。
图片来源:https://github.com/facebookresearch/segment-anything
图片切割技术也已经得到了较多广泛的应用,典型的如达摩院 AIEarth 的 AIE-SEG 万物提取,通过一个样本,就可识别和分割其他遥感影像中同类型的物体。
当然,基于 Transformer,也有研究在做基于 3D 点云的识别和切割,不再累述。
二.生成式大模型
对文字生成图片这样的生成式大模型,背后的技术是扩散模型。由于扩散模型并非采用 Transformer 结构,参数量往往也没有达到大语言模型动辄以“十亿”为起点的规模。因此从狭义上,扩散模型算不上“大模型”的范畴。由于扩散模型和 GPT 一样,是生成式模型,和传统的 GAN(对抗神经网络)不同,从广义上讲,也可归属到当前这股 AI 大模型的浪潮。
对生成式大模型而言,已经看到有城市规划单位在生成建筑设计和城市规划效果图,不过这个属于规划行业应用,和典型的 GIS 关联并不紧密。
图片来源:https://yunqi.aliyun.com/2023/subforum/YQ-C-761332
在地图配图上,超图桌面几年前就实现选择某个图片来给地图做配图风格。但这个其实是图片的主颜色分析,而非 AI 生成地图。这个领域与生成式大模型的结合,可以探索的方向是:GIS 软件生成的地图到打印前图片的转换,即输入地图配置,自动生成美化后的、面向不同领域和风格的图片。
还有一个和三维 GIS 关联很密切的 AI 技术进展,就是神经辐射场(NeuralRadiance Fields,简称 NeRF)。NeRF 是一种计算机视觉技术,用于生成高质量的三维重建模型。对比与传统的 SFM+MVS 技术来构建倾斜摄影三维模型,NeRF 技术能直接输出各个视角的图片,真实感好,且不会出现空洞,对于设定飞行路线后的视频制作效果很好;但本身不能直接输出三维模型,虽然可以通过后续算法得到三维模型,但几何精度的提升,较大依赖采集图像的高重叠率,要达到 GIS 应用的要求还任重而道远。谷歌和阿里达摩院都在开展 NeRF 技术的研究。
视频为云谷园区的 NeRF 重建
对于最火热的大语言模型的应用,对于任何软件和应用系统,都会有一个使用助手的需要。把该软件的专业知识和使用文档等,输入到大语言模型中。用户在使用过程中,在需要一个不知道如何操作的功能时,自然就会有这个需求,不再累述。
三.基于大模型的空间计算自动编排
还有一个和 GIS 紧密相关,也是笔者最近在尝试的,就是空间计算的 AI 自动编排。
GIS 面临的空间数据类型多样,基于不同类型的空间数据又有各种各样的空间计算。为了让不会写代码的人更好的运用 GIS 能力解决业务问题,ArcGIS、超图等 GIS 软件,都有一个空间算子的编排工具。ArcGIS 中叫做 Model Builder,超图中为地理处理建模。阿里云的 DataQ 空间数据中台也有类似的能力。
举例而言,GIS 软件都会有:buffer(求缓冲区)、overlay(叠加分析)和 area(求面积)等空间分析的算子,输入数据,就能得到对应的结果。当有用户需要做一个业务分析,如在要规划一条铁路,需要计算规划中的铁路所占用的耕地面积,那么用户可以在空间算子的界面中拖入需要的上述三个算子,用线连接起来,再设定好铁路数据、缓冲区半径和耕地数据,执行之后就能得到需要的结果。
对于这类较为简单的任务,熟悉 GIS 中的空间算子和业务要求的人员,可以在很短的时间内完成上述工作。后续还可以设定的不同数据作为输入,就能重复使用。
但若业务更加复杂,且 GIS 算子库往往有几十乃至几百个个的情况下,对于不够熟悉 GIS 算子能力的业务而非技术人员而言,即便拖拖拽拽,也会耗费大量时间精力,且还有可能由于找不到相应的算子而犯愁。
举个例子,任务指令为“修一条铁路,宽度为 50 米,需要分组统计所占用周边坡度小于 10 度、海拔小于 100 米、所属地区的耕地面积,并汇总到所属地区,从大到小的顺序进行排序”。若不仔细琢磨,要在几分钟内完成下面的计算编排,对人来说确实要求就非常高了。
由于 GIS 的领域知识都是通用的“世界知识”,对于训练良好的大语言模型而言,在业务人员把业务要求转换为 GIS 的任务指令后,大语言模型是能够理解其要求,并把任务指令转换为对算子的调用逻辑。
这里需要指出的是,由于不同 GIS 引擎所支持的算子不同,我们还应把当前系统可以调用的空间算子描述和任务指令同时提供给大语言模型,这样大语言模型就能根据任务指令,返回对空间算子调用的 JSON 描述。最后系统再根据这个 JSON 描述,来实现对空间算子的实际执行。这样,业务人员只需要给出任务指令,在极短时间内就能得到自己需要的算子编排结果,可以大大提升工作效率。整个逻辑图如下。
当然,这是一个简单的过程描述,深入下去还有不少需要解决的问题。
如:当算子较多时,如果不加选择,一股脑把所有算子的描述都输给大语言模型,则很容易出现 token 超量的问题。这就需要先把所有算子的名字和最简单的描述随同任务指令给大语言模型,让大语言模型做一次初筛,然后再把筛选出来的算子给大语言模型进行算子编排。
再如:对于较为复杂的任务,大语言模型不一定能完全准确的领会任务指令的意图,从而给出存在瑕疵的结果。这时,就需要程序能自动识别出典型错误,或者提供多轮对话的方式,由人来指出问题,从而提示大语言模型可以根据用户反馈修正结果。
对于防止大语言模型“不够聪明”的最后办法就是系统只给出算子编排的结果,但不立即执行,由使用者检查编排的结果,对存在的问题进行手动调整。这样对使用者的要求就提高了,但也有实际的价值,因为人能通过大语言模型返回的结果直观了解到基本的思路,加速从任务到算子调用编排的过程。
还有就是大语言模型能编排的并非只有空间算子,同时也能实现对非空间算子的编排,用户也能自行扩展算子及其描述,系统会一并纳入并提供给大语言模型进行编排。
有了这个初步想法,心动不如行动。笔者按照上述思路做了一个初步的 demo,欢迎感兴趣的同学联系交流。
demo 的核心在于构造提示词给大语言模型,并检查大语言模型返回的 json 结果,以及把 json 结果转换为算子 DAG 编排进行执行。可运行的算子目前只提供了少量空间算子和统计排序等非空间算子,但具备算子的可扩展能力。同时还提供了对大语言模型的扩展,目前提供了 GPT4、ChatGPT、通义千问、文心一言、清华智谱和code llama 等。
从目前来看,GPT4 的表现最优,可一次性或最多一到两次纠错的情况下,就能完成上面十余个算子编排的复杂任务;更复杂的任务编排还有待进一步验证。ChatGPT和升级到 2.0 的通义千问也能在若干次纠错的情况下完成上述复杂任务的编排。
当然,目前所做的仅仅只是一个简单的 demo,要在一个产品中提供成熟稳定的能力,还有大量的工作需要后续开展。我们也会继续努力,争取早日在后续正式产品中输出。
另外,既然大模型能做算子的自动编排,那自然也能直接输出 SQL,包括带“ST_”的空间 SQL。阿里云 DataQV5 版本的“数据洞察”模块中即将提供自然语言生成通用SQL 能力,敬请期待。
以上总总,仅是笔者的有限认知,随着 AI 大模型技术的发展,大模型和 GIS、和数据智能的结合一定会爆发出更多的应用点。让我们拭目以待,一起拥抱 AI 大模型!