平面设计专用网站佛山网站设计外包

当前位置: 首页 > news >正文

平面设计专用网站,佛山网站设计外包,腾讯地图如何标注自己店铺位置,搜索引擎优化的技巧有哪些随着预训练模型的参数越来越大#xff0c;尤其是175B参数大小的GPT3发布以来#xff0c;让很多中小公司和个人研究员对于大模型的全量微调望而却步#xff0c;近年来研究者们提出了各种各样的参数高效迁移学习方法#xff08;Parameter-efficient Transfer Learning#x…       随着预训练模型的参数越来越大尤其是175B参数大小的GPT3发布以来让很多中小公司和个人研究员对于大模型的全量微调望而却步近年来研究者们提出了各种各样的参数高效迁移学习方法Parameter-efficient Transfer Learning即固定住Pretrain Language modelPLM的大部分参数仅调整模型的一小部分参数来达到与全部参数的微调接近的效果调整的可以是模型自有的参数也可以是额外加入的一些参数。本文将介绍一些常见的参数高效微调技术比如BitFit、Prefix Tuning、Prompt Tuning、P-Tuning、P-Tuning v2、Adapter Tuning及其变体、LoRA、AdaLoRA、QLoRA、MAM Adapter、UniPELT等。 1、BitFit 论文地址https://aclanthology.org/2022.acl-short.1.pdf 代码地址https://github.com/benzakenelad/BitFit BitFIt只对模型的bias进行微调。在小规模-中等规模的训练数据上BitFit的性能与全量微调的性能相当甚至有可能超过在大规模训练数据上与其他fine-tuning方法也差不多。在大模型中bias存在Q,K,V,MLP,LayerNorm中具体公式如下 在Bert-Base/Bert-Large这种模型里bias参数仅占模型全部参数量的0.08%0.09%。但是通过在Bert-Large模型上基于GLUE数据集进行了 BitFit、Adapter和Diff-Pruning的效果对比发现BitFit在参数量远小于Adapter、Diff-Pruning的情况下效果与Adapter、Diff-Pruning想当甚至在某些任务上略优于Adapter、Diff-Pruning。 通过Bitfit训练前后的参数对比发现很多bias参数没有太多变化例如跟计算key所涉及到的bias参数。发现其中计算query与中间MLP层的bias将特征维度从N放大到4N的FFN层——将输入从768d转化为到3072d变化最为明显只更新这两类bias参数也能达到不错的效果反之固定其中任何一者模型的效果都有较大损失。 作者给出了Hugging Face与BitFit参数的映射关系表如下所示 2、Prefix Tuning 论文地址https://arxiv.org/pdf/2101.00190.pdf 代码地址https://github.com/XiangLi1999/PrefixTuning prefix-tuning方法是一个轻量级的fine-tuning方法用于自然语言处理的生成任务。该方法可以保持预训练语言模型参数固定frozen而只需要在task-specific vector称为prefix上进行优化。即只需要少量约0.1%的优化参数即可以在量和小量数据上达到不错的效果。 针对不同的模型结构需要构造不同的Prefix。 针对自回归架构模型在句子前面添加前缀得到 z [PREFIX; x; y]合适的上文能够在固定 LM 的情况下去引导生成下文比如GPT3的上下文学习。 针对编码器-解码器架构模型Encoder和Decoder都增加了前缀得到 z [PREFIX1; x; PREFIX2; y]。Encoder端增加前缀是为了引导输入部分的编码Decoder 端增加前缀是为了引导后续token的生成。 如上图所示  表示prefix indices序列  表示prefix的长度。Prefix-tuning通过初始化可训练矩阵  (维度为  来存储prefix参数 training objective与Fine-tuning相同但语言模型的参数 固定仅仅prefix参数是可训练参数。因此是可训练的的函数当时   由  直接复制得到对于  , 由于prefix activations始终在left context因此可以影响到    。 在实验上直接更新  的参数会导致优化的不稳定以及表现上的极具下降。因此通过使用较小的矩阵  通过大型前馈神经网络(  )来reparametrize矩阵  : 其中  和  在相同的行维度也就是相同的prefix length, 但不同的列维度。当训练完成后reparametrization参数被丢掉仅仅  需要被保存下来。 实验中对比了Fine Tuning和Prefix Tuning在E2E、WebNLG和DART三个table-to-text任务上的效果 3、Prompt Tuning 论文地址https://arxiv.org/pdf/2104.08691.pdf 代码地址https://github.com/google-research/prompt-tuning Prompt Tuning可以看作是Prefix Tuning的简化版本面向NLU任务进行了更全面的效果对比并且在大模型上成功打平了LM微调的效果它给每个任务定义了自己的Prompt然后拼接到数据上作为输入但只在输入层加入prompt tokens并且不需要加入 MLP 进行调整来解决难训练的问题。通过反向传播更新参数来学习prompts而不是人工设计prompts同时冻结模型原始权重只训练prompts参数训练完以后用同一个模型可以做多任务推理。 对比Prefix-Tunningprompt-tuning的主要差异如下 论文使用100个prefix token作为默认参数大于以上prefix-tuning默认的10个token不过差异在于prompt-Tunning只对输入层(Embedding)进行微调而Prefix是对虚拟Token对应的上游layer全部进行微调。因此Prompt-Tunning的微调参数量级要更小且不需要修改原始模型结构这是“简化”的来源。相同的prefix长度Prompt-Tunning(0.01%)微调的参数量级要比Prefix-Tunning(0.1%~1%)小10倍以上如下图所示 为什么上面prefix-tuning只微调embedding层效果就不好放在prompt-tuning这里效果就好了呢因为评估的任务不同无法直接对比个人感觉有两个因素一个是模型规模另一个是继续预训练前者的可能更大些在下面的消融实验中会提到    效果消融实验 在SuperGLUE任务上随着模型参数的上升PromptTunning快速拉近和模型微调的效果110亿的T5模型(上面prefix-tuning使用的是15亿的GPT2)已经可以打平在下游多任务联合微调的LM模型并且远远的甩开了Prompt DesignGPT3 few-shot 作者也做了全面的消融实验包括以下4个方面最核心的感受就是只要模型足够够大一切都好说 prompt长度(a)固定其他参数作者尝试了{1520100150}, Prompt token 的长度在20左右时的表现已经不错超过20之后提升Prompt token长度对模型的性能提升不明显了同样的这个gap也会随着模型参数规模的提升而减小即对于超大规模模型而言即使 Prompt token 长度很短对性能也不会有太大的影响 Prompt初始化(b): 作者尝试了随机uniform初始化用标签文本空间初始化和用Top5K高频词采样初始化在10^8规模类标签词初始化效果最好。作者发现预测label也会在对应prompt空间内。不过到百亿规模后初始化带来的影响就会消失 T5继续预训练©:作者认为T5本身的Span Corruption预训练目标和掩码词并不适合冻结LM的场景因为在微调中模型可以调整预训练目标和下游目标的差异而只使用prompt可能无法弥合差异。其实这里已经能看出En-Dn框架在生成场景下没有GPT这样的Decoder来的自然。因此作者基于LM目标对T5进行继续预训练 继续预训练step(d)以上的继续预训练steps继续预训练步数越高模型效果在不同模型规模上越单调 可解释性 考虑Prompt-Tunning使用Embedding来表征指令可解释性较差。作者使用cosine距离来搜索prompt embedding对应的Top5近邻。发现如下 embedding的近邻出现语义相似的cluster例如{ Technology / technology / Technologies/ technological / technologies }, 说明连续prompt实际可能是相关离散prompt词的聚合语义 当连续prompt较长len100, 存在多个prompt token的KNN相同个人认为这和prefix-tuning使用MLP那里我的猜测相似prompt应该是一个整体 使用标签词初始化微调后标签词也大概率会出现在prompt的KNN中说明初始化可以提供更好的prior信息加速收敛