《白话强化学习与python》笔记——第六章深度学习(二)-循环神经网络

时间:2024-04-05 10:55:39

循环神经网络(Recurrent Neural Network, RNN)是一种专门用来处理序列数据的神经网络。与传统的神经网络不同,RNN能够利用内部的状态(记忆)来处理序列中的每一个元素,并把前面的信息传递到后续的计算中。这种结构使得RNN特别适合于处理自然语言、时间序列数据、文本、语音等类型的数据。

(1)长短期记忆网络(LSTM)

长短期记忆网络(Long Short-Term Memory, LSTM)是一种特殊类型的循环神经网络(RNN),专门设计来解决标准RNN在处理长期依赖问题时的梯度消失或梯度爆炸问题。LSTEM由Hochreiter和Schmidhuber在1997年提出,并在之后的研究中得到了广泛的使用和改进。

LSTM的核心思想是在传统的RNN结构中引入了一个复杂的单元称为“记忆块”(memory block),该记忆块包含三个主要部分:输入门(input gate)、遗忘门(forget gate)和输出门(output gate)。这些门控机制允许网络在必要时记住信息,或者忘记无关的信息,从而有效地学习长序列中的模式和依赖关系。

LSTM的关键特性包括:

门控机制:输入门、遗忘门和输出门控制信息的流动。输入门决定哪些新信息会被存储到细胞状态(cell state)中,遗忘门决定哪些旧状态会被遗忘,而输出门则控制哪些状态会输出给下一个时间步。

细胞状态:这是贯穿整个链条的核心部分,它携带着关于长期状态的信息并且有一个线性的流动方式,避免了梯度消失的问题。

可学习的遗忘:与传统的RNN不同,LSTM有能力通过遗忘门丢弃或减弱无关的旧信息,这有助于网络更好地处理时序数据中的长期依赖。

参数共享:与所有RNN一样,LSTM在不同时间步上使用相同的权重,减少了模型参数数量并提高了训练效率。

灵活的时间动态行为:由于其复杂的内部结构,LSTM能够捕捉复杂的时间动态特性,这对于许多序列预测任务来说是非常有价值的。

解决长期依赖问题:通过上述机制,LSTM可以有效捕捉长距离的时间依赖关系,这对于自然语言处理、语音识别等任务至关重要。

网络结构

一个LSTM 网络通常由一层或者两层LSTM单元组成,每一层中的单元可以首尾相接,在时序列上,输入可以从前向后传递。
在这里插入图片描述
在这里插入图片描述

长短期记忆网络(LSTM)的网络结构设计用于有效地传递和存储长期依赖关系。其关键组件是所谓的“LSTM单元”,它通过精心设计的“门”结构来控制信息的流动和存储。一个标准的LSTM单元包含以下部分:

输入门(Input Gate): 决定哪些新信息会被加入到细胞状态(cell state)中。输入门由两部分组成:一是sigmoid激活函数,其输出在0到1之间,决定了哪些信息可以通过;二是tanh激活函数,生成候选值,这些值可能会被添加到细胞状态中。

遗忘门(Forget Gate): 确定哪些旧信息会被从细胞状态中丢弃。这也是一个sigmoid激活函数,其输出为每个细胞状态分量一个介于0到1之间的值,其中0表示“完全丢弃”,1表示“完全保留”。
在这里插入图片描述

细胞状态(Cell State): 这是贯穿整个链条的核心部分,携带着关于长期状态的信息并且有一个线性的流动方式,避免了梯度消失的问题。细胞状态的更新包括加上输入门筛选后的新信息并丢弃遗忘门决定丢弃的旧信息。

输出门(Output Gate): 确定下一个隐藏状态应该输出什么。首先,一个sigmoid层决定细胞状态的哪些部分会影响下一个隐藏状态。然后,通过tanh激活函数将细胞状态进行变换(使得输出在-1到1之间),并乘以sigmoid层的输出,从而只有相关的信息会流出。

隐藏状态(Hidden State): 基于输出门的输出,隐藏状态携带了到目前为止序列中的信息,并传递给下一个时间步的LSTM单元或作为当前时间步的输出。

在数学上,这些操作可以表示为一系列公式,描述了如何根据当前的输入、前一个时间步的隐藏状态以及细胞状态来计算当前时间步的隐藏状态和细胞状态。

LSTM通常按顺序堆叠在一起形成层,而多个这样的层可以组成一个深度LSTM网络。在实际应用中,这种深度结构允许模型捕捉更复杂的模式和长期依赖。

LSTM的设计使其非常适合于处理自然语言、语音识别、机器翻译等涉及序列数据的任务。通过调整门控机制,LSTM能够记住长期的历史信息并在必要时利用它,这使其在许多任务中都取得了显著的成功。