语言大模型的预训练过程——从无尽数据到海量知识

       从目前研究结果看,Transformer是足够强大的特征抽取器,通过预训练过程,Transformer学到了什么?知识是如何存取的?我们又如何修正错误知识?本文讲述这方面的研究进展。

1、求知:LLM学到了什么知识

1.1 训练文本的来源

        LLM从海量不同类型文本中学习了大量知识。例如,ChatGPT训练的文本类型包括了多种来自互联网的文本,这些文本用于模型的预训练。这些文本类型包括但不限于:

  1. 新闻文章:包括来自各种新闻机构和新闻网站的新闻报道,涵盖了各种主题,如政治、经济、科技、体育等。

  2. 社交媒体帖子:来自社交媒体平台(如Twitter、Facebook、Instagram)的用户帖子、推文和评论,用于捕捉社交对话和趋势。

  3. 网页内容:网站上的各种网页内容,包括博客文章、论坛帖子、产品描述和维基百科等。

  4. 电子书:包括虚构和非虚构作品的电子书,覆盖了文学、科学、历史、自助等多种领域。

  5. 学术文献:学术期刊、研究论文和学术出版物,包括科学、工程、医学和人文领域的文献。

  6. 对话和聊天记录:来自各种在线聊天平台和社交媒体的对话和聊天记录,用于训练模型生成自然语言对话。

  7. 问答数据:包括各种问答网站(如Quora、Stack Exchange)上的问题和答案,用于训练模型回答问题和提供解释。

  8. 博客文章:博客作者的个人博客文章,涵盖了各种主题,包括技术、生活、旅行、美食等。

  9. 评论和评价:产品评论、影片评论、餐厅评价和应用程序评价,用于训练模型理解和生成用户反馈。

  10. 新闻评论和分析:新闻评论员和分析师的观点文章,用于了解社会和政治问题的不同观点。

这些文本类型涵盖了互联网上各种不同的文本来源,帮助ChatGPT模型学习理解和生成多领域的自然语言文本。这使模型能够在各种对话和文本生成任务中表现出色,包括回答问题、进行对话、提供建议和提供信息。

1.2 学习到的知识类型

如果把这些知识做粗略分类的话,可以分为语言类知识和世界知识两大类。

       语言类知识指的是词法、词性、句法、语义等有助于人类或机器理解自然语言的知识。关于LLM能否捕获语言知识有较长研究历史,自从Bert出现以来就不断有相关研究,很早就有结论,各种实验充分证明LLM可以学习各种层次类型的语言学知识,这也是为何使用预训练模型后,各种语言理解类自然语言任务获得大幅效果提升的最重要原因之一。另外,各种研究也证明了浅层语言知识比如词法、词性、句法等知识存储在Transformer的低层和中层,而抽象的语言知识比如语义类知识,广泛分布在Transformer的中层和高层结构中。

       世界知识指的是在这个世界上发生的一些真实事件(事实型知识,Factual Knowledge),以及一些常识性知识(Common Sense Knowledge)。比如“拜登是现任美国总统”、“拜登是美国人”、“乌克兰总统泽连斯基与美国总统拜登举行会晤”,这些都是和拜登相关的事实类知识;而“人有两只眼睛”、“太阳从东方升起”这些属于常识性知识。关于LLM模型能否学习世界知识的研究也有很多,结论也比较一致:LLM确实从训练数据中吸收了大量世界知识,而这类知识主要分布在Transformer的中层和高层,尤其聚集在中层。而且,随着Transformer模型层深增加,能够学习到的知识数量逐渐以指数级增加(可参考:BERTnesia: Investigating the capture and forgetting of knowledge in BERT)。其实,你把LLM看作是一种以模型参数体现的隐式知识图谱,如果这么理解,我认为是一点问题也没有的。

        依旧以ChatGPT为例,ChatGPT从海量文本中学习到了广泛的知识,这些知识包括但不限于以下内容:

  1. 语言知识:ChatGPT通过海量文本学会了多种语言的语法、拼写、标点符号和语言结构。它了解不同语言之间的共性和差异。

  2. 常识知识:ChatGPT获取了广泛的常识知识,包括日常生活中的常识、历史事件、地理信息、文化背景和科学原理。这有助于模型更好地理解和生成文本。

  3. 文化知识:模型通过学习文本获取了关于不同文化的知识,包括传统习俗、文化节庆、宗教信仰和文化差异。

  4. 科学和技术知识:ChatGPT学习了关于各种科学领域(如物理学、化学、生物学、计算机科学)和技术领域(如编程、人工智能、机器学习)的基础知识。

  5. 历史知识:模型了解了历史事件、重要人物、历史时期和政治运动的相关知识。

  6. 社会和政治知识:ChatGPT学会了有关政府、政治制度、社会问题、经济政策和社会运动的知识。

  7. 娱乐和艺术知识:模型获得了关于音乐、电影、文学、艺术和娱乐业的信息,包括流行文化趋势和作品的背景。

  8. 地理知识:ChatGPT学会了关于地理位置、国家、城市、地理特征和地理事件的知识。

  9. 环境和健康知识:模型了解了有关环境问题、可持续发展、健康和医学的信息。

  10. 教育和学术知识:ChatGPT获取了关于学校、学科、学术领域、教育政策和学术研究的知识。

       这些知识使ChatGPT成为一个强大的自然语言处理模型,能够应对各种不同领域的问题和任务。然而,需要注意的是,模型的知识是从互联网文本中学习的,并且可能不是绝对准确或完整的,因此在使用时需要谨慎验证和核实信息。

1.3 学习到的知识量与训练数据量的关系

“When Do You Need Billions of Words of Pre-training Data?”这篇文章研究了预训练模型学习到的知识量与训练数据量的关系,它的结论是:对于Bert类型的语言模型来说,只用1000万到1亿单词的语料,就能学好句法语义等语言学知识,但是要学习事实类知识,则要更多的训练数据。这个结论其实也是在意料中的,毕竟语言学知识相对有限且静态,而事实类知识则数量巨大,且处于不断变化过程中。而目前研究证明了随着增加训练数据量,预训练模型在各种下游任务中效果越好,这说明了从增量的训练数据中学到的更主要是世界知识。

以下是一些关于预训练模型知识量和训练数据量关系的要点:

  1. 数据量与知识广度:更多的训练数据通常能够帮助模型获取更广泛的知识。大规模的数据集包含了各种不同领域的文本,因此模型可以了解更多主题和领域的信息。

  2. 数据量与知识深度:更多的数据还可以增加模型在每个领域的知识深度。模型可以从大量文本中学习更多细节、例子和特定领域的知识。

  3. 数据质量:数据的质量对知识量也有重要影响。高质量的数据集能够提供准确、可靠的信息,有助于模型获取更有价值的知识。

  4. 模型体系结构:模型的体系结构和复杂性也影响了知识的获取和表达。更大、更复杂的模型通常能够捕获更多知识,但也需要更多的训练数据来支持它们。

  5. 训练方法:训练方法和技巧也可以影响知识的获取。预训练过程中的任务设置、模型微调和学习率等参数都会影响知识的吸收和应用。

  6. 领域特定的微调:模型的领域特定微调可以进一步扩展其在特定领域的知识。通过在特定任务上微调模型,可以使其更精通该领域。

  7. 知识的多样性:数据集中不仅仅包括了多领域的文本,还包括了不同类型的知识,如事实性知识、常识知识、技术知识等。模型在多个层面上学习知识,包括语法、语义、推理和背景信息。

       总的来说,更多的训练数据可以帮助模型获取更多的知识,但知识量的增加可能会递减,即随着数据规模的增加,新增的知识可能会减少。此外,模型的性能还受到其他因素的影响,如计算资源、模型的架构、训练方法和评估方法。因此,在设计和使用预训练模型时,需要综合考虑这些因素。

2、存知:LLM如何存取知识

       由上可知,LLM确实从数据中学到了很多语言类及世界知识。那么,对于某条具体的知识,LLM把它存储到了哪里?又是如何提取出来的?这也是一个有意思的问题。

2.1 知识主体存储在Transformer的FFN结构

       显然,知识一定存储在Transformer的模型参数里。从Transformer的结构看,模型参数由两部分构成:多头注意力(MHA)部分占了大约参数总体的三分之一,三分之二的参数集中在FFN结构中。MHA主要用于计算单词或知识间的相关强度,并对全局信息进行集成,更可能是在建立知识之间的联系,大概率不会存储具体知识点,那么很容易推论出LLM模型的知识主体是存储在Transformer的FFN结构里。

 2.2 具体知识的存储与提取

但这样的定位,粒度还是太粗,无法很好回答具体某条知识是如何存储与提取的,比如 “中国的首都是北京”这条知识,以三元组表达就是<北京,is-capital-of,中国>,其中“is-capital-of”代表实体间关系。这条知识它存储在LLM的哪里呢?

        “Transformer Feed-Forward Layers Are Key-Value Memories”给出了一个比较新颖的观察视角,它把Transformer的FFN看成存储大量具体知识的Key-Value存储器。如上图所示(图左是原始论文图,其实不太好理解,可以看做了注释的图右,更好理解些),FFN的第一层是个MLP宽隐层,这是Key层;第二层是MLP窄隐层,是Value层。FFN的输入层其实是某个单词对应的MHA的输出结果Embedding,也就是通过Self Attention,将整个句子有关的输入上下文集成到一起的Embedding,代表了整个输入句子的整体信息。

        Key层的每个神经元节点,记载了一对<Key,Value>信息。比如对于上图中FFN第一个隐层的第 i个节点 k_{i} ,也许就是它记载了<北京,is-capital-of,中国>这条知识。 k_{i} 节点对应的key向量,其实指的是节点 k_{i}和输入层每个节点的权重向量;而对应的Value向量,指的是节点 k_{i}和FFN第二层的Value层每个节点形成连接的权重向量。每个神经元的Key向量,用于识别输入中的某种语言或者知识模式,是一种模式探测器。如果输入中包含它要检测的某种模式,那么输入向量和 k_{i}节点的key权重进行向量内积计算,加上Relu,形成 k_{i}的大数值响应,意味着 k_{i}检测到了这个模式,于是再把这个响应值,通过 k_{i} 节点的Value权重向量向FFN第二层传播。这等价于将Value向量的值,用响应值加权,然后传递并体现到第二层Value层每个节点的输出上。如此这般,FFN的正向传播计算过程,看起来就像是通过Key检测到某种知识模式,然后取出对应的Value,并把Value体现在FFN的第二层输出上。当然,FFN第二层每个节点,会收集FFN的Key层所有节点信息,所以是一种混合响应,而Value层所有节点的混合响应,可以解读为代表输出单词的概率分布信息。

       听着可能还是比较复杂,我们用个极端的例子来说明。我们假设上图的节点 k_{i}就是记载<北京,is-capital-of,中国>这条知识的Key-Value存储器,它的Key向量,用于检测”中国的首都是…”这个知识模式,它的Value向量,基本存储了与单词“北京”的Embedding比较接近的向量。当Transformer的输入是“中国的首都是[Mask]”的时候, k_{i}节点从输入层探测到这个知识模式,所以产生较大的响应输出。我们假设Key层其它神经元对这个输入都没有任何响应,那么对应的Value层的节点,其实只会接收到“北京”这个Value对应的单词embedding,并通过 k_{i} 的大响应值,进行了进一步的数值放大。于是,Mask位置对应的输出,就自然会输出“北京”这个单词。基本就是这么个过程,看着很复杂,其实很简单。

       把FFN看成Key-Value存储器这种思路,很可能不是最终的正确答案,但是距离最终正确答案的距离,估计也不太远。

2.3 Transformer模型不同层次的功能

       而且这篇文章还指出,Transformer低层对句子的表层模式作出反应,高层对语义模式作出反应,就是说低层FFN存储词法、句法等表层知识中层和高层存储语义及事实概念知识,这和其它研究结论是一致的。

关于Transformer模型不同层次的功能,Transformer 模型的深度结构允许它在不同层次上处理文本信息,包括表层模式(lexical and syntactic patterns)和语义模式(semantic patterns)。

以下是一些与不同层次的功能相关的说明:

  1. 低层(底层):低层的 Transformer 层通常更接近输入数据,可以捕获词法(lexical)和句法(syntactic)信息。这些层可能会检测词汇、词语之间的依赖关系、词性标签等表层特征。低层的神经网络结构,如自注意力机制,有助于在句子中捕获词汇和句法关系。

  2. 中层(中间层):中层的 Transformer 层位于模型的中间,具有一定的语法和语义分析能力。这些层可能能够识别更复杂的语法结构和语义关系,包括主谓宾结构、从句、逻辑关系等。在中层,模型可以更好地理解句子的结构和含义。

  3. 高层(顶层):高层的 Transformer 层更加抽象,它们存储更多的语义信息和事实概念知识。这些层通常负责整合句子中的不同部分,进行推理和推断,以生成对文本的更高层次理解。高层的神经网络结构有助于模型进行语义分析和抽象推理。

总体而言,Transformer 模型中的不同层次的层共同协作,以实现对文本的多层次理解。这种分层结构有助于模型在处理自然语言文本时既考虑表层特征,又理解更深层次的语义和含义。这使得 Transformer 模型在各种自然语言处理任务中表现出色,包括文本生成、情感分析、机器翻译等。

   

3、修正:如何修正LLM里存储的知识

3.1  修正LLM存储知识的必要性

       既然我们已知具体的某条世界知识存储在某个或者某些FFN节点的参数里,自然会引发另外一个问题:我们能否修正LLM模型里存储的错误或者过时的知识呢?比如对于问题:“英国的现任首相是谁?”鉴于近年来英国首相频繁更迭,你猜LLM更倾向输出“鲍里斯”还是更青睐“苏纳克”?很明显训练数据中包含“鲍里斯”的数据会更多,这种情况很大可能LLM会给出错误回答,于是我们就有修正LLM里存储的过时知识的必要性。

3.2   三类修正方法

如果归纳下,目前有三类不同方法来修正LLM里蕴含的知识:

       第一类方法从训练数据的源头来修正知识。“Towards Tracing Factual Knowledge in Language Models Back to the Training Data”这篇文章的研究目标是:对于指定的某条知识,我们是否可以定位到是哪些训练数据导致LLM学会了这条知识?答案是肯定的,这意味着我们可以逆向追踪到某条知识对应的训练数据源头。如果利用这项技术,假设我们想要删除某条知识,则可首先定位到其对应的数据源头,删除数据源,然后重新预训练整个LLM模型,这样即可达成删除LLM中相关知识的目的。但是这里有个问题,如果修正一小部分知识,我们就需要重新做一次模型预训练,这样做明显成本太高。所以这种方法不会太有发展前景,可能比较适合那种对于某个特定类别数据的一次性大规模删除场合,不适合少量多次的常规知识修正场景,比如可能比较适合用来做去除偏见等去toxic内容的处理。

       第二类方法是对LLM模型做一次fine-tuning来修正知识。一个直观能想到的方法是:我们可以根据要修正成的新知识来构建训练数据,然后让LLM模型在这个训练数据上做fine-tuning,这样指导LLM记住新的知识,遗忘旧的知识。这个方法简单直观,但是也有一些问题,首先它会带来灾难遗忘问题,就是说除了忘掉该忘的知识,还忘掉了不该忘的知识,导致这么做了之后有些下游任务效果下降。另外,因为目前的LLM模型规模非常大,即使是做fine-tuning,如果次数频繁,其实成本也相当高。对这种方法感兴趣的可以参考“Modifying Memories in Transformer Models”。

        第三类方法直接修改LLM里某些知识对应的模型参数来修正知识。假设我们想要把旧知识<英国,现任首相,鲍里斯>,修正到<英国,现任首相,苏纳克>。首先我们想办法在LLM模型参数中,定位到存储旧知识的FFN节点,然后可以强行调整更改FFN中对应的模型参数,将旧知识替换成新的知识。可以看出,这种方法涉及到两项关键技术:首先是如何在LLM参数空间中定位某条知识的具体存储位置;其次是如何修正模型参数,来实现旧知识到新知识的修正。关于这类技术的细节,可以参考“Locating and Editing Factual Associations in GPT”和“Mass-Editing Memory in a Transformer”。理解这个修正LLM知识的过程,其实对于更深入理解LLM的内部运作机制是很有帮助的。

声明:本文参考了知乎文章——通向AGI之路:大型语言模型(LLM)技术精要,感兴趣的读者可以阅读原文!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【代码随想录】算法训练计划20

1、654. 最大二叉树 题目&#xff1a; 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值 右边 的 子数组后缀上 构建…

YOLO目标检测——番茄数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;番茄检测数据集说明&#xff1a;番茄目标检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富标签说明&#xff1a;使用lableimg标注软件标注&#xff0c;标注框质量高&#xff0c;含voc(xml)、coco(json)和yolo(txt)三种格式标签…

CMake中的字符串操作

如果使用set进行字符串拼接&#xff0c;对应的命令格式如下&#xff1a; set(变量名1 ${变量名1} ${变量名2} ...) 关于上面的命令其实就是将从第二个参数开始往后所有的字符串进行拼接&#xff0c;最后将结果存储到第一个参数中&#xff0c;如果第一个参数中原来有数据会对原…

机器自主程度越高人机融合可能会越难

智能算法是指利用人工智能技术来处理和解决问题的算法。这些算法通过模仿人类的思维和学习过程&#xff0c;可以自动从数据中提取知识、推断和决策。尽管智能算法的智能程度可能存在不同的层次&#xff0c;但它们都具有一定的智能特征&#xff0c;并能够完成一些复杂的任务。如…

如何应对网站攻击?F5聚焦网站安全防护

有关数据表明&#xff0c;2023以来全球累计超过1400多万个网站遭受了超过10亿次的网络攻击&#xff0c;几乎每个网站都面临风险。无论是电商、论坛还是官方的平台都不可避免遭遇攻击&#xff0c;黑客则利用网络服务的中断期间从事窃取信息等非法活动。在多种攻击手段中&#xf…

计算机基础知识50

数据的增删改查(insert update delete select) # 用户列表的展示&#xff1a; # 把数据表中得用户数据都给查询出来展示在页面上 1. 查询 from app01 import models models.UserInfo.objects.all() # 查询所有的字段信息和数据 resmodels.UserInfo.objects.first() # 查询…

Arcgis打开报错error code=-15

Provide your license server administrator with the following information: Error Code -15 问题描述 原因 长时间闲置后&#xff0c;license server administrator会关闭服务。再次打开之后会出现这个报错 解决方案 重启或者按下述做法&#xff1a; 打开任务管理器&am…

一文2000字从0到1使用压测神器JMeter进行压力测试!

概 述 Apache JMeter 是 Apache组织开发的基于 Java的压力测试工具。用于对软件做压力测试&#xff0c;它最初被设计用于 Web应用测试但后来扩展到其他测试领域。它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库&#xff0c; FTP 服…

CC1310F128RSMR Sub-1GHz超低功耗无线微控制器芯片

CC1310F128RSMR QFN-32 Sub-1GHz超低功耗无线微控制器 CC1310F128RSMR是一款低成本、 超低功耗、Sub-1 GHz射频器件&#xff0c;它是Simplel ink微控制器(MCU)平台的一部分。该平台由Wi- Fi组成、蓝牙低功耗&#xff0c;Sub-1 GHz&#xff0c;以太网&#xff0c;Zigbee线程和主…

【诺依管理系统-vue3】组件没有重新请求问题

解决方法&#xff1a;destroy-on-close&#xff0c;如图

消息队列中的事务是什么呢?

消息队列中的事务是什么呢&#xff1f; 说到事务&#xff0c;肯定会优先想到数据库中的事务。在数据库中需要事务&#xff0c;是为了保证数据的一致性、完整性、持久性和隔离性。它可以将数据库中的一组操作合并为一个不可分割的工作单元&#xff0c;要么全部执行成功&#xf…

No191.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

千年密码新解读,DeepMind 开发 Ithaca 破译希腊铭文

铭文、碑刻是过去文明的思想、文化和语言的体现。金石学家破译千年前的密码&#xff0c;需要完成文本修复、时间归因和地域归因三大任务。 主流的研究方式是「字符串匹配」&#xff0c;即凭借记忆或查询语料库匹配字型相似的铭文&#xff0c;这导致了结果的混淆和误判。 为此…

酷柚易汛ERP - 其他出库单操作指南

1、应用场景 处理其他非销售类型的出库单据&#xff0c;比如内部领用福利、赔偿、借出、领用材料、以货抵债等不参与销售管理的出库类业务。 2、主要操作 2.1 新增其他出库单 打开【仓库】-【其他出库单】&#xff0c;新增单据 出库单位成本及出库成本不能录入&#xff1b;…

msvcr71.dll丢失多种解决方法解析,全方位解读msvcr71.dll文件

在日常使用电脑时&#xff0c;你是否曾遇到过“msvcr71.dll文件丢失”的错误提示&#xff1f;别着急&#xff0c;本文将为你详细介绍msvcr71.dll丢失的解决方法&#xff0c;让你迅速解决这一烦恼。 一.多种msvcr71.dll丢失解决方法 修复方法一:重新安装相应软件 首先&#xf…

推荐一份适合所有人做的副业,尤其是程序员。

我建议每个人都去尝试一下网上接单&#xff0c;这是一个门槛低、类型多样的方式&#xff0c;尤其适合程序员&#xff01; 在接单平台上&#xff0c;你可以看到各种类型的兼职。以freelancer为例&#xff0c;你可以在这里找到技术、设计、写作等类型的兼职&#xff0c;只要发挥…

Linux SSH免密登录

目录 简介 创建Linux用户和用户组 配置LINUX静态IP 编辑IP映射 SSH免密登录配置 登录测试 简介 SSH&#xff08;Secure shell&#xff09;是可以在应用程序中提供安全通信的一个协议&#xff0c;通过SSH可以安全地进行网络数据传输&#xff0c;它的主要原理是利用非对称加密…

常见光模块的封装有哪些呢?

光模块的封装&#xff0c;保障了光通信的稳定和可靠性。本文介绍几种常见的光模块的封装类型。 19封装–焊接型光模块&#xff0c;一般速度不高于千兆&#xff0c;多采用SC接口。 SFP封装&#xff1a;SFP&#xff08;Small form-factor pluggable&#xff09;意思是小型可拔插…

金蝶云星空将子窗体的内容传回到父窗体的开发实现

文章目录 金蝶云星空将子窗体的内容传回到父窗体的开发实现前置任务父窗体打开子窗体时传入回调函数子窗体设置返回参数父窗体接收参数在回调函数根据参数做一些逻辑处理 金蝶云星空将子窗体的内容传回到父窗体的开发实现 前置任务 金蝶云星空表单插件实现父窗体打开子窗体&a…

合合信息亮相新加坡科技周——Big Data AI World Expo展示AI驱动文档数字化的前沿能力

展会规模背景&#xff1a; 2023年10月11日-12日&#xff0c;合合信息在TECH WEEK SINGAPORE&#xff08;新加坡科技周&#xff09;亮相&#xff0c;并在人工智能世界博览会&#xff08;Big Data & AI World&#xff09;展示合合信息核心人工智能文字识别技术能力。合合信息…