NLP评估指标里,上下文补全是非常重要的一项。比如:
问: “它坐在什么上面?”
答: “椅子上面。”
上下文补全:模型通过 上下文信息推断出 动词 (坐在) 和 主语 (它) 被省略,并在 上下文嵌入中表示出来。能否准确的进行上下文补全,是NLP系统的指标之一。
现代NLP采用大规模无监督训练,不再有明确的上下文补全步骤,它在模型训练中已经隐含这一项功能。在别的领域有时候把这种结构称之为端到端的模型。大部分时候这种做法效果很好,但是当它表现不佳的时候,也很难纠错处理。
在NLP里,无监督学习的依存解析 (Unsupervised Dependency Parsing) 依赖于 分布式表示 和 上下文嵌入(Contextual Embeddings) 来隐式学习词与词之间的依存关系。上下文嵌入是指根据上下文 动态生成 词向量,这使得 同一个词 在不同上下文中 会有 不同的语义表示。通过 双向 Transformer的 自注意力机制,模型可以同时 关注前后文,并 隐含地补全省略的信息。
这种隐含补全通过上下文的统计共现模式和 深度神经网络 的 非线性映射实现。在大量语料中,“椅子” 多次与 “坐” 和 “上面” 共同出现,模型通过统计共现 隐含学习到“椅子” 是 “坐” 的 介词宾语 (Prepositional Object)。BERT 会通过 多层自注意力 (Multi-Layer Self-Attention) 将 “椅子” 与 隐含的动词 “坐” 建立 语义一致性联系。
在 无监督依存解析中,上下文补全涉及 跨句推理时,逻辑上未必合理,错误率较高。这是因为上下文嵌入的 共现统计并不等同于 逻辑推理。举个例子:
上下文: “猫跳上桌子。它坐在上面。”
模型推断: “它” 被指代为 “猫”,逻辑合理。
共现概率可以在很大程度上得到和逻辑推理得到同样的结果,但是这个结果总是有一个并非为1的“概率”,再被选出其最大值,而不是严格的形式逻辑所能取得的“毫无疑义的确定性”。
上下文: “杯子掉在地上。它坐在上面。”
这时候”它” 被指代为 “杯子” 或 “地上”都不合理,应该指代更早的句子中省略的主体,但是模型往往优先寻找附近的实体,即使并不符合逻辑。
上下文补全中的逻辑错误 是无监督依存解析的主要难点和研究热点,解决这一问题将大幅提高 语义理解和逻辑推理的准确性和一致性。
如果我们希望模型掌握这种逻辑判断力的话,我们需要它能够进行跨句推理,甚至跨段落推理。这涉及长距离的指代消解 (Coreference Resolution) 和语义一致性 (Semantic Coherence)。现在的各种改进,集中在扩大上下文窗口,分段注意力,稀疏注意力,线性注意力。什么时候,才能够产生明确的逻辑推理呢?

发表评论