自然语言处理——循环神经网络

news2025/6/12 16:37:12

自然语言处理——循环神经网络

  • 循环神经网络
    • 应用到基于机器学习的自然语言处理任务
      • 序列到类别
      • 同步的序列到序列模式
      • 异步的序列到序列模式
  • 参数学习和长程依赖问题
  • 基于门控的循环神经网络
    • 门控循环单元(GRU)
    • 长短期记忆神经网络(LSTM)
  • 深度循环神经网络
    • 堆叠循环神经网络
    • 双向循环神经网络
  • 递归神经网络
    • 标准递归神经网络
    • Syntactically-Untied RvNN
    • Matrix-Vector Recursive Neural Network
    • Recursive Neural Tensor Network
  • 注意力机制

在前向神经网络中,由于相邻两层之间存在单向连接,每层的节点之间是无连接的(无循环),因此输入和输出的维数都是固定的,不能任意改变,而且也无法处理变长序列数据。
另外假设每次输入都是独立的,也就是说每次网络的输出只依赖于当前的输入。在这里插入图片描述
为了给网络增加记忆能力,我们提出了延时神经网络(Time Delay Neural Network,TDNN)建立一个额外的延时单元,用来存储网络的历史信息(可以包括输入、输出、隐状态等),这样,前馈网络就具有了短期记忆的能力。
h t ( l ) = f ( h t ( l − 1 ) , h t − 1 ( l − 1 ) , ⋯   , h t − K ( l − 1 ) ) \boldsymbol{h}_{t}^{(l)}=f\left(\boldsymbol{h}_{t}^{(l-1)}, \boldsymbol{h}_{t-1}^{(l-1)}, \cdots, \boldsymbol{h}_{t-K}^{(l-1)}\right) ht(l)=f(ht(l1),ht1(l1),,htK(l1))

循环神经网络

通过使用带自反馈的神经元,能够处理任意长度的时序数据。
在这里插入图片描述

  • 循环神经网络比前馈神经网络更加符合生物神经网络的结构。
  • 循环神经网络已经被广泛应用在语音识别、语言模型以及自然语言生成等任务上
    在这里插入图片描述
    状态更新时:每一层的隐藏层依赖于当前时刻的输入和前一时刻的隐藏层表示 h t = f ( U h t − 1 + W x t + b ) \boldsymbol{h}_{t}=f\left(\boldsymbol{U} \boldsymbol{h}_{t-1}+\boldsymbol{W} \boldsymbol{x}_{\boldsymbol{t}}+\boldsymbol{b}\right) ht=f(Uht1+Wxt+b)

应用到基于机器学习的自然语言处理任务

序列到类别

正常模式下最后一个隐藏层的表示作为输出(记住了前面全部的隐藏层信息)。
也可以进行AveragePooling,按照时间进行平均采样。
在这里插入图片描述

同步的序列到序列模式

中文分词就是用的就是如下图所示的模式
在这里插入图片描述

异步的序列到序列模式

先对输入句子进行隐藏层表示(Encoder)。之后预测句中第一个单词,再依次预测后面的隐藏层表示和y(Decoder),输入序列和输出序列的长度不一定一样。机器翻译就是这样子的一个典型例子。
在这里插入图片描述

参数学习和长程依赖问题

给定一个训练样本(𝒙,𝒚),其中 𝒙 = ( 𝒙 1 , ⋯ , 𝒙 𝑻 ) 𝒙=(𝒙_1,⋯,𝒙_𝑻) x=(x1,,xT)为长度是T 的输入序列, 𝒚 = 𝒚 1 , ⋯ , 𝒚 𝑻 𝒚= 𝒚_1, ⋯,𝒚_𝑻 y=y1,,yT 是长度为T 的标签序列。
时刻t的瞬时损失函数为 L t = L ( y t , g ( h t ) ) \mathcal{L}_{t}=\mathcal{L}\left(\boldsymbol{y}_{t}, g\left(\boldsymbol{h}_{t}\right)\right) Lt=L(yt,g(ht))
总损失函数为 L = ∑ t = 1 T L t \mathcal{L}=\sum_{t=1}^{T} \mathcal{L}_{t} L=t=1TLt
梯度:随时间反向传播算法
在这里插入图片描述
δ t , k = δ t , t ∏ τ = k t − 1 ( U T f ′ ( z τ ) ) γ ≅ δ t , t γ t − k \begin{aligned} \delta_{t, k} & =\delta_{t, t} \prod_{\tau=k}^{t-1} \frac{\left(\boldsymbol{U}^{T} f^{\prime}\left(\boldsymbol{z}_{\tau}\right)\right)}{\gamma} \\ & \cong \delta_{t, t} \gamma^{t-k}\end{aligned} δt,k=δt,tτ=kt1γ(UTf(zτ))δt,tγtk
由于梯度爆炸或消失问题,实际上只能学习到短周期的依赖关系。这就是所谓的长程依赖问题(循环神经网络在时间维度上非常深)。

梯度爆炸问题

  • 权重衰减
  • 梯度截断

梯度消失问题

  • 改进模型

改进方法:

  1. 循环边改为线性依赖关系
    在这里插入图片描述
    δ t , k = δ t , t ∏ τ = k t − 1 ( U T f ′ ( z τ ) γ ≅ δ t , t γ t − k \begin{aligned} \delta_{t, k} & =\delta_{t, t} \prod_{\tau=k}^{t-1} \frac{\left(\boldsymbol{U}^{T} f^{\prime}\left(\boldsymbol{z}_{\tau}\right)\right.}{\gamma} \\ & \cong \delta_{t, t} \boldsymbol{\gamma}^{t-k}\end{aligned} δt,k=δt,tτ=kt1γ(UTf(zτ)δt,tγtk
    将f去掉并将U变成单位阵,宗旨是为了让gamma=1
  2. 增加非线性
    h t = h t − 1 + g ( x t , h t − 1 ; θ ) \boldsymbol{h}_{t}=\boldsymbol{h}_{t-1}+\boldsymbol{g}\left(\boldsymbol{x}_{t}, \boldsymbol{h}_{t-1} ; \theta\right) ht=ht1+g(xt,ht1;θ)
    非线性激活函数不可以用RELU:会导致h爆炸,Sigmoid也不可以,没有负区间,同样会导致h爆炸,用tanh(-1,1)

基于门控的循环神经网络

门控机制:控制信息的累积速度,包括有选择地加入新的信息,并有选择地遗忘之前历史累计的信息

门控循环单元(GRU)

更新门用于控制前一时刻的状态信息被带入到当前状态中的程度,也就是更新门帮助模型决定到底要将多少过去的信息传递到未来,简单来说就是用于更新记忆。

简单来说重置门就是构造一个输入(决定输入中有多少过去的成分);更新门就是决定构造的新输入有多少会传下去
在这里插入图片描述
当rt的值接近0时,说明上一时刻的内容需要全部丢弃,只保留当前时刻的输入,所以可以用来丢弃与预测无关的历史信息。
当rt的值接近1时,表示保留上一时刻的隐藏状态。
重置门决定了如何将新的输入信息与前面的记忆相结合。
在这里插入图片描述

长短期记忆神经网络(LSTM)

LSTM(长短期记忆网络)是RNN的一种特殊类型,它通过引入“门”(输入门、遗忘门、输出门)来解决传统RNN在处理长序列时梯度消失或梯度爆炸的问题,从而有效捕捉长期依赖关系。这些门控机制像阀门一样控制着信息在“细胞状态”(Cell State)中的流动、添加和删除,允许重要信息在较长时间内保留,而无关信息则被过滤掉。
在这里插入图片描述

深度循环神经网络

堆叠循环神经网络

在这里插入图片描述

双向循环神经网络

在这里插入图片描述

递归神经网络

循环神经网络用于处理任意长度的时序数据,那么如何处理具有预定义结构的数据?我们需要参照程序语言的句法结构。在这里插入图片描述
转变到自然语言的句法结构之后:
在这里插入图片描述
Richard Socher等人在2011年提出了递归神经网络
在这里插入图片描述
当然了递归神经网络也可能会退化为循环神经网络,当递归神经网络的树状结构退化为线性的链式结构时,它就退化(或者说等价于)为循环神经网络。

标准递归神经网络

所有的W都是共享的,无法区分叶结点的词性
在这里插入图片描述

Syntactically-Untied RvNN

不同的句法成分类别对应不同的聚合函数,把W改成不是全局共享的
在这里插入图片描述

Matrix-Vector Recursive Neural Network

每个节点由一个向量和一个矩阵来共同表示,但是有一个缺点就是参数量过大。
在这里插入图片描述

Recursive Neural Tensor Network

聚合时引入张量运算
在这里插入图片描述

注意力机制

人脑每个时刻接收的外界输入信息非常多,包括来源于视觉、听觉、触觉的各种各样的信息。但就视觉来说,眼睛每秒钟都会发送千万比特的信息给视觉神经系统。人脑通过注意力来解决信息超载问题。
在这里插入图片描述
注意力机制可以分为两步:

  1. 计算注意力分布 α \alpha α
    α n = p ( z = n ∣ X , q ) = softmax ⁡ ( s ( x n , q ) ) = exp ⁡ ( s ( x n , q ) ) ∑ j = 1 N exp ⁡ ( s ( x j , q ) ) \begin{aligned} \alpha_{n} & =p(z=n \mid \boldsymbol{X}, \boldsymbol{q}) \\ & =\operatorname{softmax}\left(s\left(\boldsymbol{x}_{n}, \boldsymbol{q}\right)\right) \\ & =\frac{\exp \left(s\left(\boldsymbol{x}_{n}, \boldsymbol{q}\right)\right)}{\sum_{j=1}^{N} \exp \left(s\left(\boldsymbol{x}_{j}, \boldsymbol{q}\right)\right)}\end{aligned} αn=p(z=nX,q)=softmax(s(xn,q))=j=1Nexp(s(xj,q))exp(s(xn,q))
    s ( x n , q ) s(x_n,q) s(xn,q)是打分函数
  2. 根据 α \alpha α来计算输入信息的加权平均
    att ⁡ ( X , q ) = ∑ n = 1 N α n x n = E z ∼ p ( z ∣ X , q ) [ x z ] \begin{aligned} \operatorname{att}(\boldsymbol{X}, \boldsymbol{q}) & =\sum_{n=1}^{N} \alpha_{n} \boldsymbol{x}_{n} \\ & =\mathbb{E}_{z \sim p(z \mid \boldsymbol{X}, \boldsymbol{q})}\left[\boldsymbol{x}_{z}\right]\end{aligned} att(X,q)=n=1Nαnxn=Ezp(zX,q)[xz]
    在这里插入图片描述

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

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

相关文章

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…

SpringTask-03.入门案例

一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…

ios苹果系统,js 滑动屏幕、锚定无效

现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…

网络编程(UDP编程)

思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如&#xff1a…

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…

Map相关知识

数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…

图表类系列各种样式PPT模版分享

图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…