【自然语言处理(NLP)】深度循环神经网络(Deep Recurrent Neural Network,DRNN)原理和实现

news2025/1/30 11:13:49

文章目录

  • 介绍
  • 深度循环神经网络(DRNN)原理和实现
    • 结构特点
    • 工作原理
      • 符号含义
      • 公式含义
    • 应用领域
    • 优势与挑战
    • DRNN 代码实现

个人主页:道友老李
欢迎加入社区:道友老李的学习社区

介绍

**自然语言处理(Natural Language Processing,NLP)**是计算机科学领域与人工智能领域中的一个重要方向。它研究的是人类(自然)语言与计算机之间的交互。NLP的目标是让计算机能够理解、解析、生成人类语言,并且能够以有意义的方式回应和操作这些信息。

NLP的任务可以分为多个层次,包括但不限于:

  1. 词法分析:将文本分解成单词或标记(token),并识别它们的词性(如名词、动词等)。
  2. 句法分析:分析句子结构,理解句子中词语的关系,比如主语、谓语、宾语等。
  3. 语义分析:试图理解句子的实际含义,超越字面意义,捕捉隐含的信息。
  4. 语用分析:考虑上下文和对话背景,理解话语在特定情境下的使用目的。
  5. 情感分析:检测文本中表达的情感倾向,例如正面、负面或中立。
  6. 机器翻译:将一种自然语言转换为另一种自然语言。
  7. 问答系统:构建可以回答用户问题的系统。
  8. 文本摘要:从大量文本中提取关键信息,生成简短的摘要。
  9. 命名实体识别(NER):识别文本中提到的特定实体,如人名、地名、组织名等。
  10. 语音识别:将人类的语音转换为计算机可读的文字格式。

NLP技术的发展依赖于算法的进步、计算能力的提升以及大规模标注数据集的可用性。近年来,深度学习方法,特别是基于神经网络的语言模型,如BERT、GPT系列等,在许多NLP任务上取得了显著的成功。随着技术的进步,NLP正在被应用到越来越多的领域,包括客户服务、智能搜索、内容推荐、医疗健康等。

深度循环神经网络(DRNN)原理和实现

深度循环神经网络(Deep Recurrent Neural Network,DRNN)是在循环神经网络(RNN)基础上发展而来的一种深度学习模型。

结构特点

  • 多层循环结构:普通的RNN通常只有一层循环层,而DRNN包含多个循环层堆叠在一起。每一层循环层都可以学习到不同层次和粒度的序列特征。底层的循环层可以捕捉到序列中的局部短期依赖关系,随着层数的增加,高层的循环层能够逐渐提取出更抽象、更长期的依赖关系。
  • 丰富的连接方式:除了循环层之间的堆叠,DRNN还可以有多种连接方式。例如,每一层循环层的输出可以直接连接到下一层循环层的输入,也可以采用跳跃连接的方式,将底层循环层的输出直接连接到高层循环层,甚至可以连接到输出层,这种连接方式有助于信息的快速传递和融合,增强模型的表达能力。

工作原理

  • 信息传递与处理:在每个时间步,DRNN的每一层循环单元都会接收当前的输入以及上一层循环单元在前一个时间步的隐藏状态。然后,通过特定的计算(如矩阵乘法和非线性激活函数)来更新当前层的隐藏状态。这个过程在所有的时间步和所有的循环层中依次进行,使得模型能够对序列中的信息进行逐步深入的处理和分析。
  • 梯度传播与学习:在训练过程中,DRNN使用时间反向传播算法(BPTT)来计算梯度并更新参数。由于深度结构的存在,梯度在反向传播过程中需要经过多个循环层和时间步。这可能会导致梯度消失或梯度爆炸的问题,即梯度在传播过程中变得非常小或非常大,使得模型难以训练。为了缓解这些问题,通常会采用一些技巧,如使用合适的激活函数、进行梯度裁剪、采用正则化方法等。

在这里插入图片描述
在这里插入图片描述
某一层在时间步 t t t的隐藏状态计算以及最终输出计算:

符号含义

  • 隐藏状态
    • H t ( l ) \mathbf{H}_t^{(l)} Ht(l):表示在第 l l l层、时间步 t t t的隐藏状态矩阵,维度一般为 [ b a t c h _ s i z e , h i d d e n _ s i z e ( l ) ] [batch\_size, hidden\_size^{(l)}] [batch_size,hidden_size(l)] b a t c h _ s i z e batch\_size batch_size是批量大小, h i d d e n _ s i z e ( l ) hidden\_size^{(l)} hidden_size(l)是第 l l l层隐藏层神经元数量。
    • H t ( l − 1 ) \mathbf{H}_t^{(l - 1)} Ht(l1):第 l − 1 l - 1 l1层、时间步 t t t的隐藏状态矩阵,维度为 [ b a t c h _ s i z e , h i d d e n _ s i z e ( l − 1 ) ] [batch\_size, hidden\_size^{(l - 1)}] [batch_size,hidden_size(l1)],用于为当前层提供输入信息。
    • H t − 1 ( l ) \mathbf{H}_{t - 1}^{(l)} Ht1(l):第 l l l层、时间步 t − 1 t - 1 t1的隐藏状态矩阵,维度是 [ b a t c h _ s i z e , h i d d e n _ s i z e ( l ) ] [batch\_size, hidden\_size^{(l)}] [batch_size,hidden_size(l)],体现循环特性。
  • 输出
    • O t \mathbf{O}_t Ot:时间步 t t t的最终输出矩阵,维度为 [ b a t c h _ s i z e , o u t p u t _ s i z e ] [batch\_size, output\_size] [batch_size,output_size] o u t p u t _ s i z e output\_size output_size是输出层神经元数量。
  • 权重矩阵和偏置项
    • W x h ( l ) \mathbf{W}_{xh}^{(l)} Wxh(l):第 l − 1 l - 1 l1层隐藏状态到第 l l l层隐藏状态的权重矩阵,维度为 [ h i d d e n _ s i z e ( l − 1 ) , h i d d e n _ s i z e ( l ) ] [hidden\_size^{(l - 1)}, hidden\_size^{(l)}] [hidden_size(l1),hidden_size(l)],负责将上一层隐藏状态信息转换到当前层隐藏状态空间。
    • W h h ( l ) \mathbf{W}_{hh}^{(l)} Whh(l):第 l l l层自身隐藏状态到隐藏状态的权重矩阵,维度是 [ h i d d e n _ s i z e ( l ) , h i d d e n _ s i z e ( l ) ] [hidden\_size^{(l)}, hidden\_size^{(l)}] [hidden_size(l),hidden_size(l)],用于在前一时刻隐藏状态与当前输入共同作用时,对当前层隐藏状态计算进行变换。
    • W h q \mathbf{W}_{hq} Whq:第 L L L层(最后一层)隐藏状态到输出层的权重矩阵,维度为 [ h i d d e n _ s i z e ( L ) , o u t p u t _ s i z e ] [hidden\_size^{(L)}, output\_size] [hidden_size(L),output_size],将最后一层隐藏状态表示转换为输出。
    • b h ( l ) \mathbf{b}_{h}^{(l)} bh(l):第 l l l层隐藏层的偏置向量,维度为 [ h i d d e n _ s i z e ( l ) ] [hidden\_size^{(l)}] [hidden_size(l)] ,给第 l l l层隐藏层计算增加可学习的偏置值。
    • b q \mathbf{b}_{q} bq:输出层的偏置向量,维度是 [ o u t p u t _ s i z e ] [output\_size] [output_size] ,给输出层计算增加偏置。
  • 激活函数
    • ϕ l \phi_l ϕl:第 l l l层使用的激活函数,常见的有sigmoid、tanh、ReLU等,为计算引入非线性。

公式含义

  • 隐藏状态计算:公式 H t ( l ) = ϕ l ( H t ( l − 1 ) W x h ( l ) + H t − 1 ( l ) W h h ( l ) + b h ( l ) ) \mathbf{H}_t^{(l)} = \phi_l(\mathbf{H}_t^{(l - 1)}\mathbf{W}_{xh}^{(l)} + \mathbf{H}_{t - 1}^{(l)}\mathbf{W}_{hh}^{(l)} + \mathbf{b}_{h}^{(l)}) Ht(l)=ϕl(Ht(l1)Wxh(l)+Ht1(l)Whh(l)+bh(l))表示在第 l l l层、时间步 t t t,先将上一层(第 l − 1 l - 1 l1层)在时间步 t t t的隐藏状态 H t ( l − 1 ) \mathbf{H}_t^{(l - 1)} Ht(l1)与权重矩阵 W x h ( l ) \mathbf{W}_{xh}^{(l)} Wxh(l)相乘,同时将本层(第 l l l层)上一时间步 t − 1 t - 1 t1的隐藏状态 H t − 1 ( l ) \mathbf{H}_{t - 1}^{(l)} Ht1(l)与权重矩阵 W h h ( l ) \mathbf{W}_{hh}^{(l)} Whh(l)相乘,然后把这两个乘积结果相加,再加上偏置 b h ( l ) \mathbf{b}_{h}^{(l)} bh(l),最后通过激活函数 ϕ l \phi_l ϕl对其进行非线性变换,得到第 l l l层在时间步 t t t的隐藏状态 H t ( l ) \mathbf{H}_t^{(l)} Ht(l) 。这一过程在各层和各时间步重复进行,实现对序列信息的多层处理。
  • 输出计算:公式 O t = H t ( L ) W h q + b q \mathbf{O}_t = \mathbf{H}_t^{(L)}\mathbf{W}_{hq} + \mathbf{b}_{q} Ot=Ht(L)Whq+bq用于计算最终输出。在经过多层循环层处理后,取最后一层(第 L L L层)在时间步 t t t的隐藏状态 H t ( L ) \mathbf{H}_t^{(L)} Ht(L),与隐藏层到输出层的权重矩阵 W h q \mathbf{W}_{hq} Whq相乘,再加上输出层偏置 b q \mathbf{b}_{q} bq,得到时间步 t t t的最终输出 O t \mathbf{O}_t Ot

应用领域

  • 自然语言处理:在机器翻译中,能够处理源语言和目标语言的复杂序列信息,实现更准确的翻译;在文本生成任务中,可以生成更连贯、更有逻辑的文本内容;在情感分析中,能更好地捕捉文本中的情感线索,提高情感分类的准确率。
  • 语音识别:可以对语音信号的时间序列进行建模,更好地识别语音中的单词和句子,提高语音识别的精度。
  • 时间序列预测:在金融领域,对股票价格、汇率等时间序列数据进行预测;在气象领域,预测气温、降水等气象数据;在工业领域,对设备的运行状态、生产数据等进行预测和监控。
  • 视频处理:可以用于视频中的动作识别、视频内容分类、视频生成等任务,通过对视频帧序列的学习,理解视频中的语义信息和时空关系。

优势与挑战

  • 优势:相比普通的RNN,能够学习到更复杂、更深入的序列特征,对长序列数据中的长期依赖关系有更好的建模能力,在各种序列数据处理任务中通常能取得更好的性能表现。
  • 挑战:训练难度较大,由于深度结构和循环特性,训练过程中容易出现梯度问题,导致模型难以收敛或过拟合;计算复杂度较高,需要更多的计算资源和时间来进行训练和推理;模型的可解释性较差,难以直观地理解模型是如何做出决策和预测的。

DRNN 代码实现

双层隐藏层的循环神经网络 训练和预测:

import torch
from torch import nn
import dltools

batch_size, num_steps = 32, 35
train_iter, vocab = dltools.load_data_time_machine(batch_size, num_steps)

vocab_size, num_hiddens, num_layers = len(vocab), 256, 2
num_inputs = vocab_size
device = dltools.try_gpu()
rnn_layer = nn.RNN(num_inputs, num_hiddens, num_layers)
model = dltools.RNNModel(rnn_layer, len(vocab))
model = model.to(device)

num_epochs, lr = 500, 1
dltools.train_ch8(model, train_iter, vocab, lr, num_epochs, device)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

2025数学建模美赛|F题成品论文

国家安全政策与网络安全 摘要 随着互联网技术的迅猛发展,网络犯罪问题已成为全球网络安全中的重要研究课题,且网络犯罪的形式和影响日益复杂和严重。本文针对网络犯罪中的问题,基于多元回归分析和差异中的差异(DiD)思…

自定义数据集 使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测

代码: import torch import numpy as np import torch.nn as nn# 定义数据:x_data 是特征,y_data 是标签(目标值) data [[-0.5, 7.7],[1.8, 98.5],[0.9, 57.8],[0.4, 39.2],[-1.4, -15.7],[-1.4, -37.3],[-1.8, -49.…

关于使用PHP时WordPress排错——“这意味着您在wp-config.php文件中指定的用户名和密码信息不正确”的解决办法

本来是看到一位好友的自己建站,所以突发奇想,在本地装个WordPress玩玩吧,就尝试着装了一下,因为之前电脑上就有MySQL,所以在自己使用PHP建立MySQL时报错了。 最开始是我的php启动mysql时有问题,也就是启动过…

【蓝桥杯】43694.正则问题

题目描述 考虑一种简单的正则表达式: 只由 x ( ) | 组成的正则表达式。 小明想求出这个正则表达式能接受的最长字符串的长度。 例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是: xxxxxx,长度是 6。 输入描述 一个由 x()| 组成的正则表达式。…

服务器虚拟化技术详解与实战:架构、部署与优化

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 引言 在现代 IT 基础架构中,服务器虚拟化已成为提高资源利用率、降低运维成本、提升系统灵活性的重要手段。通过服务…

jvm--类的生命周期

学习类的生命周期之前,需要了解一下jvm的几个重要的内存区域: (1)方法区:存放已经加载的类信息、常量、静态变量以及方法代码的内存区域 (2)常量池:常量池是方法区的一部分&#x…

TensorFlow实现逻辑回归模型

逻辑回归是一种经典的分类算法,广泛应用于二分类问题。本文将介绍如何使用TensorFlow框架实现逻辑回归模型,并通过动态绘制决策边界和损失曲线来直观地观察模型的训练过程。 数据准备 首先,我们准备两类数据点,分别表示两个不同…

《十七》浏览器基础

浏览器:是安装在电脑里面的一个软件,能够将页面内容渲染出来呈现给用户查看,并让用户与网页进行交互。 常见的主流浏览器: 常见的主流浏览器有:Chrome、Safari、Firefox、Opera、Edge 等。 输入 URL,浏览…

网络安全 | F5-Attack Signatures-Set详解

关注:CodingTechWork 创建和分配攻击签名集 可以通过两种方式创建攻击签名集:使用过滤器或手动选择要包含的签名。  基于过滤器的签名集仅基于在签名过滤器中定义的标准。基于过滤器的签名集的优点在于,可以专注于定义用户感兴趣的攻击签名…

STranslate 中文绿色版即时翻译/ OCR 工具 v1.3.1.120

STranslate 是一款功能强大且用户友好的翻译工具,它支持多种语言的即时翻译,提供丰富的翻译功能和便捷的使用体验。STranslate 特别适合需要频繁进行多语言交流的个人用户、商务人士和翻译工作者。 软件功能 1. 即时翻译: 文本翻译&#xff…

基于微信小程序的助农扶贫系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

我谈区域偏心率

偏心率的数学定义 禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》P312 区域的拟合椭圆看这里。 Rafael Gonzalez的二阶中心矩的表达不说人话。 我认为半长轴和半短轴不等于特征值,而是特征值的根号。…

关于低代码技术架构的思考

我们经常会看到很多低代码系统的技术架构图,而且经常看不懂。是因为技术架构图没有画好,还是因为技术不够先进,有时候往往都不是。 比如下图: 一个开发者,看到的视角往往都是技术层面,你给用户讲React18、M…

若依路由配置教程

1. 路由配置文件 2. 配置内容介绍 { path: "/tool/gen-edit", component: Layout, //在路由下,引用组件的名称,在页面中包括这个组件的内容(页面框架内容) hidden: true, //此页面的内容,在左边的菜单中不用显示。 …

基于ESP8266的多功能环境监测与反馈系统开发指南

项目概述 本系统集成了物联网开发板、高精度时钟模块、环境传感器和可视化显示模块,构建了一个智能环境监测与反馈装置。通过ESP8266 NodeMCU作为核心控制器,结合DS3231实时时钟、DHT11温湿度传感器、光敏电阻和OLED显示屏,实现了环境参数的…

HTML5 Web Worker 的使用与实践

引言 在现代 Web 开发中,用户体验是至关重要的。如果页面在执行复杂计算或处理大量数据时变得卡顿或无响应,用户很可能会流失。HTML5 引入了 Web Worker,它允许我们在后台运行 JavaScript 代码,从而避免阻塞主线程,保…

flutter_学习记录_00_环境搭建

1.参考文档 Mac端Flutter的环境配置看这一篇就够了 flutter的中文官方文档 2. 本人环境搭建的背景 本人的电脑的是Mac的,iOS开发,所以iOS开发环境本身是可用的;外加Mac电脑本身就会配置Java的环境。所以,后面剩下的就是&#x…

自助设备系统设置——对接POS支付

输入管理员密码 一、录入POS网关信息 填写网关信息后保存,重新启动软件

Calibre(阅读转换)-官方开源中文版[完整的电子图书馆系统,包括图书馆管理,格式转换,新闻,材料转换为电子书]

Calibre(阅读&转换)-官方开源中文版 链接:https://pan.xunlei.com/s/VOHbKYUwd3ASVXTi2Ok1vkK3A1?pwd92ny#