0
点赞
收藏
分享

微信扫一扫

『迷你教程』递归神经网络及数学赋权通俗理解

千白莫 2022-02-03 阅读 38

文章目录

对于序列或时间序列数据,传统的前馈网络( feedforward networks )不能用于 Train 和 Prediction。需要一种能够保留过去或历史信息的机制来预测未来的价值。递归神经网络(RNNs)是传统前馈人工神经网络的一种变体,它能够处理序列数据,并能训练其掌握过去的知识。
在这里插入图片描述

本文分为两部分:RNN的工作原理、不同的RNN体系结构和变体。

什么是递归神经网络

递归神经网络(RNN,也称循环神经网络)是一种特殊类型的人工神经网络,适用于时间序列数据或涉及序列的数据。普通的前馈神经网络只适用于相互独立的数据点。然而,如果我们有一个序列中的数据,使得一个数据点依赖于以前的数据点,那么我们需要修改神经网络,以合并这些数据点之间的依赖关系。RNNs有“内存”的概念,它可以帮助它们存储以前输入的状态或信息,从而生成序列的下一个输出。

递归神经网络的展开
在这里插入图片描述
一个简单的RNN有一个反馈循环,如上图的第一个图表所示。在灰色矩形中显示的反馈环可以在3个时间步骤中展开,以产生上述图形的第二个网络。当然,可以改变架构,以便网络展开 k k k time次步骤。

  • x t ∈ R x_t\in R xtR是时间步骤 t t t的输入。为了理解,我们假设 x t x_t xt是一个具有单个特性的标量值。你可以把这个想法推广到 d d d维特征向量。
  • y t ∈ R y_t\in R ytR是网络在时间步骤 t t t的输出。我们可以在网络中产生多个输出,但是在这个例子中,我们假设只有一个输出。
  • h t 在 R m h_t在R^m htRm向量中存储隐藏单元/状态的值,时间为 t t t。这也被称为当前上下文 m m m 是隐藏单位的数量。 h 0 h_0 h0向量初始化为零。
  • w x 在 R m w_x在R^{m} wxRm中是与递归层中的输入相关联的权重。
  • w h 在 R M X M w_h在R^{MXM} whRMXM中是与递归层中的隐藏单元相关联的权重。
  • w y 在 R m w_y在R^m wyRm中是与引导输出单位相关联的权重。
  • R m R^m Rm中的 b h b_h bh是与递归层相关联的偏差。
  • b y ∈ R b_y\in R byR是与前馈层相关联的偏差。

在每一个时间步骤中,我们可以用 k k k time步骤展开网络,以获得时间步骤 k + 1 k+1 k+1的输出。展开网络与前馈神经网络非常相似。展开网络中的矩形显示正在进行的操作。

例如,使用激活函数f:

h t + 1 = f ( x t , h t , w x , w h , b h ) = f ( w x x t + w h h t + b h ) h_{t+1}=f(x_t,h_t,w_x,w_h,b_h)=f(w_{x}x_t+w_{h}h_t+b_h) ht+1=f(xthtwxwhbh)=f(wxxt+whht+bh)

此时的输出 y y y t t t 计算为:

Y t Y_{t} Yt= f ( h t , w y ) f(h_t,w_y) f(htwy) = f ( w y ⋅ h t + b y ) f(w_y\cdot h_t+b_y) f(wyht+by)

因此,在RNN的前馈传递中,网络在 k k k time 步骤之后计算隐藏单元的值和输出,与网络相关的权重是暂时共享的,每个递归层有两组权重;一组用于输入,第二组用于隐藏单元。最后一个前馈层计算KTH时间步长的最终输出,就像传统前馈网络的一个普通层。

激活函数

我们可以在递归神经网络中使用任何我们喜欢的激活函数。共同的选择是:

  • Sigmoid函数: 1 1 + e − x \frac{1}{1+e^{-x}} 1+ex1
  • Tanh函数: e x − e − x e x + e − x \frac{e^{x}-e^{-x}}{e^{x}+e^{-x}} ex+exexex
  • Relu函数:Max ( 0 , x ) (0,x) (0x)

递归神经网络的训练

对人工神经网络的反向传播算法进行了改进,使其能及时展开,以训练网络的权值。该算法基于梯度向量的计算,简称BPTT算法。下面给出了训练的伪代码。用户可以选择 k k k进行培训。在 p t p_t pt下面的伪代码中,是时间步骤 t t t 的目标值:

  1. 重复,直到达到停止标准:
  2. 把所有的 h h h设为零。
  3. 对t=0到n-k重复
  4. 前向在展开的网络上传播 k k ktime步骤,计算所有 h h h y y y
  5. 将错误计算为: e = y t + k − p t + k e=y_{t+k}-p_{t+k} e=yt+kpt+k
  6. 在展开网络中反向传播错误并更新权重。

RNN类型

有不同类型的递归神经网络具有不同的结构。
在这里插入图片描述

一对一

在这里插入图片描述
这里有一个 ( x t , y t ) (x_t,y_t) (xtyt)对。传统的神经网络采用一对一的结构。

一对多

在这里插入图片描述
在一对多的网络中, x t x_t xt的单个输入可以产生多个输出,例如 ( y t 0 、 y t 1 、 y t 2 ) (y_{t0}、y_{t1}、y_{t2}) (yt0yt1yt2)。音乐生成是一个典型的领域,其中一个到多个网络被使用。

多对一

在这种情况下,来自不同时间步骤的许多输入产生单个输出。例如, ( x t , x t + 1 , x t + 2 ) (x_t,x_{t+1},x_{t+2}) (xtxt+1xt+2)可以产生单个输出 y t y_t yt。这类网络用于情感分析或情感检测,在这种情况下,类标签取决于一系列单词。

多对多

在这里插入图片描述
对许多人来说,有许多可能性。上面给出了一个例子,其中两个输入产生三个输出。许多网络应用于机器翻译,例如从英语到法语,反之亦然。

RNNS的优缺点

优势:

  • 处理序列数据的能力。
  • 能够处理不同长度的输入。
  • 存储或“记忆”历史信息的能力。

缺点:

  • 计算可能很慢。
  • 该网络在作出决定时没有考虑到未来的投入。
  • 消失梯度问题,其中用于计算权值更新的梯度可能会非常接近于零,从而使网络无法学习新的权重。网络越深,这个问题就越突出。

不同RNN结构

在这里插入图片描述

RNN的不同变体正在实际应用于机器学习问题:

  • 双向递归神经网络(Bidirectional recurrent neural networks):在BRNN中,使用来自未来时间步长的输入来提高网络的精度。这就像知道一个句子的第一个和最后一个单词来预测中间的单词一样。
  • 门循环控制单元(Gated Recurrent Units):在GRU中,这些网络是为了处理消失梯度问题而设计的。他们有一个重置和更新门。这些门决定为未来的预测保留哪些信息。
  • 长期短期记忆(Long Short Term Memory):LSTM也被设计用来解决RNNS中的消失梯度问题。LSTM使用输入门、输出门和遗忘门三个环节。类似于GRU,这些门决定要保留哪些信息。
举报

相关推荐

0 条评论