本文介绍: 大语言模型损失函数详解,以自动编码式语言模型和自动回归语言模型为例。

一、语言模型分类       

       我们可以语言模型分为两类:自动回归式语言模型,自动编码式语言模型

1.1 自动回归式语言模型

       自动回归式语言模型在本质上是单向的,也就是说,它只沿着一个方向阅读句子。正向(从左到右)预测;反向(从右到左)预测。下面,让我们通过一个示例来了解这两种方法的原理。这类模型在大量参数下对特征具有更强的抽取和表示能力,目前已成为主流。

        例句:Paris is a beautiful city. I love Paris。让我们掩盖单词city,并以空白代替,如下所示。

        Paris is a beautiful __. I love Paris.

        然后,我们让模型预测空白处的词。如果使用正向预测,那么模型就会从左到右读取所有的 单词,直到空白处,然后进行预测,如下所示。

        Paris is a beautiful __.

       如果使用反向预测,那么模型就会从右到左读取所有的单词,直到空白处,然后进行预测,如下所示。

       __. I love Paris.

1.2 自动编码式语言模型

       自动编码式语言模型:自动编码式语言模型同时利用了正向预测和反向预测的优势。在进行预测时,它会同时从两个方向阅读句子,所以自动编码式语言模型是双向的。

       如下所示,为了预测单词city,自动编码式语言模型从两个方向阅读句子,即从左到右和从右到左。

       Paris is a beautiful __. I love Paris

       双向模型能够给出更好的结果,因为如果从两个方向阅读句子,模型就能够更加清晰地理解句子。

      本文将结合具体模型和论文,探讨这两种模型的损失函数。

二、自动编码式语言模型

       提到自动编码式语言模型,那最经典的非BERT莫属了。在GPT出现之前,以BERT为代表的模型几乎独领江湖。

2.1 BERT

       BERT(Bidirectional Encoder Representations from Transformers)是一种基于Transformer架构的自然语言处理模型。它由Google于2018年提出,以解决语境相关性和双向理解的问题。BERT采用双向训练方式,能够同时考虑文本左右两侧的上下文信息,有效捕获语境含义。

        BERT的损失函数由两部分组成,第一部分是来自 Mask-LM 的单词级别分类任务,另一部分是句子级别的分类任务。通过这两个任务的联合学习可以使得 BERT 学习到的表征既有 token 级别信息,同时也包含了句子级别的语义信息

       在第一部分的损失函数中,如果被 mask 的词集合为 M(即计算BERT的MLM loss时会忽略没被mask的token),因为它是一个词典大小 |V| 上的多分类问题,那么具体说来有:

L_1left(theta, theta_1right)=-sum_{i=1}^M log pleft(m=m_i mid theta, theta_1right), m_i in[1,2, ldots,|V|]

       在句子预测任务中,也是一个分类问题的损失函数:

L_2left(theta, theta_2right)=-sum_{j=1}^N log pleft(n=n_i mid theta, theta_2right), n_i in[text { IsNext, NotNext }]

        这两个损失函数也很容易理解:

  • 多分类问题,类别的数量等于词表的大小,第i个词被正确预测的概率越大,相应的损失越小
  • 二分类问题,第j个句子的类别被正确预测的概率越大,相应的损失越小

        因此,两个任务联合学习的损失函数是:

Lleft(theta, theta_1, theta_2right)=-sum_{i=1}^M log pleft(m=m_i mid theta, theta_1right)-sum_{j=1}^N log pleft(n=n_i mid theta, theta_2right)

三、自动回归式语言模型

       BERT一度引领了NLP领域。但是随着OpenAI-GPT系列模型的爆火,自回归式模型被更为广泛的采用。本章详细解析GLM大模型、LoRA微调方法、Prefix tuning这三篇论文中的损失函数。以期找到这些损失函数的共性。

3.1 GLM系列大模型

       清华大学提出的GLM大模型预训练框架采用了自回归的空白填充方法,在自然语言理解、无条件生成、有条件生成等NLP任务上取得了显著成果。其中,GLM-130B是最大的模型,拥有1300亿参数,支持中英文双语,旨在训练出开源开放的高精度千亿中英双语语言模型。该模型采用了量化技术,可在4块3090(24G)或8块2080Ti(11G)上推理。

       输入向量为mathbf{x}=left[x_1, cdots, x_nright],抽样出文本left{boldsymbol{s}_1, cdots, boldsymbol{s}_mright},每个文本s_{i}都代表了一系列连续的token吗,可以写做left[s_{i, 1}, cdots, s_{i, l_i}right],每个文本s_{i}都用[MASK]代表,从而形成了x_{corrupt}m表示抽样文本段的数量,l_{i}表示每个抽样文本段的长度。预训练目标可以用下式表示:

max _theta mathbb{E}_{boldsymbol{z} sim Z_m}left[sum_{i=1}^m log p_thetaleft(boldsymbol{s}_{z_i} mid boldsymbol{x}_{text {corrupt }}, boldsymbol{s}_{boldsymbol{z}_{<i}}right)right]

      需要对所有的抽样文本段进行随机打乱, Z_{m}left{boldsymbol{s}_1, cdots, boldsymbol{s}_mright}被打乱后,所有可能性的集合s_{z<i}又可以写作left[boldsymbol{s}_{z_1}, cdots, boldsymbol{s}_{z_{i-1}}right]。在预测缺失的文本段s_{z_{i}}时(每个z_{i}都包含多个单词,所以需要用集合S表示,z_{i}作为下标),模型可以访问到被破坏的文本x_{corrupt},以及s_{z_{i}}前面所有的抽样文本段。

      那每个s_{z_{i}}中token的预测概率应该如何表示呢?如下:

begin{aligned} & p_thetaleft(boldsymbol{s}_i mid boldsymbol{x}_{text {corrupt }}, boldsymbol{s}_{boldsymbol{z}_{<i}}right) \ = & prod_{j=1}^{l_i} pleft(s_{i, j} mid boldsymbol{x}_{text {corrupt }}, boldsymbol{s}_{boldsymbol{z}_{<i}}, boldsymbol{s}_{i,<j}right) end{aligned}

     很简单,把所有token的概率乘起来就可以了。

     需要注意的是,这边要弄清楚s_{z_{i}}s_{i}的区别:

  • s_{i}代表第i个文本段
  • 由于left{boldsymbol{s}_1, cdots, boldsymbol{s}_mright}有很多种打乱方式,s_{z_{i}}表示其中某一个打乱方式的第i个抽样文本段。

3.2 更一般的表达方式

       以上是针对GLM这系列特殊的模型。那么对于一般的自回归式模型,有没有更普遍的一种表达方式呢?我们以LoRA这篇文章为例。

       每一个下游任务都能用 内容-目标对来表示:mathcal{Z}=left{left(x_i, y_iright)right}_{i=1, . ., N}x_{i}y_{i}都是token序列。例如在自然语言->sql语句任务中,x_{i}是自然语言查询y_{i}是其相应的SQL命令。对于概括任务而言,x_{i}是文章的内容,y_{i}是其相应的概述内容。预训练的自回归语言模型可以用P_{Phi}(y mid x)来表示。那么微调就是要找到一组参数phi,使得下式最大:

max _{Phi} sum_{(x, y) in mathcal{Z}} sum_{t=1}^{|y|} log left(P_{Phi}left(y_t mid x, y_{<t}right)right)

       即用t前的所有样本来预测第t个样本。|y|表示向量y的长度。

四、参考文献

[1] Devlin J , Chang M W , Lee K ,et al.BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding[J].  2018.

[2] Du Z , Qian Y , Liu X ,et al.GLM: General Language Model Pretraining with Autoregressive Blank Infilling[J].  2021.DOI:10.48550/arXiv.2103.10360.  

[3] Zeng, Aohan, et al. “Glm-130b: An open bilingual pre-trained model.” arXiv preprint arXiv:2210.02414 (2022).

[4] Hu E J , Shen Y , Wallis P ,et al.LoRA: Low-Rank Adaptation of Large Language Models[J].  2021.DOI:10.48550/arXiv.2106.09685.  

原文地址:https://blog.csdn.net/tortorish/article/details/134590773

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_934.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注