分享
(2)初探LLM基座模型
输入“/”快速插入内容
(2)初探
LLM
基座模型
作者:小A,aaronxic
,
知乎个人主页
发表时间:2023年7月8日
原文地址:
https://zhuanlan.zhihu.com/p/640784855
50%
50%
开篇
大家好,我是小A。今天给大家带来本系列的第二篇内容,主要介绍
LLM
基座模型里常见的3种transformer架构,encoder-only,encoder-decoder和decoder-only
NLP
任务速览
在深入介绍
LLM
网络结构之前,我们先简单了解一下
NLP
(
Natural Language Processing
)都包含了哪些任务。主要包含3大类任务
•
自然语言理解
任务(
NLU
,
Natural Language Understanding
)。特点是能看到完整上下文信息,然后做广义分类任务,典型任务如文本
情感分析
,词性标注,
信息检索
等。
•
有条件自然语言生成任务(conditioned-NLG, Natural Language Generation)。特点是seq2seq,典型任务例如
机器翻译
,自动摘要等。
•
无条件自然语言生成任务(unconditioned-NLG)。特点是开放性的句子生成,典型任务如问答系统(
QA
)、对话机器人(ChatBot)等。
一开始针对不同任务会使用不同的模型,后来发现NLG任务能通过in-context learning + prompt来完成
NLU
任务,于是逐渐
收敛
到了NLG任务。
评价指标
从上一篇可以知道,entropy-like指标(如
cross-entropy
指标)常常运用在训练过程中,表征模型的
收敛
情况,同时也可以用于测试集的简单评估(如
Perplexity
指标等)。但对于丰富复杂的下游应用来说,这几个指标远远不能满足需求。
如果想从
第一性原理
出发推导出所有指标,这并不现实。下面参考HELM论文的中内容,简单列举了
NLP
中的指标,大家不必深究,有个简单印象即可。
•
正确性Accuracy。
◦
信息检索
任务。NDCG@K指标,核心衡量最相关文档是否排序足够靠前的指标。
◦
摘要任务。一般用
ROUGE
指标,ROUGE是个指标体系,有4个大类,其中最简单的为2-gram的方式,即ROUGE-2。就是把两个sequence按2-gram的方式做切分做频次统计,然后计算pred和
gt
之间的召回率
◦
文本生成任务。Bits-per-Byte,类似于
Perplexity
指标
•
不确定性Calibration and
Uncertainty
。
◦
针对
二分类
任务,一般用ECE指标(Expected Calibration Error)。核心是度量模型输出概率p的时候,最终正确率真的为p的一致性。
•
鲁棒性
Robustness。分为两种
◦
invariance。加入不改变语义的噪声,如果大小写变换,加入错别字typo等
◦
equivariance。利用contrast set,做语义改变,例如修改关键单词和短语把一个正面的评论改成负面的评论
•
公平性Fairness。看模型输出是否公平,例如把性别和人种等换一下,看输出是否有变化
•
偏见程度Bias and stereotypes。看模型有没有偏见和刻板的印象,例如看模型对亚洲人是否存在“学习好并且会谈钢琴”的偏见
•
有毒性Toxicity。看模型输出是否有毒。
LLM
演变树
对
NLP
有了基本认知后,下面祭出一个广为流传的图,这张图信息量比较大,其中最重要的观察就是分成了三支明显分叉,从左到右分别是
•
粉色分支,Encoder-only框架(也叫Auto-Encoder),典型代表如
BERT
等
•
绿色分支,Encoder-decoder框架,典型代表如T5和
GLM
等
•
蓝色分支,Decoder-only框架(也叫Auto-Regressive),典型代表如
GPT
系列/LLaMa/PaLM等
Harnessing the Power of
LLMs
in Practice
刚听这三种框架名称可能会有点懵逼,不用担心,先
感性认识
一下。如下所示
•
横轴
代表了输入token,纵轴代表相对应每个位置的输出token
•
左图为encoder-only,输出token都能看到所有输入token。例如
这一行可以看到
输入
•
中图为decoder-only,输出token只能看到历史的输入token。例如
这一行只能看到
输入,
和
并不能看到
•
右图为encoder-decoder,前k个输出token可以看到所有k个输入token,从k+1的输出token开始只能看到历史的输入token。例如
能看到
输入(
也可以),而
开始只能看到
输入