LangChain+LLM实战---BERT和注意力机制中的QKV

news/2024/7/19 10:10:15 标签: bert, transformer, 人工智能

BERT主要的创新之处

BERT(Bidirectional Encoder Representations from Transformers)是一种基于Transformer架构的预训练语言模型,由Google在2018年提出。它的创新之处主要包括以下几个方面:

  • 双向性(Bidirectional):BERT是第一个采用双向Transformer架构进行预训练的模型。传统的语言模型如GPT(Generative Pre-trained Transformer)只能根据上下文左边的词预测当前词,而BERT引入了Masked Language Model(MLM)任务,将一部分输入文本中的词进行遮盖,然后通过双向Transformer来预测这些被遮盖的词,从而使模型能够同时获得左侧和右侧的上下文信息。
  • 预训练与微调(Pretraining and Fine-tuning):BERT采用两阶段的训练方法。首先,在大规模的未标记数据上进行预训练,通过预测被遮盖的词和句子级别的任务来学习通用的语言表示。然后,在特定任务上进行微调,使用标记的数据集来进一步调整模型参数,使其适应具体的下游任务,如文本分类、命名实体识别等。
  • 预训练任务的多样性(Diverse Pretraining Tasks):为了提高模型的泛化能力,BERT使用了多个预训练任务。除了MLM任务外,BERT还引入了句子级别的任务,即Next Sentence Prediction(NSP)。NSP任务要求模型判断两个句子是否是连续的,并学习句子级别的语义关系。这样的多样性任务设计使得BERT能够学习到更丰富的语言表示。
  • Masked Language Model(MLM):BERT中的MLM任务是通过将输入文本中的一部分词进行随机遮盖来训练模型。这样做的好处是模型需要通过上下文信息来预测被遮盖的词,从而更好地理解词之间的关联性和语义。MLM任务的引入使得BERT能够学习到更深层次的语言表示。
  • 多层表示与多任务学习(Multi-layer Representation and Multi-task Learning):BERT采用了多层Transformer编码器来编码输入序列的信息。这些编码器层之间可以进行信息的传递和交互,从而丰富了表示的表达能力。同时,BERT还可以通过微调阶段的多任务学习来提高模型的泛化性能,将不同的下游任务作为辅助任务来共同训练模型,使得模型能够学习到更通用的语言表示。

注意力机制中的QKV

在注意力机制(Attention Mechanism)中,Q、K和V代表查询(Query)、键(Key)和值(Value)。

  • 查询(Query)(表示为Q):查询是用于指定要关注的特定位置或特征的向量。在注意力机制中,查询向量用于计算与其他位置或特征的相似度,并决定在注意力权重计算中的重要程度。
  • 键(Key)(表示为K):键向量用于提供与查询向量的相似度比较。它可以看作是提供参考信息的向量。
  • 值(Value)(表示为V):值向量是根据注意力权重进行加权求和的向量。它包含了要传递给下一步的信息。

在注意力机制中,通过计算查询向量(Q)与键向量(K)之间的相似度,然后使用归一化的相似度得到注意力权重。最后,使用注意力权重对值向量(V)进行加权求和,得到最终的上下文表示或注意力输出。

注意力机制的计算可以用以下公式表示:

Attention(Q, K, V) = softmax(QK^T / sqrt(d_k))V

其中,d_k是查询和键的维度。softmax函数用于归一化相似度,使得注意力权重的总和为1。除以sqrt(d_k)是为了缩放相似度,以确保在计算过程中避免梯度爆炸或梯度消失的问题


http://www.niftyadmin.cn/n/5131628.html

相关文章

MySQL - 为什么索引结构默认使用B+树,而不是其他?

B-Tree的缺点: 范围查询效率相对较低:虽然B-Tree支持范围查询,但在实际操作中可能需要进行多次树遍历,性能较差。磁盘空间利用不高:B-Tree中的非叶子节点也存储数据,导致磁盘空间利用率相对较低。更复杂的平…

SQL LIKE 运算符

SQL LIKE 运算符 在WHERE子句中使用LIKE运算符来搜索列中的指定模式。 有两个通配符与LIKE运算符一起使用: % - 百分号表示零个,一个或多个字符_ - 下划线表示单个字符 注意: MS Access使用问号(?)而不是…

记一次线程爆满导致服务器崩溃的问题排查

记一次线程爆满导致服务器崩溃的问题排查 重启服务器 重启后,ssh连接发现下面问题 fork faild:Cannot allocate memory 以为是内存满了 于是,free -h,查看内存情况,还有,观察一段时间后,内存没多大变化 修改…

python一点通:数据处理顶流Pandas 2.0有什么新功能?

Pandas 2.0及其后续版本的发布引入了各种功能和增强,标志着在使用Pandas进行数据操作和分析方面的显著演进。这里是对一些新功能的深入解析: 可选依赖的安装: 在Pandas 2.0中,通过pip安装pandas时,可以通过指定extras来安装一组可…

CC002:ContextCapture倾斜摄影建模流程

摘要:本文主要介绍cc倾斜摄影建模流程,包括工程创建、影像添加、任务序列路径指定、空三、像控点的导入与刺点、空三优化、三维重建、定义生产三维产品的格式等流程,其中实验数据来源为多普云职业教育平台。 一、实验数据获取 本实验使用cc软…

GnuTLS recv error (-110): The TLS connection was non-properly terminated

ubuntu git下载提示 GnuTLS recv error (-110): The TLS connection was non-properly terminated解决方法 git config --global --unset http.https://github.com.proxy

2023年江西省“振兴杯”工业互联网安全技术技能大赛暨全国大赛江西选拔赛 Write UP

文章目录 一、协议分析 - modbus二、协议分析 - 异常的流量三、协议分析 - S7Error四、协议分析 - OmronAttack五、组态编程 - 工程的秘密六、组态编程 - 工程的秘密七、组态编程 - 简单的计算八、组态编程 - 交通灯九、组态编程 - 有趣的转盘十、应急处置 - 登录日志分析十一、…

Android应用:实现网络加载商品数据【OKHttp、Glide、Gson】

实现网络加载商品数据的功能: 1、在AndroidManifest.xml中声明网络权限; 2、在app/build.gradle中添加okhttp, glide, gson等必需的第3方库; 3、在MainActivity中通过OkHttpClient连接给定的Web服务,获取商品数据;对…