通过结合卷积神经网络(CNN)和循环神经网络(RNN),可以获得许多有趣的属性。
但是,RNN的功能已经完善,这意味着它可以学习任何计算功能,也意味着从理论上讲,我们可以只用RNN,不需要将CNN与RNN结合起来就可以完成工作。
但通常在现实应用中,我们需要专门处理特定信号的模块。 CNN擅长处理与空间相关的数据,而RNN擅长处理时间信号。
因此,在处理以下问题时,需要使用卷积神经网络(CNN)和循环神经网络(RNN)的结合,也就是CNN-RNN: 将空间序列输入映射到静态输出类。 将静态空间输入映射到语音输出(语音或文本字幕)。
在第一种情况下,我们可以输入视频,并且需要将该视频分类为静态类别。一个特定的应用将是人为动作识别,它需要从一系列视频帧中识别出人类的活动,例如步行,就座,跳跃或奔跑。也许有这样的可以实时识别正在进行的犯罪的系统,此系统还可以仅从视频源中检测到暴动。
在第二种情况下,CNN-RNN对可以从静态图像进行输出,但输出的是序列输出。例如描述该静态图像内容的语音或文本。在诸如自动图像字幕之类的应用中,此类系统需要通过生成图像字幕来描述图像的内容。
在两种情况下,CNN都充当空间信号的可训练特征检测器,它学习强大的卷积特征,该特征在静态空间输入(帧)上运行,而RNN接收一系列此类高级表示来生成内容描述或映射到某些静态输出类。在图像字幕中,通常会内置一种关注机制,从而允许系统在生成字幕时关注某些图像部分。
Facebook实际上正在开发可以使用此类CNN-RNN对向盲人描述图像内容的系统,尽管它仅可能使用完全前馈神经网络结构,并及时巧妙地使用卷积来做图像字幕。在时间上使用卷积不容易出现在常规RNN中遇到的爆炸或者梯度消失问题。
除了使用典型的RNN,还可以使用长短期内存(LSTM)或门控循环单元(GRU)网络来消除长期依赖问题。这使得CNN-LSTM或CNN-GRU在处理时空信号方面极为强大。
我们也有所谓的循环卷积神经网络(RCNN),它在内核本身中有直接的递归连接,但此系统可能像常规RNN一样无法处理长期依赖。