美文网首页
使用框嵌入(box embedding)进行细粒度实体类型识别

使用框嵌入(box embedding)进行细粒度实体类型识别

作者: 烛之文 | 来源:发表于2021-12-06 18:29 被阅读0次

    1、研究出发点

    本次分享一篇有关embedding的文章,来自2021年ACL的paper《Modeling Fine-Grained Entity Types with Box Embeddings》,其核心是提出了一种box embedding的方法来进行实体类型(entity type)识别。研究的动机可以从下面图来说明:

    即主流的方法都是采用vector-based的方法,将mention及其所在的文本和所有类别标签表征成向量,然后采用multi-label classification的方法逐个判断是否属于某个实体类型。这类方法会存在一个缺陷就是:表征出来的向量虽然可以用相似性去判断,但区别不了层次性信息,如很难判断"Person","Author","Politican"这三个标签是谁父类,谁是子类,或者二者是否有交叉的关系。基于该问题,论文提出box embedding的表征方法,把任务对象都用超矩形(hyperrectangle)来表征,这样可以用矩形是否包含,是否重叠来识别其归属和层级性关系。

    在这里,也许有人会有疑问:在很多该任务场景下,实体类型集合的层级信息(树状结构)都是事先可以知道的,不用去学习。所以,这里要说明下,论文的box embedding是应用在事先不知道label的层级信息的场景,希望用其去学习实体类型集合潜在的层级信息

    此外,box embedding还有特性就是:可以用矩形(盒子)的体积来衡量一个mention是否属于某个type的概率

    2、Box Embedding 介绍

    2.1 关于box embedding定义

    一个box x 可以用两个点来表示 (x_m,x_M) ,两个点分别为矩形最小角和最大角,即满足 x_{m,i} \leq x_{M,i} ,其中 i \in \{1,2,...,d \} ,代表坐标维度。关于一个box x 的体积可以这样计算:
    Vol(x)=\prod_{i}^{}(x_{M,i} - x_{m,i}) \qquad (1) \\
    文中将盒子空间的体积归一化为1,将每个盒子的体积解释为一个mention在给定实体类型的边际概率。此外,对于两个盒子x,y ,将其重叠的体积定义为:
    Vol(x \cap y)=\prod_{i}^{}max(min(x_{M,i}-y_{M,i})-max(x_{m,i}-y_{m,i}),0) \qquad (2) \\
    x 视为mention的box embedding,y 视为type的box embedding,则可以将识别任务转换成条件概率
    P(y|x)=\frac{Vol(x,y)}{Vol(x)} 。

    2.2 基于box embedding的Multi-label Type Classifier

    有了box embedding定义,接着介绍基于此如何做mention type classification。首先说下输入和输出形式:
    input:(s,m) and output: \{t^0,t^1,... \} \in T , 其中 m 为输入mention, s 为mention所在的文本,t 为type label,T 为所有type label集合。

    假设输入的(s,m)元组得到对应box embedding 为 x ,所有type label得到对应的box embedding 为
    \{y^0,y^1,...\} ,则 预测m 是否属于type labelt^k 可表示为条件概率:
    p_\theta(t^k|s,m)=\frac{Vol(z^k)}{Vol(x)}=\frac{Vol(x \cap y^k)}{Vol(x)} \qquad (3) \\

    这样就把识别任务转化多标签识别任务,当 p_\theta >0.5 时,就认为属于该类型标签。其思路如下图。

    2.3 如何计算条件概率

    基于前面的介绍,识别任务变成如何计算公式(3),即定义的条件概率。再考虑该问题时,需要分几步来实现。

    首先,如何得到box embedding x,y

    关于box embedding y^k ,论文采用初始化的方式,先定义一个中心向量 c_y^ko_y^k ,则box y^k的最小角和最大角可按下列计算:
    y_m^k=\sigma(c_y^k-softplus(o_y^k)) \\ \qquad y_M^k=\sigma(c_y^k+softplus(o_y^k)) \qquad (4)

    激活函数softplus是为max函数的平滑表示,有利于反向传播计算。为何按上述定义来计算两个角的坐标?这里我理解的是:若按二维,c为矩阵的对角线中心点,o可认为是半径,两个角刚好为+-的关系,而softplus保证计算的是最长对角线,还可以保证结果不为0,\sigma 让向量都取值范围限定在[0,1]范围,这样保证计算的体积<=1并>0。

    关于 box embedding x,论文利用BERT进行编码,输入形式为:x = [CLS] m [SEP] s [SEP],得到表征向量H^{[cls]} ,接着进行一层映射得到向量 \hat{H} \in \mathbb{R}^{2d} ,再将其拆分成中心向量c_x和偏移向量o_x ,这样 box x(x_m,x_M) 的向量就可以按公式(4)来计算出来。

    有了对应的box embedding ,现在就剩计算公式(3)中分子与分母项。其实按公式(1)(2)可以计算出分子与分母的结果。但文中作者指出原始的计算方式(按max,min)会导致数据过于稀疏,不利于反向传播学习。为此,论文采用Gumbel distributions来计算box的最小角与最大角坐标,视为一种soft box计算方式,并由此来重新计算box的体积,其定义为:
    Vol(x)\approx\prod_{i}^{}softplus(\frac{x_{M,i}-x_{m,i}}{\beta}-2\gamma) \qquad (5) \\
    其中\beta 为学习的变量, \gamma 为欧拉常数,取值为0.5772。此外,将两个盒子 x,y ,将其重叠的体积z^k 重新定义为
    z_m^k=\beta ln(e^{\frac{x_m}{\beta}}+e^\frac{y_m^k}{\beta}) \\ z_M^k=-\beta ln(e^{-\frac{x_M}{\beta}}+e^\frac{-y_M^k}{\beta}) \qquad (6)

    这样,公式(3)的分母与分子计算方式就可以按公式(5),(6)的方式来计算,整体计算逻辑也就如上。若想搞清公式(5),(6)的计算原理,需要进一步查阅Gumbel distributions,这里我就“囫囵吞枣”了。

    2.4 关于损失函数

    关于训练的损失函数就是正常的binary cross-entropy,如下所示。

    3、实验部分

    文中选了4个mention type classification的分类的数据集: UltraFine Entity Typing (UFET), OntoNotes, FIGER, and BBN。

    下图是显示在UFET数据集上实验结果:

    下图为在其他三个数据上的结果:

    下图为展示“person”“actor”在box embedding可视化效果。可以看出在不少维度上,"person"是包含"actor"的,但并不是所有。说明box embedding在学习潜在层级关系信息上是有效的,但还没达到绝对理想的地步。

    4、结尾

    本次分享box embedding的缘由是觉得该方法在学习潜在的层级信息上有借鉴或启发的意义,尽管实验结果展示其有效,但并不是惊艳,但觉得该框架下仍有继续优化的空间。个人觉得有两点,(1)关于box的定义就用最小角和最大角来表示,感觉过于简化;(2)在体积和重叠体积计算上,也可尝试新的计算方式。此外,在其他任务场景,像multi-label classification也可以尝试下该方法。

    更多文章可关注笔者公众号:自然语言处理算法与实践

    相关文章

      网友评论

          本文标题:使用框嵌入(box embedding)进行细粒度实体类型识别

          本文链接:https://www.haomeiwen.com/subject/teknxrtx.html