RNN

其中一个神经单元的隐藏状态hih_ihi由上一层隐藏状态hi−1h_{i-1}hi−1和输入xix_ixi决定,WiW_iWi是权重矩阵,bbb是偏置矩阵,在RNN中所有层的参数是共享的,即每一层的权重矩阵和偏置矩阵都是相同的。

举个例子,“never too late to” ,用RNN预测“to”后面的词,首先用one-hot向量表示第一个词,再通过embedding得到更丰富含有更多信息的词向量(word2vec),再通过上一个隐藏状态计算出当前层的隐藏状态,依此类推。其中h0h_0h0是随机初始化的。当计算得到h4h_4h4之后,在输出层进行一个线性层,一般通过softmax计算出预测每个词的概率分布。

优点:
- 能够处理任意长度的输入。
- 模型大小不会随着输入的变长而变大。
- 在每个时间步的权重是共享的。
- 理论上,计算第iii步能包含前面的很多信息。
缺点:
- 计算速度慢。
- 实际上,随着时间不往后推移,后面的时间步很难获取到离他很远的时间步的信息。
梯度消失或爆炸问题
因为反向转播时根据链式法则,要求下游梯度,需要用上游梯度*本地梯度(一层一层嵌套)。当梯度>1时,随着层数的增加梯度会呈指数增长,梯度会爆炸;当梯度<1时,随着层数的增加梯度会呈指数衰减,梯度会消失。

RNN的变体解决梯度问题
在计算的时候
- GRU:将门控机制引入到RNN。
- 更新门:权重值会改变。

- 重置门:权重值会改变。

重置门通过影响上一层隐藏状态来得到一个新的激活:
更新门通过衡量上一个隐藏状态和新的激活之间的影响得到最终的hih_ihi

- 更新门:权重值会改变。
- LSTM: 多了一个单元状态cell state CtC_tCt
- 第一个门是遗忘门,决定上一状态哪些信息要在当前状态丢弃。WfW_fWf是遗忘门的专属矩阵,bfb_fbf也是专属的bias。[hi−1,xt][h_{i-1},x_t][hi−1,xt]代表将输入和上一隐藏状态进行连接concatenate。σ\sigmaσ代表一个激活函数,最终计算结果介于0-1之间,若ft=0f_t=0ft=0,将丢弃过去的信息。

- 输入门决定待选信息C~t\tilde{C}_tC~t中有哪些信息需要保留到CtC_tCt中。同样计算输入门iti_tit和待选信息C~t\tilde{C}_tC~t时,也分别有他们专属的权重和偏置。

- 更新旧的cell state Ct−1C_{t-1}Ct−1。

- 最后一步是输出门。输出门决定要输出哪些信息,他也有自己专属的权重和偏置。最终也是经过一个激活函数tanh()tanh()tanh(),得到当前的隐藏状态。

- 第一个门是遗忘门,决定上一状态哪些信息要在当前状态丢弃。WfW_fWf是遗忘门的专属矩阵,bfb_fbf也是专属的bias。[hi−1,xt][h_{i-1},x_t][hi−1,xt]代表将输入和上一隐藏状态进行连接concatenate。σ\sigmaσ代表一个激活函数,最终计算结果介于0-1之间,若ft=0f_t=0ft=0,将丢弃过去的信息。
- 双向RNN(双向LSTM):对当前信息的预测可能不仅依赖于以往信息,也可能以来以后的信息。

CNN
首先也是先得到输入xxx的词向量矩阵,然后用滑动的卷积核Filter与词向量进行卷积(每个元素相乘最终全部加起来)就得到特征fff。得到特征后,进行池化。池化对特征进一步的提取,一般选取局部信息(与选取的n-gram有关)的最大值或平均值作为特征,最后将特征转为针对特定任务需要的格式。

卷积层中,滑动卷积核的大小代表每次能计算的原始数据的大小,计算完一次往下滑动一个维度。

RNN与CNN对比
1.RNN更适合变长数据,CNN能提取局部特征。
2.RNN参数更多
3.CNN能更好的并行化计算,因为他卷积核之间并不是相互依赖的。

RNN是一种神经网络,其隐藏状态由上一层和当前输入决定,权重共享。它能处理变长输入,但存在梯度消失或爆炸问题。为了解决这一问题,出现了GRU和LSTM,它们引入了门控机制。LSTM有单元状态,能更好地保留长期依赖。此外,CNN用于提取局部特征,适合并行计算。
5654





