深度学习入门笔记 —— 循环神经网络 RNN

首先,明确 RNN 的主要任务是用于文本分类,而解决文本分类任务最经典的模型是词袋模型(Bag-of-Words Model),如图所示,输入是三个句子,词袋模型首先要定义一个词汇表 vocabulary,里面记录了单词与数字的对应关系,共 9 个单词,所以特征矩阵就有 9 列;然后特征矩阵的每一行对应一个输入样本,统计这 9 个单词在句子中的出现次数(词频),填入对应单词的位置即可;最后将特征矩阵与标签 y 训练分类器。主要缺点就是忽略了单词之间的顺序关系,只保留了出现次数。

在这里插入图片描述

用一维卷积神经网络也可以处理文本数据。类比于处理图像的二维卷积神经网络,是用一个固定大小的卷积核在图像上滑动,进行加权求和;一维的情况就是用一个固定长度(图中长度为 3)的卷积核在文本上滑动,只需要将字母对应到某个数字(如 26 个字母对应 0 到 25),然后加权求和即可。

在这里插入图片描述

然而,单词之间的顺序关系会直接影响句子的意思,所以必须考虑顺序关系。

在这里插入图片描述

循环神经网络可以表示为图片左边的一般形式,或者将其展开为右边的形式。实际上就是每个隐藏层单元都要同时接收时刻 t 的输入 x,以及时刻 t - 1 的隐藏层单元输出 h

在这里插入图片描述

显然,我们可以构造多层的循环神经网络,就是让时刻 t 的输入 x 经过多个隐藏层单元才会输出 y

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

序列模型根据输入和输出的关系可以分为三种:多对一一对多多对多。多对一的例子是情感分析或者文本分类,输入是多个单词而输出是一个标签;一对多的例子是图像描述,输入是一张图像而输出是一段话(多个单词);多对多可以分为直接的和延迟的,例如视频描述就是多张图像直接地对应多个描述,语言翻译则是一段话延迟地对应一段话,因为直接翻译语言之间的单词往往是不准确的。

在这里插入图片描述

在这里插入图片描述

与前馈神经网络相比,RNN 也就是多了在不同时刻的隐藏层单元之间的权重矩阵,计算加权和的方法还是一样的,得到加权和就能通过激活函数得到激活值,最终也可以得到输出。

在这里插入图片描述
在这里插入图片描述

用损失函数衡量预测输出与实际输出的差距,然后求损失函数关于权重的偏导数(链式法则),即可用梯度下降法更新权重参数。

在这里插入图片描述

但是,用链式法则计算时刻 t 的激活值相对于时刻 k 的激活值的偏导数时,会出现多个时刻之间偏导数的乘积,由此可能导致梯度消失或者梯度爆炸的问题。

在这里插入图片描述

解决方法有:1、梯度裁剪,就是限制梯度不要大于某个值,但只能解决梯度爆炸的问题;2、限制反向传播的时刻长度,也就是求时刻 t 激活值相对于时刻 k 激活值的偏导数时,不要令 k 等于 0 到 t 求和,而是限制 k 等于例如 t - 20 到 t 求和等等,这样就不会让太多梯度值相乘了;3、LSTM 或 GRU,有一篇十分详细的博客推荐大家看看。

在这里插入图片描述

个人对 LSTM 的理解就是,三个门遗忘门输入门输出门,都是当前时刻 t 的输入 x 与上一时刻 t - 1 的隐状态变量 h 相乘后再经过 Sigmoid 函数的结果,取值为 0 到 1。于是这个结果可被视作系数,在遗忘门中会与细胞状态 c (长期记忆)相乘,在输入门中与当前时刻的 tanh 激活值(短期记忆)相乘,在输出门中与长短期记忆之和的 tanh 相乘。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以一个文本分类任务(多对一)为例,步骤有四个:1、构建词汇表,一个单词对应一个数字;2、将句子根据词汇表转换为向量;3、将每个单词转换为 One-hot 向量,一个句子就变成一个矩阵;4、将每个单词向量与 Embedding Matrix 相乘,得到一个嵌入向量(嵌入向量的维度超参数),这个向量相当于是该单词的特征向量。

在这里插入图片描述

但是用 One-hot 对单词编码再做矩阵乘法,会出现很多计算浪费(乘以 0),所以实际上都是为词汇表找到一个 Embedding Matrix,然后单词对应到数字再对应到矩阵中的某个向量即可。

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

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

相关文章

深圳店匠笔试题-4.01

一:题目类型 10个选择10个填空2道编程题 二:编程题 1:34 在排序数组中查找元素的第一个和最后一个位置 class Solution { public:/**思路:1.分为两种情况 那就是该元素是存在于排序数组当中,该元素不存在该排序数组当中。2.如果元素是存在于排序数组当…

进击吧! Blazor !第二期 回顾

Blazor 是一个 Web UI 框架,可通过 WebAssembly 在任意浏览器中运行 .Net 。Blazor 旨在简化快速的单页面 .Net 浏览器应用的构建过程,它虽然使用了诸如 CSS 和 HTML 之类的 Web 技术,但它使用 C#语言和 Razor 语法代替 JavaScrip…

蓝桥杯-长草-代码(BFS)

一:题目 题目描述 小明有一块空地,他将这块空地划分为 nn 行 mm 列的小块,每行和每列的长度都为 1。 小明选了其中的一些小块空地,种上了草,其他小块仍然保持是空地。 这些草长得很快,每个月,草都会向外…

Pytorch 中 LSTM 和 LSTMCell 的区别

LSTM 的官方文档在这里 在例子中: LSTM 函数的参数为输入特征向量的长度 input_size 10、隐藏层向量的长度 hidden_size 20、隐藏层的数量 num_layers 2; 输入 input 的维度是时间/序列长度(句子有多少个单词) time_steps 5、…

程序员修神之路--缓存架构不够好,系统容易瘫痪

“灵魂拷问缓存能大幅度提高系统性能,也能大幅度提高系统瘫痪几率怎么样防止缓存系统被穿透?缓存的雪崩是不是可以完全避免?前几篇文章我们介绍了缓存的优势以及数据一致性的问题,在一个面临高并发系统中,缓存几乎成了…

Magicodes.IE之花式导出

总体设计Magicodes.IE是一个导入导出通用库,支持Dto导入导出以及动态导出,支持Excel、Word、Pdf、Csv和Html。在本篇教程,笔者将讲述如何使用Magicodes.IE进行花式导出。在本篇教程,笔者主要讲述如何使用IE进行花式导出并满足客户…

京东笔试4.2-19:00随笔

30道选择考察到了数据结构,计网,linux,数据库,java基础,就记得这些了 两道编程题 一道二叉树 一道 动态规划 一道也没AC出来 第一道需要会做的前提是 需要创建二叉树 并给其赋值 然后再谈算法 因为一直刷leetcode,转换…

我又踩坑了!如何为HttpClient请求设置Content-Type标头?

最近在重构认证代码,认证过程相当常规:POST /open-api/v1/user-info?client_id&timstamp&rd12345&sign***&methodhmac content-type: application/json payload: { "token":"AA2917B0-C23D-40AB-A43A-4C4B61CC7C74&qu…

利用数组创建二叉树并赋值

1:二叉树的创建与赋值 (1):前言知识 这里的创建是利用层序序列进行创建,主要就是根节点的坐标为i 的话 那么左节点的坐标为 2i1,右节点的坐标为2i2;开辟一个结构体 struct Node {int val;Node * left;Node * right;Node () : val(-1),left(NULL),right(NULL) {};Node(int x)…

2020 中国开源年会(COSCon'20)再启程:开源向善(Open Source for Good)

中国开源年会COSCon2020正式启动!*本图由开源社设计组叶凯设计时间:2020年10月24-25日线上直播地址:bilibili & Youtube讲师互动平台:Zoom时间弹指飞逝,转眼即过去了一年。不知道各位在这多舛的半年间又和开源这二…

使用Azure Functions玩转Serverless

Serverless&Azure Functions通过无服务器计算,开发者无需管理基础结构,从而可以更快构建应用程序。通过无服务器应用程序,将由云服务提供商自动预配、缩放和管理运行代码所需的基础结构。要理解无服务器计算的定义,注意到服务…

java并发之初识

一:并发编程的难点 1:原子性问题 操作系统做任务切换,可以发生在任何一条CPU指令执行完成后;CPU能保证的原子操作是指令级别的,而不是高级语言的操作符; n不是原子操作的,而是3条指令 2:可见性问题 可见性是指一个线程对一个…

java并发之synchronized实现原理及其优化

1:synchronnized概述 synchronized修饰的方法或代码块相当于并发中的临界区,即在同一时刻jvm只允许一个线程进入执行。synchronized是通过锁机制实现同一时刻只允许一个线程来访问共享资源的。另外synchronized锁机制还可以保证线程并发运行的原子性,有…

.NET 是信息技术应用创新产业重要参与者

今天是国庆节,也是中秋节,月满中秋,举国欢庆,在这里祝各位开发者中秋国庆快乐。放假在家就想把这几年对于.NET发展相关生态做个梳理,写一篇文章来总结一下这两年从腾讯出来自己创业,推动.NET在国内的应用的…

蓝桥杯- 包子凑数

一:题目 题目描述 小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有 NN 种蒸笼,其中第 ii 种蒸笼恰好能放 A_iA i ​ 个包子。每种蒸笼都有非常多笼,可以认为是无限笼。 每当有顾客想买 XX 个包子,卖包子的大叔就会迅速选出若…

秋天 | 等疫情过后,我们继续背起相机去旅行

这是头哥侃码的第218篇原创2020年,注定是不平凡的一年。八个月前,我正和家人一起沉浸在春节的喜悦中,可没成想一场疫情的到来彻底改变了欢快的气氛。别的倒没什么,只是之前所有的计划全部被打乱了。先说春节假期,和舅舅…

简单理解CAP-BASE

1、CAPCAP是分布式系统的指导理论,是NoSQL数据库的理论基石。CAP其实就是对分布式系统的特性总结,即一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。…

面试必问系列之在浏览器中输入URL后到网页显示 其间发生了什么?

文章目录[TOC](文章目录)1:解析URL网址,从而生成发送给Web服务器的Http请求信息2:真实地址查询-----(DNS域名解析)3:调用协议栈4:可靠的传输 TCP5:远程定位--IP地址6:两点传输--获取MAC地址7:网卡--出口8:送别者--交换机9:出境大门--路由器10:相互扒皮--服务端与客户端1:解析UR…

C# 中的 is 真的是越来越强大,越来越语义化

一:背景 1. 讲故事最近发现 C#7 之后的 is 是越来越看不懂了,乍一看花里胡哨的,不过当我静下心来仔细研读,发现这 is 是越来越短小精悍,而且还特别语义化,那怎是一个爽字了得????,这一篇就和…

leetcode209. 长度最小的子数组(滑动窗口)

一:题目 二:上码 class Solution { public:/**思路:1.滑动窗口解法1>:确定窗口内是什么2>:确定窗口的起始位置3>:确定窗口的终止位置2.窗口:也就是我们的求的连续字符串的和3.窗口的起始位置: 窗口的起始位置最先是我们数组的起始位置,当窗口内连续数组的和大于targe…