定义
mask矩阵是一个由0和1组成的矩阵。在NLP中,一个常见的问题是输入序列长度不等,而mask可以帮助我们处理。虽然RNN等模型可以处理不定长的输入,但是在实践中,需要对输入中长度较短的句子进行填充,即在句尾填充0占位,转换成固定大小的tensor,方便矩阵操作。
举个例子:
|
|
假设默认的序列长度是5,一般会对case 1做pad处理,变成
|
|
在上述例子数字编码后,开始做embedding,而pad也会有embedding向量,但pad本身没有实际意义,参与训练可能还是有害的。因此,有必要维护一个mask tensor来记录哪些是真实的value,上述例子的两个mask如下:
|
|
后续再梯度传播中,mask起到了过滤的作用。
使用TensorFlow实现上述过程:
|
|
运行结果:
|
|