导航:首页 > 网络安全 > 如何学习循环神经网络

如何学习循环神经网络

发布时间:2022-03-07 01:37:55

Ⅰ 循环神经网络RNN怎么训练

循环神经⽹络是为更好地处理时序信息而设计的

Ⅱ 关于循环神经网络RNN,隐藏层是怎么来的

RNN的隐藏层也可以叫循环核,简单来说循环核循环的次数叫时间步,循环核的个数就是隐藏层层数。

循环核可以有两个输入(来自样本的输入x、来自上一时间步的激活值a)和两个输出(输出至下一层的激活值h、输出至本循环核下一时间步的激活值a),输入和输出的形式有很多变化,题主想了解可以上B站搜索“吴恩达 深度学习”其中第五课是专门对RNN及其拓展进行的讲解,通俗易懂。

B站链接:网页链接

Ⅲ 有卷积神经网络/循环神经网络的matlab编程书籍吗,求推荐,能分享最好

推荐书籍:《MATLAB深度学习 机器学习、神经网络与人工智能》
作 者 :(美)Phil Kim着;敖富江,杜静,周浩译
出版发行 : 北京:清华大学出版社 , 2018.03
本书共6章,内容包括:机器学习、神经网络、多层神经网络的训练、
神经网络与分类问题、深度学习、卷积神经网络。

Ⅳ 入门 | 一文简述循环神经网络

入门 | 一文简述循环神经网络

本文简要介绍了什么是循环神经网络及其运行原理,并给出了一个 RNN 实现示例。

什么是循环神经网络(RNN)?它们如何运行?可以用在哪里呢?本文试图回答上述这些问题,还展示了一个 RNN 实现 demo,你可以根据自己的需要进行扩展。

循环神经网络架构

基础知识。Python、CNN 知识是必备的。了解 CNN 的相关知识,是为了与 RNN 进行对比:RNN 为什么以及在哪些地方比 CNN 更好。

我们首先从“循环”(Recurrent)这个词说起。为什么将其称为循环?循环的意思是:

经常或重复出现

将这类神经网络称为循环神经网络是因为它对一组序列输入重复进行同样的操作。本文后续部分将讨论这种操作的意义。

我们为什么需要 RNN?

也许你现在想的是,已经有像卷积网络这样表现非常出色的网络了,为什么还需要其他类型的网络呢?有一个需要用到 RNN 的特殊例子。为了解释 RNN,你首先需要了解序列的相关知识,我们先来讲一下序列。

序列是相互依赖的(有限或无限)数据流,比如时间序列数据、信息性的字符串、对话等。在对话中,一个句子可能有一个意思,但是整体的对话可能又是完全不同的意思。股市数据这样的时间序列数据也是,单个数据表示当前价格,但是全天的数据会有不一样的变化,促使我们作出买进或卖出的决定。

当输入数据具有依赖性且是序列模式时,CNN 的结果一般都不太好。CNN 的前一个输入和下一个输入之间没有任何关联。所以所有的输出都是独立的。CNN 接受输入,然后基于训练好的模型输出。如果你运行了 100 个不同的输入,它们中的任何一个输出都不会受之前输出的影响。但想一下如果是文本生成或文本翻译呢?所有生成的单词与之前生成的单词都是独立的(有些情况下与之后的单词也是独立的,这里暂不讨论)。所以你需要有一些基于之前输出的偏向。这就是需要 RNN 的地方。RNN 对之前发生在数据序列中的事是有一定记忆的。这有助于系统获取上下文。理论上讲,RNN 有无限的记忆,这意味着它们有无限回顾的能力。通过回顾可以了解所有之前的输入。但从实际操作中看,它只能回顾最后几步。

本文仅为了与人类大体相关联,而不会做任何决定。本文只是基于之前关于该项目的知识做出了自己的判断(我甚至尚未理解人类大脑的 0.1%)。

何时使用 RNN?

RNN 可用于许多不同的地方。下面是 RNN 应用最多的领域。

1. 语言建模和文本生成

给出一个词语序列,试着预测下一个词语的可能性。这在翻译任务中是很有用的,因为最有可能的句子将是可能性最高的单词组成的句子。

2. 机器翻译

将文本内容从一种语言翻译成其他语言使用了一种或几种形式的 RNN。所有日常使用的实用系统都用了某种高级版本的 RNN。

3. 语音识别

基于输入的声波预测语音片段,从而确定词语。

4. 生成图像描述

RNN 一个非常广泛的应用是理解图像中发生了什么,从而做出合理的描述。这是 CNN 和 RNN 相结合的作用。CNN 做图像分割,RNN 用分割后的数据重建描述。这种应用虽然基本,但可能性是无穷的。

5. 视频标记

可以通过一帧一帧地标记视频进行视频搜索。

深入挖掘

本文按照以下主题进行。每一部分都是基于之前的部分进行的,所以不要跳着读。

前馈网络循环网络循环神经元基于时间的反向传播(BPTT)RNN 实现

前馈网络入门

前馈网络通过在网络的每个节点上做出的一系列操作传递信息。前馈网络每次通过每个层直接向后传递信息。这与其他循环神经网络不同。一般而言,前馈网络接受一个输入并据此产生输出,这也是大多数监督学习的步骤,输出结果可能是一个分类结果。它的行为与 CNN 类似。输出可以是以猫狗等作为标签的类别。

前馈网络是基于一系列预先标注过的数据训练的。训练阶段的目的是减少前馈网络猜类别时的误差。一旦训练完成,我们就可以用训练后的权重对新批次的数据进行分类。

一个典型的前馈网络架构

还有一件事要注意。在前馈网络中,无论在测试阶段展示给分类器的图像是什么,都不会改变权重,所以也不会影响第二个决策。这是前馈网络和循环网络之间一个非常大的不同。

与循环网络不同,前馈网络在测试时不会记得之前的输入数据。它们始终是取决于时间点的。它们只会在训练阶段记得历史输入数据。

循环网络

也就是说,循环网络不仅将当前的输入样例作为网络输入,还将它们之前感知到的一并作为输入。

我们试着建立了一个多层感知器。从简单的角度讲,它有一个输入层、一个具备特定激活函数的隐藏层,最终可以得到输出。

多层感知器架构示例

如果在上述示例中的层数增加了,输入层也接收输入。那么第一个隐藏层将激活传递到下一个隐藏层上,依此类推。最后到达输出层。每一个隐藏层都有自己的权重和偏置项。现在问题变成了我们可以输入到隐藏层吗?

每一层都有自己的权重(W)、偏置项(B)和激活函数(F)。这些层的行为不同,合并它们从技术层面上讲也极具挑战性。为了合并它们,我们将所有层的权重和偏置项替换成相同的值。如下图所示:

现在我们就可以将所有层合并在一起了。所有的隐藏层都可以结合在一个循环层中。所以看起来就像下图:

我们在每一步都会向隐藏层提供输入。现在一个循环神经元存储了所有之前步的输入,并将这些信息和当前步的输入合并。因此,它还捕获到一些当前数据步和之前步的相关性信息。t-1 步的决策影响到第 t 步做的决策。这很像人类在生活中做决策的方式。我们将当前数据和近期数据结合起来,帮助解决手头的特定问题。这个例子很简单,但从原则上讲这与人类的决策能力是一致的。这让我非常想知道我们作为人类是否真的很智能,或者说我们是否有非常高级的神经网络模型。我们做出的决策只是对生活中收集到的数据进行训练。那么一旦有了能够在合理时间段内存储和计算数据的先进模型和系统时,是否可以数字化大脑呢?所以当我们有了比大脑更好更快的模型(基于数百万人的数据训练出的)时,会发生什么?

另一篇文章(https://deeplearning4j.org/lstm.html)的有趣观点:人总是被自己的行为所困扰。

我们用一个例子来阐述上面的解释,这个例子是预测一系列字母后的下一个字母。想象一个有 8 个字母的单词 namaskar。

namaskar(合十礼):印度表示尊重的传统问候或姿势,将手掌合起置于面前或胸前鞠躬。

如果我们在向网络输入 7 个字母后试着找出第 8 个字母,会发生什么呢?隐藏层会经历 8 次迭代。如果展开网络的话就是一个 8 层的网络,每一层对应一个字母。所以你可以想象一个普通的神经网络被重复了多次。展开的次数与它记得多久之前的数据是直接相关的。

循环神经网络的运作原理

循环神经元

这里我们将更深入地了解负责决策的实际神经元。以之前提到的 namaskar 为例,在给出前 7 个字母后,试着找出第 8 个字母。输入数据的完整词汇表是 {n,a,m,s,k,r}。在真实世界中单词或句子都会更复杂。为了简化问题,我们用的是下面这个简单的词汇表。

在上图中,隐藏层或 RNN 块在当前输入和之前的状态中应用了公式。在本例中,namaste 的字母 n 前面什么都没有。所以我们直接使用当前信息推断,并移动到下一个字母 a。在推断字母 a 的过程中,隐藏层应用了上述公式结合当前推断 a 的信息与前面推断 n 的信息。输入在网络中传递的每一个状态都是一个时间步或一步,所以时间步 t 的输入是 a,时间步 t-1 的输入就是 n。将公式同时应用于 n 和 a 后,就得到了一个新状态。

用于当前状态的公式如下所示:

h_t 是新状态,h_t-1 是前一个状态。x_t 是时间 t 时的输入。在对之前的时间步应用了相同的公式后,我们已经能感知到之前的输入了。我们将检查 7 个这样的输入,它们在每一步的权重和函数都是相同的。

现在试着以简单的方式定义 f()。我们使用 tanh 激活函数。通过矩阵 W_hh 定义权重,通过矩阵 W_xh 定义输入。公式如下所示:

上例只将最后一步作为记忆,因此只与最后一步的数据合并。为了提升网络的记忆能力,并在记忆中保留较长的序列,我们必须在方程中添加更多的状态,如 h_t-2、h_t-3 等。最后输出可以按测试阶段的计算方式进行计算:

其中,y_t 是输出。对输出与实际输出进行对比,然后计算出误差值。网络通过反向传播误差来更新权重,进行学习。本文后续部分会对反向传播进行讨论。

基于时间的反向传播算法(BPTT)

本节默认你已经了解了反向传播概念。如果需要对反向传播进行深入了解,请参阅链接:?http://cs231n.github.io/optimization-2/?。

现在我们了解了 RNN 是如何实际运作的,但是在实际工作中如何训练 RNN 呢?该如何决定每个连接的权重呢?如何初始化这些隐藏单元的权重呢?循环网络的目的是要准确地对序列输入进行分类。这要靠误差值的反向传播和梯度下降来实现。但是前馈网络中使用的标准反向传播无法在此应用。

与有向无环的前馈网络不同,RNN 是循环图,这也是问题所在。在前馈网络中可以计算出之前层的误差导数。但 RNN 的层级排列与前馈网络并不相同。

答案就在之前讨论过的内容中。我们需要展开网络。展开网络使其看起来像前馈网络就可以了。

展开 RNN

在每个时间步取出 RNN 的隐藏单元并复制。时间步中的每一次复制就像前馈网络中的一层。在时间步 t+1 中每个时间步 t 层与所有可能的层连接。因此我们对权重进行随机初始化,展开网络,然后在隐藏层中通过反向传播优化权重。通过向最低层传递参数完成初始化。这些参数作为反向传播的一部分也得到了优化。

展开网络的结果是,现在每一层的权重都不同,因此最终会得到不同程度的优化。无法保证基于权重计算出的误差是相等的。所以每一次运行结束时每一层的权重都不同。这是我们绝对不希望看到的。最简单的解决办法是以某种方式将所有层的误差合并到一起。可以对误差值取平均或者求和。通过这种方式,我们可以在所有时间步中使用一层来保持相同的权重。

RNN 实现

本文试着用 Keras 模型实现 RNN。我们试着根据给定的文本预测下一个序列。

代码地址:?https://gist.github.com/.git?

该模型是 Yash Katariya 建的。我对该模型做了一些细微的改动以适合本文的要求。

Ⅳ 循环神经网络 擅长解决什么样的问题

RNN建立在与FNN相同的计算单元上,两者之间区别在于:组成这些神经元相互关联的架构有所不同。FNN是建立在层面之上,其中信息从输入单元向输出单元单向流动,在这些连通模式中并不存在不定向的循环。尽管大脑的神经元确实在层面之间的连接上包含有不定向循环,我们还是加入了这些限制条件,以牺牲计算的功能性为代价来简化这一训练过程。因此,为了创建更为强大的计算系统,我们允许RNN打破这些人为设定强加性质的规定:RNN无需在层面之间构建,同时定向循环也会出现。事实上,神经元在实际中是允许彼此相连的。

Ⅵ 如何实现模拟人类视觉注意力的循环神经网络

如果你的式子写对了,那出来的结果肯定和sim函数输出的结果是一样的。%计算S1与S2层的输出A1=tansig(W1*p,B1);A2=purelin(W2*A1,B2);隐层为tansig函数,输出层简单的线性相加,再附上阈值,不可能会错的。sim函数的原理也就是如此。

Ⅶ 如何使用tensorflow构建,训练和改进循环神经网络

我们利用 TensorFlow 提供的 tf.train.AdamOptimizer 来控制学习速度。AdamOptimizer 通过使用动量(参数的移动平均数)来改善传统梯度下降,促进超参数动态调整。我们可以通过创建标签错误率的摘要标量来跟踪丢失和错误率:
# Create a placeholder for the summary statistics
with tf.name_scope("accuracy"):
# Compute the edit (Levenshtein) distance of the top path
distance =tf.edit_distance(tf.cast(self.decoded[0], tf.int32), self.targets)
# Compute the label error rate (accuracy)
self.ler =tf.rece_mean(distance, name='label_error_rate')
self.ler_placeholder =tf.placeholder(dtype=tf.float32, shape=[])
self.train_ler_op =tf.summary.scalar("train_label_error_rate", self.ler_placeholder)
self.dev_ler_op =tf.summary.scalar("validation_label_error_rate", self.ler_placeholder)
self.test_ler_op =tf.summary.scalar("test_label_error_rate", self.ler_placeholder)
如何改进 RNN
现在我们构建了一个简单的 LSTM RNN 网络,下一个问题是:如何继续改进它?幸运的是,在开源社区里,很多大公司都开源了自己的最新语音识别模型。在 2016 年 9 月,微软的论文《The Microsoft 2016 Conversational Speech Recognition System》展示了在 NIST 200 Switchboard 数据中单系统残差网络错误率 6.9% 的新方式。他们在卷积+循环神经网络上使用了几种不同的声学和语言模型。微软的团队和其他研究人员在过去 4 年中做出的主要改进包括:

在基于字符的 RNN 上使用语言模型

使用卷积神经网络(CNN)从音频中获取特征

使用多个 RNN 模型组合

值得注意的是,在过去几十年里传统语音识别模型获得的研究成果,在目前的深度学习语音识别模型中仍然扮演着自己的角色。

修改自: A Historical Perspective of Speech Recognition, Xuedong Huang, James Baker, Raj Reddy Communications of the ACM, Vol. 57 No. 1, Pages 94-103, 2014
训练你的第一个 RNN 模型
在本教程的 Github 里,作者提供了一些介绍以帮助读者在 TensorFlow 中使用 RNN 和 CTC 损失函数训练端到端语音识别系统。大部分事例数据来自 LibriVox。数据被分别存放于以下文件夹中:

Train: train-clean-100-wav (5 examples)

Test: test-clean-wav (2 examples)

Dev: dev-clean-wav (2 examples)

当训练这些示例数据时,你会很快注意到训练数据的词错率(WER)会产生过拟合,而在测试和开发集中词错率则有 85% 左右。词错率不是 100% 的原因在于每个字母有 29 种可能性(a-z、逗号、空格和空白),神经网络很快就能学会:

某些字符(e,a,空格,r,s,t)比其他的更常见

辅音-元音-辅音是英文的构词特征

MFCC 输入声音信号振幅特征的增加只与字母 a-z 有关

Ⅷ 如何使用TensorFlow构建,训练和改进循环神经网络

我们利用 TensorFlow 提供的 tf.train.AdamOptimizer 来控制学习速度。AdamOptimizer 通过使用动量(参数的移动平均数)来改善传统梯度下降,促进超参数动态调整。我

Ⅸ 如何理解循环神经网络实现预测

神经系统(nervous system)是机体内起主导作用的系统,分为中枢神经系统和周围神经系统两大部分。
神经系统是人体内起主导作用的功能调节系统。人体的结构与功能均极为复杂,体内各器官、系统的功能和各种生理过程都不是各自孤立地进行,而是在神经系统的直接或间接调节控制下,互相联系、相互影响、密切配合,使人体成为一个完整统一的有机体,实现和维持正常的生命活动。同时,人体又是生活在经常变化的环境中,神经系统能感受到外部环境的变化对体内各种功能不断进行迅速而完善的调整,使人体适应体内外环境的变化。可见,神经系统在人体生命活动中起着主导的调节作用,人类的神经系统高度发展,特别是大脑皮层不仅进化成为调节控制的最高中枢,而且进化成为能进行思维活动的器官。因此,人类不但能适应环境,还能认识和改造世界。
神经系统由中枢部分及其外周部分所组成。中枢部分包括脑和脊髓,分别位于颅腔和椎管内,两者在结构和功能上紧密联系,组成中枢神经系统。外周部分包括12对脑神经和31对脊神经,它们组成外周神经系统。外周神经分布于全身,把脑和脊髓与全身其他器官联系起来,使中枢神经系统既能感受内外环境的变化(通过传入神经传输感觉信息),又能调节体内各种功能(通过传出神经传达调节指令),以保证人体的完整统一及其对环境的适应。神经系统的基本结构和功能单位是神经元(神经细胞),而神经元的活动和信息在神经系统中的传输则表现为一定的生物电变化及其传播。例如,外周神经中的传入神经纤维把感觉信息传入中枢,传出神经纤维把中枢发出的指令信息传给效应器,都是以神经冲动的形式传送的,而神经冲动就是一种称为动作电位的生物电变化,是神经兴奋的标志。
中枢神经通过周围神经与人体其他各个器官、系统发生极其广泛复杂的联系。神经系统在维持机体内环境稳定,保持机体完整统一性及其与外环境的协调平衡中起着主导作用。在社会劳动中,人类的大脑皮层得到了高速发展和不断完善,产生了语言、思维、学习、记忆等高级功能活动,使人不仅能适应环境的变化,而且能认识和主动改造环境。内、外环境的各种信息,由感受器接受后,通过周围神经传递到脑和脊髓的各级中枢进行整合,再经周围神经控制和调节机体各系统器官的活动,以维持机体与内、外界环境的相对平衡。神经系统是由神经细胞(神经元)和神经胶质所组成。
中枢神经通过周围神经与人体其他各个器官、系统发生极其广泛复杂的联系。神经系统在维持机体内环境稳定,保持机体完整统一性及其与外环境的协调平衡中起着主导作用。在社会劳动中,人类的大脑皮层得到了高速发展和不断完善,产生了语言、思维、学习、记忆等高级功能活动,使人不仅能适应环境的变化,而且能认识和主动改造环境。内、外环境的各种信息,由感受器接受后,通过周围神经传递到脑和脊髓的各级中枢进行整合,再经周围神经控制和调节机体各系统器官的活动,以维持机体与内、外界环境的相对平衡。神经系统是由神经细胞(神经元)和神经胶质所组成。
中枢神经系统central nervous system包括位于颅腔内的脑和位于椎管内的脊髓。
脑brain是中枢神经系统的头端膨大部分,位于颅腔内。人脑可分为端脑、间脑、中脑、脑桥、小脑和延髓六个部分。通常把中脑、脑桥和延髓合称为脑干,延髓向下经枕骨大孔连接脊髓。脑的内腔称为腔室,内含脑脊髓液。端脑包括左、右大脑半球。每个半球表层为灰质所覆叫大脑皮质。人类的大脑皮质在长期的进化过程中高度发展,它不仅是人类各种机能活动的高级中枢,也是人类思维和意识活动的物质基础。
脊髓spinal cord呈前后扁的圆柱体,位于椎管内,上端在平齐枕骨大孔处与延髓相续,下端终于第1腰椎下缘水平。脊髓前、后面的两侧发出许多条细的神经纤维束,叫做根丝。一定范围的根丝向外方集中成束,形成脊神经的前根和后根。前、后根在椎间孔处合并形成脊神经。脊髓以每对脊神经根根丝的出入范围为准,划分为31个节段,即颈髓8节(C1-8),胸髓12节(T1-12),腰髓5节(L1-5),骶髓(S1-5),尾髓1节(Co1)。
周围神经系统peripheral nervous system联络于中枢神经和其它各系统器官之间,包括与脑相连的12对脑神经cranial nerves和与脊髓相连的31对脊神经spinal nerves。按其所支配的周围器官的性质可分为分布于体表和骨骼肌的躯体神经系和分布于内脏、心血管和腺体的内脏神经系。

阅读全文

与如何学习循环神经网络相关的资料

热点内容
三星手机网络代码 浏览:108
明明连上了网络为什么总是掉线 浏览:469
网络安全法指出工业电信 浏览:140
手机电信4g网络延迟高 浏览:564
三七网络开发了哪个仙境游戏 浏览:268
手提电脑怎么改变连接网络方式 浏览:541
电脑开机一段时间网络变慢 浏览:164
为啥有网络无线连不上 浏览:902
去哪里推广网络 浏览:33
网络安全说法正确的有哪些 浏览:282
什么叫环网网络 浏览:49
怎样设计手机增强手机信号网络 浏览:73
甘肃京东网络运营电话多少 浏览:80
密码技术保证网络安全的核心技术 浏览:113
一加5t网络设置教程 浏览:523
wifi玩网络游戏卡不卡 浏览:317
wifi网络覆盖选哪家 浏览:909
昆广网络信息阅览如何操作 浏览:562
融媒体中心网络安全培训 浏览:829
苹果6破解4g网络 浏览:938

友情链接