首页 > 其他分享 >人工智能大语言模型起源篇(二),从通用语言微调到驾驭LLM

人工智能大语言模型起源篇(二),从通用语言微调到驾驭LLM

时间:2024-12-13 10:21:07浏览次数:5  
标签:语言 人工智能 模型 arxiv LLM abs https GPT org

上一篇:《人工智能大语言模型起源篇(一),从哪里开始》

(5)Howard 和 Ruder 于2018年发表的《Universal Language Model Fine-tuning for Text Classification》,https://arxiv.org/abs/1801.06146

这篇论文从历史的角度来看非常有意思。尽管它是在原始的《Attention Is All You Need》变换器发布一年后写的,但它并没有涉及变换器,而是专注于递归神经网络。然而,它仍然值得注意,因为它有效地提出了语言模型的预训练和迁移学习,用于下游任务。

尽管迁移学习在计算机视觉中已经被确立,但在自然语言处理(NLP)中还不普遍。ULMFit 是首批展示预训练语言模型并对其进行微调,从而在许多NLP任务中取得最先进成果的论文之一。

ULMFit 提出的微调语言模型的三阶段过程如下:

  1. 在大规模文本语料库上训练语言模型。

  2. 在任务特定的数据上微调这个预训练的语言模型,使其能够适应文本的特定风格和词汇。

  3. 在任务特定数据上微调分类器,并逐步解冻各层,以避免灾难性遗忘。

这个过程——在大规模语料库上训练语言模型,然后在下游任务上进行微调——是基于变换器的模型和像BERT、GPT-2/3/4、RoBERTa等基础模型所使用的核心方法。

然而,ULMFiT的关键部分——逐步解冻,通常在实践中不会常规进行,尤其是在使用变换器架构时,通常会一次性微调所有层。


来源:https://arxiv.org/abs/1801.06146

(6)Devlin、Chang、Lee 和 Toutanova 于2018年发表的《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》,https://arxiv.org/abs/1810.04805

继原始的变换器架构之后,大型语言模型的研究开始分为两个方向:一种是用于预测建模任务(如文本分类)的编码器风格变换器,另一种是用于生成建模任务(如翻译、总结和其他形式的文本生成)的解码器风格变换器。

上面的BERT论文介绍了掩蔽语言模型(masked-language modeling)和下一句预测(next-sentence prediction)这一原始概念。它仍然是最具影响力的编码器风格架构。如果你对这一研究方向感兴趣,我推荐你进一步了解RoBERTa,它通过去除下一句预测任务,简化了预训练目标。


来源:https://arxiv.org/abs/1810.04805

(7)Radford 和 Narasimhan 于2018年发表的《Improving Language Understanding by Generative Pre-Training》,https://www.semanticscholar.org/paper/Improving-Language-Understanding-by-Generative-Radford-Narasimhan/cd18800a0fe0b668a1cc19f2ec95b5003d0a5035

原始的GPT论文介绍了流行的解码器风格架构,并通过下一个词预测进行预训练。BERT可以被看作是一个双向变换器,因为它的预训练目标是掩蔽语言模型,而GPT是一个单向的、自回归模型。虽然GPT的嵌入也可以用于分类任务,但GPT方法是当今最具影响力的大型语言模型(LLM)的核心,例如ChatGPT。

如果你对这个研究方向感兴趣,我建议你进一步阅读GPT-2 https://www.semanticscholar.org/paper/Language-Models-are-Unsupervised-Multitask-Learners-Radford-Wu/9405cc0d6169988371b2755e573cc28650d14dfe和GPT-3 https://arxiv.org/abs/2005.14165的论文。这两篇论文展示了LLM能够进行零-shot和少-shot学习,并突出了LLM的突现能力。GPT-3仍然是当前一代LLM(如ChatGPT)训练的流行基准和基础模型——我们稍后会作为单独的条目讨论导致ChatGPT的InstructGPT方法。

              来源: https://www.semanticscholar.org/paper/Improving-Language-Understanding-by-Generative-Radford-Narasimhan/cd18800a0fe0b668a1cc19f2ec95b5003d0a5035

(8)Lewis、Liu、Goyal、Ghazvininejad、Mohamed、Levy、Stoyanov 和 Zettlemoyer 于2019年发表的《BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension》,https://arxiv.org/abs/1910.13461

如前所述,BERT类型的编码器风格LLM通常更适用于预测建模任务,而GPT类型的解码器风格LLM则更擅长生成文本。为了兼顾两者的优点,上面的BART论文将编码器和解码器部分结合在一起(这与原始的变换器架构(本清单中的第二篇论文)并无太大区别)。


来源:https://arxiv.org/abs/1910.13461

(9)Yang、Jin、Tang、Han、Feng、Jiang、Yin 和 Hu 于2023年发表的《Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond》,https://arxiv.org/abs/2304.13712

这不是一篇研究论文,但可能是迄今为止最好的架构综述,展示了不同架构的演变过程。然而,除了讨论BERT风格的掩蔽语言模型(编码器)和GPT风格的自回归语言模型(解码器)外,它还提供了关于预训练和微调数据的有用讨论和指导。

                                          现代 LLM 的进化树,来自 https://arxiv.org/abs/2304.13712。

标签:语言,人工智能,模型,arxiv,LLM,abs,https,GPT,org
From: https://www.cnblogs.com/jellyai/p/18604355

相关文章

  • 计算机毕业设计Python+知识图谱大模型AI医疗问答系统 健康膳食推荐系统 食谱推荐系统
    温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO......
  • 计算机毕业设计Python+知识图谱大模型AI医疗问答系统 健康膳食推荐系统 食谱推荐系统
    温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO......
  • 一篇文章彻底捋顺C语言文件操作知识点
    文章目录1.为什么使用文件2.什么是文件2.1程序文件2.2数据文件2.3文件名3.二进制文件和文本文件4.文件的打开和关闭4.1流和标准流4.1.1流4.1.2标准流4.2文件指针4.3文件的打开和关闭5.文件的顺序读写5.1顺序读写函数介绍5.2对比一组函数fputsfscanffwritesprintf6.......
  • 使用C语言实现队列:基础与实践
    队列(Queue)是一种常见的数据结构,遵循“先进先出”(FIFO,FirstInFirstOut)的原则。队列在许多计算机科学领域中有着广泛的应用,例如任务调度、缓冲区管理等。本文将以C语言为例,详细介绍如何实现一个简单的队列,包括两种主要实现方式:基于数组和基于链表的实现。队列的基本操作一个队......
  • C语言C23版的最新特性
    C23是ISOC标准的最新修订版,在C17的基础上进行了一些改进和扩展,以下是C23的一些新特性。一、新的类型1.十进制浮点数类型:引入了_Decimal32、_Decimal64和_Decimal128三种新的十进制浮点数类型,可用于需要精确十进制计算的场景,如金融计算等,能减少二进制浮点数在十进制表......
  • 用C语言实现栈:从基础到实战
    栈(Stack)是一种基础的数据结构,遵循后进先出(LIFO,LastInFirstOut)的原则。它被广泛应用于函数调用、表达式求值、括号匹配等问题中。在这篇技术博客中,我们将详细介绍如何使用C语言实现一个栈,并涵盖基本的操作以及实战应用。什么是栈?栈是一种特殊的线性表,只允许在一端进行插入和......
  • Go语言变量 (值类型和引用类型)
    所有像int、float、bool和string这些基本类型都属于值类型,使用这些类型的变量直接指向内存中的值当使用等号“=”将一个变量赋值给另一个变量时,如:j=i,实际上是在内存中将i的值进行了拷贝你可以通过&var来获取变量var的地址值类型变量通常储存在栈中,尤其当它们时......
  • 转载:【AI系统】算子开发编程语言 Ascend C
    本文将深入探讨昇腾算子开发编程语言AscendC,这是一种专为昇腾AI处理器算子开发设计的编程语言,它原生支持C和C++标准规范,最大化匹配用户的开发习惯。AscendC通过多层接口抽象、自动并行计算、孪生调试等关键技术,极大提高算子开发效率,助力AI开发者低成本完成算子开发和模......
  • C语言数组
    目录数组的初始化数组的引用二维数组二维数组的初始化二维数组的引用在C语言中,数组它可以存储一系列相同类型的数据,数组中的每个元素都有一个索引,索引通常从0开始,定义数组会分配内存,数组名表示内存的首地址;数组的初始化Inta[5]={1,2,3,4,5};这个元素是1,2,3,4,5这......
  • 论文解读《From Generation to Judgment: Opportunities and Challenges of LLM-as-a-
    发表时间:2024期刊会议:arxiv论文单位:ArizonaStateUniversity论文作者:DaweiLi,BohanJiang,LiangjieHuang,AlimohammadBeigi,ChengshuaiZhao,ZhenTan,AmritaBhattacharjee,YuxuanJiang,CanyuChen,TianhaoWu,KaiShu,LuCheng,HuanLiu论文链接Whatis......