文科生如何理解迴圈神經網路(RNN)?

這一份視訊教程中,我會用簡明的例子和手繪圖,為你講解迴圈神經網路(Recurrent Neural Network, RNN)的原理和使用方法。
關於深度學習,我已經為你講解了不少內容了。
咱們簡單回顧一下。常見的深度學習任務,面對的 資料型別 主要是三類:
第一類,是結構化資料,也就是樣本和屬性組成的表格。例如《 ofollow,noindex" target="_blank">如何用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 與資料科學感興趣,不妨閱讀我的系列教程索引貼《 如何高效入門資料科學? 》,裡面還有更多的有趣問題及解法。