循环神经网络 - 扩展到图结构之递归神经网络

news2025/4/16 13:43:22

本文我们来学习递归神经网络(Recursive Neural Network,RecNN),其是循环神经网络在有向无循环图上的扩展 。

递归神经网络是一类专门设计来处理具有层次结构或树形结构的数据的神经网络模型。它与更常见的循环神经网络(Recurrent Neural Network, RNN)在处理数据的方式上有所不同。

递归神经网络的一般结构为树状的层次结构:

上图所示的递归神经网络具体可以写为:

其中 𝜎(⋅) 表示非线性激活函数,𝑾 和 𝒃 是可学习的参数.同样,输出层 𝑦 可以为 一个分类器,比如:

当递归神经网络的结构退化为线性序列结构时,递归神经网络就等价于简单循环网络。

下面将从原理、结构以及具体案例三个方面来解释这一模型,同时说明它与简单循环网络的联系和区别。

1. 递归神经网络的基本原理

  • 数据结构导向
    递归神经网络主要用于处理树形结构的数据,例如语句的句法解析树、情感分析中短语的结构、或抽象语法树等。它假设输入数据天然地构成一个分层的结构,每个节点代表了一个局部单元(如单词或短语),而非简单地按照时间顺序排列。

  • 递归组合操作
    在递归神经网络中,模型会对树的每个内部节点进行递归计算。具体来说,对树中每个非叶子节点,其向量表示通常通过对其子节点表示进行组合来获得。数学上可以表示为:

    其中,hp 表示父节点的表示;hc1,hc2,…,hck 分别表示该父节点的各个子节点表示;矩阵 W 和偏置 b 是该递归组合操作的共享参数;ff 是非线性激活函数。整个树中,这一相同的组合函数被递归地应用,每次都是利用相同的参数来获得更高层次的抽象。

  • 参数共享
    与循环神经网络类似,递归神经网络在整个树结构中对所有组合操作使用相同的一组参数。这种参数共享使得模型不仅能减少需要学习的参数量,还能捕捉数据结构中普遍存在的规则和规律。

2. 与简单循环网络的联系和区别

联系

  • 核心思想相似
    无论是递归神经网络还是循环神经网络,都利用了“重复应用相同函数”的思想。两者都通过不断组合前面的信息来构建更复杂的表示,并且都采用参数共享的方式,从而简化模型学习问题。

  • 参数共享机制
    二者在各自的结构中都使用了相同的参数对多次重复的操作进行计算,只不过递归神经网络是在树的不同层次上递归应用,而循环神经网络则是在时间步骤上反复应用同一操作。

区别

  • 数据结构不同

    • 递归神经网络(RecNN):针对树形或层次结构数据,适用于解析具有自然层次结构的问题,如自然语言中的句法树、情感分析的短语递归组合、图像场景分割中的层次关系等。

    • 循环神经网络(RNN):针对一维序列数据,例如时间序列、语音、文本、视频帧等,利用前一个时间步的隐藏状态来预测当前或未来的状态。

  • 信息组合方式
    在递归神经网络中,一个节点的表示通常同时依赖多个子节点的信息(如左右子节点或多个分支),而在简单循环神经网络中,当前状态通常仅依赖于当前输入和前一个时间步的隐藏状态,形成一条链式信息流。

  • 应用场景

    • 递归神经网络常用于需要理解数据内部结构层次(比如理解一个句子的整体语义)的任务。

    • 循环神经网络更适合需要处理连续时间依赖信息(如语言生成或时间序列预测)的任务。

3. 具体案例

例子:自然语言处理中的句法分析
假设我们有一句话“这个电影非常精彩”,可以将其句子转化成一棵句法树,树中每个叶子节点是单词,而非叶子节点代表短语。

  • 递归神经网络的应用

    • 叶子节点:各单词首先通过词嵌入获得对应的向量表示;

    • 组合操作:然后使用相同的递归网络组合这些单词向量,首先合并构成短语,例如将“这个电影”组合成一个短语表示,再将“非常”和“精彩”组合,然后将这两个短语的表示再递归组合成整个句子的表示;

    • 这种自底向上的组合能够有效捕捉句子内部语法和语义的层次关系,生成一个整体句子表示供后续任务(如情感分类或机器翻译)使用。

相较之下,若采用简单的循环神经网络处理同样的句子,信息会沿着时间序列顺序传递,主要依赖上一时刻的隐藏状态,未必能充分利用句子结构中的层次信息。

4. 参数学习

递归神经网络(Recursive Neural Network, RecNN)的参数学习本质上也是基于梯度下降的优化过程,不过由于其特殊的树形(或更一般的递归)结构,其误差传播方式需要“沿树”进行,即“结构反向传播”(Backpropagation Through Structure, BPTS)。

(1)前向传播和表示组合

在递归神经网络中,每个内部节点的表示是通过对其子节点表示进行组合来获得的。例如,对于一个二叉树结构,一个父节点的向量表示可写作:

其中:

  • h_{left} 和 h_{right} 是左右子节点的表示,

  • W 是组合权重矩阵,

  • b 是偏置,

  • f 是非线性激活函数(如 tanh 或 ReLU)。

这一过程会递归地向上计算,直到生成根节点或最终任务所需的整体表示。

(2)损失函数定义

通常,在某个高层(例如根节点)会得到一个整体表示,然后根据该表示完成某项任务(如分类、情感分析等)。这时我们会定义一个损失函数,如交叉熵(对于分类任务)来衡量预测输出与真实标签之间的差距。

(3) 反向传播——结构反向传播(BPTS)

由于递归神经网络的前向计算在树的不同节点上共享同一组参数(例如组合矩阵 W 和偏置 b),在反向传播阶段需要沿着整棵树“展开”来计算梯度,这个过程称为结构反向传播:

  1. 梯度从根节点开始计算
    根据损失函数对根节点输出的偏导数开始,利用链式法则把误差逐层传递到各个子节点。由于每个父节点的输出依赖于它的所有子节点,梯度计算时需要对这些依赖关系进行累加。

  2. 参数的梯度累加
    由于所有节点都使用了相同的参数(例如 W),在整棵树上每次组合操作对参数的贡献都会被计算出来,然后将所有这些梯度累加,得到该参数的总梯度。

  3. 利用梯度下降更新参数
    更新方式与其他深度学习模型类似,例如使用标准的随机梯度下降(SGD)或者自适应方法如 Adam 更新参数:

(4)举个具体例子

假设我们用于情感分析的递归神经网络,其任务是根据一个句子的语法解析树判断情绪。

  • 前向传播

    • 每个叶节点(单词)通过词嵌入转换为向量表示。

    • 按照树结构,底层的短语节点利用公式 递归计算,从而得到整个句子的表示。

  • 损失计算

    • 将句子表示输入一个分类层(例如全连接层 + softmax),输出情绪类别概率。

    • 利用交叉熵损失计算误差。

  • 反向传播

    • 损失从句子表示(根节点)反向传播到各个短语节点,再到叶节点。

    • 每次梯度计算都使用链式法则,累加到共享参数 W 和 b 上。

  • 参数更新

    • 使用梯度下降优化算法更新 W 和 b,使得整个树的节点表示逐渐能够更好地反映正确的情绪信息。

递归神经网络利用结构反向传播(BPTS)来更新在树形结构中共享的参数,通过在树上从根到叶逐层反传梯度,结合链式法则累积来自各路径的梯度,最终使用优化算法更新参数,从而实现模型在如句法解析、情感分类等任务上的有效学习。这一过程与传统神经网络的反向传播类似,但其梯度传播必须适应数据的树状结构,使得参数能够捕捉到数据中固有的层次关系。

5.结语:

递归神经网络通过将输入数据视为树或层次结构,使用相同的组合函数递归地将子结构信息合成更高层次的表示,非常适合处理具有内在层次结构的问题,如句法解析和情感分析。它与简单循环网络共享“信息传递”与“参数共享”的基本思想,但处理的数据结构和信息组合方式有所不同。理解递归神经网络,可以联想到在一棵树上自下而上地整合各个“叶子”节点的信息,逐步构建出整个树的综合表示。

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

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

相关文章

Maven超级详细安装部署

1.到底什么是Maven?搞清楚这个 Maven 是一个项目管理工具,主要用于 Java 项目的构建、依赖管理和文档生成。 它基于项目对象模型(POM),通过 pom.xml 文件定义项目的配置。 (简单说破:就是工程…

电机控制-隆博戈观测器(Luenberger state observer)

本文围绕基于无传感器控制策略的状态观测器展开,介绍其在电机领域的应用、原理、性能表现及无传感器驱动的优劣: 应用场景:适用于燃油泵、风扇等大量固定转速和低成本应用场景。工作原理:状态观测器利用完整的电机微分模型&#…

RK3506+net9+VS2022跨平台调试C#程序

下载GetVsDbg.sh ,这脚本会下载一个压缩包,然后解压缩,设置x权限等等。但是目标板子连不上,就想办法获取到下载路径,修改这个脚本,显示这个下载链接后,复制一下,用电脑下下来 修改好…

【16】数据结构之基于树的排序算法篇章

目录标题 选择排序简单选择排序树形选择排序 堆排序堆的定义Heap小跟堆大根堆堆的存储堆的代码设计堆排序的代码设计 排序算法综合比较 选择排序 基本思想:从待排序的序列中选出最大值或最小值,交换该元素与待排序序列的头部元素,对剩下的元…

华熙生物亮相消博会,这次又带来了什么样的变化?

首先,从展示层面来看,华熙生物在消博会上构建科技桥梁,展台主视觉展示糖生物学发展历程与自身发展交织历程,这象征着中国生物科技企业从产业突围到定义全球标准的蜕变。这一展示不仅提升了华熙生物的品牌形象,更向外界…

大象机器人推出myCobot 280 RDK X5,携手地瓜机器人共建智能教育机

摘要 大象机器人全新推出轻量级高性能教育机械臂 myCobot 280 RDK X5,该产品集成地瓜机器人 RDK X5 开发者套件,深度整合双方在硬件研发与智能计算领域的技术优势,实现芯片架构、软件算法、硬件结构的全栈自主研发。作为国内教育机器人生态合…

【初阶数据结构】——算法复杂度

一、前言 1、数据结构是什么? 数据结构(Data Structure)是计算机存储、组织数据的⽅式,指相互之间存在⼀种或多种特定关系的数 据元素的集合。没有⼀种单⼀的数据结构对所有⽤途都有⽤,所以我们要学各式各样的数据结构, 如&…

Google-A2A协议全面解析:一文掌握Agent-to-Agent协议的核心与应用

前言: 在当今人工智能技术飞速发展的时代,智能体(Agent)已悄然融入我们生活的各个角落。无论是个人智能助手,还是企业的自动化工具,各类AI代理的应用愈发广泛。但目前这些智能体之间大多处于孤立状态&…

Linux-服务器添加审计日志功能

#查看audit软件是否在运行(状态为active而且为绿色表示已经在运行) systemctl start auditd #如果没有在运行的话,查看是否被系统禁用 (audit为0表示被禁用) cat /proc/cmdline | grep -w "audit=0" #修改/etc/default/grub里面audit=0 改为audit=1 #更新GRUB…

基于机器视觉的多孔零件边缘缺陷检测(源码C++、opencv、凸包、凸缺陷检测)

👑主页:吾名招财 👓简介:工科学硕,研究方向机器视觉,爱好较广泛… ​💫签名:面朝大海,春暖花开! 基于机器视觉的多孔零件边缘缺陷检测(源码C、ope…

如何使用AI辅助开发CSS3 - 通义灵码功能全解析

一、引言 CSS3 作为最新的 CSS 标准,引入了众多新特性,如弹性布局、网格布局等,极大地丰富了网页样式的设计能力。然而,CSS3 的样式规则繁多,记忆所有规则对于开发者来说几乎是不可能的任务。在实际开发中&#xff0c…

MySQL入门:数据表的创建

​今天我们来介绍一下除HTML外的另一种语言:MySQL语言; MySQL:即一种用于管理和处理关系数据库的标准语言。要用于执行查询、更新、管理数据库中的数据以及定义和操作数据库结构。 接下来我会逐一介绍它的作用以及其中数据表,数据…

数据库的基本原则

数据库的核心原则 原子性与持久性:原子性(Atomicity)确保一个事务中的所有操作要么全部完成,要么完全不执行,不会出现部分完成的情况。持久性(Durability)则保证一旦事务提交成功,即…

Rust 中的Relaxed 内存指令重排演示:X=0 Y=0 是怎么出现的?

🔥 Rust 中的内存重排演示:X0 && Y0 是怎么出现的? 在并发编程中,我们经常会听说“内存重排(Memory Reordering)”这个术语,但它似乎总是只出现在理论或者别人口中的幻觉里。本文将通过…

C++进程间通信开发实战:高效解决项目中的IPC问题

C进程间通信开发实战:高效解决项目中的IPC问题 在复杂的软件项目中,进程间通信(Inter-Process Communication, IPC)是实现模块化、提高系统性能与可靠性的关键技术之一。C作为一门高性能的编程语言,广泛应用于需要高效…

FPGA-DDS技术的波形发生器

1.实验目的 1.1掌握直接数字频率合成(DDS)的基本原理及其实现方法。 1.2在DE2-115 FPGA开发板上设计一个可调频率的正弦波和方波发生器,频率范围10Hz~5MHz,最小分辨率小于1kHz。 1.3使用Quartus II进行仿真,并通过S…

C#实现通过MQTT Broker——EMQX发布订阅消息及其认证、授权的安全配置操作

一、准备内容 MQTT的构成、使用场景、工作原理介绍-CSDN博客文章浏览阅读656次,点赞7次,收藏12次。MQTT(Message Queuing Telemetry Transport)是一种轻量级、基于发布-订阅模式的消息传输协议【适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境】它在物联网应用中…

【双指针】三数之和(medium)

三数之和(medium) 题⽬描述:解法(排序双指针):算法思路:C 算法代码:Java 算法代码:注:数组转列表 题⽬链接:15. 三数之和 题⽬描述: …

【项目管理】第17章 项目干系人管理-- 知识点整理

项目管理-相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 项目管理知识域 知识点: (项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域) 对应:第6章-第19章 第6章 项目管理概论 4分第13章 项目资源管理 3-4分第7章 项目…

视频融合平台EasyCVR可视化AI+视频管理系统,打造轧钢厂智慧安全管理体系

一、背景分析 在轧钢厂,打包机负责线材打包,操作人员需频繁进入内部添加护垫、整理包装、检修调试等。例如,每班产线超过300件,12小时内人员进出打包机区域超过300次。若员工安全意识薄弱、违规操作,未落实安全措施就…