深度学习(Deep Learning)读书思考六:循环神经网络一(RNN)

2023-10-27

概述

循环神经网络(RNN-Recurrent Neural Network)是神经网络家族中的一员,擅长于解决序列化相关问题。包括不限于序列化标注问题、NER、POS、语音识别等。RNN内容比较多,分成三个小节进行介绍,内容包括RNN基础以及求解算法、LSTM以及变种GRU、RNN相关应用。本节主要介绍

1.RNN基础知识介绍
2.RNN模型优化以及存在的问题
3.RNN模型变种

RNN知识点

RNN提出动机

RNN的提出可以有效解决以下问题:

  1. 长期依赖问题:在语言模型、语音识别中需要根据上下文进行推断和预测,上下文的获取可以根据马尔科夫假设获取固定上下文。RNN可以通过中间状态保存上下文信息,作为输入影响下一时序的预测。
  2. 编码:可以将可变输入编码成固定长度的向量。和CNN相比,能够保留全局最优特征。

    计算图展开

    RNN常用以下公式获取历史状态

    ht=f(ht1,xt;θ)

    其中h为隐藏层,用于保存上下文信息,f是激活函数。
    用图模型可以表达为:
    这里写图片描述

RNN潜在可能的展开方式如下:
1)通过隐藏层传递信息
这里写图片描述

1.该展开形式非常常用,主要包括三层输入-隐藏层、隐藏层-隐藏层、隐藏层到输入层。依赖信息通过隐藏层进行传递。
2.参数U、V、W为共享参数

2)输出节点连接到下一时序序列
这里写图片描述

应用比较局限,上一时序的输出作为下一时间点的输入,理论上上一时间点的输出比较固定,能够携带的信息比较少。

3)只有一个输出节点
这里写图片描述

只在最后时间点t产生输出,往往能够将变成的输入转换为固定长度的向量表示。

RNN使用形式

在使用RNN时,主要形式有4中,如下图所示。
这里写图片描述

1.一对一形式(左一:Many to Many)每一个输入都有对应的输出。
2.多对一形式(左二:Many to one)整个序列只有一个输出,例如文本分类、情感分析等。
3. 一对多形式(左三:One to Many)一个输入产出一个时序序列,常用于seq2seq的解码阶段
4.多对多形式(左四:Many to Many)不是每一个输入对应一个输出,对应到变成的输出。

RNN数学表达以及优化

RNN前向传播

对于离散时间的RNN问题可以描述为,输入序列

(x1,y1),(x2,y2),(x3,y3)......(xT,yT)

其中时间参数t表示离散序列,不一定是真实时间点。
对于多分类问题,目标是最小化释然函数
mint=1TL(y^(xt),yt)=mintlog p(yt|x1,x2...xt)

根据上面经典的RNN网络结构,前向传播过程如下:
如上图U、V、W分别表示输入到隐藏层、隐藏层到输出以及隐藏到隐藏层的连接参数。
1. 隐藏层节点权值: at=b+Wht1+Uxt
2. 隐藏层非线性变换: ht=tanh(at)
3. 输出层: ot=c+Vht
4. softmax层: y^t=softmax(ot)

RNN优化算法-BPTT

BPTT 是求解RNN问题的一种优化算法,也是基于BP算法改进得到和BP算法比较类似。为直观上理解通过多分类问题进行简单推导。
1. 优化目标,对于多分类问题,BPTT优化目标转换最小化交叉熵:

mintLtLt=kytklogy^tk
这里假设有k个类
2. 由于总的损失L为各个时序点的损失和,因此有
LLt=1

3. 对于输出层中的第i节点有
(otL)i=Loti=LLtLtoti=y^
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度学习(Deep Learning)读书思考六:循环神经网络一(RNN) 的相关文章

随机推荐

  • Ubuntu22.04 安装Anaconda

    文章目录 1 下载Anaconda 2 安装Anaconda 3 启动环境 4 常用命令 4 1创建虚拟环境 4 2查询当前系统conda虚拟环境 4 3挂载虚拟环境 4 4退出虚拟环境 4 5查看已安装的工具包 4 6删除虚拟环境 1 下
  • python文件的写入

    wirte 方法把字符串写入文件 writelines 方法可以把列表中存储的内容写入文件 f file hello txt w li hello world n hello china n f writelines li f close
  • ROS获取串口信息及后续处理(以惯导IMU XW-GI5651为例)

    一 问题简介 自动驾驶小车的底层的数据相当一部分是通过串口发送的 以惯导为例 惯导的定位信息大概如下所示 GPFPD 0 1666 330 0 000 0 015 0 129 0 00000000 0 00000000 0 000 0 00
  • Pycharm激活方法

    pycharm 激活 JetBrains IDEA 系列产品通用激活方法 1 打开激活窗口 2 选择 Activate new license with License server 用license server 激活 3 在 Licen
  • python子类继承父类参数传递的简便写法

    当父类参数较多 子类又要增加新的参数时 如果一个一个照抄一遍参数容易出错 这里可以借助 args来简便的进行父类初始化 利用 父类My sprit有一大堆参数 子类UAV需要增加三个新参数scout range communicate ra
  • Java多线程安全问题和锁

    多线程安全问题和锁 文章目录 多线程安全问题和锁 线程在jvm中的特点 锁的出现 synchronized 关键字 监视器锁monitor lock 死锁的产生和避免 什么是线程安全问题 当多个线程同时操作同一个数据时 可能会出现数据不一样
  • 第14天-ElasticSearch环境配置,构建检索服务及商品上架到ES库

    1 ElasticSearch概念 官网介绍 https www elastic co cn what is elasticsearch 官网学习文档 https www elastic co guide en elasticsearch
  • 三、Vite 文件系统 import.meta.glob

    文章目录 一 参考 二 import meta glob 介绍 2 1 import meta glob 的作用 2 2 eager true 一次引入所有 2 3 Glob 导入注意事项 三 遍历 import meta glob 文件系
  • 水库大坝安全管理主要问题和维护措施

    水库大坝作为防灾减灾 解决水资源流失和供需矛盾的重要利民工程 对于维护社会稳定 确保社会经济持续发展具有非常重要的作用 但由于我国大部分水库都建设于 20世纪 70 80 年代 如山东省棘洪滩水库其建设开工时间为1986 年 当时我国经济条
  • Spark数据类型SparseMatrix

    SparseMatrix Spark的mllib包中提供了机器学习的两种基本数据类型 DenseMatrix 稠密 和 SparseMatrix 稀疏 在初始化对象的时候可以使用Matrices伴生对象产生 先看下示例代码 import o
  • Linux-------------DNS域名解析:正反解析

    DNS域名解析 DNS简介 前期准备 正方解析实验 正向解析实验 反向解析实验 常见错误 修改resolv conf 修改hostname 检查DNS是否为ip地址 归纳总结 DNS简介 域名管理系统DNS Domain Name Syst
  • Pentaho Report Designer 入门教程(二)

    Pentaho Report Designer 入门教程 二 采用Pentaho Report Designer5 1版本 也是最新的版本 一 安装和介绍 介绍部分内容略 首先安装jdk 并配置java相关环境变量 下载pentaho re
  • stm32学习总结:2、搭建基于CLion的stm32开发环境

    stm32学习总结 2 搭建基于CLion的stm32开发环境 文章目录 stm32学习总结 2 搭建基于CLion的stm32开发环境 1 前言 2 相关工具和环境准备 2 1 STM32CubeMX 前置工程创建工具 2 2 CLion
  • 敏捷:什么是用户故事(User Story)

    摘要 一件用户通过系统完成他一个有价值的目标 买一罐饮料 的事 这样的过程就叫 用户案例 user case 或者 用户故事 user story 本文描述了敏捷开发的技巧 如何以用户故事管理项目 什么是用户故事 user story 假定
  • 内网渗透-frp 用于内网穿透的基本配置和使用

    frp 用于内网穿透的基本配置和使用 文章目录 frp 用于内网穿透的基本配置和使用 前言 frps frpc 后记 参考 前言 frp 是一个专注于内网穿透的高性能的反向代理应用 支持 TCP UDP HTTP HTTPS 等多种协议 可
  • 【开源介绍】命令行的艺术( the-art-of-command-line )

    1 概述 转载 命令行的艺术 the art of command line
  • Blob数据类型、数据库事务

    1 Bolb是二进制长对象的意思 通常用于存储大文件 通过二进制数据保存到数据库里 并可以从数据库里恢复指定文件 2 如果需要将图片插入数据库 不能通过普通的SQL语句完成 Bolb常量无法表示 所以将Bolb数据插入数据库需要使用Prep
  • 合成孔径SAR卫星影像专业术语

    转载自 http www kosmos image com index php m content c index a show catid 73 id 4132 目录 Across track Active Remote Sensing
  • 初学机器学习:直观解读KL散度的数学概念

    选自thushv com 作者 Thushan Ganegedara 机器之心编译 机器学习是当前最重要的技术发展方向之一 近日 悉尼大学博士生 Thushan Ganegedara 开始撰写一个系列博客文章 旨在为机器学习初学者介绍一些基
  • 深度学习(Deep Learning)读书思考六:循环神经网络一(RNN)

    概述 循环神经网络 RNN Recurrent Neural Network 是神经网络家族中的一员 擅长于解决序列化相关问题 包括不限于序列化标注问题 NER POS 语音识别等 RNN内容比较多 分成三个小节进行介绍 内容包括RNN基础