1. RNN。
1.1RNN
循环神经网络,Recurrent Neural Network。神经网络是一种节点定向连接成环的人工神经网络。这种网络的内部状态可以展示动态时序行为。不同于前馈神经网络的是,RNN可以利用它内部的记忆来处理任意时序的输入序列,这让它可以更容易处理如不分段的手写识别、语音识别等。
参考:https://www.atyun.com/30234.html
RNN的工作原理是:第一个词被转换成机器可读的向量。然后RNN逐个处理向量序列。
处理时,它将先前的隐藏状态传递给序列的下一步。隐藏状态充当神经网络的记忆。它保存着网络以前见过的数据信息
让我们观察RNN的一个单元格,看看如何计算隐藏状态。首先,将输入和先前隐藏状态组合成一个向量。这个向量现在含有当前输入和先前输入的信息。向量经过tanh激活,输出新的隐藏状态,或网络的记忆。
TANH激活
tanh激活用于帮助调节流经网络的值。tanh函数将值压缩在-1和1之间。
当向量流经神经网络时,由于各种数学运算,它经历了许多变换。假设一个值连续乘以3。你可以看到某些值如何爆炸增长的,导致其他值看起来微不足道。
tanh函数确保值在-1和1之间,从而调节神经网络的输出。你可以看到上面的相同值通过tanh函数保持界限之间。
这是一个RNN。它内部的操作很少,但在适当的情况下(如短序列)工作得很好。RNN使用的计算资源比它的进化变体LSTM和GRU要少得多.
RNN 的关键点之一就是他们可以用来连接先前的信息到当前的任务上,例如使用过去的视频段来推测对当前段的理解。如果 RNN 可以做到这个,他们就变得非常有用。但是真的可以么?答案是,还有很多依赖因素。
有时候,我们仅仅需要知道先前的信息来执行当前的任务。例如,我们有一个语言模型用来基于先前的词来预测下一个词。如果我们试着预测 “the clouds are in the sky” 最后的词,我们并不需要任何其他的上下文 —— 因此下一个词很显然就应该是 sky。在这样的场景中,相关的信息和预测的词位置之间的间隔是非常小的,RNN 可以学会使用先前的信息。
但是同样会有一些更加复杂的场景。假设我们试着去预测“I grew up in France… I speak fluent French”最后的词。当前的信息建议下一个词可能是一种语言的名字,但是如果我们需要弄清楚是什么语言,我们是需要先前提到的离当前位置很远的 France 的上下文的。这说明相关信息和当前预测位置之间的间隔就肯定变得相当的大。
不幸的是,在这个间隔不断增大