美文网首页
2021-05-15 ch19 seq2seq

2021-05-15 ch19 seq2seq

作者: 柠樂helen | 来源:发表于2021-05-15 22:20 被阅读0次

    seq2seq应用场景:
    文本生成:翻译、看图说话、生成摘要

    文本理解和生成文本
    encoder & decoder
    encoder,根据输入序列生成语义向量 (h4 = C)
    decoder 根据语义向量生成指定序列


    seq2seq

    encoder通常是一个RNN类模型,
    decoder可以有:
    1、Greedy Decoding:Greedy Decoding就是每次选择概率值最大的对应的单词(每一轮softmax最大的单词)。但这样做的缺点是,局部最优并不等于全局最好的,而且一旦选错了,后续生成的内容很可能也是错误的,具有错误的累加效果。对于此问题,更好的解决方法是每次考虑更多的可能性。

    2、暴力搜索: 相比方法1,暴力搜索时间复杂度极高,一句话m个单词,会产生|V|的m次方计算。

    3、beam-search: Beam Search的时间复杂度 kkT,k时beam_size, T是句子长度

    k=3时,每一步我们考虑了9种可能性,但为了不让计算复杂度增加,又从9个选项里再选出最好的3个。这就意味着,每个时间的计算复杂度实际上是3的平方,也就是k的平方


    时间复杂度kkT

    序列得分怎么得到? decoder最后的输出,softmax ???


    beam search

    代码review:
    一个句子,有10个单词,总共有5个备选词。
    句子每个位置上,取0~4号单词的概率 用一个矩阵表示,第一维表示是第几个词,第二维表示第i个备选词。
    for row in data: # 循环这个句子中的每一个词
    for i in range(len(sequeces)): # 循环目前所有的备选子序列,循环次数=beam_size

    1) for j in range(len(row)):  # 循环每个备选词,循环次数=词表大小
        # 更新每个备选子序列,比如:第一次备选序列为 [a] [c], 更新后[aa] [ab] [ac] [ca] [cb] [cc]
    2) 备选子序列重新赋值,取上一步骤的 topk 个子序列
    

    返回所有备选子序列

    代码review

    相关文章

      网友评论

          本文标题:2021-05-15 ch19 seq2seq

          本文链接:https://www.haomeiwen.com/subject/bnmkjltx.html