LLM学习笔记

为什么需要大语言模型?

大语言模型(Large Language Models)能够解决的核心问题是自然语言处理中的文本生成预测。具体来说,其目标是建立一个对给定输入序列概率进行建模的模型,利用该模型来生成具有自然流畅性和连贯性的文本,包括自动摘要、机器翻译、聊天机器人、问答系统等。

大语言模型的基本思想是,通过在大量语料库上训练,建立单词或子词之间的联系,学习生成下一个单词或子词的分布特征。其主要通过神经网络(如循环神经网络、卷积神经网络、变压缩自编码器、Transformer等)实现文本序列的映射与建模,利用输入序列中的信息推断下一个可能的输出。将其应用于自然语言任务中,便可以实现较好的语言生成效果。

由于大语言模型能够更好地建模上下文信息以及长程的依赖关系,因此在自然语言生成任务中具有重要的应用价值。同时,由于计算资源和数据集的限制,目前还存在着许多挑战和难点,例如参数选择、训练时间、过拟合等。但是,随着硬件技术、算法以及数据集的不断进步,大语言模型将有望逐渐实现更加精细和智能的自然语言处理。

LLM和预训练语言模型的关系

LLM是“Large Language Model(大型语言模型)”的缩写,而预训练语言模型是指在大规模未标注数据上进行的先验训练,在小规模标注数据训练下游任务。LLM本质上是预训练语言模型中最具代表性、最优秀的一类。

预训练语言模型主要是利用自监督学习无监督预训练等方法,通过大量文本数据训练,直接从文本数据自身学习语言知识,构建出通用的语言表示。目前常见的预训练语言模型包括BERT、GPT、RoBERTa等。

LLM是在预训练语言模型的基础上进一步加大模型规模,使用更多的参数和更大的模型容量,以获得更强大的语言理解和生成能力。此外,LLM还将多任务学习引入模型中,同时追求预训练模型与下游任务之间的平衡,使模型具有更好的可迁移性泛化性能。

因为LLM一般具有更高的计算资源更大的数据集,所以其表现往往比传统预训练语言模型更为出色。但同时,也需要巨大的计算资源来支持其训练,限制了LLM的普及应用。

BERT和GPT的区别是什么?

BERT和GPT是当前最具代表性的两个预训练语言模型,在NLP领域广泛应用。虽然它们都属于预训练语言模型,但在其预训练方法、网络结构和应用领域等方面存在较大不同。

1.预训练任务:BERT采用掩码语言模型(Masked Language Model,MLM)和下一句预测(Next Sentence Prediction,NSP)两个任务联合训练。其中,MLM需要在句子中随机掩盖一些词汇,使模型在上下文信息的基础上进行缺失词汇的预测;NSP则需要判断两个句子之间是否有逻辑关系。而GPT只使用了自回归的语言模型(Autoregressive Language Model),即输入前面的部分文本预测下一个单词,使模型尽可能地学习到语言模式和知识,并为下游任务提供文本生成功能

2.网络结构:BERT采用Transformer编码器作为网络结构,使模型可以很好地处理序列信息和全局信息。GPT则采用了单向的Transformer解码器,通过自回归方式同时从左到右逐个生成文本。

3.应用领域:BERT主要应用于需要对输入进行分类序列标注任务,如文本分类、命名实体识别等。而GPT则主要应用于生成式任务,如文本生成、对话系统等。

总的来说,BERT和GPT这两种预训练语言模型在预训练任务、网络结构和应用领域等方面存在较大的不同,各有其优点和适用场景。因此,在具体应用中需要根据任务需求选择合适的模型。

NLP的发展史

  1. Feature Engineering:即使用文本特征,例如词性,长度等,在使用机器学习的方法进行模型训练。(无预训练语言模型)
  2. Architecture Engineering:在W2V基础上,利用深度模型,加上固定的embedding。(有固定预训练embedding,但与下游任务无直接关系)
  3. Objective Engineering:在bert 的基础上,使用动态的embedding,在加上fine-tuning。(有预训练语言模型,但与下游任务有gap)
  4. Prompt Engineering:直接利用与训练语言模型辅以特定的prompt。(有预训练语言模型,但与下游任务无gap)

在四个范式中,预训练语言模型,和下游任务之间的距离,变得越来越近,直到最后Prompt Learning是直接完全利用LM的能力。

名字概念

预训练模型(Pre-trained Model)

The Transformer model family

  • autoregressive-models: 自回归模型,主要代表有 GPT,主要用于生成任务
  • autoencoding-models: 自编码模型,主要代表有 BERT,主要用于NLU任务
  • seq-to-seq-models:序列到序列任务,包含了an encoder 和 a decoder,主要代表有 BART,主要用于基于条件的生成任务,例如翻译,summary等
  • multimodal-models:多模态模型
  • retrieval-based-models:基于召回的模型,主要用于开放域问答

自回归模型

自回归模型是一种序列生成模型,其基本思想是根据前面的已知信息,预测后续的序列数据。自回归模型通过将待生成序列向左移动一个单位,并将其用作输入来生成序列中的下一个元素,从而逐个地预测下一个元素。这意味着在生成过程中,每个元素的生成都依赖于前面已经生成的所有元素。

其中,最著名的代表就是循环神经网络(Recurrent Neural Networks,RNNs)和Transformer模型。在循环神经网络中,模型使用内部状态(hidden state)传递之前的序列信息,并将其作为当前时间步骤的输入数据;而在Transformer模型中,模型通过Attention机制直接关注已经生成的序列元素,计算后再拼接到当前时间步骤的输入中,较好的处理了序列中的长距离依赖关系。

自回归模型的主要优点是可以捕捉到序列中隐含的规律和局部特征,因此在文本生成、翻译、音频生成等任务中获得了广泛的应用。但同时也存在很大的时间复杂度和训练困难的问题,近年来出现的一些变种和扩展模型能够有效解决这些问题,不断提高了自回归模型在NLP领域的表现。

序列生成模型

序列生成模型是一种用于生成序列数据的机器学习模型。其核心任务是根据前面的已知信息,预测后续的序列数据。常见的序列生成任务包括文本生成、语音合成、图像描述等。

序列生成模型的基本思路是,给定输入序列,利用先验知识训练生成一个概率分布,用于生成每个位置上可能的下一个元素;然后利用这个概率分布进行采样,按照一定顺序产生输出序列。

根据不同的生成方式,序列生成模型可以分为两类:自回归模型和非自回归模型。其中,自回归模型通过将前面已经生成的序列作为上下文条件来产生下一个元素。如循环神经网络(Recurrent Neural Networks,RNNs)和Transformer模型,其状态会传递过去,因此每个时刻都有信息从前面传递下来。而非自回归模型则不需要显式地保留已生成的序列,比如变分自编码器(Variational Autoencoder,VAE)和生成对抗网络(Generative Adversarial Network,GAN)等。

序列生成模型在NLP、语音识别、图像处理等领域有着广泛的应用。它们可以为自然语言生成、机器翻译、图像描述等任务提供解决方案,并逐渐演化为了一系列复杂、高效的模型,成为NLP领域研究的重要方向之一。

Prompt

prompt 就是给 预训练语言模型 的一个线索/提示,帮助它可以更好的理解 人类的问题。

Prompt is the technique of making better use of the knowledge from the pre-trained model by adding additional texts to the input.

Prompt 是一种为了更好的使用预训练语言模型的知识,采用在输入段添加额外的文本的技术。

  • 目的:更好挖掘预训练语言模型的能力
  • 手段:在输入端添加文本,即重新定义任务(task reformulation)

Prompt Learning

“Prompt Learning”是一种自然语言处理技术,用于生成和推断文本或语言模型。Prompt Learning通常被应用于大规模的语言模型预训练中。这类自然语言处理技术使得机器可以学习语义结构、推理方法和各种语言工具的抽象概念,并且可用于多个不同的下游任务

Prompt Learning的常见实现方式是通过添加少量的示例(prompt)来编写自然语言查询,例如短语或问题。使用这些示例,模型可以开始学习如何应对特定类型的问题,并逐步强化准确性。当模型遇到与示例有关联但却从未见过的新词汇或概念时,它能够学习到这些信息,并快速推断出相应的答案。

Prompt Learning在NLP领域具有广泛应用,例如文本分类、机器翻译和问答系统等。使用Prompt Learning技术进行语言建模可以帮助深度学习模型更好地理解和生成文本,提高自然语言处理的准确性和效率,从而实现真正意义上的智能交互。

Prompt Tuning

Prompt Tuning是在自然语言处理(NLP)中使用 Prompt(引导语)来精细调整预训练模型的过程。Prompt Tuning通过在模型中添加或微调Prompt(提示文本),可以有效地优化模型的性能,使其在特定任务上表现更优秀

通常情况下,Prompt Tuning的过程包括如下几个步骤:

1.选择合适的Prompt:根据具体任务和数据集的特点,选择合适的Prompt进行微调。

2.微调模型参数:根据Prompt的选取和预期性能要求,对模型的参数进行微调以达到更好的性能表现。

3.评估模型性能:使用标准评估指标进行模型性能评估,评估模型在新数据集上的表现效果。

4.反复迭代微调:在评估结果不满足预期时,反复调整Prompt文本和模型参数,直到达到最佳性能为止。

在NLP任务中,Prompt Tuning已经在诸如问答、文本分类、命名实体识别等任务中取得了显著的提升效果。与传统的fine-tuning相比,Prompt Tuning使用少量的Prompt(提示文本)来微调模型,有助于更好地理解任务需求,从而更加精确地进行语义推断,取得更好的效果。

参考资料

Prompt Learning:

https://zhuanlan.zhihu.com/p/442486331

Prompt Learning,用提示学习调教大模型:

https://www.bilibili.com/video/BV1ax4y1T7x4/