LLM:ALiBi - 给注意力加上线性偏置

论文:https://arxiv.org/pdf/2108.12409.pdf

代码:https://github.com/ofirpress/attention_with_linear_biases

发表:2021

长度外推

参考:https://spaces.ac.cn/archives/9431#ALIBI

长度外推性是一个训练和预测的长度不一致的问题。具体来说,不一致的地方有两点:

1、预测的时候用到了没训练过的位置编码(不管绝对还是相对);

2、预测的时候注意力机制所处理的token数量远超训练时的数量。

第1点:可能大家都容易理解,没训练过的就没法保证能处理好,这是DL中很现实的现象,哪怕是Sinusoidal或RoPE这种函数式位置编码也是如此。

第2点:可能读者会有些迷惑,Attention理论上不就是可以处理任意长度的序列吗?训练和预测长度不一致影响什么呢?答案是熵,我们在《从熵不变性看Attention的Scale操作》也已经分析过这个问题,越多的token去平均注意力,意味着最后的分布相对来说越“均匀”(熵更大),即注意力越分散;而训练长度短,则意味着注意力的熵更低,注意力越集中,这也是一种训练和预测的差异性,也会影响效果。

摘要

如何让模型在推理时实现对训练期间未见过的序列的外推?我们引入了一种更简单、更有效的位置表示方法,即带有线性偏置的注意力(ALiBi)

ALiBi核心思想:没有将位置嵌入添加到单词嵌入中,而是用一个和query, key之间的距离成比例的一个“惩罚项”来偏置query-key的注意力得分。训练速度提高了 11%,内存使用量减少了 11%。

1 简介 

我们发现:使用Sinusoidal PE嵌入的Transformer语言模型(LMs)的外推能力非常弱

我们证明:这种外推失败是由位置嵌入方法引起的。如下图所示,对于Sinusoidal PE(黄色)方法的最新替代方案 RoPE(橙色) 已经改进了外推。但最好的是T5 bias(紫色),其比正弦方法慢得多,但会引入额外的内存和参数。

图1:左边的是模型在512数据集训练的模型,右边是在1024数据集上训练的模型。横坐标是推理是输入的句子长度,纵坐标的困惑度。我们的目标是,困惑度越小越好。通过观察上图我们可以看到,Sinusoidal编码,Rotary编码,T5 Bias这三种位置编码,当输入特别长的时候,困惑度就会飙升,但是ALiBi编码会保持一个平稳的水平(即使超过训练的token长度),说明ALiBi编码有很好的长度外推能力。 

2 目前的方法无法有效地进行外推

从技术上讲应该能够外推的正弦位置方法,在实际应用中其实际的外推能力非常有限。尽管旋转位置方法RoPE比正弦方法有所改进,但它仍然没有取得令人满意的结果。T5 bias方法比这两种方法中的任何一种都能带来更好的外推效果,因此我们得出结论,外推能力很大程度上取决于位置嵌入。遗憾的是,T5 bias 在计算上成本很高。 

图2:批处理训练、推理速度和内存使用的比较。ALiBi基本上还是不错的。 

1:Sinusoidal PE 是不用学习的常数向量,

2:Sinusoidal PE直接加到transformer第一层的输入token embeddings上

1:不同于在Transformer底部添加正弦嵌入,RoPE将每个注意力层的键和查询都乘以正弦嵌入

2:与正弦嵌入或学习的位置嵌入方法不同,RoPE每个层都注入位置信息,而不仅仅是初始层

3:RoPE没有向自注意力层(self-attention)的值添加位置信息。自注意力层的输出是一个对输入值向量进行线性变换、加权和的结果;因此,通过不将位置信息插入到值中,每个Transformer层的输出都不包含任何显式位置信息。我们怀疑这种位置信息的隔离可能对外推有益。

1:尽管大多数模型使用训练过的或正弦的位置嵌入,T5模型使用一种相对位置方法,这种方法不向词嵌入添加位置信息(与之前的方法不同)。相反,它修改了注意力值的计算方式。我们将此称为“T5 bias”方法。

2:与旋转方法一样,T5 bias将位置信息注入到每个层的模型中,并没有将任何显式位置信息整合到自注意值向量中
3:T5 bias 确实允许语言模型进行外推。但这种令人印象深刻的性能需要付出代价:训练速度至少是使用正弦模型的两倍

3 ALIBI

1:ALIBI 不会在网络中添加positon embeddings。唯一的修改就是在query-key内积后,添加一个静态的、非学习的bias。 换个说法:ALiBi 直接作用在attention score中,给 attention score 加上一个预设好的偏置矩阵。

2:公式第一项是注意力的分数。第二项是一个相对距离的矩阵。

        例如q_{1}k_{1},他们直接的距离为1-1=0,所以对应的位置是0.

        例如q_{2}k_{1},他们直接的距离为1-2=-1,所以对应的位置是-1.

为什么是一个下三角矩阵,因为我们研究的是,autoregressive language modeling,所以这就是上三角被MASK的原因,我们不关注未来,只关注过去,这个编码只应用在Query和Key中,不会应用到Value中。

 

3:给定的预设矩阵中还会乘上m的调节因子,m的设置与attention的头数有关。论文中也做了尝试把m作为学习参数,但是并没有获得更好的效果。初始数值和间隔相同,计算公式为:\frac{1}{2^{(\frac{8}{n})}}

如果head = 8,m的数值分别为:

m_{1}=\frac{1}{2^{(\frac{8}{8})}}=\frac{1}{2}

m_{2}=\frac{1}{2^{(\frac{8}{8})}}*m_{1}=\frac{1}{2^{2}},

m_{3}=\frac{1}{2^{(\frac{8}{8})}}*m_{2}=\frac{1}{2^{3}},

m_{4}=\frac{1}{2^{(\frac{8}{8})}}*m_{3}=\frac{1}{2^{4}},

...

m_{8}=\frac{1}{2^{(\frac{8}{8})}}*m_{7}=\frac{1}{2^{8}}

如果head = 16,m的数值分别为:

m_{1}=\frac{1}{2^{(\frac{8}{16})}}=\frac{1}{2^{0.5}}

m_{2}=\frac{1}{2^{(\frac{8}{16})}}*m_{1}=\frac{1}{2^{1}},

m_{3}=\frac{1}{2^{(\frac{8}{16})}}*m_{2}=\frac{1}{2^{1.5}},

m_{4}=\frac{1}{2^{(\frac{8}{16})}}*m_{3}=\frac{1}{2^{2}},

...

m_{16}=\frac{1}{2^{(\frac{8}{16})}}*m_{15}=\frac{1}{2^{8}}

我们观察到:这组斜率在各种文本领域和模型大小上都有效。在新数据集上训练新模型时不需要调整这些斜率值。这使得我们的方法与正弦方法相似,正弦方法中的超参数一次性设置的,然后在不同大小的不同数据集上的不同模型中重复使用。ALiBi具有对新颖性的归纳偏差;它会惩罚查询-键对之间的注意力分数,随着键与查询之间的距离增长,惩罚会增加。不同的头会以不同的速率增加他们的惩罚,这取决于斜率的幅度。

我们最初尝试让斜率可训练,但并没有得到很好的外推结果。大约十个斜率集的简短手动探索让我们发现了最终选择的斜率集。

ALiBi是一种相对位置方法,我们在每个层的键和查询中添加位置信息,但不在值中添加,这与T5偏差和旋转方法中的做法不同。

代码实现(研究明白了再补)

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

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

相关文章

HTML+JavaScript-01

说明 之前有一篇JavaWeb-JavaScript中只是简单介绍了一点JavaScript的内容,这篇笔记算是续写的,但是从01开始编号。 引入js文件 html、css、js俗称前端三剑客,一般都是分开写,先写框架、再写css、最后写js。因此在工程量大的情…

设计模式——装饰者模式

更多内容,前往 IT-BLOG 现实生活中常常需要给某类产品动态增加新的功能,如:给面条各种调味品。在软件开发过程中,有时想用一些现存的组件。这些组件可能只是完成一些核心功能。但在不改变其架构的情况下,可以动态地扩展…

《WebKit 技术内幕》之五(1): HTML解释器和DOM 模型

第五章 HTML 解释器和 DOM 模型 1.DOM 模型 1.1 DOM标准 DOM (Document Object Model)的全称是文档对象模型,它可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。这里的文档可以是 HTML 文档、XML 文档或者 XHTML 文档。D…

【数学建模】图论模型

文章目录 图的基础理论及networkx简介图的基本概念图的表示及Networkx简介图的表示NetworkX简介 最短路算法及其Python实现固定起点到其余各点的最短路算法每对顶点间的最短路算法最短路应用 最小生成树算法及其networkx实现基本概念最小生成树算法最小生成树应用 匹配问题最大…

Qt5.15.2中加入图片资源

系列文章目录 文章目录 系列文章目录前言一、加入图片资源二、代码 前言 以前用的Qt5.15.2之前的版本,QtCreator默认的工程文件是*.pro,现在用5.15.2创建工程默认的工程文件是CMameList.txt,当然在创建项目时,仍然可以使用pro工程文件用QtCr…

13.浮动面板(PaletteSet)

愿你出走半生,归来仍是少年! 环境:.NET FrameWork4.5、ObjectArx 2016 64bit、Entity Framework 6. 在CAD中进行通用组件开发或常驻界面的控件开发时,可使用PaletteSet作为停靠面板,然后将自己的空间放入其中。 1.示例 SearchRe…

web terminal - 如何在mac os上运行gotty

gotty可以让你使用web terminal的方式与环境进行交互,实现终端效果 假设你已经配置好了go环境,首先使用go get github.com/yudai/gotty命令获取可执行文件,默认会安装在$GOPATH/bin这个目录下,注意如果你的go版本比较高&#xff…

小程序系列--10.小程序WXS 脚本

一、概述 1. 什么是 wxs? WXS(WeiXin Script)是小程序独有的一套脚本语言,结合 WXML,可以构建出页面的结构。 2. wxs 的应用场景 wxml 中无法调用在页面的 .js 中定义的函数,但是,wxml 中可…

Ceph应用

目录 1.资源池Pool管理 创建一个Pool资源池 查看集群Pool信息 查看资源池副本的数量 查看PG和PGP数量 修改pg_num和pgp_num的数量 修改Pool副本数量 删除Pool资源池 2.创建CephFS文件系统MDS接口 服务端操作(192.168.88.22) 1.在管理节点创建 mds 服务 2.查看各个节…

JUC并发编程知识点总结

JMM Java内存模型规定所有的变量都存储在主内存中,包括实例变量,静态变量,但是不包括局部变量和方法参数。每个线程都有自己的工作内存,线程的工作内存保存了该线程用到的变量和主内存的副本拷贝,线程对变量的操作都在…

智篆商业土豆老师:引领电商运营新潮流

智篆商业的土豆老师不仅是电商运营的专家,更是引领电商运营新潮流的先锋。他时刻关注电商行业的发展动态,深入研究新兴技术和市场趋势,不断探索电商运营的新模式和新思路。 土豆老师认为,未来的电商运营将更加注重个性化和精细化…

初始RabbitMQ(入门篇)

消息队列(MQ) 本质上就是一个队列,一个先进先出的队列,队列中存放的内容是message(消息),是一种跨进程的通信机制,用于上下游传递消息, 为什么使用MQ: 削峰填谷: MQ可以很好的做一个缓冲机制,例如在一个系统中有A和B两个应用,A是接收用户的请求的,然后A调用B进行处理. 这时…

微信中这些黑科技不知道,白用微信这么多年,速来学,春节假期很有用,第1季:【#】字诀。

微信中这些黑科技不知道,白用微信这么多年,速来学,春节假期很有用,第1季:【#】字诀。 大家好!我是老码农。 今天分享的主题:微信中的黑科技。微信这款软件不用过多介绍,聊天、看朋…

机器人电机综述 — 电机分类、舵机、步进与伺服、物理性质和伺服控制系统

电机综述 图片与部分素材来自知乎大佬不看后悔!最全的电机分类,看这一篇就够了! - 知乎 (zhihu.com),本文只是把机器人中常用的电机知识提炼了一下 1 按照结构和工作原理划分 1. 同步电机 ​ 电机的转速与定子磁场的转速相同步…

springboot113健身房管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的健身房管理系统 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取…

stm32 FOC 电机介绍

今年开始学习foc控制无刷电机,这几天把所学整理一下,记录一下知识内容。 前言: 为什么要学习FOC? 1.电机控制是自动化控制领域重要一环。 2.目前直流无刷电机应用越来越广泛,如无人机、机械臂、云台、仿生机器人等等。 需要什么基础&…

设计模式-资源库模式

设计模式专栏 模式介绍模式特点应用场景资源库模式与关系型数据库的区别代码示例Java实现资源库模式Python实现资源库模式 资源库模式在spring中的应用 模式介绍 资源库模式是一种架构模式,介于领域层与数据映射层(数据访问层)之间。它的存在…

Ansible常用模块

目录 实验前准备Ansible部署安装ansible配置主机清单配置密钥对验证 常用模块commond模块shell模块cron模块user模块group模块copy模块file模块ping模块yum模块service/systemd模块script模块setup模块 遇到的问题sshpass卡住 实验前准备 Ansible管理机:192.168.18…

【新书推荐】Web3.0应用开发实战(从Web 2.0到Web 3.0)

第一部分 Flask简介 第1章 安装 1.1 创建应用目录 1.2 虚拟环境 1.2.1 创建虚拟环境 1.2.2 使用虚拟环境 1.3 使用pip安装Python包 1.4 使用pipregs输出包 1.5 使用requirements.txt 1.6 使用pipenv管理包 第2章 应用的基本结构 2.1 网页显示过程 2.2 初始化 2.3 路由和视图函数…

Jmeter的文件参数化:CSV数据文件设置和_CSVRead函数

一、CSV数据文件设置 1、简介 CSV数据文件配置(CSV Data Set Config)可以将CSV文件中数据读入自定义变量中 Jmeter中CSV数据文件配置的界面如下图所示: 其中: (1)文件编码 文件的编码格式,与所…