63 束搜索【动手学深度学习v2】
深度学习学习笔记
学习视频:https://www.bilibili.com/video/BV1B44y1C7m1/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=75dce036dc8244310435eaf03de4e330
贪心搜索:seq2seq使用的是贪心算法,用贪心搜索来预测序列,当前时刻的预测的词最大的概率输出。贪心通常不是最优的,当前选择的词,可能在全局来看不是最优的选择。但是贪心搜索是效率最高的。
穷举搜索:最优算法就是遍历所有可能的序列,计算所有选择的概率,然后选出最优的就是模型能够预测的最优的。问题就是计算量太大。
贪心可能取不到最优,但是效率最高。穷举虽然能取到最优,但是计算上不可行。中间的选择便是束搜索。
束搜索:在每个时刻保持K个最好的候选序列,对K的每个序列扫一遍下一个词,再在kn个选择中选出最好的K个。
时间复杂度O(knT),句子越长概率越低,束搜索会将每次softmax后的输出乘起来去log,对L乘a,让长的句子的负数变小一点,相当于给长句子一个补偿。
k=1贪心, k=5,10(通常)
在语音翻译的时候,为了实时性可能会把k取小一些。