当前位置: 首页 > news >正文

深度学习15(GRU、LSTM+词嵌入+seq2seq+attention)

目录

GRU、LSTM

词嵌入

seq2seq

attention


GRU、LSTM

        GRU和LSTM,这是两种重要的循环神经网络(RNN)变体,用于解决传统RNN中的梯度消失和长程依赖问题。

GRU:

GRU增加了两个门,一个重置门(reset gate)和一个更新门(update gate)

  • 重置门决定了如何将新的输入信息与前面的记忆相结合
  • 更新门定义了前面记忆保存到当前时间步的量
  • 如果将重置门设置为 1,更新门设置为0,那么将再次获得标准 RNN 模型

为了解决短期记忆问题,每个递归单元能够自适应捕捉不同尺度的依赖关系
解决梯度消失的问题,在隐层输出的地方ht,ht-1的关系用加法而不是RNN当中乘法+激活函数

LSTM:

LSTM增加了三个门:遗忘门f、更新门4、输出门o

  • 重置门决定了如何将新的输入信息与前面的记忆相结合
  • 更新门定义了前面记忆保存到当前时间步的量
  • 遗忘门决定丢弃哪些历史信息

便于记忆更长距离的时间状态。


词嵌入

        定义:指把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量。

特点:

  • 能够体现出词与词之间的关系
  • 能够得到相似词。

        词嵌入(Word Embedding)的实现本质上是通过神经网络学习一个映射函数,将离散的高维 one-hot 向量转换为低维连续向量。

原始空间 (|V|=5)       嵌入空间 (d=2)dog → [1,0,0,0,0]  --\\
cat  → [0,1,0,0,0]  ----- W (5×2矩阵) → dog: [0.8, -0.3]/               cat: [0.7, -0.2]
apple→ [0,0,1,0,0]  --/               apple: [-0.5, 0.9]
banana→[0,0,0,1,0]                    banana: [-0.4, 0.8]
car  → [0,0,0,0,1]                    car: [0.2, 1.1]

seq2seq

        seq2seq是一个Encoder-Decoder 结构的网络,它的输入是一个序列,输出也是一个序列,Encoder 中将一个可变长度的信号序列变为固定长度的向量表达,Decoder 将这个固定长度的向量变成可变长度的目标的信号序列。

相当于将RNN模型当中的s0输入encoder

编解码器作用:

  • 编码器 (Encoder):将不定长输入序列 x1,…,xt 编码为固定长度的状态向量 C

  • 解码器 (Decoder):基于编码状态 CC 和已生成序列 y1,…,yt−1,输出当前词 ytyt​ 的条件概率

        目标函数
        argmax_{y_1,\ldots,y_{T'}} P(y_1,\ldots,y_{T'} \mid x_1,\ldots,x_T)


attention

        对于更长的句子,seg2seq就显得力不从心了,无法做到准确的翻译,一下是通常BLEU的分数随着句子的长度变化,可以看到句子非常长的时候,分数就很低。

        本质原因:在Encoder-Decoder结构中,Encoder把所有的输入序列都编码成一个统一的语义特征C再解码,因此,C中必须包含原始序列中的所有信息它的长度就成了限制模型性能的瓶颈。当要翻译的句子较长时,一个C可能存不下那么多信息,就会造成翻译精度的下降。

attention机制:

        建立Encoder的隐层状态输出到Decoder对应输出y所需要的上下文信息。
        目的:增加编码器信息输入到解码器中相同时刻的联系,其它时刻信息减弱。

http://www.xdnf.cn/news/1109611.html

相关文章:

  • 电子基石:硬件工程师的器件手册 (五) - 三极管:电流放大的基石与开关的利刃
  • 7. JVM类加载器与双亲委派模型
  • 关于两种网络攻击方式XSS和CSRF
  • 二分法寻找无序序列的峰值
  • [Token]Token merging for Vision Generation
  • 学python,PyCharm 和 VSCode哪个更好用?
  • ChatRex RexSeek RexThinker: 结合多模态大语言模型的目标检测模型构建
  • vue3+vit+vue-router路由,侧边栏菜单,面包屑导航设置层级结构
  • 商业机密保卫战:如何让离职员工带不走的客户资源?
  • 六年级数学知识边界总结思考-上册
  • Rust Web 全栈开发(五):使用 sqlx 连接 MySQL 数据库
  • 【赵渝强老师】国产数据库TiDB的代理路由:TiProxy
  • 服务器怎么跑Python项目?
  • 【代码随想录】刷题笔记——哈希表篇
  • MySQL 中图标字符存储问题探究:使用外挂法,毕业论文——仙盟创梦IDE
  • shiro550反序列化漏洞复现(附带docker源)
  • 【Docker基础】Dockerfile指令速览:基础常用指令详解
  • Leetcode百题斩-二分搜索
  • 使用langgraph 构建RAG 智能问答代理
  • springboot AOP面向切面编程
  • 连接池深度解析:原理、实现与最佳实践
  • Hap包引用的Hsp报签名错误怎么解决
  • 使用ESM3蛋白质语言模型进行快速大规模结构预测
  • 每日一SQL 【销售分析 III】
  • Python问题记录`No module named ‘matplotlib‘` 问题解决方案
  • 基于SEP3203微处理器的嵌入式最小硬件系统设计
  • 基于 Python 的数据分析技术综述
  • 剑指offer56_数组中唯一只出现一次的数字
  • 【MogDB】一种基于ctid分片并发查询以提升大表查询性能的方式
  • 【go】gopath、GO111MODULE=on作用