有关于Transformer 的max_seq_length (max_source_length)

news2024/11/16 21:46:21

Transformer 的最大输入长度,即max_seq_length / max_source_length是一个非常值得注意的参数。

Transformer的encoder大多是Auto-encoder的结构,不同于Auto-regressive encode,由于auto-encoder缺乏时序序列的位置信息,因此其需要对输入的每个token的position进行编码。

而position的编码方式大致为两种:1).基于Embedding 2).非Embedding

1. Embedding编码

最常见的position编码方式自然就是绝对位置嵌入编码(i.e., absolute positional embeddings)。像BERT、Roberta、BART这种都是用的position embedding。也就是用每个token的index,去从embedding中取向量。

但是这也带来了一个问题,position embedding的长度是有限的,输入的tokens如果超出这个长度,就会有index error,这也是为什么会有max_seq_length这个参数,将过长的输入部分切掉。

所以,如果模型是用position embedding编码位置信息的,则必须传入正确的max_seq_length长度(可以利用tokenizer的truncation属性,指定模型config里面的max_seq_length)。

否则,一旦输入超出了这个最大长度,会报index error:
在这里插入图片描述

2. 非Embedding编码

而像XLNet、T5这种模型的位置编码,则不是利用这种传统的embedding式(XLNet用的shuffle,T5用的相对位置编码),因此就不会有输入长度的限制

尽管huggingface的接口都提供了max_source_length这个参数选项,其值默认设定为模型预训练时使用的max_seq_length,可如果实际传入长度大于该值的input,也并不会有任何报错

但是更大的输入长度,自然会带来更重的计算负担

在这里插入图片描述

更重要的是,更长的输入也并不一定能带来更好的性能(具体看做的任务),因为这与模型预训练时存在着差别(如下图所述):
在这里插入图片描述

笔者在使用T5-base的时候,也尝试过将默认的max_seq_length==512增大为1024,使用更长的input,但并未发现存在明显性能提升的现象,甚至还会略微损害性能(注:笔者使用的数据集存在大量的输入长度超过512的样本,因此排除max_seq_length不生效的情况)。

当然,这个结论是比较主观和局限的,可能某些任务使用更大的max_seq_length去进行fine-tune效果会更好。


参考

  • HuggingFace-issues_#1791
  • HuggingFace-issues_#5204
  • HuggingFace-issues_#108
  • HuggingFace-issues_#4406

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

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

相关文章

dom截图——探究长截图的极限

长截图问题 问题:使用dom-to-image和html2canvas来进行长截图会出现一个问题,如果图片非常长,一些图片会只加载一半,如果图片再长一些,截图就会为空。 目前我测试的结果:截图的大小在8mb出现图片缺了的情况…

Blender 编辑骨骼动画,重复动作,并导出动画为视频

文章目录制作动作动画.重复动作.导出动画为视频制作动作动画. 1 进入姿态模式。调整各个部位的位置。调整好后,A,全选,I 记录置和旋转并创建一个关键帧 2 如果回放时间轴上没有关键帧,可以去 动画时间表/动作编辑器 窗口查看。注…

CVE-2019-2725漏洞复现

前言 在学习内网过程中遇到了weblogic比较常见的漏洞,编号是cve-2019-2725,之前没有总结过,于是本篇文章给大家总结归纳一下该漏洞的利用方法与原理。 基础知识 cve-2019-2725漏洞的核心利用点是weblogic的xmldecoder反序列化漏洞,攻击步骤…

SpringBoot学习超详细 第三 实用开发篇

目录 一、启动热部署 二、配置高级 三、常用 计量单位 四、开启数据校验 五、测试 第一种web环境测试 第二种web环境测试 ​编辑 第三种web环境测试 第四种web环境测试 第五种web环境测试 六、数据层解决方案 1、SQL 七、NoSQL(redis) 1、Red…

ArcMap制图相关问题

ArcMap是一款我们常用的GIS桌面端应用,在完成一系列空间分析任务后,我们通常会选择用专题图来呈现结果。今天,我们就来聊一聊有关ArcMap成图的一些问题。注:此处演示使用版本为ArcGIS10.4.1如何实现“一幅多图”在绘制研究区区位图…

AC7811-PWDT脉冲宽度检测

PWDT是Pulse Width Detect Timer(脉冲宽度检测定时器)缩写。可作为测量脉冲宽度的工具或作为16位定时器。 功能 检测脉冲宽度 可编程起始测量触发沿 支持 3 个霍尔传感器的信号输入测量 支持来自模拟比较器的 3 个输入 定时器 在禁用定时器或在正…

【JavaScript】DOM 操作元素样式和元素类名

文章目录【JavaScript】DOM 操作元素样式和元素类名一. 操作元素样式(1)操作行内元素1. 获取元素的样式2. 设置元素的样式(2) 操作非行内元素和行内元素1. 获取元素的样式二. 操作元素类名(1) className1. 获取元素的类名2. 设置元素的类名3. 追加元素的类名(2) classList1. 获…

【谷粒商城基础篇】项目简介与分布式概念

谷粒商城笔记合集 分布式基础篇分布式高级篇高可用集群篇简介&环境搭建项目简介与分布式概念(第一、二章)基础环境搭建(第三章)整合SpringCloud整合SpringCloud、SpringCloud alibaba(第四、五章)前端知…

如何使用WebRTC建立一个视频会议App(二)

如何使用WebRTC建立一个视频会议App(一)_音视频开发老马的博客-CSDN博客 服务器接收到‘’准备好了‘’的信息并通过发送同样信息通知第一个参与者。这就开始了被称作发信的交换信息过程,因此我们需要添加相应的handlers到client.js文件中。 当第一个参与者接收到准…

BGP在数据中心的应用3——构建自动化的BGP配置

注: 本文根据《BGP in the Datacenter》整理,有兴趣和英文阅读能力的朋友可以直接看原文:https://www.oreilly.com/library/view/bgp-in-the/9781491983416/上一部分笔记请参考:https://blog.csdn.net/tushanpeipei/article/deta…

【回答问题】ChatGPT上线了!推荐20个姿态估计深度学习模型

推荐20个姿态估计深度学习模型 好的,这里是 20 个深度学习模型用于姿态估计的推荐: 2D/3D Convolutional Neural Networks Recurrent Neural Networks Self-supervised Learning Generative Adversarial Networks Attention-based Networks Graph Neur…

git add .卡住不动

问题描述 代码修改完了准备上传到github,使用 git add . 命令发现一直卡住不动了。没办法只能强行退出,如下图所示。 解决办法 研究了一番,发现了这类问题的套路,在此给大家提供一个debug的思路。 首先需要知道,git a…

保姆级手把手图文并茂教你配置MAC系统Flutter环境

Flutter 是什么 Flutter是Google开源的构建用户界面(UI)工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面和嵌入式平台。Flutter 开源、免费,拥有宽松的开源协议,适合商业项目…

返回一个数组中所有元素的小数部分、整数部分为两个数组 numpy.modf()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 返回一个数组中所有元素的 小数部分、整数部分 为两个数组 numpy.modf() [太阳]选择题 关于以下python代码表述错误的一项是? import numpy as np anp.array([-0.5,1,1.5]) print…

《对线面试官》| 高频计算机网络面试题

目录1、说说 OSI 七层模型和 TCP/IP 四层模型的关系和区别2、说说 TCP 与 UDP 的区别3、TCP 是如何实现数据的可靠性?4、 TCP 协议如何提高传输效率?5、你知道 TCP 如何处理拥塞吗?6、为什么 TCP 链接需要三次握手,两次不可以么&a…

小程序后台数据交互-个人中心

目录 一,获取用户昵称和头像 登录过程 二,登录-小程序 三,后台 小程序服器配置 一,获取用户昵称和头像 登录过程 小程序登录 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小…

SOFARegistry | 聊一聊服务发现的数据一致性

文|肖健(花名:昱恒)蚂蚁集团技术专家专注于服务发现领域,目前主要从事蚂蚁注册中心 SOFARegistry 设计、研发工作。本文 9492 字 阅读 24 分钟PART. 1前言1.1 什么是服务发现在微服务的体系中,多个应用程序…

Hydra(九头蛇)工具使用

Hydra工具使用1.Hydra简介1.1.Hydra介绍1.2.Hydra支持协议1.3.Hydra下载2.Hydra使用2.1.Hydra基本使用方式2.2.Hydra常用参数2.3.Hydra注意事项2.4.Kail字典2.5.Hydra密码生成器3.Hydra案例3.1.创建账号密码文件3.2.SSH协议爆破3.2.1.靶机信息3.2.2.开始爆破3.2.2.1.不知账号3.…

C#语言实例源码系列-游戏-实现华容道

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中…

Rust个人学习之聊聊Rust的变量

今天看了Rust的变量相关内容,Rust变量很重要的一个设计点是: Rust变量默认是不可变的。 很难理解? 我们接下来一起研究一下Rust的变量, 在Rust中变量是通过关键字let进行声明的 let x 5; 上述语句就是定义了一个名称为x的变量,变量的值为…