请问output作为输入,是将全部的decoder输出作为输入么?

请问output作为输入,是将全部的decoder输出作为输入么?

https://img1.sycdn.imooc.com/climg/65fb7cbd091b869709641040.jpg

  1. 请问outputs作为输入,是将decoder前面所有输出结果作为输入么?

  2. decoder的输出的一个概率分布,请问是将其中概率最大的字作为输出么?那要是在某一轮输出的时候预测错误,后面不会跟着越错越远么?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
那位科技大模型算法 2024-03-21 11:45:55

Transformer模型中,decoder的输入包括了来自encoder的信息以及之前decoder层的输出。当将decoder的输出作为输入时,通常是将前面所有的输出结果作为输入,而不是只将概率最大的字作为输入。 请注意,解码器本身并不输出 tokens,而是输出 logits(数量与词汇表的大小相同)(logits 是一个数值向量,其维度等于词汇表的大小,表示每个 token 的可能性分数)。通过 logits 提取 tokens 的过程是通过一种被称为搜索策略(search strategy)、生成策略(generation strategy)或解码策略(decoding strategy)的启发式方法完成的。对于decoder的输出的概率分布,通常会选择概率最大的字作为输出。这种方法被称为贪婪解码。然而,在某些情况下,贪婪解码可能会导致错误累积的问题,即在某一轮输出时预测错误可能会影响后续的输出结果。为了解决这个问题,可以使用束搜索(beam search)等方法来平衡搜索效率和准确性。 在束搜索中,会保留多个备选的输出序列,并在每一步选择概率最大的前B个作为备选,其中B是束搜索的宽度参数。这样可以一定程度上缓解错误累积的问题,但也会增加计算复杂度。 Transformer模型在解码阶段可以采用贪婪解码或束搜索等方法,以平衡准确性和效率之间的权衡

  • 提问者 慕妹7273336 #1

    假设词表大小=N,第一次output作为输入时向量维度=[1, N],随着解码的进行,output作为输入向量的维度会依次变成[2, N], [3, N], ... [n, N]么?

    2024-03-23 22:39:58
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
LLM行业领军大佬 带你转型大语言模型算法工程师
  • 参与学习       216    人

从入门-案例实战-多领域应用-面试指导-推荐就业,匹配课前知识路线、详细学习笔记和全方位服务,助力学习与就业,快速实现职业跃迁。附赠价值2000元+的大模型项目代码/数据和配套环境和GPU。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师