DateWhale简单学点大模型课程组队学习打卡task10--kk

本文探讨了如何通过微调大模型以适应特定下游任务,强调了格式、主题和时间差异对模型适应性的影响。介绍了通用适应配置和主流的适应方法,如Probing(探针)、Fine-tuning和轻量级微调,特别是提示微调,展示了其在优化任务特异性方面的优势。
摘要由CSDN通过智能技术生成

费曼说:学习一件事情最好的方式是做它的老师,这也是写这篇博文的目的,写这篇博文,即便有其他原因,但更多的还是写给自己,话不多说,让我们开始进入大模型吧

  任务说明:任务说明

  基座课程:斯坦福大学大规模语言模型课程

  task10主要讲的还是大模型的微调的内容,简而言之,就是让我们每个人训练与自己下游任务相符合的大模型。

11.1 引言

  课件里做的这张图太好了,即使有搬运,但我认为有必要去使用它

  一张图说明adaptation的用意及在模型使用中的位置:

  

    大模型在语言方面展现出卓越的泛化能力,并且,我们通过提示词(prompt)已经可以让大模型近乎“自动地”去完成一些在人工智能领域难以完成的任务,但是,大模型也不是神通广大的美猴王,它也是存在着很多的局限性的,比如在一些特定下游任务上表现不佳,在一些需要涉及到专业知识的学习上捏造虚假信息或者承认自己不知道。

  下面是用jupyter使用facebook 的母公司Meta Ai发布的llama包对于GPT3和微调后的模型做出的测试:图一为GPT3、图二为微调过的模型,可以看到未经过微调的GPT3智能做简单的重复性回答,但微调后的模型可以做到有条理的且具有可信度的输出

  图一:是一些重复性的且没有逻辑的输出

图二:可以看到输出富有条理且具有可信性

  这一系列的问题,不是靠大模型继续累计参数迭代所能实现的,一个语言大模型,也不可能完成世界上任何的所对应的下游任务,大模型的泛化能力,用现在的话说,已经是看得见摸得着,至少存在着边界的;既然模型的泛化能力在现有的硬件水平包括软件的水平下已经接近极限,那么这也给研究人员带来了新的思路,那就是提高每个模型在任务上的特异性。

11.2 问题分类

  另外,下游任务与原始任务之间的不同也可以从一下几个方面来进行探讨:

  1.格式的不同:

  自然语言推理(NLI):下游任务中涉及到逻辑学的任务与GPT的MASK任务截然不同,不过逻辑任务本就是计算机的强项,但是,自然语言的逻辑任务需要借助到大模型的语言理解能力,这是一个值得研究的问题。

  BERT训练与MASK标记:很多下游任务没有甚至不涉及填词任务,这种差异肯会导致一些问题,但是这些在训练时就已经涉及,比如用其他词来代替MASK的特殊填充等

图三:一种应对MASK的方式

2.主题的转变:

  特定领域的需求:下游任务具有它所具备的专业性,与模型的训练数据相差甚远

  广泛主题的灵活性:还是那句话语言模型的泛化能力很强,可在特定任务上,还需要专业知识的投放。

3.时间的转变:

  新知识的需求:chatgpt的数据只上传2021年9月之间的知识,而对于涉及到2021年9月之后的数据,chatgpt无法做出准确的回答

  非公开信息的需求:训练数据有时涉及到隐私信息,不能公开训练参与到使用中去,这也对公开训练产生了一定的阻碍

11.1.2 通用的adaptation配置

  下面是普适性的几个组成:

  1.预训练的语言模型:预训练的模型,如BERT

  2.下游任务相关的数据集

  3.适配的参数:模型新的参数,可以从现有模型中取,也可引入新的参数

  4.任务损失函数:如交叉熵损失

  5.优化问题:个人认为这是在adaptation中最重要的一环,同时也是最有技术含量的一环,对于不同的下游任务,设计不同的优化问题和相对的指标,是微调中必须要搞清楚的一个问题。

  因为,语言模型的输出相较于传统机器学习模型来讲是相对难以量化的,这是由于自然语言天然存在的二义性的问题,即使输出的词汇相同,不同的顺序也会导致语义的千差万别。所以,设置一个可量化的训练目标是研究人员在深入了解业务及机器学习的基础上才能设计出来的。

11.2 当前主流的几种Adaptation方法

11.2.1 Probing

    一种分析模型内部表示的技术,探针的词汇用的十分生动形象,我们通过训练一个线性的网络,从模型内部的嵌入向量中来对向量所包含的信息解码出来以供参考。

  所以探针的本质其实也是一种Decoder。

  这个是BERT的示例,其探究的内部网络层包括表示层和注意力层的输出,用不同的颜色区分。

  假设我们要研究BERT模型的编码表示形式是否捕获语言信息,例如“动词是否为助动词”或“短语是否为主语名词”。这些任务可以被构造为探针的“辅助任务”。例如,在“Kids are playing cricket all day,”的句子中,“-are”是辅助动词,“ playing”是主要动词,“ Kids”是主语名词,而“ Cricket”是宾语。可以通过探究每个层在各个probe任务上的表现来探究每一层学到了什么样的信息。

11.2.1.1 Probing的适用性和适配

  探针其实就是一种解码器,在编码器模型中使用较多,但在嵌入向量作为中间输出的模型,理论上都可以使用探针作为检测的工具。

11.2.1.2 固定长度表示的策略

  probing方法对于模型本身的权重是固定的,只对较浅的前馈网络进行训练,因此训练的成本较低。

  同时,我们需要对探针的输出的长度进行定义,一种是CLS方式,一种是对固定长度个单词求平均。

11.2.2 Fine-tuning

  微调的参数包括语言模型的参数和任务特定的预测头的参数:

  举例:如对BERT进行分类任务的微调
  同时,我们还可以了解到,对于大语言模型来说,大语言的原始参数相较于随机初始化来的是一个优秀的选择,并且,两种不同的初始参数之间存在的差距是无法被训练时间弥补的。猜测可能是大语言模型训练中的数据集大小及质量的问题。图中为fine-tune与random initialization的对比:
11.2.2.1 Fine-tuning对于zero-shot能力

  另外,我们也注意到,fine-tune相较于训练之前的大模型对于零样本学习有着非常好的表现

11.2.2.2 用于人类对齐语言模型的Fine-tuning

  在当前的语言模型中,指令(instructions)常常作为输入提示(prompt),来引导模型产生特定类型的输出。有效的指令可以让模型更好地理解人类用户的需求,并产生有用、诚实、无害的反馈,考虑到之前学习内容中提到的有害性。人类反馈是指从人类用户或评估者收集的反馈,以评价模型的输出是否符合人们的期望和需求。人类反馈在模型的训练和微调中起着关键作用。

11.2.2.3 微调的过程和影响

微调可以使语言模型更好地与人类价值观和目标一致。以下是InstructGPT对GPT-3模型进行微调的三个步骤:

  1. 收集人类书写的示范行为:这一步骤涉及收集符合人类期望的示例,并对这些示例进行监督微调。

  2. 基于指令的采样与人类偏好:对于每个指令,从步骤1的LM中采样k个输出。然后收集人类对哪个采样输出最优先的反馈。与步骤1相比,这些数据更便宜。

  3. 使用强化学习目标微调LM:通过强化学习目标微调步骤1中的LM,以最大化人类偏好奖励。

经过这样的微调,1.3B的InstructGPT模型在85%的时间里被优先于175B的GPT-3,使用少样本提示时为71%。在封闭领域的问答/摘要方面,InstructGPT 21%的时间会产生虚构信息,相比GPT-3的41%有所改善。在被提示要尊重时,InstructGPT比GPT-3减少了25%的有毒输出。

11.2.3 Lightweight Fine-tuning

  人如其名,就是一种轻量级的微调技术,旨在将全面微调的性能与资源保存的好处相结合。它旨在在不需要为每个任务存储完整的语言模型的情况下,保持全面微调的性能。换句话说,它旨在在减少模型存储需求和计算负载的同时实现出色的性能。

11.2.3.1 轻量级微调的变种

轻量级微调有许多变种,其中一些包括:

  • 提示微调(Prompt Tuning):通过微调输入提示来优化模型的性能。提示微调可以被视为一种更灵活的微调方法,允许用户通过调整输入提示来指导模型的输出,而不是直接修改模型参数。

  • 前缀微调(Prefix Tuning):类似于提示微调,前缀微调专注于输入。它通过添加特定的前缀来调整模型的行为,从而为特定任务进行定制化。

  • 适配器微调(Adapter Tuning):适配器微调通过在模型的隐藏层之间插入可训练的“适配器”模块来微调模型。这些适配器模块允许在不改变原始预训练参数的情况下进行微调,从而减少存储和计算需求。

11.2.3.2 提示微调

  提示微调是一种主要用于文本分类任务的特殊微调技术。与传统的微调方法不同,提示微调专注于优化输入提示,而不是改变模型的内部参数。

   提示微调通过向输入添加一个可学习的连续标记嵌入(定义为 e)来实现。因此,新的输入长度现在为 n + k,其中 n 是原始输入的长度。这些额外的标记嵌入通过使用标记任务数据进行训练来学习。

  与此同时,整个预训练语言模型被冻结,这意味着在微调过程中主要模型部分不会改变。随着冻结语言模型的规模增大,提示微调的性能变得越来越有竞争力,甚至可以与全面微调(也称为“模型微调”)相媲美。这表明,通过调整输入提示,甚至不改变预训练参数,可以实现出色的性能。

  提示微调涉及的不同初始化策略包括:

  • 随机词汇嵌入:选择随机的词汇作为嵌入。
  • 类别标签词汇嵌入:使用与分类标签相关的词汇进行嵌入。
  • 随机初始化:这种方法通常表现不佳,不推荐使用。

  值得注意的是,"Prompt tuning v2" 是提示微调的全层版本。在文本分类和生成任务中,所有层级上的参数都对其有益。

  其他

11.2.3.3 总结

  总而言之,提示微调是一种创新的轻量级微调方法,通过向输入添加可学习的嵌入,而不是改变整个模型结构,来优化任务特异性。这不仅减少了计算和存储需求,还可以使用更大的冻结模型来实现与全面微调相当的性能。在文本分类等任务中,提示微调提供了一种灵活高效的解决方案。

引用链接:

[1].Probe in NLP系列(一) - 知乎 (zhihu.com)

[2].语言学 NLP模型的智慧 (topbots.com)Discovering the Encoded Linguistic Knowledge in NLP Models

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值