赞
踩
目录
循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network) 。
对循环神经网络的研究始于二十世纪80-90年代,并在二十一世纪初发展为深度学习(deep learning)算法之一 ,其中双向循环神经网络(Bidirectional RNN, Bi-RNN)和长短期记忆网络(Long Short-Term Memory networks,LSTM)是常见的循环神经网络 。
循环神经网络具有记忆性、参数共享并且图灵完备(Turing completeness),因此在对序列的非线性特征进行学习时具有一定优势 。循环神经网络在自然语言处理(Natural Language Processing, NLP),例如语音识别、语言建模、机器翻译等领域有应用,也被用于各类时间序列预报。引入了卷积神经网络(Convolutional Neural Network,CNN)构筑的循环神经网络可以处理包含序列输入的计算机视觉问题。
RNN的基本原理:
循环结构:RNN的关键特点是具有循环结构,允许信息在不同时间步之间传递。在每个时间步,RNN接收输入(通常是当前时间步的数据)和前一个时间步的隐藏状态,并生成一个新的隐藏状态。这个新的隐藏状态包含了来自当前时间步和过去时间步的信息,因此RNN能够捕捉到序列数据中的上下文信息。
共享权重:在RNN中,权重参数是共享的,这意味着在每个时间步使用相同的权重矩阵。这样可以确保不同时间步的数据都使用相同的模型进行处理,从而保持了模型的参数数量相对较小。
隐藏状态:RNN的隐藏状态是模型的记忆部分,它在每个时间步都被更新。隐藏状态包含了之前时间步的信息,因此可以用来捕获长期依赖关系。隐藏状态的计算通常使用以下公式:
旧隐藏状态(ht-1) -> RNN单元 -> 新隐藏状态(ht)
其中RNN单元通常包括一个激活函数,如tanh(双曲正切函数),用来处理输入和旧隐藏状态的组合。
输入和输出:RNN接受输入序列,每个时间步产生一个输出。这些输出可以被用于不同的任务,例如文本生成、情感分析、机器翻译等。输出通常也与隐藏状态相关,因为隐藏状态包含了模型在处理输入序列时学到的信息。
输入数据(xt):在每个时间步,RNN接受一个输入数据,这可以是当前时间步的输入,比如一个词的嵌入表示。
隐藏状态(ht):RNN具有一个隐藏状态,它在每个时间步都被更新。隐藏状态包含了来自之前时间步的信息,它是RNN网络的"记忆"。隐藏状态的计算通常包括将当前时间步的输入数据和前一个时间步的隐藏状态传递给一个激活函数,如tanh。
输出(yt):RNN在每个时间步都会生成一个输出,该输出可以与隐藏状态相关,用于各种任务,例如语言模型中的下一个词预测。如下图所示:
RNN的前向计算可以用以下公式表示:
隐藏状态:ht = f(Wxh * xt + Whh * ht-1)
输出:yt = f(Wyh * ht)
其中,
尽管RNN在理论上非常强大,但它们也存在一些问题,如梯度消失和爆炸问题,导致难以处理长序列和捕捉长期依赖关系。为了克服这些问题,出现了改进型的RNN模型,如长短时记忆网络(LSTM)和门控循环单元(GRU),它们采用了特殊的结构来更好地处理长序列。
总之,RNN的原理在于它的循环结构和隐藏状态,使其能够有效地处理序列数据,但同时也有一些限制,需要通过改进型模型来克服。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。