Deep Learning for Computer Vision——Recurrent Neural Networks

发布时间:2026/10/26 16:19:27

Deep Learning for Computer Vision——Recurrent Neural Networks 第一部分为什么需要 RNN序列建模问题传统 CNN 和全连接网络FC的输入和输出大小是固定的比如 224x224 的图片输入输出 1000 个类别。但现实中有很多任务输入或输出是可变长度的序列如文本、语音、视频帧。RNN 就是为了处理可变长度序列数据而设计的。根据输入输出长度的不同分为四种模式参考图 11对1 (One-to-one)传统神经网络。1对多 (One-to-many)固定大小输入变长输出例如图像描述输入一张图输出一段文字。多对1 (Many-to-one)变长输入固定输出例如视频分类输入多个视频帧输出一个动作标签。多对多 (Many-to-many)变长输入变长输出且长度通常相等例如逐帧视频分类、机器翻译这节课的核心。第二部分RNN 的核心原理1. “展开图”与循环结构RNN 有一个隐藏状态Hidden State它像一个“内存条”保存了过去所有时间步的信息。展开结构Unrolled RNN是理解 RNN 的最佳方式我们把时间维度铺开每一个 RNN 单元不仅接收当前输入还接收上一个单元的输出。text[输入] x1 --- [RNN] --- [输出] y1 ↑ ↑ | └── (携带上一步的信息 h1传给下一步) (x2) --- [RNN] --- [输出] y2 ... 以此类推2. 数学公式隐藏状态更新公式​旧的隐藏状态记忆。当前时刻的输入。​带有参数 W 的函数如 tanh 或 ReLU。关键点所有时间步共享同一组权重 W参数量不随序列长度增加输出公式使用另一组权重将隐藏状态转换为输出。注意隐藏状态和输出的维度可以不同。基础 RNNVanilla RNN具体公式为什么用 tanh⁡因为它的值域在 [-1, 1] 之间有界且零中心化可以避免数值爆炸。h0​ 初始化为零向量或学习得到的参数。第三部分实战举例——手写 RNN 检测“连续 1”任务输入一串 0 和 1如果当前输入和上一个输入都是 1则输出 1否则输出 0。输入序列[0, 1, 0, 1, 1, 1, 0, 1, 1]期望输出[0, 0, 0, 0, 1, 1, 0, 0, 1]手动构造一个 RNN设定隐藏状态为 3 维向量[当前值, 上一个值, 常数 1]。作为初学者可以想象它像一个小账本。初始化 h0[0,0,1假设最开始看到了两个 0。使用 ReLU 作为激活函数简化计算大于 0 保留小于 0 变成 0。构造权重矩阵参考图 7输入变换将 x 送入第 1 个位置即W_xh [[1], [0], [0]]。​状态转移将上一次的“当前值”移入“上一个值”的位置即W_hh [[0,0,0], [1,0,0], [0,0,1]]。计算逻辑以一个具体步骤演示假设上一步状态上一次输入是1当前输入。记忆已更新。输出设置[1,1,−1]则ReLU((1∗1)(1∗1)(1∗(−1)))ReLU(1)1。 结论只要构造出合适的权重普通的 RNN 就能完成这个逻辑任务但在实际应用中我们不需要手写权重而是通过梯度下降自动学习 WW。第四部分如何训练 RNN难点与解决方案1. 多对多任务的损失计算与梯度更新对于多对多任务每个时间步都有一个损失 LtLt​总损失是它们之和L。因为所有时间步共享权重 W所以在反向传播BPTT时我们需要把每个时间步算出的 W 的梯度全部加在一起。2. 梯度消失问题与截断 BPTT致命缺陷当序列很长时反向传播跨越的时间步很多如果使用 tanh 或 Sigmoid它们的导数往往小于 1连乘之后∏tanh⁡′梯度会迅速趋近于 0梯度消失。这意味着网络“记不住”很早期的信息长距离依赖。解决方案1截断 BPTT (Truncated Backpropagation through time)你不需要在整个序列上反向传播耗时且爆内存。做法设置一个窗口如 N10前向传播一直往前跑记忆保留但反向传播只倒退最近的 10 步。这样既节省了内存又近似了梯度。注分布式训练时每个 GPU 算梯度后加起来更新权重原理类似。3. 解决方案2LSTM长短期记忆网络LSTM 是为了解决梯度消失问题而设计的。参考图13它的核心是引入一条“高速公路”叫细胞状态沿着这条路径走信息不经过任何非线性激活函数只能通过“门”来加减从而保证梯度能无损流过。LSTM 公式解析4个门通过拼接输入和隐状态乘以一个大的权重矩阵得到 i,f,o,g遗忘门 f决定上一时刻的中有多少保留下来。Sigmoid 函数0 是忘掉1 是保留输入门 i决定当前的新信息 g 有多少写入到​ 中。新候选值 g生成当前的候选记忆。tanh 函数细胞状态更新f⊙i⊙g加法操作让梯度畅通无阻输出门 o决定最终输出​ 的多少。o⊙tanh⁡()第五部分RNN 的高级用法与模型细节1. 字符级语言模任务根据已有字符预测下一个字符。例如输入 h输出 e输入 e输出 l...输入层处理我们不会直接用 One-hot 向量做矩阵乘法因为太稀疏而是使用嵌入层Embedding Layer本质上就是一个大小可学习的矩阵相当于查表提取密集特征。采样Sampling在测试时我们用网络预测出下一个字符的概率分布然后采样一个字符将其作为下一次的输入循环往复直到遇到“结束符”。2. 多层 RNN 与应用多层 RNN将 RNN 层堆叠起来深度维度每一层处理上一层的数据增加模型的表达能力。应用图像描述提取 CNN 倒数第二层的特征作为 h0​ 输入到 RNN 中。视觉问答将问题和图片特征融合输入 RNN输出答案概率。优点能处理任意长序列模型参数量固定。缺点无法并行训练前一步的输出是后一步的输入必须串行速度极慢容易丢失早期信息。 总结备忘输入输出只要想到了“变长序列”第一反应就是 RNN 族。共享参数RNN 的参数在不同时间步是完全共享的这是和 CNN 共享卷积核有异曲同工之妙的地方。实际现状虽然 RNN/LSTM 理论很重要但在现代 NLP 领域如 ChatGPT它们基本已被Transformer取代因为 Transformer 支持高度并行训练且能通过注意力机制直接捕捉长距离依赖。联想记忆你可以把 RNN 想象成“一面倒的动态长卷”把 LSTM 的细胞状态想象成“一条笔直的传送带”门控就像是控制传送带上物品加减的开关。
延伸阅读

更多相关文章

2026/10/26 4:21:18

对刀仪维护大全气路镜头密封件校准周期一文讲透

对刀仪维护大全:气路/镜头/密封件/校准周期一篇文章讲透数据来源说明:本文维护建议基于雷尼绍(Renishaw)、马波斯(Marposs)、波龙(BLUM-Novotest)官方技术手册整理。一、三种对刀仪的…

2026/10/25 12:23:17

深入理解 AI Agent · AGENT #03:从单 Agent 到多 Agent

📘 《深入理解 AI Agent》系列 第八篇 | AGENT-03 前篇回顾:Agent 基础篇 #01 从LLM到Agent → Agent 基础篇 #02 四大核心机制 → Agent 基础篇 #03 从单Agent到多Agent 开篇:单 Agent 能走多远? 做 AI Agent 的开发者常有一个…

2026/10/26 16:19:26

Cypress端到端测试实战:从零搭建稳定可维护的e2e测试体系

1. 项目概述:e2e不是缩写游戏,而是软件质量的生命线“e2e”这三个字母在测试工程师的日常沟通里,几乎等同于“最后一道防线”。它不是某个新出的框架代号,也不是某家公司的内部黑话,而是End-to-End Testing&#xff08…

2026/10/26 16:19:26

端到端测试实战:用Profile管理E2E用例,打造稳定回归防线

做端到端测试这些年,我最常被问的一句话是:“e2e到底有没有必要写?”问的人多半刚被一堆动不动就挂的用例折磨过,或者正看着几百个用例的回归报告发愁。我的答案一直没变:e2e不仅要写,还得当成一个系统去设…

2026/10/26 16:19:26

Agent-Reach:CLI工具中可测量的Agent能力边界

1. “Agent-Reach”不是工具名,而是能力边界的具象化表达最近在几个技术社区刷到“Agent-Reach”这个词,它不像DeepSeek、Qwen或Claude那样挂在模型列表里,也不像ComfyUI、LM Studio那样有安装包和启动图标。它没有官网,没有GitHu…

2026/10/26 16:19:26

C#可空引用类型:DisallowNull与AllowNull详解

1. 可空引用类型的前世今生在C# 8.0之前,引用类型的变量总是可以被赋予null值,这导致了许多运行时异常。想象一下这样的场景:你调用了一个方法,返回了一个Customer对象,然后直接访问它的Name属性——如果返回的是null&…

2026/10/26 16:19:26

Java基于以太坊区块链的车险理赔系统:链上存证与链下计算实战

简介:这是一套基于Java与以太坊区块链的车险理赔系统源码,面向计算机相关专业的在校学生、教师及企业开发者,尤其适合作为毕业设计、课程设计或区块链入门练手项目。项目将车险理赔流程与智能合约结合,涵盖车主、保险公司、交警等…

2026/10/26 16:14:23

MCP协议深度解析:从Function Calling到标准化工具集成

1. 为什么20多项更新里只有MCP值得你花时间DevDay这种场合,台上讲的东西永远是"面面俱到"的。一口气甩出二十多项更新,从模型能力到多模态到API降价,听起来每个都是重点。但做过实际项目的人都知道,一场发布会里真正能改…

2026/10/26 0:20:20

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/26 1:53:47

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/26 0:20:17

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/26 0:00:48

Nested Learning:解决AI灾难性遗忘的分层记忆架构

1. 为什么AI需要"记忆"能力?在传统深度学习模型中,我们常遇到一个根本性问题:模型在处理新任务时,往往会完全遗忘之前学到的知识。这种现象被业界称为"灾难性遗忘"(Catastrophic Forgetting)。想象一下&#…

2026/10/26 0:00:48

企业级大模型应用:OCR预处理、Dify编排与DeepSeek落地实战

1. 这不是“用大模型”,而是重构工作流的起点“大模型的应用和工具”——这八个字现在被贴在无数技术分享、招聘JD、内部立项书的标题栏里,但绝大多数人点进去后看到的,是零散的API调用示例、几个开源UI截图、或者一句“接入LLM就能降本增效”…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑