简介如今,关于机器学习、深度学习和人工神经网络的讨论越来越多。但是程序员往往只是想使用这些神奇的框架,而他们中的大多数并不想知道它在幕后是如何工作的。但是如果我们能够掌握这些背后的原理,那我们使用起来岂不是更好。今天我们将讨论递归神经网络及其背后的基本数学原理,这些原理使递归神经网络可以做其他神经网络做不到的事情。RNN(递归神经网络)。本文的目的是提供对递归神经网络的功能和结构的直观理解。神经网络通常采用一个自变量X(或一组自变量)和一个因变量y,然后它学习X和y之间的映射(我们称之为训练),一旦训练完成,当给定一个新的独立变量时变量,可以预测相应的因变量。但是,如果数据的顺序很重要怎么办?想象一下所有自变量的顺序是否重要?让我直观地解释一下。假设每只蚂蚁都是一个自变量,如果一只蚂蚁朝不同的方向前进,对其他蚂蚁来说无关紧要,对吧?但是,如果蚂蚁的顺序很重要怎么办?这时,如果一只蚂蚁错过或离开了群体,就会影响后面的蚂蚁。那么,在机器学习领域,什么样的数据顺序是重要的?自然语言数据的词序问题语音数据时间序列数据视频/音乐序列数据股票市场数据等那么RNN如何解决整体顺序重要的数据?我们以自然文本数据为例来解释RNN。假设我正在对电影的用户评论进行情感分析。从Thismovieisgood-positive,到Thismovieisbad-negative。我们可以使用简单的词袋模型对它们进行分类,我们可以预测(正面或负面),但等等。如果影评说这部电影不好怎么办?BOW模型可能会说这是一个积极的迹象,但事实并非如此。而RNN理解它,并预测它是负面信息。1、RNN是怎么做到的?1.各种RNN模型(1),一对多RNN接受一个输入,比如一张图片,生成一个词序列。(2)、多对一RNN接受一个单词序列作为输入并生成一个输出。(3)Many-to-many接下来我们重点介绍第二种模式many-to-one。RNN的输入被视为时间步长。例子:input(X)=["this","movie","is","good"]this的时间戳是x(0),movie的时间戳是x(1),is的时间戳是x(2),好的是x(3)。2.网络架构和数学公式让我们深入RNN的数学世界。首先,让我们了解一下RNN单元包含什么!我希望并假设您了解前馈神经网络,它是FFNN的推广,是在隐藏层中具有单个神经元的前馈神经网络的示例。具有单个隐藏层的前馈神经网络。在前馈神经网络中,我们有X(输入)、H(隐藏)和Y(输出)。我们可以有任意多的隐藏层,但是每个隐藏层的权重W和每个神经元对应的输入权重是不同的。上面,我们有权重Wy10和Wy11,分别对应两个不同层相对于输出Y的权重,Wh00,Wh01等代表不同神经元相对于输入的不同权重。由于时间步长,神经网络单元包含一组前馈神经网络。神经网络具有顺序输入、顺序输出、多时间步长和多隐藏层的特点。与FFNN不同的是,这里我们不仅从输入值计算隐层值,还从前一个时间步长值计算隐层值。对于时间步长,隐藏层的权重(W)是相同的。下面显示的是RNN的完整图片以及其中涉及的数学。在图中,我们正在计算隐藏层的时间步长t的值:不同的激活函数。上面我们只计算了Ht,类似的我们可以计算所有其他的时间步长。步骤:注意:前馈输入完成后,我们需要计算误差并使用反向传播来反向传播误差,我们使用交叉熵作为成本函数。3.BPTT(backpropagationthroughtime)如果你知道一个正常的神经网络是如何工作的,剩下的就很简单了。不清楚的可以参考本期之前关于人工神经网络的文章。我们需要计算以下内容,1.总误差相对于输出(隐藏单元和输出单元)如何变化?2.输出相对于权重(U,V,W)如何变化?由于W对于所有时间步都是相同的,我们需要回到前面更新它。RNN中的BPTT。请记住,RNN的反向传播与人工神经网络的反向传播相同,但这里的当前时间步是根据之前的时间步计算的,因此我们必须从头到尾来回迭代。如果我们应用链式法则,如下所示:反向传播链式法则。W在所有时间步都是相同的,因此链式法则扩展了越来越多的项。回到例子现在让我们回到我们的情感分析问题,这里有一个RNN,我们给每个词一个词向量或者一个onehotencoded向量作为输入,做前馈和BPTT,一旦训练完成,我们可以给出新文本进行预测。它会学习诸如no+positiveword=negative之类的东西。RNN的问题→消失/爆炸梯度问题由于W对于所有时间步长都是相同的,在反向传播过程中,当我们返回并调整权重时,信号变得太弱或太强,导致消失或爆炸问题。
