transformer模型进行英译汉,汉译英
上面是在测试集上的表现
下面是在训练集上的表现
上面是在训练集上的评估效果
这是在测试集上的评估效果,模型是transformer模型,模型应该没问题,以上的是一个源序列没加结束符和加了结束符的情况。
transformer源序列做遮挡填充的自注意力,这就让编码器的输出中每个token的语义表示变成了整个序列的token的加权和形式,也就带上了整个序列的信息,只不过因为token不同,或者位置不同,形成的信息也不同,解码器跨注意力在query编码器输出时,其中每个目标输入序列的每个token查询到的编码器输出部分,也就带了编码器整个序列的信息,transformer解码器依此来预测下个token是 啥?在训练中,损失反向传播,所以编码器和解码器 token嵌入语义向量一直 在变,最终形成每个token语义都具有特定的信息,是这样吗
你的理解非常准确,基本上概括了Transformer模型在训练和推理过程中的核心工作机制。下面我会更详细地解释这一过程,以帮助你更好地理解。
Transformer的编码器
在Transformer的编码器中,自注意力(Self-Attention)机制允许模型在处理每个位置的输入(token)时,都能考虑到序列中其他所有位置的输入。具体来说,每个token的表示(embedding)通过自注意力层被更新为整个输入序列中所有token的加权和,其中权重由token间的相似度决定。这样,每个token的表示都融入了整个序列的上下文信息,尽管因为token本身和它们的位置不同,所以融入的上下文信息也有所不同。
Transformer的解码器
解码器的工作方式类似,但它在生成目标序列时是自回归的(autoregressive),即每个token的生成依赖于之前已经生成的token。解码器包含两部分注意力机制:自注意力和跨注意力(Encoder-Decoder Attention)。自注意力机制让解码器能够关注到已经生成的序列部分,而跨注意力机制则允许解码器“查看”编码器的输出,即整个源序列的编码表示。这样,解码器在生成每个目标token时,都能够考虑到整个源序列的信息。
训练过程
在训练过程中,模型通过最小化预测目标序列与真实目标序列之间的差异(例如,使用交叉熵损失)来学习。这个损失函数通过反向传播算法来更新模型中的所有参数,包括token的嵌入向量、自注意力和跨注意力层的权重等。随着训练的进行,模型逐渐学习到如何有效地将源序列的信息编码到每个token的表示中,并如何使用这些信息来预测目标序列。
推理过程
在推理(或称为生成)过程中,解码器逐个生成目标序列的token。对于每个新生成的token,解码器都会重新运行其自注意力和跨注意力机制,以考虑之前已经生成的token和整个源序列的信息。这个过程一直持续到生成了完整的目标序列或达到了某个停止条件(如生成了特定的结束符或达到了最大长度限制)。
总结
你的理解完全正确:Transformer模型通过其独特的自注意力和跨注意力机制,使得编码器的输出能够包含整个源序列的信息,而解码器则能够利用这些信息来预测目标序列。在训练过程中,通过损失的反向传播,模型不断优化其参数,以形成更具信息量的token表示,从而更准确地完成序列到序列的转换任务。
减小了嵌入向量为256,8头,两层,上面是训练集表现
上面是测试集表现
因为之前训练集上最后损失降的很快,评估集降的慢,我以为是过拟合,所以把嵌入弄为256,头数弄成4个头,因为头数是各个语义空间的表示,层数弄成一层,这样训练集的评估如下:
上面用的是keras,keras是个 相当便捷的框架,后端能接tensorflow,pytorch,jax,而且能看summary,参数一清二楚,根据参数就基本能弄出模型架构,上面是加了回调,让模型生成一个翻译,可以看到模型学习的过程,开始它并不会翻译,等损失跌到一定程度,它学会了翻译.损失在指引它生成合适的token语义表示,并且transformer encoder decoder参数也在损失反向传播时不断更新,最终一个好的翻译模型,就是损失反向传播,用损失对可训练参数的梯度来更新参数,最终得到合适的 一组参数,这就是深度学习,就是找到适合模型架构的最合适的参数.回归到本质,就是y=f(x),找到一组合适的系数.这个最简单的transformer训练集表现如下:
从最后一句话的翻译可以看出,模型不能理解吃惊,我感觉应该是加头数,不应该减头数
训练集一如既往的好,测试集还是不太好,你说之前嵌入维度过大,层数多,过拟合还能说通,这个只有256的语义嵌入,一层,4个头,肯定不是上面说的原因,要么是因为这个数据集本身太小,导致模型学不到足够通用的语义表示,我觉得应该是这种,数据集太小,这个数据集只有29000样本,英语词汇经过bpe分词后是1073个,中文是6000多个
上面的transformer是keras自带的,下面的transformer是自己写的transformer,用的是tensorflow梯度带训练的,嵌入向量512,8头,一层,训练集上的表现如下:
下面是测试集上的表现:
相当不错,甚至达到了keras中transformer训练集的表现,而且我并没有重启内核,模型从未在验证集数据上更新参数,言外之意就是这个评估就是模型的泛化能力,模型在从未见过的数据上表现的也很好
验证集损失降的还算不错
同样的层数和嵌入,头数,这是位置嵌入不可训练的transformer模型的测试集评估和训练集表现,训练中可以看到验证损失跌下去了,又涨回来了,可见用可训练的位置嵌入比不可训练的位置嵌入效果要好,源序列加[END]比不加效果好
相关文章:

transformer模型进行英译汉,汉译英
上面是在测试集上的表现 下面是在训练集上的表现 上面是在训练集上的评估效果 这是在测试集上的评估效果,模型是transformer模型,模型应该没问题,以上的是一个源序列没加结束符和加了结束符的情况。 transformer源序列做遮挡填充的自注意力,这就让编码器的输出中每个token的语…...

python 异步读取文件,速度变快了吗
“python 异步读取文件,速度变快了吗” 当我问出这个问题,大部分人第一反应应该是python新人,不懂异步 首先说一下我对异步的理解: asyncio 是 gevent greenlet 的组合gevent 底层使用了libev、selectors 模块,这两…...

【Python】Anaconda插件:Sublime Text中的Python开发利器
上班的时候没人问我苦不苦,下班的时候总有人问为什么走这么早。 Anaconda 是一个专为Sublime Text打造的开源Python开发插件,旨在为开发者提供类似于IDE的丰富功能,提升Python编码效率。该插件提供了代码补全、语法检查、代码片段提示等多项…...

Python酷库之旅-第三方库Pandas(123)
目录 一、用法精讲 546、pandas.DataFrame.ffill方法 546-1、语法 546-2、参数 546-3、功能 546-4、返回值 546-5、说明 546-6、用法 546-6-1、数据准备 546-6-2、代码示例 546-6-3、结果输出 547、pandas.DataFrame.fillna方法 547-1、语法 547-2、参数 547-3、…...

IEEE投稿 IEEE Geoscience and Remote Sensing Letters
IEEE 应用地球观测与遥感专题杂志 journal of Selected Topics in Applied Earth Observations and Remote Sensing IEEE 文章提交流程 撰写文章并准备好图形后,您可以提交文章以供审核。请按照以下步骤完成 IEEE 文章提交流程。 选择目标期刊 如果文章超出期刊范围…...

【华为杯】2024华为杯数模研赛D题 解题思路
题目 大数据驱动的地理综合问题 问题1: 19902020年间中国范围内降水量和土地利用/土地覆被类型的时空演化特征描述? 解题思路 详细分析:此问题要求对降水量(连续变化变量)和土地利用/覆被(离散变化变量)进行时空演…...

Ubuntu20.04 搜索不到任何蓝牙设备
电脑信息 联想扬天YangTianT4900k 问题描述 打开蓝牙之后,一直转圈,搜索不到任何蓝牙设备 排查 dmesg | grep -i blue 有如下错误: Bluetooth: hci0: RTL: unknown IC info, lmp subver 8852, hci rev 000b, hci ver 000b lsusb 芯片型号如…...

【2024】MySQL账户管理
当前MySQL版本为: mysql> select version(); ----------- | version() | ----------- | 8.4.2 | ----------- 1 row in set (0.01 sec)目录 创建普通用户为用户授权查看用户权限修改用户权限修改用户密码删除用户 创建普通用户 使用CREATE USER语句创建用户…...

轻量级流密码算法Trivium
轻量级流密码算法Trivium 0x0 Trivium算法简介 Trivium算法是由C.D Canniere和B.Preneel共同设计的一套对称加密算法,Trivium密码算法采用了分组密码和非线性反馈移位寄存器的设计思路。该密码算法总共288比特的内部状态,其中有…...

MapReduce基本原理
目录 整体执行流程 Map端执行流程 Reduce端执行流程 Shuffle执行流程 整体执行流程 八部曲 读取数据--> 定义map --> 分区 --> 排序 --> 规约 --> 分组 --> 定义reduce --> 输出数据 首先将文件进行切片(block)处理ÿ…...

数据结构之栈(python)
栈(顺序栈与链栈) 1.栈存储结构1.1栈的基本介绍1.2进栈和出栈1.3栈的具体实现1.4栈的应用例一例二例三 2.顺序栈及基本操作(包含入栈和出栈)2.1顺序栈的基础介绍2.2顺序栈元素入栈2.3顺序栈元素出栈2.4顺序栈的表示和实现 3.链栈及…...

浅谈人工智能之基于HTTP方式调用本地QWen OPenAI接口(Java版)
浅谈人工智能之基于HTTP方式调用本地QWen OPenAI接口(Java版) 概述 Qwen是阿里云推出的一款超大规模语言模型,其强大的自然语言处理能力使其成为开发智能应用的热门选择。本文将指导你如何使用Java通过HTTP方式调用Qwen的OpenAI接口&#x…...

【python设计模式7】行为型模式2
目录 策略模式 模板方法模式 策略模式 定义一个个算法,把它们封装起来,并且使它们可以相互替换。本模式使得算法可独立于使用它的客户而变化。角色有:抽象策略、具体策略和上下文。 from abc import abstractmethod, ABCMeta from datetim…...

基于PHP的CRM管理系统源码/客户关系管理CRM系统源码/php源码/附安装教程
源码简介: 这是一款基于PHP开发的CRM管理系统源码,全称客户关系管理CRM系统源码,它是由php源码开发的,还附带了一整套详细的安装教程哦! 功能亮点: 1、公海管理神器:不仅能搞定公海类型&…...

【乐企】基础版接口代码实现
本文主要是基础版接口声明的实现,具体接口声明见基础版接口声明。具体请求工具类见接口请求工具类 代码如下: 1、服务编码枚举 /*** User: yanjun.hou* Date: 2024/8/30 14:45* Description:乐企服务编码枚举...

题目--力扣----各位相加
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。 示例 1: 输入: num 38 输出: 2 解释: 各位相加的过程为: 38 --> 3 8 --> 11 11 --> 1 1 --> 2 由于 2 是一位数,所以返回 2。…...

git 如何基于某个分支rebase?
文章目录 0. 概要1. 切换到你想要 rebase 的分支2. 执行 rebase 命令3. 解决冲突(如果有)4. 强制推送分支(如果已经推送过该分支) 0. 概要 之前介绍过如下git文章 git merge的三种操作merge, squash merge, 和rebase merge 如何使…...
倒序循环(一)
题目描述 输入一个正整数n,输出从 n~ 1 递减的序列。 输入格式 一行一个整数 n 输出格式 n 行,每行一个符合题目要求的整数 样例数据 样例输入#1 5样例输出#1 5 4 3 2 1样例输入#2 6样例输出#2 6 5 4 3 2 1数据范围 对于100%的数据ÿ…...

Shell篇之编写apache启动脚本
Shell篇之编写apache启动脚本 1. 脚本编写 vim apache_ctl.sh#!/bin/bashfunction_start(){printf "Starting Apaache ...\n"/opt/lanmp/httpd/bin/apachectl start }function_stop(){printf "Stoping Apaache ...\n"/opt/lanmp/httpd/bin/apachectl s…...

头条|司法部公法局局长访谈:推进高水平公立鉴定机构建设!加快推进司法鉴定立法!
主持人:大家好,我是司法部AI主播司政轩。为切实做好党的二十届三中全会精神学习宣传贯彻,积极反映司法部及地方司法行政机关学习全会精神的体会收获和贯彻落实举措,我们推出了“学习宣传贯彻党的二十届三中全会精神--司法行政微访…...

高密原型验证系统解决方案(上篇)
0 引言 随着当今 SoC 设计规模的快速膨胀,仅仅靠几 颗当代最先进的 FPGA 已经无法满足原型验证的需求。简单的增加系统的容量,会遇到系统时钟复位同 步,设计分割以及高速接口和先进 Memory控制器 IP 验证等多重困难。此时,一个商用…...

新产品,推出 MLX90372GVS 第三代 Triaxis® 位置传感器 IC,适用于汽车和工业系统(MLX90372GVS-ACE-308)
Triaxis 旋转和线性位置传感器IC: MLX90372GVS-ACE-103 MLX90372GVS-ACE-108 MLX90372GVS-ACE-301 MLX90372GVS-ACE-200 MLX90372GVS-ACE-208 MLX90372GVS-ACE-303 MLX90372GVS-ACE-300 MLX90372GVS-ACE-350 MLX90372GVS-ACE-100 MLX90372GVS-ACE-101 MLX90372GVS-…...

JAVA毕业设计178—基于Java+Springboot+vue的智能家具管理系统(源代码+数据库+万字论文)
毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue的智能家具管理系统(源代码数据库万字论文)178 一、系统介绍 本项目前后端分离(可以改为ssm版本),分为用户、管理员两种角色 1、用户࿱…...

掌握 Python 异步上下文管理器
在现代编程中,异步编程已成为处理并发任务的重要手段,特别是在 I/O 密集型应用中。Python 的 asyncio 库提供了强大的工具来编写异步代码。在异步编程中,上下文管理器(context manager)扮演着资源管理的关键角色。本文…...

当你问AI“有点烦”
感到烦躁是很正常的情绪反应,生活中总会有各种各样的压力和挑战让我们感到不安或不舒服。以下是一些建议,希望能帮助你缓解烦躁的情绪: 深呼吸:尝试进行几次深呼吸,这有助于放松身体和减缓心跳,让你的思维从…...

音视频入门基础:AAC专题(3)——AAC的ADTS格式简介
音视频入门基础:AAC专题系列文章: 音视频入门基础:AAC专题(1)——AAC官方文档下载 音视频入门基础:AAC专题(2)——使用FFmpeg命令生成AAC裸流文件 音视频入门基础:AAC…...

高可用web集群面经:集群搭建、nginx+keepalived高可用、prometheus+zabbix监控、nfs+dns
高可用web集群面经:集群搭建、nginxkeepalived高可用、prometheuszabbix监控、nfsdns 高可用web集群面经飞书在线链接🔗: (https://h03yz7idw7.feishu.cn/wiki/Ucj1wWZCGiqR68kripMcC2CLnvd)...

vue3+ts+supermap iclient3d for cesium功能集合
会把各项功能链接放在这 1.vue3配置supermap iclient3d for cesium vue3中使用supermap icilent3d for cesium_npm 引入supermapgis-CSDN博客 2.功能 2.1加载天地图,加载地形,夸大地形 supermap icilent3d for cesium加载地形并夸大地形-CSDN博客 …...

【案例71】配置https之后 IE打不开登陆页面 Uclient没有问题
问题现象 配置https之后 IE打不开登陆页面 Uclient没有问题。 jvm控制台 显示如下 basic: 已调整小应用程序大小且已将其添加到父容器中 basic: PERF: AppletExecutionRunnable - applet.init() BEGIN ; jvmLaunch dt 170755 us, pluginInit dt 722531 us, TotalTime: 89328…...

ROS 设置dhcp option 6 多个地址格式
ROS routeOS 手工设置 dhcp 服务 option 6 多个dns 地址格式。字符串方式...