1.自然语言处理概述
自然语言面临的问题
- 歧义:语法、结构、词性、语义上的歧义
- 未知语言的出现:即新词新梗
- 知识性:专业名词
- 上下文依赖
- 多模态:单一的文本输入或输出难以全面表达和解决问题,需要结合其他形式的输入或输出数据,如图像、视频、语音等多种形式的信息来更好地理解和表达。
自然语言概念:利用计算机技术对语言文本进行加工和处理
自然语言类型
自然语言理解:
- 实体识别:如自动快递识别人名地名手机号
- 情感分析:美团点评
- 关键词分析:商品关键词提取
- 文本分类:今日头条
- 知识图谱
自然语言生成:
- 机器翻译
- 对话问答
- AI写诗、写歌
2.基于NLP工具的中文分词
1.开发流程中有哪些特征工程?
- 离散型表示方法:One-Hot、BOW、TF-IDF
- 分布式表示方法:N-gram、wordEmbedding:Word2vec、Glove、FastText、BERT、GPT
2.中英文分词区别
- 分词方式不同、中文更难
- 英文单词有多种形态:单复数和时态(就涉及到词性、词干还原)
- 中文分词有多种粒度问题:即多种划分方式
3.中文分词方法有?
- 基于词典
- 基于统计:CRF条件随机场、HMM隐马尔可夫模型、SVM
- 基于深度学习:CNN、RNN、LSTM
自然语言处理的基本流程
获取语料——数据处理——特征工程——模型训练——评估指标——部署上线
获取语料:语料,即数据集
数据处理:语料清洗、分词、词性标注、去停用词
特征工程:把单词表示成向量
- 离散型表示方法:One-Hot编码、词袋模型BOW、TF-IDF词频-逆文档频率
- 分布式表示方法:N-gram、wordEmbedding:Word2vec、Glove、FastText、BERT、GPT
模型训练: 模型选择有机器学习(GBDT梯度提升决策树、LR逻辑回归、SVM支持向量机、RF随机森林、KNN最近邻分类算法),深度学习
模型优化就涉及到四个问题:拟合和梯度
评估指标
部署上线:本地部署、服务器部署
中文分词CWS介绍
概念:中文字序列插入分隔符,将其切分为词
注意:机器学习分词是必须的、但深度学习时代,算法飞涨,分词不是必须的。只有关键词提取、实体识别等任务分词是必须的。
难点:
- 没有统一标准
- 歧义词
- 新词
中文分词方法
- 基于词典
- 基于统计:CRF条件随机场、HMM隐马尔可夫模型、SVM
- 基于深度学习:CNN、RNN、LSTM
中英文分词区别
- 分词方式不同、中文更难
- 英文单词有多种形态:单复数和时态(就涉及到词性、词干还原)
- 中文分词有多种粒度问题:即多种划分方式
词性标注 POS
概念:即为每个单词标注一个词性,多用于预处理阶段
词性标注难点
- 一次多性问题
- 词性标注规则不统一
- 训练语料缺失:OOV,词汇超出
- 新词如何标注
3.基于情感词典的文本情感分析理论
1.情感分析的缩写是SA
2.什么是情感时序分析
- 时间也是情感分析的维度,如时间改变,人会改变想法。如热门话题讨论。
3.情感分类的方法
- 按任务分类
- 按文本级别分类
情感分析分类
情感广义狭义区分
狭义:分积极、消极、中性
广义:相关任务:情绪识别、情感分类、观点挖掘
情感分析方法
狭义上,情感分析即指情感分类,大致流程为:
- 基于机器学习
- 基于深度学习
- 基于词典
基于词典情感分析流程
1.分词
2.确定情感词及其极性:根据词典来的
3.情感极性计算:即加减法
4.综合判断
词典方法优缺点
评估指标计算
还有真正例率,多少正确的被预测对,公式同查全率。
假正例率,多少反例被预测成正率:
ROC曲线:曲线下为AUC值,该方法无视样本不平衡。
计算题
算法1的查准率为78/82=0.95, 查全率为78/80=0.975, F1-score为0.9624。
算法2的查准率为80/88=0.91, 查全率为80/80=1.0, F1-score为0.9524。可见两种算法的查准率和F1-score都比较优秀,算法2在查全率上略胜一筹。
4.基于Kmeans的短文本聚类
1.Kmeans算法步骤及优缺点
2.聚类和分类的区别
- 分类有类别标识,聚类没有
3.常见的聚类算法
- 基于均值:K-means
- 基于密度:DBSCAN,基于密度的抗噪聚类方法
- 基于层次:凝聚层次聚类、分裂层次聚类
4. 为什么选TF-IDF作为K-means的特征提取工程?
- TF-IDF能有效提取文本特征、减少噪声、处理多义词、具有良好的可扩展性、与K-means算法兼容性好、无需标注数据、易于实现
文本聚类场景及概念
如新闻分类、检索结果聚类(但存在检索词多义的情况)、数字图书馆、
概念:就是将数据集中数据划分成若干子集,子集内部样本具有相同性质,不同子集间差异较大。每个子集称为簇,簇内相似、簇间相异
聚类算法
- 基于均值:K-means
- 基于密度:DBSCAN,基于密度的抗噪聚类方法
- 基于层次:凝聚层次聚类、分裂层次聚类
距离度量
欧氏距离即两点间距离,曼哈顿距离即直线距离
K-means聚类算法
算法流程:
评估指标:
kmeans算法优缺点:
- 优:速度快、效率高、成本低、易理解、很灵活
- 缺:易受噪声 边缘点 孤立点影响、K值不好取、偏向于识别球形或类球形结构的簇
密度聚类DBSCAN
聚类效果图:
层次聚类Agglomerative
文本聚类
即聚类应用在文本上。无监督学习,无需文档标注,对文本信息进行有效组织摘要导航,两类代表算法:
- 基于距离的聚类算法
- 基于概率模型的聚类方法
聚类流程:
文本准备——数据预处理 ——特征工程——聚类算法——聚类结果
TF-IDF词频-逆文本频率
公式:TF-IDF = TFXIDF
TF词频:
词频可不是词文章中出现的次数。 而是 某词再文章出现的次数/文章总词数
IDF逆文本频率:
指一个单词在文档中区分度
TF-IDF优缺点:
- 优:简单快速易理解、语料库不变时可离线计算
- 缺:数据集分布不均影响结果、无法反映词序信息
TF-IDF使用场景
文本聚类
搜索引擎
智能客服
关键词提取:即计算出各词的TF-IDF值,按权值从大到小依次排列
为什么TF-IDF作为K-means的特征提取工程?
TF-IDF能有效提取文本特征、减少噪声、处理多义词、具有良好的可扩展性、与K-means算法兼容性好、无需标注数据以及易于实现等特点,成为K-means文本聚类算法中常用的特征提取方法。
5.基于FastText的文本分类
1.常见的深度学习文本分类框架有哪几种?
- FastText、TextCNN 、XLNet、BERT
2.FastText包含哪三部分?
- 模型架构
- N-gram
- 层次softmax
3.Word2Vec有哪两种模式?
- CBOW:即连续词袋模型。通过上下文来预测当前值
- skip-gram:跳词模型。当前词预测上下文
4.TextCNN的滑动窗口和图像处理的滑动有什么区别?
- 数据格式不同:一个是图像一个是文本
- 文本卷积卷积核只向下滑动,卷积核宽度(固定的)=词向量维度,所以卷积核大小指的是卷积核高度
5.文本分类任务有
- 二元文本分类
- 多类文本分类
- 层次文本分类
- 文本序列分类
6.逻辑回归为什么能处理分类问题?
- 输出为概率值
- 有决策边界
- 可解释性
7.多分类任务使用激活函数是softmax。每个类别都有一个概率值,且所有类别的概率之和为1。
8.FastText与Word2vec的不同
- f是词袋模型,w是循环词袋模型
- w只能处理词典中的词,无法处理构词信息。但f有构词优化
- f预测的是类别,w预测的是词
- f输入是整个句子的的单词和N-gram特征,w输入的是上下文
9.FastText改进点
- 构词优化,能处理构词信息
-
快速的训练和推理
-
高效的文本分类
-
可解释性
文本分类概述
定义:机器分析文章内容、将文本数据自动分配到一个或多个预定义的类别
特点:自动化、监督学习
文本分类分为:
- 新闻文章分类、垃圾邮件过滤、客户反馈分析、医疗记录分析
分类任务类型:
- 二元文本分类
- 多类文本分类
- 层次文本分类
- 文本序列分类
基于情感词典的情感分析也可以被视为一种文本分类任务。
机器学习的文本分类
深度学习的文本分类
独热编码one-hot
独热编码缺点很大:
- 词汇较多时就会造成维度灾难,计算代价大
- 无法体现词与词之间的关系
提出WordEmbedding(词嵌入)技术 :
- word2vec
- Glove
- FastTest
求余弦相似度 :
FastText模型概述
带监督的文本分类问题。包含三部分:
- 模型架构
- N-gram:一种生成式模型。将文本按照字节进行大小为N的滑动窗口操作。
- 层次softmax
OOV
Out of Vocabulary词汇外,即模型在训练时没有见过的单词。FastText通过将词汇分解为字符n-gram来处理OOV问题。、
N-gram 构词的三步总结
1.选择 N 的大小
2.切分文本为 N-grams
3.构造词组或特征提取
词袋模型BOW :文本表示为一个词的集合,忽略词语的顺序和语法结构,只关注词语的顺序。
FastTest与Word2vec的比较
可以理解为:word2vec+分类+构词优化=FastText
具体看章节开始的问题
6.基于Seq2Seq的问答系统
1.问答系统的分类
2.E-D的缺陷
- 不论输入和输出的长度是什么,中间向量c(也就是编码器的输出,解码器的输入)长度固定。
3.说一说Seq2Seq结构相比于循环神经网络实现序列生成,有什么优点?
- 编码解码器并行化,加快训练
- 不具备短期记忆长程依赖问题
- 灵活性
4.Seq2Seq结构可以有哪些应用场景?
- 照片压缩
- 文字-文字:机器翻译、文章摘要、代码补全、对话机器人
- 音频-文字:语音识别
- 图片-文字:图像描述生成
5.Encoder-Decoder与Seq2Seq的关系?
- 主流的Seq2Seq模型通常基于Encoder-Decoder框架实现
6.Encoder-Decoder的编码部分和解码部分的作用分别是什么?
- encoder:将输入序列(如文字图片音频)转化为固定维度的稠密向量。可以理解将现实问题转化为数学问题。
- decoder:生成目标译文。可看作求解数学问题,转化为现实解决方案。
7.LSTM神经网络的工作逻辑?
- 通过引入门控机制控制信息流,从而克服长期依赖。由三个关键的门控单元构成:输入门、遗忘门和输出门,它们共同决定了细胞状态的更新以及最终的隐藏状态输出
问答系统的分类
- 开放域问答(小爱)、封闭域问答(淘宝客服)
- 基于知识库的问答系统(依赖于结构型数据)
- 基于检索的问答系统(依赖于大量文本数据)
- 基于对话的问答系统
- 基于生成的问答系统
面临的挑战:
- 自然语言理解、知识获取和更新、答案准确性、上下文理解、需求的多样性
Encoder-Decoder架构
编码解码,指示一类算法的统称,该架构下可使用不同算法。
- encoder:将输入序列(如文字图片音频)转化为固定维度的稠密向量。可以理解将现实问题转化为数学问题。
- decoder:生成目标译文。可看作求解数学问题,转化为现实解决方案。
显著特征:端到端的学习算法。
Encoder-Decoder应用
- 照片压缩
- 文字-文字:机器翻译、文章摘要、代码补全、对话机器人
- 音频-文字:语音识别
- 图片-文字:图像描述生成
Seq2Seq模型
先问什么是序列生成问题?
根据输入的内容X和Y历史序列信息来预测序列中的下一个值的生成有监督任务。
这里的有监督可理解为:输入为目标语言和源语言,二者是一一对应的。类似label。
引申到深度学习中即:构建一个联合的神经网络,以端到端的方式将一个序列化数据映射成另一个序列化数据,简称Seq2Seq模型。
主流的Seq2Seq模型通常基于Encoder-Decoder框架实现; 模型结构为:
根据不同的任务可以选择不同的编码器和解码器:
- 循环神经网络:RNN、LSTM、GRU
- 卷积神经网络:CNN
- 注意力机制:Attention、Transformer
关于RNN和LSTM这里不做赘述,详细移步 神经网络与深度学习
RNN循环神经网络的缺点:
- 长期依赖问题:RNN 有短期记忆问题,无法处理很长的输入序列
- 训练投入成本大;
- 梯度消失和梯度爆炸;
7.基于Seq2Seq+Att的翻译系统
1.说一说Attention值的计算公式是什么?
2.Attention的优缺点?
- 优:参数更少、速度更快、效果更好
- 缺:计算成本大、序列长度限制 、训练难度大
3.Attention机制基于Encoder-Decoder提出了哪些改进?
-
解决了长期依赖问题、 并行化和高效训练、提高了对长序列的处理能力
4.Attention机制的工作步骤
- query和key进行相似度计算,得到权值;
- 将权值进行归一化softmax,得到直接可用的权重;
- 将权重和value进行加权求和;
翻译系统
即利用计算机将一种源语言转化为目标语言的过程。分为:
- 机器翻译:百度翻译
- 翻译机:讯飞
- 拍照翻译
Attention机制
attention三大优点:
- 参数更少
- 速度更快:并行计算:同时执行多个计算任务。
- 效果更好
缺点:
- 计算成本大、序列长度限制 、训练难度大
rnn由于递归结构可以执行并行计算但效率低
引入Attention的Encoder-Decoder
“固定向量->向量序列”可能指的是编码器将固定长度的输入向量转换为一系列内部表示
Attention结构原理
attention中KQV的通用计算流程:
- query和key进行相似度计算,得到权值;
- 将权值进行归一化softmax,得到直接可用的权重;
- 将权重和value进行加权求和输出注意力值;
各att变体主要就相似度计算不同
Attention种类
self-attention计算公式:
8.基于Transformer的翻译系统理论
1. Transformer本质上属于Encoder-Decoder结构。
2. 通过位置编码解决Attention无法捕捉顺序信息的问题。
3. 利用多头注意力机制从多个角度抓取重点信息。
4. 使用掩码解决Attention文本生成过程中偷窥下文的问题
5.Transformer具有多个子编解码结构
6.残差连接和层归一化拨开乌云
网络整体结构
encoder看作6个子encoder,decoder看作6个子decoder
每个encoder可看作自注意力+FFN前馈
每个decoder可看作自注意力+编码-解码注意力层+FFN
Encoder细节
位置Positional Embedding的加入为了获取顺序信息,解决注意力无法捕捉顺序信息的问题。
位置编码即将位置向量添加到embedding中。是为了给模型提供序列中每个元素的位置信息。通过正弦和余弦函数的组合来实现的,这种编码方式可以确保不同位置的编码是唯一的,并且模型可以捕捉到序列的周期性特征。
上图的encoder输入分两种,词embedding和位置embedding
常见的词embedding有:
- Word2Vec、FastText、BERT、One-hot Encoding
self-att结构
这里KQV由输入X乘不同的权重得来的 。
self-att的输出为:注意这里的dk指的是向量维度,即Q、K矩阵的列数,根号dk防止内积过大,使得相似度得分更平滑。
多头注意力
整体流程:
输入句子-embedding-生成QKV-计算att值-合并输出
每一个头会产生不同的QKV,得到一个不同的注意力值,多头最终输出让输入与输出数量一致:
合并多个attention值 X 联合训练得到的权重矩阵W = 最终输出Z
单多头注意力机制的不同点
计算方式
- 单:只有一个注意力头
- 多:多个注意力头,每个头使用独立的权重矩阵计算,并行计算效率高,最后拼接
学习能力
- 只能学习一种类型关系
- 可学习多种不同关系
信息融合
- 易导致信息丢失,因为信息通过同一机制处理
- 对信息多视角融合
复杂性:一个大一个小
Add&Norm
即残差连接和归一化。这里指的是层归一化。引入原因来自两朵乌云:
- 梯度消失和爆炸
- 网络退化:网络过深准确率反而低:无法学习恒等映射
所以引入恒等映射,残差连接。 引入层归一化解决梯度消失和爆炸,提升数值稳定性。
这里介绍一下常见的relu(ruai lu我这样读^v^) :其他常见的激活函数
即线性整流单元,
layer和batch的区别
为什么使用层归一化而非批归一化?
- 模型输入通常为变长序列,batch 处理变长序列会导致计算不一致。
- layer对单样本所有层归一化,计算效率高
- layer更有助于梯度流动,更适合深层网络
Decoder细节
第一个多头注意力的masked操作即:由输入X得到mask矩阵:
第二个多头注意力的KV来自encoder,Q使用上一个输出的
掩码多头注意力只使用上文信息。即考虑该元素之前的元素,而不包括它自己或之后的元素。
最后输出的softmax操作
关键代码
如何正确地分割和合并注意力头(split_heads
和combine_heads
方法):
计算位置编码的公式,特别是正弦和余弦函数的应用。
如何正确地应用层归一化(LayerNorm
)和实现前向传播中的残差连接和Dropout。
9.基于BERT模型的酒店评价分类
1.BERT分为bert-large(24层)和bert-base(12层)版本
2.模型由多个transformer-encoder层堆叠而成,侧重于文本理解
3.BERT的输入Embedding(嵌入)由token embedding(字符编码)、segment embedding(分句编码)、position embedding(位置编码)三个部分相加得到。
4.预训练时,通过MLM与NSP分别学习字符表征与句子表征。
- MLM掩码语言模型 :输入文本部分词汇被随机掩码mask替代,从而根据上下文预测。通过完形填空学习单词级信息。
- NSP下一句预测:判断给定两个句子是否合理(后一句前一句)。通过句子关系学习句子级信息。
5.可以在文本分类、问答系统、命名实体识别等特定的下游任务上微调提取文本特征。
Embedding是深度学习中的一个关键技术,它通过将离散数据转换为连续的向量表示,从而捕捉关系。
BERT模型结构
单项编码和双向编码
- 只关注序列的一个方向,不考虑整个序列的上下文信息。
- 考虑上下文
分句编码
在embedding中输入有句子和句子对,分句编码即区分句子和句子对。
- 预训练输入句子对,微调输入单句
两个标记:
- CLS分类标记:输出句子表征或句子关系
- SEP分隔标记:区分句子和句子对
BERT微调
Fine-tuning:使用特定数据微调BERT预训练模型,用于具体NLP任务。
- 双句子级任务:文本相似度、问答匹配
- 单句分类任务:情感分析、垃圾邮件检测
- 文本问答任务:机器阅读理解、自动问答系统
- 单据标注任务:信息抽取、文本分析
BERT改进模型
RoBERTa、ALBERT、XLNet
处理中文时需要调整分词方法,可以使用BERT-wwm模型。掩盖整个词而不是单个字符
10.大模型LLM理论基础
1.请列举常见的prompt基础操作有哪些
- 明确需求指示,避免模糊词语
- 使用分隔符
- 使用固定输出格式
- 角色扮演
- 提供充分上下文
2. 请解释什么是Zero Shot Prompt、Few-shot Prompt、One-shot Prompt?
-
无样本学习:无需提供示例或训练数据直接让模型来生成答案
-
小样本:提供少量示例来生成答案
-
单样本:仅提供单个示例或上下文来生成答案,可以看作是Few-shot Prompt的一种特殊情况,
3.请列举常见的prompt进阶操作
- 小样本学习
- 思维链
- 组合使用多种prompt
- 多提供关键词
- 指定输出长度
- 长文本总结
- COSTAR框架
4.costar框架具体含义
COSTAR框架
C:context背景 S:strategy 策略 A:action 行动
O:object 目标 T:tactics 战术 R:review 回顾
缩写大汇总
AIGC:人工智能生成内容 NSP:下一句预测
LLM:大语言模型 NLU:自然语言理解
CoT:思维链 NLG:自然语言生成
BERT:基于transformer的双向编码器表征