Transformer详解

https://blog.csdn.net/weixin_42475060/article/details/121101749

b站视频:https://www.bilibili.com/video/BV1ih4y1J7rx

1. 解码器的输入组成

在推理阶段,解码器的输入有两个主要部分:

(1) 目标序列的前缀(已生成的部分)

  • 解码器需要自回归地生成序列。
  • 在每个时间步,解码器的输入是当前生成的序列(前缀),经过 Embedding 层 转换成向量表示后输入到解码器。
  • 例如:
    • 如果生成的是句子 “I am”, 在生成下一个单词时,解码器输入是 “I am” 的嵌入表示。
    • 这个前缀会不断扩展,直到生成完整的句子或者达到停止条件。

(2) 编码器输出(上下文向量)

  • 编码器(Encoder)在推理阶段对输入序列(source sequence,例如源语言句子)进行一次性编码,生成上下文向量(context representations)。
  • 这个上下文向量会作为解码器的一个固定输入,供解码器的 Encoder-Decoder Attention 模块 使用,用于理解输入序列的全局信息。

2. 推理阶段解码器输入的变化

推理阶段的解码是一个**逐步生成(autoregressive generation)**的过程:

  1. 初始时,解码器的输入是一个特殊的 起始标志([START] 或 <s>)
  2. 解码器输出第一个单词的概率分布,通过 argmax 或 beam search 选择一个单词作为输出。
  3. 将第一个单词加入到输入序列中,形成新的前缀。
  4. 重复这个过程,逐步生成下一个单词,直到遇到停止标志([END] 或 </s>)或者达到最大序列长度。

3. 推理阶段解码器输入的形式

  • 解码器的输入是一个动态增长的序列,表示为 [y1,y2,…,yt],其中 yt 是已生成的单词序列。
  • 解码器输入会经过嵌入层和位置编码(Positional Encoding),然后送入解码器各层。

总结

在推理阶段,Decoder 的输入包括

  1. 动态生成的目标序列的前缀(由特殊标志 <s> 开始,逐步扩展)。
  2. 编码器的输出上下文向量(固定的输入,用于帮助解码器生成与输入相关的结果)。

这种逐步生成的方式使 Transformer 能够灵活地进行序列生成任务,例如翻译、文本生成等。

感谢你的阅读


欢迎评论交流


忽如一夜春风来,千树万树梨花开。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇