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

序列建模之循环和递归网络 - 引言篇

序言

在探索复杂数据结构与动态系统的奥秘时,序列建模成为了连接过去与未来、解析时间序列数据的关键桥梁。其中,循环神经网络( RNN \text{RNN} RNN)与递归神经网络( Recursive Neural Networks, RNNs \text{Recursive Neural Networks, RNNs} Recursive Neural Networks, RNNs)的一种特殊形式,但常在此语境下区分讨论以强调其树状结构)作为两大核心工具,展现了非凡的潜力与灵活性。它们通过捕捉序列数据中的时间依赖性和层次结构,为自然语言处理、语音识别、时间序列预测等领域带来了革命性的突破。RNN通过其内部的循环结构,使得信息能够沿着序列流动,理论上能够学习到任意长度的依赖关系;而递归网络则更进一步,通过模拟树状或图状的数据结构,深入解析具有层次或嵌套特性的复杂序列,如句法分析、情感分析等任务中展现出独特优势。

序列建模之循环和递归网络

  • 循环神经网络 ( recurrent neural network \text{recurrent neural network} recurrent neural network) 或 RNN \text{RNN} RNN( Rumelhart et al., 1986c \text{Rumelhart et al., 1986c} Rumelhart et al., 1986c) 是一类用于处理序列数据的神经网络。
    • 就像卷积网络是专门用于处理网格化数据 X \bold{X} X(如一个图像)的神经网络,循环神经网络是专门用于处理序列 x ( 1 ) , … , x ( τ ) \boldsymbol{x}^{(1)},\dots,\boldsymbol{x}^{(\tau)} x(1),,x(τ) 的神经网络。
    • 正如卷积网络可以很容易地扩展到具有很大宽度和高度的图像,以及处理大小可变的图像,循环网络可以扩展到更长的序列(比不基于序列的特化网络长得多)。
    • 大多数循环网络也能处理可变长度的序列。
  • 从多层网络出发到循环网络,我们需要利用上世纪 80 80 80 年代机器学习和统计模型早期思想的优点:在模型的不同部分共享参数。
    • 参数共享使得模型能够扩展到不同形式的样本(如不同的长度)并进行泛化。
    • 如果我们在每个时间点都有一个单独的参数,我们不但不能泛化到训练时没有见过序列长度,也不能在时间上共享不同序列长度和不同位置的统计强度。
    • 当信息的特定部分会在序列内多个位置出现时,这样的共享尤为重要。
    • 例如,考虑这两句话: “ I went to Nepal in 2009 \text{I went to Nepal in 2009} I went to Nepal in 2009“ 和 “ In 2009,I went to Nepal. \text{In 2009,I went to Nepal.} In 2009,I went to Nepal.” 如果我们让一个机器学习模型读取这两个句子,并提取叙述者去 Nepal \text{Nepal} Nepal的年份,无论 “ 2009 2009 2009 年” 出现在句子的第六个单词或第二个单词,我们都希望它能认出 “ 2009 2009 2009 年’’ 作为相关资料片段。
    • 假设我们训练一个处理固定长度句子的前馈网络。传统的全连接前馈网络会给每个输入特征分配一个单独的参数,所以需要分别学习句子每个位置的所有语言规则。
    • 相比之下, 循环神经网络在几个时间步内共享相同的权重,不需要分别学习句子每个位置的所有语言规则。
  • 一个相关的想法是使用跨越 1 1 1维时间序列的卷积。
    • 这种卷积方法是时延神经网络的基础 ( Lang and Hinton, 1988; Waibel et al., 1989; Lang et al., 1990 \text{Lang and Hinton, 1988; Waibel et al., 1989; Lang et al., 1990} Lang and Hinton, 1988; Waibel et al., 1989; Lang et al., 1990)。
    • 卷积操作允许网络跨越时间共享参数,但是浅层的。
    • 卷积的输出是一个序列,其中输出中的每一项是相邻几项的函数。
    • 参数共享的概念体现在每个时间步中使用的相同卷积核。
    • 循环神经网络以不同的方式共享参数。
    • 输出的每一项是输出前一项的函数。
    • 输出的每一项对先前的输出应用相同的更新规则而产生。
    • 这种循环导致参数通过很深的计算图共享。
  • 为简单起见,我们说的RNN是指在序列上的操作,并且该序列在时刻 t t t(从 1 1 1 τ \tau τ)包含向量 x ( τ ) x^{(\tau)} x(τ)
    • 在实践中,循环网络通常在序列的 minibatch \text{minibatch} minibatch上操作,并且 minibatch \text{minibatch} minibatch的每项具有不同序列长度 τ \tau τ
    • 我们省略了 minibatch \text{minibatch} minibatch索引来简化记号。
    • 此外,时间步索引不必是字面上现实世界中流逝的时间,也可以是序列中的位置。
    • RNN \text{RNN} RNN也可以应用于跨越两个维度的空间数据(如图像),并且当应用于涉及时间的数据时,该网络可具有在时间上向后的连接,前提是将整个序列提供给网络之前能观察到整个序列。
  • 本篇章将计算图的想法扩展到包括周期。这些周期代表变量自身的值在未来某一时间步对自身值的影响。这样的计算图允许我们定义循环神经网络。然后,我们描述许多构建、训练和使用循环神经网络的不同方式。
  • 本篇章将简要介绍循环神经网络,为获取更多详细信息,我们建议读者参考 Graves (2012) \text{Graves (2012)} Graves (2012) 的著作。

总结

循环与递归网络作为序列建模的两大支柱,不仅拓宽了人工智能处理复杂序列数据的能力边界,也深刻影响了我们对数据内在规律的理解与利用方式。它们通过精巧的网络架构设计,有效捕捉了序列中的时序依赖与结构信息,为众多领域带来了前所未有的性能提升。随着研究的深入与技术的演进,循环与递归网络正不断融合创新,如结合注意力机制、长短期记忆单元( LSTM \text{LSTM} LSTM)、门控循环单元( GRU \text{GRU} GRU)等先进技术,进一步增强了其处理长序列、复杂结构数据的能力。未来,我们有理由相信,这些网络将在更多领域发挥重要作用,推动人工智能技术的持续进步与发展。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 一个很牛的学习网站分享 Developer Roadmaps
  • 【视频讲解】顶级期刊即插即用模块代码共享计划·2024第一期:02:非相邻层次间语义信息渐进式特征融合策略(2024 1区Top | 浙江大学开源)代码实现
  • 【SpringMVC】详细介绍SpringMVC的执行流程
  • 基于JSP、java、Tomcat三者的项目实战--校园交易平台系统--(实习,答辩皆可用到)--万字爆更
  • Python酷库之旅-第三方库Pandas(075)
  • rabbitmq出现Management API returned status code 500 -
  • 用爬虫玩转石墨文档(下)
  • LeetCode_sql_day15(262.行程与用户)
  • Node.js 常用命令集合
  • Linux的Chrome、Firefox浏览器无法加载简书的图片
  • 算法第一天
  • 【Linux】解锁进程地址空间奥秘,高效环境变量的实战技巧
  • Elasticsearch 文档操作:增加、删除与查询
  • 白骑士的Matlab教学高级篇 3.4 App设计
  • 成都教育新地标,跃享未来小店,抖音见证信任力
  • [译]Python中的类属性与实例属性的区别
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • CSS中外联样式表代表的含义
  • JavaScript的使用你知道几种?(上)
  • JWT究竟是什么呢?
  • Vue 2.3、2.4 知识点小结
  • 分享几个不错的工具
  • 解析带emoji和链接的聊天系统消息
  • 码农张的Bug人生 - 见面之礼
  • 如何用vue打造一个移动端音乐播放器
  • 通过几道题目学习二叉搜索树
  • 为视图添加丝滑的水波纹
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​一些不规范的GTID使用场景
  • #{}和${}的区别?
  • #70结构体案例1(导师,学生,成绩)
  • #define
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (不用互三)AI绘画工具应该如何选择
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • ..回顾17,展望18
  • .net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • /etc/shadow字段详解
  • @SpringBootApplication 注解
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [AI Google] Ask Photos: 使用Gemini搜索照片的新方法
  • [Algorithm][动态规划][简单多状态DP问题][按摩师][打家劫舍Ⅱ][删除并获得点数][粉刷房子]详细讲解
  • [Arduino学习] ESP8266读取DHT11数字温湿度传感器数据
  • [AutoSar]BSW_Com07 CAN报文接收流程的函数调用
  • [C][数据结构][树]详细讲解
  • [C++] 模拟实现list(二)
  • [C++][STL源码剖析] 详解AVL树的实现