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

  1. 云栖社区>
  2. 博客>
  3. 正文

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

王树义 2018-11-15 20:58:00 浏览355
展开阅读全文
img_ddaf81e78bb8d6f7dbbf77192de035c8.png

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

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

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

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

img_993063869f9ec4b77833cf9b8f3445e2.png

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

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

img_29c6e8353a16745ebc6317cb7df438b0.png

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

img_fcbdcc334ac34bb61164263b79afda1a.jpe

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

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

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

img_25ad4102ea1e2c1a8e522a48c8c6c204.png

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.

img_fc7240c69691eeaf48cc40836a8378c6.jpe

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

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

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

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

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

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

img_f3ff8cd6b6df802f8454d0be8e4a9708.jpe

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

img_b548a5790cf84e64efa2d3893440166c.png

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

img_1225b7b57228ebf12e93b4b11f278815.jpe

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

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

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

img_6f6845f238da410504f180fe13ce61c9.jpe

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

img_382e3f94d43ab5802c8805972bda6899.jpe

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

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

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

祝(深度)学习愉快!

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

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

网友评论

登录后评论
0/500
评论
王树义
+ 关注