本次任务:
1、大语言模型原理、
2、演示1:单一文档摘要、 3、演示2:多文档+langchain摘要 4、演示3:微调训练本地知识库:美食、菜谱大模型....
一、大语言模型介绍:
主要、技术依赖: transformer架构、 主要点:self-attention自注意力--机制
编码器 + 解码器, 不同公司的技术路线不同: 有二者选其一的,也有兼备的!..
谷歌重磅论文,《attention is all you need》...
分为编码器encoder和解码器decoder,
输入-输出关系: seq2seq,从一排序列,到另一排序列,
应用,从一个序列(文本、语音、图像),转为另一个序列(文本、语音、图像):
如、文本翻译(一种语言、翻译为另一种语音)、多模块(文本、语音、图像的转换)
编码器encoder: self-attention的存在,天涯若比邻,不因为序列长度增加,而降低之前参数-状态向量的所占比重,而是分配不同的注意力、分值...
解码器decoder: 接受编码器转移过来的一排向量,读取,开始结束都给一个特殊的token符号,让他自己吐出生成的关联信息,一排向量,
开始token可以是任意特殊字符,只要和结束的输出token,不一样即可....
让他自己吐出生成的关联信息,一排向量,可以设置长度,如常见的几千几万个词语,每个单词,对应一个softmax概率值,给最大值做输出...
输出,当成新的输入...周而复始.... 自回归(输出重新变输入...)
防止无限生成,介入一个结束的token,结束流程
二者的结构:
1、共同点: 底层:多头自注意力self-attention, 二层: 残差链接、layer-norm....
三层:全连接层 四层:残差链接、layer-norm....
Layer normalization(层归一化)是一种用于深度神经网络中的归一化技术。它可以对网络中的每个神经元的输出进行归一化,使网络中每一层的输出都具有相似的分布。
2、不同点: 底层的多头自注意力机制,解码器decoder的多了一个masked,掩码机制...
可以理解成为,拥有了masked,掩码机制的decoder,它遮挡住了该词后续的词语,提取自注意力了,仅作用在:本身、及其之前的词语....
两个经典公司的架构、介绍...
词编码: 1、one-hot:常用,受限词库的长度、无关联特征 2、词嵌入:1-降维度,自己设置,2-训练得到词嵌入向量,向量某个值代表,某种归类...
1.1 bert(谷歌公司) :(bidirectional encoder representations from transformer) 【源于transformer的双向编码,表征模型...】
1、仅用了encoder,编码器.... 2、他是预训练模型 3、大量未标注的文本上训练得到的 4、发表时,11个nlp任务取得亮眼成绩...
任务: 给一个句子进来,每一个句子,都会吐出一个embedding出来,
优点: 1、因为经过预训练了,仅需微调 fine-tune,便可以取得不错的效果、
2、可以利用,大规模文本数据,自监督性质,来构建预训练任务...
虽然,nlp领域,没有像imagenet这样的类似的大规模的,人工标注数据,但是可以利用, 大规模文本数据,的自监督性质,来构建预训练任务....
bert的训练:
方式1: 掩码的-语言模型 【 masked-language-model】.....
随机将15%的输入词语,遮住了,掩码,换成特殊的token(如:[masked]),
让bert去猜测,盖住的是什么词语,完形填空,
然后,每一个词语,对应输出一个 embedding, 遮住的embedding,输入到一个线性的多类分类器,(全连接层做的),预测是哪个遮住词语,
因为是线性分类器,预测能力很弱,若想成功预测,bert模型就要深一些,输出embedding表征能力一定要非常好,才能用过embedding,轻易得知遮词.
若 女人/女士,填入masked句子意思相近,则意味着他们有相近的embedding,可能是同一类...
方式2: 段落拆分-模型 【next-sentence-prediction】...
一个段落,拆分成两端,由bert告知我们,是否应该相接,
拆分处token,边界[sep], 开头token,加入一个二分类,[cls],true or false...
上游: bert在大量文本上,经过以上的两种预训练之后,就可以用它来,进行各种文本分类nlp的下游任务....
把bert当成一个特征提取器,用bert得到文本的embedding,就可以用它来进行各种任务...
应用: case1:分类 文本分类、情感分类,正常结构, 线性分类器,训练出来,即可判断分类, 训练线性分类器 + bert微调...
case2:槽填充 智能音箱、命令解读,语音对话, 结构设计:输入语句->bert模型->embedding->线性分类器->分类结果...
case3:自然语言,逻辑推断 因果、前提假设、判断真假, 结构设计:类似于方式2,真/假/未知,的三分类-分类器,
1.2 GPT (open-ai) : (generative pre-training) 【生成式-预训练模型】
GPT是transformer的decoder,解码器部分,
decoder,产生输出,因为掩码的存在,只能看到当前的,和之前的存在...
开始token,不断生成,结束token,结束生成..
不断地自回归,预测未来,成语接龙,潜力非常强大....
1、GPT1 的架构: transformer的decoder架构...
1、训练语言模型:给前面一句话,生成后面的单词... 大量未标注的语料...
2、文本分类模型: 与1的语言模型,同时训练... . 大量标注文本....
在诸多nlp下游任务的体现:
1、cls,开始->文本->提取,分类器 2、蕴含,类似bert,逻辑关系推断.. 3、相似度计算,调换text1和text2位置,分别计算,相加和...分类器,
4、多选题,同一个内容,多个答案,各自计算,分类器
总体而言,就是训练transformer模型,通过调整输入,和线性分类器,实现各种下游任务的目的...
训练的,数据集: books-corpus dataset,7000本尚未发表的书...
2、GPT2 : 模型与1代基本一致,更大数据集,更大的模型,更多可以学习的参数,
openai利用网络爬虫,抓取了4500万个links链接的,抽取了链接里的文字, 最终,8000万个文本,40 GB的文字
GPT 2的亮点: 它的,零样本学习能力、zero-shot,
不需要标注任何信息,也不需要训练模型,它训练好了一个模型,你在任何地方都能用....
如:英语->法语。 英语转法语,英语text,法语text, 英语转法语,即为[cls]...既是该执行的任务...
3、GPT3 : 模型与2代基本一致,参数比 gpt2,大了100多倍, 1.5B -> 175 B... 更大的数据...
因为GPT 3的模型太大,做微调fine-tune实现下游任务,也不太现实,
所以,它扩展了GPT 2的zero-shot能力,引入了in-context,上下文学习--的链接能力,
不更新模型梯度,来实现各种子任务... 如: zero-shot,one-shot,few-shot,都不更新模型梯度,
zero-shot: 1、英译法、2、放入,翻译的词... translate English to France, cheese => input_word... [=> prompt提示]
one-shot: 1、英译法 2、插入个样例 3、放入,翻译的词... 中间插入一个样例 ,进来...
few-shot: 其实就是,...中间插入更多的样本... 使用的门槛,降低了很多....
1.3 chatGLM-6b (北京智源-清华唐杰教授) : (generative pre-training)
chatGLM-6b: 开源、支持中英双语的对话模型,基于general-language-model的GLM 大模型,具有 62亿的参数...
更强性能、更长上下文、更高效的推理...
集众家所长,如下:
自编码模型 bert: 双向注意力,擅长文本理解,
自回归模型 GPT: 单向注意力,擅长文本生成,
编码器-解码器模型 T5: 编解码,擅长对话,
GLM: 自回归,空白填充,通用语言模型(通用:希望,集众家所长...统一架构...)
bert、gpt、glm三者的区别:
bert,挖掉某个词语挖掉,让模型预测,
gpt,让模型生成新的文本,
glm,将多个词汇挖掉,让他自回归,生成出缺失的部分, 比bert,更像完形填空,多个单词的,
glm,将各种自然语言理解任务,把它定制成,包含任务描述的完形填空的问题,这些问题,都可以通过自回归来生成...对应的回答...
多出采样,用掩码替代掉,挖去的词汇,让他自回归生成出来...
chatGLM 具备的能力: 【通识领域】
1、自我认知:自己如何/怎样/优缺点 2、提纲写作:写博客提纲 3、文案写作:网易云热评
*4、信息抽取:给定信息中,抽取出、人物、时间、地点、事件类型的实体,输出位 json格式....
chatGLM 应用: 【垂直领域】
LLM,通常都是建立在,通识领域知识的训练, 至于、在垂直领域知识、私有知识-问答领域,需要微调,或者提示词工程....
1、微调(fine-tune):
针对预训练的语言模型(pre-LLM),在特征任务的少量数据集上,对模型进一步训练,
适用于: 任务,或域定义明确,有足够的标注数据...
2、提示词工程(prompt engineer):
设置,自然语言提示,或指令,引导模型执行特定任务,
适用于: 高精度和明确输出的任务,提示工程,可用于制作引发所需输出的查询....