热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PytorchNLP部分

感谢伯禹平台举办的活动,本文记录学习SequencetoSequence模型,包含如下:1.Encoder-Decoder结构传统的RNN模型一般是给定输入,然后会有一个对应的输出

感谢伯禹平台举办的活动,本文记录学习Sequence to Sequence模型,包含如下:

1.Encoder-Decoder结构

传统的RNN模型一般是给定输入,然后会有一个对应的输出,对于自然语言处理中的生成任务来说,输出不限定长度的序列有点难以处理,这时候encoder-decoder结构就可以很好的解决这个问题。如下图所示:
Pytorch-NLP 部分
encoder部分和decoder部分都是RNN网络,其中Encoder部分将输入的序列编码成一个向量,即隐藏层的输出hidden_state,再将这个hidden_state输入decoder中逐步生成序列,直到输出停止符号, 这种结构可以有效的解决不定长的输出问题,但是在生成序列的时候每一步都是用的encoder结构输出的hidden_state作为背景变量C来输入,但是翻译的过程中,一个目标词可能只对应输入序列的个别词,这时候,带有注意力机制的Encoder-Decoder结构就可以有效的解决这个问题

2.Encoder-Decoder with attention结构

Pytorch-NLP 部分
attention机制就是在Decoder中生成每一个新的状态时,每一步都会采用不同的背景变量Ci,所以attention机制的一个重点就是如何计算第i步的背景向量Ci。如下图所示,在第i步时,用第i-1步的隐藏输出状态充当一个查询变量query来和encoder编码器的每一个隐藏层状态h1,h2,…(这时这些隐藏状态充当keys)来进行计算(一般是相似度计算或者其他计算),得到与每一个hi的分数,然后进行softmax运算生成一个概率分布,然后将这个概率分布于隐藏状态hi(这时这些隐藏状态充当valuess)相结合,生成attention输出,用作第i步的背景向量Ci。
Pytorch-NLP 部分

3.transformer(Encoder-Decoder with self-attention)

传统的Encoder-decoder结构中的模块用的都是RNN模块,但是RNN的问题在于无法并行化计算,而且对于较长的序列问题不能很好的处理,为了解决这个问题transformer中采用了一种self-attention的机制来解决这个问题,做到可以并行化处理,又能保持句子间的依赖关系。
Pytorch-NLP 部分
在self-attention中,每一个句子的输入都会同时被编码然后经过矩阵运算同时生成每一个词的qi,ki,vi.
Pytorch-NLP 部分
在计算第一个词的attention时,让qi和其他的kj进行相似度计算,生成当前这个词的attention输出,可以发现,这里的每一个词都是可以同时计算的,这样在保证了并行化处理的同时,也解决了句子的内部的依赖问题。

参考文章:
1.讲解attention非常详细的文章https://blog.csdn.net/malefactor/article/details/78767781
2.李宏毅老师讲解transformer
https://www.you tu be.com/watch?v=ugWDIIOHtPA
3.https://leemeng.tw/neural-machine-translation-with-transformer-and-tensorflow2.html


推荐阅读
  • 在Conda环境中高效配置并安装PyTorch和TensorFlow GPU版的方法如下:首先,创建一个新的Conda环境以避免与基础环境发生冲突,例如使用 `conda create -n pytorch_gpu python=3.7` 命令。接着,激活该环境,确保所有依赖项都正确安装。此外,建议在安装过程中指定CUDA版本,以确保与GPU兼容性。通过这些步骤,可以确保PyTorch和TensorFlow GPU版的顺利安装和运行。 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • TensorFlow基础知识深化讲解
    批标准化批标准化(batchnormalization,BN)是为了克服神经网络层数加深导致难以训练而诞生的。深度神经网络随着深度加深,收 ... [详细]
  • 中文分词_中文分词技术小结几大分词引擎的介绍与比较
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了中文分词技术小结几大分词引擎的介绍与比较相关的知识,希望对你有一定的参考价值。笔者想说:觉得英文与中文分词有很大的区别, ... [详细]
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • 最详尽的4K技术科普
    什么是4K?4K是一个分辨率的范畴,即40962160的像素分辨率,一般用于专业设备居多,目前家庭用的设备,如 ... [详细]
  • window下的python安装插件,Go语言社区,Golang程序员人脉社 ... [详细]
  • SIoU Loss 的原理详解及代码实现分析
    本文详细解析了 SIoU Loss 的原理及其在边界框回归任务中的优势,并通过代码实现对其性能进行了深入分析。SIoU Loss 作为一种改进的损失函数,能够更有效地优化目标检测模型的边界框回归效果,提升模型的准确性和鲁棒性。文中还提供了具体的代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 大家好,全新的技术专栏《从零开始掌握容器云网络实战》正式上线。该专栏将系统地介绍容器云网络的基础知识、核心技术和实际应用案例,帮助读者全面理解和掌握容器云网络的关键技术与实践方法。 ... [详细]
  • 使用GridSearchCV和KerasClassifier进行超参数调整 ... [详细]
  •   作为一种编程语言,Python比C#,Java,C和C++更具吸引力。它被称为“胶水语言”,它也被喜欢它的程序员誉为“美丽”的编程语言。从云计算,客户端到物联网终端,Pytho ... [详细]
  • 艺术不死,只是以生成 AI 的形式存在
    原文作者:GuidoAppenzeller,MattBornstein,MartinCasado,YokoLi, ... [详细]
author-avatar
真理难辩_175
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有