Seq2Seq理解

Seq2Seq理解

写在前面:学习Seq2Seq由于前面底子没打好导致理解起来非常困难,今天索性全部搞懂逻辑部分,后续我会把所学的一些算法全部以理解+代码的形式发布出来,课程代码内容全部来自李沐老师的视频,再次感谢!

直入主题

当前只有理解,没有概念等内容

Seq2Seq的核心是编码器和解码器,以下例子为中文“我爱你”翻译成英文“I love you”

在这里插入图片描述
1.先输入中文“我爱你”,拆解成“我”,“爱”,“你”的三个嵌入词,在编码器Encoder中分别变为三个词向量[词向量1],[词向量2]和[词向量3]。

2.将[词向量1],[词向量2],[词向量3]一起丢给GRU1去学习,GRU1对简单的词的特征进行处理记忆的结果作为输入丢给GRU2

3.GRU2继续从更高层次的捕获句子的时间依赖和上下文信息,
然后将结果作为输入再丢给GRU3

4.GRU3提取更深层次的语义特征;而通过三层GRU学习后的结果也就是隐藏状态被叫做context(上下文向量)。
在这里插入图片描述
3.将解码器的最终隐藏状态context贯穿解码器当中。

4.[start] + context → GRU1 → “I”
刚开始直接通过GRU1学习上下文,得到第一个英文单词"I"

5.“I” + context → GRU → “love”
将已经得到的结果作为输入结合上下文进行学习,得到第二个单词"love"

6.“love” + context → GRU → “you”
前两个的结果作为输入结合上下文进行学习,得到第三个单词"you"

7.最后通过拼接函数将"I ",“love”,“you”->“I love you”

核心理解

一.隐藏状态:隐藏状态就是神经网络记住信息的“记忆”

输入:X = [“I”, “am”, “happy”]

经过embedding后,每个词变成的向量为:

X = [v_I, v_am, v_happy]

GRU一步步读取向量的操作为:

时间步1: 输入 v_I → 生成隐藏状态 h_1(理解了"I")

时间步2: 输入 v_am + 上一个隐藏状态 h_1 → 得到 h_2(理解了"I am")

时间步3: 输入 v_happy + h_2 → 得到 h_3(理解了"I am happy")

二.Dropout:防止过拟合的方法,在训练时,随机“丢掉”一部分神经元,让模型不要太依赖某些特征。

神经网络的输出为:[0.8, 0.5, 0.3, 0.9]

drop=0.5,训练时会随机把一半的值变成0

[0.8, 0.0, 0.0, 0.9]

好处:
1.模型更加鲁棒,不依赖单一神经元
2.更难死记硬背训练数据,防止过拟合

三.repeat():将 state[-1] 扩展成每个时间步都用同一个上下文向量:
为了每个时间步都能获得编码器的上下文信息,所以要在时间维度上复制。

四.context上下文: 是编码器最后一层最后一个时间步的隐藏状态

context = state[-1]

编码器读完整句后,对整句的“理解压缩”结果。

五.num_hiddens:是 GRU(或 LSTM、RNN)中隐藏状态的“向量维度”,不是处理句子长度,而是控制模型对每个时间步输入的“记忆能力”或“抽象表达能力”

可以类比成大脑的记忆容量,隐藏状态越高,人能记住的东西就越多

假设你有一个 GRU:num_hiddens = 4

每个时间步输入词向量后,GRU 输出隐藏状态,比如:

h_t = [0.35, -0.21, 0.10, 0.78] ← 隐藏状态的维度 = 4

对“到当前时间步为止”的所有输入,GRU 试图总结成一个 4 维向量

六.batch_size:批量大小,指的是一次训练处理几句话,每句话有一个隐藏状态

七.num_layers:表示GRU有几层,就有几个隐藏状态

例如:
你用 2 层 GRU (num_layers=2)

一次处理 3 句话 (batch_size=3)

每个隐藏状态是一个 4 维向量 (num_hiddens=4)

那么你最终的 state 长这样:state.shape == (2, 3, 4)

state[0][0] 是:第1层,第1句话的隐藏状态 (一个4维向量)
state[1][2] 是:第2层,第3句话的隐藏状态 (一个4维向量)

2*3=6,一共有6个隐藏状态向量

第1层
第1句话的隐藏状态: [0.1, 0.2, -0.5, 0.7]
第2句话的隐藏状态: [0.4, -0.1, 0.9, 0.0]
第3句话的隐藏状态: [0.3, 0.8, -0.2, -0.1]

第2层
第1句话的隐藏状态: [0.1, 0.2, -0.5, 0.7]
第2句话的隐藏状态: [0.4, -0.1, 0.9, 0.0]
第3句话的隐藏状态: [0.3, 0.8, -0.2, -0.1]

八.Seq2Seq并不是通过直接对应词汇翻译得到的,而是通过一步步根据上下文和自己组成的词,预测下一个词

九.num_hiddens 和 state 的关系:

num_hiddens 决定了每个隐藏状态向量的“维度”(表达能力有多强), state 是具体的隐藏状态“内容”(一组向量),它的形状受num_hiddens 控制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/84982.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

旅游规划智能体之ReAct Agent实战

引言 本文将系统性地介绍如何运用ReAct框架构建旅游规划智能体,通过LangChain的create_react_agent方法实现智能决策和多步骤任务处理。ReAct框架作为现代AI Agent开发的核心技术之一,为构建具备复杂推理能力的智能系统提供了重要的理论基础和实践指导。…

组合模式深度解析:Java设计模式实战指南与树形结构处理架构设计

组合模式深度解析:Java设计模式实战指南与树形结构处理架构设计 🌟 嗨,我是IRpickstars! 🌌 总有一行代码,能点亮万千星辰。 🔍 在技术的宇宙中,我愿做永不停歇的探索者。 ✨ 用…

PHP设计模式实战:领域驱动设计与六边形架构

在前三篇关于电子商务系统、API服务和微服务架构的基础上,我们将深入探讨如何运用领域驱动设计(DDD)和六边形架构(Hexagonal Architecture)构建更加清晰、可维护的业务系统。随着业务复杂度增加,传统的分层架构往往难以清晰地表达业务逻辑,而DDD提供了一套方法论来解决这一问…

为什么在1080p的屏幕下,通常观看4K视频要比1080p的视频来的清晰?

一、分辨率与像素密度的底层逻辑 4K与1080p的像素差异 4K分辨率通常为38402160(约830万像素),而1080p为19201080(约207万像素),4K像素数量是1080p的4倍。当4K视频在1080p屏幕上播放时,需要将4倍…

C++ Json-Rpc框架 项目逻辑设计

Server • RpcServer&#xff1a;rpc功能模块与⽹络通信部分结合 RpcServer分为两部分 1.提供函数调用服务的服务端 2.提供服务注册的客户端 对内提供好rpc服务的路由关系管理map<method,服务描述对象>&#xff0c;以及rpc请求消息的分发处理函数。给Dispatcher提供onRpc…

Agent开发相关工具

LangChain LangChain LangGraph LangGraph LangSmith GraphRAG RAGFlow what-is-graphrag Dify n8n vLLM Model Context Protocol AutoGen CodeMirror Milvus Chroma

进程管理(一)

一. 进程的基本信息 1.1 进程的概念、组成及信息 1.1.1 概念 进程的概念与程序相对&#xff0c;程序是静态的而进程是动态的&#xff0c;一个程序执行多次会有多个不同的进程 1.1.2 组成 PCB&#xff08;程序控制块&#xff09;&#xff1a; 是一种保存下列信息的数据结构&…

k8s 中 cpu 核数的理解

物理核还是逻辑核 在 Kubernetes&#xff08;k8s&#xff09;编排文件&#xff08;如 Pod 或 Deployment 的 YAML 文件&#xff09;中设置的 CPU 核数&#xff0c;针对的是逻辑核数&#xff08;Logical Cores&#xff09;&#xff0c;而非物理核数&#xff08;Physical Cores&…

arcpy数据分析自动化(2)

数据处理 在提取数据后&#xff0c;我们需要对字段进行标准化处理&#xff0c;例如统一土地利用类型的命名。 # 定义字段映射字典 field_mapping {"Residential": "居住用地","Commercial": "商业用地","Industrial": &q…

在VMware虚拟机集群中,完成Hive的安装部署

Hive是分布式运行的框架还是单机运行的&#xff1f; Hive是单机工具&#xff0c;只需要部署在一台服务器即可。 Hive虽然是单机的&#xff0c;但是它可以提交分布式运行的MapReduce程序运行。 我们知道Hive是单机工具后&#xff0c;就需要准备一台服务器供Hive使用即可。 同…

Linux运维新人自用笔记(部署 ​​LAMP:Linux + Apache + MySQL + PHP、部署discuz论坛)

内容全为个人理解和自查资料梳理&#xff0c;欢迎各位大神指点&#xff01; 每天学习较为零散。 day19 简单搭建网站 下载apache服务 #下载阿帕奇服务 [rootxun ~]# yum install httpd -y#关闭防火墙 [rootxun ~]# iptables -F#启动服务 [rootxun ~]# systemctl start http…

Kubernetes架构解析

Kubernetes 技术栈的深度解析&#xff0c;涵盖架构设计、核心组件、生态工具及二次开发实践&#xff0c;结合实战案例说明其内在关联&#xff1a; 一、Kubernetes 架构设计 核心分层模型 #mermaid-svg-CnFwJbuzaABZpTBr {font-family:"trebuchet ms",verdana,arial…

langchain4j整合springboot

langchain4j整合springboot 1.搭建项目架子配置文件Controller测试测试结果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/35b8bd04f3034bd990861f065bc73d2f.png) 1.搭建项目架子 配置文件 参考官网配置引入 <?xml version"1.0" encoding"UTF…

408第一季 - 数据结构 - 平衡二叉树

平衡二叉树 定义 缩写记一下 AVL 还有下面这些&#xff0c;can you try&#xff1f; 平衡二叉树的插入 LL平衡旋转&#xff08;右单旋转&#xff09; 怎么理解&#xff1f; 首先我们可以看见啊&#xff0c;b图A左边和右边的不平衡的&#xff0c;非常的难受 于是我们可以这…

VR 地震安全演练:“透视” 地震,筑牢企业安全新护盾​

与传统的地震安全教育方式相比&#xff0c;VR 地震安全技术具有无可比拟的优势。在过去漫长的岁月里&#xff0c;我们主要依赖书本、讲座和视频等较为常规的手段来了解地震知识和逃生技巧。​ 书本上密密麻麻的文字以及静态的图片&#xff0c;虽然能够较为系统地传递理论性的信…

30-Oracle 23ai-回顾从前的Flashback设置

配置和测试了Oracle 23 ai的Flashback Log Placement后&#xff0c; 刚好身边11g,19c的环境都在&#xff0c;还是把从前的flashback整理下&#xff0c;温故知新&#xff0c;循序渐进。 一、闪回技术 Flashback Database 允许将整个数据库回退到过去的某个时间点/SCN&#xff…

Gartner《Reference Architecture for Federated Analytics》学习心得

研究背景 随着分析平台越来越易于被广泛用户使用,以及组织内用例的不断增多和多样化,分析架构的去中心化给专注于架构的分析专家带来了混乱。组织在交付一致、可复用和可信的分析方面面临挑战,分布式分析架构需要在控制和敏捷之间取得平衡,然而许多组织在这方面的控制力不…

Windows下Docker一键部署Dify教程

Windows环境下Docker部署Dify完整指南 &#x1f4cb; 目录 系统要求Docker安装验证Docker安装Dify部署访问Dify常见问题管理命令 &#x1f5a5;️ 系统要求 在开始安装之前&#xff0c;请确保你的Windows系统满足以下要求&#xff1a; 硬件要求 CPU: > 2核心内存: >…

idea maven打包很慢,怎么提速-多线程

作为一个技术运维人员&#xff0c;经常要更新程序然后重新打包发布jar包。由于程序子模块多&#xff0c;需要相互引用每次打包的时候都需要很久&#xff0c;怎么可以让打包快一点呢&#xff1f;可以启动打包的多线程。请参照下图设置&#xff0c;线程数量应该和cpu内核数量要能…