斯坦福cs231n课程学习(5)

文章目录

  • RNN
  • LSTM
  • GRU

RNN

RNN 是包含循环的网络,允许信息的持久化。对于一些与时间先后有关的, 比如视频的下一时刻的预测,文档前后文内容的预测等就需要使用RNN了。
斯坦福cs231n课程学习(5)_第1张图片它主要有输入层,Hidden Layer, 输出层组成。展开图如下
斯坦福cs231n课程学习(5)_第2张图片如图所示为Hidden Layer的层级展开图. t-1, t, t+1表示时间序列. X表示输入的样本. St表示样本在时间t处的的记忆,St = f(WSt-1 +UXt). W表示输入的权重, U表示此刻输入的样本的权重, V表示输出的样本权重.

在t =1时刻, 一般初始化输入 S 0 = 0 S_0=0 S0=0随机初始化W,U,V, 进行下面的公式计算:
h 1 = U x 1 + W s 0 h_1=Ux_1+Ws_0 h1=Ux1+Ws0
s 1 = f ( h 1 ) s_1=f(h_1) s1=f(h1)
o 1 = f ( V s 1 ) o_1=f(Vs_1) o1=f(Vs1)
其中,f和g均为激活函数. 其中f可以是tanh,relu,sigmoid等激活函数,g通常是softmax也可以是其他。

时间就向前推进,此时的状态s1作为时刻1的记忆状态将参与下一个时刻的预测活动。以此类推, 可以得到最终的输出值为:
h t = U x t + W s t − 1 h_t=Ux_t+Ws_{t-1} ht=Uxt+Wst1
s t = f ( h t ) s_t=f(h_t) st=f(ht)
o t = f ( V s t ) o_t=f(Vs_t) ot=f(Vst)

注意:

  1. 这里的W,U,V在每个时刻都是相等的(权重共享).

  2. 隐藏状态可以理解为: S=f(现有的输入+过去记忆总结)

LSTM

RNN中h的求法,就是个简单的线性求和的过程。而LSTM添加了三个门分别是遗忘门、输入门和输出门。“门”结构在训练过程中会去学习该保存或遗忘哪些信息。

遗忘门的功能是决定应丢弃或保留哪些信息。来自前一个隐藏状态的信息和当前输入的信息同时传递到 sigmoid 函数中去,输出值介于 0 和 1 之间,越接近 0 意味着越应该丢弃,越接近 1 意味着越应该保留。

输入门用于更新细胞状态。首先将前一层隐藏状态的信息和当前输入的信息传递到 sigmoid 函数中去。将值调整到 0~1 之间来决定要更新哪些信息。0 表示不重要,1 表示重要。其次还要将前一层隐藏状态的信息和当前输入的信息传递到 tanh 函数中去,创造一个新的侯选值向量。最后将 sigmoid 的输出值与 tanh 的输出值相乘,sigmoid 的输出值将决定 tanh 的输出值中哪些信息是重要且需要保留下来的。

下一步,就是计算细胞状态。首先前一层的细胞状态与遗忘向量逐点相乘。如果它乘以接近 0 的值,意味着在新的细胞状态中,这些信息是需要丢弃掉的。然后再将该值与输入门的输出值逐点相加,将神经网络发现的新信息更新到细胞状态中去。至此,就得到了更新后的细胞状态。

输出门用来确定下一个隐藏状态的值,隐藏状态包含了先前输入的信息。首先,我们将前一个隐藏状态和当前输入传递到 sigmoid 函数中,然后将新得到的细胞状态传递给 tanh 函数。最后将 tanh 的输出与 sigmoid 的输出相乘,以确定隐藏状态应携带的信息。再将隐藏状态作为当前细胞的输出,把新的细胞状态和新的隐藏状态传递到下一个时间步长中去。

GRU

GRU 是新一代的循环神经网络,与 LSTM 非常相似。与 LSTM 相比,GRU 去除掉了细胞状态,使用隐藏状态来进行信息的传递。它只包含两个门:更新门和重置门。更新门的作用类似于 LSTM 中的遗忘门和输入门。它决定了要忘记哪些信息以及哪些新信息需要被添加。重置门用于决定遗忘先前信息的程度。

你可能感兴趣的:(计算机视觉,机器学习)