SimpleRNN 的一个问题是容易遗忘,专业点的术语叫做 梯度消失,就是在处理过程中,记住了最近几步处理的信息,更早的信息忘记了,LSTM 和 GRU 效果就好得多。比如 LSTM 的做法就是本次计算出来的结果不仅仅在下一次的计算中使用,而且被记住了,在更加靠后的计算中也能拿到这一次的计算结果,在某一种意义上来说,就是跨步骤传递信息,也就能实现长期记忆了,这其中的细节信息当然是我们以后要具体讨论的,这里点到为止。
我们把上面 SimpleRNN 层换成 LSTM 层,代码已经在上面的注释中了,然后看看效果怎么样:
从这个我们可以看出来,百分之 90% 了,效果好了很多,对比一下我们之前用单词统计的方法训练的网络的结果(87% 左右),这里也是用了更少的数据,得到了更高的准确度,说明循环神经网络是有用的。但我们同样不要忽略一个问题,循环神经网络计算量更大了,用大了几倍的计算量,换来这其实没那么大的提高,真的是有意义的吗?这其实跟我们的问题是有关系的,这个实际的问题是评论态度判断,其实在评论中,积极或者是消极的评论中,一些单词的出现其实是非常具有代表性的,“剧情无聊”这样的词其实非常有说服力,因此对于这类问题,其实可以考虑用更大的数据量去训练网络,在计算量小得多的情况下,还能得到一个不错的结果。当然,如果是一种聊天系统,或者是智能助手,循环神经网络的优势就会体现得更明显。
循环神经网络的基本内容我们就介绍的差不多了,下一次我们聊聊循环神经网络有哪些高级的用法。
首发自公众号:RAIS