Empirical Analysis of Beam Search Performance Degradation in Neural Sequence Models

Empirical Analysis of Beam Search Performance Degradation in Neural Sequence Modelshtml

 2019-06-13 10:28:44算法

 

Paper: [abs] [Download PDF][Supplementary PDF] Eldan Cohen, Christopher Beck ; PMLR 97:1290-1299性能

 

1. Background and Motivationspa

Beam search 是一种经常使用在时序任务中解码算法,如:NLP 中的语言翻译,Image Captioning 等。不一样于通常的贪婪搜索策略,该算法会始终维持相同的搜索宽度,最终会输出该宽度的多个搜索结果。就是由于这种自然的优点,该算法被普遍的应用于各类时序任务中。可是,大量的研究代表,beam search 存在以下的不足:“随着 width” 的增长,最终的效果也会不断下降,即:增长 width,不能提高效果,该算法只能在特定的较小的 width 条件下,才会 work 的很好。翻译

 

针对上述问题,做者在本文中在多个任务上进行了大量的实验,来研究这个问题:machine translation,abstract summarization, and image captioning。做者在这些实验的基础上,提出了一种可解释的模型,该模型基于 search discrepancies(搜索差别性) 的概念,而后基于该差别性的分布进行了经验性的研究。主要贡献以下:3d

1). 本文代表增长 beam width 将会致使 solution 在早期有较大的不一致性 (discrepancies);这些序列一般会有较低的评价得分,从而致使最终的性能衰减。orm

2). 本文所提出的 explanatory model generalizes the previouly observed "copies" and predictions that repeat training set targets and accounts for more of the degraded predictions. htm

3).  本文代表对 beam search 进行修改,使其不考虑 large search discrepancies 能够有效的缓解性能衰减。blog

 

 

2. Neural Sequence Modelstoken

 

在神经序列模型中,经过充分的搜索以求得一个全局最优序列几乎是不可能的。贪心算法会在每个时刻,选择一个最优的候选,使得序列局部最优,可是可能最终获得的仅仅是一个局部次优的序列。Beam search 将每个时刻的可能序列宽度拓展为 B,这个 B 称为 beam width。正式的来讲,beam search candidate 经过以下的方式进行更新:

 

本文将 search discrepancy 定义为:extending a partial sequence with a token that is not the most probable one. 正式的来讲,一个序列 y 在时刻 t 有一个 search discrepancy,若是其知足以下的条件:

咱们将最可能的 token 和 选择的 token 的差别性,取 log,记为:

为了说明该 discrepancy gap 是如何计算的,咱们给出了上图1。具备最高条件几率候选的 discrepancy gap 为 0,其余候选之间的 gap 就是其 log 几率的距离。

 

 

 

3. Discrepancy-Constrained Beam Search

本文评价了两种相似 trick 的方法来约束 beam search,都是考虑到较大的搜索差别。

Discrepancy Gap

给定阈值 M,咱们修改 beam search 来仅仅考虑搜索差别小于等于 M 的候选。正式的来讲,咱们修改公式 1,使其包含这一约束:

 

 

Beam Candidate Rank

给定阈值 N,咱们修改 $y_t$ 使其在每个 beam 中仅仅包含 top N one-token extensions。注意到,beam search 仍然保持 top B candidates,然而在每个 beam 中,其不会考虑超过 N 的候选。

 

 

4. Experiments

做者的实验代表,当考虑到做者提到的不一致性约束时,在增长 beam width 的时候,就不存在精度降低的问题了。可是这个表格貌似也反映了,beam width 设置的太大,有些状况下,并不会明显提高精度,反而有可能下降。到底该不应设置较大的 beam width,仍是应该调调参数,试试才知道哇。

 

 

==

相关文章
相关标签/搜索