本专题由深圳季连AIgraphX张博及团队出品,主要探讨大模型在自动驾驶领域的应用与实现。
1956年,达特茅斯会议,“人工智能”(Artificial Intelligent,AI)概念被首次提出,人工智能作为一个学科开始被研究。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。它试图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。这个领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。
周志华在其著作《机器学习》一书中,将机器学习定义为一种让计算机从数据中学习并改进自身性能的技术。具体来说,机器学习利用大量的标注或未标注数据进行训练,以从中提取有用的信息和规律,然后利用这些信息和规律对未知的数据进行预测或分类。通过这种方式,机器能够逐渐适应各种新情况,并根据其已学习的知识进行推理和判断。
与传统的为解决特定任务、硬编码的软件程序不同,机器学习是用大量的数据来“训练”,通过各种算法从数据中学习如何完成任务。传统程序是人来梳理规则,机器学习程序是机器来学习数据,从数据中总结经验。
传统程序识别猫:输入信息(比如图片),让计算机判断是否有毛茸茸的毛?是,然后再判断是否有一堆三角形的耳朵?是,然后再判断......直到判断了具备猫所有的特征,结论才是猫。如果有一项不符合,那就不是猫。当然,也可以通过判断“不具备什么特征”来进行判断,比如“身上有黑白花纹吗?”没有。传统方式要制定判断某一类别或概念的全部所需规则,梳理全部的所需规则就很难,而单个规则也可能会涉及到一些困难的概念,比如对毛茸茸的定义。
机器自学程序识别猫:计算机提供大量猫的照片,随着各种猫的照片的增加,系统会不断学习更新,最终能准确地判断出哪些是猫,哪些不是。这里有三个基础概念:
虽然传统的机器学习算法在指纹识别、人脸检测等领域的应用基本达到了商业化要求,但“再进一步”却很艰难,直到深度学习算法的出现。
很多人分不清:模型、算法、程序这三个词的区别?
深度学习(Deep Learning,DL)是机器学习(Machine Learning,ML)领域中一个分支,它被引入机器学习使其更接近于最初的目标——人工智能AI。
以人脸识别为例子,感受一下机器学习和深度学习的不同。
机器学习程序: 首先确定想学习人脸的“面部特征”(眼睛、鼻子等等),然后根据输入的数据学习这些“面部特征”,最后依据这些“面部特征”来识别是不是人脸。
而深度学习程序是直接学习识别判断“是不是人脸”,并不需要我们告诉机器去学习哪些“面部特征”,是机器自动学习的。只需要将“数据”喂给机器,深度学习程序就自动学会了识别判断是不是人脸。对于“使用”来说,深度学习程序就是个黑箱,我们并不确定它学习到了什么,是“面部特征”还是“轮廓特点”,只是给它一张照片输入,它就实现了识别判断。深度学习算法专家深入研究算法的各层,分析出来机器是通过先学习细节特征、再组合成更宏观的特征,最后形成“人脸”的总体感知能力。基本是分为三步:
机器学习是一种实现人工智能的方法,深度学习是一种实现机器学习的技术。
具体不同大致有以下几点。
前面讲到了“模型”是现实化的一种抽象,抽象成数学公式。即使深度学习的出发点是更深层次的神经网络,但细分起来也会有非常多的不同的模型(也就是不同的抽象问题的方式),对应不同的数学公式,比如常见的CNN、DNN等。
大模型是大规模语言模型(Large Language Model,LLM)的简称,简而言之就是指参数规模超过千万的深度学习模型。
2021年8月份,李飞飞和100多位学者联名发表一份200多页的研究报告《On the Opportunities and Risk of Foundation Models》,详细描述了当前大规模预训练模型面临的机遇和挑战。在文章中,大模型被统一命名为Foundation Models,可以翻译为基础模型或者是基石模型。
总之,4者之间的关系如下图所示:
大模型的特点主要表现在以下方面:
1. 大规模数据集:大模型需要处理大量的数据才能学到广泛的知识和模式,因此需要使用大规模的数据集。同时,数据集的多样性也能够帮助模型学习到更广泛的知识。
2. 多任务学习:大模型可以同时处理多个任务,这样可以让模型学习到更广泛的知识和技能。例如,语言模型可以学习到词义、语法、语义等多个方面的知识。
3. 模型架构和技术:大模型可以采用不同的模型架构和技术来优化模型的精度和效率。例如,Transformer模型可以用于处理自然语言处理任务,而卷积神经网络可以用于处理图像识别任务。
4. 模型优化:大模型需要进行参数优化,以提高模型的精度和效率。例如,可以使用梯度下降等优化算法来训练模型,同时也可以使用正则化等技术来防止过拟合。
5. 巨大的规模:大模型包含数十亿个参数,模型大小可以达到数百GB甚至更大。巨大的模型规模使它们拥有强大的表达能力和学习能力。
总之,大模型在处理大规模数据集、多任务学习和模型架构优化等方面具有显著的优势。
在往下看之前,想抛出几个问题,希望引起大家的一个思考:
李飞飞等提出的《On the Opportunities and Risks of Foundation Models》 论文,充分肯定了Foundation Models对智能体基本认知能力的推动作用,同时也指出大模型呈现出「涌现」与「同质化」的特性。
回到大模型,2017年Transformer结构的提出,使得深度学习模型参数突破了1亿。到了BERT网络模型的提出,使得参数量首次超过3亿规模,GPT-3模型超过百亿,近两年国内的大模型也蓬勃发展,已经出来多个参数超过千亿、万亿的大模型。
可以看到,数据上面,每一代均相比前一代有了数量级的飞跃,无论是语料的覆盖范围、丰富度上都是绝对规模的增长。可以预测到,下一代万亿模型,使用的数据如果相比GPT-3在质量、来源和规模上没有量级的变化,很难有质的提升。大模型在产学各界掀起一阵阵巨浪,背后彰显的除了分布式并行和对AI算法的掌控能力,还是一次大公司通过AI工程的创举,利用大规模AI集群来进行掰手腕的故事。
随着网络模型越来越大,单机单卡、一机多卡、甚至多机多卡的小规模集群,只要网络模型参数量一旦超过十亿以上的规模,就很难用现有的资源训练了。于是有的研究者就会提出质疑:
这里值得澄清的一点是,目前类似于GPT-3这样的大模型,在零样本和小样本的学习能力,主要来源于预训练阶段对海量语料的大量记忆,其次是语义编码能力、远距离依赖关系建模能力和文本生成能力的强化,以及自然语言进行任务描述等设计。而在训练目标方面,并没有显式的引导模型去学习小样本泛化能力,因此在一些小众的语料、逻辑理解、数学求解等语言任务上出现翻车的现象也是能理解的。
虽然大模型刚提出的时候,质疑的声音会有,但不可否认的是,大模型做到了早期预训练模型做不到、做不好的事情,就好像自然语言处理中的文字生成、文本理解、自动问答等下游任务,不仅生成的文本更加流畅,甚至内容的诉实性也有了显著的改善。当然,大模型最终能否走向通用人工智能仍是一个未知数,只是,大模型真的是有希望带领下一个很重要的人工智能赛道。
虽然深度学习使得很多通用领域的精度和准确率得到很大的提升,但是AI模型目前存在很多挑战,最首要的问题是模型的通用性不高,也就是A模型往往专用于特定A领域,应用到领域B时效果并不好。
目前AI面对行业、业务场景很多,人工智能需求正呈现出碎片化、多样化的特点。从开发、调参、优化、迭代到应用,AI模型研发成本极高,且难以满足市场定制化需求,所以网上有的人会说现阶段的AI模型研发处于手工作坊式。基本上一个公司想要用AI赋能自身的业务,多多少少也得招聘懂AI的研发人员。
为了解决手工作坊式走向工场模式,大模型提供了一种可行方案,也就是“预训练大模型+下游任务微调”的方式。大规模预训练可以有效地从大量标记和未标记的数据中捕获知识,通过将知识存储到大量的参数中并对特定任务进行微调,极大地扩展了模型的泛化能力。例如,在NLP领域,预训练大模型共享了预训任务和部分下游任务的参数,在一定程度上解决了通用性的难题,可以被应用于翻译,问答,文本生成等自然语言任务。
大模型可以集中来自各种模态的所有数据的信息,然后该模型可以适应各种下游任务。
继GPT-3问世仅仅不到一年的时间,Google重磅推出Switch Transformer,直接将参数量从GPT-3的1750亿拉高到1.6万亿,并比之前最大的、由google开发的语言模型T5-XXL足足快了4倍。
在惊人的数据量和可怕的网络模型参数下,Switch Transformer 模型在多项推理和知识任务中带来了显著性能提升。这说明该超大模型架构不只对预训练有用,还可以通过微调将质量改进迁移至下游任务中。
Google Switch Transformer网络架构
大模型的自监督学习方法,可以减少数据标注,在一定程度上解决了人工标注成本高、周期长、准确度不高的问题。由于减少了数据标准的成本,使得小样本的学习也能达到比以前更好的能力,并且模型参数规模越大,优势越明显,避免开发人员再进行大规模的训练,使用小样本就可以训练自己所需模型,极大降低开发使用成本。
2018年Bert首次提出,便一举击败 11 个 NLP 任务的 State-of-the-art 结果,成为了 NLP 界新的里程碑,同时为模型训练和NLP领域打开了新的思路:在未标注的数据上深入挖掘,可以极大地改善各种任务的效果。要知道,数据标注依赖于昂贵的人工成本,而在互联网和移动互联网时代,大量的未标注数据却很容易获得。
第三点,从深度学习发展前10年的历程来看,模型精度提升,主要依赖网络在结构上的变革。例如,从AlexNet到ResNet50,再到NAS搜索出来的EfficientNet,ImageNet Top-1 精度从58提升到了84。但是,随着神经网络结构设计技术,逐渐成熟并趋于收敛,想要通过优化神经网络结构从而打破精度局限非常困难。近年来,随着数据规模和模型规模的不断增大,模型精度也得到了进一步提升,研究实验表明,模型和数据规模的增大确实能突破现有精度的一个局限。
以谷歌2021年发布的视觉迁移模型Big Transfer,BiT为例。扩大数据规模也能带来精度提升,例如使用ILSVRC-2012(128 万张图片,1000 个类别)和JFT-300M(3亿张图片,18291个类别)两个数据集来训练ResNet50,精度分别是77%和79%。另外使用 JFT-300M训练ResNet152x4,精度可以上升到87.5%,相比ILSVRC-2012+ResNet50结构提升了10.5%。
虽然目前为止,大模型主要是以NLP为主,因为NLP抛弃了RNN序列依赖的问题,采用了Attention is All you need的Transformer结构,使得NLP能够演变出更多大模型。但是在最新的研究当做,图像领域也不甘示弱,CNN大模型也开始陆续涌现。例如ResNeXt WSL拥有8亿参数、GPipe拥有6亿参数规模,Google也通过EfficientNet-L2发布了4.8亿参数规模的网络模型,并且在JFT-300M数据集刷新了ImageNet的榜单,Top-1 Acc首次突破90。要知道在2020年,也就是1年前,大部分CNN网络模型规模都没有超过1亿,Top-1 Acc最高在87-89之间。
大模型在生物医疗、教育、法律援助等方面有广阔的应用前景,当前在自动驾驶、零售等方面有很多实际应用。特斯拉将Transformer引入自动驾驶系统,来实现AI模型效果的大幅优化。通过Transformer实时建模能力,对多模态融合感知数据进行感知融合,搭建具有时序特征的立体场景,提供了端到端大模型自动驾驶的解决方案。
下面从大模型的能力层面来探讨其潜在的应用场景。
通过在规模上利用自我监督,视觉基础模型有可能将原始的、多模态的感官信息提取到视觉知识中,这可能有效地支持传统的感知任务,并可能在时间和常识推理等具有挑战性的高阶技能方面取得新的进展。这些输入可以来自不同的数据源和应用领域,这表明在医疗保健和具体的交互式感知环境中的应用前景广阔。
构建新型机器人基础模型将需要跨越不同环境和行为的大量数据集,模拟、机器人交互、人类视频和自然语言描述都可能是这些模型的有用数据源。尽管在获取数据方面存在挑战,但开发新的机器人基础模型对于任务规范和机器人学习中的各种问题公式具有巨大的潜力。
多模态可以让基础模型不仅用形式符号语言推理,还可以利用问题的视觉方面,如等价性、对称性和欧几里得几何,来修剪无限的搜索空间,并找到有前景的解决方案,模仿人类推理几何问题的方式。
基础模型将通过降低构建人工智能应用程序的难度阈值,为开发人员带来重大机遇,并通过提高可实现的交互类型的上限,为应用程序用户带来重大机遇。在某些情况下,开发者和用户之间的界限将开始模糊,用户可能能够轻松地开发自己的人工智能应用程序,例如使用自然语言。
大模型核心技术比较多,主要经历了从Transformer,RL之PPO算法、RLHF到GPT4、instructGPT的变迁。李飞飞等把大模型涉及的技术归纳为以下11方面。
考虑到非一蹴而就,而是经历了各个前置技术的发展、迭代、结合而成,故逐一阐述:
多模态大模型 CLIP, BLIP, BLIP2, LLaVA, miniGPT4, InstructBLIP 系列解读如下图:
关于大模型核心技术原理,涉及内容较多,后续文章详述。
目前部分深度学习框架,例如Pytorch和Tensorflow,没有办法满足超大规模模型训练的需求,于是微软基于Pytroch开发了DeepSpeed,腾讯基于Pytroch开发了派大星PatricStar,达摩院同基于Tensoflow开发的分布式框架Whale。像是华为昇腾的MindSpore、百度的PaddlePaddle,还有国内的追一科技OneFlow等厂商,对超大模型训练进行了深度的跟进与探索,基于原生的AI框架支持超大模型训练。
下面展开DeepSpeed和MindSpore来简单了解下。
2021年2月份微软发布了DeepSpeed,最核心的是显存优化技术ZeRO(零冗余优化器),通过扩大规模、内存优化、提升速度、控制成本,四个方面推进了大模型训练能力。基于DeepSpeed微软开发了拥有170亿参数的图灵自然语言生成模型(Turing-NLG)。(2021年5月份发布的ZeRO-2,更是支持2000亿参数的模型训练),另外微软联手英伟达,使用4480块A100组成的集群,发布了5300亿参数的NLP模型威震天-图灵(Megatron Turing-NLG)。
当然,作为国内首个支持千亿参数大模型训练的框架MindSpore这里面也提一下。在静态图模式下,MindSpore融合了流水线并行、模型并行和数据并行三种并行技术,开发者只需编写单机算法代码,添加少量并行标签,即可实现训练过程的自动切分,使得并行算法性能调优时间从月级降为小时级,同时训练性能相比业界标杆提升40%。
动态图模式下,MindSpore独特的函数式微分设计,能从一阶微分轻易地扩展到高阶微分,并进行整图性能优化,大幅提升动态图性能;结合创新的通讯算子融合和多流并行机制,较其它AI框架,MindSpore动态图性能提升60%。
最后就是针对大模型的训练,网上很多人会说,大模型需要“大数据+大算力+强算法”三驾马车并驾齐驱。
ZOMI并不是非常认同这个观点,大模型首先是需要规模更大的海量数据,同时需要庞大的算力去支撑这个说没错。但是整体来说,这是一个系统工程,从并行训练到大规模并行训练,其中就包括对AI集群调度和管理,对集群通讯带宽的研究,对算法在模型的并行、数据的并行等策略上与通讯极限融合在一起考虑,求解在有限带宽前提下,数据通讯和计算之间的最优值。
目前在大模型这个系统工程里面,最主要的竞争对手有基于英伟达的GPU+微软的DeepSpeed,Google的TPU+Tensorflow,当然还有华为昇腾Atlas800+MindSpore三大厂商能够实现全面的优化。至于其他厂商,大部分都是基于英伟达的GPU基础上进行一些创新和优化。最后就是,核心技术在市场上并不是最重要的,谁能够为客户创造更大的价值,才是最后的赢家。
这几年深感跟不上这追新打快、日新月异的大模型,更无从了解它们到底是何门何派,用的哪套武功。这个时候可能就需要请出一篇大模型综述来帮忙了!这篇由亚马逊、得克萨斯农工大学与莱斯大学的研究者推出的大模型综述《Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond》,为我们以构建一颗“家谱树”的方式梳理了以 ChatGPT 为代表的大模型的前世今生与未来。它从任务出发,首先为我们搭建了非常全面的大模型实用指南,其次还介绍了大模型在不同任务中的优缺点,最后指出了大模型目前的风险与挑战。
家谱树
追寻大模型的“万灵之主”,大抵应该从那篇《Attention is All You Need》开始,基于这篇由谷歌机器翻译团队提出的由多组 Encoder、Decoder 构成的机器翻译模型 Transformer 开始,大模型的发展大致走上了两条路,一条路是舍弃 Decoder 部分,仅仅使用 Encoder 作为编码器的预训练模型,其最出名的代表就是 Bert 家族。这些模型开始尝试“无监督预训练”的方式来更好的利用相较其他数据而言更容易获得的大规模的自然语言数据,而“无监督”的方式就是 Masked Language Model(MLM),通过让 Mask 掉句子中的部分单词,让模型去学习使用上下文去预测被 Mask 掉的单词的能力。在 Bert 问世之处,在 NLP 领域也算是一颗炸弹,同时在许多自然语言处理的常见任务如情感分析、命名实体识别等中都刷到了 SOTA,Bert 家族的出色代表除了谷歌提出的 Bert 、ALBert之外,还有百度的 ERNIE、Meta 的 RoBERTa、微软的 DeBERTa等等。
可惜的是,Bert 的进路没能突破 Scale Law,而这一点则由当下大模型的主力军,即大模型发展的另一条路,通过舍弃 Encoder 部分而基于 Decoder 部分的 GPT 家族真正做到了。GPT 家族的成功来源于一个研究人员惊异的发现:“扩大语言模型的规模可以显著提高零样本(zero-shot)与小样本(few-shot)学习的能力”,这一点与基于微调的 Bert 家族有很大的区别,也是当下大规模语言模型神奇能力的来源。GPT 家族基于给定前面单词序列预测下一个单词来进行训练,因此 GPT 最初仅仅是作为一个文本生成模型而出现的,而 GPT-3 的出现则是 GPT 家族命运的转折点,GPT-3 第一次向人们展示了大模型带来的超越文本生成本身的神奇能力,显示了这些自回归语言模型的优越性。而从 GPT-3 开始,当下的 ChatGPT、GPT-4、Bard 以及 PaLM、LLaMA 百花齐放百家争鸣,带来了当下的大模型盛世。
从合并这家谱树的两支,我们可以看到早期的 Word2Vec、FastText,再到预训练模型的早期探索 ELMo、ULFMiT ,再到 Bert 横空出世红极一时;看到GPT 家族默默耕耘直到 GPT-3 惊艳登场,ChatGPT 一飞冲天,技术的迭代之外也可以看到 OpenAI 默默坚持自己的技术路径最终成为目前 LLMs 无可争议的领导者;看到 Google 对整个 Encoder-Decoder 模型架构做出的重大理论贡献;看到 Meta 对大模型开源事业的持续慷慨的参与;当然也看到从 GPT-3 之后 LLMs 逐渐趋向于“闭”源的趋势,未来很有可能大部分研究不得不变成 API-Based 的研究。
Fig,The evolutionary tree of modern LLMs traces the development of language models in recent years and highlights some of the most well-known models. Models on the same branch have closer relationships. Transformer-based models are shown in non-grey colors: decoder-only models in the blue branch, encoder-only models in the pink branch, and encoder-decoder models in the green branch. The vertical position of the models on the timeline represents their release dates. Open-source models are represented by solid squares, while closed-source models are represented by hollow ones. The stacked bar plot in the bottom right corner shows the number of models from various companies and institutions.如图,现代LLM的进化树追溯了近年来语言模型的发展,并突出了其中一些最著名的模型。同一分支上的模型具有更紧密的关系。基于Transformer的模型以非灰色显示:蓝色分支中仅解码器模型,粉色分支中仅编码器模型,绿色分支中编码器-解码器模型。模型在时间线上的垂直位置表示它们的发布日期。开源模型由实心方块表示,而闭源模型由空心方块表示。右下角的堆叠条形图显示了来自不同公司和机构的模型数量。
数据
归根结底,大模型的神奇能力是来源于 GPT 么?我觉得答案是否定的,GPT 家族几乎每一次能力的跃迁,都在预训练数据的数量、质量、多样性等方面做出了重要的提升。大模型的训练数据包括书籍、文章、网站信息、代码信息等等,这些数据输入到大模型中的目的,实质在于全面准确的反应“人类”这个东西,通过告诉大模型单词、语法、句法和语义的信息,让模型获得识别上下文并生成连贯响应的能力,以捕捉人类的知识、语言、文化等等方面。
一般而言,面对许多 NLP 的任务,我们可以从数据标注信息的角度将其分类为零样本、少样本与多样本。无疑,零样本的任务 LLMs 是最合适的方法,几乎没有例外,大模型在零样本任务上遥遥领先于其他的模型。同时,少样本任务也十分适合大模型的应用,通过为大模型展示“问题-答案”对,可以增强大模型的表现性能,这种方式我们一般也称为上下文学习(In-Context Learning)。而多样本任务尽管大模型也可以去覆盖,但是微调可能仍然是最好的方法,当然在一些如隐私、计算等约束条件下,大模型可能仍然有用武之地。
同时,微调的模型很有可能会面对训练数据与测试数据分布变化的问题,显著的,微调的模型在 OOD 数据上一般表现都非常差。而相应的,LLMs 由于并没有一个显式的拟合过程,因此表现要好许多,典型的 ChatGPT 基于人类反馈的强化学习(RLHF)在大部分分布外的分类与翻译任务中都表现优异,在专为 OOD 评估设计的医学诊断数据集 DDXPlus 上也表现出色。
实用指南
很多时候,“大模型很好!”这个断言后紧跟着的问题就是“大模型怎么用,什么时候用?”,面对一个具体任务时,我们是应该选择微调、还是不假思索的上手大模型?这篇论文总结出了一个实用的“决策流”,根据“是否需要模仿人类”,“是否要求推理能力”,“是否是多任务”等一系列问题帮我们判断是否要去使用大模型。
而从 NLP 任务分类的角度而言:
传统自然语言理解
目前拥有大量丰富的已标注数据的很多 NLP 任务,微调模型可能仍然牢牢把控着优势,在大多数数据集中 LLMs 都逊色于微调模型,具体而言:
总之,对于大多数传统自然语言理解的任务,微调模型的效果更好。当然 LLMs 的潜力受限于 Prompt 工程可能仍未完全释放(其实微调模型也并未达到上限),同时,在一些小众的领域,如 Miscellaneous Text Classification,Adversarial NLI 等任务中 ,LLMs 由于更强的泛化能力因而具有更好的性能,但是在目前而言,对于有成熟标注的数据而言,微调模型可能仍然是对传统任务的最优解。
自然语言生成
相较于自然语言理解,自然语言生成可能就是大模型的舞台了。自然语言生成的目标主要是创建连贯、通顺、有意义的符合序列,通常可以分为两大类,一类是以机器翻译、段落信息摘要为代表的任务,一类是更加开放的自然写作,如撰写邮件,编写新闻,创作故事等的任务。具体而言:
知识密集型任务
知识密集型任务一般指强烈依赖背景知识、领域特定专业知识或者一般世界知识的任务,知识密集型任务区别于简单的模式识别与句法分析,需要对我们的现实世界拥有“常识”并能正确的使用,具体而言:
值得注意的是,在知识密集型任务中,大模型并不是百试百灵,有些时候,大模型对现实世界的知识可能是无用甚至错误的,这样“不一致”的知识有时会使大模型的表现比随机猜测还差。如重定义数学任务(Redefine Math)中要求模型在原含义和从重新定义的含义中做出选择,这需要的能力与大规模语言模型的学习到的知识恰恰相反,因此,LLMs 的表现甚至不如随机猜测。
推理任务
LLMs 的扩展能力可以极大的增强预训练语言模型的能力,当模型规模指数增加时,一些关键的如推理的能力会逐渐随参数的扩展而被激活,LLMs 的算术推理与常识推理的能力肉眼可见的异常强大,在这类任务中:
除了推理之外,随着模型规模的增长,模型还会浮现一些 Emergent Ability,譬如符合操作、逻辑推导、概念理解等等。但是还有类有趣的现象称为“U形现象”,指随着 LLMs 规模的增加,模型性能出现先增加后又开始下降的现象,典型的代表就是前文提到的重定义数学的问题,这类现象呼唤着对大模型原理更加深入与细致的研究。
总结
大模型必然是未来很长一段时间我们工作生活的一部分,而对于这样一个与我们生活高度同频互动的“大家伙”,除了性能、效率、成本等问题外,大规模语言模型的安全问题几乎是大模型所面对的所有挑战之中的重中之重,机器幻觉是大模型目前还没有极佳解决方案的主要问题,大模型输出的有偏差或有害的幻觉将会对使用者造成严重后果。同时,随着 LLMs 的“公信度”越来越高,用户可能会过度依赖 LLMs 并相信它们能够提供准确的信息,这点可以预见的趋势增加了大模型的安全风险。
除了误导性信息外,由于 LLMs 生成文本的高质量和低成本,LLMs 有可能被利用为进行仇恨、歧视、暴力、造谣等攻击的工具,LLMs 也有可能被攻击以未恶意攻击者提供非法信息或者窃取隐私,据报道,三星员工使用 ChatGPT 处理工作时意外泄漏了最新程序的源代码属性、与硬件有关的内部会议记录等绝密数据。
除此之外,大模型是否能应用于敏感领域,如医疗保健、金融、法律等的关键在于大模型的“可信度”的问题,在当下,零样本的大模型鲁棒性往往会出现降低。同时,LLMs 已经被证明具有社会偏见或歧视,许多研究在口音、宗教、性别和种族等人口统计类别之间观察到了显着的性能差异。这会导致大模型的“公平”问题。
最后,如果脱开社会问题做个总结,也是展望一下大模型研究的未来,目前大模型主要面临的挑战可以被归类如下:
2023年6月21日,自动驾驶通用大模型(Unified Autonomous Driving,UniAD),CVPR上自动驾驶领域第一篇最佳论文。其核心技术价值是建立了一套端到端感知决策一体框架,融合多任务联合学习新范式,可实现更有效的信息交换、协调感知预测决策,进而能进一步提升路径规划能力。这也是该文获得CVPR Best Paper Award称号的理由。
UniAD由4个基于Transformer解码器的感知预测模块以及1个规划模块组成,整体上是一套自动驾驶通用模型框架。
UniAD首次将感知、预测和规划等3大类主任务,以及包括目标检测、目标跟踪、场景建图、轨迹预测、栅格预测和路径规划在内的6小类子任务,整合到统一的基于Transformer的端到端网络框架内,成为一个全栈关键任务驾驶的通用模型。
在NuScenes真实场景数据集框架内,UniAD所有相关任务都达到SoTA(最佳性能:State of The Art),尤其是预测和规划效果远超其他模型。
简单来说,就解决“多任务”问题,通过多个Transformer模块,UniAD实现了多任务层级式结合。对不同任务间的信息,也能实现全角度、多方位交互。通过多组查询向量,UniAD达成了物体与地图的建模,随之将预测结果传递至规划模块,用于规划安全路径。
应用这套框架的自动驾驶全栈解决方案,能提升多目标跟踪准确率超过20%,车道线预测准确率提升30%,预测运动位移和规划的误差分别降低38%和28%。
论文:A Survey on Multimodal Large Language Models
具体来说,论文将多模态大模型(Multimodal Large Language Model,MLLM)定义为“由LLM扩展而来的具有接收与推理多模态信息能力的模型”。
这类模型相较于热门的单模态LLM,具有以下优势:
因此,要想研究这类多模态大模型,往往需要掌握三个关键技术:
(Multimodal Instruction Tuning,M-IT) 是一种技术,它涉及在一组以指令格式排列的数据集上对预训练的LLMs进行微调。通过这种微调,LLMs可以遵循新的指令来推广到未见过的任务,从而提高零样本性能。这个简单而有效的想法已经引发了NLP领域中后续工作的成功,例如ChatGPT、InstructGPT、FLAN和OPT-IML等。
Self-Instruction 是指通过自我指导的方式构建指令格式的数据集。现有的benchmark可能不能实现某些真实场景的应用,如多轮对话等,此时就需要自我指导。这种方法的优点是可以生成大量的数据,而不需要人工标注。具体来说,一些指令跟随样本被手工制作为种子示例,然后通过提示ChatGPT/GPT-4生成更多的指令样本,以种子示例作为引导。LLaVA [21]将这种方法扩展到多模态领域,通过将图像转换为标题和边界框的文本,并提示GPT-4在种子示例的上下文中生成新数据。通过这种方式,构建了一个M-IT数据集,称为LLaVA-Instruct-150k。
ICL是LLMs的重要新兴能力之一。ICL有两个好处:(1)与传统的监督学习范式不同,传统的监督学习范式从丰富的数据中学习隐含的模式,而ICL的关键在于从类比中学习[74]。具体来说,在ICL设置中,LLMs从少量的示例以及可选的指令中学习,并推广到新的问题,从而以少量的方式解决复杂和未知的任务[14、75、76]。(2)ICL通常以无需训练的方式实现[74],因此可以在推理阶段灵活地集成到不同的框架中。与ICL密切相关的技术是Instruction-Tuning,它在实证上被证明可以增强ICL的能力。
在MLLM的背景下,ICL已经扩展到更多的模态,导致了多模态ICL(Multimodal In-Context Learning,M-ICL)。在推理时,M-ICL可以通过添加demostration set(即一组上下文样本)到原始样本中来实现。在这种情况下,模板可以扩展。请注意,我们列出了两个上下文示例以进行说明,但示例的数量和顺序可以灵活调整。事实上,模型通常对演示的排列敏感[74、77]。
CoT是一种技术,其主要思想是促使LLMs不仅输出最终答案,还输出导致答案的推理过程,类似于人类的认知过程。CoT已被证明在复杂的推理任务中非常有效。它通常涉及一系列中间推理步骤,可以帮助LLMs更好地理解任务和生成正确的答案。CoT通常与Multimodal ICL技术一起使用,以提高LLMs的推理能力。
Learning Paradigms
学习范式也是值得研究的一个方面。广义上有三种获取(Multimodal Chain of Thought,M-CoT)能力的方式,即通过微调和无需训练的少量/零样本学习。这三种方式的样本量要求按降序排列。
直觉上,微调方法通常涉及为M-CoT学习策略策划特定的数据集。例如,ScienceQA [65] 构建了一个科学问答数据集,其中包含lectures和explanations,可以作为学习CoT推理的来源,并在这个数据集上进行微调。Multimodal-CoT [82] 也使用ScienceQA基准测试,但是以两步方式生成输出,即基于理由(推理步骤链)和基于理由的最终答案。
与微调相比,少量/零样本学习更具计算效率。它们之间的主要区别在于,少量样本学习通常需要手工制作一些上下文示例,以便模型可以更轻松地逐步学习推理。相比之下,零样本学习不需要任何特定的CoT学习示例。在这种情况下,通过提示设计的指令,如“让我们逐帧思考”或“这两个关键帧之间发生了什么”[85, 86],模型学习利用嵌入式知识和推理能力,而无需明确的指导。类似地,一些工作[14, 83]通过任务和工具使用的描述来提示模型,以便生成程序或执行步骤的序列。
Chain Configuration
链式配置是推理的一个重要方面,可以分为自适应和预定义两种形式。前一种配置要求LLMs自行决定何时停止推理链[14, 65, 75, 76, 82, 83],而后一种设置则通过预定义的长度来停止推理链。
Generation Patterns
如何构建推理链是一个值得研究的问题。我们将当前的工作总结为两种模式:(1)基于填充的模式和(2)基于预测的模式。具体而言,基于填充的模式要求在前后上下文(前后步骤)之间推导出步骤以填补逻辑间隙[85, 86]。相比之下,基于预测的模式需要在给定条件(如指令和先前的推理历史)下扩展推理链[14, 65, 75, 76, 82, 83]。这两种模式共享一个要求,即生成的步骤应该是一致和正确的。
除此之外,还需要针对它的一个应用进行研究(以 LLM 为核心的多模态系统),即LLM辅助的视觉推理(LLM-Aided Visual Reasoning, LAVR)。
大型语言模型LLMs因其在学术界和工业界展现出前所未有的性能而备受青睐。然而,随着LLMs在研究和实际应用中的广泛使用,对其进行有效评测变得愈发重要。近期已有多篇论文围绕大模型的评估进行研究,但尚未有文章对评测的方法、数据、挑战等进行完整的梳理。本文介绍大模型评测领域的第一篇综述文章《A Survey on Evaluation of Large Language Models》。该论文一共调研了两百余篇文献,以「评测对象 (what to evaluate)」 、「评测领域 (where to evaluate)」 、「评测方法 (How to evaluate)」 和目前的「评估挑战」等几大方面对大模型的评估进进行了详细的梳理和总结。 本文的目标是增强对大模型当前状态的理解,阐明它们的优势和局限性,并为其未来发展提供见解。
本文主要从三个方面对现有工作进行了探索:
在这一部分,总结了LLMs在不同任务中的成功和失败案例。
「LLMs能够在哪些方面表现出色?」
「LLMs在什么情况下可能会失败?」
评估作为一门新学科:对大模型评估的总结启发我们重新设计了许多方面。在本节中将介绍以下7个重大挑战。
本文的重点是,「评估应该被视为推动LLMs和其他人工智能模型成功的基本学科。」 现有的研究方案不足以对LLMs进行全面的评估,这可能为未来的LLMs评估研究带来新的机遇。
A Comprehensive Evaluation Benchmark for Multimodal Large Language Models
随着多模态LLM的不断发展,它在多模态任务中展示出了惊人的能力,然而,目前的研究缺乏对MLLM性能的全面评估。因此,需要一个综合的评估基准来填补这一空白,全面评估MLLM的能力。由腾讯优图实验室和厦门大学的研究者提出了MME,一个用于多模态大型语言模型的综合评估基准,试图解决这个问题。
本篇论文介绍了一种名为 MME 的多模态大型语言模型评估基准,该基准用于全面评估多模态大型语言模型的性能。该基准包括 14 个子任务,涵盖了感知和认知能力的方方面面。为了避免数据泄漏,所有指令答案对的注释都是手动设计的。简洁的指令设计使能够公平地比较 MLLMs,而不需要费力地进行提示工程。此外,这样的指令设计可以更轻松地进行定量统计。通过对 10 个先进的 MLLMs 进行了全面评估,结果表明现有的 MLLMs 仍然有很大的改进空间,同时也揭示了后续模型优化的潜在方向。
本文总结了四个常见的问题,这些问题在很大程度上影响了MLLM的性能。第一个问题是不遵循指令。尽管我们采用了非常简洁的指令设计,但有些MLLM并没有按照指令进行回答,而是自由回答。例如,如图4的第一行所示,指令明确要求“请回答是或否”,但MLLM只是做出陈述性表达。如果在生成的语言开头没有出现“是”或“否”,则判断模型回答错误。我们认为一个好的MLLM(特别是在指令调整之后)应该能够遵循这样简单的指令,这在日常生活中也非常常见。
第二个问题是感知能力的缺乏。如图4的第二行所示,MLLM错误地识别了第一张图像中香蕉的数量,并错误地阅读了第二张图像中的字符,导致错误的答案。我们注意到感知的性能容易受到指令微妙之处的影响,因为同一张图像的两个指令只有一个词的不同,却导致完全不同甚至矛盾的感知结果。
第三个问题是推理能力的缺乏。如图4的第三行所示,从红色文本中我们可以看出,MLLM已经知道第一张图像不是办公室,但仍然给出了错误的答案“是”。类似地,在第二张图像中,MLLM计算出了正确的算术结果,但最终却给出了错误的答案。这些现象表明在MLLM的推理过程中逻辑链断裂了。添加CoT提示,例如“我们逐步思考”[19],可能会得到更好的结果。我们期待进一步深入的研究。
第四个问题是按照指令进行的对象幻觉,这在图4的第四行中有例子。当指令中包含描述一个图像中不存在的对象时,MLLM会想象该对象存在,并最终给出“是”的答案。不断回答“是”的情况导致准确率约为50%,准确率+约为0,如表1、2和3所示。这表明迫切需要抑制幻觉,并且社区应该考虑生成答案的可靠性。
本部分在施工中,针对具体自动驾驶大模型场景还经验不足,欢迎各位拍砖。
下面是引用通用大模型的相关介绍文章,修改而来。
AIGC模型训练过程:
设计一个类似GPT-3.5/GPT-4的大模型从开发→部署→应用需要经过的八大步骤。
需要经历多个阶段,包括确定问题领域和模型任务、数据采集、数据标注、数据处理、模型设计、模型训练、模型调优、模型测试和评估、模型部署和应用等。在每个阶段中需要仔细考虑各种因素,并根据具体情况进行调整和优化,同时需要不断进行优化和改进,以提高模型的性能和效率。
需要经历多个步骤,包括确定目标、设计模型架构、收集数据、预处理数据、训练模型、微调模型和部署模型。在整个过程中需要注意细节,例如模型架构的选择、数据集的质量和可靠性、训练参数的调整等等。每个步骤都需要花费大量的时间和精力,因此需要进行全面的计划和管理。
需要注意的是,以下步骤和内容是相互关联、相互影响的,需要综合考虑和平衡,才能设计出一个高效、准确、可靠的大模型。
首先需要明确模型要解决的问题、目标任务和应用场景。例如,GPT-3.5是一款基于语言模型的人工智能模型,用于自然语言处理和语言生成任务。比如选择一个特定的任务,如自动驾驶、文本分类、问答、图文生成等。
下面是一个开发、部署和上线一个像GPT-3.5、GPT-4这样的大模型大致的时间安排:
团队分工:需要组建一个包括数据工程师、算法工程师、架构设计师、硬件工程师、模型训练师、模型调优师和部署工程师等各类专业人员的团队,进行协同工作。
模型开发需要多个团队成员协同完成,可以根据各自的专业领域和技能分工,如数据收集和预处理、模型架构设计、模型训练和调优、部署和应用等。同时,需要进行有效的沟通和协调,确保整个开发过程的顺利进行。
在实现一个像GPT-3.5这样的大型自然语言处理模型时,需要组建一个具有多个技能的团队。这个团队可以包括数据科学家、机器学习工程师、软件开发人员、系统管理员等不同角色的人员。
确定目标任务后,需要收集和准备相关的数据集。这通常需要花费大量的时间和精力来获取和标注数据,以确保数据集的质量和代表性。数据的数量、质量和多样性对模型的性能有很大影响。需要选择合适的数据集,并进行数据清洗和预处理。数据的质量和多样性对于模型的性能至关重要,因此需要充分的时间和精力来准备和清理数据,还要评估数据的质量和多样性。
AI框架:如PyTorch和TensorFlow等,或者更进一步的DeepSpeed、派大星PatricStar框架,或者Whale、MindSpore、PaddlePaddle等。
算法和模型:选择适合的算法和模型,如卷积神经网络、循环神经网络和自注意力模型等。需要选择合适的深度学习算法来训练模型。例如,可以选择Transformer、GPT、BERT等模型,然后根据需求进行改进和优化,如使用梯度累积、学习率调整等技巧。同时需要设计合适的预训练、微调和生成模块。
在这个阶段,需要制定模型的总体架构和选择适合的算法,包括:
根据任务和数据集的特点设计适合的模型架构。这个过程可能涉及到深度学习、机器学习和自然语言处理等领域的知识。需要设计合适的模型架构,包括网络结构、层数、卷积核大小等。同时需要考虑模型的可解释性和可训练性。
架构设计:设计模型的整体架构,包括网络结构、模型参数、损失函数等。设计模型的整体架构,可以考虑使用 Transformer 或其变种模型,如 GPT、BERT 等。根据实际需求,可以设计多层的编码器和解码器,以及注意力机制等模块。
模型架构设计是设计一个大模型的核心步骤。这需要对相关领域的先前研究进行综合评估和分析,以确定适当的模型结构和参数。需要考虑到模型的深度、宽度、层数、注意力机制、卷积神经网络(CNN)和循环神经网络(RNN)等。
GPT-3.5的架构非常复杂,包括了多个层次的神经网络结构。在这里,我们可以使用Python的深度学习框架,例如TensorFlow或PyTorch,来实现这个模型。具体来说,我们可以使用Transformer+BEV模型结构。
架构设计和实现:设计模型的架构和实现,并进行优化,如使用分布式训练、模型压缩等技术来提高训练效率和模型性能。
由于GPT-3.5是一个非常大的模型,无法在单个计算机上进行实现和训练,需要使用大规模的计算资源来进行训练和推理。因此,在实现这个模型之前,需要考虑如何配置计算机硬件,以便于支持模型的运行。这包括选择合适的GPU或TPU,以及优化计算机网络和存储系统,以提高模型的性能和效率。
硬件配置:由于模型规模较大,需要使用高性能的计算机进行训练和推理。需要选择合适的硬件配置来训练和部署模型。例如,可以选择GPU或TPU加速训练和推理,并进行优化,如使用混合精度训练、模型并行等技术来提高训练效率和模型性能。
计算机硬件和云服务:选择适合的计算机硬件和云服务,以提高训练和推理速度,如GPU和云计算服务等。
在准备好数据集和模型架构之后,我们可以开始训练模型。由于GPT-3.5是一个非常大的模型,需要使用分布式训练技术来加速训练过程。在Python中,可以使用Horovod和MPI等工具来实现分布式训练。
模型训练是模型开发的核心环节,需要充分利用计算资源和时间来提高模型性能。具体包括:
在预训练完成后,需要将模型在特定任务上进行Fine-tuning(微调)。对预训练模型进行微调,使用特定任务的数据集对其进行重新训练。这包括对模型的权重进行微调和训练超参数进行调整,以使其在特定任务上表现更好。对微调后的模型进行评估和调整。这通常涉及对验证集进行评估,以确定模型的性能和确定是否需要进行调整。
在完成模型预训练和微调之后,需要将模型部署到实际的应用场景中。这可以通过Python的Web框架,例如Flask或Django来实现。具体来说,可以将模型封装成一个API,并通过HTTP协议提供服务,以便于其他应用程序调用和使用。
需要将模型部署到合适的平台上,例如云端服务、本地服务器或移动设备。同时需要考虑模型的可扩展性和高可用性。将训练好的模型部署到实际应用中,进行测试和使用。这个过程需要考虑模型的可扩展性、安全性和可维护性等方面。
本节引用论文链接:
https://arxiv.org/pdf/2108.07258.pdf On the Opportunities and Risks of Foundation Models
https://arxiv.org/pdf/2304.13712.pdf Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond
https://arxiv.org/abs/2306.13549 A Survey on Multimodal Large Language Models
https://arxiv.org/pdf/2307.03109.pdf A Survey on Evaluation of Large Language Models
https://arxiv.org/abs/2306.13394 A Comprehensive Evaluation Benchmark for Multimodal Large Language Models
引用博客链接:
https://blog.csdn.net/wawa_nudt/article/details/124344203
https://blog.csdn.net/Kenji_Shinji/article/details/125455825
https://blog.csdn.net/xixiaoyaoww/article/details/130703957
https://blog.csdn.net/qq_41185868/article/details/129786149