当前位置: 首页 > news >正文

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)处理&#xff…...

数据结构之栈(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%的数据&#xff…...

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主播司政轩。为切实做好党的二十届三中全会精神学习宣传贯彻,积极反映司法部及地方司法行政机关学习全会精神的体会收获和贯彻落实举措,我们推出了“学习宣传贯彻党的二十届三中全会精神--司法行政微访…...

MySQL(4):事务+视图+触发器+索引+三大范式+数据库优化+数据的导入导出

文章目录一、事务二、视图三、触发器四、索引五、关系型数据库三大范式六、Mysql数据库的优化七、数据的导入和导出一、事务 1.什么是事物? 将一组增删改查看成一个执行单元,要么全成功,要么有一个失败,数据库就会回滚&#xff…...

JienDa聊PHP:ThinkPHP 8.0 企业级API开发与性能调优实战

1. ThinkPHP 8.0企业级API开发基础 ThinkPHP 8.0作为现代化PHP框架的代表,在企业级API开发领域展现出强大的优势。我最近刚用TP8完成了一个日活50万的电商平台API重构,实测下来性能提升非常明显。相比传统开发方式,TP8的API开发流程更加规范…...

NVIDIA Profile Inspector实战指南:从参数调试到显卡性能极致释放

NVIDIA Profile Inspector实战指南:从参数调试到显卡性能极致释放 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 诊断性能瓶颈 显卡性能表现不佳往往是多种因素共同作用的结果&#xff0c…...

HY-MT1.5-1.8B功能体验:格式保留翻译,完美处理srt字幕和网页标签

HY-MT1.5-1.8B功能体验:格式保留翻译,完美处理srt字幕和网页标签 1. 引言:翻译模型的新挑战 在全球化内容爆炸式增长的今天,传统翻译工具面临两大核心痛点: 格式丢失问题:翻译srt字幕、HTML网页等内容时…...

【超详细】前端必备:从0到1吃透JavaScript闭包,附真实项目避坑指南

文章目录第一章 从“变量生命周期”开始,重新理解作用域链1.1 一个让新手困惑的面试题:循环中的var与let1.2 作用域链的形成:函数定义位置决定了一切第二章 闭包的工程价值:从封装到模块化2.1 数据私有化:用闭包实现真…...

DeerFlow惊艳案例:AI深度研究助理生成的报告和播客效果实测

DeerFlow惊艳案例:AI深度研究助理生成的报告和播客效果实测 1. 引言:当AI成为你的研究伙伴 想象一下,你正在为一个复杂的市场分析项目焦头烂额,需要快速整理一份包含最新数据、行业趋势和竞争格局的深度报告。传统方式下&#x…...

WarcraftHelper:让魔兽争霸3重获新生的兼容性增强工具

WarcraftHelper:让魔兽争霸3重获新生的兼容性增强工具 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否曾在现代电脑上尝试重温魔兽争…...

GLM-4.1V-9B-Base成本优化指南:GPU显存管理与推理性能调优

GLM-4.1V-9B-Base成本优化指南:GPU显存管理与推理性能调优 1. 为什么需要关注大模型推理成本 大模型在带来强大能力的同时,也伴随着高昂的GPU算力成本。GLM-4.1V-9B-Base作为一款9B参数量的视觉语言大模型,在实际部署中常常面临显存不足、推…...

一文读懂:控制界的万能公式——PID算法到底是什么?

一文读懂:控制界的万能公式——PID算法到底是什么? 对于每一位踏入工科大门的学生或是初入职场的工程师来说,在自动控制、机器人、电子工程等领域,有一个名字几乎如影随形——PID算法。从天上飞的四轴无人机,到地上跑的平衡小车;从化工厂里庞大的反应釜,到你家中安静运转…...

等保三级Java安全改造全周期实录,从代码审计到渗透验证的12个生死关卡

第一章:等保三级Java安全改造的合规基线与生命周期全景图等保三级对Java应用提出了覆盖身份鉴别、访问控制、安全审计、通信保密性、代码安全及可信执行环境的全维度要求。其合规基线并非静态清单,而是贯穿需求分析、设计开发、测试验证、上线部署与持续…...