T do // Decode with cache 7: Bt ← construct beam from Bt−1 8: At = truncate(A, t) 9: Bt.add(de-abstract(At)) 10: for z ∈ BT do //Update cache 11: Update rewards in C[x] using (z, R(z, y)) 12: return BT ∪ de-abstract(A).
in CNLVR, y is binary, and so spuriousness is a central problem.