0
点赞
收藏
分享

微信扫一扫

束搜索 Beam search #yyds干货盘点#

这篇文章是我的笔记分享,内容主要来自吴恩达老师的深度学习课程。^[AI中国官网-全球领先的线上AI教育、实践平台 (deeplearningai.net)]

接着上一节的说。

之前我们提到在Sequence to sequence模型中选择最有可能性的输出的时候,不能使用贪心算法。

我们还说过学过算法的都知道,贪心算法可以较快的得到结果,但是它的结果可能并不是全局最好的;穷举算法可以达到最好的结果,但是它的计算量往往过于巨大。在这个基础上我们可以使用一种折中的算法,就是启发式的搜索算法——束搜索(Beam Search)。

step 1

第一步我们是要计算:
$$
P\left(y^{<1>} \mid x\right)
$$
image.png
和贪心算法不太一样的地方在于贪心算法需要找到一个最优值,束搜索需要设置一个搜索宽度$B$,在这里我们设置$B=3$。之后就会选择出三个最有可能的词语作为候选。然后进入第二步。

image.png

setp 2

第二步我们是要计算:
$$
P\left(y^{(2)} \mid x, y^{(1)}\right)
$$

这一步我们需要在前三种情况的基础上再进行搜索,再找出三个最可能的结果。这里是在前三种搜索的基础上,再筛选出来三种;不是说在前三种的基础上,每种再筛选出来三种。是3万里边选3个,不是3万里边选9个。

image.png

  • $P\left(y^{(2)} \mid x, 'in' \right)$ image.png
  • $P\left(y^{(2)} \mid x, 'jane' \right)$ image.png

  • $P\left(y^{(2)} \mid x, 'september' \right)$image.png

step 3

第三步就是要计算:
$$
P\left(y^{(3)} \mid x, y^{(1)},y^{(2)} \right)
$$

第一二步看完以后应该就已经弄懂原理了,第三步我们就快速的说一下。依旧是在前两个节点的基础上。进行最优的三个选择。还是选出来三个。之后的第四步第五步,以此类推一直到句子的末尾。

  • $P\left(y^{(3)} \mid x, 'in \quad september' \right)$ image.png
  • $P\left(y^{(3)} \mid x, 'jane \quad is' \right)$ image.png
  • $P\left(y^{(3)} \mid x, 'jane \quad visit' \right)$
    image.png

总结

总之整个算法要做的事就是:
$$
\arg \max {y} \prod{t=1}^{T_{y}} P\left(y^{<t>} \mid x, y^{<1>}, \ldots, y^{<t-1>}\right)
$$

举报

相关推荐

0 条评论