[GPT概念-02] — 预训练、微调和不同的用例应用

GPT: Generative Pretrained Transformer

一、说明

在之前的博客中,我们研究了++生成式预训练转换器++的整个概述。现在让我们看看关于预训练、微调和不同用例应用的超级重要主题。

二、预备训练

预训练是关于在没有监督或显式监督的情况下,我们从大型未标记语料库中获得自述监督,其中每个下一个标记都是我们需要预测的标签。

在预三化期间,他们使用了:

批量大小 : 64

输入大小:(B,T,C) = (64, 512, 768),其中,T 是序列长度,C 是嵌入维度

**优化:**亚当与余弦学习速率调度器

**策略:**教师强迫(而不是自动回归训练)用于 qucker 和稳定收敛

三、为什么我们需要使用"教师"强迫?

在训练阶段,当权重在前几个时期几乎接近随机时,如果我们要求它生成一个标记,然后将该令牌作为输入,然后预测下一个标记,那么就会出现问题,因为这本身在它没有预测正确单词的地方并不敏锐和准确,然后这个错误将反向传播并产生错误结果。相反,正如我们所知道的序列的实际真实值一样,如果我们在每个正确的步骤(即教师强制)中输入正确的输入,然后对其进行训练------这样我们发送的是实际序列,而不是模型预测的中间输出。这将导致更快、更稳定的收敛------最初它需要这种训练帮助,在某个时候,如果我们愿意,我们可以删除这种训练方法。

现在让我们专注于微调。微调涉及针对各种下游任务调整模型(架构变化最小),例如,对于情感分析、问答、摘要、多个句子之间的句子关系等情况。

  • 标记数据集 C 中的每个样本都由标记 x2、x2、.....xm 的序列组成,标签为 y
  • 使用通过求解预训练目标学到的参数初始化参数
  • 在输入端,根据下游任务的类型添加其他令牌。例如,分类任务的开始<>和结束 <e> 标记
  • 在输出侧,将预训练的LM头替换为分级头(线性层Wy)

看到所有先前标记的最终令牌(token)表示知道序列中的所有令牌,因为对于此令牌,此处没有应用掩码 - 无论我们在这里得到什么输出,我们都可以使用它来做出我们想要做出的预测。这个最终的令牌表示已经看到了整个文档,现在我们可以选择使用该表示,然后决定它是正面评论还是负面评论。最后一个标记的大小为 768 维,我们可以将其添加到 W 矩阵中并转换为指示 0/1 的一维输出。如果目标输出有 10 个类,那么它将转换为 10 维输出,当在此基础上应用 softmax 时,我们会得到哪个类具有最大概率的所需输出。

现在我们的目标是预测输入序列的标签。

这里层 l = 12 和 m = 第 512 个位置令牌

四、多种任务的对应方法

4.1 任务:情绪分析

考虑一下我们只有 5 个字的评论

**发短信:**哇,印度已经登月了

**情绪:**阳性

最后一步的输出将是 768 维,然后 Wy 将用 2 维向量转换输出------其中我们必须检查将最大化并返回传播的类和所有参数(注意力参数、FFN 参数等)。会随着变化而变化。

4.2 任务 : 文本蕴涵/矛盾

**发短信:**一个有多个男性玩的足球游戏

**假设:**有些男人正在参加一项运动

**蕴涵:**真

这里我们有 2 个带有文本和假设的输入------在这种情况下,我们需要使用分隔符标记 ($) 来区分文本和假设。假设如果我们这里有 3 个类(真/假/不能说)------我们将有 768 维输出------Wy 将接受这个 768 维输入并将其映射到 3 个类,并预测应用 softmax 后的概率分布。如果它将一个类作为输出,那么我们将把 -log(predicted) 类作为损失函数,并通过网络反向传播并微调所有参数。

为什么我们称它为微调?因为我们已经对网络进行了预训练,并且我们在特定配置下有称重,现在我们只是针对这个特定任务调整它们,而不是从随机初始化开始,然后尝试调整这个本来会训练的任务的所有权重,但这是一个微调,因为我们已经在一些配置中并尝试针对这个任务进行调整。

4.3 任务 : 多项选择

问题:以下哪种动物是两栖动物?

选择1:青蛙

选择-2:鱼

输入问题以及选项 1

输入问题以及选项 2

对所有选项重复此操作

通过 softmax 规范化

无论哪个有正确的选择,我们都会反向传播并获得最大化的概率。

所有这些 NLP 任务都经过调整,其中网络在经过预训练后已经适应了这些任务。我们已经找到了合适的输入表示,在某些情况下,我们必须添加 $,并且我们还在输出中找到了合适的操作,这意味着我们忽略下一个标记预测,只添加一个层来预测这些任务所需的类。这就是微调中所做的。

4.4 文本生成

Input:

Prompt : I like

它是否为给定的提示生成相同的输出序列?

  • 是的,它给出了相同的序列,因为它是确定性的------这不是一个有利的输出,因为每当我们开始一次又一次地编写相同的提示时,我们可能需要一些更有创意的输出。因此,为此,我们需要了解不同的解码策略,这将有助于通过使用相同的提示来产生一些不同的输出。

因此,文本生成案例的愿望清单是:

  • 劝阻退化(即重复或不连贯)的文本

就像------我喜欢思考,我喜欢思考........

我喜欢认为参考知道如何思考畅销书

  • 鼓励它创造性地为同一提示生成序列
相关推荐
逸_1 小时前
dify工作流+github actions实现翻译并创建PR
gpt·github·dify
GISer_Jing2 小时前
神经网络初学总结(一)
人工智能·深度学习·神经网络
数据分析能量站2 小时前
神经网络-AlexNet
人工智能·深度学习·神经网络
Ven%3 小时前
如何修改pip全局缓存位置和全局安装包存放路径
人工智能·python·深度学习·缓存·自然语言处理·pip
YangJZ_ByteMaster3 小时前
EndtoEnd Object Detection with Transformers
人工智能·深度学习·目标检测·计算机视觉
volcanical4 小时前
Bert各种变体——RoBERTA/ALBERT/DistillBert
人工智能·深度学习·bert
知来者逆4 小时前
Binoculars——分析证实大语言模型生成文本的检测和引用量按学科和国家明确显示了使用偏差的多样性和对内容类型的影响
人工智能·深度学习·语言模型·自然语言处理·llm·大语言模型
跟德姆(dom)一起学AI4 小时前
0基础跟德姆(dom)一起学AI 自然语言处理05-文本特征处理
人工智能·python·深度学习·自然语言处理
云空5 小时前
《解锁分类神经网络预训练模型的奇妙世界》
人工智能·深度学习·神经网络
啊哈哈哈哈哈啊哈哈6 小时前
P7——pytorch马铃薯病害识别
人工智能·深度学习·学习