深度学习中Mask的基本原理

31 篇文章 17 订阅
11 篇文章 0 订阅

Mask的主要目的:排除在padding后对后续处理带来的影响!

mask是伴随这padding出现的,因为神经网络的输入需要一个规整的张量,而文本通常都是不定长的,这样一来就需要裁剪或者填充的方式来使得它们变成定长,按照常规习惯,我们会使用0作为padding符号。

这里用简单的向量来描述padding的原理。假设有一个长度为5的向量:

x=[1,0,3,4,5]x=[1,0,3,4,5]

经过padding变成长度为8:

x=[1,0,3,4,5,0,0,0]x=[1,0,3,4,5,0,0,0]

当你将这个长度为8的向量输入到模型中时,模型并不知道你这个向量究竟是“长度为8的向量”还是“长度为5的向量,填充了3个无意义的0”。为了表示出哪些是有意义的,哪些是padding的,我们还需要一个mask向量(矩阵):

m=[1,1,1,1,1,0,0,0]m=[1,1,1,1,1,0,0,0]

这是一个0/1向量(矩阵),用1表示有意义的部分,用0表示无意义的padding部分。

所谓mask,就是xx和mm的运算,来排除padding带来的效应。比如我们要求xx的均值,本来期望的结果是:

avg(x)=1+0+3+4+55=2.6avg(x)=1+0+3+4+55=2.6

但是由于向量已经经过padding,直接算的话就得到:

1+0+3+4+5+0+0+08=1.6251+0+3+4+5+0+0+08=1.625

会带来偏差。更严重的是,对于同一个输入,每次padding的零的数目可能是不固定的,因此同一个样本每次可能得到不同的均值,这是很不合理的。有了mask向量mm之后,我们可以重写求均值的运算:

avg(x)=sum(x⊗m)sum(m)avg(x)=sum(x⊗m)sum(m)

这里的⊗⊗是逐位对应相乘的意思。这样一来,分子只对非padding部分求和,分母则是对非padding部分计数,不管你padding多少个零,最终算出来的结果都是一样的。

如果要求xx的最大值呢?我们有max([1,0,3,4,5])=max([1,0,3,4,5,0,0,0])=5max([1,0,3,4,5])=max([1,0,3,4,5,0,0,0])=5,似乎不用排除padding效应了?在这个例子中是这样,但还有可能是:

x=[−1,−2,−3,−4,−5]x=[−1,−2,−3,−4,−5]

经过padding后变成了

x=[−1,−2,−3,−4,−5,0,0,0]x=[−1,−2,−3,−4,−5,0,0,0]

如果直接对padding后的xx求maxmax,那么得到的是0,而0不在原来的范围内。这时候解决的方法是:让padding部分足够小,以至于maxmax(几乎)不能取到padding部分,比如

max(x)=max(x−(1−m)×1010)max(x)=max(x−(1−m)×1010)

正常来说,神经网络的输入输出的数量级不会很大,所以经过x−(1−m)×1010x−(1−m)×1010后,padding部分在−1010−1010这个数量级中上,可以保证取maxmax的话不会取到padding部分了。

处理softmax的padding也是如此。在Attention或者指针网络时,我们就有可能遇到对变长的向量做softmax,如果直接对padding后的向量做softmax,那么padding部分也会平摊一部分概率,导致实际有意义的部分概率之和都不等于1了。解决办法跟maxmax时一样,让padding部分足够小足够小,使得exex足够接近于0,以至于可以忽略:

sofmax(x)=softmax(x−(1−m)×1010)sofmax(x)=softmax(x−(1−m)×1010)

上面几个算子的mask处理算是比较特殊的,其余运算的mask处理(除了双向RNN),基本上只需要输出

x⊗mx⊗m

就行了,也就是让padding部分保持为0。

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值