循环神经网络在神经机器翻译中的应用
1. 波束搜索算法
在语言模型中,设 $y$ 为一个单词序列,$P(y)$ 为该序列出现的概率。我们使用波束搜索(Beam Search)来探索时间 $t$ 时序列的多个假设 $H_{t - 1}$,波束大小为 $k$。
波束搜索的公式为:
$H_t := \left{\left(w_1^1, \ldots, w_1^t\right), \ldots, \left(w_k^1, \ldots, w_k^t\right)\right}$
例如,$H_3 := {(cup\ of\ tea), (cup\ of\ coffee)}$
波束搜索会跟踪前 $k$ 个假设,并选择使 $P(y)$ 最大的路径。我们将每个假设的概率 $P(h_t)$ 收集在 $P_t$ 中,$H_t$ 和 $P_t$ 的索引顺序应保持一致,以便在排序时保持顺序。每个假设以 <SOS> 标记开始,当到达 <EOS> 标记时结束,得分最高的假设将被选中。
波束搜索算法如下:
# 算法 1: 波束搜索
# 数据: y_hat, beamWidth
# 结果: 具有最高 p(y) 的 y
begin
H0 = {(< SOS >)}
P0 = {0}
for t in 1 to T do
for h in Ht−1 do
for y_hat ∈ Y do
y_hat =
超级会员免费看
订阅专栏 解锁全文


被折叠的 条评论
为什么被折叠?



