lstm

LSTMs 长短期记忆网络系列

孤街醉人 提交于 2020-02-07 02:11:38
RNN的长期依赖问题 什么是长期依赖? 长期依赖是指当前系统的状态, 可能受很长时间之前系统状态的影响 ,是RNN中无法解决的一个问题。 如果从 (1) “ 这块冰糖味道真?” 来预测下一个词,是很容易得出“ 甜 ”结果的。但是如果有这么一句话, (2) “ 他吃了一口菜,被辣的流出了眼泪,满脸通红。旁边的人赶紧给他倒了一杯凉水,他咕咚咕咚喝了两口,才逐渐恢复正常。他气愤地说道:这个菜味道真? ” ,让你从这句话来预测下一个词,确实很难预测的。因为出现了长期依赖, 预测结果要依赖于很长时间之前的信息。 RNN的长期依赖问题 RNN 是包含循环的网络,允许信息的持久化。 预测问题(1): 相关的信息和预测的词位置之间的间隔是非常小时,RNN 可以学会使用先前的信息。 预测问题(2): 在这个间隔不断增大时,RNN 会丧失学习到连接如此远的信息的能力。 Why? 理论上,通过调整参数,RNN是可以学习到时间久远的信息的。 Bengio, et al. (1994) 但是,实践中的结论是,RNN很难学习到这种信息的。 RNN 会丧失学习时间价格较大的信息的能力, 导致长期记忆失效。 RNN中,考虑每个连接的权重,如果abs(W)<1,逐层迭代,将写成含权重的表达式,那么前面的系数会 连乘多个权重 。当层与层之间距离非常远时, 较前层传递到当前层是非常小的一个数 ,可以认为对几乎不产生影响

Attention-based End-to-End Models for Small-Footprint Keyword Spotting基于注意的小脚印关键字点对点模型

会有一股神秘感。 提交于 2020-02-06 20:18:14
Abstract 在本文中,我们提出了一种基于注意力的端到端神经网络方法,用于小足迹关键词发现(KWS),旨在简化构建生产质量的KWS系统的流程。我们的模型包括一个编码器和一个注意机制。编码器使用RNN将输入信号转换为高级表示。然后,注意力机制对编码器特征进行加权,并生成固定长度的向量。最后,通过线性变换和softmax函数,向量成为用于关键字检测的得分。我们还评估了不同编码器架构(包括LSTM,GRU和CRNN)的性能。在现实世界中唤醒数据的实验表明,我们的方法在很大程度上优于最新的Deep KWS方法,并且CRNN实现了最佳性能。更具体地说,在约84K参数的情况下,我们的基于注意力的模型在每小时1.0次错误警报(FA)的情况下实现了1.02%的错误拒绝率(FRR)。 索引词:基于注意力的模型,端到端关键字识别,卷积神经网络,递归神经网络 1. Introduction 关键字发现(KWS)或口语检测(STD)是一项任务,用于检测音频流中的预定义关键字。具体而言,作为KWS的典型应用,唤醒单词检测已成为各种设备上必不可少的功能,以使用户拥有完全的免提体验。实用的设备上KWS模块必须以较低的误报率将误报率降至最低,以使其易于使用,同时将内存占用空间,等待时间和计算成本限制得尽可能小。 作为经典解决方案,基于大词汇量连续语音识别(LVCSR)的系统[1、2]被广泛用于KWS任务

【时空序列预测第四篇】PredRNN++: Towards A Resolution of the Deep-in-Time Dilemma in Spatiotemporal Predictive

风格不统一 提交于 2020-02-06 20:15:33
前言 保持住节奏,每周起码一篇paper reading,要时刻了解研究的前沿,是一个不管是工程岗位还是研究岗位AIer必备的工作,共勉! 准备再写几篇这种非常细致的文章之后,接下来写作主要集中在模型的结构,创新点,解决的问题,以及比较巧妙的操作,代码实战,以及我个人感觉需要写下来,并且有意思的东西。 一、Address 这是ICML2018年的一篇paper,来自于清华的团队 PredRNN++: Towards A Resolution of the Deep-in-Time Dilemma in Spatiotemporal Predictive http://proceedings.mlr.press/v80/wang18b/wang18b.pdf 二、Introduction 2.1 创新思路 文中abstract中先指出本文作者的创新之一在于把双memory用级联的方式链接构建新的LSTM结构(Causal LSTM),并且全篇文章围绕deeper in time来说明,这里deeper in time在读完全篇之后理解为就是网络cell的堆叠和时间步的结构。 这里还提出了用一个gradient highway units work去解决存在的梯度消失问题,并且此结构和Causal LSTM无缝连接。 句子后面之所以会强调自适应的获取短时和长时的信息依赖

LSTM & GRU

筅森魡賤 提交于 2020-02-04 10:23:18
人人都能看懂的LSTM 陈诚 努力修炼内力 已关注 henryWang 、 红色石头 、 ShiqingFan 、 两太阳的栗子社长 等 1,485 人赞同了该文章 这是在看了台大李宏毅教授的深度学习视频之后的一点总结和感想。看完介绍的第一部分RNN尤其LSTM的介绍之后,整个人醍醐灌顶。本篇博客就是对视频的一些记录加上了一些个人的思考。 0. 从RNN说起 循环神经网络(Recurrent Neural Network,RNN)是一种用于处理序列数据的神经网络。相比一般的神经网络来说,他能够处理序列变化的数据。比如某个单词的意思会因为上文提到的内容不同而有不同的含义,RNN就能够很好地解决这类问题。 1. 普通RNN 先简单介绍一下一般的RNN。 其主要形式如下图所示(图片均来自台大李宏毅教授的PPT): 这里: 为当前状态下数据的输入, 表示接收到的上一个节点的输入。 为当前节点状态下的输出,而 为传递到下一个节点的输出。 通过上图的公式可以看到,输出 h' 与 x 和 h 的值都相关。 而 y 则常常使用 h' 投入到一个线性层(主要是进行维度映射)然后使用softmax进行分类得到需要的数据。 对这里的y如何通过 h' 计算得到往往看具体模型的使用方式。 通过序列形式的输入,我们能够得到如下形式的RNN。 2. LSTM 2.1 什么是LSTM 长短期记忆(Long

LSTM on top of a pre-trained CNN

别等时光非礼了梦想. 提交于 2020-02-03 08:59:28
问题 I have trained a CNN and now I want to load the model and then on top put a LSTM but I'm getting some errors. ''' Load the output of the CNN ''' cnn_model = load_model(os.path.join('weights', 'CNN_patch_epoch-20.hdf5')) last_layer = cnn_model.get_layer('pool5').output ''' Freeze previous layers ''' for layer in cnn_model.layers: layer.trainable = False x = TimeDistributed(Flatten())(last_layer) x = LSTM(neurons, dropout=dropout, name='lstm')(x) out = Dense(n_output, kernel_initializer=weight

LSTM on top of a pre-trained CNN

我是研究僧i 提交于 2020-02-03 08:56:48
问题 I have trained a CNN and now I want to load the model and then on top put a LSTM but I'm getting some errors. ''' Load the output of the CNN ''' cnn_model = load_model(os.path.join('weights', 'CNN_patch_epoch-20.hdf5')) last_layer = cnn_model.get_layer('pool5').output ''' Freeze previous layers ''' for layer in cnn_model.layers: layer.trainable = False x = TimeDistributed(Flatten())(last_layer) x = LSTM(neurons, dropout=dropout, name='lstm')(x) out = Dense(n_output, kernel_initializer=weight

第3章 循环神经网络(RNN与LSTM)——3.2 BP神经网络模型

混江龙づ霸主 提交于 2020-02-02 03:56:29
1.正向传播,输入->隐含->输出层 (1)网络初始化,定义每层节点和权重 (2)隐藏层的输出 (3)输出层的输出 2.误差计算 3.反向传播,误差反向传播,权重更新 (1)隐藏层到输出层 (2)输入层到隐藏层 4.偏置更新 (1)隐藏层到输出层 (2)输入层到隐藏层 5.BP神经网络,前馈神经网络 (1)可以通过逐层信息传递到最后的输出 (2)沿着一条直线计算,直到最后一层,求出计算结果 (3)包含输入层、输出层和隐藏层,其目的是实现从输入到输出的映射 (4)一般包含多层,并且层与层之间是全连接的,不存在同层和跨层连接 来源: CSDN 作者: 玛丽有只小绵羊 链接: https://blog.csdn.net/lieslyang/article/details/104128993

想了解递归神经网络?这里有一份入门教程

久未见 提交于 2020-01-31 11:04:32
导语:递归网络是一类人工神经网络,用于识别诸如文本、基因组、手写字迹、语音等序列数据的模式,或用于识别传感器、股票市场、政府机构产生的数值型时间序列数据。 递归神经网络入门教程 引言 递归神经网络是一类人工神经网络,可用于识别诸如文本、基因组、手写字迹、语音等序列数据的模式,也可用于识别传感器、股票市场、政府机构产生的数值型时间序列数据。递归网络可以说是最强大的神经网络,甚至可以将图像分解为一系列图像块,作为序列加以处理。由于递归网络拥有一种特定的记忆模式,而记忆也是人类的基本能力之一,所以下文会时常将递归网络与人脑的记忆活动进行类比。 前馈网络回顾 要理解递归网络,首先需要了解前馈网络的基础知识。这两种网络的名字都来自于它们通过一系列网络节点数学运算来传递信息的方式。前馈网络将信息径直向前递送(从不返回已经过的节点),而递归网络则将信息循环传递。 在前馈网络中,样例输入网络后被转换为一项输出;在进行有监督学习时,输出为一个标签。也就是说,前馈网络将原始数据映射到类别,识别出信号的模式,例如一张输入图像应当给予“猫”还是“大象”的标签。 我们用带有标签的图像定型一个前馈网络,直到网络在猜测图像类别时的错误达到最少。将参数,即权重定型后,网络就可以对从未见过的数据进行分类。已定型的前馈网络可以接受任何随机的图片组合,而输入的第一张照片并不会影响网络对第二张照片的分类

Investigating Neural Network based Query-by-Example Keyword Spotting Approach for Personalized Wake-

最后都变了- 提交于 2020-01-30 18:57:39
Investigating Neural Network based Query-by-Example Keyword Spotting Approach for Personalized Wake-up Word Detection in Mandarin Chinese 基于神经网络的示例查询关键词识别方法在普通话个性化唤醒词检测中的研究 Abstract 我们使用示例查询关键字查找(QbyE-KWS)方法来解决针对占地空间小,计算成本低的设备应用的个性化唤醒单词检测问题。 QbyE-KWS将关键字作为模板,并通过DTW在音频流中匹配模板,以查看是否包含关键字。在本文中,我们使用神经网络作为声学模型来提取DNN / LSTM音素的后验特征和LSTM嵌入特征。具体来说,我们研究了LSTM嵌入特征提取器,用于普通话中不同的建模单元,从音素到单词。我们还研究了两种流行的DTW方法的性能:S-DTW和SLN-DTW。 SLN-DTW无需在S-DTW方法中使用分段过程,就可以准确有效地搜索长音频流中的关键字。我们的研究表明,与S-DTW方法相比,DNN音素后验加SLN-DTW方法实现了最高的计算效率和最新性能,相对丢失率降低了78%。字级LSTM嵌入功能显示出比其他嵌入单元更高的性能。 索引词:关键字发现,唤醒词检测,DTW,示例查询,DNN,LSTM 1. Introduction

《Sequence Models》课堂笔记

拜拜、爱过 提交于 2020-01-29 16:37:01
Lesson 5 Sequence Models 这篇文章其实是 Coursera 上吴恩达老师的深度学习专业课程的第五门课程的课程笔记。 参考了其他人的笔记继续归纳的。 符号定义 假如我们想要建立一个能够自动识别句中人名地名等位置的序列模型,也就是一个命名实体识别问题,这常用于搜索引擎。命名实体识别系统可以用来查找不同类型的文本中的人名、公司名、时间、地点、国家名和货币名等等。 我们输入语句 "Harry Potter and Herminoe Granger invented a new spell." 作为输入数据 \(x\) ,我们想要这个序列模型输出 \(y\) ,使得输入的每个单词都对应一个输出值,同时这个 \(y\) 能够表明输入的单词是否是人名的一部分。技术上来说,还有更加复杂的输出形式,它不仅能够表明输入词是否是人名的一部分,它还能够告诉你这个人名在这个句子里从哪里开始到哪里结束。 以简单的输出形式为例。这个输入数据是 9 个单词组成的序列,所以最终我们会有 9 个特征集合来表示这 9 个单词,并按序列中的位置进行索引, \(x^{<1>},x^{<2>}\) 直到 \(x^{<9>}\) 来索引不同的位置。 输出数据也是一样,用 \(y^{<1>},y^{<2>}\) 到 \(y^{<9>}\) 来表示输出数据。同时使用 \(T_x\) 来表示输入序列的长度,