【持续更新中】transformer详解和embedding大模型

这里记录一下自己学习embedding大模型的记录,涉及到transformer和bert这些。

一切都可以编码,比如说图片是三原色

背景介绍

训练集和测试集的分,无监督学习,现在基本都是使用无监督学习,有监督学习的话参考计算机视觉,图片进行判断分类来训练模型。

Transformer

首先,可以先了解一下Transformer工作原理的四部曲:Embedding(向量化)、Attention(注意力机制)、MLPs(多层感知机)和Unembedding(模型输出)

mask比率:15%,任务是将这些全部预测,将其中的80%替换成[mask],10%替换成一个随机的token,剩下的10%保留原来的token。这样做可以提高模型的鲁棒性。这个比例也可以自己控制。随机的原因是防止过拟合,为什么呢,比如说机械性的学习,看到my dog 就会输出is hairy,因为第二个句子是有明显错误的,因为

80%的时间是采用[mask],my dog is hairy → my dog is [MASK]
10%的时间是随机取一个词来代替mask的词,my dog is hairy -> my dog is apple
10%的时间保持不变,my dog is hairy -> my dog is hairy

桌上的水杯里有咖啡(正确)

咖啡的水杯里有桌上(错误)
 

从宏观角度来看,Transformer的编码器是由多个相同的层叠加而成的,每个层都有两个子层(子层表示为sublayer)。第一个子层是多头自注意力(multi-head self-attention)汇聚;第二个子层是基于位置的前馈网络(positionwise feed-forward network)。具体来说,在计算编码器的自注意力时,查询、键和值都来自前一个编码器层的输出。受残差网络的启发,每个子层都采用了残差连接(residual connection)。在Transformer中,对于序列中任何位置的任何输入x∈Rd,都要求满足sublayer(x)∈Rd,以便残差连接满足x+sublayer(x)∈Rd。在残差连接的加法计算之后,紧接着应用层规范化(layer normalization)。因此,输入序列对应的每个位置,Transformer编码器都将输出一个d维表示向量。

Transformer解码器也是由多个相同的层叠加而成的,并且层中使用了残差连接和层规范化。除了编码器中描述的两个子层之外,解码器还在这两个子层之间插入了第三个子层,称为编码器-解码器注意力(encoder-decoder attention)层。在编码器-解码器注意力中,查询来自前一个解码器层的输出,而键和值来自整个编码器的输出。在解码器自注意力中,查询、键和值都来自上一个解码器层的输出。但是,解码器中的每个位置只能考虑该位置之前的所有位置。这种掩蔽(masked)注意力保留了自回归(auto-regressive)属性,确保预测仅依赖于已生成的输出词元。

自注意力这个地方是自己的V、K、Q进行计算,输出得到最终结果。

1、两个序列必须具有相同的维度

2、两个序列可以是不同的模式形态(如:文本、声音、图像)

3、一个序列作为输入的Q,定义了输出的序列长度,另一个序列提供输入的K&V

Cross-Attention 机制涉及到两个不同的序列,其中一个序列的元素作为查询(Query),而另一个序列的元素作为键(Key)和值(Value)。这种机制使得模型能够在处理一个序列时参考另一个序列的信息,从而在两个序列之间建立关联。在Transformer模型的解码器(Decoder)部分中,Cross-Attention被用来让解码器的每个位置都能关注到编码器的输出,这样解码器就可以利用编码器处理后的输入序列信息来生成输出序列。

位置编码

Transformer 放弃了循环结构,而采用了自注意力机制,这使得 Transformer 可以并行计算,从而大大提高了训练速度。同时,自注意力机制也使得 Transformer 可以捕获任意距离的依赖关系,从而解决了长期依赖问题。

但由于 Transformer 不包含任何循环结构,Transformer模型对输入序列中的每个元素进行处理时是并行的,各个单词在 Transformer 中都同时经过 Decoder-Encoder 的变换,这就导致了 Transformer 无法捕获单词的位置信息。因此,如果没有位置信息,Transformer模型无法区分序列中元素的先后顺序。这样会导致无法识别前后文语境使得相同单词计算得到一样的权重。
为了解决这个问题,需要在输入的单词向量中加入某种信息,以区分每个单词的位置。这一信息被称为位置编码。

因此,一个好的位置编码方式通常需要满足以下条件:

1、它应当为每个时间步(单词在句子中的位置)输出唯一的编码
2、在不同长度的句子中,任何两个时间步之间的距离都应保持一致
3、这个方法应当能够推广到任意长的句子,即位置编码的数值应当是有界的
4、位置编码应当是确定的,即对于相同长度的输入,应当输出相同的位置编码

首先,它不只是一个数字,而是一个d维的向量,包含了句子里某个特定位置的信息;其次,这个编码没有集成到模型本身,而是把这个带有句子位置信息的向量配备进字词当中。换句话说,我们通过注入字词的顺序来加强了模型的输入。

前馈神经网络层

激活函数

这里只介绍两个常见用于transformer场景的激活函数。

ReLU

eLU 激活函数图像如上图所示,函数表达式如下:

ReLU 函数和softmax都是深度学习中较为流行的一种激活函数,它具有如下优点:

1、当输入为正时,不存在梯度饱和问题。

2、由于ReLU 函数中只存在线性关系,因此它的计算速度比较快。

当然,它也有缺点:

  1. Dead ReLU 问题。当输入为负时,ReLU 完全失效,在正向传播过程中,这不是问题。有些区域很敏感,有些则不敏感。但是在反向传播过程中,如果输入负数,则梯度将完全为零,sigmoid 函数和 tanh 函数也具有相同的问题;

  2. 我们发现 ReLU 函数的输出为 0 或正数,这意味着 ReLU 函数不是以 0 为中心的函数。

Softmax

Softmax 是用于多类分类问题的激活函数,在多类分类问题中,超过两个类标签则需要类成员关系。对于长度为 K 的任意实向量,Softmax 可以将其压缩为长度为 K,值在(0,1)范围内,并且向量中元素的总和为 1 的实向量。

Softmax 与正常的 max 函数不同:max 函数仅输出最大值,但 Softmax 确保较小的值具有较小的概率,并且不会直接丢弃。

Softmax 函数的分母结合了原始输出值的所有因子,这意味着 Softmax 函数获得的各种概率彼此相关。

Softmax 激活函数的主要缺点是:

  1. 在零点不可微;

  2. 负输入的梯度为零,这意味着对于该区域的激活,权重不会在反向传播期间更新,因此会产生永不激活的死亡神经元。
     

引入温度后的softmax计算函数:

在一些场景中比如阿里的在线大模型服务中经常看到选取温度,温度确实本质上是对softmax产生影响从而影响结果的输出的。当Temperature值较高时,softmax函数的输出会更加平滑,体现在各个类别的概率分布会更加均匀,模型更倾向于给出多样化的输出。相反,当Temperature值较低时,softmax函数的输出会更加尖锐,体现在某个类别的概率会显著高于其他类别,模型更倾向于给出确定的输出。

而温度过高和过低表现都不太好,拿写个故事来说,如果温度过低,那么故事会非常老套,温度过高,就容易说着说着开始胡言乱语,因为本质上这种输出都是通过计算概率最高的那个来获取的,温度高了把合乎逻辑的输出都给盖住了,比如说openai中的温度范围取值是0~2。

下面这个图就表示的非常形象:

编码方式

假设有一堆图书的内容,且已经用嵌入向量表示每本书的内容。想要快速找到与某本书内容最相似的其他书,那么可以:

1. 构建索引:将所有书的嵌入向量放到索引中。

2. 添加数据:如果有新书加入,可以随时添加到索引中。

3. 搜索:用某本书的嵌入向量作为查询,快速找到与之相似的其他书。

嵌入向量(Embeddings):

• 将文本、图片等数据转换成一个向量(即一组数字),这种方式使得计算机可以理解和处理这些数据。例如,将一句话转换成一个向量,表示这句话的语义。索引(Index):

• 类似于书籍的目录,用于快速查找和检索数据。Faiss 索引就是用来快速查找相似嵌入向量的结构。度量标准(Metric):

• L2 距离:计算两个向量之间的欧几里得距离,类似于在二维空间中计算两点之间的直线距离。

• 内积(Inner Product):也叫点积,计算两个向量的相似度。

编码方式:

(1)one-hot编码

这种编码方式我觉得对于大多数人比较好理解,就是使用一个唯一的标记来标记一个

(2)BERT 编码

(3)

自注意力

首先来介绍自注意力。

注意力层的作用就是让模型在处理文本时,将注意力只放在某些词语上,Transformer 模型本来是为了翻译任务而设计的。但是随着时间的发展,可以结合其它的算法。

推荐时,会有一个助词词汇,剔除,它们对于注意力的影响挺大的,因为出现的频率很大,但表达的含义是有限的,注意力机制很重要。

多头自注意力

目的:

优势:

计算方法

残差链接

Bert中的池化策略

反向传播

反向传播其实是一个在之前神经网络阶段也很常用的

模型微调

检索增强技术(Retrieval Augmented Generation,RAG)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/498900.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

csrf跨站请求伪造(portswigger)无防御措施

前言:基础csrf学习(没有任何防御措施) 内容来自portswigger,一个靶场练习,国外的网站,可能需要翻墙 要使 CSRF 攻击成为可能,必须满足三个关键条件: 相关操作。应用程序中存在攻击…

cocos creator 3.x版本如何添加打开游戏时首屏加载进度条

前言 项目有一个打开游戏时添加载入进度条的需求。这个功能2.X版本是自带的,不知为何在3.X版本中移除了。 实现 先说一下解决思路,就是在引擎源码加载场景的位置插入一个方法,然后在游戏入口HTML处监听即可。 1.找到对应源码脚本 在coco…

Zookeeper在中间件的应用和在Spring Boot业务系统中实现分布式锁和注册中心的解决方案

前言 Zookeeper是什么? ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 分布式应…

idea报错:There is not enough memory to perform the requested operation.

文章目录 一、问题描述二、先解决三、后原因(了解) 一、问题描述 就是在使用 IDEA 写代码时,IDEA 可能会弹一个窗,大概提示你目前使用的 IDEA 内存不足,其实就是提醒你 JVM 的内存不够了,需要重新分配。弹…

Anaconda+PyTorch(CPU版)安装

1.Anaconda下载 Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 如果已安装python,下载之前要彻底删除之前下载的python 2.Anaconda安装 3.添加环境变量 //根据实际安装路径进行更改 D:\Anaconda D:\Anaconda\Scripts D:\…

使用apisix+oidc+casdoor配置微服务网关

一、服务架构图 二、安装配置 1. 安装配置apisix (1). 快速启动及验证: curl -sL https://run.api7.ai/apisix/quickstart | sh该命令启动 apisix-quickstart 和 etcd 两个容器,APISIX 使用 etcd 保存和同步配置。APISIX 和 etcd 容器使用 Docker 的 …

【数据仓库】hadoop3.3.6 安装配置

文章目录 概述下载解压安装伪分布式模式配置hdfs配置hadoop-env.shssh免密登录模式设置初始化HDFS启动hdfs配置yarn启动yarn 概述 该文档是基于hadoop3.2.2版本升级到hadoop3.3.6版本,所以有些配置,是可以不用做的,下面仅记录新增操作&#…

STM32中断详解

STM32中断详解 NVIC 中断系统中断向量表相关寄存器中断优先级中断配置 外部中断实验EXTI框图外部中断/事件线映射中断步骤初始化代码实现 定时器中断通用定时器相关功能标号1:时钟源标号 2:控制器标号 3:时基单元 代码实现 NVIC 中断系统 STM…

常见的中间件漏洞

1.tomcat 1.1 CVE-2017-12615(put上传) 当在Tomcat的conf(配置目录下)/web.xml配置文件中添加readonly设置为false时,将导致该漏洞产 ⽣,(需要允许put请求) , 攻击者可以利⽤PUT方法通过精心构造的数据包…

【JAVA】神经网络的基本结构和前向传播算法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默, 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把…

Qt 12.28 day3

作业: 1】 思维导图 2】 在登录界面的登录取消按钮进行以下设置: 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&a…

Ubuntu 20.04.1 LTS搭建nginx + php7.4运行环境

本文基于https://www.rosehosting.com/blog/how-to-install-php-7-4-with-nginx-on-ubuntu-20-04/的翻译和实践记录。 安装 Nginx 默认情况下,最新版本的 Nginx 位于 Ubuntu 20.04 默认存储库中。您可以使用以下命令安装它: apt-get install nginx -y…

【专题】2024年出口跨境电商促销趋势白皮书报告汇总PDF洞察(附原数据表)

原文链接:https://tecdat.cn/?p38722 在当今全球化加速演进、数字经济蓬勃发展的大背景下,跨境电商行业正以前所未有的态势重塑国际贸易格局,成为各方瞩目的焦点领域。 根据亚马逊发布的《2024年出口跨境电商促销趋势白皮书》,…

UE5材质节点Camera Vector/Reflection Vector

Camera Vector相机向量,输出像素到相机的方向,结果归一化 会随着相机移动而改变 Reflection Vector 反射向量,物体表面法线反射到相机的方向,x和y和camera vector相反 配合hdr使用

【数据仓库】spark大数据处理框架

文章目录 概述架构spark 架构角色下载安装启动pyspark启动spark-sehll启动spark-sqlspark-submit经验 概述 Spark是一个性能优异的集群计算框架,广泛应用于大数据领域。类似Hadoop,但对Hadoop做了优化,计算任务的中间结果可以存储在内存中&a…

【Elasticsearch】集群配置深度解析与实践

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

Three.js教程004:坐标辅助器与轨道控制器

文章目录 坐标辅助器与轨道控制器实现效果添加坐标辅助器添加轨道控制器完整代码完整代码下载坐标辅助器与轨道控制器 实现效果 添加坐标辅助器 创建坐标辅助器: const axesHelper = new Three.AxesHelper(5);添加到场景中: scene.

紫光展锐推出高性能四核4G 智能穿戴平台W377E,应用场景更丰富

近日,紫光展锐正式推出高性能4G 智能穿戴平台W377E。该产品面向不同的应用场景,拥有丰富特性和超低功耗,进一步壮大紫光展锐的智能穿戴产品组合。紫光展锐面向中高端和海量的智能穿戴市场,持续提供技术先进、高效安全、高质可靠的…

Android着色器SweepGradient渐变圆环,Kotlin

Android着色器SweepGradient渐变圆环,Kotlin import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Path import android.graphics.SweepGradient import android…

ES elasticsearch-8.17.0-windows-x86_64使用

1、下载ES(elasticsearch 简称 ES 下载链接:https://www.elastic.co/downloads/elasticsearch) ES 下载链接:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.17.0-windows-x86_64.zip)),需要在修改ES配置&#xff0…