獨家 | NLP的深度學習:ANN,RNN和LSTM詳解!(附資源)

2021-01-11 數據派THU

作者:Jaime Zornoza,馬德裡技術大學

翻譯:陳之炎

校對:王威力

本文帶你以前所未有的方式了解深度學習神經網絡,並利用NLP構建Chatbot!

是否曾經幻想過能和自己的私人助理對話或是漫無邊際地探討任何問題?多虧機器學習和深度神經網絡,你曾經的幻想很快會變成現實。讓我們來看一下Apple的Siri或亞馬遜的Alexa所展示的這一神奇功能吧。不要太激動,我們在下面一系列帖子中,創建的不是一個無所不能的人工智慧,而是創建一個簡單的聊天機器人,預先些輸入一些信息,它能夠對此類信息相關的問題做出是或否的回答。它遠不及Siri或Alexa,但它卻能很好地說明:即使使用非常簡單的深度神經網絡架構,也可以獲得不錯的結果。在這篇文章中,我們將學習人工神經網絡,深度學習,遞歸神經網絡和長短期記憶網絡。在下一篇文章中,我們將在真實項目中利用它來回答問題在開始討論神經網絡之前,先仔細看看下面的圖像。其中有兩張圖片:其中一張圖片是一輛校車行駛通過馬路,另一張圖片是是普通的起居室,這兩張圖片都有人工注釋人員對其進行了描述。

圖中為兩個不同的圖像,附有人工注釋人員對其進行的描述
開始 - 人工神經網絡為了構建一個用於創建聊天機器人的神經網絡模型,會用到一個非常流行的神經網絡Python庫:Keras。然而,在進一步研究之前,首先應了解人工神經網絡(ANN)是什麼。人工神經網絡是一種機器學習模型,它試圖模仿人類大腦的功能,它由連接在一起的大量神經元構建而成- 因此命名為「人工神經網絡」。感知器最簡單的ANN模型由單個神經元組成, Star-Trek將之命名為感知器(Perceptron)。它由弗朗克·羅森布拉特(Frank Rossenblatt)於1957年發明,它包括一個簡單的神經元,對輸入的加權和進行函數變換(在生物神經元中是枝狀突起),並輸出其結果(輸出將等同於生物神經元的軸突)。我們不在這裡深入研究用到的函數變換的細節,因為這篇文章的目的不是成為專家,而只是需要了解神經網絡的工作原理。

單個神經元的圖像,左邊為輸入,乘以每個輸入的權重,神經元將函數變換應用於輸入的加權和並輸出結果

這些單獨的神經元可以堆疊起來,形成包含不同個數神經元的層,這些層可以順序地相鄰放置,從而使得網絡更深。當以這種方式構建網絡時,不屬於輸入層或輸出層的神經元叫做隱藏層,正如它們的名稱所描述:隱藏層是一個黑盒模型,這也正是ANN的主要特徵之一。通常我們對其中的數學原理以及黑盒中發生的事情有一些認知,但是如果僅通過隱藏層的輸出試圖理解它,我們大腦可能不夠用。儘管如此,ANN卻能輸出很好的結果,因此不會有人抱怨這些結果缺乏可解釋性。

大的神經網絡的圖像,由許多單獨的神經元和層組成:一個輸入層,兩個隱藏層和一個輸出層神經網絡結構以及如何訓練一個神經網絡,已為人所知有二十多年了。那麼,又是什麼原因導致了當今對人工神經網絡和深度學習的火爆和炒作?下面我們會給出問題的答案,但在此之前,我們先了解一下深度學習的真正含義。
什麼是深度學習?從它的名稱可以猜測到,深度學習使用多個層逐步從提供給神經網絡的數據中提取出更高級別的特徵。這個道理很簡單:使用多個隱藏層來增強神經模型的性能。明白了這一點之後,上面問題的答案便簡單了:規模。在過去的二十年中,各種類型的可用數據量以及我們的數據存儲和處理機器(即,計算機)的功能都呈指數級增長。計算力的增加,以及用於訓練模型的可用數據量的大量增加,使我們能夠創建更大、更深的神經網絡,這些深度神經網絡的性能優於較小的神經網絡。Andrew Ng是世界領先的深度學習專家之一,他在本視頻中明確了這一點。在這個視頻(https://www.youtube.com/watch?v=O0VN0pGgBZM&t=576s)中,他展示了與下面圖像類似的一副圖像,並用它解釋了利用更多數據來訓練模型的優勢,以及大型神經網絡與其他機器學習模型相比較的優勢。

圖像顯示了當訓練數據集增大時,不同算法的性能演變

傳統的機器學習算法(線性或邏輯回歸,SMV,隨機森林等)的性能會隨著訓練數據集的增大而增加,但是當數據集增大到某一點之後,算法的性能會停止上升。數據集大小超過這一值之後,即便為模型提供了更多的數據,傳統模型卻不知道如何去處理這些附加的數據,從而性能得不到進一步的提高。神經網絡則不然,這種情況永遠不會發生。神經網絡的性能總是隨著數據量的增加而增加(當然,前提是這些數據質量良好),隨著網絡大小的增加,訓練的速度也會加快。因此,如果想要獲得最佳性能,則需要在X軸右側(高數據量)的綠線(大神經網絡)的某個位置。此外,雖然還需要有一些算法上的改進,但是深度學習和人工神經網絡興起的主要因素便是規模:計算規模和數據規模。傑夫·迪恩(Jeff Dean)(谷歌深度學習的煽動者之一)是該領域的另一個重要人物,關於深度學習,傑夫如是說:當聽到深度學習這個詞時,便會想到一個大的深度神經網絡。深度通常指的是層數比較多,這是出版物中的一個流行術語,此刻,我便視它為深度神經網絡。在談論深度學習時,傑夫強調了神經網絡的可擴展性,即隨著數據量的增大,模型規模的增大,模型輸出的結果會越來越好,同時,訓練的計算量也隨之增大,這和先前看到的結果一致。


好了,理解了原理之後,那麼神經網絡如何進行深度學習的呢?

還記得將多個輸入乘以權重之後輸入到感知器中嗎?連接兩個不同神經元的「邊」(連接)也需要賦權重。這意味著在較大的神經網絡中,權重也存在於每個黑箱邊之中,取一個神經元的輸出,與其相乘,然後將其作為輸入提供給這個邊緣所連接的另一個神經元。

當訓練神經網絡(通過ML表達式來訓練神經網絡使其進行學習)時,首先為它提供一組已知數據(在ML中稱為標記數據),讓它預測這些數據的特徵(比如圖像標記「狗」或「貓」)然後將預測結果與實際結果進行比對。當這個過程在進行中出現錯誤時,它會調整神經元之間連接的權重,以減少所犯錯誤的數量。正因如此,如前所示,在大多數情況下,如果我們為網絡提供更多的數據,將會提高它的性能。從序列數據中學習 –遞歸神經網絡了解了人工神經網絡和深度學習之後,我們懂得了神經網絡是如何進行學習的,現在可以開始研究用於構建聊天機器人的神經網絡:遞歸神經網絡或RNN  。遞歸神經網絡是一種特殊的神經網絡,旨在有效地處理序列數據,序列數據包括時間序列(在一定時間段內的參數值列表)、文本文檔(可以視為單詞序列)或音頻(可視為聲音頻率序列)。RNN獲取每個神經元的輸出,並將其作為輸入反饋給它,它不僅在每個時間步長中接收新的信息,並且還向這些新信息中添加先前輸出的加權值,從而,這些神經元具備了先前輸入的一種「記憶」,並以某種方式將量化輸出反饋給神經元。

RNN存在的問題是:隨著時間的流逝,RNN獲得越來越多的新數據,他們開始「遺忘」有關數據,通過激活函數的轉化及與權重相乘,稀釋新的數據。這意味著RNN有一個很好的短期記憶,但在嘗試記住前一段時間發生過的事情時,仍然會存在一些小問題(過去若干時間步長內的數據)。為此,需要某種長期記憶,LSTM正是提供了長期記憶的能力。增強記憶力 - 長期短期記憶網絡 長短期記憶網絡LSTM是RNN的一種變體,可解決前者的長期記憶問題。作為本文的結尾,簡要解釋它是如何工作的。與普通的遞歸神經網絡相比,它們具有更為複雜的記憶單元結構,從而使得它們能夠更好地調節如何從不同的輸入源學習或遺忘。

LSTM記憶單元示例。注意藍色圓圈和方框,可以看出它的結構比普通的RNN單元更複雜,我們將不在本文中介紹它LSTM神經元通過三個不同的門的狀態組合來實現這一點:輸入門,遺忘門和輸出門。在每個時間步長中,記憶單元可以決定如何處理狀態向量:從中讀取,寫入或刪除它,這要歸功於明確的選通機制。利用輸入門,記憶單元可以決定是否更新單元狀態;利用遺忘門,記憶單元可以刪除其記憶;通過輸出門,單元細胞可以決定輸出信息是否可用。LSTM還可以減輕梯度消失的問題,但這不在此做詳細介紹。 就是這樣!現在我們對這些不同種類的神經網絡已經有了一個初淺的認識,下面可以開始用它來構建第一個深度學習項目!結論神經網絡會非常神奇。在下一篇文章中,我們將看到,即便是一個非常簡單的結構,只有幾個層便可以創建一個非常強大的聊天機器人。哦,順便問一下,記得這張照片嗎?

由神經網絡創建的帶有簡短文本描述的兩幅不同圖像

為了證明深度神經網絡是多麼酷,不得不承認,我對如何產生這些圖像的描述撒了謊。記得在本文的開頭,曾說明這些描述是人工注釋的,然而實際上,每幅圖像上所的簡短文本實際上都是人工神經網絡生成的。如果想要學習如何使用深度學習來創建一個神奇的聊天機器人,請在媒體上追隨我,並繼續關注我的下一篇文章!然後,盡情享受人工智慧!其它資源


本帖中描述的概念解釋非常初淺,如果想深入學習,請參考以下附加的資源。

神經網絡如何端到端地工作

https://end-to-end-machine-learning.teachable.com/courses/how-deep-neural-networks-work/lectures/9533963

YouTube視頻系列,講解如何訓練神經網絡的主要概念

https://www.youtube.com/watch?v=sZAlS3_dnk0

深度學習和人工神經網絡

https://machinelearningmastery.com/what-is-deep-learning/

好啦,希望你喜歡這個帖子。可以在LinkedIn上與我聯繫,或在@jaimezorno的Twitter上跟我聯繫。此外,還可以在此處查看我的關於數據科學和機器學習的其它帖子。學習快樂!Jaime Zornoza是一名工業工程師,擁有電子專業的學士學位和計算機科學的碩士學位。原創。經許可轉載。

原文標題:

Deep Learning for NLP: ANNs, RNNs and LSTMs explained!

原文連結:

https://www.kdnuggets.com/2019/08/deep-learning-nlp-explained.html

編輯:黃繼彥

校對:林亦霖


陳之炎,北京交通大學通信與控制工程專業畢業,獲得工學碩士學位,歷任長城計算機軟體與系統公司工程師,大唐微電子公司工程師,現任北京吾譯超群科技有限公司技術支持。目前從事智能化翻譯教學系統的運營和維護,在人工智慧深度學習和自然語言處理(NLP)方面積累有一定的經驗。業餘時間喜愛翻譯創作,翻譯作品主要有:IEC-ISO 7816、伊拉克石油工程項目、新財稅主義宣言等等,其中中譯英作品「新財稅主義宣言」在GLOBAL TIMES正式發表。能夠利用業餘時間加入到THU 數據派平臺的翻譯志願者小組,希望能和大家一起交流分享,共同進步。

工作內容:需要一顆細緻的心,將選取好的外文文章翻譯成流暢的中文。如果你是數據科學/統計學/計算機類的留學生,或在海外從事相關工作,或對自己外語水平有信心的朋友歡迎加入翻譯小組。

你能得到:定期的翻譯培訓提高志願者的翻譯水平,提高對於數據科學前沿的認知,海外的朋友可以和國內技術應用發展保持聯繫,THU數據派產學研的背景為志願者帶來好的發展機遇。

其他福利:來自於名企的數據科學工作者,北大清華以及海外等名校學生他們都將成為你在翻譯小組的夥伴。


點擊文末「閱讀原文」加入數據派團隊~

轉載須知

如需轉載,請在開篇顯著位置註明作者和出處(轉自:數據派ID:datapi),並在文章結尾放置數據派醒目二維碼。有原創標識文章,請發送【文章名稱-待授權公眾號名稱及ID】至聯繫郵箱,申請白名單授權並按要求編輯。

發布後請將連結反饋至聯繫郵箱(見下方)。未經許可的轉載以及改編者,我們將依法追究其法律責任。


點擊「閱讀原文」擁抱組織

相關焦點

  • nlp領域發生了新的技術突破,用attention機制研究nlp領域
    近期,nlp領域發生了一系列的技術突破。包括:attention機制,cnn,adaptive attention network(an),兩層cnn相比較,an表現優於一層的cn。lstm,已經有了兩種不同的,看似性能和效率差異不大的attention機制:rnnattention,lstmattention。今天我們將從這兩種attention機制開始研究nlp領域突破性技術!
  • 深度學習在NLP中的運用?從分詞、詞性到機器翻譯、對話系統
    通過深度學習和其他機器學習技術的模型組合,竹間智能也已初步實現了自然語言對話中的意圖識別、上下文理解和多輪對話。本文將基於竹間智能的一些經驗和探索,從分詞、詞性等基礎模塊,到機器翻譯、知識問答等領域,列舉並分析一些深度學習在 NLP 領域的具體運用,希望對大家研究深度學習和 NLP 有所幫助。
  • 「句子級」的深度強化學習方法難以求解器空間
    近期,nlp領域發生了兩件大事,可以說影響了整個rl界,分別是spancer-in-rl(用端到端模型替代完全獨立的backpropagation)以及negowave(深度神經網絡變革rl)。backpropagation和progressivegradientxpress(引入hinton先驗,更多方法變為基於歷史記錄的scheme)都是深度學習起步之初的主流方法,除此之外還有包括reinforcementlearning和proximalandadaptiverl等重要進展。但是深度學習從起步到發展至今,說的上的諸多進展似乎都停留在rl的範疇。
  • 乾貨| 請收下這份2018學習清單:150個最好的機器學習,NLP和Python...
    在今年秋季開始準備博士項目的時候,我已經精選了一些有關機器學習和NLP的優質網絡資源。一般我會找一個有意思的教程或者視頻,再由此找到三四個,甚至更多的教程或者視頻。猛回頭,發現標收藏夾又多了20個資源待我學習(推薦提升效率工具Tab Bundler)。
  • ...請收下這份2018學習清單:150個最好的機器學習,NLP和Python教程
    在今年秋季開始準備博士項目的時候,我已經精選了一些有關機器學習和NLP的優質網絡資源。一般我會找一個有意思的教程或者視頻,再由此找到三四個,甚至更多的教程或者視頻。猛回頭,發現標收藏夾又多了20個資源待我學習(推薦提升效率工具Tab Bundler)。
  • 乾貨 | 請收下這份2018學習清單:150個最好的機器學習,NLP和Python教程
    在今年秋季開始準備博士項目的時候,我已經精選了一些有關機器學習和NLP的優質網絡資源。一般我會找一個有意思的教程或者視頻,再由此找到三四個,甚至更多的教程或者視頻。猛回頭,發現標收藏夾又多了20個資源待我學習(推薦提升效率工具Tab Bundler)。
  • 用純NumPy碼一個RNN、LSTM:這是最好的入門方式了
    一般使用純 NumPy 實現深度網絡會面臨兩大問題,首先對於前向傳播,卷積和循環網絡並不如全連接網絡那樣可以直觀地實現。為了計算性能,實踐代碼與理論之間也有差別。其次,我們實現了前向傳播後還需要繼續實現反向傳播,這就要求我們對矩陣微分和鏈式法則等數學基礎都有比較充足的了解。
  • 如何惹怒一位人工智慧(機器學習、深度學習、強化學習等)愛好者?
    「原來比我年輕的人也做出來了啊(黑化)我還是去找工作吧……」15天學會Python,30天學會機器學習!xxx學院精品機器學習課程,帶你走向高薪算法崗!年薪百萬不是夢!What is rnn?What is lstm?What is cv?What is nlp?What is machine learning?What is ai?What is what?I cannot open this pdf.What is pdf?
  • 從基礎到 RNN 和 LSTM,NLP 取得的進展都有哪些?
    本文嘗試解釋自然語言處理的基礎知識,以及隨著深度學習和神經網絡的發展,自然語言處理所取得的快速進展。在我們深入研究之前,有必要了解一些基礎知識。語言是什麼?一種語言,基本上是一個由人類社會共享的固定的詞彙表,用來表達和交流他們的思想。這個詞彙表作為他們成長過程的一部分被世代相傳,並且大部分保持不變,每年會增加很少的部分作為補充。
  • 【超全資源】自然語言處理(NLP)入門學習資源清單(部分資料下載)
    v=nfoudtpBV68&list=PL6397E4B26D00A269 •  斯坦福CS224d:自然語言處理的深度學習[更高級的機器學習算法、深度學習和NLP的神經網絡架構]http://cs224d.stanford.edu/syllabus.html •  Coursera:自然語言處理簡介[由密西根大學提供的NLP
  • 教你用PyTorch實現「看圖說話」(附代碼、學習資源)
    本文用淺顯易懂的方式解釋了什麼是「看圖說話」(Image Captioning),藉助github上的PyTorch代碼帶領大家自己做一個模型,並附帶了很多相關的學習資源。介紹深度學習目前是一個非常活躍的領域---每天都會有許多應用出現。
  • 200個精選ML、NLP、Python及數學最佳教程(附連結)
    [ 導讀 ]近年來,機器學習等新最新技術層出不窮,如何跟蹤最新的熱點以及最新資源,作者Robbie Allen列出了一系列相關資源教程列表,包含四個主題:機器學習,自然語言處理,Python和數學,建議大家收藏學習!
  • 深度學習概述:NLP vs CNN
    最初的人工智慧和深度學習算法比較簡單,就像我們所知的簡單感知器模型和單層神經網絡一樣。隨著時間的推移和更加專注的研究,我們已經擁有了具有多層結構的複雜神經網絡。一些公司在他們的軟體和服務中使用了LSTMs、GANs、變分自編碼器等算法。本文在以下部分列出了人工智慧領域當前最熱門的技術以及正在研究這些熱門技術的公司。
  • LSTM實現詳解
    這篇文章基於我的解決方案,使用的是AndrejKarpathy的char-rnn代碼,這也是我強烈推薦給大家的。RNN誤區我感覺有一件很重要的事情一直未被大家充分強調過(而且這也是我為什麼不能使用RNN做我想做的事情的主要原因)。RNN和前饋神經網絡並沒有很大不同。最容易實現RNN的一種方法就是像前饋神經網絡使用部分輸入到隱含層,以及一些來自隱含層的輸出。
  • 在 TensorFlow 上使用 LSTM 進行情感分析
    在這篇教程中,我們將介紹如何將深度學習技術應用到情感分析中。該任務可以被認為是從一個句子,一段話,或者是從一個文檔中,將作者的情感分為積極的,消極的或者中性的。這篇教程由多個主題組成,包括詞向量,循環神經網絡和 LSTM。在了解這些概念之後,我們將在文章的最後給出完整的代碼。
  • 資源| 史丹福大學NLP組開放神經機器翻譯代碼庫(附論文)
    在這篇文章中,他們還放出了在多種翻譯任務上(比如英德翻譯和英語-捷克語翻譯)實現了當前最佳結果的代碼庫(codebase)。除此之外,「為了鼓勵再現和增加透明」,他們還放出了他們用於訓練模型的處理過的數據以及可以通過他們的代碼庫使用的預訓練好的模型。
  • NLP 新手必看!這是一份覆蓋全面的基於 PyTorch 和 keras 的 NLP...
    相信在人工智慧領域,沒有人不知道這三位,眾所周知,他們被稱為「深度學習三巨頭」。作為人工智慧領域「皇冠上的明珠」,NLP 技術在經歷了過去幾年的發展之後,證明了它落地的可行性,因此目前也是相當火爆。想必同學們也會經常在網上找一些好的學習資源。最近,小編在 github 上發現了一份基於 PyTorch 和 keras 的 NLP 學習教程。
  • 實踐入門NLP:基於深度學習的自然語言處理
    特別是最近兩年,基於深度學習的自然語言處理逐漸取得了一定進展,在人機對話、問答系統、語言翻譯等方向的應用也一直是自然語言處理中的熱門話題,而這些應用的實現,基本依賴於底層技術和模型的進步,再加上自然語言處理領域也算是一個多學科交叉的行業,自然語言處理的未來發展對於很多相關學科和方向都具有深遠的影響力。
  • 學習的筆記可以通過以下方法有如下幾種
    近期,nlp領域發生了較大的波動,特別是老生常談的gpt-2、self-attention等的變革加速了cnn和encoder-decoder思想在某些nlp任務中的鋪開進程。本文著重介紹co-attention、強化學習中的attention和equivariance(矩陣意義)。
  • 人工智慧-深度學習-神經網絡結構MLP,CNN,RNN,LSTM
    人工神經網絡、激活函數、代價函數、梯度下降、反向傳播是深度學習的幾個關鍵點;常見的深度學習神經網絡結構有多層感知器MLP、CNN、RNN、LSTM等。>,而不是sigmoid函數的DNN-可以理解為有很多隱藏層的神經網絡,有時也叫做多層感知機(Multi-Layer perceptron,MLP)CNN-Convolutional Neural Networks 卷積神經網絡由具有可學習的權重和偏置常量