泛统计理论初探——初步理解循环神经网络

神经网络学习-介绍循环神经网络RNN

初步理解循环神经网络
    在文本处理的问题中,最开始是使用的TF-IDF、马尔可夫链、条件随机场等方法,后续有人将BP神经网络使用在文本相关的处理,但是效果也比较一般。之前介绍过BP神经网络和卷积神经网络,此类神经网络其实都不是最适合处理文本问题的,因为文本类的问题天然地需要结合上下文进行处理,而传统的神经网络、卷积神经网络等由于网络结构特点的原因,处理文本类的问题是不适合的,因此需要引入循环神经网络RNN进行处理,下面开始介绍这种神经网络。
    循环神经网络的设计思路是从人类对文章进行阅读的顺序得到启发,也就是从前往后进行阅读从而达到理解全文的目标。而循环神经网络最大的特点就是可以得到上文的信息,这和卷积神经网络之类的模型是不同的。因为卷积神经网络是通过固定长度的卷积窗口去进行滑动获取信息,而滑动窗口的大小就决定了所能获取到的局部信息的大小,但是对于一些长距离间隔的信息来说,使用卷积神经网络来处理就会丢失掉一些信息,从而降低了预测的准确率。
    下面的神经网络结构就是循环神经网络的网络拓扑结构,我们可以看到的是循环神经网络内部的结构和传统的神经网络有些类似,但有所不同的是循环神经网络里有隐含状态ht把之前的信息给保留下来,相当于每一次的h都是通过当前的状态x和上一次的h计算得到的,当到了最后一层ht的时候,其实就将之前的文字信息全部编码记录下来了,从而达到了长距离信息保留的目标。
在这里插入图片描述
    对于循环神经网络的其他特点,比如也有非线性的激活函数、最后输出之前也会有一层softmax层来做预测等,都是和传统的BP神经网络是类似的。那么我们可以得到下述的公式,其中f和g都是非线性的激活函数,W是隐藏层h从上一时间到下一个时间的状态转移权重矩阵,而Q是输入层到隐藏层的参数权重矩阵,最终得到的y就是预测的概率。
    1、 B(t)=Qx(t)+Wh(t-1)
    2、h(t)=f(B(t))
    3、y=g(Vh(T))
    而对于循环神经网络里的激活函数的选择,大部分情况f都可以使用Relu函数或者类似的激活函数,但是也可能会存在梯度消失或者梯度爆炸的问题,因为由于神经网络的多层反馈传播机制决定的,远离输出层的神经网络层是很难学到有用的特征的,这种情况如果依靠更换激活函数是很难做到的,所以可以通过一些技巧来进行优化。比如循环神经网络里的梯度爆炸就可以通过梯度裁剪来解决,也就是当梯度范数值大于设定好的阈值的时候对梯度进行等比例收缩,然后用新的梯度继续进行传播。而对于循环神经网络里的梯度消失问题则需要引入新的变种循环神经网络,比如LSTM、GRU等模型,这类模型都加入了一些门控机制,在一定程度上可以减少梯度消失带来的影响。
    总的来说,循环神经网络是比较经典的一种处理文本的神经网络模型,后续的一些新模型也是基于这个思路产生的,这种循环神经网络的长距离信息处理思路是很好的,但其缺点是无法并行化进行加速。对于初学者来说,需要掌握循环神经网络的基本原理和优化技巧,从而在后续的学习中可以更好地掌握比较新的一些自然语言处理的神经网络模型。

猜你喜欢

转载自blog.csdn.net/qq_26727101/article/details/109687896
今日推荐