題:
遞歸與遞歸神經網絡:哪個對NLP更好?
crscardellino
2015-05-22 22:50:20 UTC
view on stackexchange narkive permalink

有遞歸神經網絡和遞歸神經網絡。兩者通常用相同的縮寫詞表示:RNN。根據 Wikipedia的說法,遞歸NN實際上是遞歸NN,但我並不十分了解其解釋。

此外,我似乎沒有發現哪個更好(例如自然語言處理)。事實是,儘管Socher在他的 tutorial中將遞歸NN用於NLP,但我找不到遞歸神經網絡的良好實現,而且當我在Google中搜索時,大多數答案都與Recurrent有關NN。

除此之外,還有另一個DNN更適合NLP,還是取決於NLP任務?信仰網還是堆疊式自動編碼器? (我似乎沒有在NLP中為ConvNets找到任何特定的util,並且大多數實現都考慮到了機器視覺。)

最後,我真的更喜歡D ++ C ++的實現(如果它具有GPU支持)或Scala(最好是具有Spark支持),而不是Python或Matlab / Octave。

我嘗試過Deeplearning4j,但是它正在不斷開發中,文檔有些過時了,我似乎無法使其正常工作。太糟糕了,因為它具有類似於“黑匣子”的處理方式,非常類似於scikit-learn或Weka,這正是我真正想要的。

四 答案:
Azrael
2015-06-28 04:15:37 UTC
view on stackexchange narkive permalink

遞歸神經網絡隨著時間的推移而不斷重複。例如,如果您有一個序列

x = ['h','e','l','l']

該序列被饋給一個 與神經元有單個連接的神經元。

在步驟0,輸入字母“ h”。在步驟1,輸入“ e”。隨著時間的流逝,網絡將看起來像這樣。

RNN

遞歸網絡只是遞歸網絡的概括。在遞歸網絡中,權重沿著序列的長度共享(維數保持不變),因為當您在測試時遇到長度與訓練時看到的長度不同的序列時,如何處理與位置相關的權重。在遞歸網絡中,出於相同的原因,權重在每個節點上共享(並且維數保持不變)。

這意味著所有W_xh權重將相等(共享),W_hh權重也將相等。這僅僅是因為它是隨時間展開的單個神經元。

這就是遞歸神經網絡的樣子。Recursive Neural Network

很容易看出為什麼將其稱為遞歸神經網絡。每個父節點的子節點都是與該節點相似的節點。

您要使用的神經網絡取決於您的用法。在 Karpathy的博客中,他一次生成一個字符,因此遞歸神經網絡很好。

但是,如果要生成解析樹,則可以使用遞歸神經網絡。更好,因為它有助於創建更好的層次表示。

如果要使用c ++進行深度學習,請使用CUDA。它具有良好的用戶基礎,並且速度很快。我對此一無所知,因此無法發表更多評論。

在python中,Theano是最好的選擇,因為它提供了自動區分功能,這意味著當您形成大型笨拙的NN時,無需手動查找漸變。 Theano會自動為您完成。 Torch7缺少此功能。

Theano速度非常快,因為它為python代碼提供了C包裝程序,並且可以在GPU上實現。它還擁有強大的用戶群,這對於學習新知識非常重要。

Yannis Assael
2015-05-24 01:08:24 UTC
view on stackexchange narkive permalink

大型遞歸神經網絡可能被認為是NLP最強大的模型。 http://karpathy.github.io/2015/05/21/rnn-efficiency/

上有一篇由A. Karpathy撰寫的有關遞歸神經網絡和字符級建模的出色文章。

嘗試了許多用於深度學習的庫(theano,caffe等)。我強烈建議您使用Torch7,它被認為是用於NN的最先進的工具,並且得到了紐約大學,Facebook AI和Google DeepMind的支持。 Torch7基於lua,您可以輕鬆地了解許多示例。可以在github上找到很多代碼,一個好的開始是 https://github.com/wojzaremba/lstm

最後,lua的魅力在於LuaJIT可以很容易地用Java,Python,Matlab等注入。

建議閱讀Karpathy的博客。在理解RNN方面真是一大堆。
Benyamin Jafari
2019-08-20 11:58:48 UTC
view on stackexchange narkive permalink

遞歸神經網絡(RNN)基本上會隨著時間而發展。它用於順序輸入,其中時間因素是序列元素之間的主要區別因素。例如,這是一個用於語言建模的遞歸神經網絡,它已經隨著時間的流逝而展開。在每個時間步,除了該時間步的用戶輸入外,它還接受在前一個時間步計算出的隱藏層的輸出。

RNN


遞歸神經網絡更像是分層網絡,其中輸入序列實際上沒有時間方面,但是輸入必須以樹的形式進行分層處理。這是遞歸神經網絡外觀的一個示例。它顯示了通過遞歸獲取對較小文本部分執行的操作的輸出來學習句子的語法分析樹的方法。

Recursice Neural Networks


[NOTE]:

LSTM和GRU是帶有“遺忘門”的兩種擴展RNN類型,在NLP中非常常見。

LSTM

LSTM and GRU


LSTM單元格公式:

enter image description here

tpacker
2020-04-14 23:02:30 UTC
view on stackexchange narkive permalink

要回答幾個問題:

CNN有時確實用於NLP任務。它們是採用可變長度自然語言輸入並將其縮減為固定長度輸出(例如句子嵌入)的一種方法。Google的多語言通用句子編碼器(USE)是一個示例:

自從提出這個問題以來,已經為NLP提出了許多新模型,這些模型與上面提到的模型不同,例如Transformers和像BERT這樣的預訓練神經語言模型以及USE的其他一些風格。 https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...