Transformer简明笔记:文本翻译

news2024/9/20 22:51:56

Bert和gpt都是基于transformer的,在此之前流行的是rnn,复杂度有限且效率不高,容易受到文本长度的限制。
项目地址:https://github.com/lansinuote/Transformer_Example
b站视频:https://www.bilibili.com/video/BV19Y411b7qx?p=9&spm_id_from=pageDriver&vd_source=eca9b4f9ea9577b666c089a010621a99

总体架构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
编码器:自注意力层->全连接层
解码器:自注意力层->编码解码注意力->全连接层

计算注意力

在这里插入图片描述
词向量编码
x1*wq得到queries,以此类推,得到Q K V
在这里插入图片描述
除以8和词向量的编码有关
z1是自注意力计算的结果
在这里插入图片描述
在这里插入图片描述
得到多组QKV向量,就是多头注意力
在这里插入图片描述
图中有八组这样的矩阵

词向量编码

在这里插入图片描述
右边计算出的结果是一样的,transformer会做同样的处理

在这里插入图片描述

在这里插入图片描述
pos是第几个词,i是第几个向量,pos是行,i是列,偶数列是上面的式子计算,奇数列是下面的式子计算在这里插入图片描述
红色是大数,蓝色是小数,第0列是sin,第1列是cos,波动比较快,波动频率会逐渐降低

MASK

在这里插入图片描述
把a b pad理解为一句话,为了把各个句子保持相同长度,会补充pad。对pad的计算没有意义,把对pad的注意力全部替换成mask,但是pad对其他的词的注意力不做处理。
在这里插入图片描述
b和c是要预测的结果,所以计算b的时候不能让a看到。
在这里插入图片描述

对两个mask取一个并集

完整计算流程

在这里插入图片描述
layerNorm这部分是短接的计算,然后数据标准化,得到z1,z2,全连接运算
在这里插入图片描述
n个encoder上下串联,decoder拿到x1,x2,也要计算注意力,标准化,encoder-decoder这一层和self-attention其实一样,只不过qkv是拿encoder计算得出的结果当作kv,自己的自注意力层计算出的结果当作q,短接相加,标准化,全连接,标准化,decoder也会有n个,串联,最终做一个全连接层的输出。
在这里插入图片描述
翻译过程,不断预测下一个字

实验数据的生成策略在这里插入图片描述

词表是x语言的所有词汇,这里只有7个词,模仿自然语言,采样概率不等,x的长度随机,均为模仿自然语言。在这里插入图片描述
最终目的:x翻译成y
所以x和y要有关联性,这里的关系非常简单,黑色箭头表明y当中的每一个词是x逆序得到的,小写字母翻译成大写字母,y当中的数字用9-x得到在这里插入图片描述
虚线的箭头表明,y中的第一位取决于x的最后一位,这样y的第一位和第二位是相同的,这样做是为了让y中的数据长度比x多一位,同时增加映射复杂度
在这里插入图片描述
在这里插入图片描述

代码实现:定义数据

在这里插入图片描述
data.py
在这里插入图片描述
字典中共39个词
在这里插入图片描述
m的概率最高
生成数据的函数:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
定义数据集:

在这里插入图片描述
len固定返回10万,get_data生成一对x和y
数据加载器比较简单,每次调用生成8对x和y

代码实现:util.py

注意力计算函数:
在这里插入图片描述
几维向量就除以几的平方根

归一化层:
在这里插入图片描述
规范化,数值的均值是0,标准差是1,bn(batch normalization)取不同的样本做归一化,ln(layer nomalization)对不同通道做归一化。

多头注意力计算层:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
位置编码层:
在这里插入图片描述
在这里插入图片描述
全连接输出层:
在这里插入图片描述

mask.py

在这里插入图片描述
trilmask 上三角mask
在这里插入图片描述
在这里插入图片描述

model.py

编码器:
在这里插入图片描述
完整的编码器:
在这里插入图片描述
解码器:
在这里插入图片描述
完整的解码器:
在这里插入图片描述
主模型:
在这里插入图片描述
维度是变化的,注释有误

main.py

在这里插入图片描述
第一列是epoch 第二列是i 第三列是learning rate 第四列是loss 不断下降 第五列是正确率,97%
在这里插入图片描述
预测时不需要y的最后一个字符,y的第0个字符一定是SOS,不需要预测
在这里插入图片描述
在后面补上49个pad
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
预测结果几乎一模一样

一个更加复杂的翻译任务

用transformer做加法
在这里插入图片描述
y是x左右两边的相加得到的,这个难度要高一些,替换掉生成数据的函数就可以得到,训练10个epoch,learning rate decay也生效了,最终准确率是92%
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java项目: 基于SpringBoot+mysql旅游网站管理系统分前后台(含源码+数据库+开题报告+PPT+毕业论文)

一、项目简介 本项目是一套基于SpringBootmysql旅游网站管理系统分前后台 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作…

【java入门】JDK的下载安装与配置,最新最详细教程!

🚀 个人简介:某大型国企资深软件开发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主、华为云云享专家,分享前端后端相关技术与工作常见问题~ 💟 作 者:码喽的自我修养🥰 &#…

创意微型学生机床工具——金属车床

劳技课程是实施劳动与技术教育的主要途径,具有基础性、实践性、综合性和创新性等特点。它不仅是国家课程、地方课程和校本课程的统一体,还是基础教育课程体系中的重要一环。 劳技课程强调学生的动手操作能力和实践体验,通过具体的技术活动和劳…

IP的SSL证书的申请及配置方式

随着互联网技术的发展,数据安全变得越来越重要。HTTPS协议因其提供的加密传输能力而成为现代Web通信的标准。实现HTTPS的关键组件之一就是SSL/TLS证书,它为网站提供了一层保护,确保客户端与服务器之间的数据传输是加密的。本文将指导您如何为…

NSSCTF刷题

[NISACTF 2022]checkin 1.在选中nisactf的时候,注释里面的内容也被标记了 2.复制到010editer中发现存在不可见的字符 3.我们选择实际的参名和字符串,并转为url编码格式 4.得到最后的payload,传参得到flag ahahahahajitanglailo&%E2%80%…

当敏捷开发遇上AI

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

【ESP32 IDF】WS2812B灯驱动

WS2812B灯驱动 1. 简单描述2. 驱动过程3.主函数添加驱动程序 1. 简单描述 开发环境为 IDF5.2.2采用乐鑫官方组件库 组件库地址 : https://components.espressif.com/components/espressif/led_strip/versions/2.5.5 2. 驱动过程 复制led_strip组件命令 在自己项目…

密钥分发与公钥认证:保障网络通信的安全

在网络通信中,密钥的安全分发和公钥的有效认证是确保系统安全的关键。本文将为基础小白介绍密钥分发与公钥认证的基本概念和实际应用,帮助大家更好地理解这些技术如何保障我们的网络通信安全。 1. 密钥分发与公钥认证的背景 由于密码算法是公开的&…

数仓基础(九):各大公司实时数仓实践

文章目录 各大公司实时数仓实践 一、网易实时数仓实践 二、汽车之家实时数仓实践 三、顺丰实时数仓实践 四、​​​​​​​腾讯实时数仓实践 五、​​​​​​​​​​​​​​滴滴实时数仓实践 ​​​​​​​​​​​​​​各大公司实时数仓实践 一、网易实时数仓实践…

OpenHarmony编译开发:hiperf应用优化调试命令行工具实践

简介 hiperf 是 OpenHarmony 为开发人员提供的用于调试的命令行工具,用于抓取特定程序或者系统的性能数据,类似内核的 perf 工具,该工具支持在 Windows/Linux/Mac 等操作系统上运行。 架构 目录 /developtools/hiperf ├── demo # demo 程序 │ …

单片机-串口通信(二)

目录 一、串口概念 1.相关概念: 按数据传输方式分类: 按时钟分类 二、STM32F103ZET6中串口 USART特性: NRZ数据格式: 三、配置串口通信 查看硬件原理图 软件配置流程 USART相关的寄存器 新建my_usart1.c和my_usart1.h …

Python 中 9 种关键文件类型你了解几个?

当你遇到名称以 .ipynb、.pyi、.pyc 等结尾的 Python 文件时,你是否会感到困惑? 你想知道所有这些文件类型之间的区别吗?今天就和大家一起了解所有这些 Python 文件类型。🙂 .py文件:标准 Python 源代码 不用多说&a…

C++:this指针详解

目录 一、this指针 二、C和C语言实现Stack对比 一、this指针 • Date类中有 Init 与 Print 两个成员函数,函数体中没有关于不同对象的区分,那当d1调用Init和 Print函数时,该函数是如何知道应该访问的是d1对象还是d2对象呢?那么这…

【蔡英丽医生】颈动脉斑块:认识它,预防它,应对它

在我们日常的健康检查中,颈动脉斑块这个词可能会不经意间跃入眼帘,尤其是对于40岁以上的朋友们来说,它的出现率更是居高不下。据调查数据显示,我国40岁以上人群中,颈动脉斑块的检出率超过40%,而60岁以上的人…

【UE5】控件蓝图——树视图(TreeView)的基本使用

目录 前言 效果 步骤 一、显示根节点 二、显示子节点 前言 我们在视口中添加1个方块,2个球体,5个圆柱 它们在大纲视图中的层级关系如下,那么如何将这种层级关系显示在树视图中是本篇文章要解决的问题。 效果 步骤 一、显示根节点 1…

【靶场】Pikachu—XSS Cross-Site Scripting(前五关)

🏘️个人主页: 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞👍收藏💗支持一下哦 【靶场】Pikachu—XSS Cross-Site Scripting(前五关) 第一关 反射型xss(get)第二关 反射型xss(post)第三关…

WeSiGJ的系列文章目录

文章目录 Cbasic 面试基础知识系列 23种 设计模式[创建式模式Creative Mode][结构型模式Structural pattern][行为模式Behavioral patterns] 关于作者支持作者 C basic 面试基础知识系列 abstractassertbit_fieldbit_operationCFeaturesconstdecltype 多态double_colon 冒号e…

宝塔官网下载地址

宝塔官网下载地址

启服云专利管理系统 高效管理创新成果

在知识经济时代,专利作为企业的核心竞争力和创新成果的重要载体,其管理效率与保护水平直接关系到企业的市场竞争力与未来发展。启服云管理软件作为一款集智能化、高效化、安全化于一体的为科技服务和知识产权领域设计的SaaS解决方案,旨在帮助…

采购火热!开学返校季这几类产品卖爆了!电商选品指南

9 月开学季,对于学生和家长来说,是一个充满新希望和新开始的时节。对于电商而言,这也是一个重要的销售节点,把握好开学季的需求,进行精准选品,能够带来丰厚的收益。 一、学生文具类 1、 笔记本 无论是传…