搜参,序列生成,优化方法——穷举,greedy search,beamsearch,bayessearch, viterbisearch

  1. exhaustive search(穷举搜索)
    最直观的方法就是穷举所有可能的输出序列。从所有的排列组合中找到输出条件概率最大的序列。穷举搜索能保证全局最优,但计算复杂度太高,当输出词典稍微大一点根本无法使用。

  2. greedy search(贪心搜索)
    贪心搜索在解码下一个选择的时候,直接选择条件概率最大的候选值作为当前最优。

  3. beamsearch(集束搜索)
    beam search的每一步不再只选择条件概率最大的值,而是选择概率值topk个(也即beam_size(束宽))。然后分别以这K个值做为下一个字解码的输入,则下个字会预测出K^2个概率。然后从这些概率中再选择topK个,重复上述过程。当beam_size=1时集束搜索就退化成了贪心搜索。

  4. bayessearch (贝叶斯搜索)
    建立目标函数的概率模型,并用它来选择最有希望的超参数来评估真实的目标函数。利用先验知识逼近未知目标函数的后验分布从而调节超参。花一点时间选择下一个超参数,以减少对目标函数的调用。贝叶斯调参采用高斯过程,考虑之前的参数信息,不断地更新先验;网格搜索未考虑之前的参数信息,贝叶斯调参迭代次数少,速度快;贝叶斯调参针对非凸问题依然稳健。

  5. viterbisearch (维特比搜索)
    相应的当前选择,最优解一定是前一个选择的最优解。在没有得到最终结果之前,每一个选择都有可能是最优解,所以在序列生成过程中,保留每一个选择的前一个选择的最优选,到最后一个选择时,回溯出全局最优解
    设建模单元为N, beam_size为K,解码所需时间步骤为T:
    (1) 如果k=1,即为greedy search,时间复杂度为O(NT)

    (2)beam_search,时间复杂度为O(KNT),局部最优

    (3)如果K=N,即维特比算法,时间复杂度为O(NNT),全局最优

posted @ 2024-08-15 17:16  tangshine  阅读(25)  评论(0编辑  收藏  举报