Transformer的mask id两三事

有一段时间笔者利用Transformer实现一个功能,输入有三种模态,分别是A , B , C A,B,CA,B,C,其中预训练过程中需要对A AA或者B BB进行动态地掩膜,这个过程中,笔者想到通过mask id进行实现。我们从之前的博文[1]中知道,自注意力机制的计算公式可表示为(1)所示

其中的是注意力掩膜(mask id),其作用用于屏蔽[PAD]字符的影响,具体细节可见博文[1]。如果把mask id也考虑进来,那么如Fig 1所示,一共有四种类型的id。

Fig 1. Transformer的输入通常由Token id,Segment id和Position id,mask id组成。笔者当时的推导是,如果将指定模态输入的mask id置为0,比如B模态的,那么Transformer计算过程中就应该会不考虑这一段的输入了吧。推导过程很简单,在m = 0 的时候,,那么如式子(1)所示,的计算的值就会非常接近于− 10000 ,因此输出接近为0,因此该部分就不会被计算到。笔者在实验中也进行了实验验证,做法是这样的:固定预训练模型参数,将模型设置为eval模式,固定A和C模态输入,并且输入不同的B,发现最后的运算输出没有差别。

Reference

[1]. https://fesian.blog.csdn.net/article/details/116137177

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 1
收藏 2
关注 49
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧