Large Language Model 模型对比

对于LLM模型框架主要如下3类[1]:1、autoregressive,2、autoencoding,3、encoder-decoder。主要对3类结构以及部分细节进行阐述。(对于框架分类其实多种,在此论文中[2]采用的是双向/单向结构)

模型 参数量 模型结构
BERT
GLM
XLNet
SpanBERT
GPTv1 Decoder-Only
GPTv2
GPTv3

TODO List:

  • GPT
  • XLNet
  • GLM
  • BERT
  • SpanBERT
  • 下游任务

对于自回归以及自编码采用此论文[1:1]中数学描述。

自回归在逻辑:通过前面\(t\)段文字内容去对\(t+1\)的内容进行预测,数学上表述如下:

\[\max_\theta\quad\log p_\theta(\mathbf{x})=\sum_{t=1}^T\log p_\theta(x_t\mid\mathbf{x}_{<t})=\sum_{t=1}^T\log\frac{\exp\left(h_\theta(\mathbf{x}_{1:t-1})^\top e(x_t)\right)}{\sum_{x^{\prime}}\exp\left(h_\theta(\mathbf{x}_{1:t-1})^\top e(x^{\prime})\right)}
\]

自编码结构主要是首先对文本进行"挖空"([MASK]去对文本进行标记),而后去对"挖空"内容进行预测,数学表述为:

\[\max_\theta\quad\log p_\theta(\bar{\mathbf{x}}\mid\hat{\mathbf{x}})\approx\sum_{t=1}^Tm_t\log p_\theta(x_t\mid\hat{\mathbf{x}})=\sum_{t=1}^Tm_t\log\frac{\exp\left(H_\theta(\hat{\mathbf{x}})_t^\top e(x_t)\right)}{\sum_{x^{\prime}}\exp\left(H_\theta(\hat{\mathbf{x}})_t^\top e(x^{\prime})\right)}
\]

公式中\(\approx\)在BERT模型中对于概率公式\(p(\overline{x}|\hat{x})\)是基于独立性假设的:所有的被[MASK]标记内容都被单独重构(all masked tokens \(\overline{x}\) are separately reconstructed)

其中:\(x_{<t}\)代表前\(t\)段文本,\(x_t\)代表预测的\(t\)位置文本,\(h_{\theta}(x_{1:t-1})\)代表神经网络模型(RNN/Transformer),\(e(x)\)代表\(x\)的编码内容,\(\overline{x}\)代表[MASK]内容

因为BERT此类模型是双向结构,那么对于文本的处理上存在天然优势(更好的去理解上下文),因此在后续的自回归的模型框架上,都在尝试加入 "双向" 结构,去让模型更加好的理解文本的内容。

1、Autoregressive

1.1 Generative Pre-Training

  • Generative Pre-Training v1**

对于大部分的深度学习任务,需要大量的标记数据(labeled data),但是如果使用大量的标记数据就会导致一个问题:构建得到的模型缺少适用性(可以理解为模型的泛化性能可能不佳)。那么就尝试使用非标记的数据(unlabelled data)但是这样一来又会有一个新的问题:时间消费大(time-consuming and expensive)。所以目前学者提出:使用预训练的词嵌入来提高任务性能。使用 未标注的文本信息(word-level information from unlabelled text)可能会:1、不清楚那种优化目标(optimization objective)在学习对迁移有用的文本表示时最有效;2、如何将这些学习到的表征有效的迁移到目标任务(target task)中。

作者提出:1、无监督的预训练(unsupervised pre-training);2、监督的微调(supervised fine-tuning)

1、Unsupervised pre-training

给定一些列的的 无标签token:\(U=\{u_1,...,u_n\}\),构建自回归的模型:\(L_1(U)= \sum_{i}logP(u_i|u_{i-k},...,u_{i-1}; \theta)\),其中\(\theta\)为模型的参数。作者在模型中使用Transformer作为decoder,在最后的模型上作者构建得到为:

\[h_0= UW_e+W_p \\
h_l = transformer\_block(h_{l-1})\forall i \in [1,n]\\
P(u)=softmax(h_nW_e^T)
\]

其中\(n\)代表神经网路层的数目,\(W_e\)代表token embedding matrix,\(W_p\)代表position embedding matrix。对于无监督下的预训练:通过构建的数据集,去对模型的参数进行训练,得到模型的参数。

2、Supervised fine-tunning

作者在此部分提到:通过第一步得到的模型参数去对监督任务进行训练(采用的模型结构是没有变化的)。给定标签数据集\(C\),给定输入:\(\{x^1,...,x^m \}\)以及其标签\(y\)。将数据投入到预训练得到的模型参数里面得到:\(h_l^m\),然后添加一个线性输出层(参数为:\(W_y\))去对\(y\)进行预测。

\[P(y|x^1,...,x^m)=softmax(h_l^wW_y)
\]

对于上述两部分步骤直观上理解:人首先从外界获取大量信息:网络,书本等,把这些信息了解之后,然后去写作文或者去回答问题。

模型结构:

  • GPTv2

1.2 XLNet[3]

模型创新点

  • 1、对"排序"进行打乱(all possible permutations of the factorization order)

注:对"排序"打乱不是指将文本里面文字随机打乱,而是将Masked AttentionMASK进行打乱,如下图最右侧描述

模型框架如下:

在结构上作者认为标准的语言模型在置换目标时效果不佳,比如说:对于两段文本ACAB在自回归中模型都获取到A的信息,而后去对后续的B/C进行预测,效果显然会差强人意。因此作者提出两部分表示并且对预测目标进行改进:

  • 预测目标
\[p_\theta(X_{z_t}=x\mid\mathbf{x}_{z<t})=\frac{\exp\left(e(x)^\top g_\theta(\mathbf{x}_{\mathbf{z}<t},z_t)\right)}{\sum_{x'}\exp\left(e(x')^\top g_\theta(\mathbf{x}_{\mathbf{z}<t},z_t)\right)}
\]
  • 两部分表示(上图最左侧内容表示,上述内容都是\(3\rightarrow 2\rightarrow 4\rightarrow 1\),虚线代表获取不到信息)

    1、The content represenation(\(h_{\theta}\)) || 内容表示:与传统的Transformer中的隐藏单元作用相同,同时对 内容预测内容\(x_{z_t}\)进行编码

    2、The query represenation(\(g_{\theta}\)) || 查询表示:只获取\(x_{z<t}\)内容以及预测内容位置\(z_t\)的信息
  • 部分预测

    对于减少模型的优化难度,作者对自回归的预测内容改进,原始的是“逐一”,而作者提出直接“部分”也就是说先获取\(z_{<c}\)的内容而后去对\(z{>c}\)的内容进行预测。设置超参数\(K\)用来设置文本的长度

1.3 General Language Model[1:2]

国产大模型,对于GLM模型在整体思路上还是自回归的思路,不过在文本预训练上提出俩部分改进:1、Span shuffling;2、2D positional encoding。对于NLU(natural language understanding)有意思的将他们比作“完形填空”(cloze question)。模型的框架:

1、Auto-regressive blank infilling

2、Multi-Task Pretraining


2、Autoencoding

2.1 BERT[2:1]

模型创新点

1、Masked LM(MLM)

2、Next Sentence Prediction(NSP)

  • 缺点

    1、BERT neglects dependency between the masked positions and suffers from a pretrain-finetune discrepancy(忽略了屏蔽位置之间的依赖性,并遭受预训练微调差异的影响)[1:3]

这是因为在BERT模型中,在预训练阶段会添加[MASK],但是在下游任务(downsteram tasks)中并不会使用[MASK]

  • 优点

2.2 SpanBERT[4]

模型创新点

SpanBERT逻辑上还是和BERT相同,对BERTMLMNSP就行改进

  • 1、使用随机连续的Span(use a different random process to mask spans of tokens, rather than individual ones)

    保持和BERT相同的[MASK]比例(80%的内容[MASK]标记,10%的内容随机替换,10%保持不变),不过在SpanBERTMASK操作做出了改进:1、在确定比例之后,通过几何分布(geometric distribution | \(Geo(p) \ p=0.2\))来确定单词数量;2、然后随机的选择MASK要开始的位置。不过需要注意的是:在SpanBERTMASK的内容是连续的,而BERT是不连续的。

  • 2、设计SBO(which tries to predict the entire masked span using only the representations of the tokens at the span’s boundary)

    Span Boundary Objective原理:

    假设一段输入文本:\(x_1,...,x_n\),通过第一步得到连续的MASK内容:\((x_s,...,x_e)\),那么对\(x_i\)的预测通过MASK外的内容(\(s-1,\ e+1\))来以及其所在位置(\(i-s+1\))对MASK内的内容就行预测:

    \[y_i=f(x_{s-1},x_{e+1},p_{i-s+1})
    \]

    对于函数\(f\)使用的是2层的前馈神经网络:

    \[h_0\ =\ [x_{s-1};x_{e+1},p_{i-s+1}] \\
    h_1\ =\ LayerNorm(GeLU(W_1h_0))\\
    y_i\ = \ LayerNorm(GeLU(W_2 h_1))
    \]

    损失函数:交叉熵损失函数(cross-entropy loss)。对所有损失函数进行相加:

    \[\begin{aligned}
    \mathcal{L}(x_{i})& =\mathcal{L}_{\mathbf{MLM}}(x_i)+\mathcal{L}_{\mathbf{SBO}}(x_i) \\
    &=-\log P\left(x_i\mid\mathbf{x}_i\right)-\log P\left(x_i\mid\mathbf{y}_i\right)
    \end{aligned}
    \]
  • 3、对样本随机采集连续文本作为样本,而非BERT中的NSP(samples a single contiguous segment of text for each training example)

模型框架:


3、Encoder-Decoder


4、下游任务

4.1 General Language Understanding Evaluation


5、模型细节

5.1 高斯线性激活函数(GeLU)[5]

其在思想上结合ReLU(对输入有选择归零/保持不变)以及dropout(对输入随机归零)特点,函数定义为:

\[()=(≤)=Φ()=\frac{x}{2}[1+erf(\frac{x}{\sqrt{2}})]
\]

优点:

GELU的优点是,它在处理负数时不会像ReLU一样将输入裁剪到0,这可能导致梯度消失的问题。

  • 1、具有更光滑的导数:GELU函数的导数是连续的,这使得在训练深度神经网络时可以更容易地传播梯度,避免了ReLU函数在 处的导数不连续的问题,从而减少了训练过程中出现的梯度消失问题
  • 2、可以加速收敛:GELU函数在激活函数的非线性变换中引入了类似于sigmoid函数的变换,这使得GELU函数的输出可以落在一个更广的范围内,有助于加速模型的收敛速度

5.2 Transformer模型改进

  • 1、模型结构改进[6]

  1. Du,Z.et al.GLM: General Language Model Pretraining with Autoregressive Blank Infilling.Preprint at http://arxiv.org/abs/2103.10360 (2022).

  2. Devlin,J.,Chang,M.-W.,Lee,K.&Toutanova,K.BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.Preprint at http://arxiv.org/abs/1810.04805 (2019).

  3. Yang,Z.et al.XLNet: Generalized Autoregressive Pretraining for Language Understanding.in Advances in Neural Information Processing Systems vol. 32(Curran Associates, Inc., 2019).

  4. Joshi, M. et al. SpanBERT: Improving Pre-training by Representing and Predicting Spans. T Assoc Comput Ling 8, 64–77 (2020).

  5. Hendrycks, D. & Gimpel, K. Gaussian Error Linear Units (GELUs). Preprint at http://arxiv.org/abs/1606.08415 (2023).

  6. Xiong, R. et al. On Layer Normalization in the Transformer Architecture. Preprint at http://arxiv.org/abs/2002.04745 (2020).

各类LLM模型分析比较的更多相关文章

  1. 高级设计总监的设计方法论——5W1H需求分析法 KANO模型分析法

    本期开始进入设计方法论的学习,大湿自己也是边学边分享,算是巩固一遍吧: 另外这些理论基本都是交叉结合来应用于工作中,我们学习理论但不要拘泥于理论的框架中,掌握后要灵活运用一点- 这些理论一部分来自于我 ...

  2. 数据挖掘应用案例:RFM模型分析与客户细分(转)

    正好刚帮某电信行业完成一个数据挖掘工作,其中的RFM模型还是有一定代表性,就再把数据挖掘RFM模型的建模思路细节与大家分享一下吧!手机充值业务是一项主要电信业务形式,客户的充值行为记录正好满足RFM模 ...

  3. dlib人脸关键点检测的模型分析与压缩

    本文系原创,转载请注明出处~ 小喵的博客:https://www.miaoerduo.com 博客原文(排版更精美):https://www.miaoerduo.com/c/dlib人脸关键点检测的模 ...

  4. 基于Python的信用评分卡模型分析(二)

    上一篇文章基于Python的信用评分卡模型分析(一)已经介绍了信用评分卡模型的数据预处理.探索性数据分析.变量分箱和变量选择等.接下来我们将继续讨论信用评分卡的模型实现和分析,信用评分的方法和自动评分 ...

  5. No.1_NABCD模型分析

        Reminder 之 NABCD模型分析           定位 多平台的闹钟提醒软件. 在安卓市场发布软件,发布后一周的用户量为1000.           N (Need 需求) 这个 ...

  6. Task 6.1 校友聊之NABCD模型分析

    我们团队开发的一款软件是“校友聊”--一个在局域网内免流量进行文字.语音.视频聊天的软件.下面将对此进行NABCD的模型分析. N(Need需求):现如今,随着网络的迅速普及,手机和电脑已经成为每个大 ...

  7. (小组)第六次作业:NABCD模型分析。产品Backlog。

    NABCD模型分析: NABCD模型分析 1.N——need需求 随着时代的进步,人们生活水平的提高,现在手机的普及率已经非常高了,而且现在的家长很多时候会忙于工作,很少会花时间出来给自己读小学的孩子 ...

  8. libevent-select模型分析

    下面内容为windows下select模型分析,原博客链接 http://blog.csdn.net/fish_55_66/article/details/50352080 https://www.c ...

  9. 产品需求分析神器:KANO模型分析法

    前言: 任何一个互联网产品,哪怕是一个简单的页面,也会涉及到很多的需求,产品经理也会经常遇到这样的情况:老板,业务提的各种新需求一下子都扎堆,哪个需求对用户来说最重要,用户对我们的新功能是否满意?开发 ...

  10. deeplearning模型分析

    deeplearning模型分析 FLOPs paddleslim.analysis.flops(program, detail=False) 获得指定网络的浮点运算次数(FLOPs). 参数: pr ...

随机推荐

  1. windows幻灯片壁纸

    设置为10秒 win+r输入regedit 查找路径 HKEY_CURRENT_USER\Control Panel\Personalization\Desktop Slideshow 修改inter ...

  2. 【主流技术】实战之 Spring Boot 中集成微信支付(小程序)

    前言 微信支付是企业级项目中经常使用到的功能,作为后端开发人员,完整地掌握该技术是十分有必要的. 以下是经过真实商业项目实践的集成步骤,包括注册流程.调用过程.代码demo(经过脱敏)等,希望我的分享 ...

  3. HarmonyOS实战[一]——原理概念介绍安装:基础篇

    [本文正在参与"有奖征文|HarmoneyOS征文大赛"活动] 相关文章: HarmonyOS实战[一]--原理概念介绍安装:基础篇 HarmonyOS实战[二]-超级详细的原子化 ...

  4. element-ui表格筛选,根据表头属性显示隐藏列

    效果: 步骤: 1.标签上添加要过滤的源数组 <el-table-column label="标签" :filters="filterList" filt ...

  5. PyTorch下,使用list放置模块,导致计算设备不一的报错

    报错 在复现 Transformer 代码的训练阶段时,发生报错: RuntimeError: Expected all tensors to be on the same device, but f ...

  6. Hive-mapjoin详解(mapjoin原理)

    笼统的说,Hive中的Join可分为Common Join(Reduce阶段完成join)和Map Join(Map阶段完成join).本文简单介绍一下两种join的原理和机制. 一 .Common ...

  7. Google全球分布式数据库:Spanner

    2012年的OSDI上google发布了Spanner数据库.个人认为Spanner对于版本控制,事务外部一致性的处理,使用TrueTime + Timestamp进行全球备份同步的实现都比较值得一看 ...

  8. NC14545 经商

    题目链接 题目 题目描述 小d是一个搞房地产的土豪.每个人经商都有每个人经商的手段,当然人际关系是需要放在首位的. 小d每一个月都需要列出来一个人际关系表,表示他们搞房地产的人的一个人际关系网,但是他 ...

  9. Python 中global 关键字理解

    Python中的global关键字,你了解吗? 前言 今天来了解下 Python 中的 global 关键字. Python变量的作用域 实战案例演示之前,先要了解下 Python 的作用域. Pyt ...

  10. lombok-ex 编译时注解框架,性能完爆 AOP

    lombok-ex lombok-ex 是一款类似于 lombok 的编译时注解框架. 主要补充一些 lombok 没有实现,且自己会用到的常见工具. 编译时注解性能无任何损失,一个注解搞定一切,无三 ...