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

自然语言处理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.lryc.cn/news/603947.html

相关文章:

  • 烟草复杂包装识别准确率↑31%!陌讯多模态SKU检测算法在零售终端的实战解析
  • CMake 完全实战指南:从入门到精通
  • MySQL的JDBC编程
  • Seq2Seq学习笔记
  • 【绘制图像轮廓】——图像预处理(OpenCV)
  • idea运行tomcat日志乱码问题
  • CentOS安装ffmpeg并转码视频为mp4
  • 编程算法在金融、医疗、教育、制造业等领域的落地案例
  • 单片机(STM32-WIFI模块)
  • windows电脑如何截屏 windows电脑截屏教程汇总
  • 【机器学习深度学习】DeepSpeed框架:高效分布式训练的开源利器
  • Python Flask: Windows 2022 server SMB账户(共享盘账户)密码修改
  • 影刀RPA_初级课程_玩转影刀自动化_EXCEL操作自动化
  • 数据结构(5)单链表算法题(中)
  • 第二十二天(数据结构,无头节点的单项链表)
  • 期刊基础学习
  • 抵御酒店管理系统收银终端篡改攻击 API 加密的好处及实现——仙盟创梦IDE
  • 携全双工语音通话大模型亮相WAIC,Soul重塑人机互动新范式
  • BitMart 启动中文品牌“币市”:引领加密资产本地化发展新篇章
  • 【Linux】批量处理多个用户的 sudo 权限问题
  • 01背包问题:Python动态规划深度解析与工程实践
  • napping-1.0.1靶机练习
  • MySQL(配置)——MariaDB使用
  • 2025年Solar应急响应公益月赛-7月笔记ing
  • Java 10 新特性解析
  • 机器学习笔记(四)——聚类算法KNN、Kmeans、Dbscan
  • 域名常见问题集(九)——域名市场介绍
  • 基于JavaWeb的兼职发布平台的设计与实现
  • LangChain和LangGraph 里面的 `create_react_agent`有什么不同
  • 从0到1理解大语言模型:读《大语言模型:从理论到实践(第2版)》笔记