乐趣区

关于算法:LSTM-长短期记忆网络

循环神经网络(RNN)

人们不是每一秒都从头开始思考,就像你浏览本文时,不会从头去重新学习一个文字,人类的思维是有持续性的。传统的卷积神经网络没有记忆,不能解决这一个问题,循环神经网络 (Recurrent Neural Networks) 能够解决这一个问题,在循环神经网络中,通过循环能够解决没有记忆的问题,如下图:

<center></center>

看到这里,你可能还是不了解为什循环神经网络就能够有记忆。咱们把这个图开展:

能够看出,咱们输出 $X_0$ 后,首先正告训练,失去输入 $h_0$,同时会把这个输入传递给下一次训练 $X_1$,一般的神经网络是不会这样做的,这时对 $X_1$ 进行训练时,输出就包含了 $X_1$ 自身和 训练 $X_0$ 的输入,后面的训练对前面有印象,同样的情理,之后的每一次训练都收到了后面的输入的影响(对 $X_1$ 训练的输入传递给训练 $X_2$ 的过程,$X_0$ 对 $X_2$ 的影响是间接的)。

遇到的问题

循环神经网络很好用,然而还有一些问题,次要体现在没方法进行长期记忆。咱们能够设想(也有论文证实),后期的某一次输出,在较长的链路上传递时,对前面的影响越来越小,相当于网络有肯定的记忆能力,然而记忆力只有 7 秒,很快就遗记了,如下图 $X_0$ 和 $X_1$ 对 $h_{t+1}$ 的影响就比拟小了(实践上通过调整参数防止这个问题,然而寻找这个参数太难了,实际中不好利用,因而能够近似认为不可行),LSTM 的提出就是为了解决这个问题的。

LSTM

LSTM(Long Short Term Memory)实质还是一种 RNN,只不过其中的那个循环,上图中的那个 A 被从新设计了,目标就是为了解决记忆工夫不够长的问题,其余神经网络致力调整参数为的是使记忆力更好一点,后果 LSTM 天生过目不忘,几乎降维打击!

一般的 RNN 中的 A 如下图,前一次的输出和本次的输出,进行一次运算,图中用的是 tanh:

相比拟起来,LSTM 中的 A 就显得简单了好多,不是上图繁多的神经网络层,而是有四层,如下图,并且仿佛这么看还有点看不懂,这就是本文须要重点剖析的内容,仔细认真读上来,定会有播种:

定义一些图形的含意,黄色方框是简略的神经网络层;粉色的代表逐点操作,如加法乘法;还有合并和离开 (拷贝) 操作:

核心思想

首先看下图高亮局部,前一次的输入,能够简直没有妨碍的始终沿着这条高速公路流动,如许简略奢侈的思维,既然心愿后面的训练不被忘记,那就始终传递上来:

当然,为了让这种传递更加有意义,须要退出一些门的管制,这种门具备选择性,能够齐全通过,能够齐全不通过,能够局部通过,S 函数 (Sigmoid) 能够达到这样的目标,上面这样就是一个简略的门:

<center></center>

总结一下,咱们结构 LSTM 网络,这个网络有能力让后面的数据传递到最初,网络具备长期记忆的能力,同时也有门的管制,及时舍弃那些无用的记忆。

详细分析

有了这样的核心思想,再看这个网络就简略了好多,从左到右第一层是“选择性遗记”。咱们依据前一次的输入和本次的输出,通过 Sigmoid 判断出前一次哪些记忆须要保留和遗记:

第二局部又分为了两个局部,一个局部是“输出门层”,用 Sigmoid 决定哪些信息须要进行更新,另一个局部是创立候选值向量,即本次输出和上次输入进行初步计算后的中间状态:

通过后面的计算,咱们能够更新单元格的状态了。第一步,前一个的单元格哪些数据须要传递,哪些数据须要遗记;第二步,本次的哪些数据须要更新,乘以本次计算的中间状态能够失去本次的更新数据;再把前两步的数据相加,就是新的单元格状态,能够持续向后传递。

这一步须要决定咱们的输入:第一步,咱们用 Sigmoid 来判断咱们须要输入的局部;第二步,把下面计算失去的单元格状态通过 tanh 计算将数据整顿到 -1 到 1 的区间内;第三步,把第一步和第二步的数据相乘,就失去了最初的输入:

总结一下咱们刚刚做了什么:咱们首先通过本次的输出和上次的输入,判断出上次单元格状态有哪些数据须要保留或舍弃,再依据本次的输出进行网络训练,进一步失去本次训练的单元格状态和输入,并将单元格状态和本次的输入持续往后传递。

这里有一个疑难,为什么须要舍弃?举个例子,翻译一篇文章,一篇文章前一段介绍某一个人的详细信息和背景,下一段介绍明天产生的某个故事,两者的关系是弱耦合的,须要及时舍弃后面对人背景信息的记忆,才会更好的翻译上面的故事。

其余一些基于 LSTM 修改版的网络,实质是一样的,只不过把某些中央买通了,有论文验证过,个别状况下对训练的后果影响很小,这里不开展介绍,大同小异,修内功而不是那些奇奇怪怪的招式:

总结

本文介绍了长短期记忆网络,在大多数状况下,若在某个畛域用 RNN 获得了比拟好的成果,其很可能就是应用的 LSTM。这是一篇好文,本文图片来自 Understanding-LSTMs,值得一读。

  • 本文首发自: RAIS
退出移动版