只需一个小线性层,拿回你ALBERT丢掉的精度 |
您所在的位置:网站首页 › speech模版 › 只需一个小线性层,拿回你ALBERT丢掉的精度 |
1. 从transformer到BERT的block reusing [2303.13072] Beyond Universal Transformer: block reusing with adaptor in Transformer for automatic speech recognit (arxiv.org) (注:本文引用图片来自非成稿, 可能略有差别) 嘿嘿嘿,不好意思,先吹了一波,来介绍一下我们前年之江杯 非确定场景语音识别比赛第二名的后续改进方案。 2021之江杯首先是我们在之江杯上直接把ALBERT的block reuse(BR)实现在了ASR的transformer里面,得到的效果如下: (block reuse, 将之前M个block改成1个block调用M次) 可以看到的是在, BR以后,模型的性能大约下降了~30%,但是对于的模型参数量下降了~66.7%, 同时加上grad clip和 8head以后,性能大约只下降了~10%,同时大小与BR相似。在这个比赛之后,我们赚了一笔钱(不是),这个方向就暂时停止了。 二。 BR重新出发而后在2022年,我一次偶然读到了 @苏剑林 大佬的文章:P-tuning:自动构建模版,释放语言模型潜能 - 科学空间|Scientific Spaces 中提到了很小的一个点: BERT出来后不久,Google在论文《Parameter-Efficient Transfer Learning for NLP》中提出了一种名为Adapter的微调方式,它并不是直接微调整个模型,而是固定住BERT原始权重,然后在BERT的基础上添加一些残差模块,只优化这些残差模块,由于残差模块的参数更少,因此微调成本更低。于是我重新找到了方向,重新在BR上引入adptor来修正BR。 首先是基于BR, 我们给每一次的reusing后面加入了一个独立的adptor,用残差linear+relu实现,即 f(x) = x + ReLu(Linear(x)) 。 这样也会少量的引入参数量。同时我们在encoder和decoder都同时还是实验这个idea,得到的效果如下: AISHELL由于本人非常贫穷,就只能在AISHELL上做实验。表格里面BRA-E/D/ED分别代表encoder中插入adaptor, decoder中插入adaptor,以及两个都插入adaptor。 同时我们还尝试把encoder单一block的reusing次数 S_{1} 加到12->18次。 注:阿里达摩院也曾经在asr 类transformer上引入ALBERT的block reuse idea,为[17]: Extremely Low Footprint End-to-End ASR System for Smart Device,我们的模型要远好于[17],且WER类似。 首先比较确定的是,adpator在encoder/decoder里面能带来一定的效果修正,而且在encoder里面是远高于decoder的。 第二是说,S_{1}增加发现并没有实质上的效果,以及grad clip也失去了效果,很可能和数据信噪比相关。 三。 BR到底做错了什么?现在到了全文的重点, BR到底做错了什么才让的WER上升。 我们首先一个假设我们有个M个block, 每一个block的函数可以被写成 f_{i} = \sum_{n=0}^{\infty}a_nx^n , 那么此时引入一个公共函数 f_{0} 去表征所有的 f_{i}并入优化,实际上失去寻找这个函数组的最大公共部分。一般来说, 在 f_{i} 中, a_{0} 和 a_{1} 为最大,也就是说,优化出来的公共函数很可能是个线性函数。那么基于这个假设,实际上BR退化的原因就是,公共函数失去了非线性, 那就通过一个小adptor补充回来,把公式重写为 f_{i} = f_{0} + f'_{i} ,即为函数i由公共函数和特优化 adptor组成。那现在开始引入一个线性化变化指标linear centered kernel alignment (CKA)。 CKA表征的是,存在两个向量 x_{1}, x_{2} , CKA(x_{1}, x_{2}) 值越贴近1越说明这两个表征趋于一个线性变化,反之越贴近一个非线性变换。 CKA开始对模型进行横向和纵向两个维度的分析。 3.1 横向比对分析baseline 和其他模型对比横向比较:首先是比对baseline和各个模型在各个层级上的比较,我们希望的是,各个改进模型都尽可能的和baseline相似,这样既可以减少参数量,又可以提升效果。 可以清楚的发现 首先是BR模型,在encoder/decoder上都表现出各个层都与baseline相差过大。相同的是BRA-E和BRA-D分别在没有adaptor的Decoder和encoder上都表现除了这个问题。同时其在存在adptor的encoder和decoder上,adaptor又表现出了一定的修正性,例如比对(a)中baseline-BRA-E | after adaptor和baseline-BRA-E或者(b)中baseline-BRA-D | after adaptor和baseline-BRA-D。但是值得注意的是BRA-ED这个模型应该同时在(a)(b)同时存在修正性,但是其却只表现出了encoder的修正性。这也是为什么在AISHELL中BRA-E -> BRA-ED, 并没有更好的改进的原因。3.2 纵向比对分析接受我们对每一个层输入输出进行CKA的分析, 我们还是说希望在每一个层都能看到非线性度,也就是说我们希望CKA值对于每个层来说,都原理1. 纵向分析首先来看baseline的纵向分析, 首先是会发现baseline的encoder/decoder都只有前几层有很良好的非线性度,后几层几乎就是全线性变化, 而BR模型的非线性度几乎是贴着baseline走的,但是每一个点都更差。而BRA模型的公共函数几乎表现出来就是个纯纯线性函数。依然可以看到BRA-E, BRA-D在他们各自的encoder, decoder的前几层上, adapotr表现出了一定的非线性度修正。但是BRA-ED BRA-D也证明了adaptor存在decoder的时候,非线性度在层到层表现成一个震荡曲线,这可能也是decoder adaptor效果不如encoder的原因。四 后续如果本人还有钱有闲的情况下,可能有如下改进: REUSING本身不会引入多余的FLOPS,但是也不会减少,但是adaptor会。 后期会做层级融合 消弭掉这些多的FLOPSreusing会引入更低memory消耗,并可以调高batch-size,两者共同作用都可以提速, 测一下提速效果。已经在分析中证明了 其实不是每一个层都需要adaptor,可以做一个adaptor插入性策略。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |