做网站电话销售,如何运营电商平台,鲁班建设网站,黑龙江省瑞驰建设集团网站#x1f468;#x1f393;作者简介#xff1a;一位即将上大四#xff0c;正专攻机器学习的保研er #x1f30c;上期文章#xff1a;机器学习深度学习——seq2seq实现机器翻译#xff08;详细实现与原理推导#xff09; #x1f4da;订阅专栏#xff1a;机… 作者简介一位即将上大四正专攻机器学习的保研er 上期文章机器学习深度学习——seq2seq实现机器翻译详细实现与原理推导 订阅专栏机器学习深度学习 希望文章对你们有所帮助 机器翻译序列生成策略 引入贪心搜索穷举搜索束搜索小结 引入
上一节已经实现了机器翻译的模型训练和预测逐个预测输出序列 直到预测序列中出现特定的序列结束词元eos而对于预测序列的结果我们进行了评估发现了效果并不好。因为之前的方式是使用了贪心搜索方式这个搜索方式并不能使得全局上是优秀的甚至是非常差的。接下来将介绍搜索方式。 我们已经知道在任意的时间步解码器的输出的概率取决于时间步之前的输出子序列和对输入序列的信息进行编码得到的上下文变量。为了量化计算代价用γ表示输出词表包含eos而|γ|显然就是词表大小。 除此之外我们限制一下输出序列的最大词元数T’。
贪心搜索
对于输出序列的每一个时间步t’我们都将基于贪心搜索从γ中找到具有最高条件概率的词元即 y t ′ a r g m a x y ∈ γ P ( y ∣ y 1 , . . . , y t ′ − 1 , c ) y_{t^{}}argmax_{y∈γ}P(y|y_1,...,y_{t^{}-1},c) yt′argmaxy∈γP(y∣y1,...,yt′−1,c) 一旦输出序列包含了eos或者已经达到了最大长度T’则输出完成。 上图中的预测输出序列是ABC和eos这个输出序列的条件概率就是0.5×0.4×0.4×0.60.048。 而如果我们在第二个时间步换一下换成C那么可能AC后面跟着的A、B、C和eos的概率就会全变了例如 计算得出输出序列ACB和eos的条件概率为0.054大于之前的贪心方式得到的结果。搞过动态规划算法的朋友们都知道贪心就是很可能出现这种情况所以贪心搜索本身就不是一个很好的搜索策略。
穷举搜索
这个好理解就是所有结果全部遍历过去这样的话我们绝对可以找到条件概率最高的一个。然而这样的复杂度将会非常的大计算量会达到 O ( ∣ γ ∣ T ′ ) O(|γ|^{T^{}}) O(∣γ∣T′) 因此在词元数过多或者预测序列的最大词元数太大的话这个方法简直是非常的慢。
束搜索
显然上面的可以得出一个简单的选择策略如果精度最重要则显然是穷举搜索如果计算成本最重要则显然是贪心搜索。而束搜索则是介于两者之间的算是贪心的一个改进版本。 它有一个超参数名为束宽记为k。在每个时间步我们都选择具有最高条件概率的k个词元过程如下所示束宽为2最大长度为3 我们从这里面选出六个候选输出序列 1A2C3AB4CE5ABD6CED 最后基于这六个序列 我们获得最终候选输出序列集合。然后我们选择其中条件概率乘积最高的序列作为输出序列 1 L α l o g P ( y 1 , . . . , y L ∣ c ) 1 L α ∑ t ′ 1 L l o g P ( y t ′ ∣ y 1 , . . . , y t ′ − 1 , c ) \frac{1}{L^α}logP(y_1,...,y_L|c)\frac{1}{L^α}\sum_{t^{}1}^LlogP(y_{t^{}}|y_1,...,y_{t^{}-1},c) Lα1logP(y1,...,yL∣c)Lα1t′1∑LlogP(yt′∣y1,...,yt′−1,c) 其中L是最终候选序列的长度α通常设为0.75。这样做是因为一个较长的序列在求和中会有更多的对数项因此分母用来惩罚长序列。 实际上贪心搜索就可以看作是一种束宽为1的特殊类型的束搜索。束搜索可以在正确率和计算代价之间进行权衡。
小结
1、序列搜索策略包括贪心搜索、穷举搜索和束搜索。 2、贪心搜索所选取序列的计算量最小但精度相对较低。 3、穷举搜索所选取序列的精度最高但计算量最大。 4、束搜索通过灵活选择束宽在正确率和计算代价之间进行权衡。