【深度学习 | Transformer】释放注意力的力量:探索深度学习中的 变形金刚,一文带你读通各个模块 —— 总结篇(三)
  b4DDAHOVqdA1 2023年11月13日 37 0

【深度学习 | Transformer】释放注意力的力量:探索深度学习中的 变形金刚,一文带你读通各个模块 —— 总结篇(三)_目标语言

🤵♂️ 个人主页: @AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱🏍 🙋♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能&硬件(虽然硬件还没开始玩,但一直很感兴趣!希望大佬带带)

【深度学习 | Transformer】释放注意力的力量:探索深度学习中的 变形金刚,一文带你读通各个模块 —— 总结篇(三)_源语言_02

<center 【深度学习 | Transformer】释放注意力的力量:探索深度学习中的 变形金刚,一文带你读通各个模块 —— Positional Encoding(一)


摘要: 本系列旨在普及那些深度学习路上必经的核心概念,文章内容都是博主用心学习收集所写,欢迎大家三联支持!本系列会一直更新,核心概念系列会一直更新!欢迎大家订阅

该文章收录专栏 [✨--- 《深入解析机器学习:从原理到应用的全面指南》 ---✨]

残差链接和层归一化

Transformer 模型使用残差连接(residual connections)来使梯度更容易传播,在进行self(自我)-attention 加权之后输出,也就是 Self(自我)-Attention(Q, K, V),然后把他们加起来做残差连接

【深度学习 | Transformer】释放注意力的力量:探索深度学习中的 变形金刚,一文带你读通各个模块 —— 总结篇(三)_目标语言_03

以及层归一化(layer normalization)来加速训练过程和提高模型性能。 [classical concept.md](classical concept.md) 这里有讲解关于层归一化的概念

下面的图总结了以上 encode 的部分,接下来我们看关于decode的部分

【深度学习 | Transformer】释放注意力的力量:探索深度学习中的 变形金刚,一文带你读通各个模块 —— 总结篇(三)_源语言_04

Deocoder中的 Masked Encoder-Decoder Attention 唯一不同的是这里的 K,V 为 Encoder 的输出,Q 为 Decoder 中 Masked(掩盖) Self(自我)-Attention 的输出

【深度学习 | Transformer】释放注意力的力量:探索深度学习中的 变形金刚,一文带你读通各个模块 —— 总结篇(三)_源语言_05

该方法将输入的信息作为键值传入,并将对于输入的序列查询信息糅合,达到学习关联二者序列的关系,并通过最终结果训练得到最优参数。

English to French 机器翻译案例

在机器翻译任务中,输入是一个源语言句子(例如英文句子),输出是该句子的目标语言翻译(例如法文句子)。

  1. 输入(Input):
  • 源语言句子:将源语言句子进行编码,通常使用词嵌入(Word Embedding)来表示每个单词。例如,将英文句子"Hello, how are you?"转换为一系列词嵌入向量。
  • 位置编码(Positional Encoding):为了捕捉单词在句子中的位置信息,Transformer模型引入位置编码,将位置信息与词嵌入向量相结合。
  • 输入嵌入(Input Embedding):将词嵌入向量和位置编码向量相加,得到每个单词的最终输入表示。
  1. 输出(Output):
  • 目标语言句子:目标语言句子也会进行类似的处理,将目标语言句子进行编码和嵌入表示。
  • 解码器输入(Decoder Input):解码器的输入是目标语言句子的编码表示,通常会在每个目标语言句子的开头添加一个特殊的起始标记(例如\)来表示解码器的起始位置。
  • 解码器输出(Decoder Output):解码器的输出是对目标语言句子的预测结果,通常是一个单词或一个单词的词嵌入向量。解码器会逐步生成目标语言句子,每一步生成一个单词,直到遇到特殊的结束标记(例如\)或达到最大长度。

下面是一个机器翻译任务的例子:

源语言句子(英文): "Hello, how are you?" 目标语言句子(法文): "Bonjour, comment ça va ?"

在这个例子中,输入是源语言句子的编码表示,输出是目标语言句子的解码器输入和解码器输出。

输入(Input):

  • 源语言句子编码:[0.2, 0.3, -0.1, ..., 0.5] (词嵌入向量表示)
  • 位置编码:[0.1, 0.2, -0.3, ..., 0.4]
  • 输入嵌入:[0.3, 0.5, -0.4, ..., 0.9]

输出(Output):

  • 解码器输入:[\, 0.7, 0.2, -0.8, ..., 0.6]
  • 解码器输出:[0.1, 0.5, -0.6, ..., 0.2]

通过训练,Transformer模型会根据输入的源语言句子和目标语言句子进行参数优化,使得模型能够生成准确的目标语言翻译。

需要注意的是,具体任务中的输入和输出的表示方式可能会有所不同,这只是一个简单的机器翻译示例。不同任务和模型架构可能会有不同的输入和输出定义。

一些值得思考的问题
为什么说 Transformer 在 seq2seq 能够更优秀?

RNN等循环神经网络的问题在于将 Encoder 端的所有信息压缩到一个固定长度的向量中,并将其作为 Decoder 端首个隐藏状态的输入,来预测 Decoder 端第一个单词 (token) 的隐藏状态。在输入序列比较长的时候,这样做显然会损失 Encoder 端的很多信息,而且这样一股脑的把该固定向量送入 Decoder 端,Decoder 端不能够关注到其想要关注的信息。Transformer 通过使用Multi-self-attention 模块,让源序列和目标序列首先 “自关联” 起来,并实现全局观和并行能力,模型所能提取的信息和特征更加丰富,运算更加高效。

【深度学习 | Transformer】释放注意力的力量:探索深度学习中的 变形金刚,一文带你读通各个模块 —— 总结篇(三)_深度学习_06

关于代码

官方代码地址: https://github.com/tensorflow/tensor2tensor

http://nlp.seas.harvard.edu/2018/04/03/attention.html (Pytorch_实现)

如果有能力的话,大家可以尝试一下手撕代码哦,大佬嘿嘿。

参考文献:

https://wmathor.com/index.php/archives/1438/

https://www.youtube.com/watch?v=ugWDIIOHtPA&list=PLJV_el3uVTsOK_ZK5L0Iv_EQoL1JefRL4&index=62

https://www.bilibili.com/video/BV1pu411o7BE/?spm_id_from=333.337.search-card.all.click&vd_source=2700e3c11aa1109621e9a88a968cd50c

https://wmathor.com/index.php/archives/1453/#comment-2101

https://kazemnejad.com/blog/transformer_architecture_positional_encoding/

http://jalammar.github.io/illustrated-transformer/

https://ifwind.github.io/2021/08/17/Transformer相关——(7)Mask机制/#xlnet中的mask

代码详解:http://nlp.seas.harvard.edu/2018/04/03/attention.html (Pytorch_实现)

扩展模型

下面是一些对Transformer模型进行改进和扩展的其他模型:

  1. BERT(Bidirectional Encoder Representations from Transformers):BERT是一种预训练的语言表示模型,通过双向Transformer编码器来学习句子的上下文相关表示。它利用了Transformer的自注意力机制和多层编码器的结构,通过大规模的无监督预训练和有监督微调,取得了在多项自然语言处理任务上的显著性能提升。
  2. GPT(Generative Pre-trained Transformer):GPT是一种基于Transformer的预训练语言生成模型。它通过自回归的方式,使用Transformer的解码器部分来生成文本。GPT模型在大规模文本语料上进行预训练,并通过微调在各种任务上展现出出色的语言生成和理解能力。
  3. XLNet:XLNet是一种自回归和自编码混合的预训练语言模型。不同于BERT模型的双向预训练,XLNet采用了排列语言模型(Permutation Language Model)的方法,通过随机遮盖和预测全局排列来学习句子的上下文表示。这种方法能够更好地捕捉句子内部的依赖关系,提高了模型的性能。
  4. Transformer-XL:Transformer-XL是一种具有记忆能力的Transformer模型。它通过引入相对位置编码和循环机制,解决了标准Transformer模型在处理长文本时的限制。Transformer-XL能够有效地捕捉长距离依赖关系,并保持对先前信息的记忆,从而提高了模型的上下文理解能力。
  5. Reformer:Reformer是一种通过优化Transformer模型的存储和计算效率的方法。它引入了可逆网络层和局部敏感哈希(Locality Sensitive Hashing)等技术,以减少内存消耗和加速自注意力计算。Reformer模型在大规模数据和长序列上具有很好的可扩展性,并在多项任务上取得了优异的性能。

这些模型都是对Transformer模型的改进和扩展,通过引入不同的结构和训练策略,提高了模型在自然语言处理和其他领域任务中的表现。它们的出现丰富了深度学习模型的选择,并推动了自然语言处理领域的发展。

【深度学习 | Transformer】释放注意力的力量:探索深度学习中的 变形金刚,一文带你读通各个模块 —— 总结篇(三)_目标语言_07

🤞到这里,如果还有什么疑问🤞
					🎩欢迎私信博主问题哦,博主会尽自己能力为你解答疑惑的!🎩
					 	 🥳如果对你有帮助,你的赞是对博主最大的支持!!🥳
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
b4DDAHOVqdA1