文科生如何理解循环神经网络(RNN)?

96
王树义 Db3aaf4f effd 43dc 9137 d6bf7f70211e
2018.11.15 20:58* 字数 1222

这一份视频教程中,我会用简明的例子和手绘图,为你讲解循环神经网络(Recurrent Neural Network, RNN)的原理和使用方法。

关于深度学习,我已经为你讲解了不少内容了。

咱们简单回顾一下。常见的深度学习任务,面对的数据类型主要是三类:

第一类,是结构化数据,也就是样本和属性组成的表格。例如《如何用Python和深度神经网络锁定即将流失的客户?》一文中,我们用到的表格:

这种数据格式,最为简单。你也很容易理解深度神经网络的结构和处理方法。

第二类,是图像数据。《如何用 Python 和 fast.ai 做图像深度迁移学习?》一文中,我给你详细介绍过如何用卷积神经网络来处理它。

第三类,是序列数据,例如文本。《如何用 Python 和深度迁移学习做文本分类?》一文里面,咱们已经展示了如何使用 fast.ai 提供的语言模型对其进行处理。

其中,图像和序列数据,处理起来更需要你对深度神经网络结构的理解。

作为文科生,你在学习卷积神经网络和循环神经网络的时候,可能会遇到一些问题。因为它们大多采用比较复杂的结构图和公式进行描述。

当然,你看到了,即便你对于循环神经网络不了解,把它当成一个黑箱,你依然可以用高阶的深度学习框架,例如 fast.ai ,执行自然语言处理任务,而且效果还很突出。

François Chollet 在他的 "Deep Learning with Python" 一书中,也提到过这种观点(注意这里说的是 RNN 的一个变种,叫做 LSTM):

you don’t need to understand anything about the specific architecture of an LSTM cell; as a human, it shouldn’t be your job to understand it.

但是注意, François Chollet 后面还有一句话:

Just keep in mind what the LSTM cell is meant to do.

也就是说,它的实现细节,你不需要考虑。

当然,它的作用,你还是得了解的。

如果你需要做研究,就得针对具体的任务,对神经网络中的各种模块进行调整、拼装和整合。

这时候,如果你对深度神经网络的理解,基本上等同于黑箱,那么你甚至都不知道该如何把它的输出和其他模块拼接起来。

之前,我给你做了个视频讲解《文科生如何理解卷积神经网络?》,为你把卷积神经网络的原理进行了拆解剖析。

从读者和观众们的反馈来看,许多人觉得有帮助。

有不少人留言,希望我以同样通俗易懂的讲法,讲讲用于处理序列数据(例如文本)的循环神经网络(Recurrent Neural Network, RNN)的原理。

其实,我也早就想为你讲解这一部分的知识。无奈序列是个动态的概念,所以用文字来给你讲解循环神经网络模型,效率不高。

好在,我最近刚刚学会,如何在录制视频的时候,使用手写输入。于是我立即把这一技术,纳入到咱们的教程制作中来。

我花了一个晚上的时间,为你做了这份视频教程。已发布到了腾讯视频,链接在这里

从我们耳熟能详的一个故事讲起,触类旁通,让你更容易理解循环神经网络的作用、特点和结构。

除了前文提到的一些材料,视频中还提及了词嵌入(word embedding)的相关知识。这一部分,你可以参考《如何用Python处理自然语言?(Spacy与Word Embedding)》和《如何用 Python 和 gensim 调用中文词嵌入预训练模型?》。

希望这份视频教程,对你了解循环神经网络能有帮助。

祝(深度)学习愉快!

喜欢请点赞和打赏。还可以微信关注和置顶我的公众号“玉树芝兰”(nkwangshuyi)

如果你对 Python 与数据科学感兴趣,不妨阅读我的系列教程索引贴《如何高效入门数据科学?》,里面还有更多的有趣问题及解法。

玉树芝兰
玉树芝兰
47.9万字 · 74.6万阅读 · 1336人关注
Web note ad 1