文章目录
LLM大语言模型
1.LLM基础知识
1.1大模型介绍:
- 定义
大语言模型 (英文:Large Language Model,缩写LLM) 是一种人工智能模型, 旨在理解和生成人类语言. 大语言模型可以处理多种自然语言任务,如文本分类、问答、翻译、对话等等.
通常, 大语言模型 (LLM) 是指包含数千亿 (或更多) 参数的语言模型(目前定义参数量超过10B的模型为大语言模型),这些参数是在大量文本数据上训练的,例如模型 GPT-3、ChatGPT、GLM、BLOOM和 LLaMA等.
- 语言模型的发展历程
- 基于transformer架构,做基础的预训练过程,典型的模型:BERT,GPT
- 逐步扩大模型参数和训练语料规模 代表是BERT,T5,GPT-3等
- AIGC时代,超过百亿千万亿参数的模型,模型架构为自回归架构,大模型走向对话式,生成式,多模态时代 代表是ChatGPT GPT-4等
1.2语言模型
- 定义
简单理解: 判断一句话发生的概率,(也可以理解成,判断一句话是不是人话)
标准定义: 假如一个句子为s=[w1, w2,...,wn],语言模型是计算当前句子发生的概率,即:p(s)=p(w1,w2,..2n).如果当前句子符合人类日常用语表达习惯,概率值就大,否则,就小
- 分类
- 基于规则和统计的语言模型:N-gram
- 参数空间过大:条件概率的可能性太多
- 数据稀疏严重
- 神经网络模型
- 基于transformer的预训练语言模型
- 大语言模型
- 基于规则和统计的语言模型:N-gram
1.21n-gram语言模型
-
定义:
在计算p(s)=p(w1,w2,..2n),引入马尔可夫性假设,当前词发生的概率只依赖于它前面的有限的词
-
unigram一元语言模型
- 如果一个词的出现与它周围的词是独立的,那么我们就称之为unigram也就是一元语言模型.
-
bigram语言模型
- 当前词发生的概率只依赖于它前面的一个单词
-
trigram语言模型
- 当前词发生的概率只依赖于它前面的两个单词
-
特点:
- 容易理解,但是泛化性能较差
1.22神经网络语言模型
-
定义:
基于Linear实现神经网络的搭建,由上文来预测下一个单词
-
特点:
- 相比较N-gram, 更好的泛化性能,但是对长序列的建模能力有限,可能会出现梯度消失的问题
1.23基于Transformer的预训练语言模型
-
定义:
基于Transfomer架构衍生出各种类型的模型,比如:bert、gpt等模型,实现由上文预测下文的任务
-
特点:
- 模型特征更加丰富,性能更好,但是计算资源需求大,可解释性差
1.24大语言模型
-
定义:
基于Transfomer架构衍生出各种类型的模型,比如:ChatGPT、Llama等模型,实现由上文预测下文的任务
-
特点:
- 像"人类"一样的智能,可以完成对话形式的任务
1.3模型评估指标
- 常见指标:
- 准确率:模型预测正确的样本数占总样本数
- 精确率:在识别为正类别的样本中,正类别的比例
- 召回率:在所有正类别样本中,被识别为正类别的比例
- BLEU: 将语言翻译为另一种语言的文本质量指标,取值范围[0,1],越接近1质量越好
- ROUGE: 模型生成的回答与参考答案进行比较计算
- PPL: 用来衡量一个概率分布或概率模型预测样本的好坏程度,PPL越小,表明模型越好
1.31 BLEU
定义:
评估文本翻译的质量;bleu值范围【0-1】,值越大,翻译质量越好,否则,越差
-
基本步骤:
- 一般基于N-gram指标来计算,所以首先分别去计算生成文本的N-Gram,再计算真实文本的N-Gram,最后统计匹配的个数
- 基于匹配的N-gram个数/生成文本的N-Gram总个数
-
代码实现:
# # 第一步安装nltk的包-->pip install nltk import torch from nltk.translate.bleu_score import sentence_bleu import math def cumulative_bleu(reference, candidate