引言
自然语言处理和人工智能聊天机器人领域许多最令人印象深刻的进步都是由 递归神经网络(RNN) 和长短期记忆(LSTM)网络。 RNN 和 LSTM 是特殊的神经网络架构,能够处理顺序数据,即按时间顺序排列的数据。 LSTM 是 RNN 的本质改进版本,能够解释更长的数据序列。 让我们看一下 RNN 和 LSTMS 的结构以及它们如何支持创建复杂的自然语言处理系统。
什么是前馈神经网络?
因此,在讨论长短期记忆 (LSTM) 和卷积神经网络 (CNN) 的工作原理之前,我们应该先讨论一下神经网络的一般格式。
神经网络旨在检查数据并学习相关模式,以便这些模式可以应用于其他数据并对新数据进行分类。 神经网络分为三部分:输入层、隐藏层(或多个隐藏层)和输出层。
输入层将数据输入神经网络,而隐藏层则学习数据中的模式。 数据集中的隐藏层通过"权重"和"偏差"连接到输入和输出层,这只是数据点如何相互关联的假设。 这些权重在训练期间进行调整。 当网络训练时,模型对训练数据(输出值)的猜测将与实际训练标签进行比较。 在训练过程中,网络应该(希望)能够更准确地预测数据点之间的关系,以便能够准确地对新数据点进行分类。 深度神经网络是中间有更多层/更多隐藏层的网络。 模型具有的隐藏层和神经元/节点越多,模型识别数据中的模式的能力就越好。
常规的前馈神经网络,就像我上面描述的那样,通常被称为"密集神经网络"。 这些密集的神经网络与专门解释不同类型数据的不同网络架构相结合。
什么是 RNN(循环神经网络)?
循环神经网络采用前馈神经网络的一般原理,并使它们能够通过以下方式处理顺序数据: 为模型提供内部存储器。 RNN 名称中的"循环"部分来自于输入和输出循环这一事实。一旦产生网络的输出,输出就会被复制并作为输入返回到网络。在做出决策时,不仅要分析当前的输入和输出,还要考虑之前的输入。换句话说,如果网络的初始输入是 X,输出是 H,则 H 和 X1(数据序列中的下一个输入)都会被输入到网络中进行下一轮学习。通过这种方式,数据的上下文(之前的输入)在网络训练时得以保留。
这种架构的结果是 RNN 能够处理顺序数据。 然而,RNN 存在一些问题。 RNN 面临以下问题 梯度消失和梯度爆炸问题。
RNN 可以解释的序列长度相当有限,尤其是与 LSTM 相比。
什么是 LSTM(长短期记忆网络)?
长短期记忆网络可以被视为 RNN 的扩展,再次应用保留输入上下文的概念。 然而,LSTM 在几个重要方面进行了修改,使它们能够用更先进的方法解释过去的数据。 对 LSTM 所做的修改解决了梯度消失问题,并使 LSTM 能够考虑更长的输入序列。
LSTM 模型由 三个不同的组件或门. 有一个 输入门、输出门和遗忘门。 与 RNN 非常相似,LSTM 在修改模型的内存和输入权重时会考虑前一个时间步的输入。 输入门决定哪些值是重要的并且应该让其通过模型。 输入门中使用了 sigmoid 函数,它决定哪些值要通过循环网络传递。 零会删除该值,而 1 会保留该值。 这里还使用了 TanH 函数,它决定输入值对模型的重要性,范围从 -1 到 1。
在考虑当前输入和内存状态后,输出门决定将哪些值推入下一个时间步。 在输出门中,对值进行分析并分配从 -1 到 1 的重要性。这会在数据进行下一个时间步计算之前对其进行调节。 最后,遗忘门的工作是删除模型认为对于做出有关输入值的性质的决策不必要的信息。 忘记门对值使用 sigmoid 函数,输出 0(忘记这个)和 1(保留这个)之间的数字。
LSTM 神经网络由可以解释顺序单词数据的特殊 LSTM 层和如上所述的密集连接层组成。 一旦数据穿过 LSTM 层,它就会进入密集连接层。