一.
1. beam search
每个方框代表一个beam,每个beam内包含beam_size个hypothesis。
2. grid beam search
beam的传播空间变成二维:横向表示generate(模型生成hypothesis)或continue(继续增加约束词),斜向表示start(开始增加约束词)。
二.
算法包含三层循环:1.时间步t. 2.约束词数c. 3.当前beam内的hypothesis.
三. hypothesis评分
- 不同约束数目的beam之间不能一起比较。 比如有一个约束的beam 和没有约束的beam相比, 由于约束的存在, 有约束的beam内的候选概率会减小, 如果一起比较, 有约束的beam里的候选的概率一般较小, 一起比较会被没有约束的beam的候选筛掉.
- 不同时刻beam之间不能一起比较,。时刻越长的beam概率也会越小
四. 存疑
约束词的顺序怎么确定?(根据源语言的顺序确定么?)
参考博客:
https://blog.csdn.net/feifei3211/article/details/103469243
https://zhuanlan.zhihu.com/p/97008051
https://blog.csdn.net/Mr_tyting/article/details/107301953