刚才的操作可以把非叶子节点表示出来,但在计算的过程中,所有的后代都是被平等对待的,没有附加权重。
有一句话不是很理解:
暂且记下;
所以接下来我们将在模型里引入权重来反映子树的结构,引入层次嵌入的方法生成向量S。层次嵌入的效率将在后面的文章被实验证明。
层次嵌入的图示如下:
让我们先来翻译一下图示下的文字,每一个模块中是一个嵌入向量。其中含有一些未知变量,那么来看看文章是怎么具体解释的。
L,N,R都是遵循上文的解释。
Vij的通俗解释是某叶子节点j到某根节点i路上的所有非叶子节点的集合。
Hij的通俗解释是以i为根的子树最左侧的叶子节点到j叶子节点的集合。
分别是的行向量。论文里把Ev,Eh分别称为垂直的和平行的矩阵,我猜测是因为Vij表示的是自叶节点向根走的方向,Hij表示的是水平的叶子集合。表示向量的拼接。垂直的嵌入代表了某结点到某叶子节点的长度,表示一个分支中的层次次序(这里不太理解层次次序是什么)。垂直的嵌入表示的是和同分支兄弟的关系。
这样的嵌入在注意力头中使用,仅占整个参数的0.1%(这里也不是很理解)
遮掩注意力机制经常在过滤无关标志时用到。
我猜测aij应该是这个矩阵的元素。在自注意力机制中,遮掩的规则是
这样的规则来自于句子的线性结构,位置在当前词之后的词的信息被遮掩。而在树结构中,则是将当前子树以外的信息遮掩,则其祖先和兄弟都无法影响当前的计算。将原值减去无穷,在softmax的时候就可以将其权重归零。
感觉有些地方读不懂是因为自己还是不懂transformer和attention,虽然找了很多资料感觉也是大同小异,始终学不到精髓,毕竟我也不是学人工智能的,自学起来真的好吃力啊啊啊啊