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

计算机视觉CS231n学习(5)

循环神经网络 RNN

recurrent neural networks

  1. RNN序列处理能力(RNN核心作用)

    RNN处理序列数据,相比“Vanilla”神经网络(仅支持一对一映射),RNN支持多种序列映射模式:

    1. 一对一:传统分类
    2. 一对多:如图像captioning:图像→文字序列
    3. 多对一:如情感分析:文字序列→情感标签
    4. 多对多:如机器翻译:文字序列→文字序列
    5. 时序多对多:视频帧分类
  2. RNN非序列数据的序列处理

    例如通过瞥视序列分类图像,或逐部分生成图像

  3. RNN的数学定义与计算图

    1. 前向传播公式

      状态更新:

      ht:t时刻的隐藏状态;xt:t时刻的输入
      ht=fw(ht−1,xt) h_t = f_w(h_{t-1},x_t) ht=fw(ht1,xt)
      vanilla RNN具体公式:
      ht=tanh(Whhht−1+Wxhxt),输出yt=Whyht h_t = tanh(W_{hh}h_{t-1}+W_{xh}x_t),输出y_t = W_{hy}ht ht=tanh(Whhht1+Wxhxt),输出yt=Whyht

    2. 计算图结构

      时间步共享参数W,隐藏状态ht依赖于前一时刻ht-1,形成循环结构

      不同映射模式的计算图:

      1. 多对多:每个时间步输出
      2. 多对一:最后时间步输出
      3. 一对多:单输入生成序列
    3. 序列到序列模型 Sequence to Sequence模型

      由 多对一编码器(将输入序列编码为向量)和 一对多解码器(从向量生成输出序列)组成,用于机器翻译等任务

  4. RNN反向传播

    1. 通过时间的反向传播(BPTT):前向计算整个序列的损失后(每个时间步loss的和),反向传播梯度至所有时间步,更新共享参数
    2. 截断BPTT:将长序列分割为子序列,仅在子序列内反向传播,避免计算量过大,同时保留隐藏状态的时序传递
  5. RNN的可解释性分析

    通过可视化RNN隐藏单元,发现部分单元具有特定功能:

    引号检测单元:对引号内文本敏感

    行位置敏感单元:跟踪文本在句中的位置

    代码深度单元:跟踪代码块嵌套深度

  6. 图像captioning与注意力机制

    1. 图像captioning基本框架

      结合CNN(提取图像特征)和RNN(生成文字序列),CNN输出图像特征向量,去掉最后两层全连接层,作为RNN的初始输入,RNN逐步生成序列

    2. 注意力机制

      RNN生成每个单词时,会关注图像的不同区域(比如生成straw时关注帽子的straw部分),通过加权特征向量Z=Σpivi实现(pi为注意力权重,vi为图像特征)

  7. 视觉问答 VQA

    任务定义:给定图像和问题,RNN结合CNN特征和问题序列,输出答案

    注意力机制应用:RNN在处理问题时,会关注图像中与问题相关的区域

  8. RNN的梯度问题与LSTM

    1. vanilla RNN的梯度问题

      反向传播时,梯度需要经过多个矩阵乘法(W的连乘),若W的最大奇异值>1,梯度爆炸;若W的最小奇异值<1,梯度消失,导致长序列依赖难以学习

      解决方法:梯度裁剪(梯度范数超过阈值时缩放)缓解爆炸;改进架构(如LSTM)缓解消失

    2. LSTM:长短期记忆网络

      核心公式:通过输入门(i),遗忘门(f),输出门(o),门之门(g:写多少到细胞里)和细胞状态(c)控制信息流动:
      在这里插入图片描述

      梯度优势:细胞状态ct通过元素乘法传递梯度(无矩阵连乘),实现”不间断梯度流“,类似ResNet的残差连接

  9. RNN变体 GRU

    1. GRU(门控循环单元)

      简化LSTM,合并输入门和遗忘门为更新门(z),保留重置门(r):

      在这里插入图片描述

      在这里插入图片描述

    2. 其他RNN变体:如MUT1/2/3等,通过调整门控机制优化性能

http://www.dtcms.com/a/320728.html

相关文章:

  • AI开发平台行业全景分析与战略方向建议
  • C++归并排序
  • 使用 Python GUI 工具创建安全的密码短语
  • tmi8150b在VM=3.3v电压下,如何提高转速,记录
  • 高性能 Vue 应用运行时策略
  • 仓颉编程语言的match表达式
  • 《算法导论》第 12 章 - 二叉搜索树
  • 【量子计算】量子计算驱动AI跃迁:2025年算法革命的曙光
  • conda pip uv与pixi
  • SpringCloud(4)-多机部署,负载均衡-LoadBalance
  • ASP.NET三层架构成绩管理系统源码
  • HBase的异步WAL性能优化:RingBuffer的奥秘
  • 深度虚值期权合约有什么特点?
  • InfoNCE 损失
  • 企微消息机器人推送配置-windows+python
  • 【ros-humble】2.自定义通讯接口发布者python,qt使用(话题)
  • 关于csdn导入和导出
  • USB2.0协议学习-基础知识
  • day070-Jenkins自动化与部署java、前端代码
  • linux安装mysql8.0,二进制码安装
  • 《Graph machine learning for integrated multi-omics analysis》
  • ChipCamp探索系列 -- 1. Soft-Core RISC-V on FPGA
  • 【全栈自动驾驶与异构加速】系统学习计划
  • React 状态管理入门:从 useState 到复杂状态逻辑
  • 【MongoDB】查询条件运算符:$expr 和 $regex 详解,以及为什么$where和$expr难以使用索引
  • 使用pybind11封装C++API
  • HTML <picture> 元素:让图片根据设备 “智能切换” 的响应式方案
  • 数据结构(16)排序(上)
  • 时序数据库-涛思数据库
  • 6.Linux 系统上的库文件生成与使用