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

自然语言处理NLP(3)

上文:
自然语言处理NLP(1)
自然语言处理NLP(2)

Gated RNN & LSTM
  1. 简单RNN存在的问题

    随着时间的回溯,简单RNN不能避免梯度消失或者梯度爆炸

  2. 梯度裁剪

    用来解决梯度爆炸问题

    code:

    g:所有参数梯度的和;threshold:阈值

    在这里插入图片描述

  3. Gated RNN

    用来解决梯度消失问题

    Gated RNN框架下的两种结构:LSTM GRU

  4. LSTM (Long Short-Term Memory:长短期记忆)长时间维持短期记忆

    仅输出隐藏状态向量h,记忆单元c对外不可见

    1. ht = tanh(Ct)

    在这里插入图片描述

    1. Gated 门:用来控制数据的流动,门的开合程度是自动从数据中学习到的,有专门的权重参数用于控制门的开合程度,这些权重参数也是通过学习被更新,sigmoid函数用于求门的开合程度

    2. 输出门

      对tanh(Ct)施加门,因为这个门管理下一个隐藏状态ht的输出,所以这个门称为输出门output gate

      输出门的开合程度由xt和ht-1求出 sigmoid函数用于求门的开合程度:

      在这里插入图片描述

在这里插入图片描述

  1. 遗忘门

    对记忆但会员Ct-1添加一个忘记不必要记忆的门,这个门称为遗忘门 forget gate

    遗忘门的开合程度:

    在这里插入图片描述

  2. 新的记忆单元

    遗忘门从上一时刻的记忆单元删除了应该忘记的,现在我们还想向这个记忆单元添加一些应当记住的,为此我们添加新的tanh节点

    g:向记忆单元添加的新信息

    将g加到上一时刻的Ct-1上,从而形成新的记忆

    在这里插入图片描述

    在这里插入图片描述

  3. 输入门

    对这个新的记忆单元g添加门,这个门称为输入门 input gate

    输入门的开合程度:

    在这里插入图片描述

  4. 使用LSTM的语言模型

    Embedding -> LSTM -> Affine -> Softmax with Loss

  5. 改进

    1. LSTM的多层化

      我们可以叠加多个LSTM层,从而学习更加复杂的模式(在PTB数据集上学习语言模型的情况下,LSTM的层数为2~4时,结果比较好)

    2. Dropout抑制过拟合

      常规Dropout:在深度方向(垂直方向)上插入Dropout层

      变分Dropout:用在时间方向上

    3. 权重共享 weight tying

      Embedding层和Affine层的权重共享,可以减少需要学习的参数数量

基于RNN生成文本
  1. 如何生成下一个新单词?

    概率性的选择:根据概率分布进行选择,这样概率高的单词容易被选到,概率低的单词难以被选到。然后再把选中的词当作输入,再次选择下一个新的单词

  2. seq2seq模型:Encoder-Decoder模型 编码器-解码器模型

    编码器对输入数据进行编码,解码器对被编码的数据进行解码

    编码:就是将任意长度的文本转换为一个固定长度的向量

    seq2seq由两个LSTM层构成:编码器的LSTM和解码器的LSTM。LSTM层的隐藏状态是编码器和解码器的桥梁,在正向传播时,编码器的编码信息通过LSTM层的隐藏状态传递给解码器;反向传播时,解码器的梯度通过这个桥梁传递给编码器

  3. seq2seq改进

    1. 反转输入数据 Reverse

      反转输入数据的顺序,反转数据后梯度的传播可以更加平滑

    2. 偷窥 Peeky

      将集中了重要信息的编码器的输出h分配给解码器的其他层

  4. seq2seq的应用

    1. 聊天机器人 chatgpt

    2. 算法学习

    3. 自动图像描述

      编码器从LSTM换成CNN

Attention 注意力机制

Attention从数据中学习两个时序数据之间的对应关系,计算向量之间的相似度,输出这个相似度的加权和向量

  1. 结构

    Attention层放入LSTM和Affine层之间

    hs:LSTM中各个时刻的隐藏状态向量被整合为hs

    在这里插入图片描述

  2. 双向RNN

    让LSTM从两个方向进行处理:双向LSTM

    各个单词对应的隐藏状态向量可以从左右两个方向聚集信息,这些向量就编码了更均衡的信息

  3. Attention层的不同使用

    1. Attention层放入LSTM和Affine层之间(垂直方向)
    2. Attention层放入上一时刻的LSTM层、Affine层和当前时刻的LSTM层之间(时间方向)
  4. seq2seq的深层化 & skip connection

    为了让带Attention的seq2seq具有更强的表现力,加深LSTM层

    在加深层时使用到的一个技巧是残差连接(skip connection / residual connection / shortcut):是一种跨层连接的简单技巧

  5. Attention应用

    1. GNMT 谷歌神经机器翻译系统

    2. Transformer

      Attention is all you need

      Transformer不用RNN,而用Attention进行处理:self-Attention

    3. NTM Neural Turing Machine 神经图灵机

      计算机的内存操作可以通过神经网络复现:

      在rnn的外部配置一个存储信息的存储装置,使用Attention向这个存储装置读写必要的信息

GRU

GRU:Gated Recurrent Unit 门控循环单元

  1. 结构

    GRU相比于LSTM的结构,取消了记忆单元的使用,只使用隐藏状态

    在这里插入图片描述

    r:reset门:决定在多大程度上忽略过去的隐藏状态

    h~:新的隐藏状态(下列第三个式子)

    z:update门:更新隐藏状态

    (1-z)· ht-1:forget门

    z · h~:input门

在这里插入图片描述

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

相关文章:

  • leetcode 74. 搜索二维矩阵
  • 柔性生产前端动态适配:小批量换型场景下的参数配置智能切换技术
  • 汇总10个高质量免费AI生成论文网站,支持GPT4.0和DeepSeek-R1
  • cpolar 内网穿透 ubuntu 使用石
  • 2025年06月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • go install报错: should be v0 or v1, not v2问题解决
  • 【自制组件库】从零到一实现属于自己的 Vue3 组件库!!!
  • P2910 [USACO08OPEN] Clear And Present Danger S
  • 四、Linux核心工具:Vim, 文件链接与SSH
  • 永磁同步电机无速度算法--静态补偿电压模型Harnefors观测器
  • 人工智能技术革命:AI工具与大模型如何重塑开发者工作模式与行业格局
  • Linux 完整删除 Systemd 服务的步骤
  • redis得到shell的几种方法
  • 如何使用Spring AI框架开发mcp接口并发布成微服务
  • 31.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--财务服务--收支分类
  • 解决IDEA拉取GitLab项目报错:必须为访问令牌授予作用域[api, read user]
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(11):文法+单词
  • tcp通讯学习数据传输
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博文章数据可视化分析-文章评论量分析实现
  • Web3 网络安全漏洞的预防措施
  • 面向对象系统的单元测试层次
  • 算法思维进阶 力扣 375.猜数字大小 II 暴力递归 记忆化搜索 DFS C++详细算法解析 每日一题
  • K8s集群两者不同的对外暴露服务的方式
  • React--》实现 PDF 文件的预览操作
  • [2025CVPR-图象分类]ProAPO:视觉分类的渐进式自动提示优化
  • ubuntu22.04 安装 petalinux 2021.1
  • B+树高效实现与优化技巧
  • 微信小程序私密消息
  • 聚铭安全管家平台2.0实战解码 | 安服篇(三):配置保障 自动核查
  • yolov11的简单实例